@speleotica/frcsdata 4.3.1 → 5.0.0-beta.2

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 (172) hide show
  1. package/ParseIssue.d.ts +98 -0
  2. package/ParseIssue.d.ts.map +1 -0
  3. package/ParseIssue.js +17 -0
  4. package/ParseIssue.js.map +1 -0
  5. package/SourceLoc.d.ts +67 -0
  6. package/SourceLoc.d.ts.map +1 -0
  7. package/SourceLoc.js +18 -0
  8. package/SourceLoc.js.map +1 -0
  9. package/chunksToLines.d.ts +5 -0
  10. package/chunksToLines.d.ts.map +1 -0
  11. package/chunksToLines.js +37 -0
  12. package/chunksToLines.js.map +1 -0
  13. package/cli/check-survey-correspondence.d.ts +2 -0
  14. package/cli/check-survey-correspondence.d.ts.map +1 -0
  15. package/cli/check-survey-correspondence.js +44 -0
  16. package/cli/check-survey-correspondence.js.map +1 -0
  17. package/cli/check-survey.d.ts +2 -0
  18. package/cli/check-survey.d.ts.map +1 -0
  19. package/cli/check-survey.js +27 -0
  20. package/cli/check-survey.js.map +1 -0
  21. package/cli/parse-survey.d.ts +2 -0
  22. package/cli/parse-survey.d.ts.map +1 -0
  23. package/cli/parse-survey.js +15 -0
  24. package/cli/parse-survey.js.map +1 -0
  25. package/cli/summarize-survey.d.ts +2 -0
  26. package/cli/summarize-survey.d.ts.map +1 -0
  27. package/cli/summarize-survey.js +33 -0
  28. package/cli/summarize-survey.js.map +1 -0
  29. package/cli.d.ts +2 -0
  30. package/cli.d.ts.map +1 -0
  31. package/cli.js +72 -0
  32. package/cli.js.map +1 -0
  33. package/formatFrcsTripSummaryFile.d.ts +3 -0
  34. package/formatFrcsTripSummaryFile.d.ts.map +1 -0
  35. package/formatFrcsTripSummaryFile.js +33 -0
  36. package/formatFrcsTripSummaryFile.js.map +1 -0
  37. package/formatIssues.d.ts +10 -0
  38. package/formatIssues.d.ts.map +1 -0
  39. package/formatIssues.js +52 -0
  40. package/formatIssues.js.map +1 -0
  41. package/index.d.ts +5 -7
  42. package/index.d.ts.map +1 -1
  43. package/index.js +16 -49
  44. package/index.js.map +1 -1
  45. package/node/index.d.ts +4 -2
  46. package/node/index.d.ts.map +1 -1
  47. package/node/index.js +6 -12
  48. package/node/index.js.map +1 -1
  49. package/package.json +8 -6
  50. package/parseFrcsPlotFile.js +112 -245
  51. package/parseFrcsPlotFile.js.map +1 -1
  52. package/parseFrcsTripSummaryFile.d.ts +3 -1
  53. package/parseFrcsTripSummaryFile.d.ts.map +1 -1
  54. package/parseFrcsTripSummaryFile.js +53 -119
  55. package/parseFrcsTripSummaryFile.js.map +1 -1
  56. package/src/ParseIssue.ts +19 -0
  57. package/src/SourceLoc.ts +13 -0
  58. package/src/chunksToLines.ts +26 -0
  59. package/src/cli/check-survey-correspondence.ts +49 -0
  60. package/src/cli/check-survey.ts +23 -0
  61. package/src/cli/parse-survey.ts +10 -0
  62. package/src/cli/summarize-survey.ts +28 -0
  63. package/src/cli.ts +63 -0
  64. package/src/formatFrcsTripSummaryFile.ts +45 -0
  65. package/src/formatIssues.ts +97 -0
  66. package/src/index.ts +9 -7
  67. package/src/node/index.ts +18 -5
  68. package/src/parseFrcsTripSummaryFile.ts +8 -2
  69. package/src/string/index.ts +18 -5
  70. package/src/survey/FrcsSurveyFile.ts +217 -0
  71. package/src/survey/FrcsSurveyFileJson.ts +46 -0
  72. package/src/survey/ZodFrcsSurveyFileJson.ts +260 -0
  73. package/src/survey/ZodFrcsSurveyFileToJson.ts +297 -0
  74. package/src/{formatFrcsShot.ts → survey/formatFrcsShot.ts} +39 -22
  75. package/src/{formatFrcsSurveyFile.ts → survey/formatFrcsSurveyFile.ts} +4 -5
  76. package/src/survey/getColumnRanges.ts +82 -0
  77. package/src/survey/normalizeTeamMemberName.ts +7 -0
  78. package/src/survey/parseFrcsSurveyFile.ts +848 -0
  79. package/src/survey/parsers.ts +128 -0
  80. package/src/survey/summarizeSurvey.ts +51 -0
  81. package/src/survey/validators.ts +24 -0
  82. package/src/underlineSource.ts +34 -0
  83. package/src/unwrapInvalid.ts +3 -0
  84. package/src/web/index.ts +27 -21
  85. package/string/index.d.ts +4 -2
  86. package/string/index.d.ts.map +1 -1
  87. package/string/index.js +8 -34
  88. package/string/index.js.map +1 -1
  89. package/survey/FrcsSurveyFile.d.ts +172 -0
  90. package/survey/FrcsSurveyFile.d.ts.map +1 -0
  91. package/{FrcsSurveyFile.js → survey/FrcsSurveyFile.js} +3 -1
  92. package/survey/FrcsSurveyFile.js.map +1 -0
  93. package/survey/FrcsSurveyFileJson.d.ts +15 -0
  94. package/survey/FrcsSurveyFileJson.d.ts.map +1 -0
  95. package/{FrcsTrip.js → survey/FrcsSurveyFileJson.js} +1 -1
  96. package/survey/FrcsSurveyFileJson.js.map +1 -0
  97. package/survey/ZodFrcsSurveyFileJson.d.ts +60549 -0
  98. package/survey/ZodFrcsSurveyFileJson.d.ts.map +1 -0
  99. package/survey/ZodFrcsSurveyFileJson.js +186 -0
  100. package/survey/ZodFrcsSurveyFileJson.js.map +1 -0
  101. package/survey/ZodFrcsSurveyFileToJson.d.ts +60390 -0
  102. package/survey/ZodFrcsSurveyFileToJson.d.ts.map +1 -0
  103. package/survey/ZodFrcsSurveyFileToJson.js +209 -0
  104. package/survey/ZodFrcsSurveyFileToJson.js.map +1 -0
  105. package/{formatFrcsShot.d.ts → survey/formatFrcsShot.d.ts} +2 -3
  106. package/survey/formatFrcsShot.d.ts.map +1 -0
  107. package/survey/formatFrcsShot.js +107 -0
  108. package/survey/formatFrcsShot.js.map +1 -0
  109. package/survey/formatFrcsSurveyFile.d.ts +3 -0
  110. package/survey/formatFrcsSurveyFile.d.ts.map +1 -0
  111. package/survey/formatFrcsSurveyFile.js +87 -0
  112. package/survey/formatFrcsSurveyFile.js.map +1 -0
  113. package/survey/getColumnRanges.d.ts +24 -0
  114. package/survey/getColumnRanges.d.ts.map +1 -0
  115. package/survey/getColumnRanges.js +62 -0
  116. package/survey/getColumnRanges.js.map +1 -0
  117. package/survey/normalizeTeamMemberName.d.ts +2 -0
  118. package/survey/normalizeTeamMemberName.d.ts.map +1 -0
  119. package/survey/normalizeTeamMemberName.js +12 -0
  120. package/survey/normalizeTeamMemberName.js.map +1 -0
  121. package/{parseFrcsSurveyFile.d.ts → survey/parseFrcsSurveyFile.d.ts} +2 -5
  122. package/survey/parseFrcsSurveyFile.d.ts.map +1 -0
  123. package/survey/parseFrcsSurveyFile.js +626 -0
  124. package/survey/parseFrcsSurveyFile.js.map +1 -0
  125. package/survey/parsers.d.ts +11 -0
  126. package/survey/parsers.d.ts.map +1 -0
  127. package/survey/parsers.js +119 -0
  128. package/survey/parsers.js.map +1 -0
  129. package/survey/summarizeSurvey.d.ts +6 -0
  130. package/survey/summarizeSurvey.d.ts.map +1 -0
  131. package/survey/summarizeSurvey.js +58 -0
  132. package/survey/summarizeSurvey.js.map +1 -0
  133. package/survey/validators.d.ts +7 -0
  134. package/survey/validators.d.ts.map +1 -0
  135. package/survey/validators.js +36 -0
  136. package/survey/validators.js.map +1 -0
  137. package/underlineSource.d.ts +6 -0
  138. package/underlineSource.d.ts.map +1 -0
  139. package/underlineSource.js +22 -0
  140. package/underlineSource.js.map +1 -0
  141. package/unwrapInvalid.d.ts +4 -0
  142. package/unwrapInvalid.d.ts.map +1 -0
  143. package/unwrapInvalid.js +10 -0
  144. package/unwrapInvalid.js.map +1 -0
  145. package/web/index.d.ts +6 -6
  146. package/web/index.d.ts.map +1 -1
  147. package/web/index.js +60 -118
  148. package/web/index.js.map +1 -1
  149. package/FrcsShot.d.ts +0 -57
  150. package/FrcsShot.d.ts.map +0 -1
  151. package/FrcsShot.js +0 -13
  152. package/FrcsShot.js.map +0 -1
  153. package/FrcsSurveyFile.d.ts +0 -29
  154. package/FrcsSurveyFile.d.ts.map +0 -1
  155. package/FrcsSurveyFile.js.map +0 -1
  156. package/FrcsTrip.d.ts +0 -23
  157. package/FrcsTrip.d.ts.map +0 -1
  158. package/FrcsTrip.js.map +0 -1
  159. package/formatFrcsShot.d.ts.map +0 -1
  160. package/formatFrcsShot.js +0 -96
  161. package/formatFrcsShot.js.map +0 -1
  162. package/formatFrcsSurveyFile.d.ts +0 -3
  163. package/formatFrcsSurveyFile.d.ts.map +0 -1
  164. package/formatFrcsSurveyFile.js +0 -165
  165. package/formatFrcsSurveyFile.js.map +0 -1
  166. package/parseFrcsSurveyFile.d.ts.map +0 -1
  167. package/parseFrcsSurveyFile.js +0 -812
  168. package/parseFrcsSurveyFile.js.map +0 -1
  169. package/src/FrcsShot.ts +0 -56
  170. package/src/FrcsSurveyFile.ts +0 -47
  171. package/src/FrcsTrip.ts +0 -25
  172. package/src/parseFrcsSurveyFile.ts +0 -788
