@arbium/enterprise-agent-connect 0.1.2-dev.cba5f68 → 0.2.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.
- package/dist/connectors/jira/connector.json +3 -3
- package/dist/connectors/microsoft/client.js +37 -1
- package/dist/connectors/microsoft/client.js.map +1 -1
- package/dist/connectors/sharepoint-files/connector.json +34 -3
- package/dist/connectors/sharepoint-files/documents.d.ts +7 -0
- package/dist/connectors/sharepoint-files/documents.js +212 -0
- package/dist/connectors/sharepoint-files/documents.js.map +1 -0
- package/dist/connectors/sharepoint-files/docx-worker.d.ts +7 -0
- package/dist/connectors/sharepoint-files/docx-worker.js +41 -0
- package/dist/connectors/sharepoint-files/docx-worker.js.map +1 -0
- package/dist/connectors/sharepoint-files/docx.d.ts +96 -0
- package/dist/connectors/sharepoint-files/docx.js +823 -0
- package/dist/connectors/sharepoint-files/docx.js.map +1 -0
- package/dist/connectors/sharepoint-files/index.js +2 -1
- package/dist/connectors/sharepoint-files/index.js.map +1 -1
- package/dist/connectors/sharepoint-files/ooxml.d.ts +19 -0
- package/dist/connectors/sharepoint-files/ooxml.js +179 -0
- package/dist/connectors/sharepoint-files/ooxml.js.map +1 -0
- package/dist/connectors/sharepoint-files/paging.d.ts +15 -0
- package/dist/connectors/sharepoint-files/paging.js +87 -0
- package/dist/connectors/sharepoint-files/paging.js.map +1 -0
- package/dist/connectors/sharepoint-files/parse-host.mjs +78 -0
- package/dist/connectors/sharepoint-files/pdf-worker.mjs +108 -0
- package/dist/connectors/sharepoint-files/pdf.d.ts +16 -0
- package/dist/connectors/sharepoint-files/pdf.js +19 -0
- package/dist/connectors/sharepoint-files/pdf.js.map +1 -0
- package/dist/connectors/sharepoint-files/sandbox.d.ts +19 -0
- package/dist/connectors/sharepoint-files/sandbox.js +176 -0
- package/dist/connectors/sharepoint-files/sandbox.js.map +1 -0
- package/dist/connectors/sharepoint-files/tools.d.ts +6 -0
- package/dist/connectors/sharepoint-files/tools.js +79 -4
- package/dist/connectors/sharepoint-files/tools.js.map +1 -1
- package/dist/packages/connector-kit/src/common.d.ts +3 -0
- package/dist/packages/connector-kit/src/common.js.map +1 -1
- package/dist/packages/connector-kit/src/connector.d.ts +2 -2
- package/dist/packages/connector-kit/src/connector.js +4 -2
- package/dist/packages/connector-kit/src/connector.js.map +1 -1
- package/dist/packages/connector-kit/src/types.d.ts +2 -1
- package/dist/packages/connector-kit/src/types.js.map +1 -1
- package/dist/packages/server/src/api.d.ts +2 -2
- package/dist/packages/server/src/events/runtime.js +17 -10
- package/dist/packages/server/src/events/runtime.js.map +1 -1
- package/dist/packages/server/src/service.d.ts +1 -1
- package/dist/packages/server/src/service.js +1 -0
- package/dist/packages/server/src/service.js.map +1 -1
- package/package.json +4 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"docx.js","sourceRoot":"","sources":["../../../connectors/sharepoint-files/docx.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,4CAA4C,CAAC;AACpE,OAAO,EACL,KAAK,EACL,QAAQ,EACR,GAAG,EACH,OAAO,EACP,EAAE,EACF,OAAO,EACP,QAAQ,EACR,YAAY,EACZ,GAAG,EACH,CAAC,GACF,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,IAAI,EAAE,MAAM,cAAc,CAAC;AAEpC,wFAAwF;AACxF,uFAAuF;AACvF,iGAAiG;AACjG,4FAA4F;AAC5F,kEAAkE;AAElE,MAAM,CAAC,MAAM,QAAQ,GAAG,MAAM,CAAC;AAC/B,MAAM,CAAC,MAAM,QAAQ,GAAG,GAAG,CAAC;AAC5B,MAAM,CAAC,MAAM,SAAS,GAAG,EAAE,CAAC;AAC5B,MAAM,CAAC,MAAM,QAAQ,GAAG,GAAG,CAAC;AAC5B,iCAAiC;AACjC,MAAM,CAAC,MAAM,aAAa,GAAG,EAAE,CAAC;AAChC,MAAM,CAAC,MAAM,cAAc,GAAG,MAAM,CAAC;AACrC,6CAA6C;AAC7C,MAAM,CAAC,MAAM,SAAS,GAAG,wBAAwB,CAAC;AAElD,MAAM,QAAQ,GAAG,mBAAmB,CAAC;AACrC,MAAM,MAAM,GAAG,iBAAiB,CAAC;AACjC,MAAM,aAAa,GAAG,mCAAmC,CAAC;AAC1D,MAAM,UAAU,GAAG,CAAC,IAAY,EAAE,EAAE,CAClC,IAAI,KAAK,QAAQ;IACjB,IAAI,KAAK,MAAM;IACf,IAAI,KAAK,mBAAmB;IAC5B,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC3B,MAAM,EAAE,GAAG,6DAA6D,CAAC;AACzE,MAAM,SAAS,GAAG,CAAC,GAAW,EAAE,EAAE,CAAC,WAAW,GAAG,IAAI,CAAC;AACtD,MAAM,UAAU,GAAG,YAAY,CAAC;AAChC,qEAAqE;AACrE,MAAM,SAAS,GAAG,WAAW,CAAC;AAqC9B,0FAA0F;AAC1F,sEAAsE;AACtE,SAAS,OAAO,CAAC,GAAmB,EAAE,IAAW,EAAE,MAAM,GAAG,KAAK;IAC/D,IAAI,CAAC,GAAG;QAAE,OAAO;IACjB,KAAK,IAAI,CAAC,GAAG,GAAG,CAAC,UAAU,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,WAAW,EAAE,CAAC;QAClD,IAAI,CAAC,CAAC,QAAQ,KAAK,CAAC;YAAE,SAAS;QAC/B,MAAM,CAAC,GAAG,CAAY,CAAC;QACvB,IAAI,CAAC,CAAC,YAAY,KAAK,EAAE,IAAI,CAAC,CAAC,SAAS,KAAK,kBAAkB,EAAE,CAAC;YAChE,KAAK,IAAI,CAAC,GAAG,CAAC,CAAC,UAAU,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,WAAW;gBAC7C,IAAI,CAAC,CAAC,QAAQ,KAAK,CAAC,IAAK,CAAa,CAAC,YAAY,KAAK,EAAE;oBAAE,OAAO,CAAC,CAAY,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;YAChG,SAAS;QACX,CAAC;QACD,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;YAAE,SAAS;QACtB,QAAQ,CAAC,CAAC,SAAS,EAAE,CAAC;YACpB,KAAK,QAAQ;gBACX,IAAI,EAAE,CAAC,CAAC,CAAC;oBAAE,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;qBACzB,IAAI,CAAC,MAAM;oBAAE,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;gBACtC,MAAM;YACR,KAAK,OAAO;gBACV,IAAI,CAAC,KAAK,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC;gBAC1C,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,EAAE,YAAY,CAAC,IAAI,EAAE,CAAC,CAAC,WAAW,EAAE,IAAI,SAAS,CAAC;gBAClF,MAAM;YACR,KAAK,IAAI,CAAC,CAAC,CAAC;gBACV,MAAM,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;gBACjB,IAAI,CAAC,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;oBAAE,IAAI,CAAC,EAAE,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;gBAC9C,MAAM;YACR,CAAC;YACD,KAAK,GAAG,CAAC,CAAC,CAAC;gBACT,MAAM,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;gBACjB,IAAI,CAAC,IAAI,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;oBAAE,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC;gBACpE,MAAM;YACR,CAAC;YACD,KAAK,KAAK;gBACR,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,EAAE,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,WAAW,EAAE,IAAI,SAAS,CAAC;gBAC3E,MAAM;QACV,CAAC;IACH,CAAC;AACH,CAAC;AAID,oGAAoG;AACpG,MAAM,OAAO,MAAM;IACA,MAAM,GAAG,IAAI,GAAG,EAAiB,CAAC;IAClC,KAAK,GAAG,IAAI,GAAG,EAAiB,CAAC;IACjC,QAAQ,GAAU,EAAE,CAAC;IAC9B,gBAAgB,GAAkB,IAAI,CAAC;IAE/C,YAAY,GAAoB;QAC9B,MAAM,IAAI,GAAG,GAAG,EAAE,eAAe,CAAC;QAClC,IAAI,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,QAAQ,CAAC;YAAE,OAAO;QAC1C,MAAM,QAAQ,GAAG,KAAK,CAAC,IAAI,EAAE,aAAa,CAAC,CAAC;QAC5C,MAAM,UAAU,GAAG,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QACnE,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;QACrE,KAAK,MAAM,CAAC,IAAI,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC,EAAE,CAAC;YACxC,MAAM,EAAE,GAAG,CAAC,CAAC,cAAc,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC;YAC1C,IAAI,CAAC,EAAE;gBAAE,SAAS;YAClB,MAAM,IAAI,GAAG,CAAC,CAAC,cAAc,CAAC,CAAC,EAAE,MAAM,CAAC,IAAI,WAAW,CAAC;YACxD,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC;YACvF,MAAM,SAAS,GAAG,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,EAAE,SAAS,CAAC,IAAI,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC;YACvE,IAAI,IAAI,KAAK,WAAW,IAAI,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC;gBAAE,IAAI,CAAC,gBAAgB,GAAG,EAAE,CAAC;QAClG,CAAC;IACH,CAAC;IAED,+EAA+E;IACvE,KAAK,CAAC,EAAiB;QAC7B,IAAI,CAAC,EAAE;YAAE,OAAO,EAAE,CAAC;QACnB,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAC/B,IAAI,GAAG;YAAE,OAAO,GAAG,CAAC;QACpB,MAAM,GAAG,GAAa,EAAE,CAAC;QACzB,KAAK,IAAI,EAAE,GAAkB,EAAE,EAAE,EAAE,IAAI,GAAG,CAAC,MAAM,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,GAAI,CAAC;YAC9E,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACb,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,OAAO,IAAI,IAAI,CAAC;QAC5C,CAAC;QACD,MAAM,KAAK,GAAU,EAAE,CAAC;QACxB,KAAK,MAAM,CAAC,IAAI,GAAG,CAAC,OAAO,EAAE;YAAE,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,IAAI,IAAI,EAAE,KAAK,CAAC,CAAC;QAC/E,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;QAC1B,OAAO,KAAK,CAAC;IACf,CAAC;IAED,yFAAyF;IACzF,GAAG,CAAC,GAAmB,EAAE,cAA6B;QACpD,MAAM,KAAK,GAAU,EAAE,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;QAC1C,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,cAAc,IAAI,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC;QAC1E,MAAM,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QACtD,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;QACzC,OAAO,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;QACpB,OAAO,KAAK,CAAC;IACf,CAAC;CACF;AAED,MAAM,SAAS,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC;AAEnC,MAAM,SAAS,GAAG,CAAC,GAAuB,EAAE,EAAE;IAC5C,IAAI,CAAC,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,GAAG,CAAC;QAAE,OAAO,KAAK,CAAC;IACrD,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,IAAI,CAAC,CAAC;AAC3E,CAAC,CAAC;AACF,MAAM,YAAY,GAAG,IAAI,GAAG,CAAC,CAAC,aAAa,EAAE,QAAQ,CAAC,CAAC,CAAC;AAExD,sFAAsF;AACtF,MAAM,UAAU,aAAa,CAAC,KAAY;IACxC,MAAM,OAAO,GAAa,EAAE,CAAC;IAC7B,IAAI,KAAK,CAAC,MAAM;QAAE,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;IAC9C,IAAI,CAAC,KAAK,CAAC,KAAK,IAAI,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,KAAK,IAAI,SAAS,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QAC5F,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;SACxB,IAAI,KAAK,CAAC,IAAI,IAAI,KAAK,CAAC,KAAK,IAAI,KAAK,CAAC,KAAK,KAAK,MAAM,IAAI,KAAK,CAAC,IAAI,KAAK,KAAK,CAAC,KAAK;QACxF,OAAO,CAAC,IAAI,CAAC,gCAAgC,CAAC,CAAC;IACjD,IAAI,CAAC,KAAK,CAAC,EAAE,KAAK,SAAS,IAAI,KAAK,CAAC,EAAE,IAAI,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,KAAK,SAAS,IAAI,KAAK,CAAC,KAAK,IAAI,EAAE,CAAC;QAC/F,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IAC5B,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,gGAAgG;AAChG,UAAU;AAEV,MAAM,KAAK,GAAG,CAAC,GAAY,EAAiB,EAAE;IAC5C,MAAM,EAAE,GAAG,KAAK,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;IAC/B,MAAM,GAAG,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAC9C,OAAO,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC;AAC1B,CAAC,CAAC;AAEF,2FAA2F;AAC3F,MAAM,UAAU,UAAU,CAAC,GAAY;IACrC,MAAM,MAAM,GAAG,GAAG,CAAC,UAA4B,CAAC;IAChD,IAAI,GAAG,CAAC,MAAM,EAAE,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC;IACrC,IAAI,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC;QAAE,OAAO,MAAM,CAAC;IACrC,KAAK,IAAI,CAAC,GAAgB,MAAM,EAAE,CAAC,EAAE,CAAC,GAAI,CAAU,CAAC,UAAU,EAAE,CAAC;QAChE,IAAI,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC;YAAE,OAAO,QAAQ,CAAC;QACjC,IAAI,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,IAAI,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,IAAI,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC;YAAE,MAAM;IAC9E,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,MAAM,SAAS,GAAG,CAAC,GAAY,EAAE,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,YAAY,CAAC,CAAC;AAC7D,MAAM,UAAU,GAAG,CAAC,GAAY,EAAE,EAAE;IAClC,MAAM,OAAO,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC;IAC/B,OAAO,OAAO,IAAI,UAAU,CAAC,GAAG,CAAC,KAAK,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;AAC/E,CAAC,CAAC;AAOF,wFAAwF;AACxF,6CAA6C;AAC7C,MAAM,QAAQ;IACZ,MAAM,GAA0B,EAAE,CAAC;IACnC,MAAM,GAAG,IAAI,GAAG,EAAiB,CAAC;IAClC,OAAO,GAAG,IAAI,GAAG,EAAkB,CAAC;IACpC,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;IACzB,UAAU,GAAG,CAAC,CAAC;IACf,SAAS,GAAG,CAAC,CAAC;IACd,SAAS,GAAG,KAAK,CAAC;IAClB,WAAW,GAAG,KAAK,CAAC;CACrB;AAED,MAAM,MAAM;IAOS;IACA;IACA;IARnB,mFAAmF;IAC3E,SAAS,GAAa,EAAE,CAAC;IACzB,UAAU,GAAkD,IAAI,CAAC;IACjE,cAAc,GAAkB,IAAI,CAAC;IAE7C,YACmB,KAAc,EACd,GAAoB,EACpB,MAAc;QAFd,UAAK,GAAL,KAAK,CAAS;QACd,QAAG,GAAH,GAAG,CAAiB;QACpB,WAAM,GAAN,MAAM,CAAQ;IAC9B,CAAC;IAEI,MAAM,CAAC,KAAa;QAC1B,IAAI,GAAG,GAAG,EAAE,CAAC;QACb,IAAI,IAAI,GAAG,EAAE,CAAC;QACd,MAAM,KAAK,GAAG,GAAG,EAAE;YACjB,IAAI,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;gBACzB,SAAS,CAAC,SAAS,GAAG,CAAC,CAAC;gBACxB,IAAI,IAAI,CAAC,GAAG;oBAAE,IAAI,CAAC,GAAG,CAAC,WAAW,GAAG,IAAI,CAAC;gBAC1C,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;YACvC,CAAC;YACD,GAAG,IAAI,IAAI,CAAC;YACZ,IAAI,GAAG,EAAE,CAAC;QACZ,CAAC,CAAC;QACF,KAAK,MAAM,CAAC,IAAI,KAAK;YACnB,IAAI,OAAO,CAAC,KAAK,QAAQ;gBAAE,IAAI,IAAI,CAAC,CAAC;iBAChC,CAAC;gBACJ,KAAK,EAAE,CAAC;gBACR,GAAG,IAAI,CAAC,CAAC,IAAI,CAAC;YAChB,CAAC;QACH,KAAK,EAAE,CAAC;QACR,OAAO,GAAG,CAAC;IACb,CAAC;IAEO,QAAQ,CAAC,GAAW;QAC1B,IAAI,IAAI,CAAC,KAAK,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC;YACpC,MAAM,IAAI,MAAM,CACd,uIAAuI,CACxI,CAAC;IACN,CAAC;IAEO,OAAO,CAAC,GAAW,EAAE,CAAS;QACpC,GAAG,CAAC,KAAK,IAAI,CAAC,CAAC;QACf,MAAM,IAAI,GAAG,GAAG,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;QAClC,IAAI,IAAI,IAAI,CAAC,IAAI,OAAO,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,QAAQ;YAAE,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;;YACtE,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACvB,IAAI,IAAI,CAAC,GAAG;YACV,KAAK,MAAM,EAAE,IAAI,IAAI,CAAC,GAAG,CAAC,IAAI;gBAAE,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IACnG,CAAC;IAEO,GAAG,CAAC,CAAU,EAAE,GAAW;QACjC,MAAM,OAAO,GAAG,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC;QACrF,KAAK,IAAI,CAAC,GAAG,CAAC,CAAC,UAAU,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,WAAW,EAAE,CAAC;YAChD,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;gBACZ,IAAI,CAAC,CAAC,QAAQ,KAAK,CAAC,IAAI,8BAA8B,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,IAAI,EAAE,CAAC,IAAI,IAAI,CAAC,GAAG;oBACxF,IAAI,CAAC,GAAG,CAAC,SAAS,GAAG,IAAI,CAAC;gBAC5B,SAAS;YACX,CAAC;YACD,IAAI,CAAC,GAAG,EAAE,CAAC;YACX,IAAI,CAAC,CAAC,SAAS,KAAK,GAAG;gBAAE,CAAC,GAAG,CAAC,CAAC,WAAW,IAAI,EAAE,CAAC;iBAC5C,IAAI,CAAC,CAAC,SAAS,KAAK,KAAK,IAAI,CAAC,CAAC,SAAS,KAAK,MAAM;gBAAE,CAAC,GAAG,IAAI,CAAC;iBAC9D,IAAI,CAAC,CAAC,SAAS,KAAK,IAAI,IAAI,CAAC,CAAC,SAAS,KAAK,IAAI;gBAAE,CAAC,GAAG,IAAI,CAAC;iBAC3D,IAAI,CAAC,CAAC,SAAS,KAAK,eAAe;gBAAE,CAAC,GAAG,GAAG,CAAC;iBAC7C,IAAI,CAAC,CAAC,CAAC,SAAS,KAAK,SAAS,IAAI,CAAC,CAAC,SAAS,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC;gBAC3E,IAAI,CAAC,CAAC,sBAAsB,CAAC,CAAC,EAAE,aAAa,CAAC,CAAC,MAAM;oBAAE,IAAI,CAAC,GAAG,CAAC,SAAS,GAAG,IAAI,CAAC;YACnF,CAAC;YACD,IAAI,CAAC,CAAC;gBAAE,SAAS;YACjB,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;gBACnB,IAAI,IAAI,CAAC,GAAG,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;oBAChC,IAAI,CAAC,UAAU,CAAC,IAAI,IAAI,CAAC,CAAC;oBAC1B,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,UAAW,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;gBAC1D,CAAC;YACH,CAAC;;gBAAM,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;QAC9B,CAAC;IACH,CAAC;IAEO,MAAM,CAAC,IAAU,EAAE,GAAW;QACpC,KAAK,IAAI,CAAC,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,WAAW,EAAE,CAAC;YACnD,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;gBAAE,SAAS;YACtB,QAAQ,CAAC,CAAC,SAAS,EAAE,CAAC;gBACpB,KAAK,GAAG;oBACN,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;oBACjB,MAAM;gBACR,KAAK,KAAK,CAAC;gBACX,KAAK,UAAU;oBACb,IAAI,IAAI,CAAC,GAAG;wBAAE,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC;oBACnC,MAAM;gBACR,KAAK,KAAK,CAAC;gBACX,KAAK,QAAQ;oBACX,IAAI,IAAI,CAAC,GAAG;wBAAE,IAAI,CAAC,GAAG,CAAC,UAAU,EAAE,CAAC;oBACpC,IAAI,CAAC,MAAM,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;oBACpB,MAAM;gBACR,KAAK,KAAK,CAAC,CAAC,CAAC;oBACX,MAAM,OAAO,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;oBAC7B,IAAI,CAAC,OAAO;wBAAE,MAAM;oBACpB,MAAM,GAAG,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;oBACrB,IAAI,GAAG;wBAAE,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;oBAC5B,MAAM,GAAG,GAAW,EAAE,KAAK,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC;oBAC7C,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;oBAC1B,IAAI,GAAG,IAAI,IAAI,CAAC,GAAG;wBAAE,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC;oBACnD,GAAG,CAAC,KAAK,IAAI,GAAG,CAAC,KAAK,CAAC;oBACvB,IAAI,GAAG,IAAI,IAAI,CAAC,KAAK;wBAAE,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,GAAG,CAAC,KAAK,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC,CAAC;;wBAC/F,KAAK,MAAM,CAAC,IAAI,GAAG,CAAC,KAAK;4BAAE,OAAO,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;oBAChG,MAAM;gBACR,CAAC;gBACD,KAAK,mBAAmB,CAAC,CAAC,CAAC;oBACzB,MAAM,EAAE,GAAG,CAAC,CAAC,cAAc,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;oBACrC,IAAI,EAAE,IAAI,IAAI,CAAC,GAAG;wBAAE,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;oBAC1C,MAAM;gBACR,CAAC;gBACD,KAAK,iBAAiB,CAAC,CAAC,CAAC;oBACvB,MAAM,EAAE,GAAG,CAAC,CAAC,cAAc,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;oBACrC,IAAI,EAAE,IAAI,IAAI,CAAC,GAAG;wBAAE,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;oBAC7C,MAAM;gBACR,CAAC;gBACD,KAAK,WAAW,CAAC;gBACjB,KAAK,UAAU,CAAC;gBAChB,KAAK,WAAW,CAAC;gBACjB,KAAK,WAAW,CAAC;gBACjB,KAAK,KAAK,CAAC;gBACX,KAAK,KAAK;oBACR,IAAI,CAAC,MAAM,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;oBACpB,MAAM;YACV,CAAC;QACH,CAAC;IACH,CAAC;IAEO,MAAM,CAAC,GAAW,EAAE,CAAS;QACnC,MAAM,IAAI,GAAG,GAAG,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;QAClC,IAAI,IAAI,IAAI,CAAC,IAAI,OAAO,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,QAAQ;YAAE,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;;YACtE,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACzB,CAAC;IAEO,KAAK,CAAC,GAAY,EAAE,GAAW,EAAE,WAAoB;QAC3D,MAAM,GAAG,GAAG,IAAI,CAAC,GAAI,CAAC;QACtB,MAAM,IAAI,GAAG,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACjC,IAAI,IAAI,EAAE,CAAC;YACT,IAAI,CAAC,QAAQ,EAAE,CAAC;YAChB,OAAO;QACT,CAAC;QACD,MAAM,EAAE,GAAG,KAAK,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;QAC/B,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC;QAC9B,MAAM,OAAO,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC;QAC/B,MAAM,KAAK,GAAG,IAAI,MAAM,CAAC,KAAK,EAAE,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;QACnD,MAAM,KAAK,GACT,WAAW,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,EAAE,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QACnF,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE;YAClB,GAAG;YACH,KAAK,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI;YAC1C,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM;YAC9B,KAAK;YACL,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAClD,WAAW,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,EAAE,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK;YACxD,QAAQ,EAAE,CAAC;SACZ,CAAC,CAAC;IACL,CAAC;IAED,0FAA0F;IAC1F,SAAS,CAAC,CAAU,EAAE,KAAa;QACjC,MAAM,GAAG,GAAW,EAAE,KAAK,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC;QAC7C,MAAM,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC;QAC9B,MAAM,UAAU,GAAG,IAAI,CAAC,cAAc,CAAC;QACvC,MAAM,GAAG,GAAG,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;QAC5B,IAAI,CAAC,cAAc,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QAC7D,IAAI,CAAC,UAAU,GAAG,EAAE,IAAI,EAAE,EAAE,EAAE,OAAO,EAAE,IAAI,GAAG,EAAE,EAAE,CAAC;QACnD,IAAI,CAAC,MAAM,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;QACpB,IAAI,IAAI,CAAC,GAAG,IAAI,IAAI,CAAC,UAAU,CAAC,IAAI;YAClC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC;gBACnB,KAAK;gBACL,OAAO,EAAE,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC;gBACrC,IAAI,EAAE,IAAI,CAAC,UAAU,CAAC,IAAI;aAC3B,CAAC,CAAC;QACL,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;QACxB,IAAI,CAAC,cAAc,GAAG,UAAU,CAAC;QACjC,IAAI,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC;QAC3D,IAAI,IAAI,CAAC,KAAK;YACZ,KAAK,MAAM,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,OAAO,EAAE;gBAAE,IAAI,GAAG,GAAG,SAAS,CAAC,GAAG,CAAC,GAAG,IAAI,GAAG,UAAU,EAAE,CAAC;QAClG,OAAO,IAAI,CAAC;IACd,CAAC;IAED,6FAA6F;IAC7F,KAAK,CAAC,IAAU,EAAE,QAAgB,OAAO,EAAE,KAAK,GAAG,MAAM;QACvD,IAAI,KAAK,KAAK,KAAK;YAAE,OAAO,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QACnF,IAAI,KAAK,KAAK,MAAM;YAAE,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QACvD,IAAI,KAAK,KAAK,QAAQ,EAAE,CAAC;YACvB,MAAM,GAAG,GAAW,EAAE,KAAK,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC;YAC7C,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;YACvB,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QAC3D,CAAC;QACD,MAAM,GAAG,GAAa,EAAE,CAAC;QACzB,KAAK,IAAI,CAAC,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,WAAW,EAAE,CAAC;YACnD,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;gBAAE,SAAS;YACtB,IAAI,CAAC,CAAC,SAAS,KAAK,GAAG;gBAAE,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC;iBACvD,IAAI,CAAC,CAAC,SAAS,KAAK,KAAK;gBAAE,GAAG,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;iBAC1F,IAAI,CAAC,CAAC,SAAS,KAAK,KAAK;gBAAE,IAAI,CAAC,UAAU,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAE,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;iBAC5G,IAAI,CAAC,CAAC,SAAS,KAAK,WAAW;gBAAE,GAAG,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC;iBAC5E,IAAI,CAAC,CAAC,SAAS,KAAK,KAAK,IAAI,CAAC,CAAC,SAAS,KAAK,QAAQ,EAAE,CAAC;gBAC3D,IAAI,IAAI,CAAC,GAAG;oBAAE,IAAI,CAAC,GAAG,CAAC,UAAU,EAAE,CAAC;gBACpC,GAAG,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC;YAC7C,CAAC;iBAAM,IAAI,CAAC,CAAC,CAAC,SAAS,KAAK,KAAK,IAAI,CAAC,CAAC,SAAS,KAAK,UAAU,CAAC,IAAI,IAAI,CAAC,GAAG;gBAC1E,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC;QACzB,CAAC;QACD,OAAO,GAAG,CAAC;IACb,CAAC;IAEO,UAAU,CAAC,GAAY,EAAE,IAAgB;QAC/C,MAAM,OAAO,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC;QAC/B,IAAI,CAAC,OAAO;YAAE,OAAO;QACrB,MAAM,GAAG,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC;QACvB,IAAI,GAAG;YAAE,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;QAC5B,IAAI,GAAG,IAAI,IAAI,CAAC,GAAG;YAAE,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;QAC1C,IAAI,GAAG;YAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAClC,IAAI,CAAC;YACH,IAAI,EAAE,CAAC;QACT,CAAC;gBAAS,CAAC;YACT,IAAI,GAAG;gBAAE,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,CAAC;QAChC,CAAC;IACH,CAAC;IAEO,OAAO,CAAC,IAAU,EAAE,KAAa,EAAE,QAAkB,EAAE;QAC7D,KAAK,IAAI,CAAC,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,WAAW,EAAE,CAAC;YACnD,IAAI,KAAK,CAAC,MAAM,GAAG,aAAa;gBAC9B,MAAM,IAAI,MAAM,CAAC,wCAAwC,aAAa,oCAAoC,CAAC,CAAC;YAC9G,IAAI,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC;gBAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;iBAClE,IAAI,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC;gBAAE,IAAI,CAAC,UAAU,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAE,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC;iBACvF,IAAI,GAAG,CAAC,CAAC,EAAE,WAAW,CAAC;gBAAE,IAAI,CAAC,OAAO,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;QAC9D,CAAC;QACD,IAAI,KAAK,CAAC,MAAM,GAAG,aAAa;YAC9B,MAAM,IAAI,MAAM,CAAC,wCAAwC,aAAa,oCAAoC,CAAC,CAAC;QAC9G,OAAO,KAAK,CAAC;IACf,CAAC;IAEO,WAAW,CAAC,IAAU,EAAE,KAAa,EAAE,OAAmB,EAAE;QAClE,KAAK,IAAI,CAAC,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,WAAW,EAAE,CAAC;YACnD,IAAI,IAAI,CAAC,MAAM,GAAG,cAAc;gBAC9B,MAAM,IAAI,MAAM,CAAC,wCAAwC,cAAc,0BAA0B,CAAC,CAAC;YACrG,IAAI,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC;gBAAE,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC;iBAC/C,IAAI,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC;gBAAE,IAAI,CAAC,UAAU,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,CAAE,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC;iBAC1F,IAAI,GAAG,CAAC,CAAC,EAAE,WAAW,CAAC;gBAAE,IAAI,CAAC,WAAW,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;QACjE,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,SAAS,CAAC,GAAY,EAAE,KAAK,GAAG,MAAM;QACpC,OAAO,IAAI,CAAC,WAAW,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;IACtC,CAAC;IAED,iEAAiE;IACjE,IAAI,CAAC,IAAU,EAAE,GAAyD;QACxE,KAAK,IAAI,CAAC,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,WAAW,EAAE,CAAC;YACnD,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;gBAAE,SAAS;YACtB,IAAI,CAAC,CAAC,SAAS,KAAK,GAAG,EAAE,CAAC;gBACxB,MAAM,CAAC,GAAG,GAAG,CAAC,UAAU,CAAC,MAAM,CAAC;gBAChC,MAAM,GAAG,GAAG,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;gBAC5B,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,aAAa,CAAC,EAAE,CAAC,CAAC;gBACjD,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC;gBACjG,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,CAAC;YACpC,CAAC;iBAAM,IAAI,CAAC,CAAC,SAAS,KAAK,KAAK,EAAE,CAAC;gBACjC,MAAM,CAAC,GAAG,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC;gBAC5B,MAAM,KAAK,GAAG,GAAG,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;gBACvE,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,eAAe,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;gBACtF,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC;YAChC,CAAC;iBAAM,IAAI,CAAC,CAAC,SAAS,KAAK,KAAK;gBAAE,IAAI,CAAC,UAAU,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAE,EAAE,GAAG,CAAC,CAAC,CAAC;iBACrF,IAAI,CAAC,CAAC,SAAS,KAAK,WAAW;gBAAE,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;iBACnD,IAAI,CAAC,CAAC,SAAS,KAAK,KAAK,IAAI,CAAC,CAAC,SAAS,KAAK,QAAQ,EAAE,CAAC;gBAC3D,IAAI,IAAI,CAAC,GAAG;oBAAE,IAAI,CAAC,GAAG,CAAC,UAAU,EAAE,CAAC;gBACpC,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;YACpB,CAAC;iBAAM,IAAI,CAAC,CAAC,CAAC,SAAS,KAAK,KAAK,IAAI,CAAC,CAAC,SAAS,KAAK,UAAU,CAAC,IAAI,IAAI,CAAC,GAAG;gBAC1E,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC;QACzB,CAAC;IACH,CAAC;CACF;AAED,MAAM,MAAM,GAAG,CAAC,GAAa,EAAW,EAAE;IACxC,MAAM,IAAI,GAAG,GAAG,CAAC,eAAe,IAAI,GAAG,CAAC,GAAG,CAAC,eAAe,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,eAAe,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IACrH,IAAI,CAAC,IAAI;QAAE,MAAM,IAAI,MAAM,CAAC,4DAA4D,CAAC,CAAC;IAC1F,OAAO,IAAI,CAAC;AACd,CAAC,CAAC;AAEF,gFAAgF;AAChF,MAAM,UAAU,QAAQ,CAAC,KAAiB,EAAE,GAAG,GAAG,KAAK;IACrD,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC;IAC3D,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC;QAAE,MAAM,IAAI,MAAM,CAAC,yDAAyD,CAAC,CAAC;IACtG,OAAO,KAAK,CAAC;AACf,CAAC;AAED,MAAM,UAAU,QAAQ,CAAC,KAAiB,EAAE,OAAiC,EAAE;IAC7E,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IAC9B,MAAM,MAAM,GAAG,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAE,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IAChG,MAAM,GAAG,GAAG,IAAI,QAAQ,EAAE,CAAC;IAC3B,MAAM,MAAM,GAAG,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,GAAG,EAAE,MAAM,CAAC,CAAC;IACjE,MAAM,GAAG,GAAgB;QACvB,UAAU,EAAE,EAAE;QACd,MAAM,EAAE,EAAE;QACV,KAAK,EAAE,EAAE;QACT,MAAM,EAAE,EAAE;QACV,MAAM,EAAE,EAAE;QACV,eAAe,EAAE,EAAE;QACnB,QAAQ,EAAE,EAAE;QACZ,eAAe,EAAE,EAAE,UAAU,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE;QAChD,KAAK,EAAE,EAAE;KACV,CAAC;IACF,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAE,EAAE,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;IAEnE,MAAM,WAAW,GAAG,CAAC,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC;SAClC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;SACtD,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;SAClB,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAE,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAE,CAAC,CAAC,CAAC,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,CAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACjG,MAAM,SAAS,GAAG,IAAI,QAAQ,EAAE,CAAC;IACjC,KAAK,MAAM,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,WAAW,EAAE,CAAC;QACtC,MAAM,IAAI,GAAG,GAAG,CAAE,CAAC,CAAC,CAAC,GAAG,CAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAChC,MAAM,IAAI,GAAG,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAE,EAAE,IAAI,CAAC,CAAC,eAAgB,CAAC;QAC/D,MAAM,IAAI,GAAG,IAAI,MAAM,CAAC,KAAK,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC,KAAK,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACxF,GAAG,CAAC,eAAe,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;IAC3C,CAAC;IAED,MAAM,QAAQ,GAAG,KAAK,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAC;IAChD,IAAI,QAAQ,EAAE,CAAC;QACb,MAAM,IAAI,GAAG,QAAQ,CAAC,QAAQ,EAAE,mBAAmB,CAAC,CAAC,eAAgB,CAAC;QACtE,KAAK,MAAM,CAAC,IAAI,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC,EAAE,CAAC;YAC1C,MAAM,EAAE,GAAG,CAAC,CAAC,cAAc,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC;YAC3C,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC;gBAChB,MAAM,EAAE,CAAC,CAAC,cAAc,CAAC,CAAC,EAAE,QAAQ,CAAC,IAAI,IAAI;gBAC7C,IAAI,EAAE,IAAI,MAAM,CAAC,KAAK,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;gBACzD,MAAM,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC;aAClD,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,GAAG,CAAC,MAAM,GAAG,CAAC,GAAG,GAAG,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;IACtC,GAAG,CAAC,MAAM,GAAG,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC;IAClD,GAAG,CAAC,eAAe,GAAG,EAAE,UAAU,EAAE,GAAG,CAAC,UAAU,EAAE,SAAS,EAAE,GAAG,CAAC,SAAS,EAAE,CAAC;IAC/E,IAAI,GAAG,CAAC,UAAU,IAAI,GAAG,CAAC,SAAS;QACjC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,2EAA2E,CAAC,CAAC;IAC9F,IAAI,GAAG,CAAC,SAAS,IAAI,SAAS,CAAC,SAAS;QAAE,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,8CAA8C,CAAC,CAAC;IACzG,IAAI,GAAG,CAAC,WAAW;QACjB,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,yFAAyF,CAAC,CAAC;IAC5G,OAAO,GAAG,CAAC;AACb,CAAC;AAOD,sFAAsF;AACtF,MAAM,OAAO,GAAG,4CAA4C,CAAC;AAE7D,MAAM,SAAS,GAAG,CAAC,GAAa,EAAE,EAAE,CAClC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,sBAAsB,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,MAAM,CACrD,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,IAAI,IAAI,QAAQ,CAAC,CAAC,CAAC,CACxC,CAAC;AAEJ,SAAS,QAAQ,CAAC,CAAO;IACvB,KAAK,IAAI,CAAC,GAAG,CAAC,CAAC,UAAU,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,UAAU;QAAE,IAAI,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC;YAAE,OAAO,IAAI,CAAC;IAChF,OAAO,KAAK,CAAC;AACf,CAAC;AAED,MAAM,QAAQ,GAAG,CAAC,KAAc,EAAE,KAAc,EAAE,EAAE;IAClD,KAAK,IAAI,CAAC,GAAG,KAAK,CAAC,UAAU,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,UAAU;QAAE,IAAI,CAAC,KAAK,KAAK;YAAE,OAAO,IAAI,CAAC;IACjF,OAAO,KAAK,CAAC;AACf,CAAC,CAAC;AAEF,mEAAmE;AACnE,SAAS,SAAS,CAAC,EAAkB;IACnC,IAAI,CAAC,EAAE;QAAE,OAAO,IAAI,CAAC;IACrB,MAAM,IAAI,GAAG,EAAE,CAAC,SAAS,CAAC,IAAI,CAAY,CAAC;IAC3C,KAAK,MAAM,IAAI,IAAI,CAAC,WAAW,EAAE,WAAW,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,CAAC;QACnE,KAAK,MAAM,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;YAAE,CAAC,CAAC,UAAU,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC;IACjG,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,QAAQ,GAAG,CAAC,IAAa,EAAkB,EAAE,CACjD,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,IAAI,CAClD,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,UAAU,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,UAAU,EAAE,KAAK,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC,CACrF,IAAI,IAAI,CAAC;AAEZ,8EAA8E;AAC9E,MAAM,eAAe,GAAG,IAAI,GAAG,CAAC;IAC9B,GAAG,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,WAAW,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM;IAC9E,iBAAiB,EAAE,YAAY,EAAE,OAAO;CACzC,CAAC,CAAC;AAEH,SAAS,QAAQ,CAAC,GAAa,EAAE,QAAwB,EAAE,SAAkB;IAC3E,IAAI,GAAG,GAAG,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IAC9D,mFAAmF;IACnF,MAAM,KAAK,GAAG,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAChD,IAAI,KAAK,IAAI,uBAAuB,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;QAAE,GAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;IACrF,IAAI,SAAS,EAAE,CAAC;QACd,GAAG,KAAK,GAAG,CAAC,eAAe,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;QACxC,MAAM,GAAG,GAAG,KAAK,CAAC,GAAG,EAAE,WAAW,CAAC,CAAC;QACpC,IAAI,GAAG;YAAE,GAAG,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;QAC9B,MAAM,IAAI,GAAG,GAAG,CAAC,eAAe,CAAC,CAAC,EAAE,aAAa,CAAC,CAAC;QACnD,IAAI,CAAC,cAAc,CAAC,CAAC,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC;QAC1C,MAAM,MAAM,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,IAAI,EAAE,CAAC,CAAC,CAAC;QACjF,GAAG,CAAC,YAAY,CAAC,IAAI,EAAE,MAAM,IAAI,IAAI,CAAC,CAAC;IACzC,CAAC;IACD,OAAO,GAAG,IAAI,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC;AAC5C,CAAC;AAED,2DAA2D;AAC3D,SAAS,OAAO,CAAC,GAAa,EAAE,IAAY,EAAE,GAAmB;IAC/D,IAAI,CAAC,IAAI;QAAE,OAAO,EAAE,CAAC;IACrB,MAAM,CAAC,GAAG,GAAG,CAAC,eAAe,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;IACxC,IAAI,GAAG;QAAE,CAAC,CAAC,WAAW,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;IAC5C,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE;QACpC,IAAI,CAAC;YAAE,CAAC,CAAC,WAAW,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC;QACtD,IAAI,CAAC,KAAK;YAAE,OAAO;QACnB,MAAM,CAAC,GAAG,GAAG,CAAC,eAAe,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;QACxC,CAAC,CAAC,cAAc,CAAC,sCAAsC,EAAE,WAAW,EAAE,UAAU,CAAC,CAAC;QAClF,CAAC,CAAC,WAAW,CAAC,GAAG,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,CAAC;QACzC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;IACnB,CAAC,CAAC,CAAC;IACH,OAAO,CAAC,CAAC,CAAC,CAAC;AACb,CAAC;AAED,SAAS,UAAU,CAAC,GAAa,EAAE,IAAY,EAAE,GAAmB,EAAE,GAAmB;IACvF,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;QACnC,MAAM,CAAC,GAAG,GAAG,CAAC,eAAe,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;QACxC,IAAI,GAAG;YAAE,CAAC,CAAC,WAAW,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;QAC5C,KAAK,MAAM,CAAC,IAAI,OAAO,CAAC,GAAG,EAAE,IAAI,EAAE,GAAG,CAAC;YAAE,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;QAC1D,OAAO,CAAC,CAAC;IACX,CAAC,CAAC,CAAC;AACL,CAAC;AAED,MAAM,KAAK,GAAG,CAAC,IAAa,EAAE,OAA6B,GAAG,EAAE,CAAC,KAAK,EAAE,EAAE;IACxE,KAAK,MAAM,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC;QAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;YAAE,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;AACjF,CAAC,CAAC;AAEF,SAAS,QAAQ,CAAC,GAAa,EAAE,GAAY,EAAE,IAAY,EAAE,SAAkB;IAC7E,MAAM,OAAO,GAAG,SAAS,CAAC,GAAG,CAAE,CAAC;IAChC,MAAM,GAAG,GAAG,QAAQ,CAAC,OAAO,CAAC,CAAC;IAC9B,MAAM,GAAG,GAAG,QAAQ,CAAC,GAAG,EAAE,GAAG,EAAE,SAAS,CAAC,CAAC;IAC1C,IAAI,UAAU,CAAC,GAAG,CAAC,KAAK,QAAQ,EAAE,CAAC;QACjC,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE;YACnC,IAAI,CAAC,EAAE,CAAC;gBACN,MAAM,EAAE,GAAG,GAAG,CAAC,eAAe,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;gBACzC,IAAI,GAAG;oBAAE,EAAE,CAAC,WAAW,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;gBAC7C,EAAE,CAAC,WAAW,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC;gBAC/C,OAAO,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;YAC1B,CAAC;YACD,KAAK,MAAM,CAAC,IAAI,OAAO,CAAC,GAAG,EAAE,IAAI,EAAE,GAAG,CAAC;gBAAE,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;QAClE,CAAC,CAAC,CAAC;QACH,OAAO;IACT,CAAC;IACD,MAAM,CAAC,GAAG,OAAO,CAAC,sBAAsB,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC;IAC5D,MAAM,GAAG,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IAClD,KAAK,CAAC,OAAO,CAAC,CAAC;IACf,KAAK,MAAM,IAAI,IAAI,UAAU,CAAC,GAAG,EAAE,IAAI,EAAE,GAAG,IAAI,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,GAAG,CAAC;QAC/E,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;AAC9B,CAAC;AAED,SAAS,OAAO,CAAC,GAAa,EAAE,EAAW,EAAE,IAAY;IACvD,MAAM,CAAC,GAAG,KAAK,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC;IACzB,MAAM,GAAG,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IAClD,MAAM,GAAG,GAAG,QAAQ,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IACzD,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC;IACjC,KAAK,MAAM,IAAI,IAAI,UAAU,CAAC,GAAG,EAAE,IAAI,EAAE,GAAG,IAAI,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,GAAG,CAAC;QAAE,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;AAC1G,CAAC;AAED,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAC,CAAC,MAAM,EAAE,SAAS,EAAE,IAAI,CAAC,CAAC,CAAC;AAEpD,SAAS,SAAS,CAAC,GAAa,EAAE,GAAY,EAAE,IAAgB;IAC9D,MAAM,GAAG,GAAG,UAAU,CAAC,GAAG,CAAE,CAAC;IAC7B,MAAM,GAAG,GAAG,QAAQ,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;IAChC,MAAM,QAAQ,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAE,CAAC;IAC7B,KAAK,MAAM,EAAE,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC;QAAE,GAAG,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;IACnD,KAAK,MAAM,MAAM,IAAI,IAAI,EAAE,CAAC;QAC1B,MAAM,EAAE,GAAG,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAY,CAAC;QAC/C,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,IAAI,EAAE,CAAC,CAAC,CAAC;QAC5D,QAAQ,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,EAAE,MAAM,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;QACzE,GAAG,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;IACtB,CAAC;AACH,CAAC;AAED,4FAA4F;AAC5F,SAAS,MAAM,CAAC,GAAY;IAC1B,MAAM,EAAE,GAAG,KAAK,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;IAC/B,IAAI,CAAC,EAAE;QAAE,OAAO;IAChB,KAAK,MAAM,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC;QACvC,IAAI,CAAC,CAAC,QAAQ,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,eAAe,CAAC,IAAI,CAAC,CAAC,SAAS,KAAK,aAAa,CAAC;YAChF,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;AACxB,CAAC;AAID,SAAS,IAAI,CAAC,GAAa,EAAE,MAAiC;IAC5D,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACjC,IAAI,IAAI,CAAC,MAAM,GAAG,QAAQ;QAAE,MAAM,IAAI,MAAM,CAAC,gBAAgB,QAAQ,mBAAmB,CAAC,CAAC;IAC1F,MAAM,KAAK,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC;IAC7B,MAAM,KAAK,GAAG,IAAI,GAAG,EAAqB,CAAC;IAC3C,KAAK,MAAM,CAAC,IAAI,KAAK;QAAE,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAE,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAE,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IAClF,MAAM,KAAK,GAAW,EAAE,CAAC;IACzB,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;QAC5B,MAAM,IAAI,GAAG,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAC5B,IAAI,CAAC,IAAI;YAAE,MAAM,IAAI,MAAM,CAAC,GAAG,IAAI,iCAAiC,CAAC,CAAC;QACtE,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;QAC1B,MAAM,KAAK,GACT,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAC3F,KAAK,MAAM,CAAC,IAAI,KAAK,EAAE,CAAC;YACtB,IAAI,CAAC,CAAC,MAAM,GAAG,QAAQ;gBACrB,MAAM,IAAI,MAAM,CAAC,iBAAiB,IAAI,mBAAmB,QAAQ,aAAa,CAAC,CAAC;YAClF,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;gBAAE,MAAM,IAAI,MAAM,CAAC,iBAAiB,IAAI,yBAAyB,CAAC,CAAC;QACxF,CAAC;QACD,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;YACvB,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC;YAC9B,IAAI,KAAK,KAAK,KAAK,IAAI,KAAK,KAAK,MAAM;gBACrC,MAAM,IAAI,MAAM,CAAC,GAAG,IAAI,yDAAyD,CAAC,CAAC;YACrF,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC;gBAAE,MAAM,IAAI,MAAM,CAAC,GAAG,IAAI,4BAA4B,CAAC,CAAC;YAC3E,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC;YAC9B,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,MAAM,IAAI,KAAK,EAAE,CAAC;gBACjD,IAAI,CAAC,KAAK;oBAAE,MAAM,IAAI,MAAM,CAAC,GAAG,IAAI,0CAA0C,CAAC,CAAC;gBAChF,MAAM,GAAG,GAAG,QAAQ,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;gBAClC,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI,QAAQ,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,IAAI,EAAE,CAAC,CAAC;oBACjG,MAAM,IAAI,MAAM,CAAC,GAAG,IAAI,iDAAiD,CAAC,CAAC;gBAC7E,IAAI,KAAK,CAAC,IAAI,CAAC,MAAM,GAAG,QAAQ;oBAC9B,MAAM,IAAI,MAAM,CAAC,QAAQ,IAAI,YAAY,QAAQ,OAAO,CAAC,CAAC;gBAC5D,MAAM,OAAO,GAAG,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAE,EAAE,IAAI,CAAC,CAAC,MAAM,CAAC;gBACnD,KAAK,MAAM,GAAG,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC;oBAC7B,IAAI,GAAG,CAAC,MAAM,GAAG,SAAS;wBACxB,MAAM,IAAI,MAAM,CAAC,aAAa,IAAI,QAAQ,GAAG,CAAC,MAAM,mBAAmB,SAAS,EAAE,CAAC,CAAC;oBACtF,IAAI,GAAG,CAAC,MAAM,GAAG,OAAO;wBACtB,MAAM,IAAI,MAAM,CAAC,aAAa,IAAI,QAAQ,GAAG,CAAC,MAAM,yBAAyB,OAAO,UAAU,CAAC,CAAC;gBACpG,CAAC;YACH,CAAC;iBAAM,IAAI,KAAK,IAAI,CAAC,CAAC,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,EAAE,CAAC;gBAC9D,MAAM,IAAI,MAAM,CAAC,GAAG,IAAI,4CAA4C,CAAC,CAAC;iBACnE,IAAI,SAAS,CAAC,GAAG,CAAE,CAAC,sBAAsB,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,MAAM;gBACjE,MAAM,IAAI,MAAM,CAAC,GAAG,IAAI,kDAAkD,CAAC,CAAC;YAC9E,KAAK,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC,CAAC;QAClC,CAAC;IACH,CAAC;IACD,KAAK,MAAM,CAAC,IAAI,KAAK;QACnB,KAAK,MAAM,CAAC,IAAI,KAAK;YACnB,IAAI,CAAC,KAAK,CAAC,IAAI,QAAQ,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,GAAG,CAAC;gBACnC,MAAM,IAAI,MAAM,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,GAAG,EAAE,GAAG,CAAC,cAAc,IAAI,CAAC,CAAC,CAAC,GAAG,EAAE,GAAG,CAAC,8BAA8B,CAAC,CAAC;IACxG,MAAM,QAAQ,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC,CAAE,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC;IACzF,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC;AAC7B,CAAC;AAED;6EAC6E;AAC7E,SAAS,QAAQ,CAAC,GAAa,EAAE,IAAe;IAC9C,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE;QAC7B,MAAM,CAAC,GAAG,CAAC,CAAC;QACZ,MAAM,OAAO,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC;QAC/B,MAAM,IAAI,GAAG,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAC3D,KAAK,MAAM,CAAC,IAAI,IAAI;YAAE,OAAQ,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;QAC9C,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;IAC3B,CAAC,CAAC,CAAC;IACH,MAAM,IAAI,GAAG,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC;IACzD,KAAK,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,KAAK;QAAE,KAAK,MAAM,CAAC,IAAI,IAAI;YAAE,OAAQ,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;IACrF,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,IAAI,GAAG,CAAC,CAAa,EAAE,CAAa,EAAE,EAAE,CAC5C,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,MAAM,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;AAE/H;gGACgG;AAChG,MAAM,UAAU,KAAK,CACnB,QAAiC,EACjC,MAAc,EACd,MAAkB,EAClB,IAAiB;IAEjB,MAAM,KAAK,GAAG,QAAQ,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IACrC,MAAM,KAAK,GAAG,CAAC,GAAG,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC;IACnC,IAAI,KAAK,CAAC,MAAM,KAAK,KAAK,CAAC,IAAI,IAAI,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QACjE,MAAM,IAAI,MAAM,CAAC,iFAAiF,CAAC,CAAC;IACtG,KAAK,MAAM,IAAI,IAAI,KAAK;QACtB,IAAI,IAAI,KAAK,QAAQ,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAE,EAAE,KAAK,CAAC,GAAG,CAAC,IAAI,CAAE,CAAC;YACnE,MAAM,IAAI,MAAM,CAAC,oBAAoB,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC,+BAA+B,CAAC,CAAC;IACzF,MAAM,GAAG,GAAG,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAE,EAAE,QAAQ,CAAC,CAAC;IACrD,IAAI,MAAM,KAAK,QAAQ,CAAC,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAE,CAAC,CAAC,CAAC;QAC7E,MAAM,IAAI,MAAM,CAAC,uEAAuE,CAAC,CAAC;AAC9F,CAAC;AAID,8FAA8F;AAC9F,gFAAgF;AAChF,SAAS,SAAS,CAChB,KAA8B,EAC9B,MAAiC,EACjC,QAAmB;IAEnB,MAAM,GAAG,GAAG,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAE,EAAE,QAAQ,CAAC,CAAC;IACrD,MAAM,CAAC,GAAG,CAAC,CAAC;IACZ,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;IAC9C,MAAM,MAAM,GAAG,QAAQ,CAAC,GAAG,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IACtD,KAAK,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,IAAI,KAAK,EAAE,CAAC;QACnC,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,MAAM,IAAI,KAAK;YAAE,SAAS,CAAC,GAAG,EAAE,GAAG,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;aAC7E,IAAI,UAAU,CAAC,GAAG,CAAC;YAAE,SAAS,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC;aAC7C,IAAI,OAAO,KAAK,KAAK,QAAQ;YAAE,QAAQ,CAAC,GAAG,EAAE,GAAG,EAAE,KAAK,CAAC,OAAO,CAAC,QAAQ,EAAE,IAAI,CAAC,EAAE,KAAK,CAAC,CAAC;;YACxF,QAAQ,CAAC,GAAG,EAAE,GAAG,EAAE,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,IAAI,CAAC,EAAE,OAAO,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC;QACtF,MAAM,CAAC,GAAG,CAAC,CAAC;IACd,CAAC;IACD,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC;IAC3B,QAAQ,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;IACrB,GAAG,CAAC,GAAG,CAAC,QAAQ,EAAE,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC;IACrC,OAAO,EAAE,KAAK,EAAE,OAAO,CAAC,GAAG,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC;AACnD,CAAC;AAED,gGAAgG;AAChG,MAAM,UAAU,QAAQ,CACtB,QAAoB,EACpB,MAAiC,EACjC,QAAmB;IAEnB,MAAM,KAAK,GAAG,QAAQ,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;IACvC,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,SAAS,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC;IACvE,KAAK,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;IAC1D,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,QAAQ,EAAE,CAAC;AAC1D,CAAC"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { toolsets } from "../../packages/connector-kit/src/common.js";
|
|
2
|
+
import { documentTools } from "./documents.js";
|
|
2
3
|
import { excelTools } from "./excel.js";
|
|
3
4
|
import { graphTools } from "./tools.js";
|
|
4
5
|
import { sitesVendor } from "./vendor.js";
|
|
@@ -6,7 +7,7 @@ export default {
|
|
|
6
7
|
id: "sharepoint-files",
|
|
7
8
|
create: ({ microsoft }) => ({
|
|
8
9
|
vendor: sitesVendor(microsoft),
|
|
9
|
-
toolset: toolsets(graphTools, excelTools),
|
|
10
|
+
toolset: toolsets(graphTools, excelTools, documentTools()),
|
|
10
11
|
}),
|
|
11
12
|
};
|
|
12
13
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../connectors/sharepoint-files/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,4CAA4C,CAAC;AACtE,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AACxC,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AACxC,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAE1C,eAAe;IACb,EAAE,EAAE,kBAAkB;IACtB,MAAM,EAAE,CAAC,EAAE,SAAS,EAAE,EAAE,EAAE,CAAC,CAAC;QAC1B,MAAM,EAAE,WAAW,CAAC,SAAS,CAAC;QAC9B,OAAO,EAAE,QAAQ,CAAC,UAAU,EAAE,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../connectors/sharepoint-files/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,4CAA4C,CAAC;AACtE,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAC/C,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AACxC,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AACxC,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAE1C,eAAe;IACb,EAAE,EAAE,kBAAkB;IACtB,MAAM,EAAE,CAAC,EAAE,SAAS,EAAE,EAAE,EAAE,CAAC,CAAC;QAC1B,MAAM,EAAE,WAAW,CAAC,SAAS,CAAC;QAC9B,OAAO,EAAE,QAAQ,CAAC,UAAU,EAAE,UAAU,EAAE,aAAa,EAAE,CAAC;KAC3D,CAAC;CACqB,CAAC"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { type Document, type Element, type Node } from "@xmldom/xmldom";
|
|
2
|
+
export declare const MAX_ENTRIES = 2000;
|
|
3
|
+
export declare const MAX_TOTAL_BYTES: number;
|
|
4
|
+
export declare const MAX_XML_BYTES: number;
|
|
5
|
+
/** The zip's parts that `wanted` names, inflated only after every size check passed. */
|
|
6
|
+
export declare function openZip(data: Uint8Array, wanted?: (name: string) => boolean): Map<string, Uint8Array>;
|
|
7
|
+
/** A zip of `parts`, in the order given, each deflated (empty ones and folders stored). */
|
|
8
|
+
export declare function makeZip(parts: Map<string, Uint8Array>): Uint8Array;
|
|
9
|
+
/** One XML part, parsed without any DTD, with one root and a bounded depth. */
|
|
10
|
+
export declare function parseXml(bytes: Uint8Array, name: string): Document;
|
|
11
|
+
export declare const serializeXml: (doc: Document) => NodeJS.NonSharedUint8Array;
|
|
12
|
+
export declare const W = "http://schemas.openxmlformats.org/wordprocessingml/2006/main";
|
|
13
|
+
export declare const isW: (n: Node | null, local?: string) => n is Element;
|
|
14
|
+
export declare const children: (n: Node, local?: string) => Element[];
|
|
15
|
+
export declare const child: (n: Node, local: string) => Element | null;
|
|
16
|
+
/** w:val of an element, or null. */
|
|
17
|
+
export declare const val: (e: Element | null) => string | null;
|
|
18
|
+
/** Whether an on/off property is on: present and not false, 0 or off. */
|
|
19
|
+
export declare const on: (e: Element | null) => boolean;
|
|
@@ -0,0 +1,179 @@
|
|
|
1
|
+
import { crc32 } from "node:zlib";
|
|
2
|
+
import { DOMParser, XMLSerializer } from "@xmldom/xmldom";
|
|
3
|
+
import { unzipSync, zipSync } from "fflate";
|
|
4
|
+
import { Denied } from "../../packages/connector-kit/src/common.js";
|
|
5
|
+
import { clip } from "./sandbox.js";
|
|
6
|
+
// Untrusted Office files (zip of XML parts), opened with the limits of the library vetting
|
|
7
|
+
// (LIBRARY-SECURITY-VETTING, 2026-11-01): sizes are read from the zip's own directory and
|
|
8
|
+
// checked before anything is inflated, every inflated part must match its recorded CRC (fflate
|
|
9
|
+
// checks none, and a header that lies about a size would otherwise cut a part short), and XML
|
|
10
|
+
// that declares a DOCTYPE or an entity is never parsed.
|
|
11
|
+
export const MAX_ENTRIES = 2_000;
|
|
12
|
+
export const MAX_TOTAL_BYTES = 50 * 1024 * 1024;
|
|
13
|
+
// A part's XML, before parsing. xmldom needs about 100 times a dense part's size in memory (a
|
|
14
|
+
// 19.5 MB document.xml of tiny paragraphs took 1.9 GB, review 2026-11-01), and a real
|
|
15
|
+
// document's parts are far smaller: a SOW's document.xml is well under 1 MB, a long report's a
|
|
16
|
+
// few MB. 5 MB keeps the DOM inside the docx worker's heap.
|
|
17
|
+
export const MAX_XML_BYTES = 5 * 1024 * 1024;
|
|
18
|
+
const MAX_RATIO = 200;
|
|
19
|
+
// Below this a part cannot be a bomb, whatever its ratio (a run of spaces compresses well).
|
|
20
|
+
const RATIO_FLOOR = 1024 * 1024;
|
|
21
|
+
const MAX_DEPTH = 256;
|
|
22
|
+
// The zip's central directory, read only for the CRCs fflate does not check. ZIP64 is refused:
|
|
23
|
+
// no Word file small enough to read here needs it.
|
|
24
|
+
function directory(data) {
|
|
25
|
+
const view = new DataView(data.buffer, data.byteOffset, data.byteLength);
|
|
26
|
+
let end = data.length - 22;
|
|
27
|
+
while (end >= 0 && view.getUint32(end, true) !== 0x06054b50) {
|
|
28
|
+
if (data.length - end > 65_557)
|
|
29
|
+
end = -1;
|
|
30
|
+
else
|
|
31
|
+
end--;
|
|
32
|
+
}
|
|
33
|
+
if (end < 0)
|
|
34
|
+
throw new Denied("That file is not a valid Word file (no zip directory)");
|
|
35
|
+
if (end >= 20 && view.getUint32(end - 20, true) === 0x07064b50)
|
|
36
|
+
throw new Denied("That file uses ZIP64, which is not read here");
|
|
37
|
+
const count = view.getUint16(end + 10, true);
|
|
38
|
+
if (count > MAX_ENTRIES)
|
|
39
|
+
throw new Denied(`That file has more than ${MAX_ENTRIES} parts, so it is not read`);
|
|
40
|
+
let at = view.getUint32(end + 16, true);
|
|
41
|
+
const entries = [];
|
|
42
|
+
for (let i = 0; i < count; i++) {
|
|
43
|
+
if (at + 46 > data.length || view.getUint32(at, true) !== 0x02014b50)
|
|
44
|
+
throw new Denied("That file is not a valid Word file (broken zip directory)");
|
|
45
|
+
const flags = view.getUint16(at + 8, true);
|
|
46
|
+
const nameLength = view.getUint16(at + 28, true);
|
|
47
|
+
const raw = data.subarray(at + 46, at + 46 + nameLength);
|
|
48
|
+
entries.push({
|
|
49
|
+
name: flags & 0x800 ? new TextDecoder().decode(raw) : String.fromCharCode(...raw),
|
|
50
|
+
crc: view.getUint32(at + 16, true),
|
|
51
|
+
size: view.getUint32(at + 20, true),
|
|
52
|
+
originalSize: view.getUint32(at + 24, true),
|
|
53
|
+
});
|
|
54
|
+
at += 46 + nameLength + view.getUint16(at + 30, true) + view.getUint16(at + 32, true);
|
|
55
|
+
}
|
|
56
|
+
return entries;
|
|
57
|
+
}
|
|
58
|
+
/** The zip's parts that `wanted` names, inflated only after every size check passed. */
|
|
59
|
+
export function openZip(data, wanted = () => true) {
|
|
60
|
+
const listed = directory(data);
|
|
61
|
+
const expected = new Map();
|
|
62
|
+
const seen = new Set();
|
|
63
|
+
let index = 0;
|
|
64
|
+
let total = 0;
|
|
65
|
+
let files;
|
|
66
|
+
try {
|
|
67
|
+
files = unzipSync(data, {
|
|
68
|
+
filter(file) {
|
|
69
|
+
const entry = listed[index++];
|
|
70
|
+
if (!entry || entry.name !== file.name)
|
|
71
|
+
throw new Denied("That file is not a valid Word file (its zip directory disagrees)");
|
|
72
|
+
if (index > MAX_ENTRIES)
|
|
73
|
+
throw new Denied(`That file has more than ${MAX_ENTRIES} parts, so it is not read`);
|
|
74
|
+
if (seen.has(file.name))
|
|
75
|
+
throw new Denied(`That file holds ${clip(file.name, 100)} twice, so it is not read`);
|
|
76
|
+
seen.add(file.name);
|
|
77
|
+
if (/(^|[/\\])\.\.([/\\]|$)/.test(file.name) || /^[/\\]/.test(file.name))
|
|
78
|
+
throw new Denied("That file has a part outside the document, so it is not read");
|
|
79
|
+
if (!wanted(file.name))
|
|
80
|
+
return false;
|
|
81
|
+
if (!Number.isSafeInteger(file.originalSize) || !Number.isSafeInteger(file.size))
|
|
82
|
+
throw new Denied("That file's zip directory is not readable");
|
|
83
|
+
if (file.compression !== 0 && file.compression !== 8)
|
|
84
|
+
throw new Denied("That file uses a compression Word does not, so it is not read");
|
|
85
|
+
if (file.compression === 0 && file.size !== file.originalSize)
|
|
86
|
+
throw new Denied("That file's zip directory is not readable");
|
|
87
|
+
total += file.originalSize;
|
|
88
|
+
if (file.originalSize > MAX_TOTAL_BYTES || total > MAX_TOTAL_BYTES)
|
|
89
|
+
throw new Denied(`That file unpacks to more than ${MAX_TOTAL_BYTES / 1024 / 1024} MB, so it is not read (a zip bomb, or simply too large)`);
|
|
90
|
+
if (file.originalSize > RATIO_FLOOR &&
|
|
91
|
+
file.originalSize > MAX_RATIO * Math.max(file.size, 1))
|
|
92
|
+
throw new Denied("That file is compressed too far to be a real document (a zip bomb)");
|
|
93
|
+
expected.set(file.name, { crc: entry.crc, size: file.originalSize });
|
|
94
|
+
return true;
|
|
95
|
+
},
|
|
96
|
+
});
|
|
97
|
+
}
|
|
98
|
+
catch (error) {
|
|
99
|
+
if (error instanceof Denied)
|
|
100
|
+
throw error;
|
|
101
|
+
throw new Denied("That file is not a valid Word file (its zip could not be read)");
|
|
102
|
+
}
|
|
103
|
+
const parts = new Map();
|
|
104
|
+
for (const [name, bytes] of Object.entries(files)) {
|
|
105
|
+
const want = expected.get(name);
|
|
106
|
+
if (bytes.length !== want.size)
|
|
107
|
+
throw new Denied(`That file's zip directory disagrees with ${clip(name, 100)}, so it is not read`);
|
|
108
|
+
if ((crc32(bytes) >>> 0) !== want.crc)
|
|
109
|
+
throw new Denied(`That file is damaged: ${clip(name, 100)} does not match its checksum`);
|
|
110
|
+
parts.set(name, bytes);
|
|
111
|
+
}
|
|
112
|
+
return parts;
|
|
113
|
+
}
|
|
114
|
+
/** A zip of `parts`, in the order given, each deflated (empty ones and folders stored). */
|
|
115
|
+
export function makeZip(parts) {
|
|
116
|
+
const input = {};
|
|
117
|
+
for (const [name, bytes] of parts)
|
|
118
|
+
input[name] = [bytes, { level: bytes.length ? 6 : 0 }];
|
|
119
|
+
return zipSync(input);
|
|
120
|
+
}
|
|
121
|
+
const stop = (level, message) => {
|
|
122
|
+
throw new Denied(`That file has XML that could not be read (${level}: ${clip(message.split("\n")[0], 150)})`);
|
|
123
|
+
};
|
|
124
|
+
/** One XML part, parsed without any DTD, with one root and a bounded depth. */
|
|
125
|
+
export function parseXml(bytes, name) {
|
|
126
|
+
if (bytes.length > MAX_XML_BYTES)
|
|
127
|
+
throw new Denied(`${clip(name, 100)} is larger than ${MAX_XML_BYTES / 1024 / 1024} MB, so it is not read`);
|
|
128
|
+
let text;
|
|
129
|
+
try {
|
|
130
|
+
text = new TextDecoder("utf-8", { fatal: true }).decode(bytes);
|
|
131
|
+
}
|
|
132
|
+
catch {
|
|
133
|
+
throw new Denied(`${clip(name, 100)} is not UTF-8 XML, so it is not read`);
|
|
134
|
+
}
|
|
135
|
+
if (/<!DOCTYPE|<!ENTITY/i.test(text))
|
|
136
|
+
throw new Denied(`${clip(name, 100)} declares a DOCTYPE or an entity, so it is not read`);
|
|
137
|
+
let doc;
|
|
138
|
+
try {
|
|
139
|
+
doc = new DOMParser({ locator: false, onError: stop }).parseFromString(text, "application/xml");
|
|
140
|
+
}
|
|
141
|
+
catch (error) {
|
|
142
|
+
if (error instanceof Denied)
|
|
143
|
+
throw error;
|
|
144
|
+
const cause = error.cause;
|
|
145
|
+
if (cause instanceof Denied)
|
|
146
|
+
throw cause;
|
|
147
|
+
throw new Denied(`${clip(name, 100)} is not well-formed XML, so it is not read`);
|
|
148
|
+
}
|
|
149
|
+
const roots = Array.from(doc.childNodes).filter((n) => n.nodeType === 1);
|
|
150
|
+
if (roots.length !== 1)
|
|
151
|
+
throw new Denied(`${clip(name, 100)} must have exactly one root element`);
|
|
152
|
+
// Iterative, so a deep document cannot exhaust the stack here.
|
|
153
|
+
const stack = [[roots[0], 1]];
|
|
154
|
+
while (stack.length) {
|
|
155
|
+
const [node, depth] = stack.pop();
|
|
156
|
+
if (depth > MAX_DEPTH)
|
|
157
|
+
throw new Denied(`${clip(name, 100)} is nested too deeply, so it is not read`);
|
|
158
|
+
for (let c = node.firstChild; c; c = c.nextSibling)
|
|
159
|
+
if (c.nodeType === 1)
|
|
160
|
+
stack.push([c, depth + 1]);
|
|
161
|
+
}
|
|
162
|
+
return doc;
|
|
163
|
+
}
|
|
164
|
+
export const serializeXml = (doc) => new TextEncoder().encode(new XMLSerializer().serializeToString(doc));
|
|
165
|
+
export const W = "http://schemas.openxmlformats.org/wordprocessingml/2006/main";
|
|
166
|
+
export const isW = (n, local) => Boolean(n && n.nodeType === 1 && n.namespaceURI === W && (!local || n.localName === local));
|
|
167
|
+
export const children = (n, local) => {
|
|
168
|
+
const out = [];
|
|
169
|
+
for (let c = n.firstChild; c; c = c.nextSibling)
|
|
170
|
+
if (isW(c, local))
|
|
171
|
+
out.push(c);
|
|
172
|
+
return out;
|
|
173
|
+
};
|
|
174
|
+
export const child = (n, local) => children(n, local)[0] ?? null;
|
|
175
|
+
/** w:val of an element, or null. */
|
|
176
|
+
export const val = (e) => e ? (e.getAttributeNS(W, "val") ?? e.getAttribute("w:val")) : null;
|
|
177
|
+
/** Whether an on/off property is on: present and not false, 0 or off. */
|
|
178
|
+
export const on = (e) => Boolean(e) && !["false", "0", "off"].includes((val(e) ?? "true").toLowerCase());
|
|
179
|
+
//# sourceMappingURL=ooxml.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ooxml.js","sourceRoot":"","sources":["../../../connectors/sharepoint-files/ooxml.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
export declare const MAX_ANSWER_CHARS = 300000;
|
|
2
|
+
export declare const ITEM_BUDGET: number;
|
|
3
|
+
export type Piece = Record<string, unknown>;
|
|
4
|
+
export type Item = {
|
|
5
|
+
section: string;
|
|
6
|
+
obj: Piece;
|
|
7
|
+
};
|
|
8
|
+
/** An item as pieces that each fit `max`, in order; iterative, so no input exhausts the stack. */
|
|
9
|
+
export declare function halve(obj: Piece, max: number): Piece[];
|
|
10
|
+
export declare function pieces(section: string, objs: Piece[], max?: number): Item[];
|
|
11
|
+
/** The items from `start` that fit in one answer, by section, and where the next one starts. */
|
|
12
|
+
export declare function page(items: Item[], start: number, sections: string[], max?: number): {
|
|
13
|
+
sections: Record<string, Piece[]>;
|
|
14
|
+
next: number | null;
|
|
15
|
+
};
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
import { Denied } from "../../packages/connector-kit/src/common.js";
|
|
2
|
+
// Answers of at most 300,000 characters: a document is a list of items (paragraphs, tables,
|
|
3
|
+
// fields...), an item too large for one answer is split into marked parts, and an answer holds
|
|
4
|
+
// the items from a cursor that fit.
|
|
5
|
+
export const MAX_ANSWER_CHARS = 300_000;
|
|
6
|
+
// Room in each answer for the file's details, counts, `next` and the note.
|
|
7
|
+
export const ITEM_BUDGET = MAX_ANSWER_CHARS - 5_000;
|
|
8
|
+
const MAX_PIECES = 100_000;
|
|
9
|
+
const length = (o) => JSON.stringify(o).length;
|
|
10
|
+
// One item in two, on its largest property that can still be split: rows, then a single row's
|
|
11
|
+
// cells, then a text. Null when nothing can be split further.
|
|
12
|
+
function split(obj) {
|
|
13
|
+
const keys = Object.keys(obj)
|
|
14
|
+
.filter((k) => typeof obj[k] === "string" || (k === "rows" && Array.isArray(obj[k])))
|
|
15
|
+
.sort((a, b) => length(obj[b]) - length(obj[a]));
|
|
16
|
+
for (const key of keys) {
|
|
17
|
+
if (key === "rows") {
|
|
18
|
+
const rows = obj.rows;
|
|
19
|
+
const first = obj.first_row ?? 0;
|
|
20
|
+
if (rows.length > 1) {
|
|
21
|
+
const mid = Math.ceil(rows.length / 2);
|
|
22
|
+
return [
|
|
23
|
+
{ ...obj, rows: rows.slice(0, mid), first_row: first },
|
|
24
|
+
{ ...obj, rows: rows.slice(mid), first_row: first + mid },
|
|
25
|
+
];
|
|
26
|
+
}
|
|
27
|
+
const cells = rows[0] ?? [];
|
|
28
|
+
if (cells.some((c) => c.length > 1)) {
|
|
29
|
+
const cut = (c) => Math.ceil(c.length / 2);
|
|
30
|
+
return [
|
|
31
|
+
{ ...obj, rows: [cells.map((c) => c.slice(0, cut(c)))], first_row: first },
|
|
32
|
+
{ ...obj, rows: [cells.map((c) => c.slice(cut(c)))], first_row: first },
|
|
33
|
+
];
|
|
34
|
+
}
|
|
35
|
+
continue;
|
|
36
|
+
}
|
|
37
|
+
const text = obj[key];
|
|
38
|
+
if (text.length < 2)
|
|
39
|
+
continue;
|
|
40
|
+
const mid = Math.ceil(text.length / 2);
|
|
41
|
+
return [
|
|
42
|
+
{ ...obj, [key]: text.slice(0, mid) },
|
|
43
|
+
{ ...obj, [key]: text.slice(mid) },
|
|
44
|
+
];
|
|
45
|
+
}
|
|
46
|
+
return null;
|
|
47
|
+
}
|
|
48
|
+
/** An item as pieces that each fit `max`, in order; iterative, so no input exhausts the stack. */
|
|
49
|
+
export function halve(obj, max) {
|
|
50
|
+
const out = [];
|
|
51
|
+
const stack = [obj];
|
|
52
|
+
while (stack.length) {
|
|
53
|
+
if (out.length + stack.length > MAX_PIECES)
|
|
54
|
+
throw new Denied("That document is too large to read in parts");
|
|
55
|
+
const next = stack.pop();
|
|
56
|
+
const halves = length(next) > max ? split(next) : null;
|
|
57
|
+
if (halves)
|
|
58
|
+
stack.push(halves[1], halves[0]);
|
|
59
|
+
else
|
|
60
|
+
out.push(next);
|
|
61
|
+
}
|
|
62
|
+
return out;
|
|
63
|
+
}
|
|
64
|
+
export function pieces(section, objs, max = ITEM_BUDGET) {
|
|
65
|
+
return objs.flatMap((obj) => {
|
|
66
|
+
const parts = halve(obj, max);
|
|
67
|
+
return parts.map((p, k) => ({
|
|
68
|
+
section,
|
|
69
|
+
obj: parts.length > 1 ? { ...p, part: k + 1, parts: parts.length } : p,
|
|
70
|
+
}));
|
|
71
|
+
});
|
|
72
|
+
}
|
|
73
|
+
/** The items from `start` that fit in one answer, by section, and where the next one starts. */
|
|
74
|
+
export function page(items, start, sections, max = ITEM_BUDGET) {
|
|
75
|
+
const out = Object.fromEntries(sections.map((s) => [s, []]));
|
|
76
|
+
let used = 0;
|
|
77
|
+
let i = start;
|
|
78
|
+
for (; i < items.length; i++) {
|
|
79
|
+
const size = length(items[i].obj) + 1;
|
|
80
|
+
if (i > start && used + size > max)
|
|
81
|
+
break;
|
|
82
|
+
used += size;
|
|
83
|
+
out[items[i].section].push(items[i].obj);
|
|
84
|
+
}
|
|
85
|
+
return { sections: out, next: i < items.length ? i : null };
|
|
86
|
+
}
|
|
87
|
+
//# sourceMappingURL=paging.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"paging.js","sourceRoot":"","sources":["../../../connectors/sharepoint-files/paging.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
// One parse in a process of its own, started by sandbox.ts with child_process.fork. The parser
|
|
2
|
+
// (docx-worker or pdf-worker) runs in a worker_thread here under resourceLimits, while this
|
|
3
|
+
// thread, free the whole time, polls this process's own resident memory: ArrayBuffers (a PDF
|
|
4
|
+
// stream pdf.js inflates) count there though the worker's heap limit misses them, and nothing
|
|
5
|
+
// another request allocates in the server does. Past the cap the process exits at once with
|
|
6
|
+
// code 3, which takes the parser and all its memory with it. Plain JavaScript, so it runs the
|
|
7
|
+
// same from the sources and from dist/. It never outlives the server: it exits when the IPC
|
|
8
|
+
// channel closes (the server went away) and on a clock of its own, a little past the server's.
|
|
9
|
+
import { serialize } from "node:v8";
|
|
10
|
+
import { Worker } from "node:worker_threads";
|
|
11
|
+
|
|
12
|
+
const MEMORY = 3;
|
|
13
|
+
const FAILED = 4;
|
|
14
|
+
const GONE = 5;
|
|
15
|
+
const CLOCK = 6;
|
|
16
|
+
const WATCH_MS = 5;
|
|
17
|
+
// The largest answer relayed to the server.
|
|
18
|
+
const MAX_ANSWER_BYTES = 80 * 1024 * 1024;
|
|
19
|
+
|
|
20
|
+
process.on("disconnect", () => process.exit(GONE));
|
|
21
|
+
// No job within this long: nothing is coming.
|
|
22
|
+
const idle = setTimeout(() => process.exit(CLOCK), 10_000);
|
|
23
|
+
|
|
24
|
+
process.once("message", ({ file, typescript, data, maxOldGenerationSizeMb, memoryCapMb, timeoutMs }) => {
|
|
25
|
+
clearTimeout(idle);
|
|
26
|
+
setTimeout(() => process.exit(CLOCK), timeoutMs + 2_000).unref?.();
|
|
27
|
+
const base = process.memoryUsage.rss();
|
|
28
|
+
const watch = setInterval(() => {
|
|
29
|
+
if (process.memoryUsage.rss() - base > memoryCapMb * 1024 * 1024) process.exit(MEMORY);
|
|
30
|
+
}, WATCH_MS);
|
|
31
|
+
const worker = new Worker(new URL(file), {
|
|
32
|
+
workerData: data,
|
|
33
|
+
resourceLimits: { maxOldGenerationSizeMb, maxYoungGenerationSizeMb: 64, stackSizeMb: 4 },
|
|
34
|
+
env: {},
|
|
35
|
+
execArgv: typescript ? ["--import", "tsx"] : [],
|
|
36
|
+
stdout: true,
|
|
37
|
+
stderr: true,
|
|
38
|
+
});
|
|
39
|
+
worker.stdout.resume();
|
|
40
|
+
worker.stderr.resume();
|
|
41
|
+
const finish = (code) => {
|
|
42
|
+
clearInterval(watch);
|
|
43
|
+
process.exit(code);
|
|
44
|
+
};
|
|
45
|
+
let answered = false;
|
|
46
|
+
worker.once("message", (m) => {
|
|
47
|
+
answered = true;
|
|
48
|
+
let size;
|
|
49
|
+
try {
|
|
50
|
+
size = serialize(m).byteLength;
|
|
51
|
+
} catch {
|
|
52
|
+
return finish(FAILED);
|
|
53
|
+
}
|
|
54
|
+
if (size > MAX_ANSWER_BYTES) return finish(FAILED);
|
|
55
|
+
try {
|
|
56
|
+
process.send(m, (error) => finish(error ? FAILED : 0));
|
|
57
|
+
} catch {
|
|
58
|
+
finish(FAILED);
|
|
59
|
+
}
|
|
60
|
+
});
|
|
61
|
+
worker.once("error", (error) => {
|
|
62
|
+
if (answered) return;
|
|
63
|
+
answered = true;
|
|
64
|
+
if (error?.code === "ERR_WORKER_OUT_OF_MEMORY") return finish(MEMORY);
|
|
65
|
+
// An uncaught error in the parser: its class name alone goes to the server's log (a message
|
|
66
|
+
// can carry document text).
|
|
67
|
+
const name = String(error?.name ?? "");
|
|
68
|
+
const reason = /^[A-Za-z][A-Za-z0-9_]{0,63}$/.test(name) ? name : "Error";
|
|
69
|
+
try {
|
|
70
|
+
process.send({ ok: false, denied: "", reason }, () => finish(FAILED));
|
|
71
|
+
} catch {
|
|
72
|
+
finish(FAILED);
|
|
73
|
+
}
|
|
74
|
+
});
|
|
75
|
+
worker.once("exit", () => {
|
|
76
|
+
if (!answered) finish(FAILED);
|
|
77
|
+
});
|
|
78
|
+
});
|
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
// Reads a PDF's text with pdf.js, inside a worker_thread started through sandbox.ts with memory
|
|
2
|
+
// limits, an empty environment, a wall clock and its memory watched. Answers {ok, value} or
|
|
3
|
+
// {ok: false, denied}. Plain JavaScript, so it runs the same from the sources
|
|
4
|
+
// (tests) and from dist/ (the build copies it). Settings from the library vetting (2026-11-01).
|
|
5
|
+
import module from "node:module";
|
|
6
|
+
import { fileURLToPath } from "node:url";
|
|
7
|
+
import { parentPort, workerData } from "node:worker_threads";
|
|
8
|
+
|
|
9
|
+
// Text extraction never draws, so the optional native canvas is never loaded, even if a
|
|
10
|
+
// machine has it installed.
|
|
11
|
+
const canvasBlocked = typeof module.registerHooks === "function";
|
|
12
|
+
if (canvasBlocked)
|
|
13
|
+
module.registerHooks({
|
|
14
|
+
resolve(specifier, context, next) {
|
|
15
|
+
if (specifier === "canvas" || specifier.startsWith("@napi-rs/canvas"))
|
|
16
|
+
throw new Error("canvas is not available to the PDF reader");
|
|
17
|
+
return next(specifier, context);
|
|
18
|
+
},
|
|
19
|
+
});
|
|
20
|
+
// No network: pdf.js is given the bytes and local font and CMap folders.
|
|
21
|
+
globalThis.fetch = async () => {
|
|
22
|
+
throw new Error("no network in the PDF reader");
|
|
23
|
+
};
|
|
24
|
+
// pdf.js logs warnings about the documents it reads; nothing reads them here.
|
|
25
|
+
console.log = () => {};
|
|
26
|
+
console.warn = () => {};
|
|
27
|
+
|
|
28
|
+
const { data, maxPages, maxChars, noAssets } = workerData;
|
|
29
|
+
|
|
30
|
+
let needsPassword = false;
|
|
31
|
+
const ENCRYPTED = "That PDF is encrypted or has a password, so it is not read";
|
|
32
|
+
// The legacy build: the modern one calls Promise.try, which Node 22 (the image's node:22-alpine)
|
|
33
|
+
// does not have, so every PDF failed there (staging, 2026-11-01) while tests on Node 26 passed.
|
|
34
|
+
// The legacy bundle has no eval path either (no isEvalSupported, `new Function` or `eval(`,
|
|
35
|
+
// checked 2026-11-01; its one `Function('return this')()` is core-js's globalThis fallback, never
|
|
36
|
+
// reached on Node). Its fonts, CMaps and wasm are the package's own folders, two levels up.
|
|
37
|
+
const BUILD = "pdfjs-dist/legacy/build/pdf.mjs";
|
|
38
|
+
const dir = (rel) => fileURLToPath(new URL(rel, import.meta.resolve(BUILD)));
|
|
39
|
+
|
|
40
|
+
try {
|
|
41
|
+
const pdfjs = await import(BUILD);
|
|
42
|
+
// The parser runs in this thread (pdf.js's "fake worker"), under this worker's limits.
|
|
43
|
+
globalThis.pdfjsWorker = await import("pdfjs-dist/legacy/build/pdf.worker.mjs");
|
|
44
|
+
const task = pdfjs.getDocument({
|
|
45
|
+
data: new Uint8Array(data),
|
|
46
|
+
disableFontFace: true,
|
|
47
|
+
useSystemFonts: false,
|
|
48
|
+
useWorkerFetch: false,
|
|
49
|
+
stopAtErrors: true,
|
|
50
|
+
enableXfa: false,
|
|
51
|
+
isOffscreenCanvasSupported: false,
|
|
52
|
+
disableAutoFetch: true,
|
|
53
|
+
disableStream: true,
|
|
54
|
+
maxImageSize: 1_000_000,
|
|
55
|
+
verbosity: 0,
|
|
56
|
+
...(noAssets
|
|
57
|
+
? {}
|
|
58
|
+
: {
|
|
59
|
+
standardFontDataUrl: dir("../../standard_fonts/"),
|
|
60
|
+
cMapUrl: dir("../../cmaps/"),
|
|
61
|
+
cMapPacked: true,
|
|
62
|
+
wasmUrl: dir("../../wasm/"),
|
|
63
|
+
}),
|
|
64
|
+
});
|
|
65
|
+
// A password is never tried.
|
|
66
|
+
task.onPassword = () => {
|
|
67
|
+
needsPassword = true;
|
|
68
|
+
void task.destroy();
|
|
69
|
+
};
|
|
70
|
+
const pdf = await task.promise;
|
|
71
|
+
const { info } = await pdf.getMetadata();
|
|
72
|
+
if (info?.EncryptFilterName) {
|
|
73
|
+
parentPort.postMessage({ ok: false, denied: ENCRYPTED });
|
|
74
|
+
} else {
|
|
75
|
+
const pages = [];
|
|
76
|
+
let chars = 0;
|
|
77
|
+
let cut = false;
|
|
78
|
+
const last = Math.min(pdf.numPages, maxPages);
|
|
79
|
+
for (let n = 1; n <= last; n++) {
|
|
80
|
+
const page = await pdf.getPage(n);
|
|
81
|
+
const content = await page.getTextContent();
|
|
82
|
+
let text = "";
|
|
83
|
+
for (const item of content.items) if ("str" in item) text += item.str + (item.hasEOL ? "\n" : "");
|
|
84
|
+
page.cleanup();
|
|
85
|
+
if (chars + text.length > maxChars) {
|
|
86
|
+
text = text.slice(0, Math.max(0, maxChars - chars));
|
|
87
|
+
cut = true;
|
|
88
|
+
}
|
|
89
|
+
chars += text.length;
|
|
90
|
+
pages.push({ page: n, text });
|
|
91
|
+
if (cut) break;
|
|
92
|
+
}
|
|
93
|
+
parentPort.postMessage({
|
|
94
|
+
ok: true,
|
|
95
|
+
value: { pages, pageCount: pdf.numPages, cut, canvasBlocked },
|
|
96
|
+
});
|
|
97
|
+
}
|
|
98
|
+
await pdf.destroy();
|
|
99
|
+
} catch (error) {
|
|
100
|
+
const name = error?.name ?? "";
|
|
101
|
+
parentPort.postMessage({
|
|
102
|
+
ok: false,
|
|
103
|
+
denied: needsPassword || name === "PasswordException" ? ENCRYPTED : "That PDF could not be read",
|
|
104
|
+
// For the server's log only, never the caller: the error's class name alone. pdf.js puts
|
|
105
|
+
// document strings (filter, font and CMap names) into its messages, so the message stays out.
|
|
106
|
+
reason: /^[A-Za-z][A-Za-z0-9_]{0,63}$/.test(name) ? name : "Error",
|
|
107
|
+
});
|
|
108
|
+
}
|