UNPKG

tyme4ts

Version:

Tyme是一个非常强大的日历工具库,可以看作 Lunar 的升级版,拥有更优的设计和扩展性,支持公历和农历、星座、干支、生肖、节气、法定假日等。

584 lines (452 loc) 309 kB
export enum YinYang { YIN = 0, YANG = 1 } export enum Side { IN = 0, OUT = 1 } export enum Gender { WOMAN = 0, MAN = 1 } export enum FestivalType { DAY = 0, TERM = 1, EVE = 2 } export enum HideHeavenStemType { RESIDUAL = 0, MIDDLE = 1, MAIN = 2 } export interface Culture { getName(): string; toString(): string; } export interface Tyme extends Culture { next(n: number): Tyme | null; } export abstract class AbstractCulture implements Culture { abstract getName(): string; toString(): string { return this.getName(); } equals(o: Culture): boolean { return o && o.toString() === this.toString(); } protected indexOf(index: number, size: number): number { let i: number = index % size; if (i < 0) { i += size; } return i; } protected static numeric(n: number | string, name: string): number { const d: number = (typeof n === 'number') ? n : Number(n); if (isNaN(d)) { throw new Error(`illegal ${name}: ${n}`); } return d; } } export abstract class AbstractTyme extends AbstractCulture implements Tyme { abstract next(n: number): Tyme | null; } export abstract class AbstractCultureDay extends AbstractCulture { protected culture: AbstractCulture; protected dayIndex: number; protected constructor(culture: AbstractCulture, dayIndex: number) { super(); this.culture = culture; this.dayIndex = dayIndex; } getDayIndex(): number { return this.dayIndex; } protected getCulture(): Culture { return this.culture; } getName(): string { return this.culture.getName(); } toString(): string { return `${this.culture.toString()}第${this.getDayIndex() + 1}天`; } } export abstract class LoopTyme extends AbstractTyme { protected names: string[]; protected index: number; protected constructor(names: string[], indexOrName: number | string) { super(); this.names = names; this.index = this.indexOfBy(indexOrName); } protected indexOfBy(indexOrName: number | string): number { if (typeof indexOrName === 'number') { return this.indexOf(indexOrName, this.getSize()); } else { for (let i: number = 0, j: number = this.getSize(); i < j; i++) { if (this.names[i] === indexOrName) { return i; } } throw new Error(`illegal name ${indexOrName}`); } } getName(): string { return this.names[this.index]; } getIndex(): number { return this.index; } getSize(): number { return this.names.length; } protected nextIndex(n: number): number { return this.indexOfBy(this.index + n); } stepsTo(targetIndex: number): number { return this.indexOfBy(targetIndex - this.index); } } export class Animal extends LoopTyme { static NAMES: string[] = ['蛟', '龙', '貉', '兔', '狐', '虎', '豹', '獬', '牛', '蝠', '鼠', '燕', '猪', '獝', '狼', '狗', '彘', '鸡', '乌', '猴', '猿', '犴', '羊', '獐', '马', '鹿', '蛇', '蚓']; protected constructor(indexOfName: number | string) { super(Animal.NAMES, indexOfName); } static fromIndex(index: number | string): Animal { return new Animal(Animal.numeric(index, 'animal index')); } static fromName(name: string): Animal { return new Animal(name); } next(n: number): Animal { return Animal.fromIndex(this.nextIndex(n)); } getTwentyEightStar(): TwentyEightStar { return TwentyEightStar.fromIndex(this.index); } } export class TwentyEightStar extends LoopTyme { static NAMES: string[] = ['角', '亢', '氐', '房', '心', '尾', '箕', '斗', '牛', '女', '虚', '危', '室', '壁', '奎', '娄', '胃', '昴', '毕', '觜', '参', '井', '鬼', '柳', '星', '张', '翼', '轸']; protected constructor(indexOfName: number | string) { super(TwentyEightStar.NAMES, indexOfName); } static fromIndex(index: number | string): TwentyEightStar { return new TwentyEightStar(TwentyEightStar.numeric(index, 'twenty eight star index')); } static fromName(name: string): TwentyEightStar { return new TwentyEightStar(name); } next(n: number): TwentyEightStar { return TwentyEightStar.fromIndex(this.nextIndex(n)); } getSevenStar(): SevenStar { return SevenStar.fromIndex(this.index % 7 + 4); } getLand(): Land { return Land.fromIndex([4, 4, 4, 2, 2, 2, 7, 7, 7, 0, 0, 0, 0, 5, 5, 5, 6, 6, 6, 1, 1, 1, 8, 8, 8, 3, 3, 3][this.index]); } getZone(): Zone { return Zone.fromIndex(~~(this.index / 7)); } getAnimal(): Animal { return Animal.fromIndex(this.index); } getLuck(): Luck { return Luck.fromIndex([0, 1, 1, 0, 1, 0, 0, 0, 1, 1, 1, 1, 0, 0, 1, 0, 0, 1, 0, 1, 0, 0, 1, 1, 1, 0, 1, 0][this.index]); } } export class SevenStar extends LoopTyme { static NAMES: string[] = ['日', '月', '火', '水', '木', '金', '土']; protected constructor(indexOfName: number | string) { super(SevenStar.NAMES, indexOfName); } static fromIndex(index: number | string): SevenStar { return new SevenStar(SevenStar.numeric(index, 'seven star index')); } static fromName(name: string): SevenStar { return new SevenStar(name); } next(n: number): SevenStar { return SevenStar.fromIndex(this.nextIndex(n)); } getWeek(): Week { return Week.fromIndex(this.index); } } export class Week extends LoopTyme { static NAMES: string[] = ['日', '一', '二', '三', '四', '五', '六']; protected constructor(indexOfName: number | string) { super(Week.NAMES, indexOfName); } static fromIndex(index: number | string): Week { return new Week(Week.numeric(index, 'week index')); } static fromName(name: string): Week { return new Week(name); } next(n: number): Week { return Week.fromIndex(this.nextIndex(n)); } getSevenStar(): SevenStar { return SevenStar.fromIndex(this.index); } } export class Land extends LoopTyme { static NAMES: string[] = ['玄天', '朱天', '苍天', '阳天', '钧天', '幽天', '颢天', '变天', '炎天']; protected constructor(indexOfName: number | string) { super(Land.NAMES, indexOfName); } static fromIndex(index: number | string): Land { return new Land(Land.numeric(index, 'land index')); } static fromName(name: string): Land { return new Land(name); } next(n: number): Land { return Land.fromIndex(this.nextIndex(n)); } getDirection(): Direction { return Direction.fromIndex(this.index); } } export class Direction extends LoopTyme { static NAMES: string[] = ['北', '西南', '东', '东南', '中', '西北', '西', '东北', '南']; protected constructor(indexOfName: number | string) { super(Direction.NAMES, indexOfName); } static fromIndex(index: number | string): Direction { return new Direction(Direction.numeric(index, 'direction index')); } static fromName(name: string): Direction { return new Direction(name); } next(n: number): Direction { return Direction.fromIndex(this.nextIndex(n)); } getLand(): Land { return Land.fromIndex(this.index); } getElement(): Element { return Element.fromIndex([4, 2, 0, 0, 2, 3, 3, 2, 1][this.index]); } } export class Zone extends LoopTyme { static NAMES: string[] = ['东', '北', '西', '南']; protected constructor(indexOfName: number | string) { super(Zone.NAMES, indexOfName); } static fromIndex(index: number | string): Zone { return new Zone(Zone.numeric(index, 'zone index')); } static fromName(name: string): Zone { return new Zone(name); } next(n: number): Zone { return Zone.fromIndex(this.nextIndex(n)); } getDirection(): Direction { return Direction.fromName(this.getName()); } getBeast(): Beast { return Beast.fromIndex(this.getIndex()); } } export class Beast extends LoopTyme { static NAMES: string[] = ['青龙', '玄武', '白虎', '朱雀']; protected constructor(indexOfName: number | string) { super(Beast.NAMES, indexOfName); } static fromIndex(index: number | string): Beast { return new Beast(Beast.numeric(index, 'beast index')); } static fromName(name: string): Beast { return new Beast(name); } next(n: number): Beast { return Beast.fromIndex(this.nextIndex(n)); } getZone(): Zone { return Zone.fromIndex(this.index); } } export class Luck extends LoopTyme { static NAMES: string[] = ['吉', '凶']; protected constructor(indexOfName: number | string) { super(Luck.NAMES, indexOfName); } static fromIndex(index: number | string): Luck { return new Luck(Luck.numeric(index, 'luck index')); } static fromName(name: string): Luck { return new Luck(name); } next(n: number): Luck { return Luck.fromIndex(this.nextIndex(n)); } } export class Constellation extends LoopTyme { static NAMES: string[] = ['白羊', '金牛', '双子', '巨蟹', '狮子', '处女', '天秤', '天蝎', '射手', '摩羯', '水瓶', '双鱼']; protected constructor(indexOfName: number | string) { super(Constellation.NAMES, indexOfName); } static fromIndex(index: number | string): Constellation { return new Constellation(Constellation.numeric(index, 'constellation index')); } static fromName(name: string): Constellation { return new Constellation(name); } next(n: number): Constellation { return Constellation.fromIndex(this.nextIndex(n)); } } export class Duty extends LoopTyme { static NAMES: string[] = ['建', '除', '满', '平', '定', '执', '破', '危', '成', '收', '开', '闭']; protected constructor(indexOfName: number | string) { super(Duty.NAMES, indexOfName); } static fromIndex(index: number | string): Duty { return new Duty(Duty.numeric(index, 'duty index')); } static fromName(name: string): Duty { return new Duty(name); } next(n: number): Duty { return Duty.fromIndex(this.nextIndex(n)); } } export class Element extends LoopTyme { static NAMES: string[] = ['木', '火', '土', '金', '水']; protected constructor(indexOfName: number | string) { super(Element.NAMES, indexOfName); } static fromIndex(index: number | string): Element { return new Element(Element.numeric(index, 'element index')); } static fromName(name: string): Element { return new Element(name); } next(n: number): Element { return Element.fromIndex(this.nextIndex(n)); } getReinforce(): Element { return this.next(1); } getRestrain(): Element { return this.next(2); } getReinforced(): Element { return this.next(-1); } getRestrained(): Element { return this.next(-2); } getDirection(): Direction { return Direction.fromIndex([2, 8, 4, 6, 0][this.index]); } } export class God extends LoopTyme { static NAMES: string[] = ['天恩', '鸣吠', '母仓', '不将', '四相', '鸣吠对', '五合', '三合', '除神', '月德', '月空', '月德合', '月恩', '时阴', '五富', '生气', '金匮', '相日', '阴德', '六合', '益后', '青龙', '续世', '明堂', '王日', '要安', '官日', '吉期', '福德', '六仪', '金堂', '宝光', '民日', '临日', '天马', '敬安', '普护', '驿马', '天后', '阳德', '天喜', '天医', '司命', '圣心', '玉宇', '守日', '时德', '解神', '时阳', '天仓', '天巫', '玉堂', '福生', '天德', '天德合', '天愿', '天赦', '天符', '阴神', '解除', '五虚', '五离', '重日', '复日', '血支', '天贼', '土符', '游祸', '白虎', '小耗', '致死', '河魁', '劫煞', '月煞', '月建', '往亡', '大时', '大败', '咸池', '厌对', '招摇', '九坎', '九焦', '天罡', '死神', '月害', '死气', '月破', '大耗', '天牢', '元武', '月厌', '月虚', '归忌', '小时', '天刑', '朱雀', '九空', '天吏', '地火', '四击', '大煞', '勾陈', '八专', '灾煞', '天火', '血忌', '土府', '月刑', '触水龙', '地囊', '八风', '四废', '四忌', '四穷', '五墓', '阴错', '四耗', '阳错', '孤辰', '小会', '大会', '八龙', '七鸟', '九虎', '六蛇', '天狗', '行狠', '了戾', '岁薄', '逐阵', '三丧', '三阴', '阴道冲阳', '阴位', '阴阳交破', '阴阳俱错', '阴阳击冲', '鬼哭', '单阴', '绝阴', '纯阳', '阳错阴冲', '七符', '成日', '孤阳', '绝阳', '纯阴', '大退', '四离', '阳破阴冲']; protected static dayGods: string[] = [ ';000002300F14156869717A3F;01001617495C40413C425D6A;0209000C041831031906054A5E6B4B5F;033500041A1B032C06054C4D4E60;04002D321C1D1E104F50615152;05111F53546C55433C3E;062E200721220D01566E44;070B2333242F45;08360A2526242F080157583D59;091234080162463C3D5A;0A270728292A5B6364653F79;0B0237130E2B4748727A3E66;0C09020C04300F0314150568696D;0D3504031617495C40413C6F425D6A;0E38183119064A5E6B4B5F;0F001A1B032C064C4D4E60;10002D321C1D1E104F50615152;110B00111F53546C55433C3E;12360A002E200721220D015644;13002333456D;142526242F080157583F3D59;15001234080162463C3D5A;16090004270728292A5B636465;17350204130E032B47483E66;1802300F14156869;19031617495C40413C425D6A;1A1831031906054A5E6B4B5F;1B0B1A1B032C06054C4D4E;1C360A2D321C1D1E104F50615152;1D111F53546C55433C3E;1E2E200721220D01563F44;1F23334573;20090C042526242F080157583D;2135041234080162463C3D5A;22270728292A5B636465;2302130E032B47483E66;2402300F0314150568696E;250B031617495C40413C425D6A;26360A18311906054A5E6B4B5F;271A1B2C06054C4D4E60;282D321C1D1E104F506151523F;29111F53546C55433C3E;2A090C042E200721220D015644;2B350423334567;2C2526242F0857583D59;2D001234080162463C3D5A;2E00270728292A5B63646574;2F0B0002130E032B47483E66;30360A0002300F141505686975;31001617495C40413C425D6A676D;3218311906054A5E6B4B3F675F76;331A1B2C06054C4D4E60;34090C042D321C1D1E104F50615152;353504111F53546C55433C6F3E;362E200721220D5644;3723334567;382526242F08015758703D6759;390B123408016246703C3D5A84;3A360A270728292A5B636465;3B02130E2B47483E66;', ';00090002272A536C4C4D4E41717A;0100300F3103233C6151523F66;020004180E032406150543405D;03000C041A1D340617054A5E6B4F50;04002D1B555F;050B112526321C2B3C42654B3E60;060A2E2014100547546246;0712070D161F566A;0822192F0148453D44;092C083301575868695B633C3D;0A0937131E495C6459;0B020721282903727A3F3E5A;0C020427032A05536C4C4D4E416D;0D0C04300F03233C6F61515266;0E38180E24061543405D;0F0B001A1D3406174A5E6B4F5078;100A002D1B555F;1100112526321C2B3C42654B3E60;12002E2014100147546246;130012070D161F566A6D;140922192F080148453D44;152C083301575868695B633C3F3D44;160413031E495C6459;17020C0407212829033E5A;1802272A536C4C4D4E41;190B300F3103233C61515266;1A0A180E032406150543405D;1B1A1D340617014A5E6B4F50;1C2D1B555F;1D112526321C2B3C42654B3E60;1E092E2014100147546246;1F12070D161F56736E6A3F;200422192F080148453D44;210C042C083301575868695B633C3D;22131E495C6459;230B0207212829033E5A;240A0227032A05536C4C4D4E41;25300F31233C61515266;26180E2406150543405D;271A1D340617054A5E6B4F50;28092D1B555F;29112526321C2B3C42654B3F3E60;2A042E2014100147546246;2B0C0412070D161F566A67;2C22192F0848453D44;2D0B002C083301575868695B633C3D85;2E0A0013031E495C6459;2F0002072128293E5A;300002272A05536C4C4D4E4175;3100300F31233C6151526E676D66;3209180E2406150543405D;331A1D340617054A5E6B4F503F76;34042D1B555F;350C04112526321C2B3C6F42654B3E60;362E20141047546246;370B12070D161F566A67;380A22192F08014845703D6744;392C083301575868695B63703C3D74;3A131E495C6459;3B02072128293E5A;', ';00000207282931032B717A6E5D59;01000314473C5A;020A000427182526300F1D16062A054F506A;03360B00041A1906055562464066;04002D2C154A5E6B6C733F788B;0512111B0E1E17483C3E;060C2E20321C016869655F;0753544960;08350907210D230810015B63564B3D77;091324081F014C4D4E453C423D;0A2203342F57586461515244;0B02032C4341727A3E;0C0A020407282931032B055D6D59;0D360B040314473C6F5A;0E3827182526300F1D16062A4F506A3F;0F001A19065562464066;10000C2D2C154A5E6B6C86;110012111B0E1E17483C3E;123509002E20321C0168696E655F;13005354495C6D60;1407210D230810015B63564B3D7F;1537130324081F014C4D4E453C423D;160A042203342F57586461515244;17360B0204033343413E;1802072829312B5D3F59;190314473C5A;1A0C27182526300F1D16062A054F506A;1B1A1906055562464066;1C35092D2C154A5E6B6C;1D12111B0E1E17483C3E;1E2E20321C016869655F;1F5354495C60;200A0407210D230810015B63564B3D80;21360B04130324081F014C4D4E453C423D;2222342F5758646151523F44;2302033343413E;24020C072829312B055D59;2514473C5A;26120927182526300F1D16062A054F506A;271A1906055562464066;282D2C154A5E6B6C76;2912111B0E1E17483C3E;2A0A042E20321C016869655F;2B360B045354495C6760;2C07210D2308105B63564B3F3D77;2D00130324081F014C4D4E453C423D;2E000C22342F57586461515244;2F00023343413E;3035090002072829312B05755D59;310014473C676D5A;3227182526300F1D16062A054F506A67;331A1906055562464066;340A042D2C154A5E6B6C;35360B0412111B0E1E17483C6F3E;362E20321C6869653F5F;375354495C6760;380C07210D230810015B6356704B3D677774;391324081F014C4D4E45703C423D;3A350922342F57586461515244;3B023343413E;', ';000A00220362463C44;010B00072128291D334F50645D;02360002230605534855423F59;03000212300F24060568695A;0400042E27342A495C403C8C;050C04184A5E6B3E66788D76;06091A1B2B15014C4D4E;07352D321C14175B636151526577;0811130E16080147546C433C6A3D5F;0920070D190801563D60;0A0A032C2F104541;0B0B252631031E1F57584B3E;0C362203056246717B3C3F6D44;0D072128291D334F50645D;0E020423065348554259;0F00020C0412300F240668696E5A;1009002E12342A495C403C;113500184A5E6B3E66;12001A1B2B15014C4D4E;13002D321C14175B63615152656D77;140A11130E0316080147546C433C6F6A3D5F;150B20070D03190801563D60;1636032C2F104541733F;17252631031E1F5758727B4B3E;1804220362463C44;190C04072128291D334F50645D;1A09022306055348554259;1B3502120D0F24060568695A;1C2E27342A495C403C;1D184A5E6B3E66;1E0A381A1B2B15014C4D4E;1F0B2D321C14175B63615152657F;20363711130E0316080147546C433C6A3F3D5F;2120070D03190801563D60;2204032C2F104541;230C042526311E1F57584B3E;2409220562463C44;2535072128291D334F50645D;26022306055348554259;270212300F24060568695A;280A2E27342A495C403C6F;290B184A5E6B3E66;2A361A1B2B15014C4D4E3F81;2B2D321C14175B6361515265678074;2C0411130E03160847546C433C6A3D5F;2D000C0420070D190801566E3D60;2E09002C2F104541;2F35002526311E1F57584B3E;300022056246703C44;3100072128291D334F50645D676D;320A02230605534855426759;330B02120D0F2406056869755A;34362E27342A495C403C3F;35184A5E6B3E6676;36041A1B2B154C4D4E81;370C042D321C14175B6361515265677774;380911130E16080147546C433C6A3D675F;393520070D190801563D60;3A2C2F104541;3B2526311E1F5758704B3E87;', ';00001D2F10575868694F503C;0100122B1F495C5564;0209000207222829140605655D44;03000216063305474C4D4E51526A4B3F;04000C042E300F193C6159;0504182C43403E5A;06271A1E2A014A5E6B6C5B6342;070B2D1B1366;080A112526321C0815013C3D;0920032308170153546246413D;0A07210D310324565F;0B0E033448453E60;0C091D2F1005575868694F50717B3C6D;0D122B1F495C553F;0E020C04072228291406655D44;0F000204160633474C4D4E51526A4B;10002E300F193C6159;110B00182C43403E5A;120A00271A1E2A014A5E6B6C5B6342;13002D1B13036D66;14112526321C030815013C6F3D;1520032308170153546246413D;160907210D31032456735F;170E344845727B3F3E60;180C041D2F10575868694F503C;1904122B1F495C5564;1A0207222829140605655D44;1B0B0216063305474C4D4E51526A4B;1C0A2E300F193C6159;1D182C43403E5A;1E38271A1E2A014A5E6B6C5B6342;1F2D1B130366;2009112526321C030815013C3D;21202308170153546246413F3D;220C0407210D3103565F;23040E3448453E60;241D2F1005575868694F503C;250B122B1F495C5564;260A0207222829140605655D44;270216063305474C4D4E51526A4B;282E300F193C6F616E59;29182C43403E5A;2A09271A1E2A014A5E6B6C5B63427988;2B372D1B133F6766;2C0C04112526321C0308153C3D;2D0004202308170153546246413D;2E0007210D3124565F;2F0B000E3448453E60;300A001D2F1005575868694F50703C89;3100122B1F495C5564676D;320207222829140605655D6744;330216063305474C4D4E7551526A4B;34092E300F193C6159;35182C43403F3E5A;360904271A1E2A4A5E6B6C5B634278;37042D1B136766;38112526321C0815013C3D67;390B202308170153546246413D;3A0A07210D3124566E5F;3B0E03344845703E60;', ';003509001E2F554C4D4E453C51525D5F;010057586C646160;0200020E06100543;0300020721282923061F0565;0400042E2224533C7344;05360B04182526300F34335B633F3E74;060A1A13016246404B59;070C2D2B4A5E6B5A;0827111B0314082A0148413C3D;0920321C310316080148413C3D;0A35090319154754495C42;0B12070D1D2C174F50563E;0C1E2F05554C4D4E45717B3C51525D6D5F;0D57586C646160;0E02040E061043;0F360B0002040721282923061F653F;100A002E2224533C44;11000C182526300F34335B633E;12001A1303016246404B59;13002D032B4A5E6B6D5A;14350927111B0314082A0148413C6F3D;1520321C310316080168696A3D66;1619154754495C426E;1712070D1D2C174F5056727B3E;18041E2F554C4D4E453C51525D5F;19360B0457586C64613F60;1A0A020E06100543;1B020C0721282923061F0565;1C2E2224533C44;1D182526300F34335B633E;1E3509381A1303016246404B59;1F2D032B4A5E6B5A;2027111B14082A0148413C3D;2120321C3116080168696A3D66;22040319154754495C42;23360B0412070D1D2C174F50563F3E;240A1E2F05554C4D4E453C51525D5F;250C57586C646160;26020E06100543;27020721282923061F0565;2835092E2224533C6F44;29182526300F34335B633E;2A1A13016246404B5982;2B2D2B4A5E6B675A76;2C0427111B0314082A48413C3D;2D360B000420321C3116080168696A3F3D66;2E0A0019154754495C42;2F000C12070D1D2C174F50563E;30001E2F05554C4D4E45703C51525D5F;310057586C6461676D608E;323509020E0610054367;33020721282923061F057565;342E2224533C6E44;35182526300F34335B633E7974;3637041A13036246404B5982;37360B042D2B4A5E6B3F675A76;380A27111B14082A0148413C3D67;390C20321C3116080168696A3D66;3A0319154754495C42;3B12070D1D2C174F5056703E;', ';0000302007210D341556;01000217455D;020A0025262B2F060557586C5F;030B001406056246603C8F;0436000207282916105B6364656A;0537130E191F47483E;0622300F2C0168693F44;07021E33495C40413C;08090C04184A5E423D59;093504121A1B0308014C4D4E51524B3D5A;0A02272D321C1D232A4F507E61;0B1124535455433E66;0C0A2E2007210D341505566D;0D0B0217455D;0E3625262B2F0657586C;0F00140662463C4260;10000207282916105B6364656A3F79;1100130E191F47483E;1209350C0422300F032C01686944;1335000204031E33495C40413C6D;1418310308014A5E6B3D59;15121A1B0308014C4D4E51524B3D5A;160A02272D321C1D232A4F507E61;170B1124535455433C6F6E3E66;18362E2007210D341556;190217455D;1A25262B060557586C3F5F;1B14060562463C4260;1C09020C0407282916105B6364656A;1D3504130E03191F47483E;1E22300F032C01686944;1F02031E495C40413C;200A183108014A5E6B3D59;210B121A1B08014C4D4E51524B3D5A;223602272D321C1D232A4F507E61;231124535455433C3E66;242E2007210D34150556717C3F;25021745735D;26090C0425262B2F060557586C5F;27350414060562463C4260;280207282916105B6364656A74;29130E03191F47483E;2A0A22300F2C01686944;2B0B021E33495C40413C6F67;2C36381831034A5E6B3D59;2D00121A1B08014C4D4E51524B3D5A;2E0002272D321C1D232A4F507E613F;2F00112453545543727C3C3E66;3009000C042E2007210D34150556;313500020417455D676D;3225262B2F060557586C70675F;331406056246703C426084;340A0207282916105B6364656A;350B130E191F47486E3E;363622300F032C7544;37021E33495C40413C67;38183108014A5E6B3F3D675976;39121A1B08014C4D4E51524B3D5A;3A09020C04272D321C1D232A4F507E61;3B35041124535455433C3E66;', ';000A002E27202C2A475462464B;010B0002070D1E5666;02002F06150548456E5D;0300061705575868695B633C;040002130323495C645F;0507212829249060;0609341001534C4D4E415152;070212300F31031F3C61423F;080418220E032B080143403D44;090C041A1D14080833014A5E6B6C4F503D;0A0A022D1B16556A59;0B0B112526321C193C653E5A;0C2E27202C2A05475462464B6D;0D02070D1E5666;0E2F061548455D;0F000617575868695B633C85;10090002371323495C645F;11000721282903243F3E60;12000403341001534C4D4E415152;1300020C0412300F31031F3C61426D;140A18220E032B080143403D44;150B1A1D140833014A5E6B6C4F503D;16022D1B16556A59;17112526321C193C6F653E5A;182E27202C2A475462464B;1902070D1E5666;1A092F06150548455D;1B061705575868695B633C3F79;1C0204130323495C645F;1D0C040721282903243E60;1E0A03341001534C4D4E415152;1F0B0227300F311F3C6142;2018220E2B080143406E3D44;211A1D140833014A5E6B6C4F503D;22022D1B16556A59;23112526321C193C653E5A;24092E27202C2A0547546246717C4B;2502070D1E56733F66;26042F06150548455D;270C04061705575868695B633C;280A02130323495C645F;290B07212829243E60;2A341001534C4D4E415152;2B0212300F311F3C6F614267;2C3818220E032B0843403D44;2D001A1D140833014A5E6B5B4F503D78;2E0900022D1B16556A59;2F00112526321C19727C3C653F3E5A;3000042E27202C2A05475462464B;3100020C04070D1E56676D66;320A2F0615054845705D67;330B061705575868695B63703C74;34021323495C645F;3507212829243E60;36033410534C4D4E41755152;370212300F311F3C614267;380918220E2B080143403D6744;391A1D140833014A5E6B6C4F503F3D76;3A02042D1B16556A59;3B0C04112526321C193C653E5A;', ';00002E20391C246869655D59;010002345354495C5A;023509002707210D062A055B6356515277;0300132B06054C4D4E453C66;04000203142F1557586473614B3F;0512161743416A3E;060C072829310319015F;07360B02032C476C3C6E60;080A04182526300F1D1E0810014F503D;09041A081F01556246403D;0A022D224A5E6B4486;0B111B0E2333483C423E;0C35092E20321C24056869655D6D59;0D02345354495C5A;0E2707210D062A5B635651523F77;0F00132B064C4D4E453C66;1000020C03142F15575864614B;11360B001203161743416A3E;120A0004072829310319015F;13000204032C476C3C6D60;14182526300F1D1E0810014F503D;151A081F01556246403D;163509022D224A5E6B44;17111B0E2333483C6F423E;182E20321C246869655D3F59;1902345354495C5A;1A0C2707210D062A055B635651527F;1B360B3713032B06054C4D4E453C66;1C0A020403142F15575864614B;1D041203161743416A3E;1E0728293119015F;1F022C476C3C60;203509182526300F1D1E08104F503D;211A081F01556246403D;22022D224A5E6B3F447891;23111B0E2333483C423E;240C2E20321C24056869717C655D59;25360B021C5354495C6E5A;260A042707210D062A055B6356515280;270413032B06054C4D4E453C66;2802142F15575864614B;2912161743416A3E;2A35090728293119015F;2B022C476C3C6F6760;2C38182526300F1D1E08104F503F3D;2D001A081F01556246403D;2E0002092D224A5E6B4476;2F360B00111B0E233348727C3C423E;300A00042E20321C24056869655D59;31000204345354495C676D5A;322707210D062A055B6356705152677774;33132B06054C4D4E45703C66;34350902142F15575864614B;3512161743416A3E;36072829310319753F5F;37022C476C3C6760;380C182526300F1D1E0810014F503D67;39360B1A081F01556246403D;3A0A02042D224A5E6B44;3B04111B0E2333483C423E;', ';00090038041A221B194C4D4E44;0135000C042D321C2C335B6361655D77;02002E11130E1E06054754433C59;03001220070D0605565A;0400272F2A454142;050B252631032357583E66;06360A0324150162463C;07072128291D34174F50644B;080208015348553F3D5F;0902300F2B080168693D60;0A09041410495C403C6F;0B35090418161F4A5E6B6C5152403E;0C1A221B19054C4D4E6D44;0D2D321C2C335B6361655D77;0E2E11130E1E064754433C6E59;0F0B351220070D0306565A;10360A0027032F2A454142;1100252631032357583E66;12000324150162463C3F;1300072128291D34174F50644B6D;1409020408015348553D5F;1535020C04300F2B080168693D60;161410495C403C;1718161F4A5E6B6C51526A3E;181A221B194C4D4E4481;190B0A2E11130E031E06054754433C59;1A360A2E11130E031E06054754433C59;1B1220070D030605565A;1C27032F2A454173423F;1D252631032357583E66;1E090424150162463C;1F350C04072128291D34174F50644B;200208015348553D5F;2102300F2B080168693D60;221410495C403C92;230B18161F4A5E6B6C51526A3E7893;24360A1A221B19054C4D4E44;252D321C2C335B6361655D7F;26372E11130E031E06054754433C3F59;271220070D030605565A;280904272F2A454142;29350C042526312357583E66;2A2415016246703C;2B072128291D34174F50644B67;2C02085348556E3D5F;2D090002300F2B080168693D60;2E360A001410495C403C;2F0018161F4A5E6B6C51526A3E;30001A221B19054C4D4E717D3F4481;31002D321C2C335B6361655D676D8074;3209042E11130E1E06054754433C6F6759;33350C042720070D0605565A;34272F2A454142;35252631235758703E6687;36241562463C;370B072128291D34174F50644B67;38360A023A015348553D675F;3902300F2B08016869753D60;3A1410495C403C3F;3B18161F4A5E6B6C727D51526A3E76;', ';0000380C041A23104A5E6B5B63;010004122D1B13241F838A;020A002E11252622321C3406053C5D44;030B00200306330553544641;040007210D312B5659;050E031448453E5A;060E1D162F2A01575868694F503C6A;0719495C556466;0809020728292C081501515242653D;09021E081701474C4D4E3F3D;0A0C04300F3C6F614B5F;0B041843403E60;0C0A1A2310054A5E6B5B636D;0D0B122D1B1303241F838A94;0E2E11252622321C34063C5D44;0F002003063353546C624641;100007210D31032B5659;11000E031448453E5A;120900271D162F2A01575868694F503C6A;130019495C55643F6D66;14020C040728292C081501515242653D;1502041E081701474C4D4E3D;160A300F3C614B5F;170B1843403E60;181A23104A456B5B6378;19122D1B1303241F9583;1A2E11252622321C033406053C5D44;1B200306330553546C6246416E;1C0907210D31032B567359;1D0E1448453F3E5A;1E0C04271D163B2A01575868694F503C6A;1F0419495C556466;200A020728292C081501515242653D;210B021E081701474C4D4E3D;22300F3C614B5F;231843403E60;241A2310054A5E425B63;25122D1B1303241F;26092E11252622321C033406053C5D44;272006330553546C6246413F;280C0407210D312B5659;29040E1448453E5A;2A0A271D162F2A01575868694F50703C6A89;2B0B19495C55646766;2C020728292C0815515242653D;2D00021E081701474C4D4E3D;2E00300F3C614B5F;2F001843403E60;3009001A2310054A5E6B5B63717D7988;310037122D1B13241F3F676D;320C042E11252622321C3406053C6F5D6744;33042006330553546C624641;340A07210D312B5659;350B0E03144845703E5A;36271D162F2A575868694F503C6A;3719495C55646766;38020728292C081501515242653D67;39021E081701474C4D4E756E3D;3A09300F3C614B5F;3B184340727D3F3E60;', ';000A003837041A1316624640425D6A5F;01360B00042D194A5E6B4B60;020009111B032C06100548413C;030020321C310310061F056869;0400224754495C7344;05070D1D334F505651523F3E;063509232F01554C4D4E453C59;070C24575864615A;0802270E34082A01433D;09020721282908016E653D66;0A0A042B15536C3C6F;0B360B0412182526300F14175B633E;0C1A13031605624640425D6A6D5F;0D2D03194A5E6B4B60;0E2E111B33061048413C;0F0020321C31031E061F68693F;1035090022034754495C44;11000C070D1D334F505651523E;1200232F01554C4D4E453C59;130024575864616D5A;140A0204270E0F082A01433D;15360B0204072128290801653D66;162B15536C3C;17121825260D0F14175B633E;181A1316624640425D6A5F82;192D03194A5E6B4B3F60;1A35092E111B032C061048413C;1B0C20321C31031E061F056869;1C224754495C44;1D07121D334F505651523E;1E0A04232F01554C4D4E453C59;1F360B0424575864615A;2002270E34082A01433D;2102072128290801653D66;222B15536C3C;2312182526300F14175B633F3E;2435091A13031605624640425D6A5F;250C2D03194A5E6B4B60;262E111B2C06100548413C;2720321C311E061F056869;280A04224746495C44;29360B04070D1D334F505651523E;2A232F01554C4D4E45703C59;2B2457586461675A96;2C02270E34082A433D;2D0002072128290801653F3D66;2E3509002B15536C3C;2F000C12182526300F14175B633E;30001A1316624640717D425D6A5F82;31002D194A5E6B4B676D6076;320A042E111B2C06100548413C6F67;33360B0420321C311E061F0568696E;3422034754495C44;35070D1D334F50567051523E;36232F554C4D4E453C59;3724575864613F675A;38350902270E34082A01433D67;39020C07212829080175653D66;3A2B15536C3C;3B12182526300F14175B63727D3E7974;' ]; protected constructor(indexOfName: number | string) { super(God.NAMES, indexOfName); } static fromIndex(index: number | string): God { return new God(God.numeric(index, 'god index')); } static fromName(name: string): God { return new God(name); } next(n: number): God { return God.fromIndex(this.nextIndex(n)); } getLuck(): Luck { return Luck.fromIndex(this.index < 60 ? 0 : 1); } static getDayGods(month: SixtyCycle, day: SixtyCycle): God[] { const l: God[] = []; let index: string = day.getIndex().toString(16).toUpperCase(); if (index.length < 2) { index = '0' + index; } const matcher: RegExpExecArray | null = new RegExp(`;${index}(.[^;]*)`, 'g').exec(God.dayGods[month.getEarthBranch().next(-2).getIndex()]); if (matcher) { const data: string = matcher[1]; for (let i: number = 0, j: number = data.length; i < j; i += 2) { l.push(God.fromIndex(parseInt(data.substring(i, i + 2), 16))); } } return l; } } export class Phase extends LoopTyme { static NAMES: string[] = ['朔月', '既朔月', '蛾眉新月', '蛾眉新月', '蛾眉月', '夕月', '上弦月', '上弦月', '九夜月', '宵月', '宵月', '宵月', '渐盈凸月', '小望月', '望月', '既望月', '立待月', '居待月', '寝待月', '更待月', '渐亏凸月', '下弦月', '下弦月', '有明月', '有明月', '蛾眉残月', '蛾眉残月', '残月', '晓月', '晦月']; protected constructor(indexOfName: number | string) { super(Phase.NAMES, indexOfName); } static fromIndex(index: number | string): Phase { return new Phase(Phase.numeric(index, 'phase index')); } static fromName(name: string): Phase { return new Phase(name); } next(n: number): Phase { return Phase.fromIndex(this.nextIndex(n)); } } export class Sixty extends LoopTyme { static NAMES: string[] = ['上元', '中元', '下元']; protected constructor(indexOfName: number | string) { super(Sixty.NAMES, indexOfName); } static fromIndex(index: number | string): Sixty { return new Sixty(Sixty.numeric(index, 'sixty index')); } static fromName(name: string): Sixty { return new Sixty(name); } next(n: number): Sixty { return Sixty.fromIndex(this.nextIndex(n)); } } export class Sound extends LoopTyme { static NAMES: string[] = ['海中金', '炉中火', '大林木', '路旁土', '剑锋金', '山头火', '涧下水', '城头土', '白蜡金', '杨柳木', '泉中水', '屋上土', '霹雳火', '松柏木', '长流水', '沙中金', '山下火', '平地木', '壁上土', '金箔金', '覆灯火', '天河水', '大驿土', '钗钏金', '桑柘木', '大溪水', '沙中土', '天上火', '石榴木', '大海水']; protected constructor(indexOfName: number | string) { super(Sound.NAMES, indexOfName); } static fromIndex(index: number | string): Sound { return new Sound(Sound.numeric(index, 'sound index')); } static fromName(name: string): Sound { return new Sound(name); } next(n: number): Sound { return Sound.fromIndex(this.nextIndex(n)); } } export class Taboo extends LoopTyme { static NAMES: string[] = ['祭祀', '祈福', '求嗣', '开光', '塑绘', '齐醮', '斋醮', '沐浴', '酬神', '造庙', '祀灶', '焚香', '谢土', '出火', '雕刻', '嫁娶', '订婚', '纳采', '问名', '纳婿', '归宁', '安床', '合帐', '冠笄', '订盟', '进人口', '裁衣', '挽面', '开容', '修坟', '启钻', '破土', '安葬', '立碑', '成服', '除服', '开生坟', '合寿木', '入殓', '移柩', '普渡', '入宅', '安香', '安门', '修造', '起基', '动土', '上梁', '竖柱', '开井开池', '作陂放水', '拆卸', '破屋', '坏垣', '补垣', '伐木做梁', '作灶', '解除', '开柱眼', '穿屏扇架', '盖屋合脊', '开厕', '造仓', '塞穴', '平治道涂', '造桥', '作厕', '筑堤', '开池', '伐木', '开渠', '掘井', '扫舍', '放水', '造屋', '合脊', '造畜稠', '修门', '定磉', '作梁', '修饰垣墙', '架马', '开市', '挂匾', '纳财', '求财', '开仓', '买车', '置产', '雇佣', '出货财', '安机械', '造车器', '经络', '酝酿', '作染', '鼓铸', '造船', '割蜜', '栽种', '取渔', '结网', '牧养', '安碓磑', '习艺', '入学', '理发', '探病', '见贵', '乘船', '渡水', '针灸', '出行', '移徙', '分居', '剃头', '整手足甲', '纳畜', '捕捉', '畋猎', '教牛马', '会亲友', '赴任', '求医', '治病', '词讼', '起基动土', '破屋坏垣', '盖屋', '造仓库', '立券交易', '交易', '立券', '安机', '会友', '求医疗病', '诸事不宜', '馀事勿取', '行丧', '断蚁', '归岫']; protected static dayTaboo: string[] = [ '8319000776262322200C1E1D,06292C2E1F;0F11185C0001092A0D7014692983847B7C2C2E302F802D2B,06454F208A;111852838470795B302F404533802D152B39201E23221D212726,0F2E1F010D29;004023222089,0F29111847;11180001032A0D70795B2C2E302F802D4E152B33714161201F26,52095847;0F17000102061979454F3A15477677,241F8A20;34357C89,7129;1551000403706A454F3A3D771F262322271E1D21,382B415220;0F000102037039297175261F1D21,454F2E156341;00076A54196348767765,7920297115528A0D382B;11180001020439332C2E302F2B5844477515634C1F2721,0F520D19267A29717020;297170192C2E2D2F2B3E363F4C,0F5215632001034720;4C78,297172380D2A2E0F474841;18115C0001702A2C2E2F5283847129795B6375802D154C,1F208A24;1811795B032C2E302F802D4163754C27261E1D2120,010D0F29521F;00401D232289,71290F4720;0F170001020E032A70692C2E302F802D2B0D7129474C201F2322,5211183809615D;0F1811000102062A0D2C2D804B2B672E2F7129,70471F8A20;0007343589,0F71296B7080;175447440D15838477656A49,2B2E1F8A2022;11187129705B79000106032A0D397B6F7C802D2C2B61756627261E0C1D21,0F2E154147;0007385476771548,52061F20;0106111839513A2C2E2D2F8C804B4723221F63,71522920;1118000717161A2C2E3371292B56433D6375363F,0F010347208A;161A7889,292E1F0F3861;11180F00012A0D70795D7B7C39332D2C2E4E4863664C,064F478A20;5452838479195D00012A0D7B7C2C2E3348156366242526201E,0F7129;00262789,292C2E1F2B2F;040318111A17332C15290D200C7A,47450638;0004031A170F11332C2E302F1571292A657677451949,70201D52;007B343589,88;00010670175B71292A152322271E,03637C2B38;04067033392C7161262322271E1D210C,;000715547776,521F;181100012C2E2F1F,0F38;70076A363F,2920;7889,292E1F;0F707B7C00012F75,5220;528403395B2F1E20,0F01;4089,88;02060418110D332C2E415B637566262322271F20,520F;0F181100012C2E7129,5220;7C343589,88;0001020603691817452C2E2D498344,412B6A096338;393589,88;076A48,45752F29384C0F204F612B;000301394F2E154763751F27,0F707A802629710D1920;4F2C2E2B383F443D433663,0F01478A2015;201E27262322,89;0F000102700D335283845329711563,38048A7D4520;6A0339332C20528384531563,29713801000F0C47806B;005089,88;291503000D332E53261F2075,0F5238584F45;003989,88;3435000789,88;150001021745512E443D65262322,2B63387C;394889,88;00036A7415384878,45751F20240F522E834F;00010203332C2E2F1558631F,0F1920707A29712646;0717363F1A2C4F3A67433D8B,71290F010347;', '0007010618111A332D302F15262322271E530270164C,560F7129;003989,88;073918111A17332C2E71292322271F1E20481D45548384,38002F70;700F181126151E20001A7919,;5040262789,0F712903;7911192C2E302F00030401060F1571292A75,707C2052;0079701811072C2E01060F33152627200C7A1A302F4576631F2B,80523829;39343589,88;040370181123220F1326271E2021,2915;262322271E202189,1F45;0001060403232226380F767754,56802015;0070071A010618110F5B52846775,632620;00010607155B5C26271E2021165D83,38470F29;3948007889,;528384530339454F0D297115332E2F637520,0F007058;5283845444360F11756415,2C2F29016B472E2B2038;0039504089,;0F0001022E792D3E75663D19,472063703852292B;0F000102032971152C2E19,4720637038522B;343589,88;0F52838403700D332C29712E1F27201E2322,15450175;00261F23221E201D2189,;003989,88;52838454754C2971150301022E,0F63206A0938268A41;151A83842627202322,580F7003632E1F297C;00394C786F89,0F2E4420;0704031118528384542D2E4E49201F1E1D2127,292B000C;0F706A151E201D528384544466,47010C2E292F2C38;394089,71294709636F7C44;0F0003450D3329712C2E2F1575,528A63705A20587D7C;0F111829711500010370390D332E750C201F,4552832F382B80;0034353989,522E1F;0F1118032A0D545283841A802D2C2E2B71296366774744201F26232221,010900150C;0006261F1E201D212322,0F29381118;0006547677,0F5229151F20;111800010206071979697C67474475664C,0F16298A20;000102071283542627201D210C4C78,29580F2E6352032E1F;00784C793989,0F29702E1F208A;0F03390D332C1929711563261D2E2322,382000521118750C706B;702D155483840F63262720,53292F017D4F38442B2E1F47;4089,030F565A61206B;0F181179005B712980152D4E2A0D533358,5270208A;0776776A742623221F200C211D1E,11180F2F5206802B;00343589,060F52;07565A5283845463756677261F20,010F152961;0007363F8B3989,09292C208A0F;0F11181200171A7919547638,5215201D;181179000607040D03302F5283844F3A45512B1533664C47,090F702E208A;838454151A4C200C1E23221D212726,030F522E1F;0039787989,1F2E20;111871545283842979397B7C69152B2A0D33485324251F1D1E26,6B00702F800C20;0F18110001027939706954528384685D15565A75201E1D26,29032E;00170F79191A6540,712909387C20;00676589,0F20;0F00071A706A717677492923221E202726,80522E1F;343589,0F5220;111800020D041A796933483E5347446563751F1D212026,010F09150C;262322271E201D21,52450F4F;0038262389,5215;040307177938494C,0F262070;', '0F00030102705283842E544779,2920454F754C38;00010275261E0C2322,6303706F0F292E1F;033945302F838475262720,297071000F2E1F38;000102030F7039453319152E2D2F63751F0C1E20,71290D3847;7917155B0001025D,0F522E3820;38394089,0001202B;0F00175058,5D6B80382E;110F0001702C2E7129201F,5206;0007396A48343589,0F20;111800012A0D2C705271292E201F,15386179;3F656477,0F2B712920;11000170792C2E7129,0F52201F;110F00017052792E1F1E,71290D2B20;0001020626232227201E,0F2E03801F;1179302F842627201E,0071292E1F;0001067052842E71291F20,030F384775;79026A17657603,522E201F;004089,0F014720;010206110F452C2E7129095B5226232227201F0C,58804B036B2B38;69687011180F791966762627201E,0352292E80;00077B7C4834353989,295220;00170F332C2E2D2F802952443F26232227201F,15637C38;006526232227201F,89;0403010218111A17332C2E2D2B15713E6575,4538206429;0007030401021811171A0F2E2322271F1E706749528483,202F2938;000102081A158483262322270C1E,700F292E;1A162623227954,0001710F29;00061A161718110F292A0C26271F21797001022F49,47;1516291211020056,063820;3840,0001202B89;0403080618111A16332E2F152A09537919702C5445490D75072B,80632038;0001081811171A160F1571292A26271E20396476452B0D,632E5238;7B34,88;010206040318110F2E292A27200C70072C302F541F392B49,3815;64262322271F2021,0F2F2938;0002070818111A16175B153E445D5452848365647576,2038454F;000701020618111A1752848354230C7027,26203829;000102261E2027,03476F700F2971382E;15391A302F83845475662627201E,0F702E46290047;0F150370002E0D3979528384532971331F1E20,477D;0F0302791566046F,29710D722A38528384202E45;383940,6370018A75202B454F66;3907,88;0F000170390D332E2971152F63751F1E20,52846A38;00397C343548,89;000102030D70332C2E29712F534426201F1E,0F3815;6526232227201F,88;7100030170391959152E2D2F2B,0F201F4F75668A38;0F030102392E15634447001F1E,293845200D7075;00161A5D454F153826201E27,7D0D29;1A454F548384,88;0F00010203700D332E2F1929711552838453261F201E2322,;0F171170792F5B1566770001032C2B802D,29387C2071;50400089,88;5C11180001027170520D2984832B15200C,03802E3863;2E260F27201F,523815292F1A;7B7C343589,520F;00060724232227261F2025,520F157929382F;003F651F0C2027232289,0F29;00076A386563,0F7D8A2066454F52754C;', '00077663,0F29713820;000304080618110F1A2E2D0D3371292A2C302F7566010239454E802B,6320;181117332C2E1526232227201F1E3E,38030F5229;0103040818111A155284262322271E20217A79708330,38472E63;00483F,6338200F;03041A174533302F56795B3E808339528454,700F2920;17262322274050,80387C6B;000F01111A1615292A2627200C2C670279538384543E49,6345;00010618111A16332C2E2F2D27200C07483A450D,15528438;34357B7C,88;002E2F18110F5B3315292A26271F20210C7A70710102393E19,035A;000304111A33152D2E302F71292A5284530770022B,0F634520;1A16170F13152654,3852204F;0018112C2E01040607332D292A09270C2322696870302F47023945,38205280;18111A16175B3315262322271F1E201D215D838454433E363F754551,00030F29;00700F1715262720,472E3863;3F88,2B38200F;030402111A16175B4F3A2B153E0079015D54528483696A51,7006200F;000F1320,63803829;0079181A165B332F2B262322271E2021030469702D4E49712930845D,454F;00030401061A16170F332E71292627200C02696A45514F0D2C2D4E497A,2B;007C343589,88;0F00701784831952712C2E1526271F,03380620;52848353000103297115332E2F19,0F8A514F6A66207545;6A170F19,5845754C201F4F3824;0F000301020D297115332E1F0C,16522026;1545332C2E2F84836375662620,0F0003700D71292B;000102060F17705283797823221E2027,2E7129;3F74397677658988,0F384720;5452848303152F802C2D,2E1F208A7A700F29710C7D;00010F17505840,565A803852838463;0F00030102700D19297115332C2B535448,2E45208A;0F03000102700D29713963451F0C20,528338542F158061;34357B7C89,030F;118384155B20272E1F21,0F0338;0001020607036A5D397C2163664744,0F4E25208A;5483846376656419786A,29803020;0F18110001702C2E71291F0D2B152F2127,52831620;1784832C2E5B26201F,0F010D29;00797084831754,0F2E472D4E1F;000739483F66,0F208A2B;54528384036F796A153E65,712963;0F17795B54838458,52807C38;0F5C111800015B712952841F20,756A25;01067071292C2E1F20,1103150F52;343589,0F715229;0F170070792C2E261F,0403412322;03027011170D332D2C2E2F716152838454,010F201F;6A170F1963766F,5452201F;030102703945802D2C512B7129092322270C7566,112E5283;1A5D453A332C2E2F4B25262322271F201E1D21,000F7047;007984831A160F1719,632E20471D6B;483F89,88;040318111A16175B795452848315302F6563395D,38702920;000F1323222627,2E38290315;010203040618110F3315292A271D200C6339171A712C2E30491E21,7A;0039262322271E201D210C0748766465776A,150F3829;3435,88;007018111A1617192E15382627201F656477,4F09;00030418111617332E2D2F292A52845407020D302B,090F4520;', '528384530003010215392C20,1112180F29560D2E1F7545;004D64547589,0F29;2A0D11180F52848353037039156358332C2E,38200026;00702C2E164C157126271F1E202425363F,29386A032B;005089,032C2E1F;0F00010206030D7129302F79802D7C2B5C4744,11701D20528438;000403110F527079156523221E2027,0129802E1F6B;00384089,15296763;000102060775261F20,71290F7015;1100010206702D804E2B2620,0F52540D;0007397B7C343589,01065220;0776776564,000F293820;00010206111803302F565A802D4E2B881F261E0C,0D0F52;00763989,0F20;110F70528475660D7129,012E1F2026;0001020617385483,030F47202B6B;0039787089,2E1F8A034F206B;0706397B7C794C636A48,520F71294720;02703918110F7919155283756626232227201E,012C2E1F0C;00384089,0F202E157C;5C0001020652835B0E03804B2D4E2B752024210C,292E565A;000103020611187B7C2D4E616439201E0C26,522E4744;000734357B7C3989,0F52832920;88,;0004031811171A5B332C2E155D52,0D292045;0089,090F15;18110F197983842E230C271F1E7A70525463,26202915;00011A1615262322271F1E200C214C,472B0F11;00190F153917701A48,472E1F2003;11037B7C2E2F7129,0F5220;007952151E20,0F2E1F;00384740,0F20;0006522E261F20,0F7129;0F11000170717B,522E1F;007B7C3989,88;076564,0F2920;,88;393589,88;0F03700D33195284835329711563,01260038206B;0F70161715232238838426271F20,7D0352;70504C7889,88;0001030239450D297115332C2E4C,0F54207052843863;110F03706A795215636626271E,0C012F38062C292B;0040395089,88;000103392E54837548,19700F58157A2038;00010203390D3329152C2B751E20,2E1F544753524583;0039343589,88;3F4889,88;000102033911170D3319152E2F0947442627201F,;393489,88;0F0102037039330D5284832971152E1F0C,0026206B;001A1715838444363F261F1E200C2322,0F476B520363;0070784889,0345201F;000102031118396375664819,1D413870208029;0370833F0F6A5215,010D582E1F202C2F5829;00387765504089,0F157C;070039201F0C2789,06030F292F;003926271E20747677642322480C06,2E1F;00073934357B7C89,0F52;073F7765644889,0120;', '0F110001702E2F71291F20,06;110001527B7C2E75,0F20;0F11707129,2E1F20;1811002E1F8384,0F20;0F1A0070153871291F20,7A76;3F6589,88;0F1811700001062E2F1F20,7129;18117915384C,5220;07404826271F1E2089,88;0F00010203700D332E2F192971152B52838453631F20,;00037039041A26271F1E202322,0F2F2C335129452E0D3A;0039343589,88;0F0001020370332E2F0D19297115637566302B2C3979,;528384000103451915332C2E631F2720,29716A0D0F70;653989,88;0F00010203528384157033,752971206B452F2B262E;0F000102700D332C2E297115383F631F20,034756;394889,88;528384530370331929272E2B2F631F1D20,0F156B38;1979,3F2F2E45207D;074048261F202322,0F71454F15000180;0F000102030D70332E3919528384532971152B2F201F0C,;0001020339161745514F2C190F1A152E2D2F304979,;3435073989,88;11180F5C000102030D332C2E195329711563261F202322,5284;5283840001032E1570637566302F391F,0F47297120;39701117302F713819297566,004551152C2E201D1F;0001020370528384631575712D2E4E3E581F1E1D,292C2B45262080;0F83843D363F776424,15462F2C5203297115;3F8B657789,0F2029702E7D;11180F0001020339700D29716375662E1F2620,38155680;03111A171538193E3F,0F632C2E70454F200C;110F1A6A702C2E1952838453712F6375,4520150001;5283845300010670802D2C2E4E155B201F1E232221,380F71296A;0F1118000102030D70332E2C192971153953631F0C262720,52846125;000739343589,0320;18110F3900010203700D3329711563752E1F0C201D,38525D;000102031811392E2D19528384543E4463751F20,152F1A290F;00657689,6B0F52;0001020311180F702E1F7952838468332D6749443E46630C1E1D21,292B20;0F1700707129385C363F3D1F1E232226,80412B202F;00398B7989,0F20;0F111800017C5C2C2E7129,5270153820;0F1118795B65170002195D,52382E8A20;0007711F204840,010F291538;000106025B75712904032D302F382B2A0D801E20,2E1F0F0F;0F1118060300017B7C792E39767566261F20,71298051;000739343589,8A20;074889,06520F38;5283845B79037B7C802D2C2E4E302F2B38493D4463664C1F2021,0F0D7129;63767789,522E0006206B;0F00010206181139702E1F686F6A792D2C304E153375664923221D21,52296B0D80;89,;3F8B6589,1F20;0370110F45510D3371290941614C522623222720,;1966583F6589,88;03700F,79192C2E2D715275262322271F201D2179;0F11700001522E71291F20,2B;0F117B7C2C2E71291F20,5203;00343589,88;', '00343589,7129565A;00060403702C2E4C154947443D651F,0D29;528384530339332E152C2F58631F20,380D000F29;006589,29704720;0F1118175C000301027039450D29332C2E2F15631F,8A5820;0F161A17452F0D33712C2E2B5443633F,150170208A03;70786289,06802E1F;0F0001020370390D332C1929712E157563548384534C,20248A;5B000102073911522C302F3A678C363F33490D482425200C1E2322,0F15382E1F61;00076A74504089,5229702C7D;0F110001708471292E1F20,0338805156;111817000106702C2E71292A0D33802D302F4E2B44,0F522520;0007343589,290F71;0F5B8370000102060403161A494447,386A418A20;11177B7C52842C2E5B1F20,060071292F0F;003889,52201F1D47;000102062A397129797B7C2E1F2425,162F5D2026;0F172C2E387129363F7566512D4E4461,0103475220;008354,06462F2E1F;0F181117795B5C007054292A0D690403332D2C2E66632B3D,8A454F38;030270170F45513A2C71295283842A0D532D24252623222720,155A382E1F;00076A0F3874485040,06707C25;5B71297000010611182A0D39792C2E332D4E80151F202621,52454F38;00077665776489,52830F208A;34357B7C7789,0F29;0F705B0004037C5D15653F1F26,522B4738;181179190E332C2E2D52637566262322271F20,;0076645089,88;0F1100017B7C702E7129,522B;1A38712975,0F20;0026271E20,2F2E1F;18117001061579,712920;0F11707B7C5271291E20,2E1F;0F00074850,8A20;0F1811705200012E71291F20,38;18117000012C2E7129,5220;88,;0F18110001261F20,0352;037B7C2E2F261F20,0F;006389,88;0F030001027039452971150D332C2F6327,20528384;020F11161A17454F2C2E2D302F2B38434C,20700163;003989,88;0F00010D0302703352838453297115632E,208A454F;03027039450D332C2F2D2971528384636626202322,5815;006A5040077448,702B2C0F2F29;0F00030102700D332E2C192971155383846375261F1E20,;0001020370450D332C2E2D152971,0F52838A201D;343589,88;52838454443D65002C2E15495D1F,0F417D712B3863;528384546315332C2E2F26201F2322,0F0D45002971756B;003889,88;393589,88;2C2E2D2B156343364C,0F4729710D708A20036A19;00788B89,0671292E;11180F000152548471702C2E2D4E303348492A156144474C63,8A201F384506;0F0300017039712952542D2C302F80380D2A363F3349483E616320,1118150C1F2E;0F006A385040740717,1F7063;0F1118000102030D70332C2E192971158384535426201E2322,471F;77766564000789,0F52201E8A;', '110001392E1F20,0F7129;00343589,88;0F1152702E2F71291F20,0001;0F1152702E2F71291F20,7A;00385476,521F;0F528400012E7129,0920;363F6526232227201E89,88;0F11700001397129,2E20;0F0001067C1F20,5229;0F705215261E20,012E1F;0F001A651707,565A58202E1F4763;297115030102195283840D332C2E,0F1F5863201D8A;0039077426271F1E20,0F29713852832B63;343589,88;0F03706A4F0D332C528384532E29711563,45007500;0F0370010239332E2C19528384532971156375262720,;003854637519,205D1D1F52151E21;0001020352666A,0F7020262938172F;00261F2322271E200C89,;007083624C,0F38202E7D4F45471F71;0F000102030D332C2E195283845329716375261E2322,;0F033915666A52261E272048,382E2F6329712C01;003989,88;00010203450D3329152C2E2F5375,0F638A6A1D8A38;39006A26201F,0F520D38580629712B;343589,88;528384542E03700F111869565A7566631F1E2021,297138000C;0F1118000102030D70332C2E195283845329711563261F0C20,47457525;00173883546365756619,466115201F701D475224;0F18000102111A1703154F2C2E382D2F807566,7163708A1F207D;5D0007363F232227261E21,037C0F471F20;0F00701A17830E544C5C78,7129632E1F38208A452F;2C2E5B000739337C38802D44484C2425201F1E272621,52297015;0F11185C0370332D152322528384636626271E,2F292C2E1F000106;000F7765,2E1F7C46;111879690001020370396A2E2D528384543E637566,0F380D580F2920;00013974150726271F1E200C,0F06520D297170382B45;34353989,0F20;0F528471295B795D2B155333565A446375661F201E272621,00016B0C41;0F181100010603797B7C802D302F2B6743441F202322,2952477D25;11180F71297000010604032A0D793969302F33802D636675,201F52565A1E;11180F000704030D7C684580302F153867534775,702041;00262322271F1E203F8B65,52290F0380;002C7080305C784C62,2E1F4720;000704036939487C4466,0F70112938;54528384700001020339482D301571565A363F637566,06292B201F8A;005040,522E1F0F2C20;18110001032A0D845B7129302F791533536678,0F208A1F1D;076A7626271F1E20,0D0F29382F2E;7B7C343589,0F70;11180F71297052838454792A0D33802D153853201F1E212627,012F564766;0001067011185B0D332C2E2D712909262322271F200C,0F526325;00195475667689,5229152E20;0004037B7C0F7949