// author: Tran Van Canh
// email:  canhtv@gmail.com
// date:   2014-Jan
// This file contains rules for the temporal expressions of the type date: daterules
// RULENAME="",EXTRACTION="",NORM_VALUE=""(,OFFSET="")?(,POS_CONSTRAINT="")?(,NORM_MOD="")?(,NORM_QUANT="")?(,NORM_FREQ="")?

//DAY MONTH YEAR BC/AC

RULENAME="vn_date_r1a_lrec",EXTRACTION="(đến )?(([Nn]gày )?%reDayNumber ([Tt]háng) %reMonthNumber ([Nn]ăm) %reYearBC)",NORM_VALUE="%normYearBC(group(8))-%normMonth(group(6))-%normDay(group(4))",OFFSET="group(2)-group(2)"
RULENAME="vn_date_r1b_lrec",EXTRACTION="(đến )?(([Nn]gày )?%reDayNumber ([Tt]háng) %reMonthInWord ([Nn]ăm) %reYearBC)",NORM_VALUE="%normYearBC(group(8))-%normMonthInWord(group(6))-%normDay(group(4))",OFFSET="group(2)-group(2)"

///////////////////////
// MONTH GRANULARITY BC/AD //
///////////////////////
//vn_date_r7
// EXAMPLE vn_date_r7a_lrec: tháng 12 năm 1999 truoc CN
// EXAMPLE vn_date_r7c_lrec: tháng 12/1999 truoc CN
// EXAMPLE vn_date_r7d_lrec: tháng 12-1999 truoc CN
// EXAMPLE vn_date_r7g_lrec: tháng 12.99 truoc CN
// EXAMPLE vn_date_r7h_lrec: tháng một năm 1999 truoc CN
// EXAMPLE vn_date_r7j_lrec: tháng 1 và tháng 2 năm 1999 truoc CN : find 1999-01 truoc CN
// EXAMPLE vn_date_r7k_lrec: tháng 1 và tháng 2 năm 1999 truoc CN : find 1999-02 truoc CN
RULENAME="vn_date_r7a_lrec-BCADhint",EXTRACTION="(tháng|Tháng) %reMonthNumber (năm|Năm) %reYearBC %reYearPrefix",NORM_VALUE="%normYearPrefix(group(5))%normYearBC(group(4))-%normMonth(group(2))"
RULENAME="vn_date_r7a1_lrec-BCADhint",EXTRACTION="(tháng|Tháng) %reMonthNumber (năm|Năm) %reYearBC",NORM_VALUE="%normYearBC(group(4))-%normMonth(group(2))"

RULENAME="vn_date_r7c_lrec-BCADhint",EXTRACTION="(tháng|Tháng) %reMonthNumber/%reYearBC %reYearPrefix",NORM_VALUE="%normYearPrefix(group(4))%normYearBC(group(3))-%normMonth(group(2))"
RULENAME="vn_date_r7d_lrec-BCADhint",EXTRACTION="(tháng|Tháng) %reMonthNumber-%reYearBC %reYearPrefix",NORM_VALUE="%normYearPrefix(group(4))%normYearBC(group(3))-%normMonth(group(2))"
RULENAME="vn_date_r7h_lrec-BCADhint",EXTRACTION="(tháng|Tháng) %reMonthInWord (năm|Năm) %reYearBC %reYearPrefix",NORM_VALUE="%normYearPrefix(group(5))%normYearBC(group(4))-%normMonthInWord(group(2))"
RULENAME="vn_date_r7h1_lrec",EXTRACTION="(tháng|Tháng) %reMonthInWord (năm|Năm) %reYearBC",NORM_VALUE="%normYearBC(group(4))-%normMonthInWord(group(2))"

RULENAME="vn_date_r7j_lrec-BCADhint",EXTRACTION="(tháng|Tháng) %reMonthNumber và (tháng|Tháng) %reMonthNumber (năm|Năm) %reYearBC %reYearPrefix",NORM_VALUE="%normYearPrefix(group(7))%normYearBC(group(6))-%normMonth(group(2))",OFFSET="group(1)-group(2)"
RULENAME="vn_date_r7k_lrec-BCADhint",EXTRACTION="(tháng|Tháng) %reMonthNumber và (tháng|Tháng) %reMonthNumber (năm|Năm) %reYearBC %reYearPrefix",NORM_VALUE="%normYearPrefix(group(7))%normYearBC(group(6))-%normMonth(group(4))",OFFSET="group(3)-group(7)"




//////////////////////
// YEAR GRANULARITY BC/AD//
//////////////////////
// vn_date_r12
// EXAMPLE vn_date_r12a_lrec: năm 2009 truoc CN
// EXAMPLE vn_date_r12a1_lrec: Dau năm 2009 truoc CN
// EXAMPLE vn_date_r12c1: 1850-1958 truoc CN (find: 1950 BC)
// EXAMPLE vn_date_r12c2: 1850-1958 truoc CN (find: 1958 BC)
// EXAMPLE vn_date_r12c3: từ 1850 đến 1958 (find: 1958, START)
// EXAMPLE vn_date_r12c4: từ 1850 đến 1958 (find: 1958, END)
// EXAMPLE vn_date_r12d: 90-95 (find: 95)

// EXAMPLE vn_date_r12e: thập niên 1950
// EXAMPLE vn_date_r12f: trước 1927, sau 1927 is considered 1927
// EXAMPLE vn_date_r12g: trước 90, sau 90 
// EXAMPLE vn_date_r12h: (1996)

RULENAME="vn_date_r12a_lrec-BCADhint",EXTRACTION="(%reApproximate )?(năm |Năm )%reYearBC %reYearPrefix",NORM_VALUE="%normYearPrefix(group(5))%normYearBC(group(4))",NORM_MOD="%normApprox4Dates(group(2))"
RULENAME="vn_date_r12a1_lrec-BCADhint",EXTRACTION="%rePartWords (năm |Năm )%reYearBC %reYearPrefix",NORM_VALUE="%normYearPrefix(group(4))%normYearBC(group(3))",NORM_MOD="%normPartWords(group(1))"

RULENAME="vn_date_r12c1_lrec",EXTRACTION="(năm |Năm )%reYearBC(-|–| đến )%reYearBC",NORM_VALUE="%normYearBC(group(2))",OFFSET="group(1)-group(2)"
RULENAME="vn_date_r12c2_lrec",EXTRACTION="(năm |Năm )%reYearBC(-|–| đến )%reYearBC",NORM_VALUE="%normYearBC(group(4))",OFFSET="group(4)-group(4)"


