pd_x12 1.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1855) hide show
  1. checksums.yaml +15 -0
  2. data/.gitignore +17 -0
  3. data/.project +13 -0
  4. data/Gemfile +4 -0
  5. data/LICENSE +22 -0
  6. data/README.md +95 -0
  7. data/Rakefile +26 -0
  8. data/example/factory.rb +92 -0
  9. data/example/parse.rb +57 -0
  10. data/init.rb +1 -0
  11. data/lib/x12/base.rb +211 -0
  12. data/lib/x12/composite.rb +37 -0
  13. data/lib/x12/empty.rb +43 -0
  14. data/lib/x12/field.rb +92 -0
  15. data/lib/x12/loop.rb +85 -0
  16. data/lib/x12/parser.rb +146 -0
  17. data/lib/x12/segment.rb +115 -0
  18. data/lib/x12/table.rb +44 -0
  19. data/lib/x12/version.rb +3 -0
  20. data/lib/x12/xmldefinitions.rb +175 -0
  21. data/lib/x12.rb +43 -0
  22. data/misc/270.xml +152 -0
  23. data/misc/270interchange.xml +163 -0
  24. data/misc/271.xml +125 -0
  25. data/misc/835.xml +85 -0
  26. data/misc/837p.xml +256 -0
  27. data/misc/997.xml +55 -0
  28. data/misc/997single.xml +835 -0
  29. data/misc/999.xml +53 -0
  30. data/misc/AAA.xml +31 -0
  31. data/misc/ACD.xml +30 -0
  32. data/misc/ACK.xml +56 -0
  33. data/misc/ACS.xml +31 -0
  34. data/misc/ACT.xml +36 -0
  35. data/misc/AD1.xml +32 -0
  36. data/misc/ADI.xml +31 -0
  37. data/misc/ADJ.xml +44 -0
  38. data/misc/ADT.xml +37 -0
  39. data/misc/ADV.xml +34 -0
  40. data/misc/ADX.xml +31 -0
  41. data/misc/AEI.xml +30 -0
  42. data/misc/AES.xml +32 -0
  43. data/misc/AIN.xml +40 -0
  44. data/misc/AK1.xml +30 -0
  45. data/misc/AK2.xml +30 -0
  46. data/misc/AK3.xml +31 -0
  47. data/misc/AK4.xml +31 -0
  48. data/misc/AK5.xml +33 -0
  49. data/misc/AK9.xml +36 -0
  50. data/misc/AM1.xml +33 -0
  51. data/misc/AMT.xml +30 -0
  52. data/misc/ANI.xml +36 -0
  53. data/misc/AOC.xml +32 -0
  54. data/misc/AOI.xml +40 -0
  55. data/misc/AOL.xml +35 -0
  56. data/misc/AOR.xml +40 -0
  57. data/misc/AP1.xml +40 -0
  58. data/misc/APE.xml +32 -0
  59. data/misc/API.xml +35 -0
  60. data/misc/APR.xml +30 -0
  61. data/misc/ARC.xml +30 -0
  62. data/misc/ARS.xml +32 -0
  63. data/misc/ASI.xml +30 -0
  64. data/misc/ASL.xml +31 -0
  65. data/misc/ASM.xml +30 -0
  66. data/misc/ASO.xml +38 -0
  67. data/misc/AST.xml +38 -0
  68. data/misc/AT1.xml +28 -0
  69. data/misc/AT2.xml +39 -0
  70. data/misc/AT3.xml +34 -0
  71. data/misc/AT4.xml +28 -0
  72. data/misc/AT5.xml +33 -0
  73. data/misc/AT6.xml +30 -0
  74. data/misc/AT7.xml +34 -0
  75. data/misc/AT8.xml +34 -0
  76. data/misc/AT9.xml +35 -0
  77. data/misc/ATA.xml +30 -0
  78. data/misc/ATH.xml +32 -0
  79. data/misc/ATN.xml +33 -0
  80. data/misc/ATR.xml +37 -0
  81. data/misc/ATV.xml +37 -0
  82. data/misc/AVA.xml +29 -0
  83. data/misc/AWD.xml +31 -0
  84. data/misc/AXL.xml +35 -0
  85. data/misc/B1.xml +33 -0
  86. data/misc/B10.xml +36 -0
  87. data/misc/B11.xml +38 -0
  88. data/misc/B12.xml +30 -0
  89. data/misc/B13.xml +29 -0
  90. data/misc/B2.xml +39 -0
  91. data/misc/B2A.xml +29 -0
  92. data/misc/B3.xml +41 -0
  93. data/misc/B3A.xml +29 -0
  94. data/misc/B3B.xml +38 -0
  95. data/misc/B4.xml +40 -0
  96. data/misc/B9.xml +30 -0
  97. data/misc/B9A.xml +28 -0
  98. data/misc/BA1.xml +39 -0
  99. data/misc/BA2.xml +38 -0
  100. data/misc/BAA.xml +33 -0
  101. data/misc/BAK.xml +37 -0
  102. data/misc/BAL.xml +30 -0
  103. data/misc/BAT.xml +31 -0
  104. data/misc/BAU.xml +33 -0
  105. data/misc/BAX.xml +41 -0
  106. data/misc/BBC.xml +29 -0
  107. data/misc/BC.xml +34 -0
  108. data/misc/BCA.xml +42 -0
  109. data/misc/BCD.xml +42 -0
  110. data/misc/BCH.xml +43 -0
  111. data/misc/BCI.xml +35 -0
  112. data/misc/BCM.xml +39 -0
  113. data/misc/BCO.xml +39 -0
  114. data/misc/BCP.xml +40 -0
  115. data/misc/BCQ.xml +34 -0
  116. data/misc/BCS.xml +39 -0
  117. data/misc/BCT.xml +37 -0
  118. data/misc/BCU.xml +34 -0
  119. data/misc/BDD.xml +30 -0
  120. data/misc/BDS.xml +30 -0
  121. data/misc/BEG.xml +39 -0
  122. data/misc/BEN.xml +33 -0
  123. data/misc/BEP.xml +29 -0
  124. data/misc/BFR.xml +40 -0
  125. data/misc/BFS.xml +37 -0
  126. data/misc/BGF.xml +30 -0
  127. data/misc/BGN.xml +36 -0
  128. data/misc/BGP.xml +36 -0
  129. data/misc/BHT.xml +33 -0
  130. data/misc/BIA.xml +33 -0
  131. data/misc/BIG.xml +38 -0
  132. data/misc/BIN.xml +29 -0
  133. data/misc/BIX.xml +38 -0
  134. data/misc/BJF.xml +34 -0
  135. data/misc/BL.xml +44 -0
  136. data/misc/BLI.xml +45 -0
  137. data/misc/BLN.xml +33 -0
  138. data/misc/BLR.xml +30 -0
  139. data/misc/BLS.xml +33 -0
  140. data/misc/BMA.xml +35 -0
  141. data/misc/BMG.xml +30 -0
  142. data/misc/BMM.xml +37 -0
  143. data/misc/BMP.xml +31 -0
  144. data/misc/BMS.xml +36 -0
  145. data/misc/BNR.xml +33 -0
  146. data/misc/BNX.xml +31 -0
  147. data/misc/BOL.xml +38 -0
  148. data/misc/BOR.xml +37 -0
  149. data/misc/BOS.xml +33 -0
  150. data/misc/BOX.xml +42 -0
  151. data/misc/BPA.xml +32 -0
  152. data/misc/BPP.xml +41 -0
  153. data/misc/BPR.xml +48 -0
  154. data/misc/BPT.xml +37 -0
  155. data/misc/BQR.xml +35 -0
  156. data/misc/BQT.xml +38 -0
  157. data/misc/BR.xml +38 -0
  158. data/misc/BRA.xml +34 -0
  159. data/misc/BRC.xml +32 -0
  160. data/misc/BRR.xml +33 -0
  161. data/misc/BSC.xml +31 -0
  162. data/misc/BSD.xml +36 -0
  163. data/misc/BSF.xml +30 -0
  164. data/misc/BSI.xml +36 -0
  165. data/misc/BSN.xml +34 -0
  166. data/misc/BSR.xml +39 -0
  167. data/misc/BSS.xml +38 -0
  168. data/misc/BT1.xml +38 -0
  169. data/misc/BTA.xml +31 -0
  170. data/misc/BTC.xml +39 -0
  171. data/misc/BTI.xml +41 -0
  172. data/misc/BTP.xml +37 -0
  173. data/misc/BTR.xml +35 -0
  174. data/misc/BTS.xml +42 -0
  175. data/misc/BUY.xml +32 -0
  176. data/misc/BVA.xml +52 -0
  177. data/misc/BVB.xml +34 -0
  178. data/misc/BVP.xml +38 -0
  179. data/misc/BVS.xml +39 -0
  180. data/misc/BW.xml +30 -0
  181. data/misc/BX.xml +41 -0
  182. data/misc/C001.xml +43 -0
  183. data/misc/C002.xml +33 -0
  184. data/misc/C003.xml +35 -0
  185. data/misc/C004.xml +32 -0
  186. data/misc/C005.xml +33 -0
  187. data/misc/C006.xml +33 -0
  188. data/misc/C007.xml +38 -0
  189. data/misc/C022.xml +37 -0
  190. data/misc/C023.xml +31 -0
  191. data/misc/C024.xml +33 -0
  192. data/misc/C028.xml +48 -0
  193. data/misc/C030.xml +31 -0
  194. data/misc/C033.xml +30 -0
  195. data/misc/C034.xml +30 -0
  196. data/misc/C035.xml +31 -0
  197. data/misc/C036.xml +33 -0
  198. data/misc/C037.xml +30 -0
  199. data/misc/C040.xml +34 -0
  200. data/misc/C042.xml +30 -0
  201. data/misc/C043.xml +32 -0
  202. data/misc/C045.xml +33 -0
  203. data/misc/C046.xml +33 -0
  204. data/misc/C047.xml +33 -0
  205. data/misc/C048.xml +32 -0
  206. data/misc/C050.xml +40 -0
  207. data/misc/C052.xml +32 -0
  208. data/misc/C053.xml +33 -0
  209. data/misc/C055.xml +36 -0
  210. data/misc/C056.xml +31 -0
  211. data/misc/C057.xml +29 -0
  212. data/misc/C2.xml +34 -0
  213. data/misc/C3.xml +31 -0
  214. data/misc/C4.xml +29 -0
  215. data/misc/C8.xml +31 -0
  216. data/misc/C8C.xml +30 -0
  217. data/misc/C998.xml +29 -0
  218. data/misc/C999.xml +29 -0
  219. data/misc/CA1.xml +29 -0
  220. data/misc/CAD.xml +36 -0
  221. data/misc/CAI.xml +34 -0
  222. data/misc/CAL.xml +43 -0
  223. data/misc/CAS.xml +46 -0
  224. data/misc/CAT.xml +34 -0
  225. data/misc/CB1.xml +29 -0
  226. data/misc/CBS.xml +30 -0
  227. data/misc/CCI.xml +37 -0
  228. data/misc/CD.xml +38 -0
  229. data/misc/CD1.xml +58 -0
  230. data/misc/CD2.xml +35 -0
  231. data/misc/CD3.xml +41 -0
  232. data/misc/CDA.xml +49 -0
  233. data/misc/CDD.xml +41 -0
  234. data/misc/CDI.xml +38 -0
  235. data/misc/CDS.xml +38 -0
  236. data/misc/CED.xml +32 -0
  237. data/misc/CF1.xml +33 -0
  238. data/misc/CF2.xml +37 -0
  239. data/misc/CFI.xml +34 -0
  240. data/misc/CFT.xml +36 -0
  241. data/misc/CGS.xml +32 -0
  242. data/misc/CHB.xml +36 -0
  243. data/misc/CHR.xml +30 -0
  244. data/misc/CI.xml +41 -0
  245. data/misc/CIC.xml +32 -0
  246. data/misc/CID.xml +34 -0
  247. data/misc/CIV.xml +45 -0
  248. data/misc/CL1.xml +31 -0
  249. data/misc/CLD.xml +32 -0
  250. data/misc/CLI.xml +33 -0
  251. data/misc/CLM.xml +48 -0
  252. data/misc/CLP.xml +41 -0
  253. data/misc/CLR.xml +31 -0
  254. data/misc/CM.xml +44 -0
  255. data/misc/CMA.xml +38 -0
  256. data/misc/CMC.xml +29 -0
  257. data/misc/CN1.xml +33 -0
  258. data/misc/COB.xml +31 -0
  259. data/misc/COM.xml +30 -0
  260. data/misc/CON_.xml +30 -0
  261. data/misc/CPR.xml +32 -0
  262. data/misc/CQ.xml +37 -0
  263. data/misc/CR1.xml +37 -0
  264. data/misc/CR2.xml +39 -0
  265. data/misc/CR3.xml +32 -0
  266. data/misc/CR4.xml +56 -0
  267. data/misc/CR5.xml +45 -0
  268. data/misc/CR6.xml +48 -0
  269. data/misc/CR7.xml +30 -0
  270. data/misc/CR8.xml +36 -0
  271. data/misc/CRC.xml +34 -0
  272. data/misc/CRD.xml +31 -0
  273. data/misc/CRI.xml +37 -0
  274. data/misc/CRO.xml +33 -0
  275. data/misc/CRS.xml +47 -0
  276. data/misc/CRT.xml +37 -0
  277. data/misc/CRV.xml +34 -0
  278. data/misc/CS.xml +45 -0
  279. data/misc/CSB.xml +29 -0
  280. data/misc/CSC.xml +36 -0
  281. data/misc/CSD.xml +36 -0
  282. data/misc/CSE.xml +39 -0
  283. data/misc/CSF.xml +30 -0
  284. data/misc/CSH.xml +37 -0
  285. data/misc/CSI.xml +31 -0
  286. data/misc/CSM.xml +30 -0
  287. data/misc/CSS.xml +34 -0
  288. data/misc/CST.xml +31 -0
  289. data/misc/CSU.xml +37 -0
  290. data/misc/CT.xml +30 -0
  291. data/misc/CTB.xml +34 -0
  292. data/misc/CTC.xml +37 -0
  293. data/misc/CTP.xml +38 -0
  294. data/misc/CTT.xml +34 -0
  295. data/misc/CTX.xml +33 -0
  296. data/misc/CUR.xml +48 -0
  297. data/misc/CV.xml +41 -0
  298. data/misc/CYC.xml +33 -0
  299. data/misc/D9.xml +39 -0
  300. data/misc/DAD.xml +42 -0
  301. data/misc/DAI.xml +30 -0
  302. data/misc/DAM.xml +43 -0
  303. data/misc/DB.xml +33 -0
  304. data/misc/DD.xml +37 -0
  305. data/misc/DDI.xml +28 -0
  306. data/misc/DED.xml +36 -0
  307. data/misc/DEF.xml +33 -0
  308. data/misc/DEG.xml +32 -0
  309. data/misc/DEL.xml +32 -0
  310. data/misc/DEP.xml +35 -0
  311. data/misc/DEX.xml +33 -0
  312. data/misc/DFI.xml +31 -0
  313. data/misc/DH.xml +30 -0
  314. data/misc/DIS.xml +33 -0
  315. data/misc/DK.xml +37 -0
  316. data/misc/DL.xml +38 -0
  317. data/misc/DLV.xml +32 -0
  318. data/misc/DM.xml +48 -0
  319. data/misc/DMA.xml +36 -0
  320. data/misc/DMG.xml +38 -0
  321. data/misc/DMI.xml +39 -0
  322. data/misc/DN.xml +31 -0
  323. data/misc/DN1.xml +31 -0
  324. data/misc/DN2.xml +32 -0
  325. data/misc/DOS.xml +34 -0
  326. data/misc/DP.xml +44 -0
  327. data/misc/DPN.xml +31 -0
  328. data/misc/DR.xml +33 -0
  329. data/misc/DRT.xml +33 -0
  330. data/misc/DSB.xml +35 -0
  331. data/misc/DTM.xml +33 -0
  332. data/misc/DTP.xml +30 -0
  333. data/misc/DVI.xml +41 -0
  334. data/misc/E01.xml +31 -0
  335. data/misc/E03.xml +34 -0
  336. data/misc/E1.xml +30 -0
  337. data/misc/E10.xml +32 -0
  338. data/misc/E13.xml +37 -0
  339. data/misc/E20.xml +31 -0
  340. data/misc/E22.xml +39 -0
  341. data/misc/E24.xml +34 -0
  342. data/misc/E30.xml +36 -0
  343. data/misc/E34.xml +31 -0
  344. data/misc/E4.xml +31 -0
  345. data/misc/E40.xml +31 -0
  346. data/misc/E41.xml +31 -0
  347. data/misc/E5.xml +31 -0
  348. data/misc/E6.xml +36 -0
  349. data/misc/E8.xml +29 -0
  350. data/misc/EA.xml +30 -0
  351. data/misc/EB.xml +40 -0
  352. data/misc/EC.xml +33 -0
  353. data/misc/ED.xml +35 -0
  354. data/misc/EDF.xml +38 -0
  355. data/misc/EFI.xml +43 -0
  356. data/misc/EI.xml +33 -0
  357. data/misc/EIA.xml +33 -0
  358. data/misc/ELV.xml +33 -0
  359. data/misc/EM.xml +34 -0
  360. data/misc/EMP.xml +37 -0
  361. data/misc/EMS.xml +42 -0
  362. data/misc/EMT.xml +35 -0
  363. data/misc/ENE.xml +32 -0
  364. data/misc/ENM.xml +35 -0
  365. data/misc/ENR.xml +47 -0
  366. data/misc/ENT.xml +36 -0
  367. data/misc/EQ.xml +31 -0
  368. data/misc/ER.xml +38 -0
  369. data/misc/ERI.xml +36 -0
  370. data/misc/ERP.xml +32 -0
  371. data/misc/ES.xml +33 -0
  372. data/misc/ESI.xml +36 -0
  373. data/misc/ETD.xml +32 -0
  374. data/misc/EXI.xml +35 -0
  375. data/misc/F01.xml +36 -0
  376. data/misc/F02.xml +36 -0
  377. data/misc/F04.xml +37 -0
  378. data/misc/F05.xml +30 -0
  379. data/misc/F07.xml +49 -0
  380. data/misc/F09.xml +39 -0
  381. data/misc/F10.xml +31 -0
  382. data/misc/F11.xml +37 -0
  383. data/misc/F12.xml +35 -0
  384. data/misc/F13.xml +33 -0
  385. data/misc/F14.xml +29 -0
  386. data/misc/F6X.xml +35 -0
  387. data/misc/F9.xml +39 -0
  388. data/misc/FA1.xml +30 -0
  389. data/misc/FA2.xml +29 -0
  390. data/misc/FAA.xml +42 -0
  391. data/misc/FAC.xml +33 -0
  392. data/misc/FBB.xml +34 -0
  393. data/misc/FC.xml +32 -0
  394. data/misc/FCL.xml +32 -0
  395. data/misc/FDA.xml +36 -0
  396. data/misc/FGS.xml +30 -0
  397. data/misc/FH.xml +31 -0
  398. data/misc/FIR.xml +39 -0
  399. data/misc/FIS.xml +31 -0
  400. data/misc/FK.xml +41 -0
  401. data/misc/FNA.xml +33 -0
  402. data/misc/FOB.xml +36 -0
  403. data/misc/FOS.xml +34 -0
  404. data/misc/FPT.xml +29 -0
  405. data/misc/FRM.xml +32 -0
  406. data/misc/FSA.xml +36 -0
  407. data/misc/FST.xml +40 -0
  408. data/misc/FTH.xml +31 -0
  409. data/misc/G01.xml +35 -0
  410. data/misc/G05.xml +35 -0
  411. data/misc/G07.xml +33 -0
  412. data/misc/G08.xml +31 -0
  413. data/misc/G1.xml +30 -0
  414. data/misc/G11.xml +37 -0
  415. data/misc/G12.xml +34 -0
  416. data/misc/G13.xml +33 -0
  417. data/misc/G14.xml +29 -0
  418. data/misc/G15.xml +31 -0
  419. data/misc/G17.xml +41 -0
  420. data/misc/G18.xml +31 -0
  421. data/misc/G19.xml +36 -0
  422. data/misc/G2.xml +29 -0
  423. data/misc/G20.xml +36 -0
  424. data/misc/G21.xml +37 -0
  425. data/misc/G22.xml +32 -0
  426. data/misc/G23.xml +43 -0
  427. data/misc/G24.xml +28 -0
  428. data/misc/G25.xml +30 -0
  429. data/misc/G26.xml +33 -0
  430. data/misc/G27.xml +33 -0
  431. data/misc/G28.xml +33 -0
  432. data/misc/G29.xml +30 -0
  433. data/misc/G3.xml +33 -0
  434. data/misc/G30.xml +29 -0
  435. data/misc/G31.xml +38 -0
  436. data/misc/G32.xml +32 -0
  437. data/misc/G33.xml +28 -0
  438. data/misc/G35.xml +30 -0
  439. data/misc/G36.xml +31 -0
  440. data/misc/G37.xml +30 -0
  441. data/misc/G38.xml +30 -0
  442. data/misc/G39.xml +56 -0
  443. data/misc/G4.xml +33 -0
  444. data/misc/G40.xml +36 -0
  445. data/misc/G42.xml +30 -0
  446. data/misc/G43.xml +31 -0
  447. data/misc/G45.xml +44 -0
  448. data/misc/G46.xml +39 -0
  449. data/misc/G47.xml +29 -0
  450. data/misc/G48.xml +36 -0
  451. data/misc/G49.xml +30 -0
  452. data/misc/G5.xml +44 -0
  453. data/misc/G50.xml +34 -0
  454. data/misc/G51.xml +35 -0
  455. data/misc/G53.xml +28 -0
  456. data/misc/G54.xml +33 -0
  457. data/misc/G55.xml +60 -0
  458. data/misc/G61.xml +32 -0
  459. data/misc/G62.xml +32 -0
  460. data/misc/G63.xml +31 -0
  461. data/misc/G66.xml +34 -0
  462. data/misc/G68.xml +42 -0
  463. data/misc/G69.xml +28 -0
  464. data/misc/G70.xml +37 -0
  465. data/misc/G72.xml +38 -0
  466. data/misc/G73.xml +28 -0
  467. data/misc/G76.xml +37 -0
  468. data/misc/G82.xml +39 -0
  469. data/misc/G83.xml +40 -0
  470. data/misc/G84.xml +30 -0
  471. data/misc/G85.xml +28 -0
  472. data/misc/G86.xml +29 -0
  473. data/misc/G87.xml +33 -0
  474. data/misc/G88.xml +32 -0
  475. data/misc/G89.xml +37 -0
  476. data/misc/G91.xml +29 -0
  477. data/misc/G92.xml +30 -0
  478. data/misc/G93.xml +35 -0
  479. data/misc/G94.xml +29 -0
  480. data/misc/G95.xml +34 -0
  481. data/misc/GA.xml +45 -0
  482. data/misc/GDP.xml +34 -0
  483. data/misc/GE.xml +29 -0
  484. data/misc/GF.xml +36 -0
  485. data/misc/GH.xml +31 -0
  486. data/misc/GID.xml +30 -0
  487. data/misc/GR.xml +49 -0
  488. data/misc/GR2.xml +39 -0
  489. data/misc/GR4.xml +38 -0
  490. data/misc/GR5.xml +32 -0
  491. data/misc/GRI.xml +38 -0
  492. data/misc/GRP.xml +31 -0
  493. data/misc/GS.xml +35 -0
  494. data/misc/GY.xml +42 -0
  495. data/misc/H1.xml +36 -0
  496. data/misc/H2.xml +29 -0
  497. data/misc/H3.xml +32 -0
  498. data/misc/H5.xml +30 -0
  499. data/misc/H6.xml +34 -0
  500. data/misc/HAD.xml +33 -0
  501. data/misc/HC.xml +34 -0
  502. data/misc/HCP.xml +42 -0
  503. data/misc/HCR.xml +31 -0
  504. data/misc/HD.xml +38 -0
  505. data/misc/HI.xml +39 -0
  506. data/misc/HL.xml +31 -0
  507. data/misc/HLH.xml +34 -0
  508. data/misc/HPL.xml +33 -0
  509. data/misc/HS.xml +32 -0
  510. data/misc/HSD.xml +35 -0
  511. data/misc/IC.xml +36 -0
  512. data/misc/ICH.xml +39 -0
  513. data/misc/ICM.xml +33 -0
  514. data/misc/ID.xml +30 -0
  515. data/misc/ID1.xml +61 -0
  516. data/misc/ID2.xml +35 -0
  517. data/misc/ID3.xml +48 -0
  518. data/misc/ID4.xml +36 -0
  519. data/misc/IDB.xml +32 -0
  520. data/misc/IDC.xml +31 -0
  521. data/misc/IEA.xml +29 -0
  522. data/misc/IGI.xml +33 -0
  523. data/misc/III.xml +36 -0
  524. data/misc/IIS.xml +41 -0
  525. data/misc/IK3.xml +30 -0
  526. data/misc/IK4.xml +30 -0
  527. data/misc/IK5.xml +32 -0
  528. data/misc/IM.xml +30 -0
  529. data/misc/IMA.xml +31 -0
  530. data/misc/IMM.xml +33 -0
  531. data/misc/IMP.xml +29 -0
  532. data/misc/IN1.xml +34 -0
  533. data/misc/IN2.xml +30 -0
  534. data/misc/INC.xml +32 -0
  535. data/misc/IND.xml +39 -0
  536. data/misc/INI.xml +30 -0
  537. data/misc/INQ.xml +29 -0
  538. data/misc/INR.xml +30 -0
  539. data/misc/INS.xml +44 -0
  540. data/misc/INT.xml +33 -0
  541. data/misc/INV.xml +34 -0
  542. data/misc/INX.xml +29 -0
  543. data/misc/IRA.xml +30 -0
  544. data/misc/IRP.xml +34 -0
  545. data/misc/IS1.xml +34 -0
  546. data/misc/IS2.xml +44 -0
  547. data/misc/ISA.xml +43 -0
  548. data/misc/ISC.xml +37 -0
  549. data/misc/ISD.xml +31 -0
  550. data/misc/ISI.xml +33 -0
  551. data/misc/ISR.xml +30 -0
  552. data/misc/ISS.xml +35 -0
  553. data/misc/IT1.xml +52 -0
  554. data/misc/IT3.xml +32 -0
  555. data/misc/IT8.xml +54 -0
  556. data/misc/ITA.xml +44 -0
  557. data/misc/ITC.xml +39 -0
  558. data/misc/ITD.xml +42 -0
  559. data/misc/IV1.xml +32 -0
  560. data/misc/JCT.xml +36 -0
  561. data/misc/JID.xml +33 -0
  562. data/misc/JIL.xml +34 -0
  563. data/misc/JIT.xml +29 -0
  564. data/misc/JL.xml +31 -0
  565. data/misc/JS.xml +31 -0
  566. data/misc/K1.xml +29 -0
  567. data/misc/K2.xml +28 -0
  568. data/misc/K3.xml +30 -0
  569. data/misc/L0.xml +42 -0
  570. data/misc/L1.xml +49 -0
  571. data/misc/L10.xml +30 -0
  572. data/misc/L11.xml +32 -0
  573. data/misc/L12.xml +29 -0
  574. data/misc/L13.xml +43 -0
  575. data/misc/L1A.xml +29 -0
  576. data/misc/L3.xml +42 -0
  577. data/misc/L4.xml +33 -0
  578. data/misc/L5.xml +37 -0
  579. data/misc/L7.xml +43 -0
  580. data/misc/L8.xml +38 -0
  581. data/misc/L9.xml +29 -0
  582. data/misc/LAD.xml +41 -0
  583. data/misc/LC.xml +34 -0
  584. data/misc/LC1.xml +39 -0
  585. data/misc/LCD.xml +33 -0
  586. data/misc/LCT.xml +39 -0
  587. data/misc/LDT.xml +31 -0
  588. data/misc/LE.xml +28 -0
  589. data/misc/LEP.xml +31 -0
  590. data/misc/LEQ.xml +36 -0
  591. data/misc/LET.xml +31 -0
  592. data/misc/LFG.xml +33 -0
  593. data/misc/LFH.xml +34 -0
  594. data/misc/LFI.xml +35 -0
  595. data/misc/LH.xml +33 -0
  596. data/misc/LH1.xml +38 -0
  597. data/misc/LH2.xml +40 -0
  598. data/misc/LH3.xml +31 -0
  599. data/misc/LH4.xml +39 -0
  600. data/misc/LH6.xml +31 -0
  601. data/misc/LHE.xml +32 -0
  602. data/misc/LHR.xml +30 -0
  603. data/misc/LHT.xml +30 -0
  604. data/misc/LIC.xml +35 -0
  605. data/misc/LID.xml +36 -0
  606. data/misc/LIE.xml +31 -0
  607. data/misc/LIN.xml +58 -0
  608. data/misc/LM.xml +29 -0
  609. data/misc/LN.xml +38 -0
  610. data/misc/LN1.xml +50 -0
  611. data/misc/LN2.xml +39 -0
  612. data/misc/LOC.xml +51 -0
  613. data/misc/LOD.xml +33 -0
  614. data/misc/LP.xml +34 -0
  615. data/misc/LQ.xml +29 -0
  616. data/misc/LRQ.xml +48 -0
  617. data/misc/LS.xml +28 -0
  618. data/misc/LS1.xml +34 -0
  619. data/misc/LT.xml +31 -0
  620. data/misc/LTE.xml +31 -0
  621. data/misc/LTR.xml +39 -0
  622. data/misc/LUC.xml +31 -0
  623. data/misc/LUI.xml +32 -0
  624. data/misc/LV.xml +29 -0
  625. data/misc/LX.xml +28 -0
  626. data/misc/M0.xml +31 -0
  627. data/misc/M1.xml +39 -0
  628. data/misc/M10.xml +41 -0
  629. data/misc/M11.xml +46 -0
  630. data/misc/M12.xml +38 -0
  631. data/misc/M13.xml +39 -0
  632. data/misc/M14.xml +38 -0
  633. data/misc/M15.xml +43 -0
  634. data/misc/M2.xml +35 -0
  635. data/misc/M20.xml +36 -0
  636. data/misc/M21.xml +42 -0
  637. data/misc/M3.xml +31 -0
  638. data/misc/M7.xml +32 -0
  639. data/misc/M7A.xml +33 -0
  640. data/misc/MAN.xml +33 -0
  641. data/misc/MBL.xml +32 -0
  642. data/misc/MC.xml +32 -0
  643. data/misc/MCD.xml +31 -0
  644. data/misc/MCT.xml +35 -0
  645. data/misc/MEA.xml +39 -0
  646. data/misc/MI.xml +32 -0
  647. data/misc/MI1.xml +30 -0
  648. data/misc/MIA.xml +51 -0
  649. data/misc/MIC.xml +45 -0
  650. data/misc/MIN.xml +43 -0
  651. data/misc/MIR.xml +39 -0
  652. data/misc/MIS.xml +32 -0
  653. data/misc/MIT.xml +31 -0
  654. data/misc/MKS.xml +30 -0
  655. data/misc/MLA.xml +35 -0
  656. data/misc/MLS.xml +31 -0
  657. data/misc/MNC.xml +44 -0
  658. data/misc/MOA.xml +36 -0
  659. data/misc/MPI.xml +34 -0
  660. data/misc/MPP.xml +35 -0
  661. data/misc/MRC.xml +36 -0
  662. data/misc/MS.xml +33 -0
  663. data/misc/MS1.xml +35 -0
  664. data/misc/MS2.xml +31 -0
  665. data/misc/MS3.xml +32 -0
  666. data/misc/MS4.xml +31 -0
  667. data/misc/MS5.xml +32 -0
  668. data/misc/MS6.xml +31 -0
  669. data/misc/MSG.xml +30 -0
  670. data/misc/MSI.xml +29 -0
  671. data/misc/MSS.xml +34 -0
  672. data/misc/MTX.xml +33 -0
  673. data/misc/N1.xml +33 -0
  674. data/misc/N10.xml +40 -0
  675. data/misc/N11.xml +30 -0
  676. data/misc/N12.xml +29 -0
  677. data/misc/N2.xml +29 -0
  678. data/misc/N3.xml +29 -0
  679. data/misc/N4.xml +34 -0
  680. data/misc/N5.xml +36 -0
  681. data/misc/N7.xml +51 -0
  682. data/misc/N7A.xml +36 -0
  683. data/misc/N7B.xml +33 -0
  684. data/misc/N8.xml +38 -0
  685. data/misc/N8A.xml +37 -0
  686. data/misc/N9.xml +34 -0
  687. data/misc/NA.xml +39 -0
  688. data/misc/NCA.xml +32 -0
  689. data/misc/NCD.xml +34 -0
  690. data/misc/NM1.xml +38 -0
  691. data/misc/NTE.xml +29 -0
  692. data/misc/NX1.xml +32 -0
  693. data/misc/NX2.xml +30 -0
  694. data/misc/OBI.xml +33 -0
  695. data/misc/OD.xml +31 -0
  696. data/misc/OI.xml +33 -0
  697. data/misc/OID.xml +38 -0
  698. data/misc/OOI.xml +31 -0
  699. data/misc/OPS.xml +33 -0
  700. data/misc/OPX.xml +32 -0
  701. data/misc/OQS.xml +29 -0
  702. data/misc/ORI.xml +28 -0
  703. data/misc/OTI.xml +44 -0
  704. data/misc/P1.xml +34 -0
  705. data/misc/P2.xml +30 -0
  706. data/misc/P4.xml +32 -0
  707. data/misc/P5.xml +30 -0
  708. data/misc/PAD.xml +32 -0
  709. data/misc/PAI.xml +32 -0
  710. data/misc/PAL.xml +44 -0
  711. data/misc/PAM.xml +42 -0
  712. data/misc/PAS.xml +37 -0
  713. data/misc/PAT.xml +36 -0
  714. data/misc/PBI.xml +35 -0
  715. data/misc/PCL.xml +34 -0
  716. data/misc/PCR.xml +29 -0
  717. data/misc/PCS.xml +38 -0
  718. data/misc/PCT.xml +29 -0
  719. data/misc/PD.xml +37 -0
  720. data/misc/PDD.xml +32 -0
  721. data/misc/PDE.xml +31 -0
  722. data/misc/PDI.xml +31 -0
  723. data/misc/PDL.xml +39 -0
  724. data/misc/PDP.xml +30 -0
  725. data/misc/PDR.xml +31 -0
  726. data/misc/PDS.xml +30 -0
  727. data/misc/PEN.xml +36 -0
  728. data/misc/PER.xml +36 -0
  729. data/misc/PEX.xml +35 -0
  730. data/misc/PI.xml +42 -0
  731. data/misc/PID.xml +36 -0
  732. data/misc/PIN.xml +34 -0
  733. data/misc/PKD.xml +32 -0
  734. data/misc/PKG.xml +33 -0
  735. data/misc/PKL.xml +40 -0
  736. data/misc/PL.xml +33 -0
  737. data/misc/PLA.xml +32 -0
  738. data/misc/PLB.xml +41 -0
  739. data/misc/PLC.xml +29 -0
  740. data/misc/PLD.xml +31 -0
  741. data/misc/PLI.xml +36 -0
  742. data/misc/PM.xml +33 -0
  743. data/misc/PO1.xml +52 -0
  744. data/misc/PO3.xml +35 -0
  745. data/misc/PO4.xml +45 -0
  746. data/misc/POC.xml +54 -0
  747. data/misc/POD.xml +30 -0
  748. data/misc/PPA.xml +33 -0
  749. data/misc/PPD.xml +40 -0
  750. data/misc/PPL.xml +32 -0
  751. data/misc/PPY.xml +35 -0
  752. data/misc/PR.xml +36 -0
  753. data/misc/PR1.xml +40 -0
  754. data/misc/PR2.xml +36 -0
  755. data/misc/PRC.xml +39 -0
  756. data/misc/PRD.xml +38 -0
  757. data/misc/PRF.xml +34 -0
  758. data/misc/PRI.xml +41 -0
  759. data/misc/PRJ.xml +31 -0
  760. data/misc/PRM.xml +40 -0
  761. data/misc/PRR.xml +38 -0
  762. data/misc/PRS.xml +29 -0
  763. data/misc/PRT.xml +31 -0
  764. data/misc/PRV.xml +33 -0
  765. data/misc/PS.xml +41 -0
  766. data/misc/PS1.xml +30 -0
  767. data/misc/PSA.xml +32 -0
  768. data/misc/PSC.xml +52 -0
  769. data/misc/PSD.xml +36 -0
  770. data/misc/PT.xml +38 -0
  771. data/misc/PTD.xml +33 -0
  772. data/misc/PTF.xml +34 -0
  773. data/misc/PTS.xml +38 -0
  774. data/misc/PUN.xml +32 -0
  775. data/misc/PWK.xml +36 -0
  776. data/misc/PYD.xml +32 -0
  777. data/misc/PYM.xml +34 -0
  778. data/misc/PYT.xml +35 -0
  779. data/misc/Q2.xml +43 -0
  780. data/misc/Q3.xml +29 -0
  781. data/misc/Q5.xml +45 -0
  782. data/misc/Q7.xml +30 -0
  783. data/misc/Q8.xml +37 -0
  784. data/misc/QTY.xml +31 -0
  785. data/misc/R1.xml +40 -0
  786. data/misc/R11.xml +34 -0
  787. data/misc/R12.xml +37 -0
  788. data/misc/R13.xml +39 -0
  789. data/misc/R2.xml +40 -0
  790. data/misc/R2A.xml +37 -0
  791. data/misc/R2B.xml +30 -0
  792. data/misc/R2C.xml +31 -0
  793. data/misc/R2D.xml +29 -0
  794. data/misc/R3.xml +39 -0
  795. data/misc/R4.xml +35 -0
  796. data/misc/R9.xml +36 -0
  797. data/misc/RA.xml +37 -0
  798. data/misc/RAB.xml +37 -0
  799. data/misc/RAP.xml +34 -0
  800. data/misc/RB.xml +35 -0
  801. data/misc/RC.xml +36 -0
  802. data/misc/RCD.xml +48 -0
  803. data/misc/RCR.xml +29 -0
  804. data/misc/RD.xml +31 -0
  805. data/misc/RDD.xml +32 -0
  806. data/misc/RDI.xml +32 -0
  807. data/misc/RDM.xml +32 -0
  808. data/misc/RDR.xml +32 -0
  809. data/misc/RDT.xml +33 -0
  810. data/misc/REA.xml +41 -0
  811. data/misc/REC.xml +40 -0
  812. data/misc/RED.xml +33 -0
  813. data/misc/REF.xml +31 -0
  814. data/misc/REL.xml +29 -0
  815. data/misc/REN.xml +34 -0
  816. data/misc/REP.xml +47 -0
  817. data/misc/REQ.xml +29 -0
  818. data/misc/RES.xml +34 -0
  819. data/misc/RET.xml +32 -0
  820. data/misc/RH.xml +30 -0
  821. data/misc/RIC.xml +45 -0
  822. data/misc/RLD.xml +31 -0
  823. data/misc/RLT.xml +39 -0
  824. data/misc/RMR.xml +35 -0
  825. data/misc/RMT.xml +37 -0
  826. data/misc/RO.xml +36 -0
  827. data/misc/RP.xml +36 -0
  828. data/misc/RPA.xml +32 -0
  829. data/misc/RQS.xml +32 -0
  830. data/misc/RRA.xml +29 -0
  831. data/misc/RS.xml +33 -0
  832. data/misc/RSC.xml +31 -0
  833. data/misc/RSD.xml +30 -0
  834. data/misc/RST.xml +29 -0
  835. data/misc/RT.xml +39 -0
  836. data/misc/RT1.xml +35 -0
  837. data/misc/RTE.xml +32 -0
  838. data/misc/RTT.xml +29 -0
  839. data/misc/RU1.xml +36 -0
  840. data/misc/RU2.xml +35 -0
  841. data/misc/RU3.xml +56 -0
  842. data/misc/RYL.xml +31 -0
  843. data/misc/S1.xml +33 -0
  844. data/misc/S2.xml +30 -0
  845. data/misc/S4A.xml +38 -0
  846. data/misc/S5.xml +38 -0
  847. data/misc/S9.xml +35 -0
  848. data/misc/SA.xml +32 -0
  849. data/misc/SAC.xml +43 -0
  850. data/misc/SAD.xml +34 -0
  851. data/misc/SAL.xml +34 -0
  852. data/misc/SB.xml +28 -0
  853. data/misc/SBR.xml +36 -0
  854. data/misc/SBT.xml +30 -0
  855. data/misc/SC.xml +29 -0
  856. data/misc/SCA.xml +34 -0
  857. data/misc/SCD.xml +34 -0
  858. data/misc/SCH.xml +39 -0
  859. data/misc/SCL.xml +37 -0
  860. data/misc/SCM.xml +31 -0
  861. data/misc/SCN.xml +32 -0
  862. data/misc/SCP.xml +31 -0
  863. data/misc/SCR.xml +51 -0
  864. data/misc/SCS.xml +29 -0
  865. data/misc/SCT.xml +38 -0
  866. data/misc/SD1.xml +35 -0
  867. data/misc/SDP.xml +35 -0
  868. data/misc/SDQ.xml +50 -0
  869. data/misc/SE.xml +29 -0
  870. data/misc/SER.xml +38 -0
  871. data/misc/SES.xml +41 -0
  872. data/misc/SFC.xml +29 -0
  873. data/misc/SG.xml +33 -0
  874. data/misc/SHD.xml +41 -0
  875. data/misc/SHI.xml +32 -0
  876. data/misc/SHP.xml +34 -0
  877. data/misc/SHR.xml +29 -0
  878. data/misc/SI.xml +48 -0
  879. data/misc/SID.xml +33 -0
  880. data/misc/SII.xml +34 -0
  881. data/misc/SIN.xml +33 -0
  882. data/misc/SL1.xml +36 -0
  883. data/misc/SLA.xml +35 -0
  884. data/misc/SLI.xml +49 -0
  885. data/misc/SLN.xml +55 -0
  886. data/misc/SMA.xml +32 -0
  887. data/misc/SMB.xml +36 -0
  888. data/misc/SMD.xml +30 -0
  889. data/misc/SMO.xml +34 -0
  890. data/misc/SMR.xml +31 -0
  891. data/misc/SMS.xml +40 -0
  892. data/misc/SN1.xml +35 -0
  893. data/misc/SOI.xml +32 -0
  894. data/misc/SOM.xml +40 -0
  895. data/misc/SP.xml +32 -0
  896. data/misc/SPA.xml +38 -0
  897. data/misc/SPE.xml +31 -0
  898. data/misc/SPI.xml +42 -0
  899. data/misc/SPK.xml +32 -0
  900. data/misc/SPR.xml +36 -0
  901. data/misc/SPS.xml +33 -0
  902. data/misc/SPY.xml +30 -0
  903. data/misc/SR.xml +38 -0
  904. data/misc/SRA.xml +29 -0
  905. data/misc/SRD.xml +47 -0
  906. data/misc/SRE.xml +29 -0
  907. data/misc/SRM.xml +43 -0
  908. data/misc/SRT.xml +40 -0
  909. data/misc/SS.xml +36 -0
  910. data/misc/SSC.xml +35 -0
  911. data/misc/SSD.xml +31 -0
  912. data/misc/SSE.xml +32 -0
  913. data/misc/SSS.xml +36 -0
  914. data/misc/SST.xml +36 -0
  915. data/misc/ST.xml +30 -0
  916. data/misc/STA.xml +35 -0
  917. data/misc/STC.xml +39 -0
  918. data/misc/STP.xml +36 -0
  919. data/misc/STS.xml +32 -0
  920. data/misc/SUM.xml +45 -0
  921. data/misc/SUP.xml +31 -0
  922. data/misc/SV.xml +31 -0
  923. data/misc/SV1.xml +48 -0
  924. data/misc/SV2.xml +37 -0
  925. data/misc/SV3.xml +38 -0
  926. data/misc/SV4.xml +45 -0
  927. data/misc/SV5.xml +34 -0
  928. data/misc/SV6.xml +34 -0
  929. data/misc/SV7.xml +33 -0
  930. data/misc/SVA.xml +30 -0
  931. data/misc/SVC.xml +34 -0
  932. data/misc/SVD.xml +33 -0
  933. data/misc/SW.xml +36 -0
  934. data/misc/T1.xml +36 -0
  935. data/misc/T1002.xml +30 -0
  936. data/misc/T1004.xml +305 -0
  937. data/misc/T1005.xml +107 -0
  938. data/misc/T1006.xml +35 -0
  939. data/misc/T1007.xml +31 -0
  940. data/misc/T1008.xml +58 -0
  941. data/misc/T1009.xml +116 -0
  942. data/misc/T1012.xml +53 -0
  943. data/misc/T1013.xml +113 -0
  944. data/misc/T1015.xml +33 -0
  945. data/misc/T1016.xml +33 -0
  946. data/misc/T1017.xml +82 -0
  947. data/misc/T1019.xml +30 -0
  948. data/misc/T102.xml +32 -0
  949. data/misc/T1020.xml +30 -0
  950. data/misc/T1023.xml +31 -0
  951. data/misc/T1025.xml +30 -0
  952. data/misc/T1026.xml +34 -0
  953. data/misc/T1029.xml +68 -0
  954. data/misc/T103.2.xml +84 -0
  955. data/misc/T1030.xml +41 -0
  956. data/misc/T1031.xml +40 -0
  957. data/misc/T1032.xml +75 -0
  958. data/misc/T1033.xml +36 -0
  959. data/misc/T104.xml +31 -0
  960. data/misc/T1042.xml +32 -0
  961. data/misc/T1044.xml +41 -0
  962. data/misc/T1045.xml +32 -0
  963. data/misc/T1046.xml +34 -0
  964. data/misc/T1047.xml +40 -0
  965. data/misc/T1048.xml +36 -0
  966. data/misc/T1053.xml +29 -0
  967. data/misc/T1054.xml +30 -0
  968. data/misc/T1062.xml +47 -0
  969. data/misc/T1065.xml +43 -0
  970. data/misc/T1066.xml +45 -0
  971. data/misc/T1067.xml +39 -0
  972. data/misc/T1068.xml +34 -0
  973. data/misc/T1069.xml +181 -0
  974. data/misc/T107.xml +64 -0
  975. data/misc/T1070.xml +42 -0
  976. data/misc/T1071.xml +104 -0
  977. data/misc/T1072.xml +31 -0
  978. data/misc/T1073.xml +31 -0
  979. data/misc/T1074.xml +101 -0
  980. data/misc/T1075.xml +40 -0
  981. data/misc/T1076.xml +31 -0
  982. data/misc/T1077.xml +31 -0
  983. data/misc/T1078.xml +43 -0
  984. data/misc/T1079.xml +31 -0
  985. data/misc/T108.xml +59 -0
  986. data/misc/T1080.xml +31 -0
  987. data/misc/T1081.xml +72 -0
  988. data/misc/T1082.xml +48 -0
  989. data/misc/T1083.xml +76 -0
  990. data/misc/T1084.xml +29 -0
  991. data/misc/T1085.xml +58 -0
  992. data/misc/T1086.xml +34 -0
  993. data/misc/T1089.xml +98 -0
  994. data/misc/T1090.xml +30 -0
  995. data/misc/T1091.xml +39 -0
  996. data/misc/T1093.xml +45 -0
  997. data/misc/T1097.xml +31 -0
  998. data/misc/T1098.xml +30 -0
  999. data/misc/T1099.xml +31 -0
  1000. data/misc/T11.xml +47 -0
  1001. data/misc/T110.xml +47 -0
  1002. data/misc/T1100.xml +36 -0
  1003. data/misc/T1101.xml +34 -0
  1004. data/misc/T1102.xml +30 -0
  1005. data/misc/T1103.xml +35 -0
  1006. data/misc/T1104.xml +49 -0
  1007. data/misc/T1105.xml +32 -0
  1008. data/misc/T1106.xml +101 -0
  1009. data/misc/T1107.xml +43 -0
  1010. data/misc/T1108.xml +39 -0
  1011. data/misc/T1109.xml +50 -0
  1012. data/misc/T1113.xml +43 -0
  1013. data/misc/T1122.xml +34 -0
  1014. data/misc/T1123.xml +46 -0
  1015. data/misc/T1127.xml +60 -0
  1016. data/misc/T1129.xml +184 -0
  1017. data/misc/T1130.xml +29 -0
  1018. data/misc/T1131.xml +120 -0
  1019. data/misc/T1132.xml +68 -0
  1020. data/misc/T1133.xml +112 -0
  1021. data/misc/T1134.xml +36 -0
  1022. data/misc/T1135.xml +40 -0
  1023. data/misc/T1136.xml +447 -0
  1024. data/misc/T1138.xml +33 -0
  1025. data/misc/T1139.xml +42 -0
  1026. data/misc/T1140.xml +32 -0
  1027. data/misc/T1141.xml +43 -0
  1028. data/misc/T1142.xml +65 -0
  1029. data/misc/T1143.xml +36 -0
  1030. data/misc/T1146.xml +33 -0
  1031. data/misc/T1147.xml +47 -0
  1032. data/misc/T115.xml +60 -0
  1033. data/misc/T1150.xml +30 -0
  1034. data/misc/T1152.xml +30 -0
  1035. data/misc/T1153.xml +41 -0
  1036. data/misc/T1154.xml +31 -0
  1037. data/misc/T1156.xml +38 -0
  1038. data/misc/T1157.xml +31 -0
  1039. data/misc/T1159.xml +56 -0
  1040. data/misc/T1160.xml +41 -0
  1041. data/misc/T1161.xml +57 -0
  1042. data/misc/T1162.xml +35 -0
  1043. data/misc/T1163.xml +35 -0
  1044. data/misc/T1164.xml +36 -0
  1045. data/misc/T1165.xml +30 -0
  1046. data/misc/T1166.xml +77 -0
  1047. data/misc/T1168.xml +43 -0
  1048. data/misc/T1172.xml +109 -0
  1049. data/misc/T1173.xml +46 -0
  1050. data/misc/T1176.xml +97 -0
  1051. data/misc/T1179.xml +29 -0
  1052. data/misc/T1181.xml +46 -0
  1053. data/misc/T1185.xml +48 -0
  1054. data/misc/T1186.xml +144 -0
  1055. data/misc/T1187.xml +60 -0
  1056. data/misc/T1188.xml +144 -0
  1057. data/misc/T1189.xml +33 -0
  1058. data/misc/T1193.xml +61 -0
  1059. data/misc/T1196.xml +189 -0
  1060. data/misc/T1197.xml +46 -0
  1061. data/misc/T1198.xml +30 -0
  1062. data/misc/T1199.xml +32 -0
  1063. data/misc/T120.xml +31 -0
  1064. data/misc/T1201.xml +37 -0
  1065. data/misc/T1202.xml +32 -0
  1066. data/misc/T1203.xml +143 -0
  1067. data/misc/T1205.xml +79 -0
  1068. data/misc/T1207.xml +45 -0
  1069. data/misc/T1209.xml +34 -0
  1070. data/misc/T121.xml +52 -0
  1071. data/misc/T1211.xml +35 -0
  1072. data/misc/T1212.xml +32 -0
  1073. data/misc/T1213.xml +40 -0
  1074. data/misc/T1215.xml +32 -0
  1075. data/misc/T1216.xml +33 -0
  1076. data/misc/T1218.xml +32 -0
  1077. data/misc/T1219.xml +38 -0
  1078. data/misc/T122.xml +204 -0
  1079. data/misc/T1220.xml +30 -0
  1080. data/misc/T1221.xml +53 -0
  1081. data/misc/T1222.xml +38 -0
  1082. data/misc/T1223.xml +35 -0
  1083. data/misc/T1224.xml +62 -0
  1084. data/misc/T1225.xml +39 -0
  1085. data/misc/T1226.xml +43 -0
  1086. data/misc/T1227.xml +34 -0
  1087. data/misc/T1229.xml +32 -0
  1088. data/misc/T1230.xml +87 -0
  1089. data/misc/T1231.xml +38 -0
  1090. data/misc/T1232.xml +50 -0
  1091. data/misc/T1233.xml +49 -0
  1092. data/misc/T1234.xml +31 -0
  1093. data/misc/T1236.xml +31 -0
  1094. data/misc/T1237.xml +32 -0
  1095. data/misc/T1238.xml +30 -0
  1096. data/misc/T1239.xml +36 -0
  1097. data/misc/T1240.xml +57 -0
  1098. data/misc/T1241.xml +36 -0
  1099. data/misc/T1246.xml +30 -0
  1100. data/misc/T125.xml +47 -0
  1101. data/misc/T1250.xml +68 -0
  1102. data/misc/T1254.xml +41 -0
  1103. data/misc/T1257.xml +52 -0
  1104. data/misc/T1262.xml +98 -0
  1105. data/misc/T1264.xml +59 -0
  1106. data/misc/T1265.xml +34 -0
  1107. data/misc/T1266.xml +43 -0
  1108. data/misc/T1267.xml +33 -0
  1109. data/misc/T1268.xml +30 -0
  1110. data/misc/T1270.xml +917 -0
  1111. data/misc/T1273.xml +30 -0
  1112. data/misc/T1275.xml +31 -0
  1113. data/misc/T1277.xml +31 -0
  1114. data/misc/T1278.xml +29 -0
  1115. data/misc/T128.xml +1712 -0
  1116. data/misc/T1280.xml +43 -0
  1117. data/misc/T1292.xml +41 -0
  1118. data/misc/T1293.xml +56 -0
  1119. data/misc/T1294.xml +41 -0
  1120. data/misc/T1295.xml +55 -0
  1121. data/misc/T1297.xml +33 -0
  1122. data/misc/T1300.xml +1116 -0
  1123. data/misc/T1303.xml +35 -0
  1124. data/misc/T1304.xml +37 -0
  1125. data/misc/T1307.xml +216 -0
  1126. data/misc/T1308.xml +38 -0
  1127. data/misc/T1309.xml +144 -0
  1128. data/misc/T1310.xml +30 -0
  1129. data/misc/T1311.xml +38 -0
  1130. data/misc/T1312.xml +30 -0
  1131. data/misc/T1316.xml +31 -0
  1132. data/misc/T1317.xml +33 -0
  1133. data/misc/T1319.xml +37 -0
  1134. data/misc/T132.xml +33 -0
  1135. data/misc/T1320.xml +31 -0
  1136. data/misc/T1321.xml +1327 -0
  1137. data/misc/T1322.xml +41 -0
  1138. data/misc/T1327.xml +31 -0
  1139. data/misc/T1329.xml +37 -0
  1140. data/misc/T133.xml +50 -0
  1141. data/misc/T1330.xml +100 -0
  1142. data/misc/T1332.xml +29 -0
  1143. data/misc/T1333.xml +33 -0
  1144. data/misc/T1335.xml +31 -0
  1145. data/misc/T1336.xml +74 -0
  1146. data/misc/T1337.xml +35 -0
  1147. data/misc/T1338.xml +44 -0
  1148. data/misc/T1340.xml +30 -0
  1149. data/misc/T1342.xml +34 -0
  1150. data/misc/T1343.xml +74 -0
  1151. data/misc/T1344.xml +30 -0
  1152. data/misc/T1345.xml +36 -0
  1153. data/misc/T1346.xml +30 -0
  1154. data/misc/T1347.xml +31 -0
  1155. data/misc/T1348.xml +33 -0
  1156. data/misc/T1349.xml +34 -0
  1157. data/misc/T1350.xml +30 -0
  1158. data/misc/T1351.xml +32 -0
  1159. data/misc/T1355.xml +35 -0
  1160. data/misc/T1356.xml +31 -0
  1161. data/misc/T1357.xml +35 -0
  1162. data/misc/T1358.xml +29 -0
  1163. data/misc/T1359.xml +31 -0
  1164. data/misc/T1360.xml +34 -0
  1165. data/misc/T1361.xml +43 -0
  1166. data/misc/T1362.xml +33 -0
  1167. data/misc/T1363.xml +33 -0
  1168. data/misc/T1364.xml +35 -0
  1169. data/misc/T1365.xml +210 -0
  1170. data/misc/T1366.xml +37 -0
  1171. data/misc/T1367.xml +55 -0
  1172. data/misc/T1368.xml +31 -0
  1173. data/misc/T1369.xml +34 -0
  1174. data/misc/T1370.xml +37 -0
  1175. data/misc/T1373.xml +41 -0
  1176. data/misc/T1376.xml +55 -0
  1177. data/misc/T1378.xml +36 -0
  1178. data/misc/T1379.xml +49 -0
  1179. data/misc/T1382.xml +32 -0
  1180. data/misc/T1383.xml +45 -0
  1181. data/misc/T1384.xml +42 -0
  1182. data/misc/T1387.xml +61 -0
  1183. data/misc/T139.xml +40 -0
  1184. data/misc/T1390.xml +66 -0
  1185. data/misc/T1393.xml +31 -0
  1186. data/misc/T1395.xml +35 -0
  1187. data/misc/T1396.xml +30 -0
  1188. data/misc/T1398.xml +68 -0
  1189. data/misc/T1401.xml +44 -0
  1190. data/misc/T1402.xml +56 -0
  1191. data/misc/T1403.xml +30 -0
  1192. data/misc/T1404.xml +29 -0
  1193. data/misc/T1407.xml +29 -0
  1194. data/misc/T1408.xml +30 -0
  1195. data/misc/T1413.xml +30 -0
  1196. data/misc/T1420.xml +41 -0
  1197. data/misc/T1422.xml +32 -0
  1198. data/misc/T1423.xml +89 -0
  1199. data/misc/T1425.xml +36 -0
  1200. data/misc/T1426.xml +43 -0
  1201. data/misc/T1428.xml +29 -0
  1202. data/misc/T1429.xml +76 -0
  1203. data/misc/T143.xml +341 -0
  1204. data/misc/T1431.xml +33 -0
  1205. data/misc/T1432.xml +51 -0
  1206. data/misc/T1434.xml +34 -0
  1207. data/misc/T1439.xml +37 -0
  1208. data/misc/T146.xml +58 -0
  1209. data/misc/T1465.xml +48 -0
  1210. data/misc/T1466.xml +49 -0
  1211. data/misc/T1468.xml +64 -0
  1212. data/misc/T1469.xml +33 -0
  1213. data/misc/T147.xml +62 -0
  1214. data/misc/T1473.xml +42 -0
  1215. data/misc/T1476.xml +38 -0
  1216. data/misc/T1484.xml +37 -0
  1217. data/misc/T1485.xml +29 -0
  1218. data/misc/T1487.xml +58 -0
  1219. data/misc/T1488.xml +44 -0
  1220. data/misc/T1489.xml +39 -0
  1221. data/misc/T1491.xml +30 -0
  1222. data/misc/T1492.xml +37 -0
  1223. data/misc/T1493.xml +35 -0
  1224. data/misc/T1496.xml +81 -0
  1225. data/misc/T1499.xml +29 -0
  1226. data/misc/T150.xml +1125 -0
  1227. data/misc/T1511.xml +34 -0
  1228. data/misc/T1514.xml +41 -0
  1229. data/misc/T152.xml +577 -0
  1230. data/misc/T1520.xml +52 -0
  1231. data/misc/T1521.xml +41 -0
  1232. data/misc/T1522.xml +52 -0
  1233. data/misc/T1523.xml +35 -0
  1234. data/misc/T1525.xml +34 -0
  1235. data/misc/T1526.xml +32 -0
  1236. data/misc/T1527.xml +33 -0
  1237. data/misc/T1540.xml +31 -0
  1238. data/misc/T1543.xml +29 -0
  1239. data/misc/T1546.xml +32 -0
  1240. data/misc/T1549.xml +34 -0
  1241. data/misc/T1550.xml +31 -0
  1242. data/misc/T1552.xml +41 -0
  1243. data/misc/T1553.xml +41 -0
  1244. data/misc/T1554.xml +47 -0
  1245. data/misc/T1555.xml +31 -0
  1246. data/misc/T1556.xml +30 -0
  1247. data/misc/T1557.xml +32 -0
  1248. data/misc/T1558.xml +31 -0
  1249. data/misc/T1559.xml +50 -0
  1250. data/misc/T1560.xml +38 -0
  1251. data/misc/T1561.xml +29 -0
  1252. data/misc/T157.xml +206 -0
  1253. data/misc/T1570.xml +35 -0
  1254. data/misc/T1572.xml +30 -0
  1255. data/misc/T1574.xml +34 -0
  1256. data/misc/T1575.xml +33 -0
  1257. data/misc/T1576.xml +30 -0
  1258. data/misc/T1577.xml +30 -0
  1259. data/misc/T1578.xml +36 -0
  1260. data/misc/T1579.xml +30 -0
  1261. data/misc/T1585.xml +33 -0
  1262. data/misc/T1588.xml +47 -0
  1263. data/misc/T1590.xml +151 -0
  1264. data/misc/T1591.xml +159 -0
  1265. data/misc/T1592.xml +60 -0
  1266. data/misc/T1594.xml +69 -0
  1267. data/misc/T1595.xml +42 -0
  1268. data/misc/T1596.xml +82 -0
  1269. data/misc/T1599.xml +151 -0
  1270. data/misc/T16.xml +33 -0
  1271. data/misc/T160.xml +31 -0
  1272. data/misc/T1600.xml +36 -0
  1273. data/misc/T1601.xml +39 -0
  1274. data/misc/T1602.xml +59 -0
  1275. data/misc/T1606.xml +39 -0
  1276. data/misc/T1607.xml +47 -0
  1277. data/misc/T1609.xml +51 -0
  1278. data/misc/T1610.xml +31 -0
  1279. data/misc/T1611.xml +38 -0
  1280. data/misc/T1612.xml +32 -0
  1281. data/misc/T1617.xml +31 -0
  1282. data/misc/T1619.xml +30 -0
  1283. data/misc/T1620.xml +49 -0
  1284. data/misc/T1621.xml +29 -0
  1285. data/misc/T1622.xml +35 -0
  1286. data/misc/T1626.xml +30 -0
  1287. data/misc/T1627.xml +29 -0
  1288. data/misc/T1629.xml +41 -0
  1289. data/misc/T163.xml +49 -0
  1290. data/misc/T1630.xml +61 -0
  1291. data/misc/T1631.xml +44 -0
  1292. data/misc/T1632.xml +96 -0
  1293. data/misc/T1633.xml +32 -0
  1294. data/misc/T1634.xml +128 -0
  1295. data/misc/T1635.xml +39 -0
  1296. data/misc/T1636.xml +54 -0
  1297. data/misc/T1637.xml +29 -0
  1298. data/misc/T1638.xml +57 -0
  1299. data/misc/T1642.xml +37 -0
  1300. data/misc/T1644.xml +34 -0
  1301. data/misc/T1650.xml +73 -0
  1302. data/misc/T1651.xml +111 -0
  1303. data/misc/T1652.xml +36 -0
  1304. data/misc/T1656.xml +31 -0
  1305. data/misc/T1657.xml +30 -0
  1306. data/misc/T1658.xml +34 -0
  1307. data/misc/T1675.xml +31 -0
  1308. data/misc/T1678.xml +34 -0
  1309. data/misc/T1679.xml +30 -0
  1310. data/misc/T1680.xml +30 -0
  1311. data/misc/T1681.xml +43 -0
  1312. data/misc/T1685.xml +30 -0
  1313. data/misc/T1691.xml +81 -0
  1314. data/misc/T1693.xml +28 -0
  1315. data/misc/T1698.xml +30 -0
  1316. data/misc/T1699.xml +30 -0
  1317. data/misc/T1701.xml +30 -0
  1318. data/misc/T1703.xml +32 -0
  1319. data/misc/T1706.xml +33 -0
  1320. data/misc/T1713.xml +39 -0
  1321. data/misc/T1714.xml +40 -0
  1322. data/misc/T1719.xml +31 -0
  1323. data/misc/T1720.xml +46 -0
  1324. data/misc/T1721.xml +67 -0
  1325. data/misc/T1722.xml +38 -0
  1326. data/misc/T1727.xml +30 -0
  1327. data/misc/T1729.xml +48 -0
  1328. data/misc/T1730.xml +37 -0
  1329. data/misc/T1731.xml +40 -0
  1330. data/misc/T176.xml +70 -0
  1331. data/misc/T181.xml +75 -0
  1332. data/misc/T184.xml +43 -0
  1333. data/misc/T187.xml +79 -0
  1334. data/misc/T188.xml +35 -0
  1335. data/misc/T190.xml +29 -0
  1336. data/misc/T192.xml +30 -0
  1337. data/misc/T195.xml +33 -0
  1338. data/misc/T197.xml +34 -0
  1339. data/misc/T199.xml +31 -0
  1340. data/misc/T2.xml +39 -0
  1341. data/misc/T201.xml +39 -0
  1342. data/misc/T202.xml +66 -0
  1343. data/misc/T208.xml +41 -0
  1344. data/misc/T210.xml +29 -0
  1345. data/misc/T211.xml +161 -0
  1346. data/misc/T214.xml +31 -0
  1347. data/misc/T216.xml +28 -0
  1348. data/misc/T221.xml +74 -0
  1349. data/misc/T226.xml +29 -0
  1350. data/misc/T23.xml +53 -0
  1351. data/misc/T231.xml +42 -0
  1352. data/misc/T235.xml +544 -0
  1353. data/misc/T236.xml +194 -0
  1354. data/misc/T240.xml +46 -0
  1355. data/misc/T241.xml +36 -0
  1356. data/misc/T242.xml +35 -0
  1357. data/misc/T246.xml +86 -0
  1358. data/misc/T248.xml +34 -0
  1359. data/misc/T249.xml +32 -0
  1360. data/misc/T253.xml +33 -0
  1361. data/misc/T256.xml +48 -0
  1362. data/misc/T257.xml +37 -0
  1363. data/misc/T259.xml +48 -0
  1364. data/misc/T261.xml +44 -0
  1365. data/misc/T262.xml +37 -0
  1366. data/misc/T263.xml +48 -0
  1367. data/misc/T271.xml +29 -0
  1368. data/misc/T272.xml +29 -0
  1369. data/misc/T283.xml +31 -0
  1370. data/misc/T284.xml +93 -0
  1371. data/misc/T286.xml +37 -0
  1372. data/misc/T287.xml +30 -0
  1373. data/misc/T288.xml +34 -0
  1374. data/misc/T290.xml +51 -0
  1375. data/misc/T291.xml +30 -0
  1376. data/misc/T292.xml +29 -0
  1377. data/misc/T293.xml +30 -0
  1378. data/misc/T295.xml +36 -0
  1379. data/misc/T3.xml +34 -0
  1380. data/misc/T304.xml +138 -0
  1381. data/misc/T305.xml +50 -0
  1382. data/misc/T306.xml +347 -0
  1383. data/misc/T308.xml +28 -0
  1384. data/misc/T309.xml +209 -0
  1385. data/misc/T311.xml +32 -0
  1386. data/misc/T312.xml +32 -0
  1387. data/misc/T313.xml +37 -0
  1388. data/misc/T321.xml +35 -0
  1389. data/misc/T322.xml +32 -0
  1390. data/misc/T33.xml +34 -0
  1391. data/misc/T331.xml +49 -0
  1392. data/misc/T333.xml +44 -0
  1393. data/misc/T334.xml +30 -0
  1394. data/misc/T335.xml +52 -0
  1395. data/misc/T336.xml +104 -0
  1396. data/misc/T340.xml +153 -0
  1397. data/misc/T344.xml +87 -0
  1398. data/misc/T345.xml +59 -0
  1399. data/misc/T346.xml +111 -0
  1400. data/misc/T349.xml +30 -0
  1401. data/misc/T353.xml +93 -0
  1402. data/misc/T355.xml +831 -0
  1403. data/misc/T363.xml +376 -0
  1404. data/misc/T365.xml +69 -0
  1405. data/misc/T366.xml +265 -0
  1406. data/misc/T368.xml +129 -0
  1407. data/misc/T371.xml +57 -0
  1408. data/misc/T372.xml +29 -0
  1409. data/misc/T374.xml +1283 -0
  1410. data/misc/T375.xml +106 -0
  1411. data/misc/T377.xml +31 -0
  1412. data/misc/T378.xml +39 -0
  1413. data/misc/T379.xml +36 -0
  1414. data/misc/T381.xml +44 -0
  1415. data/misc/T39.xml +35 -0
  1416. data/misc/T392.xml +30 -0
  1417. data/misc/T393.xml +44 -0
  1418. data/misc/T399.xml +32 -0
  1419. data/misc/T40.xml +164 -0
  1420. data/misc/T400.xml +39 -0
  1421. data/misc/T407.xml +31 -0
  1422. data/misc/T412.xml +42 -0
  1423. data/misc/T422.xml +103 -0
  1424. data/misc/T423.xml +34 -0
  1425. data/misc/T426.xml +508 -0
  1426. data/misc/T432.xml +166 -0
  1427. data/misc/T433.xml +31 -0
  1428. data/misc/T436.xml +33 -0
  1429. data/misc/T437.xml +28 -0
  1430. data/misc/T441.xml +61 -0
  1431. data/misc/T444.xml +33 -0
  1432. data/misc/T445.xml +37 -0
  1433. data/misc/T448.xml +43 -0
  1434. data/misc/T455.xml +29 -0
  1435. data/misc/T456.xml +31 -0
  1436. data/misc/T460.xml +40 -0
  1437. data/misc/T461.xml +30 -0
  1438. data/misc/T465.xml +28 -0
  1439. data/misc/T47.xml +29 -0
  1440. data/misc/T473.xml +40 -0
  1441. data/misc/T478.xml +29 -0
  1442. data/misc/T479.xml +288 -0
  1443. data/misc/T48.xml +31 -0
  1444. data/misc/T480.xml +72 -0
  1445. data/misc/T481.xml +30 -0
  1446. data/misc/T482.xml +36 -0
  1447. data/misc/T483.xml +32 -0
  1448. data/misc/T484.xml +32 -0
  1449. data/misc/T485.xml +38 -0
  1450. data/misc/T486.xml +35 -0
  1451. data/misc/T487.xml +33 -0
  1452. data/misc/T491.xml +31 -0
  1453. data/misc/T501.xml +44 -0
  1454. data/misc/T503.xml +30 -0
  1455. data/misc/T506.xml +32 -0
  1456. data/misc/T51.xml +29 -0
  1457. data/misc/T511.xml +36 -0
  1458. data/misc/T512.xml +31 -0
  1459. data/misc/T514.xml +40 -0
  1460. data/misc/T516.xml +31 -0
  1461. data/misc/T519.xml +33 -0
  1462. data/misc/T52.xml +55 -0
  1463. data/misc/T521.xml +84 -0
  1464. data/misc/T522.xml +1767 -0
  1465. data/misc/T529.xml +43 -0
  1466. data/misc/T533.xml +31 -0
  1467. data/misc/T534.xml +34 -0
  1468. data/misc/T535.xml +33 -0
  1469. data/misc/T536.xml +40 -0
  1470. data/misc/T537.xml +29 -0
  1471. data/misc/T538.xml +36 -0
  1472. data/misc/T54.xml +36 -0
  1473. data/misc/T544.xml +29 -0
  1474. data/misc/T545.xml +36 -0
  1475. data/misc/T546.xml +208 -0
  1476. data/misc/T547.xml +47 -0
  1477. data/misc/T548.xml +86 -0
  1478. data/misc/T558.xml +37 -0
  1479. data/misc/T559.xml +218 -0
  1480. data/misc/T56.xml +46 -0
  1481. data/misc/T560.xml +196 -0
  1482. data/misc/T562.xml +74 -0
  1483. data/misc/T563.xml +83 -0
  1484. data/misc/T566.xml +36 -0
  1485. data/misc/T568.xml +34 -0
  1486. data/misc/T569.xml +73 -0
  1487. data/misc/T570.xml +29 -0
  1488. data/misc/T571.xml +29 -0
  1489. data/misc/T572.xml +32 -0
  1490. data/misc/T575.xml +28 -0
  1491. data/misc/T578.xml +45 -0
  1492. data/misc/T579.xml +36 -0
  1493. data/misc/T580.xml +34 -0
  1494. data/misc/T584.xml +117 -0
  1495. data/misc/T585.xml +46 -0
  1496. data/misc/T587.xml +42 -0
  1497. data/misc/T590.xml +30 -0
  1498. data/misc/T591.xml +81 -0
  1499. data/misc/T592.xml +34 -0
  1500. data/misc/T594.xml +50 -0
  1501. data/misc/T595.xml +33 -0
  1502. data/misc/T6.xml +34 -0
  1503. data/misc/T604.xml +30 -0
  1504. data/misc/T605.xml +31 -0
  1505. data/misc/T608.xml +34 -0
  1506. data/misc/T611.xml +52 -0
  1507. data/misc/T612.xml +31 -0
  1508. data/misc/T615.xml +65 -0
  1509. data/misc/T617.xml +51 -0
  1510. data/misc/T618.xml +50 -0
  1511. data/misc/T620.xml +39 -0
  1512. data/misc/T621.xml +39 -0
  1513. data/misc/T623.xml +78 -0
  1514. data/misc/T625.xml +31 -0
  1515. data/misc/T626.xml +50 -0
  1516. data/misc/T627.xml +32 -0
  1517. data/misc/T629.xml +33 -0
  1518. data/misc/T632.xml +38 -0
  1519. data/misc/T635.xml +47 -0
  1520. data/misc/T639.xml +118 -0
  1521. data/misc/T640.xml +553 -0
  1522. data/misc/T641.xml +463 -0
  1523. data/misc/T644.xml +31 -0
  1524. data/misc/T645.xml +29 -0
  1525. data/misc/T647.xml +227 -0
  1526. data/misc/T648.xml +33 -0
  1527. data/misc/T650.xml +109 -0
  1528. data/misc/T653.xml +39 -0
  1529. data/misc/T654.xml +31 -0
  1530. data/misc/T656.xml +29 -0
  1531. data/misc/T659.xml +47 -0
  1532. data/misc/T66.xml +266 -0
  1533. data/misc/T662.xml +32 -0
  1534. data/misc/T665.xml +29 -0
  1535. data/misc/T666.xml +47 -0
  1536. data/misc/T668.xml +53 -0
  1537. data/misc/T669.xml +33 -0
  1538. data/misc/T670.xml +57 -0
  1539. data/misc/T672.xml +35 -0
  1540. data/misc/T673.xml +1123 -0
  1541. data/misc/T674.xml +32 -0
  1542. data/misc/T675.xml +38 -0
  1543. data/misc/T676.xml +31 -0
  1544. data/misc/T678.xml +72 -0
  1545. data/misc/T679.xml +36 -0
  1546. data/misc/T680.xml +48 -0
  1547. data/misc/T681.xml +38 -0
  1548. data/misc/T682.xml +58 -0
  1549. data/misc/T683.xml +32 -0
  1550. data/misc/T687.xml +89 -0
  1551. data/misc/T688.xml +38 -0
  1552. data/misc/T689.xml +44 -0
  1553. data/misc/T692.xml +61 -0
  1554. data/misc/T693.xml +34 -0
  1555. data/misc/T695.xml +39 -0
  1556. data/misc/T698.xml +30 -0
  1557. data/misc/T699.xml +29 -0
  1558. data/misc/T701.xml +118 -0
  1559. data/misc/T703.xml +45 -0
  1560. data/misc/T704.xml +41 -0
  1561. data/misc/T705.xml +30 -0
  1562. data/misc/T706.xml +151 -0
  1563. data/misc/T707.xml +115 -0
  1564. data/misc/T708.xml +125 -0
  1565. data/misc/T709.xml +29 -0
  1566. data/misc/T714.xml +30 -0
  1567. data/misc/T715.xml +34 -0
  1568. data/misc/T716.xml +47 -0
  1569. data/misc/T717.xml +33 -0
  1570. data/misc/T718.xml +50 -0
  1571. data/misc/T72.xml +30 -0
  1572. data/misc/T720.xml +35 -0
  1573. data/misc/T723.xml +44 -0
  1574. data/misc/T726.xml +46 -0
  1575. data/misc/T728.xml +38 -0
  1576. data/misc/T73.xml +30 -0
  1577. data/misc/T731.xml +34 -0
  1578. data/misc/T732.xml +37 -0
  1579. data/misc/T735.xml +277 -0
  1580. data/misc/T736.xml +29 -0
  1581. data/misc/T737.xml +191 -0
  1582. data/misc/T738.xml +1018 -0
  1583. data/misc/T743.xml +31 -0
  1584. data/misc/T744.xml +39 -0
  1585. data/misc/T745.xml +28 -0
  1586. data/misc/T747.xml +30 -0
  1587. data/misc/T748.xml +51 -0
  1588. data/misc/T749.xml +51 -0
  1589. data/misc/T750.xml +263 -0
  1590. data/misc/T752.xml +136 -0
  1591. data/misc/T753.xml +72 -0
  1592. data/misc/T755.xml +560 -0
  1593. data/misc/T756.xml +82 -0
  1594. data/misc/T759.xml +28 -0
  1595. data/misc/T760.xml +28 -0
  1596. data/misc/T762.xml +42 -0
  1597. data/misc/T771.xml +41 -0
  1598. data/misc/T772.xml +30 -0
  1599. data/misc/T78.xml +31 -0
  1600. data/misc/T783.xml +42 -0
  1601. data/misc/T786.xml +44 -0
  1602. data/misc/T789.xml +44 -0
  1603. data/misc/T792.xml +42 -0
  1604. data/misc/T795.xml +36 -0
  1605. data/misc/T797.xml +32 -0
  1606. data/misc/T8.xml +34 -0
  1607. data/misc/T808.xml +46 -0
  1608. data/misc/T811.xml +45 -0
  1609. data/misc/T812.xml +38 -0
  1610. data/misc/T813.xml +39 -0
  1611. data/misc/T814.xml +29 -0
  1612. data/misc/T815.xml +40 -0
  1613. data/misc/T816.xml +37 -0
  1614. data/misc/T820.xml +58 -0
  1615. data/misc/T821.xml +180 -0
  1616. data/misc/T829.xml +48 -0
  1617. data/misc/T83.xml +55 -0
  1618. data/misc/T831.xml +41 -0
  1619. data/misc/T835.xml +28 -0
  1620. data/misc/T836.xml +63 -0
  1621. data/misc/T837.xml +38 -0
  1622. data/misc/T844.xml +30 -0
  1623. data/misc/T845.xml +34 -0
  1624. data/misc/T846.xml +66 -0
  1625. data/misc/T847.xml +35 -0
  1626. data/misc/T848.xml +30 -0
  1627. data/misc/T849.xml +30 -0
  1628. data/misc/T850.xml +39 -0
  1629. data/misc/T852.xml +31 -0
  1630. data/misc/T853.xml +48 -0
  1631. data/misc/T854.xml +47 -0
  1632. data/misc/T855.xml +29 -0
  1633. data/misc/T856.xml +31 -0
  1634. data/misc/T859.xml +69 -0
  1635. data/misc/T868.xml +29 -0
  1636. data/misc/T875.xml +150 -0
  1637. data/misc/T88.xml +48 -0
  1638. data/misc/T883.xml +36 -0
  1639. data/misc/T886.xml +36 -0
  1640. data/misc/T887.xml +42 -0
  1641. data/misc/T888.xml +34 -0
  1642. data/misc/T889.xml +37 -0
  1643. data/misc/T890.xml +43 -0
  1644. data/misc/T891.xml +47 -0
  1645. data/misc/T892.xml +52 -0
  1646. data/misc/T893.xml +29 -0
  1647. data/misc/T894.xml +39 -0
  1648. data/misc/T897.xml +31 -0
  1649. data/misc/T9.xml +50 -0
  1650. data/misc/T90.xml +31 -0
  1651. data/misc/T901.xml +234 -0
  1652. data/misc/T902.xml +31 -0
  1653. data/misc/T903.xml +30 -0
  1654. data/misc/T904.xml +33 -0
  1655. data/misc/T906.xml +31 -0
  1656. data/misc/T91.xml +107 -0
  1657. data/misc/T912.xml +32 -0
  1658. data/misc/T913.xml +43 -0
  1659. data/misc/T92.xml +98 -0
  1660. data/misc/T921.xml +33 -0
  1661. data/misc/T922.xml +33 -0
  1662. data/misc/T923.xml +35 -0
  1663. data/misc/T924.xml +29 -0
  1664. data/misc/T927.xml +29 -0
  1665. data/misc/T934.xml +34 -0
  1666. data/misc/T935.xml +157 -0
  1667. data/misc/T936.xml +86 -0
  1668. data/misc/T937.xml +47 -0
  1669. data/misc/T938.xml +35 -0
  1670. data/misc/T939.xml +29 -0
  1671. data/misc/T940.xml +32 -0
  1672. data/misc/T943.xml +53 -0
  1673. data/misc/T944.xml +43 -0
  1674. data/misc/T945.xml +56 -0
  1675. data/misc/T950.xml +75 -0
  1676. data/misc/T951.xml +36 -0
  1677. data/misc/T952.xml +30 -0
  1678. data/misc/T955.xml +32 -0
  1679. data/misc/T959.xml +29 -0
  1680. data/misc/T960.xml +40 -0
  1681. data/misc/T962.xml +38 -0
  1682. data/misc/T963.xml +129 -0
  1683. data/misc/T964.xml +46 -0
  1684. data/misc/T969.xml +38 -0
  1685. data/misc/T974.xml +28 -0
  1686. data/misc/T976.xml +32 -0
  1687. data/misc/T98.xml +1511 -0
  1688. data/misc/T980.xml +35 -0
  1689. data/misc/T981.xml +46 -0
  1690. data/misc/T982.xml +32 -0
  1691. data/misc/T983.xml +29 -0
  1692. data/misc/T984.xml +30 -0
  1693. data/misc/T985.xml +28 -0
  1694. data/misc/T986.xml +28 -0
  1695. data/misc/T987.xml +36 -0
  1696. data/misc/T988.xml +48 -0
  1697. data/misc/T990.xml +34 -0
  1698. data/misc/T998.xml +30 -0
  1699. data/misc/T999.xml +39 -0
  1700. data/misc/TA.xml +34 -0
  1701. data/misc/TAX.xml +40 -0
  1702. data/misc/TBI.xml +35 -0
  1703. data/misc/TC2.xml +29 -0
  1704. data/misc/TCD.xml +43 -0
  1705. data/misc/TD1.xml +37 -0
  1706. data/misc/TD3.xml +37 -0
  1707. data/misc/TD4.xml +32 -0
  1708. data/misc/TD5.xml +42 -0
  1709. data/misc/TDS.xml +31 -0
  1710. data/misc/TDT.xml +31 -0
  1711. data/misc/TED.xml +35 -0
  1712. data/misc/TEM.xml +32 -0
  1713. data/misc/TER.xml +33 -0
  1714. data/misc/TF.xml +31 -0
  1715. data/misc/TFR.xml +31 -0
  1716. data/misc/TFS.xml +35 -0
  1717. data/misc/THE.xml +32 -0
  1718. data/misc/TI.xml +34 -0
  1719. data/misc/TI01.xml +34 -0
  1720. data/misc/TI03.xml +29 -0
  1721. data/misc/TI05.xml +65 -0
  1722. data/misc/TI10.xml +28 -0
  1723. data/misc/TI11.xml +41 -0
  1724. data/misc/TI13.xml +29 -0
  1725. data/misc/TI14.xml +30 -0
  1726. data/misc/TI40.xml +36 -0
  1727. data/misc/TI43.xml +61 -0
  1728. data/misc/TI58.xml +32 -0
  1729. data/misc/TI60.xml +29 -0
  1730. data/misc/TI61.xml +30 -0
  1731. data/misc/TI62.xml +30 -0
  1732. data/misc/TI63.xml +33 -0
  1733. data/misc/TIA.xml +34 -0
  1734. data/misc/TID.xml +36 -0
  1735. data/misc/TII.xml +32 -0
  1736. data/misc/TIS.xml +31 -0
  1737. data/misc/TLN.xml +49 -0
  1738. data/misc/TMD.xml +36 -0
  1739. data/misc/TOA.xml +32 -0
  1740. data/misc/TOO.xml +30 -0
  1741. data/misc/TOV.xml +33 -0
  1742. data/misc/TPB.xml +31 -0
  1743. data/misc/TPD.xml +31 -0
  1744. data/misc/TRF.xml +32 -0
  1745. data/misc/TRL.xml +32 -0
  1746. data/misc/TRN.xml +31 -0
  1747. data/misc/TRS.xml +32 -0
  1748. data/misc/TS.xml +34 -0
  1749. data/misc/TS2.xml +46 -0
  1750. data/misc/TS3.xml +51 -0
  1751. data/misc/TSD.xml +29 -0
  1752. data/misc/TSI.xml +31 -0
  1753. data/misc/TSP.xml +31 -0
  1754. data/misc/TST.xml +44 -0
  1755. data/misc/TSU.xml +35 -0
  1756. data/misc/TT.xml +29 -0
  1757. data/misc/TUD.xml +30 -0
  1758. data/misc/TXI.xml +37 -0
  1759. data/misc/TXN.xml +37 -0
  1760. data/misc/TXP.xml +37 -0
  1761. data/misc/UC.xml +31 -0
  1762. data/misc/UCS.xml +35 -0
  1763. data/misc/UD.xml +44 -0
  1764. data/misc/UDA.xml +34 -0
  1765. data/misc/UIT.xml +30 -0
  1766. data/misc/UM.xml +37 -0
  1767. data/misc/UQS.xml +31 -0
  1768. data/misc/UR.xml +29 -0
  1769. data/misc/USD.xml +39 -0
  1770. data/misc/USI.xml +30 -0
  1771. data/misc/UWI.xml +31 -0
  1772. data/misc/V1.xml +36 -0
  1773. data/misc/V2.xml +44 -0
  1774. data/misc/V3.xml +31 -0
  1775. data/misc/V4.xml +28 -0
  1776. data/misc/V5.xml +30 -0
  1777. data/misc/V9.xml +47 -0
  1778. data/misc/VAD.xml +38 -0
  1779. data/misc/VAR.xml +34 -0
  1780. data/misc/VAT.xml +39 -0
  1781. data/misc/VC.xml +40 -0
  1782. data/misc/VC1.xml +42 -0
  1783. data/misc/VDI.xml +42 -0
  1784. data/misc/VEH.xml +43 -0
  1785. data/misc/VID.xml +40 -0
  1786. data/misc/VR.xml +36 -0
  1787. data/misc/VRC.xml +32 -0
  1788. data/misc/W01.xml +43 -0
  1789. data/misc/W03.xml +34 -0
  1790. data/misc/W04.xml +42 -0
  1791. data/misc/W05.xml +35 -0
  1792. data/misc/W06.xml +39 -0
  1793. data/misc/W07.xml +38 -0
  1794. data/misc/W08.xml +36 -0
  1795. data/misc/W09.xml +36 -0
  1796. data/misc/W1.xml +28 -0
  1797. data/misc/W10.xml +36 -0
  1798. data/misc/W12.xml +49 -0
  1799. data/misc/W13.xml +32 -0
  1800. data/misc/W14.xml +32 -0
  1801. data/misc/W15.xml +33 -0
  1802. data/misc/W17.xml +36 -0
  1803. data/misc/W18.xml +30 -0
  1804. data/misc/W19.xml +45 -0
  1805. data/misc/W2.xml +43 -0
  1806. data/misc/W20.xml +37 -0
  1807. data/misc/W27.xml +37 -0
  1808. data/misc/W28.xml +35 -0
  1809. data/misc/W3.xml +33 -0
  1810. data/misc/W4.xml +32 -0
  1811. data/misc/W5.xml +33 -0
  1812. data/misc/W6.xml +31 -0
  1813. data/misc/W66.xml +37 -0
  1814. data/misc/W76.xml +33 -0
  1815. data/misc/WLD.xml +37 -0
  1816. data/misc/WS.xml +30 -0
  1817. data/misc/X01.xml +37 -0
  1818. data/misc/X02.xml +32 -0
  1819. data/misc/X1.xml +44 -0
  1820. data/misc/X2.xml +33 -0
  1821. data/misc/X4.xml +46 -0
  1822. data/misc/X7.xml +29 -0
  1823. data/misc/XD.xml +32 -0
  1824. data/misc/XH.xml +34 -0
  1825. data/misc/XPO.xml +31 -0
  1826. data/misc/XQ.xml +32 -0
  1827. data/misc/Y1.xml +36 -0
  1828. data/misc/Y2.xml +37 -0
  1829. data/misc/Y3.xml +38 -0
  1830. data/misc/Y4.xml +37 -0
  1831. data/misc/Y5.xml +28 -0
  1832. data/misc/Y6.xml +30 -0
  1833. data/misc/Y7.xml +32 -0
  1834. data/misc/YNQ.xml +37 -0
  1835. data/misc/ZA.xml +35 -0
  1836. data/misc/ZC1.xml +36 -0
  1837. data/misc/ZD.xml +36 -0
  1838. data/misc/ZR.xml +43 -0
  1839. data/misc/ZT.xml +33 -0
  1840. data/misc/rdoc_template.rb +697 -0
  1841. data/test/tc_factory_270.rb +170 -0
  1842. data/test/tc_factory_270interchange.rb +306 -0
  1843. data/test/tc_factory_271.rb +235 -0
  1844. data/test/tc_factory_837p.rb +285 -0
  1845. data/test/tc_factory_997.rb +138 -0
  1846. data/test/tc_factory_999.rb +128 -0
  1847. data/test/tc_parse_270.rb +98 -0
  1848. data/test/tc_parse_270interchange.rb +184 -0
  1849. data/test/tc_parse_271.rb +158 -0
  1850. data/test/tc_parse_835.rb +146 -0
  1851. data/test/tc_parse_837p.rb +82 -0
  1852. data/test/tc_parse_997.rb +147 -0
  1853. data/test/tc_parse_999.rb +77 -0
  1854. data/x12.gemspec +18 -0
  1855. metadata +1916 -0