@@ -1 +0,0 @@
1
- {"version":3,"file":"parseFrcsSurveyFile.js","names":["_FrcsSurveyFile","require","_parseSegment","_unitized","_FrcsShot","ownKeys","e","r","t","Object","keys","getOwnPropertySymbols","o","filter","getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","arguments","length","forEach","_defineProperty2","getOwnPropertyDescriptors","defineProperties","defineProperty","_asyncIterator","n","Symbol","asyncIterator","iterator","call","AsyncFromSyncIterator","TypeError","AsyncFromSyncIteratorContinuation","Promise","reject","done","resolve","value","then","s","next","prototype","_return","_throw","parseNumber","unit","parseFloat","isNaN","UnitizedNumber","parseAzimuth","parsed","get","Angle","degrees","Unitize","parseKind","kind","FrcsShotKind","Horizontal","Diagonal","Normal","parseLengthUnit","Length","inches","feet","meters","parseAngleUnit","gradians","milsNATO","isValidStation","test","isValidUInt","isValidFloat","isValidOptFloat","isValidOptUFloat","isValidUFloat","isValidOptInclination","parseLrud","Number","isFinite","parseFromStationLruds","line","distanceUnit","fromStr","substring","undefined","gap","trim","lrudStr","lStr","rStr","uStr","dStr","up","down","left","right","getColumnRanges","config","result","toStation","fromStation","distance","distanceFeet","distanceInches","exclude","frontsightAzimuth","backsightAzimuth","frontsightInclination","backsightInclination","c","_i","_arr","entries","_arr$_i","_slicedToArray2","key","parseFrcsSurveyFile","_x","_x2","_parseFrcsSurveyFile","_asyncToGenerator2","_regenerator","mark","_callee","file","lines","_ref","_ref$columns","columns","ranges","maxRange","cave","location","trips","errors","tripName","tripTeam","tripDate","inTripComment","tripCommentStartLine","tripCommentEndLine","tripComment","commentLines","trip","inBlockComment","section","commentFromStationLruds","addCommentLine","getComment","unitsChanged","alternateUnits","nextShotUnits","lineNumber","errored","error","parseUnits","validate","addShot","began","_iteratorAbruptCompletion","_didIteratorError","_iteratorError","_loop","_ret","_iterator","_step","_args2","wrap","_callee$","_context2","prev","_getComment","comment","join","_addCommentLine","header","parsedFromStationLruds","set","defaultFrcsShotColumnConfig","Math","max","_toConsumableArray2","values","map","Map","message","startColumn","endColumn","SegmentParseError","Segment","source","startLine","startCol","slice","azimuthUnit","inclinationUnit","backsightAzimuthCorrected","backsightInclinationCorrected","hasBacksightAzimuth","hasBacksightInclination","fieldName","validator","field","shot","recorded","units","_trip$header","opposite","_shot$backsightInclin","negate","fromLruds","_shot$fromLruds$left","_shot$fromLruds$right","_shot$fromLruds$up","_shot$fromLruds$down","toLruds","_shot$toLruds$left","_shot$toLruds$right","_shot$toLruds$up","_shot$toLruds$down","_shot$frontsightAzimu","_shot$backsightAzimut","_shot$frontsightIncli","_shot$backsightInclin2","shots","match","_match","_match$k","k","team","dateMatch","month","day","year","_match2","_line","_line2","_line3","_line4","_ref2","_ref3","from","toStr","_shot","fromLrudMatch","_fromLrudMatch$1$trim","_fromLrudMatch$1$trim2","_left","_right","_up","_down","azmFsStr","azmBsStr","incFsStr","incBsStr","horizontalDistance","verticalDistance","excludeDistance","isSplay","_line5","_line6","feetStr","inchesStr","invalid","offset","_line7","_line8","_feetStr","_exclude","h","v","d","_v","_loop$","_context","abrupt","exec","split","indexOf","parseInt","Date","replace","name","date","concat","to","RegExp","add","sqrt","atan2","asin","stop","sent","delegateYield","t0","t1","finish","module","exports","default"],"sources":["src/parseFrcsSurveyFile.ts"],"sourcesContent":["import {\n FrcsShotColumnConfig,\n FrcsSurveyFile,\n defaultFrcsShotColumnConfig,\n} from './FrcsSurveyFile'\nimport { FrcsTrip, FrcsUnits } from './FrcsTrip'\nimport { Segment, SegmentParseError } from 'parse-segment'\nimport {\n Angle,\n Length,\n Unit,\n UnitizedNumber,\n UnitType,\n Unitize,\n} from '@speleotica/unitized'\nimport { FrcsShot, FrcsShotKind } from './FrcsShot'\n\nfunction parseNumber<T extends UnitType<T>>(\n s: string,\n unit: Unit<T>\n): UnitizedNumber<T> | null {\n const value = parseFloat(s)\n if (isNaN(value)) return null\n return new UnitizedNumber(value, unit)\n}\n\nfunction parseAzimuth(\n s: string,\n unit: Unit<Angle>\n): UnitizedNumber<Angle> | null {\n const parsed = parseNumber(s, unit)\n return parsed?.get(Angle.degrees) === 360 ? Unitize.degrees(0) : parsed\n}\n\nfunction parseKind(kind: string): FrcsShotKind {\n switch (kind) {\n case 'H':\n return FrcsShotKind.Horizontal\n case 'D':\n return FrcsShotKind.Diagonal\n default:\n return FrcsShotKind.Normal\n }\n}\n\nfunction parseLengthUnit(unit: string): Unit<Length> | null {\n switch (unit) {\n case 'FI':\n return Length.inches\n case 'FF':\n case 'FT':\n return Length.feet\n case 'MT':\n case 'MM':\n case 'M ':\n return Length.meters\n }\n return null\n}\nfunction parseAngleUnit(unit: string): Unit<Angle> | null {\n switch (unit) {\n case 'D':\n return Angle.degrees\n case 'G':\n return Angle.gradians\n case 'M':\n return Angle.milsNATO\n }\n return null\n}\n\n// determines if a cell contains a valid station name.\nfunction isValidStation(s: string): boolean {\n return /^\\s*\\S+\\s*$/.test(s)\n}\n// determines if a cell contains a valid unsigned integer.\nfunction isValidUInt(s: string): boolean {\n return /^\\s*[0-9]+\\s*$/.test(s)\n}\n// determines if a cell contains a valid float.\nfunction isValidFloat(s: string): boolean {\n return /^\\s*[-+]?([0-9]+(\\.[0-9]*)?|\\.[0-9]+)\\s*$/.test(s)\n}\n// determines if a cell contains a valid unsigned float or whitespace.\nfunction isValidOptFloat(s: string): boolean {\n return /^\\s*[-+]?[0-9]*(\\.[0-9]*)?\\s*$/.test(s)\n}\n// determines if a cell contains a valid unsigned float or whitespace.\nfunction isValidOptUFloat(s: string): boolean {\n return /^\\s*[0-9]*(\\.[0-9]*)?\\s*$/.test(s)\n}\n// determines if a cell contains a valid unsigned float.\nfunction isValidUFloat(s: string): boolean {\n return /^\\s*([0-9]+(\\.[0-9]*)?|\\.[0-9]+)\\s*$/.test(s)\n}\n// determines if a cell contains a valid inclination or whitespace.\nfunction isValidOptInclination(s: string): boolean {\n return /^\\s*[-+]?[0-9]*(\\.[0-9]*)?\\s*$/.test(s)\n}\nfunction parseLrud<T extends UnitType<T>>(\n s: string,\n unit: Unit<Length>\n): UnitizedNumber<Length> | null {\n const value = parseFloat(s)\n return !Number.isFinite(value) || value < 0\n ? null\n : new UnitizedNumber(value, unit)\n}\n\nfunction parseFromStationLruds(\n line: string,\n distanceUnit: Unit<Length>\n): [string, NonNullable<FrcsShot['fromLruds']>] | undefined {\n const fromStr = line.substring(0, 5)\n if (!/^\\s*\\S+$/.test(fromStr)) return undefined\n const gap = line.substring(5, 40)\n if (gap.trim()) return undefined\n const lrudStr = line.substring(40, 52)\n if (!/\\d/.test(lrudStr)) return undefined\n const lStr = line.substring(40, 43)\n const rStr = line.substring(43, 46)\n const uStr = line.substring(46, 49)\n const dStr = line.substring(49, 52)\n if (\n !isValidOptFloat(lStr) ||\n !isValidOptFloat(rStr) ||\n !isValidOptFloat(uStr) ||\n !isValidOptFloat(dStr)\n ) {\n return undefined\n }\n const up = parseLrud(uStr, distanceUnit)\n const down = parseLrud(dStr, distanceUnit)\n const left = parseLrud(lStr, distanceUnit)\n const right = parseLrud(rStr, distanceUnit)\n return [fromStr.trim(), { left, right, up, down }]\n}\n\ntype ColumnRanges = {\n toStation: [number, number]\n fromStation: [number, number]\n distance: [number, number]\n distanceFeet: [number, number]\n distanceInches: [number, number]\n kind: [number, number]\n exclude: [number, number]\n frontsightAzimuth: [number, number]\n backsightAzimuth: [number, number]\n frontsightInclination: [number, number]\n backsightInclination: [number, number]\n left: [number, number]\n right: [number, number]\n up: [number, number]\n down: [number, number]\n}\n\nfunction getColumnRanges(config: FrcsShotColumnConfig): ColumnRanges {\n const result: ColumnRanges = {\n toStation: [0, 0],\n fromStation: [0, 0],\n distance: [0, 0],\n distanceFeet: [0, 0],\n distanceInches: [0, 0],\n kind: [0, 0],\n exclude: [0, 0],\n frontsightAzimuth: [0, 0],\n backsightAzimuth: [0, 0],\n frontsightInclination: [0, 0],\n backsightInclination: [0, 0],\n left: [0, 0],\n right: [0, 0],\n up: [0, 0],\n down: [0, 0],\n }\n\n let c = 0\n for (const [key, value] of Object.entries(config) as [\n keyof FrcsShotColumnConfig,\n FrcsShotColumnConfig[keyof FrcsShotColumnConfig]\n ][]) {\n if (key === 'distanceFeet' || key === 'distanceInches') continue\n result[key][0] = c\n result[key][1] = c + value\n c += value\n }\n if (config.distanceFeet) {\n result.distanceFeet[0] = result.distance[0]\n result.distanceFeet[1] = result.distance[0] + config.distanceFeet\n result.distanceInches[0] = result.distanceFeet[1]\n result.distanceInches[1] = result.distanceFeet[1] + config.distanceInches\n }\n return result\n}\n\nexport type ParseFrcsSurveyFileOptions = { columns?: FrcsShotColumnConfig }\n\n/**\n * Parses a raw cdata.fr survey file. These look like so:\n *\n <pre> Fisher Ridge Cave System, Hart Co., KY\n ENTRANCE DROPS, JOE'S \"I LOVE MY WIFE TRAVERSE\", TRICKY TRAVERSE\n PETER QUICK, KEITH ORTIZ - 2-15-81\n This File has Crumps test connected. 11/20/12\n *\n FT C DD A\n AE20 0 1 3 0 2\n * %FS\n * AE20 0 0 0 Bug-can't put before so put after-so can't make 2 fixed 10/28/12\n AE19 AE20 9.3 60.0 60.0-36.0 2 12 0 20\n AE18 AE19 24.5 0.0 0.0-90.0 6 10 25 0\n AE17 AE18 8.0 350.5 350.5 17.0 3 5 0 0\n AE16 AE17 6.7 0.0 0.0-90.0 3 5 6 1\n AE15 AE16 12.6 70.5 71.0-18.0 4 0 2 1\n AE14 AE15 10.0 21.5 20.0 6.0 5 5 0 3\n AE13 AE14 26.8 288.0 286.0-50.0 0 7 20 5\n *\n *SHORT CANYON AT THE BASE OF THE SECOND DROP\n AE12 AE13 20.7 236.0 236.0 34.0 3 5 4 4\n AE11 AE12 12.4 210.0 210.0 35.0 7 4 5 1\n AE10 AE13 25.7 40.0 40.0 -9.0 2 2 3 6\n *\n *AE10 AT JOE'S \" I LOVE MY WIFE TRAVERSE \"\n AE9 AE10 17.8 32.5 31.0 23.0 4 5 20 15\n AE1 AE9 13.7 82.0 82.0-13.0\n A1 AE1 34.3 46.0 48.0-17.5\n *\n *SURVEY TO DOME NEAR THE ENTRANCE DOME (ABOVE THE SECOND DROP)\n AD1 AE15 8.0 200.0 200.0 0.0 3 1 1 1\n AD2 AD1 17.7 161.0 161.0 7.0 1 4 25 1\n AD3 AD2 10.4 180.0 180.0 50.0 4 1 15 5\n *\n TRICKY TRAVERSE AND THEN FIRST SURVEY IN UPPER CROWLWAY\n DAN CROWL, KEITH ORTIZ, CHIP HOPPER, PETER QUICK, LARRY BEAN 14 FEB 1981\n *\n FI B DD\n A2 A1 48 10 292.0 110.0-42.0 5 10 35 5\n A3 A2 12 5 333.5 153.5 35.0 3 1 15 5\n A4 A3 4 2 0.0 0.0 90.0 3 1 10 10\n ...</pre>\n *\n */\nexport default async function parseFrcsSurveyFile(\n file: any, // eslint-disable-line @typescript-eslint/no-explicit-any\n lines: AsyncIterable<string>,\n { columns = defaultFrcsShotColumnConfig }: ParseFrcsSurveyFileOptions = {}\n): Promise<FrcsSurveyFile> {\n const ranges = getColumnRanges(columns)\n const maxRange = Math.max(...Object.values(ranges).map((r) => r[1]))\n\n let cave: string | null = null\n let location: string | null = null\n const trips: Array<FrcsTrip> = []\n const errors: Array<SegmentParseError> = []\n\n let tripName: string | undefined\n let tripTeam: string[] | undefined\n let tripDate: Date | undefined\n let inTripComment = true\n let tripCommentStartLine = 1\n let tripCommentEndLine = -1\n const tripComment: Array<string> = []\n const commentLines: Array<string> = []\n let trip: FrcsTrip | null = null\n let inBlockComment = false\n let section\n const commentFromStationLruds: Map<\n string,\n NonNullable<FrcsShot['fromLruds']>\n > = new Map()\n\n function addCommentLine(comment: string): void {\n if (trip) {\n const distanceUnit = trip.header.distanceUnit\n const parsedFromStationLruds = parseFromStationLruds(\n comment,\n distanceUnit\n )\n if (parsedFromStationLruds) {\n commentFromStationLruds.set(\n parsedFromStationLruds[0],\n parsedFromStationLruds[1]\n )\n return\n }\n }\n if (commentLines) {\n commentLines.push(comment)\n }\n }\n\n function getComment(): string | null {\n if (!commentLines?.length) return null\n const comment = commentLines.join('\\n').trim()\n commentLines.length = 0\n return comment || null\n }\n\n let unitsChanged = false\n let alternateUnits: FrcsUnits | undefined\n let nextShotUnits: FrcsUnits | undefined\n\n let lineNumber = 0\n let line: string\n\n let errored = false\n\n const error = (\n message: string,\n startColumn: number,\n endColumn: number\n ): void => {\n errored = true\n errors.push(\n new SegmentParseError(\n message,\n new Segment({\n value: line,\n source: file,\n startLine: lineNumber,\n startCol: 0,\n }).substring(startColumn, endColumn)\n )\n )\n }\n\n const parseUnits = (): FrcsUnits => {\n // FT CC DD\n // 01234567\n let distanceUnit = parseLengthUnit(line.slice(0, 2))\n if (!distanceUnit) {\n distanceUnit = Length.feet\n error('Invalid distance unit', 0, 2)\n }\n let azimuthUnit = parseAngleUnit(line[6])\n if (!azimuthUnit) {\n azimuthUnit = Angle.degrees\n error('Invalid azimuth unit', 6, 7)\n }\n let inclinationUnit = parseAngleUnit(line[7])\n if (!inclinationUnit) {\n inclinationUnit = Angle.degrees\n error('Invalid inclination unit', 7, 8)\n }\n const backsightAzimuthCorrected = line[3] === 'C'\n const backsightInclinationCorrected = line[4] === 'C'\n const hasBacksightAzimuth = line[3] !== ' ' && line[3] !== '-'\n const hasBacksightInclination = line[4] !== ' ' && line[4] !== '-'\n\n if (!/[-CB ]/.test(line[3])) {\n error('Invalid backsight azimuth type', 3, 4)\n }\n if (!/[-CB ]/.test(line[4])) {\n error('Invalid backsight inclination type', 4, 5)\n }\n\n return {\n distanceUnit,\n azimuthUnit,\n inclinationUnit,\n backsightAzimuthCorrected,\n backsightInclinationCorrected,\n hasBacksightAzimuth,\n hasBacksightInclination,\n }\n }\n\n const validate = (\n startColumn: number,\n endColumn: number,\n fieldName: string,\n validator: (value: string) => boolean\n ): string => {\n const field = line.substring(startColumn, endColumn)\n if (!validator(field)) {\n error(\n (field.trim() ? 'Invalid ' : 'Missing ') + fieldName,\n startColumn,\n endColumn\n )\n }\n return field\n }\n\n const addShot = (shot: FrcsShot) => {\n if (!trip) return\n if (alternateUnits) {\n const recorded: FrcsShot & { units?: FrcsUnits } = shot\n shot = {\n ...shot,\n recorded,\n }\n if (nextShotUnits) {\n recorded.units = nextShotUnits\n nextShotUnits = undefined\n }\n const {\n backsightAzimuthCorrected,\n backsightInclinationCorrected,\n distanceUnit,\n azimuthUnit,\n inclinationUnit,\n } = trip.header\n if (\n alternateUnits.backsightAzimuthCorrected !== backsightAzimuthCorrected\n ) {\n shot.backsightAzimuth = shot.backsightAzimuth\n ? Angle.opposite(shot.backsightAzimuth)\n : undefined\n }\n if (\n alternateUnits.backsightInclinationCorrected !==\n backsightInclinationCorrected\n ) {\n shot.backsightInclination = shot.backsightInclination?.negate()\n }\n if (distanceUnit !== alternateUnits.distanceUnit) {\n shot.distance = shot.distance.in(distanceUnit)\n if (shot.fromLruds) {\n shot.fromLruds.left = shot.fromLruds.left?.in(distanceUnit)\n shot.fromLruds.right = shot.fromLruds.right?.in(distanceUnit)\n shot.fromLruds.up = shot.fromLruds.up?.in(distanceUnit)\n shot.fromLruds.down = shot.fromLruds.down?.in(distanceUnit)\n }\n if (shot.toLruds) {\n shot.toLruds.left = shot.toLruds.left?.in(distanceUnit)\n shot.toLruds.right = shot.toLruds.right?.in(distanceUnit)\n shot.toLruds.up = shot.toLruds.up?.in(distanceUnit)\n shot.toLruds.down = shot.toLruds.down?.in(distanceUnit)\n }\n }\n if (azimuthUnit !== alternateUnits.azimuthUnit) {\n shot.frontsightAzimuth = shot.frontsightAzimuth?.in(azimuthUnit)\n shot.backsightAzimuth = shot.backsightAzimuth?.in(azimuthUnit)\n }\n if (inclinationUnit !== alternateUnits.inclinationUnit) {\n shot.frontsightInclination =\n shot.frontsightInclination?.in(inclinationUnit)\n shot.backsightInclination =\n shot.backsightInclination?.in(inclinationUnit)\n }\n }\n trip.shots.push(shot)\n }\n\n let began = false\n\n for await (line of lines) {\n errored = false\n\n lineNumber++\n\n if (!began) {\n if (/^\\s+\\*/.test(line)) {\n lineNumber++\n continue\n }\n began = true\n const match = /^\\s*([^,]+)(,(.*))?/.exec(line)\n if (match) {\n cave = match[1].trim()\n if (match[3]) {\n location = match[3].trim()\n }\n }\n }\n\n if (unitsChanged) {\n unitsChanged = false\n alternateUnits = parseUnits()\n nextShotUnits = alternateUnits\n } else if (/^\\s{1,8}\\*/.test(line)) {\n inTripComment = !inTripComment\n alternateUnits = nextShotUnits = undefined\n unitsChanged = false\n if (inTripComment) {\n section = undefined\n tripTeam = undefined\n tripDate = undefined\n tripComment.length = 0\n tripCommentStartLine = lineNumber\n } else {\n tripCommentEndLine = lineNumber\n }\n } else if (inTripComment) {\n if (lineNumber === tripCommentStartLine + 1) {\n tripName = line && line.trim()\n } else if (lineNumber === tripCommentStartLine + 2) {\n const match = /^(.+?,.+?)\\s*(?:[-.](.*))?$/.exec(line && line.trim())\n if (match) {\n let k = 1\n const team = match[k++]\n tripTeam = team.split(\n team.indexOf(';') >= 0 ? /\\s*;\\s*/g : /\\s*,\\s*/g\n )\n const dateMatch = /^(\\d+)[-/](\\d+)[-/](\\d+)$/.exec(match[k++]?.trim())\n if (dateMatch) {\n const month = parseInt(dateMatch[1])\n const day = parseInt(dateMatch[2])\n const year = parseInt(dateMatch[3])\n tripDate = new Date(year < 70 ? year + 2000 : year, month - 1, day)\n }\n }\n } else if (lineNumber > 1) {\n tripComment.push(line)\n }\n const match = /^\\*\\*\\*([^*])\\*\\*\\*/.exec(line)\n if (match) {\n section = match[1].trim()\n }\n } else if (/^(\\s{9,}|)\\*/.test(line)) {\n if (/^\\*\\s*%NC(\\b|$)/.test(line)) {\n unitsChanged = true\n }\n if (/^\\*\\s*%/.test(line)) {\n continue\n }\n if (/[^\\s*]/.test(line)) {\n addCommentLine(line.replace(/^\\s*\\*/, ''))\n inBlockComment = false\n } else {\n inBlockComment = !inBlockComment\n if (inBlockComment) commentLines.length = 0\n }\n } else if (inBlockComment) {\n addCommentLine(line)\n } else if (lineNumber === tripCommentEndLine + 1) {\n trip = {\n header: {\n name: tripName || '',\n comment: (tripComment && tripComment.join('\\n')) || null,\n section,\n date: tripDate,\n team: tripTeam,\n ...parseUnits(),\n },\n shots: [],\n }\n trips.push(trip)\n } else if (trip) {\n let { distanceUnit } = alternateUnits || trip.header\n const { azimuthUnit, inclinationUnit } = alternateUnits || trip.header\n\n const inches = distanceUnit === Length.inches\n if (inches) distanceUnit = Length.feet\n\n // rigorously check the values in all the columns to make sure this\n // is really a survey shot line, just in case any stray comments are\n // not properly delimited.\n\n // from station name\n if (!/\\S/.test(line.substring(...ranges.fromStation))) continue\n const fromStr = validate(\n ...ranges.fromStation,\n 'from station',\n isValidStation\n )\n const from = fromStr.trim()\n\n // Sadly I have found negative LRUD values in Chip's format and apparently\n // his program doesn't fail on them, so I have to accept them here\n // isValidOptFloat instead of isValidOptUFloat\n const lStr = validate(...ranges.left, 'left', isValidOptFloat)\n const rStr = validate(...ranges.right, 'right', isValidOptFloat)\n const uStr = validate(...ranges.up, 'up', isValidOptFloat)\n const dStr = validate(...ranges.down, 'down', isValidOptFloat)\n\n if (errored) continue\n\n const up = parseLrud(uStr, distanceUnit)\n const down = parseLrud(dStr, distanceUnit)\n const left = parseLrud(lStr, distanceUnit)\n const right = parseLrud(rStr, distanceUnit)\n\n // to station name\n const toStr = line.substring(...ranges.toStation)\n if (!toStr.trim()) {\n const shot: FrcsShot = {\n from,\n to: null,\n kind: FrcsShotKind.Normal,\n distance: new UnitizedNumber(0, distanceUnit),\n frontsightAzimuth: null,\n backsightAzimuth: null,\n frontsightInclination: null,\n backsightInclination: null,\n fromLruds: {\n left,\n right,\n up,\n down,\n },\n excludeDistance: true,\n comment: getComment(),\n }\n addShot(shot)\n continue\n }\n if (!isValidStation(toStr)) {\n error('Invalid station name', ...ranges.toStation)\n }\n\n let fromLruds = commentFromStationLruds.get(from)\n if (fromLruds) {\n commentFromStationLruds.delete(from)\n } else {\n const fromLrudMatch = new RegExp(\n `^\\\\s+${fromStr\n .trim()\n .replace(\n /[.*+?^${}()|[\\]\\\\]/g,\n '\\\\$&'\n )}((\\\\s+(\\\\d+(\\\\.\\\\d*)?|\\\\.\\\\d+)){4})`\n ).exec(line.substring(maxRange))\n if (fromLrudMatch) {\n const [left, right, up, down] = fromLrudMatch[1]\n .trim()\n .split(/\\s+/g)\n .map((s) => parseLrud(s, distanceUnit))\n fromLruds = { left, right, up, down }\n }\n }\n\n const comment = getComment()\n\n // azimuth and inclination\n const azmFsStr = validate(\n ...ranges.frontsightAzimuth,\n 'azimuth',\n isValidOptUFloat\n )\n const azmBsStr = validate(\n ...ranges.backsightAzimuth,\n 'azimuth',\n isValidOptUFloat\n )\n const incFsStr = line.substring(...ranges.frontsightInclination)\n const incBsStr = line.substring(...ranges.backsightInclination)\n\n if (errored) continue\n\n let kind: FrcsShotKind\n let distance: UnitizedNumber<Length>\n let horizontalDistance: UnitizedNumber<Length> | undefined\n let verticalDistance: UnitizedNumber<Length> | undefined\n let frontsightInclination: UnitizedNumber<Angle> | null\n let backsightInclination: UnitizedNumber<Angle> | null\n let excludeDistance: boolean\n let isSplay: boolean\n\n // parse distance\n if (inches) {\n const feetStr = line.substring(...ranges.distanceFeet)\n const inchesStr = line.substring(...ranges.distanceInches)\n // feet and inches are not both optional\n if (!isValidUInt(feetStr) && !isValidUInt(inchesStr)) {\n const invalid = feetStr.trim() || inchesStr.trim()\n error(\n invalid ? 'Invalid distance' : 'Missing distance',\n ranges.distanceFeet[0],\n ranges.distanceInches[1]\n )\n continue\n }\n\n // sometimes inches are omitted, hence the || 0...I'm assuming it's possible\n // for feet to be omitted as well\n distance = Unitize.inches(parseFloat(inchesStr) || 0).add(\n Unitize.feet(parseFloat(feetStr) || 0)\n )\n\n const offset =\n ranges.kind[0] === ranges.distance[1]\n ? ranges.distanceInches[1] - ranges.distance[1]\n : 0\n kind = parseKind(\n line\n .substring(ranges.kind[0] + offset, ranges.kind[1] + offset)\n .trim()\n )\n const exclude = line\n .substring(ranges.exclude[0] + offset, ranges.exclude[1] + offset)\n .trim()\n // NOTE there are two columns around here that can contain a *.\n // I think they might represent different values, but thisis confused by\n // the fact that for ft/in shots, if there is a D or H flag it occupies the\n // first column that can contain a * for decimal feet shots\n excludeDistance = exclude === '*' || exclude === 's'\n isSplay = exclude === 's'\n } else {\n // decimal feet are not optional\n const feetStr = validate(...ranges.distance, 'distance', isValidUFloat)\n distance = new UnitizedNumber(parseFloat(feetStr), distanceUnit)\n kind = parseKind(line.substring(...ranges.kind).trim())\n const exclude = line.substring(...ranges.exclude).trim()\n excludeDistance = exclude === '*' || exclude === 's'\n isSplay = exclude === 's'\n }\n\n if (kind !== FrcsShotKind.Normal) {\n validate(\n ...ranges.frontsightInclination,\n 'vertical-distance',\n isValidFloat\n )\n }\n\n // convert horizontal and diagonal shots to standard\n // in this case incFs is the vertical offset between stations\n // fortunately it appears we can always count on incFs being specified\n // and incBs not being specified for these types of shots\n if (kind === FrcsShotKind.Horizontal) {\n // distance is horizontal offset and incFsStr is vertical offset\n horizontalDistance = distance\n const h = horizontalDistance.get(distanceUnit)\n const v = parseFloat(incFsStr)\n verticalDistance = new UnitizedNumber(v, distanceUnit)\n distance = new UnitizedNumber(Math.sqrt(h * h + v * v), distanceUnit)\n frontsightInclination = Angle.atan2(\n verticalDistance,\n horizontalDistance\n )\n backsightInclination = null\n } else if (kind === FrcsShotKind.Diagonal) {\n // distance is as usual, but incFsStr is vertical offset\n const d = distance.get(distanceUnit)\n const v = parseFloat(incFsStr)\n verticalDistance = new UnitizedNumber(v, distanceUnit)\n frontsightInclination = Angle.asin(v / d)\n backsightInclination = null\n } else {\n // frontsight inclination\n validate(\n ...ranges.frontsightInclination,\n 'inclination',\n isValidOptInclination\n )\n // backsight inclination\n validate(\n ...ranges.backsightInclination,\n 'inclination',\n isValidOptInclination\n )\n frontsightInclination = parseNumber(incFsStr, inclinationUnit)\n backsightInclination = parseNumber(incBsStr, inclinationUnit)\n }\n if (errored) continue\n\n const frontsightAzimuth = parseAzimuth(azmFsStr, azimuthUnit)\n const backsightAzimuth = parseAzimuth(azmBsStr, azimuthUnit)\n\n if (!frontsightInclination && !backsightInclination) {\n frontsightInclination = Unitize.degrees(0)\n }\n\n const shot: FrcsShot = {\n from,\n to: toStr.trim(),\n kind,\n distance,\n frontsightAzimuth,\n backsightAzimuth,\n frontsightInclination,\n backsightInclination,\n toLruds: {\n left,\n right,\n up,\n down,\n },\n excludeDistance,\n comment,\n }\n if (isSplay) shot.isSplay = true\n if (fromLruds) shot.fromLruds = fromLruds\n if (horizontalDistance) shot.horizontalDistance = horizontalDistance\n if (verticalDistance) shot.verticalDistance = verticalDistance\n addShot(shot)\n }\n }\n\n return {\n cave,\n columns,\n location,\n trips,\n errors,\n }\n}\n"],"mappings":";;;;;;;;;;;;AAAA,IAAAA,eAAA,GAAAC,OAAA;AAMA,IAAAC,aAAA,GAAAD,OAAA;AACA,IAAAE,SAAA,GAAAF,OAAA;AAQA,IAAAG,SAAA,GAAAH,OAAA;AAAmD,SAAAI,QAAAC,CAAA,EAAAC,CAAA,QAAAC,CAAA,GAAAC,MAAA,CAAAC,IAAA,CAAAJ,CAAA,OAAAG,MAAA,CAAAE,qBAAA,QAAAC,CAAA,GAAAH,MAAA,CAAAE,qBAAA,CAAAL,CAAA,GAAAC,CAAA,KAAAK,CAAA,GAAAA,CAAA,CAAAC,MAAA,WAAAN,CAAA,WAAAE,MAAA,CAAAK,wBAAA,CAAAR,CAAA,EAAAC,CAAA,EAAAQ,UAAA,OAAAP,CAAA,CAAAQ,IAAA,CAAAC,KAAA,CAAAT,CAAA,EAAAI,CAAA,YAAAJ,CAAA;AAAA,SAAAU,cAAAZ,CAAA,aAAAC,CAAA,MAAAA,CAAA,GAAAY,SAAA,CAAAC,MAAA,EAAAb,CAAA,UAAAC,CAAA,WAAAW,SAAA,CAAAZ,CAAA,IAAAY,SAAA,CAAAZ,CAAA,QAAAA,CAAA,OAAAF,OAAA,CAAAI,MAAA,CAAAD,CAAA,OAAAa,OAAA,WAAAd,CAAA,QAAAe,gBAAA,aAAAhB,CAAA,EAAAC,CAAA,EAAAC,CAAA,CAAAD,CAAA,SAAAE,MAAA,CAAAc,yBAAA,GAAAd,MAAA,CAAAe,gBAAA,CAAAlB,CAAA,EAAAG,MAAA,CAAAc,yBAAA,CAAAf,CAAA,KAAAH,OAAA,CAAAI,MAAA,CAAAD,CAAA,GAAAa,OAAA,WAAAd,CAAA,IAAAE,MAAA,CAAAgB,cAAA,CAAAnB,CAAA,EAAAC,CAAA,EAAAE,MAAA,CAAAK,wBAAA,CAAAN,CAAA,EAAAD,CAAA,iBAAAD,CAAA;AAAA,SAAAoB,eAAAnB,CAAA,QAAAoB,CAAA,EAAAnB,CAAA,EAAAI,CAAA,EAAAN,CAAA,iCAAAsB,MAAA,KAAApB,CAAA,GAAAoB,MAAA,CAAAC,aAAA,EAAAjB,CAAA,GAAAgB,MAAA,CAAAE,QAAA,GAAAxB,CAAA,WAAAE,CAAA,aAAAmB,CAAA,GAAApB,CAAA,CAAAC,CAAA,WAAAmB,CAAA,CAAAI,IAAA,CAAAxB,CAAA,OAAAK,CAAA,aAAAe,CAAA,GAAApB,CAAA,CAAAK,CAAA,eAAAoB,qBAAA,CAAAL,CAAA,CAAAI,IAAA,CAAAxB,CAAA,IAAAC,CAAA,sBAAAI,CAAA,6BAAAqB,SAAA;AAAA,SAAAD,sBAAAzB,CAAA,aAAA2B,kCAAA3B,CAAA,QAAAE,MAAA,CAAAF,CAAA,MAAAA,CAAA,SAAA4B,OAAA,CAAAC,MAAA,KAAAH,SAAA,CAAA1B,CAAA,+BAAAoB,CAAA,GAAApB,CAAA,CAAA8B,IAAA,SAAAF,OAAA,CAAAG,OAAA,CAAA/B,CAAA,CAAAgC,KAAA,EAAAC,IAAA,WAAAjC,CAAA,aAAAgC,KAAA,EAAAhC,CAAA,EAAA8B,IAAA,EAAAV,CAAA,iBAAAK,qBAAA,YAAAA,sBAAAzB,CAAA,SAAAkC,CAAA,GAAAlC,CAAA,OAAAoB,CAAA,GAAApB,CAAA,CAAAmC,IAAA,KAAAV,qBAAA,CAAAW,SAAA,KAAAF,CAAA,QAAAd,CAAA,QAAAe,IAAA,WAAAA,KAAA,WAAAR,iCAAA,MAAAP,CAAA,CAAAV,KAAA,MAAAwB,CAAA,EAAAtB,SAAA,0BAAAyB,QAAArC,CAAA,QAAAoB,CAAA,QAAAc,CAAA,8BAAAd,CAAA,GAAAQ,OAAA,CAAAG,OAAA,GAAAC,KAAA,EAAAhC,CAAA,EAAA8B,IAAA,UAAAH,iCAAA,CAAAP,CAAA,CAAAV,KAAA,MAAAwB,CAAA,EAAAtB,SAAA,yBAAA0B,OAAAtC,CAAA,QAAAoB,CAAA,QAAAc,CAAA,8BAAAd,CAAA,GAAAQ,OAAA,CAAAC,MAAA,CAAA7B,CAAA,IAAA2B,iCAAA,CAAAP,CAAA,CAAAV,KAAA,MAAAwB,CAAA,EAAAtB,SAAA,aAAAa,qBAAA,CAAAzB,CAAA;AAEnD,SAASuC,WAAWA,CAClBL,CAAS,EACTM,IAAa,EACa;EAC1B,IAAMR,KAAK,GAAGS,UAAU,CAACP,CAAC,CAAC;EAC3B,IAAIQ,KAAK,CAACV,KAAK,CAAC,EAAE,OAAO,IAAI;EAC7B,OAAO,IAAIW,wBAAc,CAACX,KAAK,EAAEQ,IAAI,CAAC;AACxC;AAEA,SAASI,YAAYA,CACnBV,CAAS,EACTM,IAAiB,EACa;EAC9B,IAAMK,MAAM,GAAGN,WAAW,CAACL,CAAC,EAAEM,IAAI,CAAC;EACnC,OAAO,CAAAK,MAAM,aAANA,MAAM,uBAANA,MAAM,CAAEC,GAAG,CAACC,eAAK,CAACC,OAAO,CAAC,MAAK,GAAG,GAAGC,iBAAO,CAACD,OAAO,CAAC,CAAC,CAAC,GAAGH,MAAM;AACzE;AAEA,SAASK,SAASA,CAACC,IAAY,EAAgB;EAC7C,QAAQA,IAAI;IACV,KAAK,GAAG;MACN,OAAOC,sBAAY,CAACC,UAAU;IAChC,KAAK,GAAG;MACN,OAAOD,sBAAY,CAACE,QAAQ;IAC9B;MACE,OAAOF,sBAAY,CAACG,MAAM;EAC9B;AACF;AAEA,SAASC,eAAeA,CAAChB,IAAY,EAAuB;EAC1D,QAAQA,IAAI;IACV,KAAK,IAAI;MACP,OAAOiB,gBAAM,CAACC,MAAM;IACtB,KAAK,IAAI;IACT,KAAK,IAAI;MACP,OAAOD,gBAAM,CAACE,IAAI;IACpB,KAAK,IAAI;IACT,KAAK,IAAI;IACT,KAAK,IAAI;MACP,OAAOF,gBAAM,CAACG,MAAM;EACxB;EACA,OAAO,IAAI;AACb;AACA,SAASC,cAAcA,CAACrB,IAAY,EAAsB;EACxD,QAAQA,IAAI;IACV,KAAK,GAAG;MACN,OAAOO,eAAK,CAACC,OAAO;IACtB,KAAK,GAAG;MACN,OAAOD,eAAK,CAACe,QAAQ;IACvB,KAAK,GAAG;MACN,OAAOf,eAAK,CAACgB,QAAQ;EACzB;EACA,OAAO,IAAI;AACb;;AAEA;AACA,SAASC,cAAcA,CAAC9B,CAAS,EAAW;EAC1C,OAAO,aAAa,CAAC+B,IAAI,CAAC/B,CAAC,CAAC;AAC9B;AACA;AACA,SAASgC,WAAWA,CAAChC,CAAS,EAAW;EACvC,OAAO,gBAAgB,CAAC+B,IAAI,CAAC/B,CAAC,CAAC;AACjC;AACA;AACA,SAASiC,YAAYA,CAACjC,CAAS,EAAW;EACxC,OAAO,2CAA2C,CAAC+B,IAAI,CAAC/B,CAAC,CAAC;AAC5D;AACA;AACA,SAASkC,eAAeA,CAAClC,CAAS,EAAW;EAC3C,OAAO,gCAAgC,CAAC+B,IAAI,CAAC/B,CAAC,CAAC;AACjD;AACA;AACA,SAASmC,gBAAgBA,CAACnC,CAAS,EAAW;EAC5C,OAAO,2BAA2B,CAAC+B,IAAI,CAAC/B,CAAC,CAAC;AAC5C;AACA;AACA,SAASoC,aAAaA,CAACpC,CAAS,EAAW;EACzC,OAAO,sCAAsC,CAAC+B,IAAI,CAAC/B,CAAC,CAAC;AACvD;AACA;AACA,SAASqC,qBAAqBA,CAACrC,CAAS,EAAW;EACjD,OAAO,gCAAgC,CAAC+B,IAAI,CAAC/B,CAAC,CAAC;AACjD;AACA,SAASsC,SAASA,CAChBtC,CAAS,EACTM,IAAkB,EACa;EAC/B,IAAMR,KAAK,GAAGS,UAAU,CAACP,CAAC,CAAC;EAC3B,OAAO,CAACuC,MAAM,CAACC,QAAQ,CAAC1C,KAAK,CAAC,IAAIA,KAAK,GAAG,CAAC,GACvC,IAAI,GACJ,IAAIW,wBAAc,CAACX,KAAK,EAAEQ,IAAI,CAAC;AACrC;AAEA,SAASmC,qBAAqBA,CAC5BC,IAAY,EACZC,YAA0B,EACgC;EAC1D,IAAMC,OAAO,GAAGF,IAAI,CAACG,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC;EACpC,IAAI,CAAC,UAAU,CAACd,IAAI,CAACa,OAAO,CAAC,EAAE,OAAOE,SAAS;EAC/C,IAAMC,GAAG,GAAGL,IAAI,CAACG,SAAS,CAAC,CAAC,EAAE,EAAE,CAAC;EACjC,IAAIE,GAAG,CAACC,IAAI,CAAC,CAAC,EAAE,OAAOF,SAAS;EAChC,IAAMG,OAAO,GAAGP,IAAI,CAACG,SAAS,CAAC,EAAE,EAAE,EAAE,CAAC;EACtC,IAAI,CAAC,IAAI,CAACd,IAAI,CAACkB,OAAO,CAAC,EAAE,OAAOH,SAAS;EACzC,IAAMI,IAAI,GAAGR,IAAI,CAACG,SAAS,CAAC,EAAE,EAAE,EAAE,CAAC;EACnC,IAAMM,IAAI,GAAGT,IAAI,CAACG,SAAS,CAAC,EAAE,EAAE,EAAE,CAAC;EACnC,IAAMO,IAAI,GAAGV,IAAI,CAACG,SAAS,CAAC,EAAE,EAAE,EAAE,CAAC;EACnC,IAAMQ,IAAI,GAAGX,IAAI,CAACG,SAAS,CAAC,EAAE,EAAE,EAAE,CAAC;EACnC,IACE,CAACX,eAAe,CAACgB,IAAI,CAAC,IACtB,CAAChB,eAAe,CAACiB,IAAI,CAAC,IACtB,CAACjB,eAAe,CAACkB,IAAI,CAAC,IACtB,CAAClB,eAAe,CAACmB,IAAI,CAAC,EACtB;IACA,OAAOP,SAAS;EAClB;EACA,IAAMQ,EAAE,GAAGhB,SAAS,CAACc,IAAI,EAAET,YAAY,CAAC;EACxC,IAAMY,IAAI,GAAGjB,SAAS,CAACe,IAAI,EAAEV,YAAY,CAAC;EAC1C,IAAMa,IAAI,GAAGlB,SAAS,CAACY,IAAI,EAAEP,YAAY,CAAC;EAC1C,IAAMc,KAAK,GAAGnB,SAAS,CAACa,IAAI,EAAER,YAAY,CAAC;EAC3C,OAAO,CAACC,OAAO,CAACI,IAAI,CAAC,CAAC,EAAE;IAAEQ,IAAI,EAAJA,IAAI;IAAEC,KAAK,EAALA,KAAK;IAAEH,EAAE,EAAFA,EAAE;IAAEC,IAAI,EAAJA;EAAK,CAAC,CAAC;AACpD;AAoBA,SAASG,eAAeA,CAACC,MAA4B,EAAgB;EACnE,IAAMC,MAAoB,GAAG;IAC3BC,SAAS,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;IACjBC,WAAW,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;IACnBC,QAAQ,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;IAChBC,YAAY,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;IACpBC,cAAc,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;IACtBhD,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;IACZiD,OAAO,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;IACfC,iBAAiB,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;IACzBC,gBAAgB,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;IACxBC,qBAAqB,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;IAC7BC,oBAAoB,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;IAC5Bd,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;IACZC,KAAK,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;IACbH,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;IACVC,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC;EACb,CAAC;EAED,IAAIgB,CAAC,GAAG,CAAC;EACT,SAAAC,EAAA,MAAAC,IAAA,GAA2BzG,MAAM,CAAC0G,OAAO,CAACf,MAAM,CAAC,EAAAa,EAAA,GAAAC,IAAA,CAAA9F,MAAA,EAAA6F,EAAA,IAG5C;IAHA,IAAAG,OAAA,OAAAC,eAAA,aAAAH,IAAA,CAAAD,EAAA;MAAOK,GAAG,GAAAF,OAAA;MAAE7E,KAAK,GAAA6E,OAAA;IAIpB,IAAIE,GAAG,KAAK,cAAc,IAAIA,GAAG,KAAK,gBAAgB,EAAE;IACxDjB,MAAM,CAACiB,GAAG,CAAC,CAAC,CAAC,CAAC,GAAGN,CAAC;IAClBX,MAAM,CAACiB,GAAG,CAAC,CAAC,CAAC,CAAC,GAAGN,CAAC,GAAGzE,KAAK;IAC1ByE,CAAC,IAAIzE,KAAK;EACZ;EACA,IAAI6D,MAAM,CAACK,YAAY,EAAE;IACvBJ,MAAM,CAACI,YAAY,CAAC,CAAC,CAAC,GAAGJ,MAAM,CAACG,QAAQ,CAAC,CAAC,CAAC;IAC3CH,MAAM,CAACI,YAAY,CAAC,CAAC,CAAC,GAAGJ,MAAM,CAACG,QAAQ,CAAC,CAAC,CAAC,GAAGJ,MAAM,CAACK,YAAY;IACjEJ,MAAM,CAACK,cAAc,CAAC,CAAC,CAAC,GAAGL,MAAM,CAACI,YAAY,CAAC,CAAC,CAAC;IACjDJ,MAAM,CAACK,cAAc,CAAC,CAAC,CAAC,GAAGL,MAAM,CAACI,YAAY,CAAC,CAAC,CAAC,GAAGL,MAAM,CAACM,cAAc;EAC3E;EACA,OAAOL,MAAM;AACf;AAIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA5CA,SA6C8BkB,mBAAmBA,CAAAC,EAAA,EAAAC,GAAA;EAAA,OAAAC,oBAAA,CAAAzG,KAAA,OAAAE,SAAA;AAAA;AAAA,SAAAuG,qBAAA;EAAAA,oBAAA,OAAAC,kBAAA,2BAAAC,YAAA,YAAAC,IAAA,CAAlC,SAAAC,QACbC,IAAS;EAAE;EACXC,KAA4B;IAAA,IAAAC,IAAA;MAAAC,YAAA;MAAAC,OAAA;MAAAC,MAAA;MAAAC,QAAA;MAAAC,IAAA;MAAAC,QAAA;MAAAC,KAAA;MAAAC,MAAA;MAAAC,QAAA;MAAAC,QAAA;MAAAC,QAAA;MAAAC,aAAA;MAAAC,oBAAA;MAAAC,kBAAA;MAAAC,WAAA;MAAAC,YAAA;MAAAC,IAAA;MAAAC,cAAA;MAAAC,OAAA;MAAAC,uBAAA;MA2BnBC,cAAc;MAoBdC,UAAU;MAAAC,YAAA;MAAAC,cAAA;MAAAC,aAAA;MAAAC,UAAA;MAAAxE,IAAA;MAAAyE,OAAA;MAAAC,KAAA;MAAAC,UAAA;MAAAC,QAAA;MAAAC,OAAA;MAAAC,KAAA;MAAAC,yBAAA;MAAAC,iBAAA;MAAAC,cAAA;MAAAC,KAAA;MAAAC,IAAA;MAAAC,SAAA;MAAAC,KAAA;MAAAC,MAAA,GAAAtJ,SAAA;IAAA,OAAAyG,YAAA,YAAA8C,IAAA,UAAAC,SAAAC,SAAA;MAAA,kBAAAA,SAAA,CAAAC,IAAA,GAAAD,SAAA,CAAAlI,IAAA;QAAA;UAAV6G,UAAU,YAAAuB,YAAA,EAAkB;YACnC,IAAI,EAAC7B,YAAY,aAAZA,YAAY,eAAZA,YAAY,CAAE7H,MAAM,GAAE,OAAO,IAAI;YACtC,IAAM2J,OAAO,GAAG9B,YAAY,CAAC+B,IAAI,CAAC,IAAI,CAAC,CAACvF,IAAI,CAAC,CAAC;YAC9CwD,YAAY,CAAC7H,MAAM,GAAG,CAAC;YACvB,OAAO2J,OAAO,IAAI,IAAI;UACxB,CAAC;UAzBQzB,cAAc,YAAA2B,gBAACF,OAAe,EAAQ;YAC7C,IAAI7B,IAAI,EAAE;cACR,IAAM9D,YAAY,GAAG8D,IAAI,CAACgC,MAAM,CAAC9F,YAAY;cAC7C,IAAM+F,sBAAsB,GAAGjG,qBAAqB,CAClD6F,OAAO,EACP3F,YACF,CAAC;cACD,IAAI+F,sBAAsB,EAAE;gBAC1B9B,uBAAuB,CAAC+B,GAAG,CACzBD,sBAAsB,CAAC,CAAC,CAAC,EACzBA,sBAAsB,CAAC,CAAC,CAC1B,CAAC;gBACD;cACF;YACF;YACA,IAAIlC,YAAY,EAAE;cAChBA,YAAY,CAACjI,IAAI,CAAC+J,OAAO,CAAC;YAC5B;UACF,CAAC;UAAA9C,IAAA,GAAAwC,MAAA,CAAArJ,MAAA,QAAAqJ,MAAA,QAAAlF,SAAA,GAAAkF,MAAA,MA5CuE,CAAC,CAAC,EAAAvC,YAAA,GAAAD,IAAA,CAAxEE,OAAO,EAAPA,OAAO,GAAAD,YAAA,cAAGmD,2CAA2B,GAAAnD,YAAA;UAEjCE,MAAM,GAAGjC,eAAe,CAACgC,OAAO,CAAC;UACjCE,QAAQ,GAAGiD,IAAI,CAACC,GAAG,CAAAtK,KAAA,CAARqK,IAAI,MAAAE,mBAAA,aAAQ/K,MAAM,CAACgL,MAAM,CAACrD,MAAM,CAAC,CAACsD,GAAG,CAAC,UAACnL,CAAC;YAAA,OAAKA,CAAC,CAAC,CAAC,CAAC;UAAA,EAAC,EAAC;UAEhE+H,IAAmB,GAAG,IAAI;UAC1BC,QAAuB,GAAG,IAAI;UAC5BC,KAAsB,GAAG,EAAE;UAC3BC,MAAgC,GAAG,EAAE;UAKvCI,aAAa,GAAG,IAAI;UACpBC,oBAAoB,GAAG,CAAC;UACxBC,kBAAkB,GAAG,CAAC,CAAC;UACrBC,WAA0B,GAAG,EAAE;UAC/BC,YAA2B,GAAG,EAAE;UAClCC,IAAqB,GAAG,IAAI;UAC5BC,cAAc,GAAG,KAAK;UAEpBE,uBAGL,GAAG,IAAIsC,GAAG,CAAC,CAAC;UA6BTnC,YAAY,GAAG,KAAK;UAIpBG,UAAU,GAAG,CAAC;UAGdC,OAAO,GAAG,KAAK;UAEbC,KAAK,GAAG,SAARA,KAAKA,CACT+B,OAAe,EACfC,WAAmB,EACnBC,SAAiB,EACR;YACTlC,OAAO,GAAG,IAAI;YACdnB,MAAM,CAACzH,IAAI,CACT,IAAI+K,+BAAiB,CACnBH,OAAO,EACP,IAAII,qBAAO,CAAC;cACVzJ,KAAK,EAAE4C,IAAI;cACX8G,MAAM,EAAElE,IAAI;cACZmE,SAAS,EAAEvC,UAAU;cACrBwC,QAAQ,EAAE;YACZ,CAAC,CAAC,CAAC7G,SAAS,CAACuG,WAAW,EAAEC,SAAS,CACrC,CACF,CAAC;UACH,CAAC;UAEKhC,UAAU,GAAG,SAAbA,UAAUA,CAAA,EAAoB;YAClC;YACA;YACA,IAAI1E,YAAY,GAAGrB,eAAe,CAACoB,IAAI,CAACiH,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;YACpD,IAAI,CAAChH,YAAY,EAAE;cACjBA,YAAY,GAAGpB,gBAAM,CAACE,IAAI;cAC1B2F,KAAK,CAAC,uBAAuB,EAAE,CAAC,EAAE,CAAC,CAAC;YACtC;YACA,IAAIwC,WAAW,GAAGjI,cAAc,CAACe,IAAI,CAAC,CAAC,CAAC,CAAC;YACzC,IAAI,CAACkH,WAAW,EAAE;cAChBA,WAAW,GAAG/I,eAAK,CAACC,OAAO;cAC3BsG,KAAK,CAAC,sBAAsB,EAAE,CAAC,EAAE,CAAC,CAAC;YACrC;YACA,IAAIyC,eAAe,GAAGlI,cAAc,CAACe,IAAI,CAAC,CAAC,CAAC,CAAC;YAC7C,IAAI,CAACmH,eAAe,EAAE;cACpBA,eAAe,GAAGhJ,eAAK,CAACC,OAAO;cAC/BsG,KAAK,CAAC,0BAA0B,EAAE,CAAC,EAAE,CAAC,CAAC;YACzC;YACA,IAAM0C,yBAAyB,GAAGpH,IAAI,CAAC,CAAC,CAAC,KAAK,GAAG;YACjD,IAAMqH,6BAA6B,GAAGrH,IAAI,CAAC,CAAC,CAAC,KAAK,GAAG;YACrD,IAAMsH,mBAAmB,GAAGtH,IAAI,CAAC,CAAC,CAAC,KAAK,GAAG,IAAIA,IAAI,CAAC,CAAC,CAAC,KAAK,GAAG;YAC9D,IAAMuH,uBAAuB,GAAGvH,IAAI,CAAC,CAAC,CAAC,KAAK,GAAG,IAAIA,IAAI,CAAC,CAAC,CAAC,KAAK,GAAG;YAElE,IAAI,CAAC,QAAQ,CAACX,IAAI,CAACW,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE;cAC3B0E,KAAK,CAAC,gCAAgC,EAAE,CAAC,EAAE,CAAC,CAAC;YAC/C;YACA,IAAI,CAAC,QAAQ,CAACrF,IAAI,CAACW,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE;cAC3B0E,KAAK,CAAC,oCAAoC,EAAE,CAAC,EAAE,CAAC,CAAC;YACnD;YAEA,OAAO;cACLzE,YAAY,EAAZA,YAAY;cACZiH,WAAW,EAAXA,WAAW;cACXC,eAAe,EAAfA,eAAe;cACfC,yBAAyB,EAAzBA,yBAAyB;cACzBC,6BAA6B,EAA7BA,6BAA6B;cAC7BC,mBAAmB,EAAnBA,mBAAmB;cACnBC,uBAAuB,EAAvBA;YACF,CAAC;UACH,CAAC;UAEK3C,QAAQ,GAAG,SAAXA,QAAQA,CACZ8B,WAAmB,EACnBC,SAAiB,EACjBa,SAAiB,EACjBC,SAAqC,EAC1B;YACX,IAAMC,KAAK,GAAG1H,IAAI,CAACG,SAAS,CAACuG,WAAW,EAAEC,SAAS,CAAC;YACpD,IAAI,CAACc,SAAS,CAACC,KAAK,CAAC,EAAE;cACrBhD,KAAK,CACH,CAACgD,KAAK,CAACpH,IAAI,CAAC,CAAC,GAAG,UAAU,GAAG,UAAU,IAAIkH,SAAS,EACpDd,WAAW,EACXC,SACF,CAAC;YACH;YACA,OAAOe,KAAK;UACd,CAAC;UAEK7C,OAAO,GAAG,SAAVA,OAAOA,CAAI8C,IAAc,EAAK;YAClC,IAAI,CAAC5D,IAAI,EAAE;YACX,IAAIO,cAAc,EAAE;cAClB,IAAMsD,QAA0C,GAAGD,IAAI;cACvDA,IAAI,GAAA5L,aAAA,CAAAA,aAAA,KACC4L,IAAI;gBACPC,QAAQ,EAARA;cAAQ,EACT;cACD,IAAIrD,aAAa,EAAE;gBACjBqD,QAAQ,CAACC,KAAK,GAAGtD,aAAa;gBAC9BA,aAAa,GAAGnE,SAAS;cAC3B;cACA,IAAA0H,YAAA,GAMI/D,IAAI,CAACgC,MAAM;gBALbqB,yBAAyB,GAAAU,YAAA,CAAzBV,yBAAyB;gBACzBC,6BAA6B,GAAAS,YAAA,CAA7BT,6BAA6B;gBAC7BpH,YAAY,GAAA6H,YAAA,CAAZ7H,YAAY;gBACZiH,WAAW,GAAAY,YAAA,CAAXZ,WAAW;gBACXC,eAAe,GAAAW,YAAA,CAAfX,eAAe;cAEjB,IACE7C,cAAc,CAAC8C,yBAAyB,KAAKA,yBAAyB,EACtE;gBACAO,IAAI,CAACjG,gBAAgB,GAAGiG,IAAI,CAACjG,gBAAgB,GACzCvD,eAAK,CAAC4J,QAAQ,CAACJ,IAAI,CAACjG,gBAAgB,CAAC,GACrCtB,SAAS;cACf;cACA,IACEkE,cAAc,CAAC+C,6BAA6B,KAC5CA,6BAA6B,EAC7B;gBAAA,IAAAW,qBAAA;gBACAL,IAAI,CAAC/F,oBAAoB,IAAAoG,qBAAA,GAAGL,IAAI,CAAC/F,oBAAoB,cAAAoG,qBAAA,uBAAzBA,qBAAA,CAA2BC,MAAM,CAAC,CAAC;cACjE;cACA,IAAIhI,YAAY,KAAKqE,cAAc,CAACrE,YAAY,EAAE;gBAChD0H,IAAI,CAACtG,QAAQ,GAAGsG,IAAI,CAACtG,QAAQ,MAAG,CAACpB,YAAY,CAAC;gBAC9C,IAAI0H,IAAI,CAACO,SAAS,EAAE;kBAAA,IAAAC,oBAAA,EAAAC,qBAAA,EAAAC,kBAAA,EAAAC,oBAAA;kBAClBX,IAAI,CAACO,SAAS,CAACpH,IAAI,IAAAqH,oBAAA,GAAGR,IAAI,CAACO,SAAS,CAACpH,IAAI,cAAAqH,oBAAA,uBAAnBA,oBAAA,MAAuB,CAAClI,YAAY,CAAC;kBAC3D0H,IAAI,CAACO,SAAS,CAACnH,KAAK,IAAAqH,qBAAA,GAAGT,IAAI,CAACO,SAAS,CAACnH,KAAK,cAAAqH,qBAAA,uBAApBA,qBAAA,MAAwB,CAACnI,YAAY,CAAC;kBAC7D0H,IAAI,CAACO,SAAS,CAACtH,EAAE,IAAAyH,kBAAA,GAAGV,IAAI,CAACO,SAAS,CAACtH,EAAE,cAAAyH,kBAAA,uBAAjBA,kBAAA,MAAqB,CAACpI,YAAY,CAAC;kBACvD0H,IAAI,CAACO,SAAS,CAACrH,IAAI,IAAAyH,oBAAA,GAAGX,IAAI,CAACO,SAAS,CAACrH,IAAI,cAAAyH,oBAAA,uBAAnBA,oBAAA,MAAuB,CAACrI,YAAY,CAAC;gBAC7D;gBACA,IAAI0H,IAAI,CAACY,OAAO,EAAE;kBAAA,IAAAC,kBAAA,EAAAC,mBAAA,EAAAC,gBAAA,EAAAC,kBAAA;kBAChBhB,IAAI,CAACY,OAAO,CAACzH,IAAI,IAAA0H,kBAAA,GAAGb,IAAI,CAACY,OAAO,CAACzH,IAAI,cAAA0H,kBAAA,uBAAjBA,kBAAA,MAAqB,CAACvI,YAAY,CAAC;kBACvD0H,IAAI,CAACY,OAAO,CAACxH,KAAK,IAAA0H,mBAAA,GAAGd,IAAI,CAACY,OAAO,CAACxH,KAAK,cAAA0H,mBAAA,uBAAlBA,mBAAA,MAAsB,CAACxI,YAAY,CAAC;kBACzD0H,IAAI,CAACY,OAAO,CAAC3H,EAAE,IAAA8H,gBAAA,GAAGf,IAAI,CAACY,OAAO,CAAC3H,EAAE,cAAA8H,gBAAA,uBAAfA,gBAAA,MAAmB,CAACzI,YAAY,CAAC;kBACnD0H,IAAI,CAACY,OAAO,CAAC1H,IAAI,IAAA8H,kBAAA,GAAGhB,IAAI,CAACY,OAAO,CAAC1H,IAAI,cAAA8H,kBAAA,uBAAjBA,kBAAA,MAAqB,CAAC1I,YAAY,CAAC;gBACzD;cACF;cACA,IAAIiH,WAAW,KAAK5C,cAAc,CAAC4C,WAAW,EAAE;gBAAA,IAAA0B,qBAAA,EAAAC,qBAAA;gBAC9ClB,IAAI,CAAClG,iBAAiB,IAAAmH,qBAAA,GAAGjB,IAAI,CAAClG,iBAAiB,cAAAmH,qBAAA,uBAAtBA,qBAAA,MAA0B,CAAC1B,WAAW,CAAC;gBAChES,IAAI,CAACjG,gBAAgB,IAAAmH,qBAAA,GAAGlB,IAAI,CAACjG,gBAAgB,cAAAmH,qBAAA,uBAArBA,qBAAA,MAAyB,CAAC3B,WAAW,CAAC;cAChE;cACA,IAAIC,eAAe,KAAK7C,cAAc,CAAC6C,eAAe,EAAE;gBAAA,IAAA2B,qBAAA,EAAAC,sBAAA;gBACtDpB,IAAI,CAAChG,qBAAqB,IAAAmH,qBAAA,GACxBnB,IAAI,CAAChG,qBAAqB,cAAAmH,qBAAA,uBAA1BA,qBAAA,MAA8B,CAAC3B,eAAe,CAAC;gBACjDQ,IAAI,CAAC/F,oBAAoB,IAAAmH,sBAAA,GACvBpB,IAAI,CAAC/F,oBAAoB,cAAAmH,sBAAA,uBAAzBA,sBAAA,MAA6B,CAAC5B,eAAe,CAAC;cAClD;YACF;YACApD,IAAI,CAACiF,KAAK,CAACnN,IAAI,CAAC8L,IAAI,CAAC;UACvB,CAAC;UAEG7C,KAAK,GAAG,KAAK;UAAAC,yBAAA;UAAAC,iBAAA;UAAAS,SAAA,CAAAC,IAAA;UAAAR,KAAA,gBAAAzC,YAAA,YAAAC,IAAA,UAAAwC,MAAA;YAAA,IAAA+D,KAAA,EAAAC,MAAA,EAAAC,QAAA,EAAAC,CAAA,EAAAC,IAAA,EAAAC,SAAA,EAAAC,KAAA,EAAAC,GAAA,EAAAC,IAAA,EAAAC,OAAA,EAAAC,KAAA,EAAAC,MAAA,EAAAC,MAAA,EAAAC,MAAA,EAAAC,KAAA,EAAA9J,YAAA,EAAA+J,KAAA,EAAA9C,WAAA,EAAAC,eAAA,EAAArI,MAAA,EAAAoB,OAAA,EAAA+J,IAAA,EAAAzJ,IAAA,EAAAC,IAAA,EAAAC,IAAA,EAAAC,IAAA,EAAAC,EAAA,EAAAC,IAAA,EAAAC,IAAA,EAAAC,KAAA,EAAAmJ,KAAA,EAAAC,KAAA,EAAAjC,SAAA,EAAAkC,aAAA,EAAAC,qBAAA,EAAAC,sBAAA,EAAAC,KAAA,EAAAC,MAAA,EAAAC,GAAA,EAAAC,KAAA,EAAA9E,OAAA,EAAA+E,QAAA,EAAAC,QAAA,EAAAC,QAAA,EAAAC,QAAA,EAAAvM,IAAA,EAAA8C,QAAA,EAAA0J,kBAAA,EAAAC,gBAAA,EAAArJ,qBAAA,EAAAC,oBAAA,EAAAqJ,eAAA,EAAAC,OAAA,EAAAC,MAAA,EAAAC,MAAA,EAAAC,OAAA,EAAAC,SAAA,EAAAC,OAAA,EAAAC,MAAA,EAAAhK,OAAA,EAAAiK,MAAA,EAAAC,MAAA,EAAAC,QAAA,EAAAC,QAAA,EAAAC,CAAA,EAAAC,CAAA,EAAAC,CAAA,EAAAC,EAAA,EAAAvK,iBAAA,EAAAC,gBAAA,EAAAiG,IAAA;YAAA,OAAAlF,YAAA,YAAA8C,IAAA,UAAA0G,OAAAC,QAAA;cAAA,kBAAAA,QAAA,CAAAxG,IAAA,GAAAwG,QAAA,CAAA3O,IAAA;gBAAA;kBAENyC,IAAI,GAAAqF,KAAA,CAAAjI,KAAA;kBACbqH,OAAO,GAAG,KAAK;kBAEfD,UAAU,EAAE;kBAAA,IAEPM,KAAK;oBAAAoH,QAAA,CAAA3O,IAAA;oBAAA;kBAAA;kBAAA,KACJ,QAAQ,CAAC8B,IAAI,CAACW,IAAI,CAAC;oBAAAkM,QAAA,CAAA3O,IAAA;oBAAA;kBAAA;kBACrBiH,UAAU,EAAE;kBAAA,OAAA0H,QAAA,CAAAC,MAAA;gBAAA;kBAGdrH,KAAK,GAAG,IAAI;kBACNmE,KAAK,GAAG,qBAAqB,CAACmD,IAAI,CAACpM,IAAI,CAAC;kBAC9C,IAAIiJ,KAAK,EAAE;oBACT9F,IAAI,GAAG8F,KAAK,CAAC,CAAC,CAAC,CAAC3I,IAAI,CAAC,CAAC;oBACtB,IAAI2I,KAAK,CAAC,CAAC,CAAC,EAAE;sBACZ7F,QAAQ,GAAG6F,KAAK,CAAC,CAAC,CAAC,CAAC3I,IAAI,CAAC,CAAC;oBAC5B;kBACF;gBAAC;kBAAA,KAGC+D,YAAY;oBAAA6H,QAAA,CAAA3O,IAAA;oBAAA;kBAAA;kBACd8G,YAAY,GAAG,KAAK;kBACpBC,cAAc,GAAGK,UAAU,CAAC,CAAC;kBAC7BJ,aAAa,GAAGD,cAAc;kBAAA4H,QAAA,CAAA3O,IAAA;kBAAA;gBAAA;kBAAA,KACrB,YAAY,CAAC8B,IAAI,CAACW,IAAI,CAAC;oBAAAkM,QAAA,CAAA3O,IAAA;oBAAA;kBAAA;kBAChCmG,aAAa,GAAG,CAACA,aAAa;kBAC9BY,cAAc,GAAGC,aAAa,GAAGnE,SAAS;kBAC1CiE,YAAY,GAAG,KAAK;kBACpB,IAAIX,aAAa,EAAE;oBACjBO,OAAO,GAAG7D,SAAS;oBACnBoD,QAAQ,GAAGpD,SAAS;oBACpBqD,QAAQ,GAAGrD,SAAS;oBACpByD,WAAW,CAAC5H,MAAM,GAAG,CAAC;oBACtB0H,oBAAoB,GAAGa,UAAU;kBACnC,CAAC,MAAM;oBACLZ,kBAAkB,GAAGY,UAAU;kBACjC;kBAAC0H,QAAA,CAAA3O,IAAA;kBAAA;gBAAA;kBAAA,KACQmG,aAAa;oBAAAwI,QAAA,CAAA3O,IAAA;oBAAA;kBAAA;kBACtB,IAAIiH,UAAU,KAAKb,oBAAoB,GAAG,CAAC,EAAE;oBAC3CJ,QAAQ,GAAGvD,IAAI,IAAIA,IAAI,CAACM,IAAI,CAAC,CAAC;kBAChC,CAAC,MAAM,IAAIkE,UAAU,KAAKb,oBAAoB,GAAG,CAAC,EAAE;oBAC5CsF,MAAK,GAAG,6BAA6B,CAACmD,IAAI,CAACpM,IAAI,IAAIA,IAAI,CAACM,IAAI,CAAC,CAAC,CAAC;oBACrE,IAAI2I,MAAK,EAAE;sBACLG,CAAC,GAAG,CAAC;sBACHC,IAAI,GAAGJ,MAAK,CAACG,CAAC,EAAE,CAAC;sBACvB5F,QAAQ,GAAG6F,IAAI,CAACgD,KAAK,CACnBhD,IAAI,CAACiD,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,UAAU,GAAG,UACxC,CAAC;sBACKhD,SAAS,GAAG,2BAA2B,CAAC8C,IAAI,EAAAjD,QAAA,GAACF,MAAK,CAACG,CAAC,EAAE,CAAC,cAAAD,QAAA,uBAAVA,QAAA,CAAY7I,IAAI,CAAC,CAAC,CAAC;sBACtE,IAAIgJ,SAAS,EAAE;wBACPC,KAAK,GAAGgD,QAAQ,CAACjD,SAAS,CAAC,CAAC,CAAC,CAAC;wBAC9BE,GAAG,GAAG+C,QAAQ,CAACjD,SAAS,CAAC,CAAC,CAAC,CAAC;wBAC5BG,IAAI,GAAG8C,QAAQ,CAACjD,SAAS,CAAC,CAAC,CAAC,CAAC;wBACnC7F,QAAQ,GAAG,IAAI+I,IAAI,CAAC/C,IAAI,GAAG,EAAE,GAAGA,IAAI,GAAG,IAAI,GAAGA,IAAI,EAAEF,KAAK,GAAG,CAAC,EAAEC,GAAG,CAAC;sBACrE;oBACF;kBACF,CAAC,MAAM,IAAIhF,UAAU,GAAG,CAAC,EAAE;oBACzBX,WAAW,CAAChI,IAAI,CAACmE,IAAI,CAAC;kBACxB;kBACMiJ,OAAK,GAAG,qBAAqB,CAACmD,IAAI,CAACpM,IAAI,CAAC;kBAC9C,IAAIiJ,OAAK,EAAE;oBACThF,OAAO,GAAGgF,OAAK,CAAC,CAAC,CAAC,CAAC3I,IAAI,CAAC,CAAC;kBAC3B;kBAAC4L,QAAA,CAAA3O,IAAA;kBAAA;gBAAA;kBAAA,KACQ,cAAc,CAAC8B,IAAI,CAACW,IAAI,CAAC;oBAAAkM,QAAA,CAAA3O,IAAA;oBAAA;kBAAA;kBAClC,IAAI,iBAAiB,CAAC8B,IAAI,CAACW,IAAI,CAAC,EAAE;oBAChCqE,YAAY,GAAG,IAAI;kBACrB;kBAAC,KACG,SAAS,CAAChF,IAAI,CAACW,IAAI,CAAC;oBAAAkM,QAAA,CAAA3O,IAAA;oBAAA;kBAAA;kBAAA,OAAA2O,QAAA,CAAAC,MAAA;gBAAA;kBAGxB,IAAI,QAAQ,CAAC9M,IAAI,CAACW,IAAI,CAAC,EAAE;oBACvBmE,cAAc,CAACnE,IAAI,CAACyM,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;oBAC1CzI,cAAc,GAAG,KAAK;kBACxB,CAAC,MAAM;oBACLA,cAAc,GAAG,CAACA,cAAc;oBAChC,IAAIA,cAAc,EAAEF,YAAY,CAAC7H,MAAM,GAAG,CAAC;kBAC7C;kBAACiQ,QAAA,CAAA3O,IAAA;kBAAA;gBAAA;kBAAA,KACQyG,cAAc;oBAAAkI,QAAA,CAAA3O,IAAA;oBAAA;kBAAA;kBACvB4G,cAAc,CAACnE,IAAI,CAAC;kBAAAkM,QAAA,CAAA3O,IAAA;kBAAA;gBAAA;kBAAA,MACXiH,UAAU,KAAKZ,kBAAkB,GAAG,CAAC;oBAAAsI,QAAA,CAAA3O,IAAA;oBAAA;kBAAA;kBAC9CwG,IAAI,GAAG;oBACLgC,MAAM,EAAAhK,aAAA;sBACJ2Q,IAAI,EAAEnJ,QAAQ,IAAI,EAAE;sBACpBqC,OAAO,EAAG/B,WAAW,IAAIA,WAAW,CAACgC,IAAI,CAAC,IAAI,CAAC,IAAK,IAAI;sBACxD5B,OAAO,EAAPA,OAAO;sBACP0I,IAAI,EAAElJ,QAAQ;sBACd4F,IAAI,EAAE7F;oBAAQ,GACXmB,UAAU,CAAC,CAAC,CAChB;oBACDqE,KAAK,EAAE;kBACT,CAAC;kBACD3F,KAAK,CAACxH,IAAI,CAACkI,IAAI,CAAC;kBAAAmI,QAAA,CAAA3O,IAAA;kBAAA;gBAAA;kBAAA,KACPwG,IAAI;oBAAAmI,QAAA,CAAA3O,IAAA;oBAAA;kBAAA;kBAAAwM,KAAA,GACUzF,cAAc,IAAIP,IAAI,CAACgC,MAAM,EAA9C9F,YAAY,GAAA8J,KAAA,CAAZ9J,YAAY;kBAAA+J,KAAA,GACuB1F,cAAc,IAAIP,IAAI,CAACgC,MAAM,EAA9DmB,WAAW,GAAA8C,KAAA,CAAX9C,WAAW,EAAEC,eAAe,GAAA6C,KAAA,CAAf7C,eAAe;kBAE9BrI,MAAM,GAAGmB,YAAY,KAAKpB,gBAAM,CAACC,MAAM;kBAC7C,IAAIA,MAAM,EAAEmB,YAAY,GAAGpB,gBAAM,CAACE,IAAI;;kBAEtC;kBACA;kBACA;;kBAEA;kBAAA,IACK,IAAI,CAACM,IAAI,CAAC,CAAAsK,KAAA,GAAA3J,IAAI,EAACG,SAAS,CAAArE,KAAA,CAAA6N,KAAA,MAAAtD,mBAAA,aAAIpD,MAAM,CAAC7B,WAAW,EAAC,CAAC;oBAAA8K,QAAA,CAAA3O,IAAA;oBAAA;kBAAA;kBAAA,OAAA2O,QAAA,CAAAC,MAAA;gBAAA;kBAC/CjM,OAAO,GAAG0E,QAAQ,CAAA9I,KAAA,aAAAuK,mBAAA,aACnBpD,MAAM,CAAC7B,WAAW,EAAAwL,MAAA,EACrB,cAAc,EACdxN,cAAc,EAChB,CAAC;kBACK6K,IAAI,GAAG/J,OAAO,CAACI,IAAI,CAAC,CAAC,EAE3B;kBACA;kBACA;kBACME,IAAI,GAAGoE,QAAQ,CAAA9I,KAAA,aAAAuK,mBAAA,aAAIpD,MAAM,CAACnC,IAAI,EAAA8L,MAAA,EAAE,MAAM,EAAEpN,eAAe,GAAC;kBACxDiB,IAAI,GAAGmE,QAAQ,CAAA9I,KAAA,aAAAuK,mBAAA,aAAIpD,MAAM,CAAClC,KAAK,EAAA6L,MAAA,EAAE,OAAO,EAAEpN,eAAe,GAAC;kBAC1DkB,IAAI,GAAGkE,QAAQ,CAAA9I,KAAA,aAAAuK,mBAAA,aAAIpD,MAAM,CAACrC,EAAE,EAAAgM,MAAA,EAAE,IAAI,EAAEpN,eAAe,GAAC;kBACpDmB,IAAI,GAAGiE,QAAQ,CAAA9I,KAAA,aAAAuK,mBAAA,aAAIpD,MAAM,CAACpC,IAAI,EAAA+L,MAAA,EAAE,MAAM,EAAEpN,eAAe,GAAC;kBAAA,KAE1DiF,OAAO;oBAAAyH,QAAA,CAAA3O,IAAA;oBAAA;kBAAA;kBAAA,OAAA2O,QAAA,CAAAC,MAAA;gBAAA;kBAELvL,EAAE,GAAGhB,SAAS,CAACc,IAAI,EAAET,YAAY,CAAC;kBAClCY,IAAI,GAAGjB,SAAS,CAACe,IAAI,EAAEV,YAAY,CAAC;kBACpCa,IAAI,GAAGlB,SAAS,CAACY,IAAI,EAAEP,YAAY,CAAC;kBACpCc,KAAK,GAAGnB,SAAS,CAACa,IAAI,EAAER,YAAY,CAAC,EAE3C;kBACMiK,KAAK,GAAG,CAAAN,MAAA,GAAA5J,IAAI,EAACG,SAAS,CAAArE,KAAA,CAAA8N,MAAA,MAAAvD,mBAAA,aAAIpD,MAAM,CAAC9B,SAAS,EAAC;kBAAA,IAC5C+I,KAAK,CAAC5J,IAAI,CAAC,CAAC;oBAAA4L,QAAA,CAAA3O,IAAA;oBAAA;kBAAA;kBACToK,KAAc,GAAG;oBACrBsC,IAAI,EAAJA,IAAI;oBACJ4C,EAAE,EAAE,IAAI;oBACRtO,IAAI,EAAEC,sBAAY,CAACG,MAAM;oBACzB0C,QAAQ,EAAE,IAAItD,wBAAc,CAAC,CAAC,EAAEkC,YAAY,CAAC;oBAC7CwB,iBAAiB,EAAE,IAAI;oBACvBC,gBAAgB,EAAE,IAAI;oBACtBC,qBAAqB,EAAE,IAAI;oBAC3BC,oBAAoB,EAAE,IAAI;oBAC1BsG,SAAS,EAAE;sBACTpH,IAAI,EAAJA,IAAI;sBACJC,KAAK,EAALA,KAAK;sBACLH,EAAE,EAAFA,EAAE;sBACFC,IAAI,EAAJA;oBACF,CAAC;oBACDoK,eAAe,EAAE,IAAI;oBACrBrF,OAAO,EAAExB,UAAU,CAAC;kBACtB,CAAC;kBACDS,OAAO,CAAC8C,KAAI,CAAC;kBAAA,OAAAuE,QAAA,CAAAC,MAAA;gBAAA;kBAGf,IAAI,CAAC/M,cAAc,CAAC8K,KAAK,CAAC,EAAE;oBAC1BxF,KAAK,CAAA5I,KAAA,UAAC,sBAAsB,EAAA8Q,MAAA,KAAAvG,mBAAA,aAAKpD,MAAM,CAAC9B,SAAS,GAAC;kBACpD;kBAEI+G,SAAS,GAAGhE,uBAAuB,CAAChG,GAAG,CAAC+L,IAAI,CAAC;kBACjD,IAAI/B,SAAS,EAAE;oBACbhE,uBAAuB,UAAO,CAAC+F,IAAI,CAAC;kBACtC,CAAC,MAAM;oBACCG,aAAa,GAAG,IAAI0C,MAAM,SAAAF,MAAA,CACtB1M,OAAO,CACZI,IAAI,CAAC,CAAC,CACNmM,OAAO,CACN,qBAAqB,EACrB,MACF,CAAC,wCACL,CAAC,CAACL,IAAI,CAACpM,IAAI,CAACG,SAAS,CAAC+C,QAAQ,CAAC,CAAC;oBAChC,IAAIkH,aAAa,EAAE;sBAAAC,qBAAA,GACeD,aAAa,CAAC,CAAC,CAAC,CAC7C9J,IAAI,CAAC,CAAC,CACN+L,KAAK,CAAC,MAAM,CAAC,CACb9F,GAAG,CAAC,UAACjJ,CAAC;wBAAA,OAAKsC,SAAS,CAACtC,CAAC,EAAE2C,YAAY,CAAC;sBAAA,EAAC,EAAAqK,sBAAA,OAAApI,eAAA,aAAAmI,qBAAA,MAHlCvJ,KAAI,GAAAwJ,sBAAA,KAAEvJ,MAAK,GAAAuJ,sBAAA,KAAE1J,GAAE,GAAA0J,sBAAA,KAAEzJ,KAAI,GAAAyJ,sBAAA;sBAI5BpC,SAAS,GAAG;wBAAEpH,IAAI,EAAJA,KAAI;wBAAEC,KAAK,EAALA,MAAK;wBAAEH,EAAE,EAAFA,GAAE;wBAAEC,IAAI,EAAJA;sBAAK,CAAC;oBACvC;kBACF;kBAEM+E,OAAO,GAAGxB,UAAU,CAAC,CAAC,EAE5B;kBACMuG,QAAQ,GAAG/F,QAAQ,CAAA9I,KAAA,aAAAuK,mBAAA,aACpBpD,MAAM,CAACxB,iBAAiB,EAAAmL,MAAA,EAC3B,SAAS,EACTnN,gBAAgB,EAClB,CAAC;kBACKmL,QAAQ,GAAGhG,QAAQ,CAAA9I,KAAA,aAAAuK,mBAAA,aACpBpD,MAAM,CAACvB,gBAAgB,EAAAkL,MAAA,EAC1B,SAAS,EACTnN,gBAAgB,EAClB,CAAC;kBACKoL,QAAQ,GAAG,CAAAhB,MAAA,GAAA7J,IAAI,EAACG,SAAS,CAAArE,KAAA,CAAA+N,MAAA,MAAAxD,mBAAA,aAAIpD,MAAM,CAACtB,qBAAqB,EAAC;kBAC1DmJ,QAAQ,GAAG,CAAAhB,MAAA,GAAA9J,IAAI,EAACG,SAAS,CAAArE,KAAA,CAAAgO,MAAA,MAAAzD,mBAAA,aAAIpD,MAAM,CAACrB,oBAAoB,EAAC;kBAAA,KAE3D6C,OAAO;oBAAAyH,QAAA,CAAA3O,IAAA;oBAAA;kBAAA;kBAAA,OAAA2O,QAAA,CAAAC,MAAA;gBAAA;kBAAA,KAYPrN,MAAM;oBAAAoN,QAAA,CAAA3O,IAAA;oBAAA;kBAAA;kBACF8N,OAAO,GAAG,CAAAF,MAAA,GAAAnL,IAAI,EAACG,SAAS,CAAArE,KAAA,CAAAqP,MAAA,MAAA9E,mBAAA,aAAIpD,MAAM,CAAC3B,YAAY,EAAC;kBAChDgK,SAAS,GAAG,CAAAF,MAAA,GAAApL,IAAI,EAACG,SAAS,CAAArE,KAAA,CAAAsP,MAAA,MAAA/E,mBAAA,aAAIpD,MAAM,CAAC1B,cAAc,EAAC,EAC1D;kBAAA,MACI,CAACjC,WAAW,CAAC+L,OAAO,CAAC,IAAI,CAAC/L,WAAW,CAACgM,SAAS,CAAC;oBAAAY,QAAA,CAAA3O,IAAA;oBAAA;kBAAA;kBAC5CgO,OAAO,GAAGF,OAAO,CAAC/K,IAAI,CAAC,CAAC,IAAIgL,SAAS,CAAChL,IAAI,CAAC,CAAC;kBAClDoE,KAAK,CACH6G,OAAO,GAAG,kBAAkB,GAAG,kBAAkB,EACjDtI,MAAM,CAAC3B,YAAY,CAAC,CAAC,CAAC,EACtB2B,MAAM,CAAC1B,cAAc,CAAC,CAAC,CACzB,CAAC;kBAAA,OAAA2K,QAAA,CAAAC,MAAA;gBAAA;kBAIH;kBACA;kBACA9K,QAAQ,GAAGhD,iBAAO,CAACS,MAAM,CAACjB,UAAU,CAACyN,SAAS,CAAC,IAAI,CAAC,CAAC,CAACyB,GAAG,CACvD1O,iBAAO,CAACU,IAAI,CAAClB,UAAU,CAACwN,OAAO,CAAC,IAAI,CAAC,CACvC,CAAC;kBAEKG,MAAM,GACVvI,MAAM,CAAC1E,IAAI,CAAC,CAAC,CAAC,KAAK0E,MAAM,CAAC5B,QAAQ,CAAC,CAAC,CAAC,GACjC4B,MAAM,CAAC1B,cAAc,CAAC,CAAC,CAAC,GAAG0B,MAAM,CAAC5B,QAAQ,CAAC,CAAC,CAAC,GAC7C,CAAC;kBACP9C,IAAI,GAAGD,SAAS,CACd0B,IAAI,CACDG,SAAS,CAAC8C,MAAM,CAAC1E,IAAI,CAAC,CAAC,CAAC,GAAGiN,MAAM,EAAEvI,MAAM,CAAC1E,IAAI,CAAC,CAAC,CAAC,GAAGiN,MAAM,CAAC,CAC3DlL,IAAI,CAAC,CACV,CAAC;kBACKkB,OAAO,GAAGxB,IAAI,CACjBG,SAAS,CAAC8C,MAAM,CAACzB,OAAO,CAAC,CAAC,CAAC,GAAGgK,MAAM,EAAEvI,MAAM,CAACzB,OAAO,CAAC,CAAC,CAAC,GAAGgK,MAAM,CAAC,CACjElL,IAAI,CAAC,CAAC,EACT;kBACA;kBACA;kBACA;kBACA2K,eAAe,GAAGzJ,OAAO,KAAK,GAAG,IAAIA,OAAO,KAAK,GAAG;kBACpD0J,OAAO,GAAG1J,OAAO,KAAK,GAAG;kBAAA0K,QAAA,CAAA3O,IAAA;kBAAA;gBAAA;kBAEzB;kBACM8N,QAAO,GAAGzG,QAAQ,CAAA9I,KAAA,aAAAuK,mBAAA,aAAIpD,MAAM,CAAC5B,QAAQ,EAAAuL,MAAA,EAAE,UAAU,EAAElN,aAAa,GAAC;kBACvE2B,QAAQ,GAAG,IAAItD,wBAAc,CAACF,UAAU,CAACwN,QAAO,CAAC,EAAEpL,YAAY,CAAC;kBAChE1B,IAAI,GAAGD,SAAS,CAAC,CAAAmN,MAAA,GAAAzL,IAAI,EAACG,SAAS,CAAArE,KAAA,CAAA2P,MAAA,MAAApF,mBAAA,aAAIpD,MAAM,CAAC1E,IAAI,EAAC,CAAC+B,IAAI,CAAC,CAAC,CAAC;kBACjDkB,QAAO,GAAG,CAAAkK,MAAA,GAAA1L,IAAI,EAACG,SAAS,CAAArE,KAAA,CAAA4P,MAAA,MAAArF,mBAAA,aAAIpD,MAAM,CAACzB,OAAO,EAAC,CAAClB,IAAI,CAAC,CAAC;kBACxD2K,eAAe,GAAGzJ,QAAO,KAAK,GAAG,IAAIA,QAAO,KAAK,GAAG;kBACpD0J,OAAO,GAAG1J,QAAO,KAAK,GAAG;gBAAA;kBAG3B,IAAIjD,IAAI,KAAKC,sBAAY,CAACG,MAAM,EAAE;oBAChCiG,QAAQ,CAAA9I,KAAA,aAAAuK,mBAAA,aACHpD,MAAM,CAACtB,qBAAqB,EAAAiL,MAAA,EAC/B,mBAAmB,EACnBrN,YAAY,EACd,CAAC;kBACH;;kBAEA;kBACA;kBACA;kBACA;kBACA,IAAIhB,IAAI,KAAKC,sBAAY,CAACC,UAAU,EAAE;oBACpC;oBACAsM,kBAAkB,GAAG1J,QAAQ;oBACvBwK,CAAC,GAAGd,kBAAkB,CAAC7M,GAAG,CAAC+B,YAAY,CAAC;oBACxC6L,CAAC,GAAGjO,UAAU,CAACgN,QAAQ,CAAC;oBAC9BG,gBAAgB,GAAG,IAAIjN,wBAAc,CAAC+N,CAAC,EAAE7L,YAAY,CAAC;oBACtDoB,QAAQ,GAAG,IAAItD,wBAAc,CAACoI,IAAI,CAAC6G,IAAI,CAACnB,CAAC,GAAGA,CAAC,GAAGC,CAAC,GAAGA,CAAC,CAAC,EAAE7L,YAAY,CAAC;oBACrE0B,qBAAqB,GAAGxD,eAAK,CAAC8O,KAAK,CACjCjC,gBAAgB,EAChBD,kBACF,CAAC;oBACDnJ,oBAAoB,GAAG,IAAI;kBAC7B,CAAC,MAAM,IAAIrD,IAAI,KAAKC,sBAAY,CAACE,QAAQ,EAAE;oBACzC;oBACMqN,CAAC,GAAG1K,QAAQ,CAACnD,GAAG,CAAC+B,YAAY,CAAC;oBAC9B6L,EAAC,GAAGjO,UAAU,CAACgN,QAAQ,CAAC;oBAC9BG,gBAAgB,GAAG,IAAIjN,wBAAc,CAAC+N,EAAC,EAAE7L,YAAY,CAAC;oBACtD0B,qBAAqB,GAAGxD,eAAK,CAAC+O,IAAI,CAACpB,EAAC,GAAGC,CAAC,CAAC;oBACzCnK,oBAAoB,GAAG,IAAI;kBAC7B,CAAC,MAAM;oBACL;oBACAgD,QAAQ,CAAA9I,KAAA,aAAAuK,mBAAA,aACHpD,MAAM,CAACtB,qBAAqB,EAAAiL,MAAA,EAC/B,aAAa,EACbjN,qBAAqB,EACvB,CAAC;oBACD;oBACAiF,QAAQ,CAAA9I,KAAA,aAAAuK,mBAAA,aACHpD,MAAM,CAACrB,oBAAoB,EAAAgL,MAAA,EAC9B,aAAa,EACbjN,qBAAqB,EACvB,CAAC;oBACDgC,qBAAqB,GAAGhE,WAAW,CAACkN,QAAQ,EAAE1D,eAAe,CAAC;oBAC9DvF,oBAAoB,GAAGjE,WAAW,CAACmN,QAAQ,EAAE3D,eAAe,CAAC;kBAC/D;kBAAC,KACG1C,OAAO;oBAAAyH,QAAA,CAAA3O,IAAA;oBAAA;kBAAA;kBAAA,OAAA2O,QAAA,CAAAC,MAAA;gBAAA;kBAEL1K,iBAAiB,GAAGzD,YAAY,CAAC2M,QAAQ,EAAEzD,WAAW,CAAC;kBACvDxF,gBAAgB,GAAG1D,YAAY,CAAC4M,QAAQ,EAAE1D,WAAW,CAAC;kBAE5D,IAAI,CAACvF,qBAAqB,IAAI,CAACC,oBAAoB,EAAE;oBACnDD,qBAAqB,GAAGtD,iBAAO,CAACD,OAAO,CAAC,CAAC,CAAC;kBAC5C;kBAEMuJ,IAAc,GAAG;oBACrBsC,IAAI,EAAJA,IAAI;oBACJ4C,EAAE,EAAE3C,KAAK,CAAC5J,IAAI,CAAC,CAAC;oBAChB/B,IAAI,EAAJA,IAAI;oBACJ8C,QAAQ,EAARA,QAAQ;oBACRI,iBAAiB,EAAjBA,iBAAiB;oBACjBC,gBAAgB,EAAhBA,gBAAgB;oBAChBC,qBAAqB,EAArBA,qBAAqB;oBACrBC,oBAAoB,EAApBA,oBAAoB;oBACpB2G,OAAO,EAAE;sBACPzH,IAAI,EAAJA,IAAI;sBACJC,KAAK,EAALA,KAAK;sBACLH,EAAE,EAAFA,EAAE;sBACFC,IAAI,EAAJA;oBACF,CAAC;oBACDoK,eAAe,EAAfA,eAAe;oBACfrF,OAAO,EAAPA;kBACF,CAAC;kBACD,IAAIsF,OAAO,EAAEvD,IAAI,CAACuD,OAAO,GAAG,IAAI;kBAChC,IAAIhD,SAAS,EAAEP,IAAI,CAACO,SAAS,GAAGA,SAAS;kBACzC,IAAI6C,kBAAkB,EAAEpD,IAAI,CAACoD,kBAAkB,GAAGA,kBAAkB;kBACpE,IAAIC,gBAAgB,EAAErD,IAAI,CAACqD,gBAAgB,GAAGA,gBAAgB;kBAC9DnG,OAAO,CAAC8C,IAAI,CAAC;gBAAA;gBAAA;kBAAA,OAAAuE,QAAA,CAAAiB,IAAA;cAAA;YAAA,GAAAjI,KAAA;UAAA;UAAAE,SAAA,GAAA7I,cAAA,CA1UEsG,KAAK;QAAA;UAAA4C,SAAA,CAAAlI,IAAA;UAAA,OAAA6H,SAAA,CAAA7H,IAAA;QAAA;UAAA,MAAAwH,yBAAA,KAAAM,KAAA,GAAAI,SAAA,CAAA2H,IAAA,EAAAlQ,IAAA;YAAAuI,SAAA,CAAAlI,IAAA;YAAA;UAAA;UAAA,OAAAkI,SAAA,CAAA4H,aAAA,CAAAnI,KAAA;QAAA;UAAAC,IAAA,GAAAM,SAAA,CAAA6H,EAAA;UAAA,MAAAnI,IAAA;YAAAM,SAAA,CAAAlI,IAAA;YAAA;UAAA;UAAA,OAAAkI,SAAA,CAAA0G,MAAA;QAAA;UAAApH,yBAAA;UAAAU,SAAA,CAAAlI,IAAA;UAAA;QAAA;UAAAkI,SAAA,CAAAlI,IAAA;UAAA;QAAA;UAAAkI,SAAA,CAAAC,IAAA;UAAAD,SAAA,CAAA8H,EAAA,GAAA9H,SAAA;UAAAT,iBAAA;UAAAC,cAAA,GAAAQ,SAAA,CAAA8H,EAAA;QAAA;UAAA9H,SAAA,CAAAC,IAAA;UAAAD,SAAA,CAAAC,IAAA;UAAA,MAAAX,yBAAA,IAAAK,SAAA;YAAAK,SAAA,CAAAlI,IAAA;YAAA;UAAA;UAAAkI,SAAA,CAAAlI,IAAA;UAAA,OAAA6H,SAAA;QAAA;UAAAK,SAAA,CAAAC,IAAA;UAAA,KAAAV,iBAAA;YAAAS,SAAA,CAAAlI,IAAA;YAAA;UAAA;UAAA,MAAA0H,cAAA;QAAA;UAAA,OAAAQ,SAAA,CAAA+H,MAAA;QAAA;UAAA,OAAA/H,SAAA,CAAA+H,MAAA;QAAA;UAAA,OAAA/H,SAAA,CAAA0G,MAAA,WA8UjB;YACLhJ,IAAI,EAAJA,IAAI;YACJH,OAAO,EAAPA,OAAO;YACPI,QAAQ,EAARA,QAAQ;YACRC,KAAK,EAALA,KAAK;YACLC,MAAM,EAANA;UACF,CAAC;QAAA;QAAA;UAAA,OAAAmC,SAAA,CAAA0H,IAAA;MAAA;IAAA,GAAAxK,OAAA;EAAA,CACF;EAAA,OAAAJ,oBAAA,CAAAzG,KAAA,OAAAE,SAAA;AAAA;AAAAyR,MAAA,CAAAC,OAAA,GAAAA,OAAA,CAAAC,OAAA","ignoreList":[]}
package/src/FrcsShot.ts DELETED
@@ -1,56 +0,0 @@
1
- import { UnitizedNumber, Length, Angle } from '@speleotica/unitized'
2
- import { FrcsUnits } from './FrcsTrip'
3
-
4
- export enum FrcsShotKind {
5
- Normal = ' ',
6
- Horizontal = 'H',
7
- Diagonal = 'D',
8
- }
9
-
10
- export type FrcsShot = {
11
- /**
12
- * Name of from station
13
- */
14
- from: string
15
- /**
16
- * Name of to station
17
- */
18
- to?: string | null
19
- kind: FrcsShotKind
20
- distance: UnitizedNumber<Length>
21
- horizontalDistance?: UnitizedNumber<Length> | null
22
- verticalDistance?: UnitizedNumber<Length> | null
23
- frontsightAzimuth?: UnitizedNumber<Angle> | null
24
- frontsightInclination?: UnitizedNumber<Angle> | null
25
- backsightAzimuth?: UnitizedNumber<Angle> | null
26
- backsightInclination?: UnitizedNumber<Angle> | null
27
- /**
28
- * LRUDs at from station
29
- */
30
- fromLruds?: {
31
- left?: UnitizedNumber<Length> | null
32
- right?: UnitizedNumber<Length> | null
33
- up?: UnitizedNumber<Length> | null
34
- down?: UnitizedNumber<Length> | null
35
- }
36
- /**
37
- * LRUDs at to station
38
- */
39
- toLruds?: {
40
- left?: UnitizedNumber<Length> | null
41
- right?: UnitizedNumber<Length> | null
42
- up?: UnitizedNumber<Length> | null
43
- down?: UnitizedNumber<Length> | null
44
- }
45
- excludeDistance?: boolean | null
46
- isSplay?: boolean | null
47
- comment?: string | null
48
- /**
49
- * In the edge case that the surveyors changed measurement units or
50
- * corrected/uncorrected backsights in the middle of a trip, the measurements
51
- * will be normalized to the initial trip settings, and this field will contain
52
- * the actual values recorded, verbatim. The first shot of the group with
53
- * changed units will include the changed units.
54
- */
55
- recorded?: FrcsShot & { units?: FrcsUnits }
56
- }
@@ -1,47 +0,0 @@
1
- import { FrcsTrip } from './FrcsTrip'
2
- import { SegmentParseError } from 'parse-segment'
3
-
4
- export type FrcsSurveyFile = {
5
- cave?: string | null
6
- columns?: FrcsShotColumnConfig
7
- location?: string | null
8
- comment?: string | null
9
- trips: Array<FrcsTrip>
10
- errors?: Array<SegmentParseError> | null
11
- }
12
-
13
- export type FrcsShotColumnConfig = {
14
- toStation: number
15
- fromStation: number
16
- distance: number
17
- distanceFeet: number
18
- distanceInches: number
19
- kind: number
20
- exclude: number
21
- frontsightAzimuth: number
22
- backsightAzimuth: number
23
- frontsightInclination: number
24
- backsightInclination: number
25
- left: number
26
- right: number
27
- up: number
28
- down: number
29
- }
30
-
31
- export const defaultFrcsShotColumnConfig: FrcsShotColumnConfig = {
32
- toStation: 5,
33
- fromStation: 5,
34
- distance: 6,
35
- distanceFeet: 4,
36
- distanceInches: 3,
37
- kind: 1,
38
- exclude: 1,
39
- frontsightAzimuth: 6,
40
- backsightAzimuth: 6,
41
- frontsightInclination: 5,
42
- backsightInclination: 5,
43
- left: 3,
44
- right: 3,
45
- up: 3,
46
- down: 3,
47
- }
package/src/FrcsTrip.ts DELETED
@@ -1,25 +0,0 @@
1
- import { Unit, Length, Angle } from '@speleotica/unitized'
2
- import { FrcsShot } from './FrcsShot'
3
-
4
- export type FrcsUnits = {
5
- distanceUnit: Unit<Length>
6
- azimuthUnit: Unit<Angle>
7
- inclinationUnit: Unit<Angle>
8
- backsightAzimuthCorrected?: boolean | null
9
- backsightInclinationCorrected?: boolean | null
10
- hasBacksightAzimuth?: boolean | null
11
- hasBacksightInclination?: boolean | null
12
- }
13
-
14
- export type FrcsTripHeader = FrcsUnits & {
15
- name: string
16
- comment?: string | null
17
- section?: string | null
18
- date?: Date | null
19
- team?: Array<string> | null
20
- }
21
-
22
- export type FrcsTrip = {
23
- header: FrcsTripHeader
24
- shots: Array<FrcsShot>
25
- }