RULENAME="vn_date_r12c3_lrec-BCADhint",EXTRACTION="%rePartWords (năm |Năm )?%reYearBC(-|–| %rePartWords )(năm |Năm )?%reYearBC %reYearPrefix",NORM_VALUE="%normYearPrefix(group(8))%normYearBC(group(3))",NORM_MOD="%normPartWords(group(1))", OFFSET="group(1)-group(3)"
RULENAME="vn_date_r12c4_lrec-BCADhint",EXTRACTION="%rePartWords (năm |Năm )?%reYearBC(-|–| %rePartWords )(năm |Năm )?%reYearBC %reYearPrefix",NORM_VALUE="%normYearPrefix(group(8))%normYearBC(group(7))",NORM_MOD="%normPartWords(group(5))", OFFSET="group(4)-group(8)"

RULENAME="vn_date_r12c5_lrec-BCADhint",EXTRACTION="(năm |Năm )?%reYearBC(-|–| %rePartWords )(năm |Năm )?%reYearBC %reYearPrefix",NORM_VALUE="%normYearPrefix(group(7))%normYearBC(group(2))",OFFSET="group(1)-group(2)"
RULENAME="vn_date_r12c6_lrec-BCADhint",EXTRACTION="(năm |Năm )?%reYearBC(-|–| %rePartWords )(năm |Năm )?%reYearBC %reYearPrefix",NORM_VALUE="%normYearPrefix(group(7))%normYearBC(group(6))", OFFSET="group(3)-group(7)"




// season and year
RULENAME="date_lrec4a-BCADhint",EXTRACTION="(%reApproximate )?%reSeason(năm |Năm )?%reYearBC %reYearPrefix",NORM_VALUE="%normYearPrefix(group(6))%normYearBC(group(5))-%normSeason(group(3))",NORM_MOD="%normApprox4Dates(group(2))"

RULENAME="date_lrec4b",EXTRACTION="(%reApproximate )?%reSeason(năm |Năm )?%reYearBC",NORM_VALUE="%normYearBC(group(5))-%normSeason(group(3))",NORM_MOD="%normApprox4Dates(group(2))"

/////////////////////////
// CENTURY GRANULARITY BC/AD // 
/////////////////////////
// vn_date_r15
// EXAMPLE vn_date_r15a_lrec: thế kỷ 19      the 19th century
// EXAMPLE vn_date_r15b_lrec: thế kỷ mười bảy

RULENAME="vn_date_r15a_lrec-BCADhint",EXTRACTION="(thế kỷ|Thế kỷ|thế kỉ|Thế kỉ) %reCenturyNumber %reYearPrefix",NORM_VALUE="%normYearPrefix(group(3))%normDay(%SUM%(%normDay(group(2)),-1))"
RULENAME="vn_date_r15b_lrec-BCADhint",EXTRACTION="(thế kỷ|Thế kỷ|thế kỉ|Thế kỉ) %reCenturyInWord %reYearPrefix",NORM_VALUE="%normYearPrefix(group(3))%normDay(%SUM%(%normDay(%normCenturyInWord(group(2))),-1))"
RULENAME="vn_date_r15c_lrec-BCADhint",EXTRACTION="%rePartWords (thế kỷ|Thế kỷ|thế kỉ|Thế kỉ) %reCenturyNumber %reYearPrefix",NORM_VALUE="%normYearPrefix(group(4))%normDay(%SUM%(%normDay(group(3)),-1))",NORM_MOD="%normPartWords(group(1))"
RULENAME="vn_date_r15d_lrec-BCADhint",EXTRACTION="%rePartWords (thế kỷ|Thế kỷ|thế kỉ|Thế kỉ) %reCenturyInWord %reYearPrefix",NORM_VALUE="%normYearPrefix(group(4))%normDay(%SUM%(%normDay(%normCenturyInWord(group(3))),-1))",NORM_MOD="%normPartWords(group(1))"





// author: Jannik Strötgen
// email:  stroetgen@uni-hd.de
// date:   2012-03-01
// This file contains rules for the temporal expressions of the type date: daterules
// RULENAME="",EXTRACTION="",NORM_VALUE=""(,OFFSET="")?(,POS_CONSTRAINT="")?(,NORM_MOD="")?(,NORM_QUANT="")?(,NORM_FREQ="")?

////////////////////
// POSITIVE RULES //
////////////////////

/////////////////////
// Day Granularity //
/////////////////////

//Vietnamese
// Date granularity
//vn_date_r0
//EXAMPLE   vn_date_r0a:    (ngày|Ngày)? 29/10/1999
//EXAMPLE   vn_date_r0b:    (ngày|Ngày)? 29-10-1999
//EXAMPLE   vn_date_r0c:    (ngày|Ngày)? 29.10.1999
//EXAMPLE   vn_date_r0d:    (ngày|Ngày)? 29/10/99
//EXAMPLE   vn_date_r0e:    (ngày|Ngày)? 29-10-99
//EXAMPLE   vn_date_r0f:    (ngày|Ngày)? 29.10.99
//EXAMPLE   vn_date_r0g:    (ngày|Ngày)? 29/10
//EXAMPLE   vn_date_r0h:    (ngày|Ngày)? 29-10
//EXAMPLE   vn_date_r0i:    (ngày|Ngày)? 29.10