data/lib/x12/field.rb ADDED
@@ -0,0 +1,92 @@
1
+ #--
2
+ # This file is part of the X12Parser library that provides tools to
3
+ # manipulate X12 messages using Ruby native syntax.
4
+ #
5
+ # http://x12parser.rubyforge.org
6
+ #
7
+ # Copyright (C) 2008 APP Design, Inc.
8
+ #
9
+ # This library is free software; you can redistribute it and/or
10
+ # modify it under the terms of the GNU Lesser General Public
11
+ # License as published by the Free Software Foundation; either
12
+ # version 2.1 of the License, or (at your option) any later version.
13
+ #
14
+ # This library is distributed in the hope that it will be useful,
15
+ # but WITHOUT ANY WARRANTY; without even the implied warranty of
16
+ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
17
+ # Lesser General Public License for more details.
18
+ #
19
+ # You should have received a copy of the GNU Lesser General Public
20
+ # License along with this library; if not, write to the Free Software
21
+ # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
22
+ #++
23
+ #
24
+ module X12
25
+
26
+ # $Id: Field.rb 90 2009-05-13 19:51:27Z ikk $
27
+ #
28
+ # Class to represent a segment field. Please note, it's not a descendant of Base.
29
+
30
+ class Field
31
+ attr_reader :name, :type, :required, :min_length, :max_length, :validation
32
+ attr_writer :content
33
+
34
+ # Create a new field with given parameters
35
+ def initialize(name, type, required, min_length, max_length, validation)
36
+ @name = name
37
+ @type = type
38
+ @required = required
39
+ @min_length = min_length.to_i
40
+ @max_length = max_length.to_i
41
+ @validation = validation
42
+ @content = nil
43
+ end
44
+
45
+ # Returns printable string with field's content
46
+ def inspect
47
+ "Field #{name}|#{type}|#{required}|#{min_length}-#{max_length}|#{validation} <#{@content}>"
48
+ end
49
+
50
+ # Synonym for 'render'
51
+ def to_s
52
+ render
53
+ end
54
+
55
+ def render
56
+ unless @content
57
+ @content = $1 if self.type =~ /"(.*)"/ # If it's a constant
58
+ end
59
+ @content || ''
60
+ end # render
61
+
62
+ # Check if it's been set yet and it's not a constant
63
+ def has_content?
64
+ !@content.nil? && ('"'+@content+'"' != self.type)
65
+ end
66
+
67
+ # Erase the content
68
+ def set_empty!
69
+ @content = nil
70
+ end
71
+
72
+ # Returns simplified string regexp for this field, takes field separator and segment separator as arguments
73
+ def simple_regexp(field_sep, segment_sep)
74
+ case self.type
75
+ when /"(.*)"/ then $1
76
+ else "[^#{Regexp.escape(field_sep)}#{Regexp.escape(segment_sep)}]*"
77
+ end # case
78
+ end # simple_regexp
79
+
80
+ # Returns proper validating string regexp for this field, takes field separator and segment separator as arguments
81
+ def proper_regexp(field_sep, segment_sep)
82
+ case self.type
83
+ when 'I' then "\\d{#{@min_length},#{@max_length}}"
84
+ when 'S' then "[^#{Regexp.escape(field_sep)}#{Regexp.escape(segment_sep)}]{#{@min_length},#{@max_length}}"
85
+ when /C.*/ then "[^#{Regexp.escape(field_sep)}#{Regexp.escape(segment_sep)}]{#{@min_length},#{@max_length}}"
86
+ when /"(.*)"/ then $1
87
+ else "[^#{Regexp.escape(field_sep)}#{Regexp.escape(segment_sep)}]*"
88
+ end # case
89
+ end # str_regexp
90
+
91
+ end
92
+ end
data/lib/x12/loop.rb ADDED
@@ -0,0 +1,85 @@
1
+ #--
2
+ # This file is part of the X12Parser library that provides tools to
3
+ # manipulate X12 messages using Ruby native syntax.
4
+ #
5
+ # http://x12parser.rubyforge.org
6
+ #
7
+ # Copyright (C) 2008 APP Design, Inc.
8
+ #
9
+ # This library is free software; you can redistribute it and/or
10
+ # modify it under the terms of the GNU Lesser General Public
11
+ # License as published by the Free Software Foundation; either
12
+ # version 2.1 of the License, or (at your option) any later version.
13
+ #
14
+ # This library is distributed in the hope that it will be useful,
15
+ # but WITHOUT ANY WARRANTY; without even the implied warranty of
16
+ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
17
+ # Lesser General Public License for more details.
18
+ #
19
+ # You should have received a copy of the GNU Lesser General Public
20
+ # License along with this library; if not, write to the Free Software
21
+ # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
22
+ #++
23
+ #
24
+ module X12
25
+
26
+ #
27
+ # Implements nested loops of segments
28
+
29
+ class Loop < Base
30
+
31
+ # def regexp
32
+ # @regexp ||=
33
+ # Regexp.new(inject(''){|s, i|
34
+ # puts i.class
35
+ # s += case i
36
+ # when X12::Segment: "(#{i.regexp.source}){#{i.repeats.begin},#{i.repeats.end}}"
37
+ # when X12::Loop: "(.*?)"
38
+ # else
39
+ # ''
40
+ # end
41
+ # })
42
+ # end
43
+
44
+ # Parse a string and fill out internal structures with the pieces of it. Returns
45
+ # an unparsed portion of the string or the original string if nothing was parsed out.
46
+ def parse(str)
47
+ #puts "Parsing loop #{name}: "+str
48
+ s = str
49
+ nodes.each{|i|
50
+ m = i.parse(s)
51
+ s = m if m
52
+ }
53
+ if str == s
54
+ return nil
55
+ else
56
+ self.parsed_str = str[0..-s.length-1]
57
+ s = do_repeats(s)
58
+ end
59
+ #puts 'Parsed loop '+self.inspect
60
+ return s
61
+ end # parse
62
+
63
+ # Render all components of this loop as string suitable for EDI
64
+ def render
65
+ if self.has_content?
66
+ self.to_a.inject(''){|loop_str, i|
67
+ loop_str += i.nodes.inject(''){|nodes_str, j|
68
+ nodes_str += j.render
69
+ }
70
+ }
71
+ else
72
+ ''
73
+ end
74
+ end # render
75
+
76
+ # Provides looping through repeats of a message
77
+ def each
78
+ res = self.to_a
79
+ 0.upto(res.length - 1) do |x|
80
+ yield res[x]
81
+ end
82
+ end
83
+
84
+ end # Loop
85
+ end # X12
data/lib/x12/parser.rb ADDED
@@ -0,0 +1,146 @@
1
+ #--
2
+ # This file is part of the X12Parser library that provides tools to
3
+ # manipulate X12 messages using Ruby native syntax.
4
+ #
5
+ # http://x12parser.rubyforge.org
6
+ #
7
+ # Copyright (C) 2008 APP Design, Inc.
8
+ #
9
+ # This library is free software; you can redistribute it and/or
10
+ # modify it under the terms of the GNU Lesser General Public
11
+ # License as published by the Free Software Foundation; either
12
+ # version 2.1 of the License, or (at your option) any later version.
13
+ #
14
+ # This library is distributed in the hope that it will be useful,
15
+ # but WITHOUT ANY WARRANTY; without even the implied warranty of
16
+ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
17
+ # Lesser General Public License for more details.
18
+ #
19
+ # You should have received a copy of the GNU Lesser General Public
20
+ # License along with this library; if not, write to the Free Software
21
+ # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
22
+ #++
23
+ #
24
+
25
+ require "rexml/document"
26
+ require 'pp'
27
+
28
+ module X12
29
+
30
+ # $Id: Parser.rb 89 2009-05-13 19:36:20Z ikk $
31
+ #
32
+ # Main class for creating X12 parsers and factories.
33
+
34
+ class Parser
35
+
36
+ # These constitute prohibited file names under Microsoft
37
+ MS_DEVICES = [
38
+ 'CON',
39
+ 'PRN',
40
+ 'AUX',
41
+ 'CLOCK$',
42
+ 'NUL',
43
+ 'COM1',
44
+ 'LPT1',
45
+ 'LPT2',
46
+ 'LPT3',
47
+ 'COM2',
48
+ 'COM3',
49
+ 'COM4',
50
+ ]
51
+
52
+ # Creates a parser out of a definition
53
+ def initialize(file_name)
54
+ save_definition = @x12_definition
55
+
56
+ # Deal with Microsoft devices
57
+ # get the current working directory
58
+ base_name = File.basename(file_name, '.xml')
59
+ if MS_DEVICES.find{|i| i == base_name}
60
+ file_name = File.join(File.dirname, "#{base_name}_.xml")
61
+ end
62
+ file_location = File.join(File.dirname(__FILE__), "../../misc", file_name)
63
+
64
+ # Read and parse the definition
65
+ str = File.open(file_location, 'r').read
66
+ #@dir_name = File.dirname(File.expand_path(file_name)) # to look up other files if needed
67
+ @x12_definition = X12::XMLDefinitions.new(str)
68
+
69
+ # Populate fields in all segments found in all the loops
70
+ @x12_definition[X12::Loop].each_pair{|k, v|
71
+ #puts "Populating definitions for loop #{k}"
72
+ process_loop(v)
73
+ } if @x12_definition[X12::Loop]
74
+
75
+ # Merge the newly parsed definition into a saved one, if any.
76
+ if save_definition
77
+ @x12_definition.keys.each{|t|
78
+ save_definition[t] ||= {}
79
+ @x12_definition[t].keys.each{|u|
80
+ save_definition[t][u] = @x12_definition[t][u]
81
+ }
82
+ @x12_definition = save_definition
83
+ }
84
+ end
85
+
86
+ #puts PP.pp(self, '')
87
+ end # initialize
88
+
89
+ # Parse a loop of a given name out of a string. Throws an exception if the loop name is not defined.
90
+ def parse(loop_name, str)
91
+ loop = @x12_definition[X12::Loop][loop_name]
92
+ #puts "Loops to parse #{@x12_definition[X12::Loop].keys}"
93
+ throw Exception.new("Cannot find a definition for loop #{loop_name}") unless loop
94
+ loop = loop.dup
95
+ loop.parse(str)
96
+ return loop
97
+ end # parse
98
+
99
+ # Make an empty loop to be filled out with information
100
+ def factory(loop_name)
101
+ loop = @x12_definition[X12::Loop][loop_name]
102
+ throw Exception.new("Cannot find a definition for loop #{loop_name}") unless loop
103
+ loop = loop.dup
104
+ return loop
105
+ end # factory
106
+
107
+ private
108
+
109
+ # Recursively scan the loop and instantiate fields' definitions for all its
110
+ # segments
111
+ def process_loop(loop)
112
+ loop.nodes.each{|i|
113
+ case i
114
+ when X12::Loop then process_loop(i)
115
+ when X12::Segment then process_segment(i) unless i.nodes.size > 0
116
+ else return
117
+ end
118
+ }
119
+ end
120
+
121
+ # Instantiate segment's fields as previously defined
122
+ def process_segment(segment)
123
+ #puts "Trying to process segment #{segment.inspect}"
124
+ unless @x12_definition[X12::Segment] && @x12_definition[X12::Segment][segment.name]
125
+ # Try to find it in a separate file if missing from the @x12_definition structure
126
+ initialize(segment.name+'.xml')
127
+ segment_definition = @x12_definition[X12::Segment][segment.name]
128
+ throw Exception.new("Cannot find a definition for segment #{segment.name}") unless segment_definition
129
+ else
130
+ segment_definition = @x12_definition[X12::Segment][segment.name]
131
+ end
132
+ segment_definition.nodes.each_index{|i|
133
+ segment.nodes[i] = segment_definition.nodes[i]
134
+ # Make sure we have the validation table if any for this field. Try to read one in if missing.
135
+ table = segment.nodes[i].validation
136
+ if table
137
+ unless @x12_definition[X12::Table] && @x12_definition[X12::Table][table]
138
+ initialize(table+'.xml')
139
+ throw Exception.new("Cannot find a definition for table #{table}") unless @x12_definition[X12::Table] && @x12_definition[X12::Table][table]
140
+ end
141
+ end
142
+ }
143
+ end
144
+
145
+ end # Parser
146
+ end
@@ -0,0 +1,115 @@
1
+ #--
2
+ # This file is part of the X12Parser library that provides tools to
3
+ # manipulate X12 messages using Ruby native syntax.
4
+ #
5
+ # http://x12parser.rubyforge.org
6
+ #
7
+ # Copyright (C) 2008 APP Design, Inc.
8
+ #
9
+ # This library is free software; you can redistribute it and/or
10
+ # modify it under the terms of the GNU Lesser General Public
11
+ # License as published by the Free Software Foundation; either
12
+ # version 2.1 of the License, or (at your option) any later version.
13
+ #
14
+ # This library is distributed in the hope that it will be useful,
15
+ # but WITHOUT ANY WARRANTY; without even the implied warranty of
16
+ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
17
+ # Lesser General Public License for more details.
18
+ #
19
+ # You should have received a copy of the GNU Lesser General Public
20
+ # License along with this library; if not, write to the Free Software
21
+ # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
22
+ #++
23
+ #
24
+ module X12
25
+
26
+ # $Id: Segment.rb 82 2009-05-13 18:07:22Z ikk $
27
+ #
28
+ # Implements a segment containing fields or composites
29
+
30
+ class Segment < Base
31
+
32
+ # Parses this segment out of a string, puts the match into value, returns the rest of the string - nil
33
+ # if cannot parse
34
+ def parse(str)
35
+ s = str
36
+ #puts "Parsing segment #{name} from #{s} with regexp [#{regexp.source}]"
37
+ m = regexp.match(s)
38
+ #puts "Matched #{m ? m[0] : 'nothing'}"
39
+
40
+ return nil unless m
41
+
42
+ s = m.post_match
43
+ self.parsed_str = m[0]
44
+ s = do_repeats(s)
45
+
46
+ #puts "Parsed segment "+self.inspect
47
+ return s
48
+ end # parse
49
+
50
+ # Render all components of this segment as string suitable for EDI
51
+ def render
52
+ self.to_a.inject(''){|repeat_str, i|
53
+ if i.repeats.begin < 1 and !i.has_content?
54
+ # Skip optional empty segments
55
+ repeat_str
56
+ else
57
+ # Have to render no matter how empty
58
+ repeat_str += i.name+i.nodes.reverse.inject(''){|nodes_str, j|
59
+ field = j.render
60
+ (j.required or nodes_str != '' or field != '') ? field_separator+field+nodes_str : nodes_str
61
+ } + segment_separator
62
+ end
63
+ }
64
+ end # render
65
+
66
+ # Returns a regexp that matches this particular segment
67
+ def regexp
68
+ unless @regexp
69
+ if self.nodes.find{|i| i.type =~ /^".+"$/ }
70
+ # It's a very special regexp if there are constant fields
71
+ re_str = self.nodes.inject("^#{name}#{Regexp.escape(field_separator)}"){|s, i|
72
+ field_re = i.simple_regexp(field_separator, segment_separator)+Regexp.escape(field_separator)+'?'
73
+ field_re = "(#{field_re})?" unless i.required
74
+ s+field_re
75
+ } + Regexp.escape(segment_separator)
76
+ @regexp = Regexp.new(re_str)
77
+ else
78
+ # Simple match
79
+ @regexp = Regexp.new("^#{name}#{Regexp.escape(field_separator)}[^#{Regexp.escape(segment_separator)}]*#{Regexp.escape(segment_separator)}")
80
+ end
81
+ #puts sprintf("%s %p", name, @regexp)
82
+ end
83
+ @regexp
84
+ end
85
+
86
+ # Finds a field in the segment. Returns EMPTY if not found.
87
+ def find_field(str)
88
+ #puts "Finding field [#{str}] in #{self.class} #{name}"
89
+ # If there is such a field to begin with
90
+ field_num = nil
91
+ self.nodes.each_index{|i|
92
+ field_num = i if str == self.nodes[i].name
93
+ }
94
+ return EMPTY if field_num.nil?
95
+ #puts field_num
96
+
97
+ # Parse the segment if not parsed already
98
+ unless @fields
99
+ @fields = self.to_s.chop.split(Regexp.new(Regexp.escape(field_separator)))
100
+ self.nodes.each_index{|i| self.nodes[i].content = @fields[i+1] }
101
+ end
102
+ #puts self.nodes[field_num].inspect
103
+ return self.nodes[field_num]
104
+ end
105
+
106
+ # provides loopong through multiple segments within the loop
107
+ def each
108
+ res = self.to_a
109
+ 0.upto(res.length - 1) do |x|
110
+ yield res[x]
111
+ end
112
+ end
113
+
114
+ end # Segment
115
+ end # X12
data/lib/x12/table.rb ADDED
@@ -0,0 +1,44 @@
1
+ #--
2
+ # This file is part of the X12Parser library that provides tools to
3
+ # manipulate X12 messages using Ruby native syntax.
4
+ #
5
+ # http://x12parser.rubyforge.org
6
+ #
7
+ # Copyright (C) 2008 APP Design, Inc.
8
+ #
9
+ # This library is free software; you can redistribute it and/or
10
+ # modify it under the terms of the GNU Lesser General Public
11
+ # License as published by the Free Software Foundation; either
12
+ # version 2.1 of the License, or (at your option) any later version.
13
+ #
14
+ # This library is distributed in the hope that it will be useful,
15
+ # but WITHOUT ANY WARRANTY; without even the implied warranty of
16
+ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
17
+ # Lesser General Public License for more details.
18
+ #
19
+ # You should have received a copy of the GNU Lesser General Public
20
+ # License along with this library; if not, write to the Free Software
21
+ # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
22
+ #++
23
+ #
24
+ module X12
25
+
26
+ # $Id: Table.rb 35 2008-11-13 18:33:44Z ikk $
27
+ #
28
+ # This just a named hash to store validation tables.
29
+
30
+ class Table < Hash
31
+ attr_reader :name
32
+
33
+ # Create a new table with given name and hash content.
34
+ def initialize(name, name_values)
35
+ @name = name
36
+ self.merge!(name_values)
37
+ end
38
+
39
+ # Return a printable string representing this table
40
+ def inspect
41
+ "Table #{name} -- #{super.inspect}"
42
+ end
43
+ end
44
+ end
@@ -0,0 +1,3 @@
1
+ module X12
2
+ VERSION = "1.4.0"
3
+ end
@@ -0,0 +1,175 @@
1
+ #--
2
+ # This file is part of the X12Parser library that provides tools to
3
+ # manipulate X12 messages using Ruby native syntax.
4
+ #
5
+ # http://x12parser.rubyforge.org
6
+ #
7
+ # Copyright (C) 2008 APP Design, Inc.
8
+ #
9
+ # This library is free software; you can redistribute it and/or
10
+ # modify it under the terms of the GNU Lesser General Public
11
+ # License as published by the Free Software Foundation; either
12
+ # version 2.1 of the License, or (at your option) any later version.
13
+ #
14
+ # This library is distributed in the hope that it will be useful,
15
+ # but WITHOUT ANY WARRANTY; without even the implied warranty of
16
+ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
17
+ # Lesser General Public License for more details.
18
+ #
19
+ # You should have received a copy of the GNU Lesser General Public
20
+ # License along with this library; if not, write to the Free Software
21
+ # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
22
+ #++
23
+ #
24
+
25
+ require "rexml/document"
26
+
27
+ module X12
28
+
29
+ # $Id: XMLDefinitions.rb 90 2009-05-13 19:51:27Z ikk $
30
+ #
31
+ # A class for parsing X12 message definition expressed in XML format.
32
+
33
+ class XMLDefinitions < Hash
34
+
35
+ # Parse definitions out of XML file
36
+ def initialize(str)
37
+ doc = REXML::Document.new(str)
38
+ definitions = doc.root.name =~ /^Definition$/i ? doc.root.elements.to_a : [doc.root]
39
+
40
+ definitions.each { |element|
41
+ #puts element.name
42
+ syntax_element = case element.name
43
+ when /table/i
44
+ parse_table(element)
45
+ when /segment/i
46
+ parse_segment(element)
47
+ when /composite/i
48
+ parse_composite(element)
49
+ when /loop/i
50
+ parse_loop(element)
51
+ end
52
+ self[syntax_element.class] ||= {}
53
+ self[syntax_element.class][syntax_element.name]=syntax_element
54
+ }
55
+ end # initialize
56
+
57
+ private
58
+
59
+ def parse_boolean(s)
60
+ return case s
61
+ when nil
62
+ false
63
+ when ""
64
+ false
65
+ when /(^y(es)?$)|(^t(rue)?$)|(^1$)/i
66
+ true
67
+ when /(^no?$)|(^f(alse)?$)|(^0$)/i
68
+ false
69
+ else
70
+ nil
71
+ end # case
72
+ end #parse_boolean
73
+
74
+ def parse_type(s)
75
+ return case s
76
+ when nil
77
+ 'string'
78
+ when /^C.+$/
79
+ s
80
+ when /^i(nt(eger)?)?$/i
81
+ 'int'
82
+ when /^l(ong)?$/i
83
+ 'long'
84
+ when /^d(ouble)?$/i
85
+ 'double'
86
+ when /^s(tr(ing)?)?$/i
87
+ 'string'
88
+ else
89
+ nil
90
+ end # case
91
+ end #parse_type
92
+
93
+ def parse_int(s)
94
+ return case s
95
+ when nil then 0
96
+ when /^\d+$/ then s.to_i
97
+ when /^inf(inite)?$/ then 999999
98
+ else
99
+ nil
100
+ end # case
101
+ end #parse_int
102
+
103
+ def parse_attributes(e)
104
+ throw Exception.new("No name attribute found for : #{e.inspect}") unless name = e.attributes["name"]
105
+ throw Exception.new("Cannot parse attribute 'min' for: #{e.inspect}") unless min = parse_int(e.attributes["min"])
106
+ throw Exception.new("Cannot parse attribute 'max' for: #{e.inspect}") unless max = parse_int(e.attributes["max"])
107
+ throw Exception.new("Cannot parse attribute 'type' for: #{e.inspect}") unless type = parse_type(e.attributes["type"])
108
+ throw Exception.new("Cannot parse attribute 'required' for: #{e.inspect}") if (required = parse_boolean(e.attributes["required"])).nil?
109
+
110
+ validation = e.attributes["validation"]
111
+ min = 1 if required and min < 1
112
+ max = 999999 if max == 0
113
+
114
+ return name, min, max, type, required, validation
115
+ end # parse_attributes
116
+
117
+ def parse_field(e)
118
+ name, min, max, type, required, validation = parse_attributes(e)
119
+
120
+ # FIXME - for compatibility with d12 - constants are stored in attribute 'type' and are enclosed in
121
+ # double quotes
122
+ const_field = e.attributes["const"]
123
+ if(const_field)
124
+ type = "\"#{const_field}\""
125
+ end
126
+
127
+ Field.new(name, type, required, min, max, validation)
128
+ end # parse_field
129
+
130
+ def parse_table(e)
131
+ name, min, max, type, required, validation = parse_attributes(e)
132
+
133
+ content = e.get_elements("Entry").inject({}) {|t, entry|
134
+ t[entry.attributes["name"]] = entry.attributes["value"]
135
+ t
136
+ }
137
+ Table.new(name, content)
138
+ end
139
+
140
+ def parse_segment(e)
141
+ name, min, max, type, required, validation = parse_attributes(e)
142
+
143
+ fields = e.get_elements("Field").inject([]) {|f, field|
144
+ f << parse_field(field)
145
+ }
146
+ Segment.new(name, fields, Range.new(min, max))
147
+ end
148
+
149
+ def parse_composite(e)
150
+ name, min, max, type, required, validation = parse_attributes(e)
151
+
152
+ fields = e.get_elements("Field").inject([]) {|f, field|
153
+ f << parse_field(field)
154
+ }
155
+ Composite.new(name, fields)
156
+ end
157
+
158
+ def parse_loop(e)
159
+ name, min, max, type, required, validation = parse_attributes(e)
160
+
161
+ components = e.elements.to_a.inject([]){|r, element|
162
+ r << case element.name
163
+ when /loop/i
164
+ parse_loop(element)
165
+ when /segment/i
166
+ parse_segment(element)
167
+ else
168
+ throw Exception.new("Cannot recognize syntax for: #{element.inspect} in loop #{e.inspect}")
169
+ end # case
170
+ }
171
+ Loop.new(name, components, Range.new(min, max))
172
+ end
173
+
174
+ end # Parser
175
+ end