RULENAME="vn_date_r0a",EXTRACTION="(đến )?((ngày |Ngày )?%reDayNumber/%reMonthNumber/%reYear4Digit)",NORM_VALUE="group(6)-%normMonth(group(5))-%normDay(group(4))",OFFSET="group(2)-group(2)"
RULENAME="vn_date_r0b",EXTRACTION="(đến )?((ngày |Ngày )?%reDayNumber-%reMonthNumber-%reYear4Digit)",NORM_VALUE="group(6)-%normMonth(group(5))-%normDay(group(4))",OFFSET="group(2)-group(2)"
//RULENAME="vn_date_r0c",EXTRACTION="(đến )?((ngày |Ngày )?%reDayNumber.%reMonthNumber.%reYear4Digit)",NORM_VALUE="group(6)-%normMonth(group(5))-%normDay(group(4))",OFFSET="group(2)-group(2)"
RULENAME="vn_date_r0d",EXTRACTION="(đến )?((ngày |Ngày )?%reDayNumber/%reMonthNumber/%reYear2Digit)",NORM_VALUE="UNDEF-centurygroup(6)-%normMonth(group(5))-%normDay(group(4))",OFFSET="group(2)-group(2)"
RULENAME="vn_date_r0e",EXTRACTION="(đến )?((ngày |Ngày )?%reDayNumber-%reMonthNumber-%reYear2Digit)",NORM_VALUE="UNDEF-centurygroup(6)-%normMonth(group(5))-%normDay(group(4))",OFFSET="group(2)-group(2)"
//RULENAME="vn_date_r0f",EXTRACTION="(đến )?((ngày |Ngày )?%reDayNumber.%reMonthNumber.%reYear2Digit)",NORM_VALUE="UNDEF-centurygroup(6)-%normMonth(group(5))-%normDay(group(4))",OFFSET="group(2)-group(2)"
RULENAME="vn_date_r0g",EXTRACTION="(đến )?((ngày |Ngày )%reDayNumber/%reMonthNumber)",NORM_VALUE="UNDEF-year-%normMonth(group(5))-%normDay(group(4))",OFFSET="group(2)-group(2)"
RULENAME="vn_date_r0h",EXTRACTION="(đến )?((ngày |Ngày )%reDayNumber-%reMonthNumber)",NORM_VALUE="UNDEF-year-%normMonth(group(5))-%normDay(group(4))",OFFSET="group(2)-group(2)"
//RULENAME="vn_date_r0i",EXTRACTION="(đến )?((ngày |Ngày )?%reDayNumber.%reMonthNumber)",NORM_VALUE="UNDEF-year-%normMonth(group(5))-%normDay(group(4))",OFFSET="group(2)-group(2)"




//vn_date_r1
//EXAMPLE   vn_date_r1a:    (ngày|Ngày)? 29 tháng 10 năm 1999
//EXAMPLE   vn_date_r1b:    (ngày|Ngày)? 29 tháng 10, 1999

//EXAMPLE   vn_date_r1c:    (ngày|Ngày)? 29 tháng 10 năm 99
//EXAMPLE   vn_date_r1d:    (ngày|Ngày)? 29 tháng 10, 99
//EXAMPLE   vn_date_r1e:    (ngày|Ngày)? 29 tháng 10


RULENAME="vn_date_r1a",EXTRACTION="(đến )?((ngày |Ngày )?%reDayNumber (tháng|Tháng) %reMonthNumber (năm|Năm|) %reYear4Digit)",NORM_VALUE="group(8)-%normMonth(group(6))-%normDay(group(4))",OFFSET="group(2)-group(2)"
RULENAME="vn_date_r1b",EXTRACTION="(đến )?((ngày |Ngày )?%reDayNumber (tháng|Tháng) %reMonthNumber(,) %reYear4Digit)",NORM_VALUE="group(8)-%normMonth(group(6))-%normDay(group(4))",OFFSET="group(2)-group(2)"
RULENAME="vn_date_r1c",EXTRACTION="(đến )?((ngày |Ngày )?%reDayNumber (tháng|Tháng) %reMonthNumber (năm|Năm|) %reYear2Digit)",NORM_VALUE="UNDEF-centurygroup(8)-%normMonth(group(6))-%normDay(group(4))",OFFSET="group(2)-group(2)"
RULENAME="vn_date_r1d",EXTRACTION="(đến )?((ngày |Ngày )?%reDayNumber (tháng|Tháng) %reMonthNumber(,) %reYear2Digit)",NORM_VALUE="UNDEF-centurygroup(8)-%normMonth(group(6))-%normDay(group(4))",OFFSET="group(2)-group(2)"
RULENAME="vn_date_r1e",EXTRACTION="(đến )?((ngày |Ngày )?%reDayNumber (tháng|Tháng) %reMonthNumber)",NORM_VALUE="UNDEF-year-%normMonth(group(6))-%normDay(group(4))",OFFSET="group(2)-group(2)"


//vn_date_r2
//EXAMPLE   vn_date_r2a:    (ngày|Ngày) mười một tháng mười năm 1999
//EXAMPLE   vn_date_r2b:    (ngày|Ngày) mười một tháng mười năm 99
//EXAMPLE   vn_date_r2c:    (ngày|Ngày) 11 tháng mười năm 1999
//EXAMPLE   vn_date_r2d:    (ngày|Ngày) 11 tháng mười năm 99

RULENAME="vn_date_r2a",EXTRACTION="(đến )?((ngày |Ngày )? %reDateInWord (tháng|Tháng) %reMonthInWord (năm|Năm) %reYear4Digit)",NORM_VALUE="group(8)-%normMonthInWord(group(6))-%normDateInWord(group(4))",OFFSET="group(2)-group(2)"
RULENAME="vn_date_r2b",EXTRACTION="(đến )?((ngày |Ngày )? %reDateInWord (tháng|Tháng) %reMonthInWord (năm|Năm) %reYear2Digit)",NORM_VALUE="UNDEF-centurygroup(8)-%normMonthInWord(group(6))-%normDateInWord(group(4))",OFFSET="group(2)-group(2)"
RULENAME="vn_date_r2c",EXTRACTION="(đến )?((ngày |Ngày )? %reDayNumber (tháng|Tháng) %reMonthInWord (năm|Năm) %reYear4Digit)",NORM_VALUE="group(8)-%normMonthInWord(group(6))-%normDay(group(4))",OFFSET="group(2)-group(2)"
RULENAME="vn_date_r2d",EXTRACTION="(đến )?((ngày |Ngày )? %reDayNumber (tháng|Tháng) %reMonthInWord (năm|Năm) %reYear2Digit)",NORM_VALUE="UNDEF-centurygroup(8)-%normMonthInWord(group(6))-%normDay(group(4))",OFFSET="group(2)-group(2)"

//vn_date_r3
//EXAMPLE    vn_date_r3a:    thứ 2[,]? ngày 15 tháng 5
//EXAMPLE    vn_date_r3b:    thứ 2[,]? ngày 15 tháng 5 năm 1999
//EXAMPLE    vn_date_r3c:    thứ 2[,]? ngày 15 tháng 5 năm 99
//EXAMPLE    vn_date_r3d:    thứ 2[,]? ngày 15/5
//EXAMPLE    vn_date_r3e:    thứ 2[,]? ngày 15-5
//EXAMPLE    vn_date_r3f:    thứ 2[,]? ngày 15.5
//EXAMPLE    vn_date_r3g:    thứ 2[,]? ngày 15/5/1999
//EXAMPLE    vn_date_r3h:    thứ 2[,]? ngày 15-5-1999
//EXAMPLE    vn_date_r3i:    thứ 2[,]? ngày 15.5.1999

RULENAME="vn_date_r3a",EXTRACTION="(%reWeekday[,]? (ngày|Ngày) %reDayNumber (tháng|Tháng) %reMonthNumber)",NORM_VALUE="UNDEF-year-%normMonth(group(6))-%normDay(group(4))"
RULENAME="vn_date_r3b",EXTRACTION="(%reWeekday[,]? (ngày|Ngày) %reDayNumber (tháng|Tháng) %reMonthNumber (năm|Năm) %reYear4Digit)",NORM_VALUE="group(8)-%normMonth(group(6))-%normDay(group(4))"
RULENAME="vn_date_r3c",EXTRACTION="(%reWeekday[,]? (ngày|Ngày) %reDayNumber (tháng|Tháng) %reMonthNumber (năm|Năm) %reYear2Digit)",NORM_VALUE="UNDEF-centurygroup(8)-%normMonth(group(6))-%normDay(group(4))"
RULENAME="vn_date_r3d",EXTRACTION="(%reWeekday[,]? (ngày|Ngày) %reDayNumber/%reMonthNumber)",NORM_VALUE="UNDEF-year-%normMonth(group(5))-%normDay(group(4))"
RULENAME="vn_date_r3e",EXTRACTION="(%reWeekday[,]? (ngày|Ngày) %reDayNumber-%reMonthNumber)",NORM_VALUE="UNDEF-year-%normMonth(group(5))-%normDay(group(4))"
RULENAME="vn_date_r3f",EXTRACTION="(%reWeekday[,]? (ngày|Ngày) %reDayNumber.%reMonthNumber)",NORM_VALUE="UNDEF-year-%normMonth(group(5))-%normDay(group(4))"
RULENAME="vn_date_r3g",EXTRACTION="%reWeekday[,]? (ngày|Ngày) %reDayNumber/%reMonthNumber/%reYear4Digit",NORM_VALUE="group(5)-%normMonth(group(4))-%normDay(group(3))"
RULENAME="vn_date_r3h",EXTRACTION="%reWeekday[,]? (ngày|Ngày) %reDayNumber-%reMonthNumber-%reYear4Digit",NORM_VALUE="group(5)-%normMonth(group(4))-%normDay(group(3))"
//RULENAME="vn_date_r3i",EXTRACTION="%reWeekday[,]? (ngày|Ngày) %reDayNumber.%reMonthNumber.%reYear4Digit",NORM_VALUE="group(5)-%normMonth(group(4))-%normDay(group(3))"


// The following rules have been moved to interval rule file. 
//vn_date_r4
//EXAMPLE    vn_date_r4a1:    (từ ngày)? 10 đến (ngày)? 15 tháng 5 năm 1999 - find 1999-05-10
//EXAMPLE    vn_date_r4a2:    (từ ngày)? 10 đến (ngày)? 15 tháng 5 năm 1999 - find 1999-05-15
//EXAMPLE    vn_date_r4b1:    (từ ngày)? 10 đến (ngày)? 15 tháng 5 năm 99  	- find 99 - 05-10
//EXAMPLE    vn_date_r4b2:    (từ ngày)? 10 đến (ngày)? 15 tháng 5 năm 99  	- find 99 - 05-15
//EXAMPLE    vn_date_r4c1:    (từ ngày)? 10 đến (ngày)? 15 tháng 5			- find 05-10	
//EXAMPLE    vn_date_r4c2:    (từ ngày)? 10 đến (ngày)? 15 tháng 5			 -find 05-15
//EXAMPLE	 vn_date_r4d1: 	 từ (ngày)? 10 tháng 6 đến (ngày)? 20 tháng 7 	- find 06-10
//EXAMPLE	 vn_date_r4d2: 	 từ (ngày)? 10 tháng 6 đến (ngày)? 20 tháng 7	- find 07-20
//EXAMPLE	 vn_date_r4e1: 	 từ (ngày)? 10 tháng 6 đến (ngày)? 20 tháng 7 năm 2010	-find 2010-06-10
//EXAMPLE	 vn_date_r4e2: 	 từ (ngày)? 10 tháng 6 đến (ngày)? 20 tháng 7 năm 2010	-find 2010-07-20
//EXAMPLE	vn_date_r4f1:	từ/đến ([\w]+) (ngày )? 10 tháng 6 năm 2010 								find: từ ...ngày 10 tháng 6 năm 2010





// vn_date_r5
// EXAMPLE vn_date_r5a: hôm qua             tomorrow
// EXAMPLE vn_date_r5b: sáng sớm hôm kia    earlier yesterday
// EXAMPLE vn_date_r5c: hôm|Hôm Thứ hai             Monday
// EXAMPLE vn_date_r5d: Sáng sớm thứ hai    earlier Monday 

RULENAME="vn_date_r5a",EXTRACTION="%reDateWord",NORM_VALUE="%normDateWord(group(1))"
RULENAME="vn_date_r5b",EXTRACTION="%rePartOfDay %reDateWord",NORM_VALUE="%normDateWord(group(2))",NORM_MOD="%normPartOfDay(group(1))"
RULENAME="vn_date_r5c",EXTRACTION="(Hôm |hôm ) %reWeekday",NORM_VALUE="UNDEF-day-%normWeekday(group(1))"
RULENAME="vn_date_r5d",EXTRACTION="%rePartOfDay %reWeekday",NORM_VALUE="UNDEF-day-%normWeekday(group(2))",NORM_MOD="%normPartOfDay(group(1))"



//////////////////////
// WEEK GRANULARITY //
//////////////////////
// vn_date_r6
// EXAMPLE r6a_1:   cuối tuần ấy the weekend 
RULENAME="vn_date_r61",EXTRACTION="cuối tuần (ấy)?",NORM_VALUE="UNDEF-last-week-WE"


///////////////////////
// MONTH GRANULARITY //
///////////////////////
//vn_date_r7
// EXAMPLE vn_date_r7a: tháng 12 năm 1999
// EXAMPLE vn_date_r7b: tháng 12 năm 99
// EXAMPLE vn_date_r7c: tháng 12/1999
// EXAMPLE vn_date_r7d: tháng 12-1999
// EXAMPLE vn_date_r7e: tháng 12/99
// EXAMPLE vn_date_r7f: tháng 12-99
// EXAMPLE vn_date_r7g: tháng 12.99
// EXAMPLE vn_date_r7h: tháng một năm 1999
// EXAMPLE vn_date_r7i: tháng một năm 99
// EXAMPLE vn_date_r7j: tháng 1 và tháng 2 năm 1999 : find 1999-01
// EXAMPLE vn_date_r7k: tháng 1 và tháng 2 năm 1999 : find 1999-02 

RULENAME="vn_date_r7a",EXTRACTION="(tháng|Tháng) %reMonthNumber (năm|Năm) %reYear4Digit",NORM_VALUE="group(4)-%normMonth(group(2))"
RULENAME="vn_date_r7b",EXTRACTION="(tháng|Tháng) %reMonthNumber (năm|Năm) %reYear2Digit",NORM_VALUE="UNDEF-centurygroup(4)-%normMonth(group(2))"
RULENAME="vn_date_r7c",EXTRACTION="(tháng|Tháng) %reMonthNumber/%reYear4Digit",NORM_VALUE="group(3)-%normMonth(group(2))"
RULENAME="vn_date_r7d",EXTRACTION="(tháng|Tháng) %reMonthNumber-%reYear4Digit",NORM_VALUE="group(3)-%normMonth(group(2))"
RULENAME="vn_date_r7e",EXTRACTION="(tháng|Tháng) %reMonthNumber/%reYear2Digit",NORM_VALUE="UNDEF-centurygroup(3)-%normMonth(group(2))"
RULENAME="vn_date_r7f",EXTRACTION="(tháng|Tháng) %reMonthNumber-%reYear2Digit",NORM_VALUE="UNDEF-centurygroup(3)-%normMonth(group(2))"
//RULENAME="vn_date_r7g",EXTRACTION="(tháng|Tháng) %reMonthNumber.%reYear2Digit",NORM_VALUE="UNDEF-centurygroup(3)-%normMonth(group(2))"
RULENAME="vn_date_r7h",EXTRACTION="(tháng|Tháng) %reMonthInWord (năm|Năm) %reYear4Digit",NORM_VALUE="group(4)-%normMonthInWord(group(2))"
RULENAME="vn_date_r7i",EXTRACTION="(tháng|Tháng) %reMonthInWord (năm|Năm) %reYear2Digit",NORM_VALUE="UNDEF-centurygroup(4)-%normMonthInWord(group(2))"

RULENAME="vn_date_r7j",EXTRACTION="(tháng|Tháng) %reMonthNumber và (tháng|Tháng) %reMonthNumber (năm|Năm) %reYear4Digit",NORM_VALUE="group(6)-%normMonth(group(2))",OFFSET="group(1)-group(2)"
RULENAME="vn_date_r7k",EXTRACTION="(tháng|Tháng) %reMonthNumber và (tháng|Tháng) %reMonthNumber (năm|Năm) %reYear4Digit",NORM_VALUE="group(6)-%normMonth(group(4))",OFFSET="group(3)-group(6)"



// vn_date_r8
// EXAMPLE vn_date_r8a: tháng 10 năm sau  November next year
// EXAMPLE vn_date_r8b: tháng mười năm sau  November next year

RULENAME="vn_date_r8a",EXTRACTION="(tháng|Tháng) %reMonthNumber (năm|Năm) %reThisNextLast",NORM_VALUE="UNDEF-%normThisNextLast(group(4))-year-%normMonth(group(2))"
RULENAME="vn_date_r8b",EXTRACTION="(tháng|Tháng) %reMonthInWord (năm|Năm) %reThisNextLast",NORM_VALUE="UNDEF-%normThisNextLast(group(4))-year-%normMonthInWord(group(2))"

////////////////////////
// SEASON GRANULARITY //
////////////////////////
// vn_date_r9
// EXAMPLE vn_date_r9a: mùa hè            summer
// EXAMPLE vn_date_r9b: mùa đông (năm) 2001     winter 2001
// EXAMPLE vn_date_r9c: mùa đông (năm) 99     winter 99
// EXAMPLE vn_date_r9d: mùa đông năm sau (trước)

RULENAME="vn_date_r9a",EXTRACTION="%reSeason",NORM_VALUE="UNDEF-year-%normSeason(group(1))"
RULENAME="vn_date_r9b",EXTRACTION="%reSeason (năm |Năm )?%reYear4Digit",NORM_VALUE="group(3)-%normSeason(group(1))"
RULENAME="vn_date_r9c",EXTRACTION="%reSeason (năm |Năm )?%reYear2Digit",NORM_VALUE="UNDEF-centurygroup(3)-%normSeason(group(1))"
RULENAME="vn_date_r9d",EXTRACTION="%reSeason (năm |Năm )?%reThisNextLast",NORM_VALUE="UNDEF-%normThisNextLast(group(3))-year-%normSeason(group(1))"
// SEASON BC
RULENAME="vn_date_r9e",EXTRACTION="%reSeason (năm |Năm )%reYearBC",NORM_VALUE="%normYearBC(group(3))-%normSeason(group(1))"
RULENAME="vn_date_r9f-BCADhint",EXTRACTION="%reSeason (năm |Năm )%reYearBC %reYearPrefix",NORM_VALUE="%normYearPrefix(group(4))%normYearBC(group(3))-%normSeason(group(1))"

////////////////////////////// 
// PART-OF-YEAR GRANULARITY //
//////////////////////////////
// vn_date_r10
// EXAMPLE vn_date_r10a: quý 3(ba) năm 2011     the third quarter of 2001
// EXAMPLE vn_date_r10a: 6(sáu) tháng cuối năm 1999     the second half of 1999
// EXAMPLE vn_date_r10b: quý 3(ba) năm 99     the third quarter of 99
// EXAMPLE vn_date_r10b: 6(sáu) tháng cuối năm 99     the second half of 99

RULENAME="vn_date_r10a",EXTRACTION="%rePartOfYear (năm |Năm )?%reYear4Digit",NORM_VALUE="group(3)-%normPartOfYear(group(1))"
RULENAME="vn_date_r10b",EXTRACTION="%rePartOfYear (năm |Năm )?%reYear2Digit",NORM_VALUE="UNDEF-centurygroup(3)-%normPartOfYear(group(1))"

// vn_date_r11
// EXAMPLE vn_date_r11a: quý 1 năm trước(sau,...)
RULENAME="vn_date_r11a",EXTRACTION="%rePartOfYear (năm|Năm) %reThisNextLast",NORM_VALUE="UNDEF-%normThisNextLast(group(3))-year-%normPartOfYear(group(1))"

//////////////////////
// YEAR GRANULARITY //
//////////////////////
// vn_date_r12
// EXAMPLE vn_date_r12a: năm 2009
// EXAMPLE vn_date_r12b: năm 99
// EXAMPLE vn_date_r12c1: 1850-1958 (find: 1950)
// EXAMPLE vn_date_r12c2: 1850-1958 (find: 1958)
// EXAMPLE vn_date_r12c3: từ 1850 đến 1958 (find: 1958, START)
// EXAMPLE vn_date_r12c4: từ 1850 đến 1958 (find: 1958, END)
// EXAMPLE vn_date_r12d: 90-95 (find: 95)

// EXAMPLE vn_date_r12e: thập niên 1950
// EXAMPLE vn_date_r12f: trước 1927, sau 1927 is considered 1927
// EXAMPLE vn_date_r12g: trước 90, sau 90 
// EXAMPLE vn_date_r12h: (1996)

RULENAME="vn_date_r12a",EXTRACTION="(năm |Năm )%reYear4Digit",NORM_VALUE="group(2)"
RULENAME="vn_date_r12a0_lrec",EXTRACTION="(năm |Năm )%reYearBC",NORM_VALUE="%normYearBC(group(2))"
RULENAME="vn_date_r12a1",EXTRACTION="%rePartWords (năm |Năm )%reYear4Digit",NORM_VALUE="group(3)",NORM_MOD="%normPartWords(group(1))"
RULENAME="vn_date_r12a2",EXTRACTION="%reYear4Digit",NORM_VALUE="group(1)"

RULENAME="vn_date_r12b",EXTRACTION="(năm |Năm )%reYear2Digit",NORM_VALUE="UNDEF-centurygroup(2)"

RULENAME="vn_date_r12c1",EXTRACTION="%reYear4Digit(-|–| đến )%reYear4Digit",NORM_VALUE="group(1)",OFFSET="group(1)-group(1)"
RULENAME="vn_date_r12c2",EXTRACTION="%reYear4Digit(-|–| đến )%reYear4Digit",NORM_VALUE="group(3)",OFFSET="group(3)-group(3)"



RULENAME="vn_date_r12c3",EXTRACTION="%rePartWords (năm |Năm )?%reYear4Digit(-|–| %rePartWords )(năm |Năm )?%reYear4Digit",NORM_VALUE="group(3)",NORM_MOD="%normPartWords(group(1))", OFFSET="group(1)-group(3)"
RULENAME="vn_date_r12c4",EXTRACTION="%rePartWords (năm |Năm )?%reYear4Digit ?(-|–|%rePartWords )(năm |Năm )?%reYear4Digit",NORM_VALUE="group(7)",NORM_MOD="%normPartWords(group(5))", OFFSET="group(4)-group(7)"



// Vietnamses tend not to express two time points by 2-digit year, so these two below rules should not be used

//RULENAME="vn_date_r12d1",EXTRACTION="%reYear2Digit(-|–| đến )%reYear2Digit",NORM_VALUE="UNDEF-centurygroup(1)",OFFSET="group(1)-group(1)"
//RULENAME="vn_date_r12d2",EXTRACTION="%reYear2Digit(-|–| đến )%reYear2Digit",NORM_VALUE="UNDEF-centurygroup(3)",OFFSET="group(3)-group(3)"


RULENAME="vn_date_r12e",EXTRACTION="(Thập niên |thập niên )%reYear4Digit",NORM_VALUE="group(2)"
RULENAME="vn_date_r12f",EXTRACTION="(Trước |trước |Sau |sau )%reYear4Digit",NORM_VALUE="group(2)"
//RULENAME="vn_date_r12g",EXTRACTION="(Trước |trước |Sau |sau )%reYear2Digit",NORM_VALUE="UNDEF-centurygroup(2)"
RULENAME="vn_date_r12h",EXTRACTION="\(%reYear4Digit\)",NORM_VALUE="group(1)",OFFSET="group(1)-group(1)"

///////////////////////
// DECADE GRANULARITY //
////////////////////////
// vn_date_r13
// EXAMPLE vn_date_r13a: những năm 90
// EXAMPLE vn_date_r13b: những năm 90 thế kỷ 17

RULENAME="vn_date_r13a",EXTRACTION="%reDecadeWord",NORM_VALUE="19%normDecadeWord(group(1))"
RULENAME="vn_date_r13b",EXTRACTION="%reDecadeWord (thế kỷ |Thế kỷ ) %reCenturyNumber",NORM_VALUE="group(3)%normDecadeWord(group(1))"



//vn_date_14_ SKIP

/////////////////////////
// CENTURY GRANULARITY // 
/////////////////////////
// vn_date_r15
// EXAMPLE vn_date_r15a: thế kỷ 19      the 19th century
// EXAMPLE vn_date_r15b: thế kỷ mười bảy

RULENAME="vn_date_r15a",EXTRACTION="(thế kỷ|Thế kỷ|thế kỉ|Thế kỉ) %reCenturyNumber",NORM_VALUE="%SUM%(group(2),-1)"
RULENAME="vn_date_r15b",EXTRACTION="(thế kỷ|Thế kỷ|thế kỉ|Thế kỉ) %reCenturyInWord",NORM_VALUE="%SUM%(%normCenturyInWord(group(2)),-1)"
RULENAME="vn_date_r15c",EXTRACTION="%rePartWords (thế kỷ|Thế kỷ|thế kỉ|Thế kỉ) %reCenturyNumber",NORM_VALUE="%SUM%(group(3),-1)",NORM_MOD="%normPartWords(group(1))"
RULENAME="vn_date_r15d",EXTRACTION="%rePartWords (thế kỷ|Thế kỷ|thế kỉ|Thế kỉ) %reCenturyInWord",NORM_VALUE="%SUM%(%normCenturyInWord(group(3)),-1)",NORM_MOD="%normPartWords(group(1))"

///////////////////////////////////
// GRANULARITY INDEPENDENT RULES //
///////////////////////////////////
// vn_date_r16
// EXAMPLE vn_date_r16a: tháng 3
// EXAMPLE vn_date_r16b  tháng ba      March
// EXAMPLE vn_date_r16c: đầu năm 2001 Early 2001 
// EXAMPLE vn_date_r16d: đầu năm 99  Early 99
// EXAMPLE vn_date_r16e: đầu tháng 3 năm 1999   the beginning of November 1999
// EXAMPLE vn_date_r16f: đầu tháng 3 năm 99   the beginning of November 99
// EXAMPLE vn_date_r16g: đầu tháng 3

RULENAME="vn_date_r16a",EXTRACTION="(tháng|Tháng) %reMonthNumber",NORM_VALUE="UNDEF-year-%normMonth(group(2))"
RULENAME="vn_date_r16b",EXTRACTION="(tháng|Tháng) %reMonthInWord",NORM_VALUE="UNDEF-year-%normMonthInWord(group(2))"
RULENAME="vn_date_r16c",EXTRACTION="%rePartWords (năm )? %reYear4Digit",NORM_VALUE="group(3)",NORM_MOD="%normPartWords(group(1))"
RULENAME="vn_date_r16d",EXTRACTION="%rePartWords năm %reYear2Digit",NORM_VALUE="UNDEF-centurygroup(2)",NORM_MOD="%normPartWords(group(1))"
RULENAME="vn_date_r16e",EXTRACTION="%rePartWords tháng %reMonthNumber năm %reYear4Digit",NORM_VALUE="group(3)-%normMonth(group(2))",NORM_MOD="%normPartWords(group(1))"
RULENAME="vn_date_r16f",EXTRACTION="%rePartWords tháng %reMonthNumber năm %reYear2Digit",NORM_VALUE="UNDEF-centurygroup(3)-%normMonth(group(2))",NORM_MOD="%normPartWords(group(1))"
RULENAME="vn_date_r16g",EXTRACTION="%rePartWords tháng %reMonthNumber",NORM_VALUE="UNDEF-year-%normMonth(group(2))",NORM_MOD="%normPartWords(group(1))"

// date_r17
// EXAMPLE vn_date_r17a: tuần này, năm nay    this week, this year
// EXAMPLE vn_date_r17b: tháng 11 này, tháng 11 năm ngoái   this November
// EXAMPLE vn_date_r17c: ngày 24 tháng 11 năm nay , năm ngoái    this November 24
// EXAMPLE vn_date_r17d: thứ 2 tuần này   this Monday
// EXAMPLE vn_date_r17e: mùa hè này   this summer
// EXAMPLE vn_date_r17f: ngày đó  this day (using UNDEF-REF normalization)
// EXAMPLE vn_date_r17g: những tuần sau đó

RULENAME="vn_date_r17a",EXTRACTION="%reUnit %reThisNextLast",NORM_VALUE="UNDEF-%normThisNextLast(group(2))-%normUnit(group(1))"
RULENAME="vn_date_r17b",EXTRACTION="(tháng|Tháng) %reMonthNumber năm %reThisNextLast",NORM_VALUE="UNDEF-%normThisNextLast(group(3))-%normMonth(group(2))"
RULENAME="vn_date_r17c",EXTRACTION="(ngày|Ngày) %reDayNumber (tháng|Tháng) %reMonthNumber năm %reThisNextLast",NORM_VALUE="UNDEF-%normThisNextLast(group(5))-%normMonth(group(4))-%normDay(group(2))"
RULENAME="vn_date_r17d",EXTRACTION="%reWeekday (tuần )?%reThisNextLast",NORM_VALUE="UNDEF-%normThisNextLast(group(3))-%normDayInWeek(group(1))"
RULENAME="vn_date_r17e",EXTRACTION="%reSeason (năm )?%reThisNextLast",NORM_VALUE="UNDEF-%normThisNextLast(group(3))-%normSeason(group(1))"
RULENAME="vn_date_r17f",EXTRACTION="(ngày đó)|(Ngày đó)",NORM_VALUE="UNDEF-REF-day-PLUS-0"
RULENAME="vn_date_r17g",EXTRACTION="(những )?%reUnit sau",NORM_VALUE="UNDEF-REF-%normUnit(group(2))-PLUS-1"



// vn_date_r18
// EXAMPLE vn_date_r18a: đầu năm nay                        the beginning of this year
// EXAMPLE vn_date_r18b: đầu tháng 11 này                   the beginning of this November
// EXAMPLE vn_date_r18c: bắt đầu từ ngày 24 tháng 11 này    the beginning of this November 24
// EXAMPLE vn_date_r18d: bắt đầu thứ 2 này                  the beginning of this Monday
// EXAMPLE vn_date_r18e: bắt đầu mùa hè này                 the beginning of this summer

RULENAME="vn_date_r18a",EXTRACTION="%rePartWords %reUnit %reThisNextLast",NORM_VALUE="UNDEF-%normThisNextLast(group(3))-%normUnit(group(2))",NORM_MOD="%normPartWords(group(1))"
RULENAME="vn_date_r18b",EXTRACTION="%rePartWords tháng %reMonthNumber %reThisNextLast",NORM_VALUE="UNDEF-%normThisNextLast(group(3))-%normMonthToEnglish(group(2))",NORM_MOD="%normPartWords(group(1))"
RULENAME="vn_date_r18c",EXTRACTION="%rePartWords (từ )?(ngày )?%reDayNumber tháng %reMonthNumber %reThisNextLast",NORM_VALUE="UNDEF-%normThisNextLast(group(6))-%normMonthToEnglish(group(5))-%normDay(group(4))",NORM_MOD="%normPartWords(group(1))"
RULENAME="vn_date_r18d",EXTRACTION="%rePartWords %reWeekday (tuần )?%reThisNextLast",NORM_VALUE="UNDEF-%normThisNextLast(group(4))-%normDayInWeek(group(2))",NORM_MOD="%normPartWords(group(1))"
RULENAME="vn_date_r18e",EXTRACTION="%rePartWords %reSeason (năm )?%reThisNextLast",NORM_VALUE="UNDEF-%normThisNextLast(group(4))-%normSeason(group(2))",NORM_MOD="%normPartWords(group(1))"




// vn_date_r19 (ago)
// EXAMPLE vn_date_r19a:    nhiều năm đã qua             at least several years ago
// EXAMPLE vn_date_r19b:    khoảng  20 năm đa qua  			about 20 years ago
// EXAMPLE vn_date_r19c: 	một tháng trước/đã qua	a month ago
// EXAMPLE vn_date_r19d: 	trước|sớm (đó,hơn) 20 ngày
// EXAMPLE vn_date_r19d: 	trước|sớm (đó,hơn) hai ngày





RULENAME="vn_date_r19a",EXTRACTION="(%reApproximate )?(%reUnit|phút|giờ) (trước|đã qua|trước đó|trước đây)",NORM_VALUE="PAST_REF"
RULENAME="vn_date_r19b",EXTRACTION="(%reApproximate )?([\d]+) (%reUnit) (trước|đã qua|trước đó|trước đây)",NORM_VALUE="UNDEF-REF-%normUnit(group(5))-MINUS-group(3)",NORM_MOD="%normApprox4Dates(group(2))"
RULENAME="vn_date_r19c",EXTRACTION="(%reApproximate )?%reDateInWord (%reUnit) (trước|đã qua|trước đó|trước đây)",NORM_VALUE="UNDEF-REF-%normUnit(group(5))-MINUS-%normDateInWord(group(3))",NORM_MOD="%normApprox4Dates(group(2))"

RULENAME="vn_date_r19d",EXTRACTION="(Trước |trước |Sớm |sớm)([\w]+ )?([\d]+) %reUnit",NORM_VALUE="UNDEF-REF-%normUnit(group(4))-MINUS-group(3)"

RULENAME="vn_date_r19e",EXTRACTION="(Trước |trước |Sớm |sớm)([\w]+ )?%reDateInWord %reUnit",NORM_VALUE="UNDEF-REF-%normUnit(group(4))-MINUS-%normDateInWord(group(3))"



// vn_date_r20 (later)
// EXAMPLE vn_date_r20a: 	(một vài) ngày/tuan/thang/ sau/toi/tiep theo	some days later

// EXAMPLE vn_date_r20b: 	khoảng 20 năm sau  	about 20 years later
// EXAMPLE vn_date_r20c: 	một/hai tháng/năm sau 		a year later 
// EXAMPLE vn_date_r20d: 	sau|muộn (đos,hơn một thoi gian khoảng) 20 năm 
// EXAMPLE vn_date_r20e: 	sau|muộn (đos,hơn một thoi gian khoảng) hai năm 

RULENAME="vn_date_r20a",EXTRACTION="(%reApproximate )?(%reUnit|phút|giờ) (tới|sau|tiếp theo|sau đó)",NORM_VALUE="FUTURE_REF"
RULENAME="vn_date_r20a1a",EXTRACTION="(sau |Sau ) một thời gian",NORM_VALUE="FUTURE_REF"
RULENAME="vn_date_r20a1b",EXTRACTION="(sau |Sau ) đó một thời gian",NORM_VALUE="FUTURE_REF"
RULENAME="vn_date_r20a2",EXTRACTION="Ngay sau đó",NORM_VALUE="FUTURE_REF"
RULENAME="vn_date_r20a3",EXTRACTION="ngay sau đó",NORM_VALUE="FUTURE_REF"
RULENAME="vn_date_r20b",EXTRACTION="(%reApproximate )?([\d]+) (%reUnit) (tới|sau|tiếp theo|sau đó)",NORM_VALUE="UNDEF-REF-%normUnit(group(5))-PLUS-group(3)",NORM_MOD="%normApprox4Dates(group(2))"
RULENAME="vn_date_r20c",EXTRACTION="(%reApproximate )?%reDateInWord (%reUnit) (tới|sau|tiếp theo|sau đó)",NORM_VALUE="UNDEF-REF-%normUnit(group(5))-PLUS-%normDateInWord(group(3))",NORM_MOD="%normApprox4Dates(group(2))"

//RULENAME="vn_date_r20d",EXTRACTION="(Sau |sau |Muộn |muộn )([\w]+ )?([\d]+) %reUnit",NORM_VALUE="UNDEF-REF-%normUnit(group(4))-PLUS-group(3)"
RULENAME="vn_date_r20d",EXTRACTION="(Sau |sau |Muộn |muộn )([\w]+ )?([\d]+) %reUnit",NORM_VALUE="UNDEF-REF-%normUnit(group(4))-PLUS-0"
//RULENAME="vn_date_r20e",EXTRACTION="(Sau |sau |Muộn |muộn )([\w]+ )?%reDateInWord %reUnit",NORM_VALUE="UNDEF-REF-%normUnit(group(4))-PLUS-%normDateInWord(group(3))"
RULENAME="vn_date_r20e",EXTRACTION="(Sau |sau |Muộn |muộn )([\w]+ )?%reDateInWord %reUnit",NORM_VALUE="UNDEF-REF-%normUnit(group(4))-PLUS-0)"





// date_r20 (later)ALREADY INCLUDED IN vn_date_rules 20
// EXAMPLE r20a_1: some days later
// EXAMPLE r20b_1: about twenty days later
// EXAMPLE r20c_1: about 20  days later
// EXAMPLE r20d_1: a year later 

// date_r21 (earlier): ALREADY INCLUDED IN vn_date_rules 19
// EXAMPLE r21a_1: twenty days earlier
// EXAMPLE r21b_1: about 20 days earlier
// EXAMPLE r21c_1: a year earlier

// date_r24 (ago/earlier/later normalizing with REFUNIT) ALREADY INCLUDED IN vn_date_rules 19 and 20
// EXAMPLE r22a_1: a year ago
// EXAMPLE r22b_1: a year later

// date_r23
// EXAMPLE r23a_1: the year-earlier first quarter :No sentence like this in VietNamese
// EXAMPLE r23b_1: the year-earlier quarter
// EXAMPLE r23c_1: the quarter


///////////////////
// HOLIDAY RULES //
///////////////////

//vn_date_r24
//EXAMPLE vn_r24a: ngày giáng sinh|quốc tế lao động|...	Christmas
//EXAMPLE vn_r24b: ngày giáng sinh|quốc tế lao động|... (năm)? 2010
//EXAMPLE vn_r24c: ngày giáng sinh|quốc tế lao động|... (năm)? 98

RULENAME="vn_date_r24a",EXTRACTION="(Ngày |ngày )%reHolidayFix",NORM_VALUE="UNDEF-year-%normHolidayFix(group(2))"
RULENAME="vn_date_r24b",EXTRACTION="(Ngày |ngày )%reHolidayFix (năm )?%reYear4Digit",NORM_VALUE="group(4)-%normHolidayFix(group(2))"
RULENAME="vn_date_r24c",EXTRACTION="(Ngày |ngày )%reHolidayFix (năm )?%reYear2Digit",NORM_VALUE="UNDEF-century-group(4)-%normHolidayFix(group(2))"

//date_r25
//EXAMPLE r25a_1: Eastersunday
//EXAMPLE r25b_1: Eastersunday 2010
//EXAMPLE r25c_1: Eastersunday 87
//EXAMPLE r25d_1: Eastersunday '87

////////////////////
// NEGATIVE RULES //
////////////////////
RULENAME="vn_date_negative_1b",EXTRACTION="([\d]+)%",NORM_VALUE="REMOVE"
RULENAME="vn_date_negative_1c",EXTRACTION="([\d]+),([\d]+)",NORM_VALUE="REMOVE"
RULENAME="vn_date_negative_1d",EXTRACTION="%reWeekday,",NORM_VALUE="REMOVE"
RULENAME="vn_date_negative_1e",EXTRACTION="vị trí %reWeekday,",NORM_VALUE="REMOVE"




