@prisma/studio-core 0.0.0-dev.202511180420 → 0.0.0-dev.202511181242

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 (38) hide show
  1. package/dist/{chunk-NQGSK3IM.js → chunk-SXTJF4PD.js} +1 -1
  2. package/dist/data/accelerate/index.d.cts +1 -1
  3. package/dist/data/accelerate/index.d.ts +1 -1
  4. package/dist/data/bff/index.cjs +2 -2
  5. package/dist/data/bff/index.d.cts +15 -3
  6. package/dist/data/bff/index.d.ts +15 -3
  7. package/dist/data/bff/index.js +2 -2
  8. package/dist/data/index.d.cts +1 -1
  9. package/dist/data/index.d.ts +1 -1
  10. package/dist/data/mysql-core/index.d.cts +1 -1
  11. package/dist/data/mysql-core/index.d.ts +1 -1
  12. package/dist/data/mysql2/index.cjs +2 -2
  13. package/dist/data/mysql2/index.d.cts +2 -2
  14. package/dist/data/mysql2/index.d.ts +2 -2
  15. package/dist/data/mysql2/index.js +2 -2
  16. package/dist/data/node-sqlite/index.d.cts +1 -1
  17. package/dist/data/node-sqlite/index.d.ts +1 -1
  18. package/dist/data/pglite/index.cjs +1 -1
  19. package/dist/data/pglite/index.d.cts +1 -1
  20. package/dist/data/pglite/index.d.ts +1 -1
  21. package/dist/data/pglite/index.js +1 -1
  22. package/dist/data/postgres-core/index.d.cts +1 -1
  23. package/dist/data/postgres-core/index.d.ts +1 -1
  24. package/dist/data/postgresjs/index.cjs +1 -1
  25. package/dist/data/postgresjs/index.d.cts +1 -1
  26. package/dist/data/postgresjs/index.d.ts +1 -1
  27. package/dist/data/postgresjs/index.js +1 -1
  28. package/dist/data/ppg/index.d.cts +1 -1
  29. package/dist/data/ppg/index.d.ts +1 -1
  30. package/dist/data/sqlite-core/index.d.cts +1 -1
  31. package/dist/data/sqlite-core/index.d.ts +1 -1
  32. package/dist/{index-CV9DQF9a.d.cts → index-CW6rqTos.d.cts} +2 -2
  33. package/dist/{index-CV9DQF9a.d.ts → index-CW6rqTos.d.ts} +2 -2
  34. package/dist/metafile-cjs.json +1 -1
  35. package/dist/metafile-esm.json +1 -1
  36. package/dist/ui/index.d.cts +1 -1
  37. package/dist/ui/index.d.ts +1 -1
  38. package/package.json +1 -1
@@ -1,5 +1,5 @@
1
1
  import { PGlite } from '@electric-sql/pglite';
2
- import { Q as Query, E as Executor, A as Adapter } from '../../index-CV9DQF9a.cjs';
2
+ import { Q as Query, c as Executor, A as Adapter } from '../../index-CW6rqTos.cjs';
3
3
  import 'kysely';
4
4
 
5
5
  interface PGLiteExecutorOptions {
@@ -1,5 +1,5 @@
1
1
  import { PGlite } from '@electric-sql/pglite';
2
- import { Q as Query, E as Executor, A as Adapter } from '../../index-CV9DQF9a.js';
2
+ import { Q as Query, c as Executor, A as Adapter } from '../../index-CW6rqTos.js';
3
3
  import 'kysely';
4
4
 
5
5
  interface PGLiteExecutorOptions {
@@ -6,5 +6,5 @@ function require(mod) {
6
6
  if (mod === 'react-dom') return ___react_dom___;
7
7
  throw new Error(`Unknown module ${mod}`);
8
8
  }
9
- import{a as y}from"../../chunk-NQGSK3IM.js";import{j as m}from"../../chunk-RYYSZZYL.js";import"../../chunk-M7E5UEO3.js";import"../../chunk-24UZSKGU.js";import"../../chunk-A6CVKSUD.js";import{e as d}from"../../chunk-GDQBQ7MK.js";d();function G(r,n){let{addDelay:i=0,logging:a=!1}=n??{};return{execute:async(t,P)=>{let{abortSignal:s}=P||{},c,f=new Promise((e,o)=>c=o);function u(){c(new y)}s?.addEventListener("abort",u);let l=typeof i=="function"?i(t):i,p=()=>r.query(t.sql,t.parameters,{rowMode:"object"}),g=l>0?()=>new Promise(e=>setTimeout(e,l)).then(()=>p()):p;try{let e=typeof a=="function"?a(t):a,o;e&&console.log("PGLiteExecutor: Executing query:",o=JSON.stringify(t,null,2));let x=Date.now(),L=await Promise.race([g(),f]),b=Date.now()-x;return e&&console.log("PGLiteExecutor: Query executed in",b,"ms:",o),[null,L.rows]}catch(e){return[e]}finally{s?.removeEventListener("abort",u)}}}}function A(r,n){return m({executor:G(r,n)})}export{A as createPGLiteAdapter,G as createPGLiteExecutor};
9
+ import{a as y}from"../../chunk-SXTJF4PD.js";import{j as m}from"../../chunk-RYYSZZYL.js";import"../../chunk-M7E5UEO3.js";import"../../chunk-24UZSKGU.js";import"../../chunk-A6CVKSUD.js";import{e as d}from"../../chunk-GDQBQ7MK.js";d();function G(r,n){let{addDelay:i=0,logging:a=!1}=n??{};return{execute:async(t,P)=>{let{abortSignal:s}=P||{},c,f=new Promise((e,o)=>c=o);function u(){c(new y)}s?.addEventListener("abort",u);let l=typeof i=="function"?i(t):i,p=()=>r.query(t.sql,t.parameters,{rowMode:"object"}),g=l>0?()=>new Promise(e=>setTimeout(e,l)).then(()=>p()):p;try{let e=typeof a=="function"?a(t):a,o;e&&console.log("PGLiteExecutor: Executing query:",o=JSON.stringify(t,null,2));let x=Date.now(),L=await Promise.race([g(),f]),b=Date.now()-x;return e&&console.log("PGLiteExecutor: Query executed in",b,"ms:",o),[null,L.rows]}catch(e){return[e]}finally{s?.removeEventListener("abort",u)}}}}function A(r,n){return m({executor:G(r,n)})}export{A as createPGLiteAdapter,G as createPGLiteExecutor};
10
10
  //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vZGF0YS9wZ2xpdGUvaW5kZXgudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbImltcG9ydCB0eXBlIHsgUEdsaXRlIH0gZnJvbSBcIkBlbGVjdHJpYy1zcWwvcGdsaXRlXCI7XG5cbmltcG9ydCB0eXBlIHsgQWRhcHRlciB9IGZyb20gXCIuLi9hZGFwdGVyXCI7XG5pbXBvcnQgeyBBYm9ydEVycm9yLCB0eXBlIEV4ZWN1dG9yIH0gZnJvbSBcIi4uL2V4ZWN1dG9yXCI7XG5pbXBvcnQgeyBjcmVhdGVQb3N0Z3Jlc0FkYXB0ZXIgfSBmcm9tIFwiLi4vcG9zdGdyZXMtY29yZVwiO1xuaW1wb3J0IHsgUXVlcnkgfSBmcm9tIFwiLi4vcXVlcnlcIjtcblxuZXhwb3J0IGludGVyZmFjZSBQR0xpdGVFeGVjdXRvck9wdGlvbnMge1xuICAvKipcbiAgICogRGVsYXkgaW4gbWlsbGlzZWNvbmRzIHRvIGFkZCBiZWZvcmUgZXhlY3V0aW5nIHRoZSBxdWVyeS5cbiAgICogVGhpcyBjYW4gYmUgYSBzdGF0aWMgbnVtYmVyIG9yIGEgZnVuY3Rpb24gdGhhdCB0YWtlcyB0aGUgcXVlcnkgYXMgYW4gYXJndW1lbnQgYW5kIHJldHVybnMgYSBudW1iZXIuXG4gICAqXG4gICAqIFRoaXMgaXMgdXNlZnVsIGZvciBzaW11bGF0aW5nIG5ldHdvcmsgbGF0ZW5jeSBvciBmb3IgZGVidWdnaW5nIHB1cnBvc2VzLlxuICAgKi9cbiAgYWRkRGVsYXk/OiBudW1iZXIgfCAoKHF1ZXJ5OiBRdWVyeTx1bmtub3duPikgPT4gbnVtYmVyKTtcblxuICAvKipcbiAgICogV2hldGhlciB0byBsb2cgdGhlIHF1ZXJ5IGFuZCBpdHMgcGFyYW1ldGVycy5cbiAgICpcbiAgICogRGVmYXVsdHMgdG8gYGZhbHNlYC5cbiAgICovXG4gIGxvZ2dpbmc/OiBib29sZWFuIHwgKChxdWVyeTogUXVlcnk8dW5rbm93bj4pID0+IGJvb2xlYW4pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlUEdMaXRlRXhlY3V0b3IocGdsaXRlOiBQR2xpdGUsIG9wdGlvbnM/OiBQR0xpdGVFeGVjdXRvck9wdGlvbnMpOiBFeGVjdXRvciB7XG4gIGNvbnN0IHsgYWRkRGVsYXkgPSAwLCBsb2dnaW5nID0gZmFsc2UgfSA9IG9wdGlvbnMgPz8ge307XG5cbiAgcmV0dXJuIHtcbiAgICBleGVjdXRlOiBhc3luYyAocXVlcnksIG9wdGlvbnMpID0+IHtcbiAgICAgIGNvbnN0IHsgYWJvcnRTaWduYWwgfSA9IG9wdGlvbnMgfHwge307XG5cbiAgICAgIGxldCBhYm9ydDogKHJlYXNvbj86IHVua25vd24pID0+IHZvaWQ7XG4gICAgICBjb25zdCBhYm9ydGlvblByb21pc2UgPSBuZXcgUHJvbWlzZTxuZXZlcj4oKF8sIHJlamVjdCkgPT4gKGFib3J0ID0gcmVqZWN0KSk7XG5cbiAgICAgIGZ1bmN0aW9uIGFib3J0TGlzdGVuZXIoKTogdm9pZCB7XG4gICAgICAgIGFib3J0KG5ldyBBYm9ydEVycm9yKCkpO1xuICAgICAgfVxuXG4gICAgICBhYm9ydFNpZ25hbD8uYWRkRXZlbnRMaXN0ZW5lcihcImFib3J0XCIsIGFib3J0TGlzdGVuZXIpO1xuXG4gICAgICBjb25zdCBhZGRlZERlbGF5ID0gdHlwZW9mIGFkZERlbGF5ID09PSBcImZ1bmN0aW9uXCIgPyBhZGREZWxheShxdWVyeSkgOiBhZGREZWxheTtcblxuICAgICAgY29uc3QgcXVlcnlQR0xpdGUgPSAoKSA9PiBwZ2xpdGUucXVlcnkocXVlcnkuc3FsLCBxdWVyeS5wYXJhbWV0ZXJzIGFzIG5ldmVyW10sIHsgcm93TW9kZTogXCJvYmplY3RcIiB9KTtcblxuICAgICAgY29uc3QgcXVlcnlQR0xpdGVQb3NzaWJseURlbGF5ZWQgPVxuICAgICAgICBhZGRlZERlbGF5ID4gMFxuICAgICAgICAgID8gKCkgPT4gbmV3IFByb21pc2UoKHJlc29sdmUpID0+IHNldFRpbWVvdXQocmVzb2x2ZSwgYWRkZWREZWxheSkpLnRoZW4oKCkgPT4gcXVlcnlQR0xpdGUoKSlcbiAgICAgICAgICA6IHF1ZXJ5UEdMaXRlO1xuXG4gICAgICB0cnkge1xuICAgICAgICBjb25zdCBzaG91bGRMb2cgPSB0eXBlb2YgbG9nZ2luZyA9PT0gXCJmdW5jdGlvblwiID8gbG9nZ2luZyhxdWVyeSkgOiBsb2dnaW5nO1xuXG4gICAgICAgIGxldCBsb2dnYWJsZVF1ZXJ5OiBzdHJpbmc7XG4gICAgICAgIGlmIChzaG91bGRMb2cpIHtcbiAgICAgICAgICBjb25zb2xlLmxvZyhcIlBHTGl0ZUV4ZWN1dG9yOiBFeGVjdXRpbmcgcXVlcnk6XCIsIChsb2dnYWJsZVF1ZXJ5ID0gSlNPTi5zdHJpbmdpZnkocXVlcnksIG51bGwsIDIpKSk7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBub3cgPSBEYXRlLm5vdygpO1xuXG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IFByb21pc2UucmFjZShbcXVlcnlQR0xpdGVQb3NzaWJseURlbGF5ZWQoKSwgYWJvcnRpb25Qcm9taXNlXSk7XG5cbiAgICAgICAgY29uc3QgZHVyYXRpb24gPSBEYXRlLm5vdygpIC0gbm93O1xuXG4gICAgICAgIGlmIChzaG91bGRMb2cpIHtcbiAgICAgICAgICBjb25zb2xlLmxvZyhcIlBHTGl0ZUV4ZWN1dG9yOiBRdWVyeSBleGVjdXRlZCBpblwiLCBkdXJhdGlvbiwgXCJtczpcIiwgbG9nZ2FibGVRdWVyeSEpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIFtudWxsLCByZXN1bHQucm93cyBhcyBuZXZlcl07XG4gICAgICB9IGNhdGNoIChlcnJvcjogdW5rbm93bikge1xuICAgICAgICByZXR1cm4gW2Vycm9yIGFzIEVycm9yXTtcbiAgICAgIH0gZmluYWxseSB7XG4gICAgICAgIGFib3J0U2lnbmFsPy5yZW1vdmVFdmVudExpc3RlbmVyKFwiYWJvcnRcIiwgYWJvcnRMaXN0ZW5lcik7XG4gICAgICB9XG4gICAgfSxcbiAgfTtcbn1cblxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1lbXB0eS1vYmplY3QtdHlwZVxuZXhwb3J0IGludGVyZmFjZSBQR0xpdGVBZGFwdGVyT3B0aW9ucyBleHRlbmRzIFBHTGl0ZUV4ZWN1dG9yT3B0aW9ucyB7fVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlUEdMaXRlQWRhcHRlcihwZ2xpdGU6IFBHbGl0ZSwgb3B0aW9ucz86IFBHTGl0ZUFkYXB0ZXJPcHRpb25zKTogQWRhcHRlciB7XG4gIHJldHVybiBjcmVhdGVQb3N0Z3Jlc0FkYXB0ZXIoe1xuICAgIGV4ZWN1dG9yOiBjcmVhdGVQR0xpdGVFeGVjdXRvcihwZ2xpdGUsIG9wdGlvbnMpLFxuICB9KTtcbn1cbiJdLAogICJtYXBwaW5ncyI6ICI7Ozs7Ozs7O29PQUFBQSxJQXdCTyxTQUFTQyxFQUFxQkMsRUFBZ0JDLEVBQTJDLENBQzlGLEdBQU0sQ0FBRSxTQUFBQyxFQUFXLEVBQUcsUUFBQUMsRUFBVSxFQUFNLEVBQUlGLEdBQVcsQ0FBQyxFQUV0RCxNQUFPLENBQ0wsUUFBUyxNQUFPRyxFQUFPSCxJQUFZLENBQ2pDLEdBQU0sQ0FBRSxZQUFBSSxDQUFZLEVBQUlKLEdBQVcsQ0FBQyxFQUVoQ0ssRUFDRUMsRUFBa0IsSUFBSSxRQUFlLENBQUNDLEVBQUdDLElBQVlILEVBQVFHLENBQU8sRUFFMUUsU0FBU0MsR0FBc0IsQ0FDN0JKLEVBQU0sSUFBSUssQ0FBWSxDQUN4QixDQUVBTixHQUFhLGlCQUFpQixRQUFTSyxDQUFhLEVBRXBELElBQU1FLEVBQWEsT0FBT1YsR0FBYSxXQUFhQSxFQUFTRSxDQUFLLEVBQUlGLEVBRWhFVyxFQUFjLElBQU1iLEVBQU8sTUFBTUksRUFBTSxJQUFLQSxFQUFNLFdBQXVCLENBQUUsUUFBUyxRQUFTLENBQUMsRUFFOUZVLEVBQ0pGLEVBQWEsRUFDVCxJQUFNLElBQUksUUFBU0csR0FBWSxXQUFXQSxFQUFTSCxDQUFVLENBQUMsRUFBRSxLQUFLLElBQU1DLEVBQVksQ0FBQyxFQUN4RkEsRUFFTixHQUFJLENBQ0YsSUFBTUcsRUFBWSxPQUFPYixHQUFZLFdBQWFBLEVBQVFDLENBQUssRUFBSUQsRUFFL0RjLEVBQ0FELEdBQ0YsUUFBUSxJQUFJLG1DQUFxQ0MsRUFBZ0IsS0FBSyxVQUFVYixFQUFPLEtBQU0sQ0FBQyxDQUFFLEVBR2xHLElBQU1jLEVBQU0sS0FBSyxJQUFJLEVBRWZDLEVBQVMsTUFBTSxRQUFRLEtBQUssQ0FBQ0wsRUFBMkIsRUFBR1AsQ0FBZSxDQUFDLEVBRTNFYSxFQUFXLEtBQUssSUFBSSxFQUFJRixFQUU5QixPQUFJRixHQUNGLFFBQVEsSUFBSSxvQ0FBcUNJLEVBQVUsTUFBT0gsQ0FBYyxFQUczRSxDQUFDLEtBQU1FLEVBQU8sSUFBYSxDQUNwQyxPQUFTRSxFQUFnQixDQUN2QixNQUFPLENBQUNBLENBQWMsQ0FDeEIsUUFBRSxDQUNBaEIsR0FBYSxvQkFBb0IsUUFBU0ssQ0FBYSxDQUN6RCxDQUNGLENBQ0YsQ0FDRixDQUtPLFNBQVNZLEVBQW9CdEIsRUFBZ0JDLEVBQXlDLENBQzNGLE9BQU9zQixFQUFzQixDQUMzQixTQUFVeEIsRUFBcUJDLEVBQVFDLENBQU8sQ0FDaEQsQ0FBQyxDQUNIIiwKICAibmFtZXMiOiBbImluaXRfZGVmaW5lX0FDQ0VMRVJBVEVfU0NIRU1BX0JZX1BST1ZJREVSIiwgImNyZWF0ZVBHTGl0ZUV4ZWN1dG9yIiwgInBnbGl0ZSIsICJvcHRpb25zIiwgImFkZERlbGF5IiwgImxvZ2dpbmciLCAicXVlcnkiLCAiYWJvcnRTaWduYWwiLCAiYWJvcnQiLCAiYWJvcnRpb25Qcm9taXNlIiwgIl8iLCAicmVqZWN0IiwgImFib3J0TGlzdGVuZXIiLCAiQWJvcnRFcnJvciIsICJhZGRlZERlbGF5IiwgInF1ZXJ5UEdMaXRlIiwgInF1ZXJ5UEdMaXRlUG9zc2libHlEZWxheWVkIiwgInJlc29sdmUiLCAic2hvdWxkTG9nIiwgImxvZ2dhYmxlUXVlcnkiLCAibm93IiwgInJlc3VsdCIsICJkdXJhdGlvbiIsICJlcnJvciIsICJjcmVhdGVQR0xpdGVBZGFwdGVyIiwgImNyZWF0ZVBvc3RncmVzQWRhcHRlciJdCn0K
@@ -1,4 +1,4 @@
1
- import { d as AdapterRequirements, A as Adapter, T as Table, F as FilterOperator, Q as Query, g as AdapterInsertDetails, B as BuilderRequirements, e as AdapterQueryDetails, h as AdapterUpdateDetails, f as AdapterDeleteDetails } from '../../index-CV9DQF9a.cjs';
1
+ import { d as AdapterRequirements, A as Adapter, T as Table, F as FilterOperator, Q as Query, g as AdapterInsertDetails, B as BuilderRequirements, e as AdapterQueryDetails, h as AdapterUpdateDetails, f as AdapterDeleteDetails } from '../../index-CW6rqTos.cjs';
2
2
  import 'kysely';
3
3
 
4
4
  type PostgresAdapterRequirements = AdapterRequirements;
@@ -1,4 +1,4 @@
1
- import { d as AdapterRequirements, A as Adapter, T as Table, F as FilterOperator, Q as Query, g as AdapterInsertDetails, B as BuilderRequirements, e as AdapterQueryDetails, h as AdapterUpdateDetails, f as AdapterDeleteDetails } from '../../index-CV9DQF9a.js';
1
+ import { d as AdapterRequirements, A as Adapter, T as Table, F as FilterOperator, Q as Query, g as AdapterInsertDetails, B as BuilderRequirements, e as AdapterQueryDetails, h as AdapterUpdateDetails, f as AdapterDeleteDetails } from '../../index-CW6rqTos.js';
2
2
  import 'kysely';
3
3
 
4
4
  type PostgresAdapterRequirements = AdapterRequirements;
@@ -1,2 +1,2 @@
1
1
  "use strict";var l=Object.defineProperty;var E=Object.getOwnPropertyDescriptor;var P=Object.getOwnPropertyNames;var v=Object.prototype.hasOwnProperty;var T=(e,r)=>{for(var n in r)l(e,n,{get:r[n],enumerable:!0})},k=(e,r,n,t)=>{if(r&&typeof r=="object"||typeof r=="function")for(let o of P(r))!v.call(e,o)&&o!==n&&l(e,o,{get:()=>r[o],enumerable:!(t=E(r,o))||t.enumerable});return e};var q=e=>k(l({},"__esModule",{value:!0}),e);var C={};T(C,{createPostgresJSExecutor:()=>h});module.exports=q(C);var c=class extends Error{constructor(){super("This operation was aborted"),this.name="AbortError"}};function i(){return[new c]}function R(e){return typeof e=="string"?{parameters:[],sql:e}:e}function g(){return R("select pg_backend_pid() as pid")}function b(e){return{parameters:[e],sql:"select pg_cancel_backend($1);"}}function h(e){return{execute:async(r,n)=>{let{abortSignal:t}=n||{};if(!t)try{return[null,await e.unsafe(r.sql,r.parameters)]}catch(a){return[a]}if(t.aborted)return i();let o,s;try{let a,u=new Promise(Q=>a=Q);t.addEventListener("abort",o=()=>a());let y=e.reserve(),d=await Promise.race([y,u]);if(!d)return y.catch(()=>{}),i();if(s=d,t.aborted)return s.release(),i();let m=O(s),f=await Promise.race([m,u]);if(f===void 0)return m.catch(()=>{}).finally(()=>s?.release()),i();if(t.aborted)return s.release(),i();let x=s.unsafe(r.sql,r.parameters),w=await Promise.race([x,u]);return w?(s.release(),[null,w]):(Promise.allSettled([B(e,f),x]).finally(()=>s?.release()),i())}catch(a){return s?.release(),[a]}finally{o&&t?.removeEventListener("abort",o)}}}}async function B(e,r){let n=b(r);try{await e.unsafe(n.sql,n.parameters)}catch(t){console.error("Failed to cancel query:",t)}}async function O(e){let r=g();try{let[n]=await e.unsafe(r.sql,r.parameters);return n?.pid}catch(n){console.error("Failed to get connection PID:",n);return}}
2
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vZGF0YS9wb3N0Z3Jlc2pzL2luZGV4LnRzIiwgIi4uLy4uLy4uL2RhdGEvZXhlY3V0b3IudHMiLCAiLi4vLi4vLi4vZGF0YS9xdWVyeS50cyIsICIuLi8uLi8uLi9kYXRhL3Bvc3RncmVzLWNvcmUvdXRpbGl0eS50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiaW1wb3J0IHR5cGUgeyBSZXNlcnZlZFNxbCwgU3FsIH0gZnJvbSBcInBvc3RncmVzXCI7XG5cbmltcG9ydCB7IHR5cGUgRXhlY3V0b3IsIGdldEFib3J0UmVzdWx0IH0gZnJvbSBcIi4uL2V4ZWN1dG9yXCI7XG5pbXBvcnQgeyBnZXRDYW5jZWxRdWVyeSwgZ2V0UElEUXVlcnkgfSBmcm9tIFwiLi4vcG9zdGdyZXMtY29yZS91dGlsaXR5XCI7XG5pbXBvcnQgdHlwZSB7IFF1ZXJ5UmVzdWx0IH0gZnJvbSBcIi4uL3F1ZXJ5XCI7XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVQb3N0Z3Jlc0pTRXhlY3V0b3IocG9zdGdyZXNqczogU3FsKTogRXhlY3V0b3Ige1xuICByZXR1cm4ge1xuICAgIGV4ZWN1dGU6IGFzeW5jIChxdWVyeSwgb3B0aW9ucykgPT4ge1xuICAgICAgY29uc3QgeyBhYm9ydFNpZ25hbCB9ID0gb3B0aW9ucyB8fCB7fTtcblxuICAgICAgaWYgKCFhYm9ydFNpZ25hbCkge1xuICAgICAgICB0cnkge1xuICAgICAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHBvc3RncmVzanMudW5zYWZlKHF1ZXJ5LnNxbCwgcXVlcnkucGFyYW1ldGVycyBhcyBuZXZlcik7XG5cbiAgICAgICAgICByZXR1cm4gW251bGwsIHJlc3VsdCBhcyBuZXZlcl07XG4gICAgICAgIH0gY2F0Y2ggKGVycm9yOiB1bmtub3duKSB7XG4gICAgICAgICAgcmV0dXJuIFtlcnJvciBhcyBFcnJvcl07XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKGFib3J0U2lnbmFsLmFib3J0ZWQpIHtcbiAgICAgICAgcmV0dXJuIGdldEFib3J0UmVzdWx0KCk7XG4gICAgICB9XG5cbiAgICAgIGxldCBhYm9ydExpc3RlbmVyOiAoKCkgPT4gdm9pZCkgfCB1bmRlZmluZWQ7XG4gICAgICBsZXQgY29ubmVjdGlvbjogUmVzZXJ2ZWRTcWwgfCB1bmRlZmluZWQ7XG5cbiAgICAgIHRyeSB7XG4gICAgICAgIGxldCBhYm9ydGVkOiAoKSA9PiB2b2lkO1xuICAgICAgICBjb25zdCBhYm9ydGlvblByb21pc2UgPSBuZXcgUHJvbWlzZTx2b2lkPigocmVzb2x2ZSkgPT4gKGFib3J0ZWQgPSByZXNvbHZlKSk7XG5cbiAgICAgICAgYWJvcnRTaWduYWwuYWRkRXZlbnRMaXN0ZW5lcihcImFib3J0XCIsIChhYm9ydExpc3RlbmVyID0gKCkgPT4gYWJvcnRlZCgpKSk7XG5cbiAgICAgICAgY29uc3QgY29ubmVjdGlvblByb21pc2UgPSBwb3N0Z3Jlc2pzLnJlc2VydmUoKTtcblxuICAgICAgICBjb25zdCBjb25uZWN0aW9uUmVzdWx0ID0gYXdhaXQgUHJvbWlzZS5yYWNlKFtjb25uZWN0aW9uUHJvbWlzZSwgYWJvcnRpb25Qcm9taXNlXSk7XG5cbiAgICAgICAgaWYgKCFjb25uZWN0aW9uUmVzdWx0KSB7XG4gICAgICAgICAgdm9pZCBjb25uZWN0aW9uUHJvbWlzZS5jYXRjaCgoKSA9PiB7fSk7XG5cbiAgICAgICAgICByZXR1cm4gZ2V0QWJvcnRSZXN1bHQoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbm5lY3Rpb24gPSBjb25uZWN0aW9uUmVzdWx0O1xuXG4gICAgICAgIGlmIChhYm9ydFNpZ25hbC5hYm9ydGVkKSB7XG4gICAgICAgICAgY29ubmVjdGlvbi5yZWxlYXNlKCk7XG5cbiAgICAgICAgICByZXR1cm4gZ2V0QWJvcnRSZXN1bHQoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHBpZFByb21pc2UgPSBnZXRDb25uZWN0aW9uUElEKGNvbm5lY3Rpb24pO1xuXG4gICAgICAgIGNvbnN0IHBpZFJlc3VsdCA9IGF3YWl0IFByb21pc2UucmFjZShbcGlkUHJvbWlzZSwgYWJvcnRpb25Qcm9taXNlXSk7XG5cbiAgICAgICAgaWYgKHBpZFJlc3VsdCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgdm9pZCBwaWRQcm9taXNlLmNhdGNoKCgpID0+IHt9KS5maW5hbGx5KCgpID0+IGNvbm5lY3Rpb24/LnJlbGVhc2UoKSk7XG5cbiAgICAgICAgICByZXR1cm4gZ2V0QWJvcnRSZXN1bHQoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChhYm9ydFNpZ25hbC5hYm9ydGVkKSB7XG4gICAgICAgICAgY29ubmVjdGlvbi5yZWxlYXNlKCk7XG5cbiAgICAgICAgICByZXR1cm4gZ2V0QWJvcnRSZXN1bHQoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHF1ZXJ5UHJvbWlzZSA9IGNvbm5lY3Rpb24udW5zYWZlKHF1ZXJ5LnNxbCwgcXVlcnkucGFyYW1ldGVycyBhcyBuZXZlcik7XG5cbiAgICAgICAgY29uc3QgcXVlcnlSZXN1bHQgPSBhd2FpdCBQcm9taXNlLnJhY2UoW3F1ZXJ5UHJvbWlzZSwgYWJvcnRpb25Qcm9taXNlXSk7XG5cbiAgICAgICAgaWYgKCFxdWVyeVJlc3VsdCkge1xuICAgICAgICAgIHZvaWQgUHJvbWlzZS5hbGxTZXR0bGVkKFtjYW5jZWxRdWVyeShwb3N0Z3Jlc2pzLCBwaWRSZXN1bHQhKSwgcXVlcnlQcm9taXNlXSkuZmluYWxseSgoKSA9PlxuICAgICAgICAgICAgY29ubmVjdGlvbj8ucmVsZWFzZSgpLFxuICAgICAgICAgICk7XG5cbiAgICAgICAgICByZXR1cm4gZ2V0QWJvcnRSZXN1bHQoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbm5lY3Rpb24ucmVsZWFzZSgpO1xuXG4gICAgICAgIHJldHVybiBbbnVsbCwgcXVlcnlSZXN1bHQgYXMgbmV2ZXJdO1xuICAgICAgfSBjYXRjaCAoZXJyb3I6IHVua25vd24pIHtcbiAgICAgICAgY29ubmVjdGlvbj8ucmVsZWFzZSgpO1xuXG4gICAgICAgIHJldHVybiBbZXJyb3IgYXMgRXJyb3JdO1xuICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgaWYgKGFib3J0TGlzdGVuZXIpIHtcbiAgICAgICAgICBhYm9ydFNpZ25hbD8ucmVtb3ZlRXZlbnRMaXN0ZW5lcihcImFib3J0XCIsIGFib3J0TGlzdGVuZXIpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSxcbiAgfTtcbn1cblxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1lbXB0eS1vYmplY3QtdHlwZVxuYXN5bmMgZnVuY3Rpb24gY2FuY2VsUXVlcnkocG9zdGdyZXNqczogU3FsLCBwaWQ6IHt9KTogUHJvbWlzZTx2b2lkPiB7XG4gIGNvbnN0IHF1ZXJ5ID0gZ2V0Q2FuY2VsUXVlcnkocGlkKTtcblxuICB0cnkge1xuICAgIGF3YWl0IHBvc3RncmVzanMudW5zYWZlKHF1ZXJ5LnNxbCwgcXVlcnkucGFyYW1ldGVycyBhcyBuZXZlcik7XG4gIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgY29uc29sZS5lcnJvcihcIkZhaWxlZCB0byBjYW5jZWwgcXVlcnk6XCIsIGVycm9yKTtcbiAgfVxufVxuXG5hc3luYyBmdW5jdGlvbiBnZXRDb25uZWN0aW9uUElEKGNvbm5lY3Rpb246IFJlc2VydmVkU3FsKTogUHJvbWlzZTx1bmtub3duPiB7XG4gIGNvbnN0IHF1ZXJ5ID0gZ2V0UElEUXVlcnkoKTtcblxuICB0cnkge1xuICAgIGNvbnN0IFtyZXN1bHRdID0gYXdhaXQgY29ubmVjdGlvbi51bnNhZmU8UXVlcnlSZXN1bHQ8dHlwZW9mIHF1ZXJ5Pj4ocXVlcnkuc3FsLCBxdWVyeS5wYXJhbWV0ZXJzIGFzIG5ldmVyKTtcblxuICAgIHJldHVybiByZXN1bHQ/LnBpZDtcbiAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICBjb25zb2xlLmVycm9yKFwiRmFpbGVkIHRvIGdldCBjb25uZWN0aW9uIFBJRDpcIiwgZXJyb3IpO1xuXG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxufVxuIiwgImltcG9ydCB0eXBlIHsgUXVlcnksIFF1ZXJ5UmVzdWx0IH0gZnJvbSBcIi4vcXVlcnlcIjtcbmltcG9ydCB0eXBlIHsgRWl0aGVyIH0gZnJvbSBcIi4vdHlwZS11dGlsc1wiO1xuXG5leHBvcnQgaW50ZXJmYWNlIEV4ZWN1dG9yIHtcbiAgZXhlY3V0ZTxUPihxdWVyeTogUXVlcnk8VD4sIG9wdGlvbnM/OiBFeGVjdXRlT3B0aW9ucyk6IFByb21pc2U8RWl0aGVyPEVycm9yLCBRdWVyeVJlc3VsdDxRdWVyeTxUPj4+Pjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBTZXF1ZW5jZUV4ZWN1dG9yIGV4dGVuZHMgRXhlY3V0b3Ige1xuICBleGVjdXRlU2VxdWVuY2U8VCwgUz4oXG4gICAgcXVlcnk6IFtRdWVyeTxUPiwgUXVlcnk8Uz5dLFxuICAgIG9wdGlvbnM/OiBFeGVjdXRlT3B0aW9ucyxcbiAgKTogUHJvbWlzZTxbW0Vycm9yXV0gfCBbW251bGwsIFF1ZXJ5UmVzdWx0PFF1ZXJ5PFQ+Pl0sIEVpdGhlcjxFcnJvciwgUXVlcnlSZXN1bHQ8UXVlcnk8Uz4+Pl0+O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEV4ZWN1dGVPcHRpb25zIHtcbiAgYWJvcnRTaWduYWw/OiBBYm9ydFNpZ25hbDtcbn1cblxuZXhwb3J0IGNsYXNzIEFib3J0RXJyb3IgZXh0ZW5kcyBFcnJvciB7XG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHN1cGVyKFwiVGhpcyBvcGVyYXRpb24gd2FzIGFib3J0ZWRcIik7XG4gICAgdGhpcy5uYW1lID0gXCJBYm9ydEVycm9yXCI7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldEFib3J0UmVzdWx0KCk6IFtBYm9ydEVycm9yXSB7XG4gIHJldHVybiBbbmV3IEFib3J0RXJyb3IoKV07XG59XG4iLCAiaW1wb3J0IHtcbiAgdHlwZSBDb21waWxhYmxlLFxuICB0eXBlIERpYWxlY3RBZGFwdGVyLFxuICBEdW1teURyaXZlcixcbiAgdHlwZSBFeHByZXNzaW9uLFxuICB0eXBlIEV4cHJlc3Npb25CdWlsZGVyLFxuICBleHByZXNzaW9uQnVpbGRlcixcbiAgdHlwZSBFeHByZXNzaW9uV3JhcHBlcixcbiAgdHlwZSBJbnNlcnRPYmplY3QsXG4gIEt5c2VseSxcbiAgdHlwZSBLeXNlbHlQbHVnaW4sXG4gIE9wZXJhdGlvbk5vZGVUcmFuc2Zvcm1lcixcbiAgdHlwZSBQbHVnaW5UcmFuc2Zvcm1RdWVyeUFyZ3MsXG4gIHR5cGUgUGx1Z2luVHJhbnNmb3JtUmVzdWx0QXJncyxcbiAgdHlwZSBQcmltaXRpdmVWYWx1ZUxpc3ROb2RlLFxuICB0eXBlIFF1ZXJ5Q29tcGlsZXIsXG4gIHR5cGUgUXVlcnlSZXN1bHQgYXMgS3lzZWx5UXVlcnlSZXN1bHQsXG4gIHR5cGUgUm9vdE9wZXJhdGlvbk5vZGUsXG4gIHNxbCxcbiAgdHlwZSBTcWxCb29sLFxuICB0eXBlIFVua25vd25Sb3csXG4gIHR5cGUgVXBkYXRlT2JqZWN0LFxuICBWYWx1ZUxpc3ROb2RlLFxuICBWYWx1ZU5vZGUsXG4gIHR5cGUgV2hlcmVJbnRlcmZhY2UsXG59IGZyb20gXCJreXNlbHlcIjtcblxuaW1wb3J0IHR5cGUgeyBDb2x1bW4sIENvbHVtbkZpbHRlciwgRmlsdGVyR3JvdXAsIFRhYmxlIH0gZnJvbSBcIi4vYWRhcHRlclwiO1xuXG5leHBvcnQgaW50ZXJmYWNlIEJ1aWxkZXJSZXF1aXJlbWVudHMge1xuICBBZGFwdGVyOiB7IG5ldyAoKTogRGlhbGVjdEFkYXB0ZXIgfTtcbiAgbm9QYXJhbWV0ZXJzPzogYm9vbGVhbjtcbiAgUXVlcnlDb21waWxlcjogeyBuZXcgKCk6IFF1ZXJ5Q29tcGlsZXIgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldEJ1aWxkZXI8REI+KHJlcXVpcmVtZW50czogQnVpbGRlclJlcXVpcmVtZW50cyk6IEt5c2VseTxEQj4ge1xuICByZXR1cm4gbmV3IEt5c2VseSh7XG4gICAgZGlhbGVjdDoge1xuICAgICAgY3JlYXRlQWRhcHRlcjogKCkgPT4gbmV3IHJlcXVpcmVtZW50cy5BZGFwdGVyKCksXG4gICAgICBjcmVhdGVEcml2ZXI6ICgpID0+IG5ldyBEdW1teURyaXZlcigpLFxuICAgICAgLy8gQHRzLWV4cGVjdC1lcnJvciAtIHdlIGRvbid0IG5lZWQgYnVpbHQtaW4gaW50cm9zcGVjdGlvbiBpbiB0aGlzIGNhc2VcbiAgICAgIGNyZWF0ZUludHJvc3BlY3RvcjogKCkgPT4gbnVsbCxcbiAgICAgIGNyZWF0ZVF1ZXJ5Q29tcGlsZXI6ICgpID0+IG5ldyByZXF1aXJlbWVudHMuUXVlcnlDb21waWxlcigpLFxuICAgIH0sXG4gICAgcGx1Z2luczogWy4uLihyZXF1aXJlbWVudHMubm9QYXJhbWV0ZXJzID8gW25ldyBJbW1lZGlhdGVWYWx1ZVBsdWdpbigpXSA6IFtdKV0sXG4gIH0pO1xufVxuXG4vKipcbiAqIEEgcGx1Z2luIHRoYXQgdHJhbnNmb3JtcyBhbGwgdmFsdWVzIHRvIGltbWVkaWF0ZSB2YWx1ZXMuIFRoaXMgbWVhbnMgdGhlaXIgaW5qZWN0ZWQgaW50byB0aGUgU1FMIHN0cmluZyBpbnN0ZWFkIG9mIHBvcHVsYXRpbmcgdGhlIHBhcmFtZXRlcnMgYXJyYXkuXG4gKiBJbiBzb21lIHNpdHVhdGlvbnMsIGEgZGF0YWJhc2UgZHJpdmVyIG1pZ2h0IG5vdCBzdXBwb3J0IHBhcmFtZXRlcnMsIGFuZCB0aGlzIHBsdWdpbiBjYW4gYmUgdXNlZCB0byB3b3JrIGFyb3VuZCB0aGF0LlxuICovXG5jbGFzcyBJbW1lZGlhdGVWYWx1ZVBsdWdpbiBpbXBsZW1lbnRzIEt5c2VseVBsdWdpbiB7XG4gIHJlYWRvbmx5ICN0cmFuc2Zvcm1lciA9IG5ldyBJbW1lZGlhdGVWYWx1ZVRyYW5zZm9ybWVyKCk7XG5cbiAgdHJhbnNmb3JtUXVlcnkoYXJnczogUGx1Z2luVHJhbnNmb3JtUXVlcnlBcmdzKTogUm9vdE9wZXJhdGlvbk5vZGUge1xuICAgIHJldHVybiB0aGlzLiN0cmFuc2Zvcm1lci50cmFuc2Zvcm1Ob2RlKGFyZ3Mubm9kZSk7XG4gIH1cblxuICB0cmFuc2Zvcm1SZXN1bHQoYXJnczogUGx1Z2luVHJhbnNmb3JtUmVzdWx0QXJncyk6IFByb21pc2U8S3lzZWx5UXVlcnlSZXN1bHQ8VW5rbm93blJvdz4+IHtcbiAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKGFyZ3MucmVzdWx0KTtcbiAgfVxufVxuXG5jbGFzcyBJbW1lZGlhdGVWYWx1ZVRyYW5zZm9ybWVyIGV4dGVuZHMgT3BlcmF0aW9uTm9kZVRyYW5zZm9ybWVyIHtcbiAgcHJvdGVjdGVkIG92ZXJyaWRlIHRyYW5zZm9ybVByaW1pdGl2ZVZhbHVlTGlzdChub2RlOiBQcmltaXRpdmVWYWx1ZUxpc3ROb2RlKTogUHJpbWl0aXZlVmFsdWVMaXN0Tm9kZSB7XG4gICAgcmV0dXJuIFZhbHVlTGlzdE5vZGUuY3JlYXRlKG5vZGUudmFsdWVzLm1hcChWYWx1ZU5vZGUuY3JlYXRlSW1tZWRpYXRlKSkgYXMgbmV2ZXI7XG4gIH1cblxuICBvdmVycmlkZSB0cmFuc2Zvcm1WYWx1ZShub2RlOiBWYWx1ZU5vZGUpOiBWYWx1ZU5vZGUge1xuICAgIHJldHVybiB7IC4uLnN1cGVyLnRyYW5zZm9ybVZhbHVlKG5vZGUpLCBpbW1lZGlhdGU6IHRydWUgfTtcbiAgfVxufVxuXG5kZWNsYXJlIGNvbnN0IHF1ZXJ5VHlwZTogdW5pcXVlIHN5bWJvbDtcbmV4cG9ydCBpbnRlcmZhY2UgUXVlcnk8VCA9IFJlY29yZDxzdHJpbmcsIHVua25vd24+PiB7XG4gIFtxdWVyeVR5cGVdPzogVDtcbiAgcGFyYW1ldGVyczogcmVhZG9ubHkgdW5rbm93bltdO1xuICBzcWw6IHN0cmluZztcbiAgdHJhbnNmb3JtYXRpb25zPzogUGFydGlhbDxSZWNvcmQ8a2V5b2YgVCwgXCJqc29uLXBhcnNlXCI+Pjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGFzUXVlcnk8VD4ocXVlcnk6IHN0cmluZyB8IFF1ZXJ5PHVua25vd24+KTogUXVlcnk8VD4ge1xuICBpZiAodHlwZW9mIHF1ZXJ5ID09PSBcInN0cmluZ1wiKSB7XG4gICAgcmV0dXJuIHsgcGFyYW1ldGVyczogW10sIHNxbDogcXVlcnkgfSBhcyBuZXZlcjtcbiAgfVxuXG4gIHJldHVybiBxdWVyeSBhcyBuZXZlcjtcbn1cblxuZXhwb3J0IHR5cGUgUXVlcnlSZXN1bHQ8VD4gPVxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuICBUIGV4dGVuZHMgUXVlcnk8aW5mZXIgUj4gPyBSW10gOiBUIGV4dGVuZHMgKC4uLmFyZ3M6IGFueVtdKSA9PiBRdWVyeTxpbmZlciBSPiA/IFJbXSA6IG5ldmVyO1xuXG5leHBvcnQgaW50ZXJmYWNlIENvbXBpbGVPcHRpb25zPFQ+IHtcbiAgLyoqXG4gICAqIEEgbWFwcGluZyBvZiBjb2x1bW4gbmFtZXMgdG8gdHJhbnNmb3JtYXRpb25zIHRoYXQgc2hvdWxkIGJlIGFwcGxpZWQgdG8gdGhlIHJlc3VsdC5cbiAgICogQ3VycmVudGx5IHN1cHBvcnRlZCB0cmFuc2Zvcm1hdGlvbiBpcyBcImpzb24tcGFyc2VcIiwgd2hpY2ggcGFyc2VzIGEgSlNPTiBzdHJpbmcgaW50byBhbiBvYmplY3QuXG4gICAqL1xuICB0cmFuc2Zvcm1hdGlvbnM/OiBQYXJ0aWFsPFJlY29yZDxrZXlvZiBULCBcImpzb24tcGFyc2VcIj4+O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY29tcGlsZTxUID0gUmVjb3JkPHN0cmluZywgdW5rbm93bj4+KFxuICBjb21waWxlYWJsZTogQ29tcGlsYWJsZTxUPixcbiAgb3B0aW9ucz86IENvbXBpbGVPcHRpb25zPFQ+LFxuKTogUXVlcnk8VD4ge1xuICBjb25zdCBjb21waWxlZFF1ZXJ5ID0gY29tcGlsZWFibGUuY29tcGlsZSgpO1xuXG4gIHJldHVybiB7XG4gICAgcGFyYW1ldGVyczogY29tcGlsZWRRdWVyeS5wYXJhbWV0ZXJzLFxuICAgIHNxbDogY29tcGlsZWRRdWVyeS5zcWwsXG4gICAgdHJhbnNmb3JtYXRpb25zOiBvcHRpb25zPy50cmFuc2Zvcm1hdGlvbnMsXG4gIH07XG59XG5cbi8qKlxuICogQXBwbGllcyBhIGZpbHRlciB0byB0aGUgZ2l2ZW4gcm93cyBiYXNlZCBvbiB0aGUgcHJpbWFyeSBrZXkgY29sdW1ucyBvZiB0aGUgdGFibGUuXG4gKlxuICogQGV4YW1wbGUgZGIuc2VsZWN0RnJvbShcInVzZXJzXCIpLiRjYWxsKGFwcGx5SW5mZXJyZWRSb3dGaWx0ZXJzKHJvd3MsIGNvbHVtbnMpKS5zZWxlY3RBbGwoKVxuICovXG5leHBvcnQgZnVuY3Rpb24gYXBwbHlJbmZlcnJlZFJvd0ZpbHRlcnMocm93czogUmVjb3JkPHN0cmluZywgdW5rbm93bj5bXSwgY29sdW1uczogVGFibGVbXCJjb2x1bW5zXCJdKSB7XG4gIGNvbnN0IHJvd0ZpbHRlcnMgPSBpbmZlclJvd0ZpbHRlcnMocm93cywgY29sdW1ucyk7XG5cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbiAgcmV0dXJuIDxRQiBleHRlbmRzIFdoZXJlSW50ZXJmYWNlPGFueSwgYW55Pj4ocWI6IFFCKTogUUIgPT5cbiAgICBxYi53aGVyZSgoZWIpID0+IHtcbiAgICAgIHJldHVybiBlYi5vcihcbiAgICAgICAgcm93RmlsdGVycy5tYXAoKHJvd0ZpbHRlcikgPT4ge1xuICAgICAgICAgIHJldHVybiBlYi5hbmQoXG4gICAgICAgICAgICByb3dGaWx0ZXIubWFwKChbY29sdW1uTmFtZSwgdmFsdWVdKSA9PlxuICAgICAgICAgICAgICBlYihjb2x1bW5OYW1lLCB2YWx1ZSA9PT0gbnVsbCA/IFwiaXNcIiA6IEFycmF5LmlzQXJyYXkodmFsdWUpID8gXCJpblwiIDogXCI9XCIsIHZhbHVlKSxcbiAgICAgICAgICAgICksXG4gICAgICAgICAgKTtcbiAgICAgICAgfSksXG4gICAgICApO1xuICAgIH0pIGFzIG5ldmVyO1xufVxuXG4vKipcbiAqIFBhcnQgb2YgYSBmaWx0ZXIgdGhhdCBwcmVkaWN0cyBhIG1hdGNoLlxuICogaWUuIC4uLiBXSEVSRSAkQ29sdW1OYW1lID0gJFZhbHVlIC4uLlxuICovXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxudHlwZSBSb3dGaWx0ZXJQcmVkaWNhdGUgPSBbQ29sdW1uTmFtZTogc3RyaW5nIHwgRXhwcmVzc2lvbjxhbnk+LCBWYWx1ZTogdW5rbm93bl07XG5cbi8qKlxuICogQSByb3cgZmlsdGVyIGlzIGNvbXByaXNlZCBvZiBvbmUgb3IgbW9yZSBwcmVkaWNhdGVzLlxuICovXG50eXBlIFJvd0ZpbHRlciA9IFJvd0ZpbHRlclByZWRpY2F0ZVtdO1xuXG4vKipcbiAqIFJvdyBmaWx0ZXJzIGlzIHNpbXBseSBhIHNldCBvZiBtdWx0aXBsZSB7QGxpbmsgUm93RmlsdGVyfS5cbiAqL1xudHlwZSBSb3dGaWx0ZXJzID0gUm93RmlsdGVyW107XG5cbi8qKlxuICogSW5mZXJzIHRoZSBmaWx0ZXIgdGhhdCBpcyBuZWNlc3NhcnkgdG8gdW5pcXVlbHkgaWRlbnRpZnkgYSBnaXZlbiByb3dcbiAqIGluZGl2aWR1YWxseS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGluZmVyRmlsdGVyT2JqZWN0KHJvdzogUmVjb3JkPHN0cmluZywgdW5rbm93bj4sIGNvbHVtbnM6IFRhYmxlW1wiY29sdW1uc1wiXSk6IFJlY29yZDxzdHJpbmcsIHVua25vd24+IHtcbiAgY29uc3QgZmlsdGVyOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiA9IHt9O1xuXG4gIGZvciAoY29uc3QgY29sdW1uIG9mIE9iamVjdC52YWx1ZXMoY29sdW1ucykpIHtcbiAgICBjb25zdCB7IGlzSW5QcmltYXJ5S2V5LCBuYW1lOiBjb2x1bW5OYW1lIH0gPSBjb2x1bW47XG5cbiAgICBpZiAoIWlzSW5QcmltYXJ5S2V5KSB7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG5cbiAgICBmaWx0ZXJbY29sdW1uTmFtZV0gPSByb3dbY29sdW1uTmFtZV0gPz8gbnVsbDtcbiAgfVxuXG4gIHJldHVybiBmaWx0ZXI7XG59XG5cbi8qKlxuICogSW5mZXJzIHRoZSBmaWx0ZXIgdGhhdCBpcyBuZWNlc3NhcnkgdG8gdW5pcXVlbHkgaWRlbnRpZnkgbXVsdGlwbGUgcm93c1xuICogaW5kaXZpZHVhbGx5LlxuICpcbiAqIEVsZWdhbnRseSBpbmZlcnMgdGhlIGJlc3QgcG9zc2libGUgc3RhdGVtZW50IHRvIGZpbHRlciB3aXRoLlxuICogVE9ETzogaW50cm9zcGVjdCBwcmltYXJ5IGtleSBvcmRpbmFsIG51bWJlcnMgc28gdGhlIHR1cGxlIGlzIGluIHRoZSBjb3JyZWN0IG9yZGVyLlxuICogVE9ETzogaWYgd2UgZXZlciBzdXBwb3J0IE1TU1FMLCB3ZSdsbCBuZWVkIHRvIGRyb3AgdG8gZHVtYiAoLi4uIGFuZCAuLi4pIG9yICguLi4gYW5kIC4uLikgbGlrZSBpbiB0aGUgb2xkIHdheSBqdXN0IGZvciBNU1NRTC5cbiAqXG4gKiBGb3Igc2luZ2xlIGNvbHVtbiBwcmltYXJ5IGtleTpcbiAqXG4gKiAxLiBpZiBvbmx5IDEgcm93OiBjb2wgPSB2YWx1ZVxuICogMi4gaWYgbXVsdGlwbGUgcm93czogY29sIElOICh2YWx1ZTEsIHZhbHVlMiwgLi4uKVxuICpcbiAqIEZvciBjb21wb3NpdGUgcHJpbWFyeSBrZXk6XG4gKlxuICogMS4gaWYgb25seSAxIHJvdzogKGNvbDEsIGNvbDIsIC4uLikgPSAodmFsdWUxLCB2YWx1ZTIsIC4uLilcbiAqIDIuIGlmIG11bHRpcGxlIHJvd3M6IChjb2wxLCBjb2wyLCAuLi4pIElOICgodmFsdWUxYSwgdmFsdWUyYSwgLi4uKSwgKHZhbHVlMWIsIHZhbHVlMmIsIC4uLiksIC4uLilcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGluZmVyUm93RmlsdGVycyhyb3dzOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPltdLCBjb2x1bW5zOiBUYWJsZVtcImNvbHVtbnNcIl0pOiBSb3dGaWx0ZXJzIHtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbiAgY29uc3QgcmVmczogRXhwcmVzc2lvbldyYXBwZXI8YW55LCBhbnksIGFueT5bXSA9IFtdO1xuICBjb25zdCB2YWx1ZXM6IHVua25vd25bXSA9IFtdO1xuXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG4gIGNvbnN0IGViID0gZXhwcmVzc2lvbkJ1aWxkZXI8YW55LCBhbnk+KCk7XG5cbiAgZm9yIChjb25zdCByb3cgb2Ygcm93cykge1xuICAgIGNvbnN0IHZhbHVlc0ZvclJvdzogdW5rbm93bltdID0gW107XG5cbiAgICBmb3IgKGNvbnN0IGNvbHVtbiBvZiBPYmplY3QudmFsdWVzKGNvbHVtbnMpKSB7XG4gICAgICBjb25zdCB7IGlzSW5QcmltYXJ5S2V5LCBuYW1lOiBjb2x1bW5OYW1lIH0gPSBjb2x1bW47XG5cbiAgICAgIGlmICghaXNJblByaW1hcnlLZXkpIHtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG5cbiAgICAgIGlmIChyb3cgPT09IHJvd3MuYXQoMCkpIHtcbiAgICAgICAgcmVmcy5wdXNoKGViLnJlZihjb2x1bW5OYW1lKSk7XG4gICAgICB9XG5cbiAgICAgIHZhbHVlc0ZvclJvdy5wdXNoKHRyYW5zZm9ybVZhbHVlKHJvd1tjb2x1bW5OYW1lXSA/PyBudWxsLCBjb2x1bW4pKTtcbiAgICB9XG5cbiAgICB2YWx1ZXMucHVzaChyZWZzLmxlbmd0aCA9PT0gMSA/IHZhbHVlc0ZvclJvdy5hdCgwKSEgOiB0dXBsZUZyb20odmFsdWVzRm9yUm93KSk7XG4gIH1cblxuICBjb25zdCBsaHMgPSByZWZzLmxlbmd0aCA9PT0gMSA/IHJlZnMuYXQoMCkhIDogdHVwbGVGcm9tKHJlZnMpO1xuICBjb25zdCByaHMgPSB2YWx1ZXMubGVuZ3RoID09PSAxID8gdmFsdWVzLmF0KDApISA6IHZhbHVlcztcblxuICByZXR1cm4gW1tbbGhzLCByaHNdXV07XG59XG5cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG5mdW5jdGlvbiB0dXBsZUZyb20oaXRlbXM6IHVua25vd25bXSk6IEV4cHJlc3Npb248YW55PiB7XG4gIHJldHVybiBzcWxgKCR7c3FsLmpvaW4oaXRlbXMsIHNxbGAsIGApfSlgO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYXBwbHlUcmFuc2Zvcm1hdGlvbnM8QyBleHRlbmRzIFwiaW5zZXJ0XCIgfCBcInVwZGF0ZVwiPihcbiAgX2NvbnRleHQ6IEMsXG4gIHZhbHVlczogQyBleHRlbmRzIFwidXBkYXRlXCIgPyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiA6IFJlY29yZDxzdHJpbmcsIHVua25vd24+IHwgUmVjb3JkPHN0cmluZywgdW5rbm93bj5bXSxcbiAgY29sdW1uczogVGFibGVbXCJjb2x1bW5zXCJdLFxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuKTogQyBleHRlbmRzIFwidXBkYXRlXCIgPyAoKSA9PiBVcGRhdGVPYmplY3Q8YW55LCBhbnk+IDogKCkgPT4gSW5zZXJ0T2JqZWN0PGFueSwgYW55PiB8IEluc2VydE9iamVjdDxhbnksIGFueT5bXSB7XG4gIHJldHVybiAoKSA9PlxuICAgIEFycmF5LmlzQXJyYXkodmFsdWVzKSA/IHZhbHVlcy5tYXAoKHJvdykgPT4gdHJhbnNmb3JtVmFsdWVzKHJvdywgY29sdW1ucykpIDogdHJhbnNmb3JtVmFsdWVzKHZhbHVlcywgY29sdW1ucyk7XG59XG5cbmZ1bmN0aW9uIHRyYW5zZm9ybVZhbHVlcyhcbiAgdmFsdWVzOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPixcbiAgY29sdW1uczogVGFibGVbXCJjb2x1bW5zXCJdLFxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuKTogSW5zZXJ0T2JqZWN0PGFueSwgYW55PiB8IFVwZGF0ZU9iamVjdDxhbnksIGFueT4ge1xuICBpZiAoT2JqZWN0LmtleXModmFsdWVzKS5sZW5ndGggPT09IDApIHtcbiAgICByZXR1cm4geyBbT2JqZWN0LmtleXMoY29sdW1ucykuYXQoMCkhXTogc3FsYGRlZmF1bHRgIH07XG4gIH1cblxuICByZXR1cm4gT2JqZWN0LmVudHJpZXModmFsdWVzKS5yZWR1Y2UoXG4gICAgKG9iaiwgW2tleSwgdmFsdWVdKSA9PiAoeyAuLi5vYmosIFtrZXldOiB0cmFuc2Zvcm1WYWx1ZSh2YWx1ZSwgY29sdW1uc1trZXldISkgfSksXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbiAgICB7fSBhcyBJbnNlcnRPYmplY3Q8YW55LCBhbnk+IHwgVXBkYXRlT2JqZWN0PGFueSwgYW55PixcbiAgKTtcbn1cblxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbmV4cG9ydCBmdW5jdGlvbiB0cmFuc2Zvcm1WYWx1ZSh2YWx1ZTogdW5rbm93biwgY29sdW1uOiBDb2x1bW4pOiBFeHByZXNzaW9uV3JhcHBlcjxhbnksIGFueSwgYW55PiB7XG4gIGNvbnN0IHsgZGF0YXR5cGUgfSA9IGNvbHVtbjtcblxuICBjb25zdCBlYiA9IGV4cHJlc3Npb25CdWlsZGVyKCk7XG5cbiAgaWYgKHZhbHVlID09PSBudWxsKSB7XG4gICAgcmV0dXJuIGViLmxpdChudWxsKTtcbiAgfVxuXG4gIGlmICghZGF0YXR5cGUuaXNOYXRpdmUpIHtcbiAgICByZXR1cm4gZWIuY2FzdChlYi52YWwodmFsdWUpLCBzcWwuaWQoZGF0YXR5cGUuc2NoZW1hLCBkYXRhdHlwZS5uYW1lKSk7XG4gIH1cblxuICByZXR1cm4gZWIudmFsKHZhbHVlKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldFNlbGVjdEZpbHRlckV4cHJlc3Npb24oXG4gIGZpbHRlcnM6IChDb2x1bW5GaWx0ZXIgfCBGaWx0ZXJHcm91cClbXSxcbiAgY29sdW1uczogVGFibGVbXCJjb2x1bW5zXCJdLFxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuKTogKGViOiBFeHByZXNzaW9uQnVpbGRlcjxhbnksIGFueT4pID0+IEV4cHJlc3Npb248U3FsQm9vbD4ge1xuICBpZiAoZmlsdGVycy5sZW5ndGggPT09IDApIHJldHVybiAoZWIpID0+IGViLmxpdCh0cnVlKTsgLy8gbm8gZmlsdGVycywgYWx3YXlzIHRydWVcblxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuICBjb25zdCBvckdyb3Vwc09mQW5kQnVpbGRlcnM6ICgoZWI6IEV4cHJlc3Npb25CdWlsZGVyPGFueSwgYW55PikgPT4gRXhwcmVzc2lvbjxTcWxCb29sPilbXVtdID0gW107XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG4gIGxldCBjdXJyZW50QW5kR3JvdXBCdWlsZGVyczogKChlYjogRXhwcmVzc2lvbkJ1aWxkZXI8YW55LCBhbnk+KSA9PiBFeHByZXNzaW9uPFNxbEJvb2w+KVtdID0gW107XG5cbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBmaWx0ZXJzLmxlbmd0aDsgaSsrKSB7XG4gICAgY3VycmVudEFuZEdyb3VwQnVpbGRlcnMucHVzaChidWlsZEJhc2VFeHByZXNzaW9uQnVpbGRlcihmaWx0ZXJzW2ldISwgY29sdW1ucykpO1xuXG4gICAgLy8gJm4gQU5EIGdyb3VwIGVuZHMgaWYgaXQncyB0aGUgbGFzdCBmaWx0ZXIsIG9yIHRoZSBpdGVtIGlzIGZvbGxvd2VkIGJ5IGFuICdvcidcbiAgICBpZiAoaSA9PT0gZmlsdGVycy5sZW5ndGggLSAxIHx8IGZpbHRlcnNbaV0hLmFmdGVyID09PSBcIm9yXCIpIHtcbiAgICAgIG9yR3JvdXBzT2ZBbmRCdWlsZGVycy5wdXNoKGN1cnJlbnRBbmRHcm91cEJ1aWxkZXJzKTtcbiAgICAgIGN1cnJlbnRBbmRHcm91cEJ1aWxkZXJzID0gW107IC8vIHN0YXJ0IGEgbmV3IGdyb3VwXG4gICAgfVxuICB9XG5cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbiAgcmV0dXJuIChlYjogRXhwcmVzc2lvbkJ1aWxkZXI8YW55LCBhbnk+KSA9PiB7XG4gICAgY29uc3QgYW5kRXhwcmVzc2lvbnMgPSBvckdyb3Vwc09mQW5kQnVpbGRlcnMubWFwKChncm91cCkgPT4ge1xuICAgICAgcmV0dXJuIGViLmFuZChncm91cC5tYXAoKGJ1aWxkZXIpID0+IGJ1aWxkZXIoZWIpKSk7XG4gICAgfSk7XG5cbiAgICByZXR1cm4gZWIub3IoYW5kRXhwcmVzc2lvbnMpO1xuICB9O1xufVxuXG4vLyBIZWxwZXIgdG8gYnVpbGQgYW4gZXhwcmVzc2lvbiBidWlsZGVyIGZvciBhIHNpbmdsZSBmaWx0ZXIgb3IgYSBncm91cFxuZnVuY3Rpb24gYnVpbGRCYXNlRXhwcmVzc2lvbkJ1aWxkZXIoXG4gIHNwZWM6IENvbHVtbkZpbHRlciB8IEZpbHRlckdyb3VwLFxuICBjb2x1bW5zOiBUYWJsZVtcImNvbHVtbnNcIl0sXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG4pOiAoZWI6IEV4cHJlc3Npb25CdWlsZGVyPGFueSwgYW55PikgPT4gRXhwcmVzc2lvbjxTcWxCb29sPiB7XG4gIGlmIChzcGVjLmtpbmQgPT09IFwiQ29sdW1uRmlsdGVyXCIpIHtcbiAgICByZXR1cm4gKGViKSA9PiB7XG4gICAgICBjb25zdCB7IGNvbHVtbiwgb3BlcmF0b3IsIHZhbHVlIH0gPSBzcGVjO1xuXG4gICAgICBjb25zdCBjb2x1bW5NZXRhID0gY29sdW1uc1tjb2x1bW5dITtcblxuICAgICAgcmV0dXJuIGViKFxuICAgICAgICBjb2x1bW5NZXRhLmRhdGF0eXBlLmdyb3VwID09PSBcInJhd1wiID8gZWIuY2FzdChjb2x1bW4sIFwidGV4dFwiKSA6IGNvbHVtbixcbiAgICAgICAgb3BlcmF0b3IsXG4gICAgICAgIHRyYW5zZm9ybVZhbHVlKHZhbHVlLCBjb2x1bW5NZXRhKSxcbiAgICAgICk7XG4gICAgfTtcbiAgfVxuXG4gIHJldHVybiBnZXRTZWxlY3RGaWx0ZXJFeHByZXNzaW9uKHNwZWMuZmlsdGVycywgY29sdW1ucyk7XG59XG4iLCAiaW1wb3J0IHsgYXNRdWVyeSwgdHlwZSBRdWVyeSB9IGZyb20gXCIuLi9xdWVyeVwiO1xuXG5leHBvcnQgZnVuY3Rpb24gZ2V0UElEUXVlcnkoKTogUXVlcnk8eyBwaWQ6IHVua25vd24gfT4ge1xuICByZXR1cm4gYXNRdWVyeShcInNlbGVjdCBwZ19iYWNrZW5kX3BpZCgpIGFzIHBpZFwiKTtcbn1cblxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1lbXB0eS1vYmplY3QtdHlwZVxuZXhwb3J0IGZ1bmN0aW9uIGdldENhbmNlbFF1ZXJ5KHBpZDoge30pOiBRdWVyeTx1bmtub3duPiB7XG4gIHJldHVybiB7XG4gICAgcGFyYW1ldGVyczogW3BpZF0sXG4gICAgc3FsOiBcInNlbGVjdCBwZ19jYW5jZWxfYmFja2VuZCgkMSk7XCIsXG4gIH07XG59XG4iXSwKICAibWFwcGluZ3MiOiAieWFBQUEsSUFBQUEsRUFBQSxHQUFBQyxFQUFBRCxFQUFBLDhCQUFBRSxJQUFBLGVBQUFDLEVBQUFILEdDa0JPLElBQU1JLEVBQU4sY0FBeUIsS0FBTSxDQUNwQyxhQUFjLENBQ1osTUFBTSw0QkFBNEIsRUFDbEMsS0FBSyxLQUFPLFlBQ2QsQ0FDRixFQUVPLFNBQVNDLEdBQStCLENBQzdDLE1BQU8sQ0FBQyxJQUFJRCxDQUFZLENBQzFCLENDdURPLFNBQVNFLEVBQVdDLEVBQTBDLENBQ25FLE9BQUksT0FBT0EsR0FBVSxTQUNa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dCIsICJjcmVhdGVQb3N0Z3Jlc0pTRXhlY3V0b3IiLCAiX190b0NvbW1vbkpTIiwgIkFib3J0RXJyb3IiLCAiZ2V0QWJvcnRSZXN1bHQiLCAiYXNRdWVyeSIsICJxdWVyeSIsICJnZXRQSURRdWVyeSIsICJhc1F1ZXJ5IiwgImdldENhbmNlbFF1ZXJ5IiwgInBpZCIsICJjcmVhdGVQb3N0Z3Jlc0pTRXhlY3V0b3IiLCAicG9zdGdyZXNqcyIsICJxdWVyeSIsICJvcHRpb25zIiwgImFib3J0U2lnbmFsIiwgImVycm9yIiwgImdldEFib3J0UmVzdWx0IiwgImFib3J0TGlzdGVuZXIiLCAiY29ubmVjdGlvbiIsICJhYm9ydGVkIiwgImFib3J0aW9uUHJvbWlzZSIsICJyZXNvbHZlIiwgImNvbm5lY3Rpb25Qcm9taXNlIiwgImNvbm5lY3Rpb25SZXN1bHQiLCAicGlkUHJvbWlzZSIsICJnZXRDb25uZWN0aW9uUElEIiwgInBpZFJlc3VsdCIsICJxdWVyeVByb21pc2UiLCAicXVlcnlSZXN1bHQiLCAiY2FuY2VsUXVlcnkiLCAicGlkIiwgImdldENhbmNlbFF1ZXJ5IiwgImdldFBJRFF1ZXJ5IiwgInJlc3VsdCJdCn0K
2
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vZGF0YS9wb3N0Z3Jlc2pzL2luZGV4LnRzIiwgIi4uLy4uLy4uL2RhdGEvZXhlY3V0b3IudHMiLCAiLi4vLi4vLi4vZGF0YS9xdWVyeS50cyIsICIuLi8uLi8uLi9kYXRhL3Bvc3RncmVzLWNvcmUvdXRpbGl0eS50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiaW1wb3J0IHR5cGUgeyBSZXNlcnZlZFNxbCwgU3FsIH0gZnJvbSBcInBvc3RncmVzXCI7XG5cbmltcG9ydCB7IHR5cGUgRXhlY3V0b3IsIGdldEFib3J0UmVzdWx0IH0gZnJvbSBcIi4uL2V4ZWN1dG9yXCI7XG5pbXBvcnQgeyBnZXRDYW5jZWxRdWVyeSwgZ2V0UElEUXVlcnkgfSBmcm9tIFwiLi4vcG9zdGdyZXMtY29yZS91dGlsaXR5XCI7XG5pbXBvcnQgdHlwZSB7IFF1ZXJ5UmVzdWx0IH0gZnJvbSBcIi4uL3F1ZXJ5XCI7XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVQb3N0Z3Jlc0pTRXhlY3V0b3IocG9zdGdyZXNqczogU3FsKTogRXhlY3V0b3Ige1xuICByZXR1cm4ge1xuICAgIGV4ZWN1dGU6IGFzeW5jIChxdWVyeSwgb3B0aW9ucykgPT4ge1xuICAgICAgY29uc3QgeyBhYm9ydFNpZ25hbCB9ID0gb3B0aW9ucyB8fCB7fTtcblxuICAgICAgaWYgKCFhYm9ydFNpZ25hbCkge1xuICAgICAgICB0cnkge1xuICAgICAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHBvc3RncmVzanMudW5zYWZlKHF1ZXJ5LnNxbCwgcXVlcnkucGFyYW1ldGVycyBhcyBuZXZlcik7XG5cbiAgICAgICAgICByZXR1cm4gW251bGwsIHJlc3VsdCBhcyBuZXZlcl07XG4gICAgICAgIH0gY2F0Y2ggKGVycm9yOiB1bmtub3duKSB7XG4gICAgICAgICAgcmV0dXJuIFtlcnJvciBhcyBFcnJvcl07XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKGFib3J0U2lnbmFsLmFib3J0ZWQpIHtcbiAgICAgICAgcmV0dXJuIGdldEFib3J0UmVzdWx0KCk7XG4gICAgICB9XG5cbiAgICAgIGxldCBhYm9ydExpc3RlbmVyOiAoKCkgPT4gdm9pZCkgfCB1bmRlZmluZWQ7XG4gICAgICBsZXQgY29ubmVjdGlvbjogUmVzZXJ2ZWRTcWwgfCB1bmRlZmluZWQ7XG5cbiAgICAgIHRyeSB7XG4gICAgICAgIGxldCBhYm9ydGVkOiAoKSA9PiB2b2lkO1xuICAgICAgICBjb25zdCBhYm9ydGlvblByb21pc2UgPSBuZXcgUHJvbWlzZTx2b2lkPigocmVzb2x2ZSkgPT4gKGFib3J0ZWQgPSByZXNvbHZlKSk7XG5cbiAgICAgICAgYWJvcnRTaWduYWwuYWRkRXZlbnRMaXN0ZW5lcihcImFib3J0XCIsIChhYm9ydExpc3RlbmVyID0gKCkgPT4gYWJvcnRlZCgpKSk7XG5cbiAgICAgICAgY29uc3QgY29ubmVjdGlvblByb21pc2UgPSBwb3N0Z3Jlc2pzLnJlc2VydmUoKTtcblxuICAgICAgICBjb25zdCBjb25uZWN0aW9uUmVzdWx0ID0gYXdhaXQgUHJvbWlzZS5yYWNlKFtjb25uZWN0aW9uUHJvbWlzZSwgYWJvcnRpb25Qcm9taXNlXSk7XG5cbiAgICAgICAgaWYgKCFjb25uZWN0aW9uUmVzdWx0KSB7XG4gICAgICAgICAgdm9pZCBjb25uZWN0aW9uUHJvbWlzZS5jYXRjaCgoKSA9PiB7fSk7XG5cbiAgICAgICAgICByZXR1cm4gZ2V0QWJvcnRSZXN1bHQoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbm5lY3Rpb24gPSBjb25uZWN0aW9uUmVzdWx0O1xuXG4gICAgICAgIGlmIChhYm9ydFNpZ25hbC5hYm9ydGVkKSB7XG4gICAgICAgICAgY29ubmVjdGlvbi5yZWxlYXNlKCk7XG5cbiAgICAgICAgICByZXR1cm4gZ2V0QWJvcnRSZXN1bHQoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHBpZFByb21pc2UgPSBnZXRDb25uZWN0aW9uUElEKGNvbm5lY3Rpb24pO1xuXG4gICAgICAgIGNvbnN0IHBpZFJlc3VsdCA9IGF3YWl0IFByb21pc2UucmFjZShbcGlkUHJvbWlzZSwgYWJvcnRpb25Qcm9taXNlXSk7XG5cbiAgICAgICAgaWYgKHBpZFJlc3VsdCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgdm9pZCBwaWRQcm9taXNlLmNhdGNoKCgpID0+IHt9KS5maW5hbGx5KCgpID0+IGNvbm5lY3Rpb24/LnJlbGVhc2UoKSk7XG5cbiAgICAgICAgICByZXR1cm4gZ2V0QWJvcnRSZXN1bHQoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChhYm9ydFNpZ25hbC5hYm9ydGVkKSB7XG4gICAgICAgICAgY29ubmVjdGlvbi5yZWxlYXNlKCk7XG5cbiAgICAgICAgICByZXR1cm4gZ2V0QWJvcnRSZXN1bHQoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHF1ZXJ5UHJvbWlzZSA9IGNvbm5lY3Rpb24udW5zYWZlKHF1ZXJ5LnNxbCwgcXVlcnkucGFyYW1ldGVycyBhcyBuZXZlcik7XG5cbiAgICAgICAgY29uc3QgcXVlcnlSZXN1bHQgPSBhd2FpdCBQcm9taXNlLnJhY2UoW3F1ZXJ5UHJvbWlzZSwgYWJvcnRpb25Qcm9taXNlXSk7XG5cbiAgICAgICAgaWYgKCFxdWVyeVJlc3VsdCkge1xuICAgICAgICAgIHZvaWQgUHJvbWlzZS5hbGxTZXR0bGVkKFtjYW5jZWxRdWVyeShwb3N0Z3Jlc2pzLCBwaWRSZXN1bHQhKSwgcXVlcnlQcm9taXNlXSkuZmluYWxseSgoKSA9PlxuICAgICAgICAgICAgY29ubmVjdGlvbj8ucmVsZWFzZSgpLFxuICAgICAgICAgICk7XG5cbiAgICAgICAgICByZXR1cm4gZ2V0QWJvcnRSZXN1bHQoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbm5lY3Rpb24ucmVsZWFzZSgpO1xuXG4gICAgICAgIHJldHVybiBbbnVsbCwgcXVlcnlSZXN1bHQgYXMgbmV2ZXJdO1xuICAgICAgfSBjYXRjaCAoZXJyb3I6IHVua25vd24pIHtcbiAgICAgICAgY29ubmVjdGlvbj8ucmVsZWFzZSgpO1xuXG4gICAgICAgIHJldHVybiBbZXJyb3IgYXMgRXJyb3JdO1xuICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgaWYgKGFib3J0TGlzdGVuZXIpIHtcbiAgICAgICAgICBhYm9ydFNpZ25hbD8ucmVtb3ZlRXZlbnRMaXN0ZW5lcihcImFib3J0XCIsIGFib3J0TGlzdGVuZXIpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSxcbiAgfTtcbn1cblxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1lbXB0eS1vYmplY3QtdHlwZVxuYXN5bmMgZnVuY3Rpb24gY2FuY2VsUXVlcnkocG9zdGdyZXNqczogU3FsLCBwaWQ6IHt9KTogUHJvbWlzZTx2b2lkPiB7XG4gIGNvbnN0IHF1ZXJ5ID0gZ2V0Q2FuY2VsUXVlcnkocGlkKTtcblxuICB0cnkge1xuICAgIGF3YWl0IHBvc3RncmVzanMudW5zYWZlKHF1ZXJ5LnNxbCwgcXVlcnkucGFyYW1ldGVycyBhcyBuZXZlcik7XG4gIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgY29uc29sZS5lcnJvcihcIkZhaWxlZCB0byBjYW5jZWwgcXVlcnk6XCIsIGVycm9yKTtcbiAgfVxufVxuXG5hc3luYyBmdW5jdGlvbiBnZXRDb25uZWN0aW9uUElEKGNvbm5lY3Rpb246IFJlc2VydmVkU3FsKTogUHJvbWlzZTx1bmtub3duPiB7XG4gIGNvbnN0IHF1ZXJ5ID0gZ2V0UElEUXVlcnkoKTtcblxuICB0cnkge1xuICAgIGNvbnN0IFtyZXN1bHRdID0gYXdhaXQgY29ubmVjdGlvbi51bnNhZmU8UXVlcnlSZXN1bHQ8dHlwZW9mIHF1ZXJ5Pj4ocXVlcnkuc3FsLCBxdWVyeS5wYXJhbWV0ZXJzIGFzIG5ldmVyKTtcblxuICAgIHJldHVybiByZXN1bHQ/LnBpZDtcbiAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICBjb25zb2xlLmVycm9yKFwiRmFpbGVkIHRvIGdldCBjb25uZWN0aW9uIFBJRDpcIiwgZXJyb3IpO1xuXG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxufVxuIiwgImltcG9ydCB0eXBlIHsgUXVlcnksIFF1ZXJ5UmVzdWx0IH0gZnJvbSBcIi4vcXVlcnlcIjtcbmltcG9ydCB0eXBlIHsgRWl0aGVyIH0gZnJvbSBcIi4vdHlwZS11dGlsc1wiO1xuXG5leHBvcnQgaW50ZXJmYWNlIEV4ZWN1dG9yIHtcbiAgZXhlY3V0ZTxUPihxdWVyeTogUXVlcnk8VD4sIG9wdGlvbnM/OiBFeGVjdXRlT3B0aW9ucyk6IFByb21pc2U8RWl0aGVyPEVycm9yLCBRdWVyeVJlc3VsdDxRdWVyeTxUPj4+Pjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBTZXF1ZW5jZUV4ZWN1dG9yIGV4dGVuZHMgRXhlY3V0b3Ige1xuICBleGVjdXRlU2VxdWVuY2U8VCwgUz4oXG4gICAgc2VxdWVuY2U6IHJlYWRvbmx5IFtRdWVyeTxUPiwgUXVlcnk8Uz5dLFxuICAgIG9wdGlvbnM/OiBFeGVjdXRlT3B0aW9ucyxcbiAgKTogUHJvbWlzZTxbW0Vycm9yXV0gfCBbW251bGwsIFF1ZXJ5UmVzdWx0PFF1ZXJ5PFQ+Pl0sIEVpdGhlcjxFcnJvciwgUXVlcnlSZXN1bHQ8UXVlcnk8Uz4+Pl0+O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEV4ZWN1dGVPcHRpb25zIHtcbiAgYWJvcnRTaWduYWw/OiBBYm9ydFNpZ25hbDtcbn1cblxuZXhwb3J0IGNsYXNzIEFib3J0RXJyb3IgZXh0ZW5kcyBFcnJvciB7XG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHN1cGVyKFwiVGhpcyBvcGVyYXRpb24gd2FzIGFib3J0ZWRcIik7XG4gICAgdGhpcy5uYW1lID0gXCJBYm9ydEVycm9yXCI7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldEFib3J0UmVzdWx0KCk6IFtBYm9ydEVycm9yXSB7XG4gIHJldHVybiBbbmV3IEFib3J0RXJyb3IoKV07XG59XG4iLCAiaW1wb3J0IHtcbiAgdHlwZSBDb21waWxhYmxlLFxuICB0eXBlIERpYWxlY3RBZGFwdGVyLFxuICBEdW1teURyaXZlcixcbiAgdHlwZSBFeHByZXNzaW9uLFxuICB0eXBlIEV4cHJlc3Npb25CdWlsZGVyLFxuICBleHByZXNzaW9uQnVpbGRlcixcbiAgdHlwZSBFeHByZXNzaW9uV3JhcHBlcixcbiAgdHlwZSBJbnNlcnRPYmplY3QsXG4gIEt5c2VseSxcbiAgdHlwZSBLeXNlbHlQbHVnaW4sXG4gIE9wZXJhdGlvbk5vZGVUcmFuc2Zvcm1lcixcbiAgdHlwZSBQbHVnaW5UcmFuc2Zvcm1RdWVyeUFyZ3MsXG4gIHR5cGUgUGx1Z2luVHJhbnNmb3JtUmVzdWx0QXJncyxcbiAgdHlwZSBQcmltaXRpdmVWYWx1ZUxpc3ROb2RlLFxuICB0eXBlIFF1ZXJ5Q29tcGlsZXIsXG4gIHR5cGUgUXVlcnlSZXN1bHQgYXMgS3lzZWx5UXVlcnlSZXN1bHQsXG4gIHR5cGUgUm9vdE9wZXJhdGlvbk5vZGUsXG4gIHNxbCxcbiAgdHlwZSBTcWxCb29sLFxuICB0eXBlIFVua25vd25Sb3csXG4gIHR5cGUgVXBkYXRlT2JqZWN0LFxuICBWYWx1ZUxpc3ROb2RlLFxuICBWYWx1ZU5vZGUsXG4gIHR5cGUgV2hlcmVJbnRlcmZhY2UsXG59IGZyb20gXCJreXNlbHlcIjtcblxuaW1wb3J0IHR5cGUgeyBDb2x1bW4sIENvbHVtbkZpbHRlciwgRmlsdGVyR3JvdXAsIFRhYmxlIH0gZnJvbSBcIi4vYWRhcHRlclwiO1xuXG5leHBvcnQgaW50ZXJmYWNlIEJ1aWxkZXJSZXF1aXJlbWVudHMge1xuICBBZGFwdGVyOiB7IG5ldyAoKTogRGlhbGVjdEFkYXB0ZXIgfTtcbiAgbm9QYXJhbWV0ZXJzPzogYm9vbGVhbjtcbiAgUXVlcnlDb21waWxlcjogeyBuZXcgKCk6IFF1ZXJ5Q29tcGlsZXIgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldEJ1aWxkZXI8REI+KHJlcXVpcmVtZW50czogQnVpbGRlclJlcXVpcmVtZW50cyk6IEt5c2VseTxEQj4ge1xuICByZXR1cm4gbmV3IEt5c2VseSh7XG4gICAgZGlhbGVjdDoge1xuICAgICAgY3JlYXRlQWRhcHRlcjogKCkgPT4gbmV3IHJlcXVpcmVtZW50cy5BZGFwdGVyKCksXG4gICAgICBjcmVhdGVEcml2ZXI6ICgpID0+IG5ldyBEdW1teURyaXZlcigpLFxuICAgICAgLy8gQHRzLWV4cGVjdC1lcnJvciAtIHdlIGRvbid0IG5lZWQgYnVpbHQtaW4gaW50cm9zcGVjdGlvbiBpbiB0aGlzIGNhc2VcbiAgICAgIGNyZWF0ZUludHJvc3BlY3RvcjogKCkgPT4gbnVsbCxcbiAgICAgIGNyZWF0ZVF1ZXJ5Q29tcGlsZXI6ICgpID0+IG5ldyByZXF1aXJlbWVudHMuUXVlcnlDb21waWxlcigpLFxuICAgIH0sXG4gICAgcGx1Z2luczogWy4uLihyZXF1aXJlbWVudHMubm9QYXJhbWV0ZXJzID8gW25ldyBJbW1lZGlhdGVWYWx1ZVBsdWdpbigpXSA6IFtdKV0sXG4gIH0pO1xufVxuXG4vKipcbiAqIEEgcGx1Z2luIHRoYXQgdHJhbnNmb3JtcyBhbGwgdmFsdWVzIHRvIGltbWVkaWF0ZSB2YWx1ZXMuIFRoaXMgbWVhbnMgdGhlaXIgaW5qZWN0ZWQgaW50byB0aGUgU1FMIHN0cmluZyBpbnN0ZWFkIG9mIHBvcHVsYXRpbmcgdGhlIHBhcmFtZXRlcnMgYXJyYXkuXG4gKiBJbiBzb21lIHNpdHVhdGlvbnMsIGEgZGF0YWJhc2UgZHJpdmVyIG1pZ2h0IG5vdCBzdXBwb3J0IHBhcmFtZXRlcnMsIGFuZCB0aGlzIHBsdWdpbiBjYW4gYmUgdXNlZCB0byB3b3JrIGFyb3VuZCB0aGF0LlxuICovXG5jbGFzcyBJbW1lZGlhdGVWYWx1ZVBsdWdpbiBpbXBsZW1lbnRzIEt5c2VseVBsdWdpbiB7XG4gIHJlYWRvbmx5ICN0cmFuc2Zvcm1lciA9IG5ldyBJbW1lZGlhdGVWYWx1ZVRyYW5zZm9ybWVyKCk7XG5cbiAgdHJhbnNmb3JtUXVlcnkoYXJnczogUGx1Z2luVHJhbnNmb3JtUXVlcnlBcmdzKTogUm9vdE9wZXJhdGlvbk5vZGUge1xuICAgIHJldHVybiB0aGlzLiN0cmFuc2Zvcm1lci50cmFuc2Zvcm1Ob2RlKGFyZ3Mubm9kZSk7XG4gIH1cblxuICB0cmFuc2Zvcm1SZXN1bHQoYXJnczogUGx1Z2luVHJhbnNmb3JtUmVzdWx0QXJncyk6IFByb21pc2U8S3lzZWx5UXVlcnlSZXN1bHQ8VW5rbm93blJvdz4+IHtcbiAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKGFyZ3MucmVzdWx0KTtcbiAgfVxufVxuXG5jbGFzcyBJbW1lZGlhdGVWYWx1ZVRyYW5zZm9ybWVyIGV4dGVuZHMgT3BlcmF0aW9uTm9kZVRyYW5zZm9ybWVyIHtcbiAgcHJvdGVjdGVkIG92ZXJyaWRlIHRyYW5zZm9ybVByaW1pdGl2ZVZhbHVlTGlzdChub2RlOiBQcmltaXRpdmVWYWx1ZUxpc3ROb2RlKTogUHJpbWl0aXZlVmFsdWVMaXN0Tm9kZSB7XG4gICAgcmV0dXJuIFZhbHVlTGlzdE5vZGUuY3JlYXRlKG5vZGUudmFsdWVzLm1hcChWYWx1ZU5vZGUuY3JlYXRlSW1tZWRpYXRlKSkgYXMgbmV2ZXI7XG4gIH1cblxuICBvdmVycmlkZSB0cmFuc2Zvcm1WYWx1ZShub2RlOiBWYWx1ZU5vZGUpOiBWYWx1ZU5vZGUge1xuICAgIHJldHVybiB7IC4uLnN1cGVyLnRyYW5zZm9ybVZhbHVlKG5vZGUpLCBpbW1lZGlhdGU6IHRydWUgfTtcbiAgfVxufVxuXG5kZWNsYXJlIGNvbnN0IHF1ZXJ5VHlwZTogdW5pcXVlIHN5bWJvbDtcbmV4cG9ydCBpbnRlcmZhY2UgUXVlcnk8VCA9IFJlY29yZDxzdHJpbmcsIHVua25vd24+PiB7XG4gIFtxdWVyeVR5cGVdPzogVDtcbiAgcGFyYW1ldGVyczogcmVhZG9ubHkgdW5rbm93bltdO1xuICBzcWw6IHN0cmluZztcbiAgdHJhbnNmb3JtYXRpb25zPzogUGFydGlhbDxSZWNvcmQ8a2V5b2YgVCwgXCJqc29uLXBhcnNlXCI+Pjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGFzUXVlcnk8VD4ocXVlcnk6IHN0cmluZyB8IFF1ZXJ5PHVua25vd24+KTogUXVlcnk8VD4ge1xuICBpZiAodHlwZW9mIHF1ZXJ5ID09PSBcInN0cmluZ1wiKSB7XG4gICAgcmV0dXJuIHsgcGFyYW1ldGVyczogW10sIHNxbDogcXVlcnkgfSBhcyBuZXZlcjtcbiAgfVxuXG4gIHJldHVybiBxdWVyeSBhcyBuZXZlcjtcbn1cblxuZXhwb3J0IHR5cGUgUXVlcnlSZXN1bHQ8VD4gPVxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuICBUIGV4dGVuZHMgUXVlcnk8aW5mZXIgUj4gPyBSW10gOiBUIGV4dGVuZHMgKC4uLmFyZ3M6IGFueVtdKSA9PiBRdWVyeTxpbmZlciBSPiA/IFJbXSA6IG5ldmVyO1xuXG5leHBvcnQgaW50ZXJmYWNlIENvbXBpbGVPcHRpb25zPFQ+IHtcbiAgLyoqXG4gICAqIEEgbWFwcGluZyBvZiBjb2x1bW4gbmFtZXMgdG8gdHJhbnNmb3JtYXRpb25zIHRoYXQgc2hvdWxkIGJlIGFwcGxpZWQgdG8gdGhlIHJlc3VsdC5cbiAgICogQ3VycmVudGx5IHN1cHBvcnRlZCB0cmFuc2Zvcm1hdGlvbiBpcyBcImpzb24tcGFyc2VcIiwgd2hpY2ggcGFyc2VzIGEgSlNPTiBzdHJpbmcgaW50byBhbiBvYmplY3QuXG4gICAqL1xuICB0cmFuc2Zvcm1hdGlvbnM/OiBQYXJ0aWFsPFJlY29yZDxrZXlvZiBULCBcImpzb24tcGFyc2VcIj4+O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY29tcGlsZTxUID0gUmVjb3JkPHN0cmluZywgdW5rbm93bj4+KFxuICBjb21waWxlYWJsZTogQ29tcGlsYWJsZTxUPixcbiAgb3B0aW9ucz86IENvbXBpbGVPcHRpb25zPFQ+LFxuKTogUXVlcnk8VD4ge1xuICBjb25zdCBjb21waWxlZFF1ZXJ5ID0gY29tcGlsZWFibGUuY29tcGlsZSgpO1xuXG4gIHJldHVybiB7XG4gICAgcGFyYW1ldGVyczogY29tcGlsZWRRdWVyeS5wYXJhbWV0ZXJzLFxuICAgIHNxbDogY29tcGlsZWRRdWVyeS5zcWwsXG4gICAgdHJhbnNmb3JtYXRpb25zOiBvcHRpb25zPy50cmFuc2Zvcm1hdGlvbnMsXG4gIH07XG59XG5cbi8qKlxuICogQXBwbGllcyBhIGZpbHRlciB0byB0aGUgZ2l2ZW4gcm93cyBiYXNlZCBvbiB0aGUgcHJpbWFyeSBrZXkgY29sdW1ucyBvZiB0aGUgdGFibGUuXG4gKlxuICogQGV4YW1wbGUgZGIuc2VsZWN0RnJvbShcInVzZXJzXCIpLiRjYWxsKGFwcGx5SW5mZXJyZWRSb3dGaWx0ZXJzKHJvd3MsIGNvbHVtbnMpKS5zZWxlY3RBbGwoKVxuICovXG5leHBvcnQgZnVuY3Rpb24gYXBwbHlJbmZlcnJlZFJvd0ZpbHRlcnMocm93czogUmVjb3JkPHN0cmluZywgdW5rbm93bj5bXSwgY29sdW1uczogVGFibGVbXCJjb2x1bW5zXCJdKSB7XG4gIGNvbnN0IHJvd0ZpbHRlcnMgPSBpbmZlclJvd0ZpbHRlcnMocm93cywgY29sdW1ucyk7XG5cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbiAgcmV0dXJuIDxRQiBleHRlbmRzIFdoZXJlSW50ZXJmYWNlPGFueSwgYW55Pj4ocWI6IFFCKTogUUIgPT5cbiAgICBxYi53aGVyZSgoZWIpID0+IHtcbiAgICAgIHJldHVybiBlYi5vcihcbiAgICAgICAgcm93RmlsdGVycy5tYXAoKHJvd0ZpbHRlcikgPT4ge1xuICAgICAgICAgIHJldHVybiBlYi5hbmQoXG4gICAgICAgICAgICByb3dGaWx0ZXIubWFwKChbY29sdW1uTmFtZSwgdmFsdWVdKSA9PlxuICAgICAgICAgICAgICBlYihjb2x1bW5OYW1lLCB2YWx1ZSA9PT0gbnVsbCA/IFwiaXNcIiA6IEFycmF5LmlzQXJyYXkodmFsdWUpID8gXCJpblwiIDogXCI9XCIsIHZhbHVlKSxcbiAgICAgICAgICAgICksXG4gICAgICAgICAgKTtcbiAgICAgICAgfSksXG4gICAgICApO1xuICAgIH0pIGFzIG5ldmVyO1xufVxuXG4vKipcbiAqIFBhcnQgb2YgYSBmaWx0ZXIgdGhhdCBwcmVkaWN0cyBhIG1hdGNoLlxuICogaWUuIC4uLiBXSEVSRSAkQ29sdW1OYW1lID0gJFZhbHVlIC4uLlxuICovXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxudHlwZSBSb3dGaWx0ZXJQcmVkaWNhdGUgPSBbQ29sdW1uTmFtZTogc3RyaW5nIHwgRXhwcmVzc2lvbjxhbnk+LCBWYWx1ZTogdW5rbm93bl07XG5cbi8qKlxuICogQSByb3cgZmlsdGVyIGlzIGNvbXByaXNlZCBvZiBvbmUgb3IgbW9yZSBwcmVkaWNhdGVzLlxuICovXG50eXBlIFJvd0ZpbHRlciA9IFJvd0ZpbHRlclByZWRpY2F0ZVtdO1xuXG4vKipcbiAqIFJvdyBmaWx0ZXJzIGlzIHNpbXBseSBhIHNldCBvZiBtdWx0aXBsZSB7QGxpbmsgUm93RmlsdGVyfS5cbiAqL1xudHlwZSBSb3dGaWx0ZXJzID0gUm93RmlsdGVyW107XG5cbi8qKlxuICogSW5mZXJzIHRoZSBmaWx0ZXIgdGhhdCBpcyBuZWNlc3NhcnkgdG8gdW5pcXVlbHkgaWRlbnRpZnkgYSBnaXZlbiByb3dcbiAqIGluZGl2aWR1YWxseS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGluZmVyRmlsdGVyT2JqZWN0KHJvdzogUmVjb3JkPHN0cmluZywgdW5rbm93bj4sIGNvbHVtbnM6IFRhYmxlW1wiY29sdW1uc1wiXSk6IFJlY29yZDxzdHJpbmcsIHVua25vd24+IHtcbiAgY29uc3QgZmlsdGVyOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiA9IHt9O1xuXG4gIGZvciAoY29uc3QgY29sdW1uIG9mIE9iamVjdC52YWx1ZXMoY29sdW1ucykpIHtcbiAgICBjb25zdCB7IGlzSW5QcmltYXJ5S2V5LCBuYW1lOiBjb2x1bW5OYW1lIH0gPSBjb2x1bW47XG5cbiAgICBpZiAoIWlzSW5QcmltYXJ5S2V5KSB7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG5cbiAgICBmaWx0ZXJbY29sdW1uTmFtZV0gPSByb3dbY29sdW1uTmFtZV0gPz8gbnVsbDtcbiAgfVxuXG4gIHJldHVybiBmaWx0ZXI7XG59XG5cbi8qKlxuICogSW5mZXJzIHRoZSBmaWx0ZXIgdGhhdCBpcyBuZWNlc3NhcnkgdG8gdW5pcXVlbHkgaWRlbnRpZnkgbXVsdGlwbGUgcm93c1xuICogaW5kaXZpZHVhbGx5LlxuICpcbiAqIEVsZWdhbnRseSBpbmZlcnMgdGhlIGJlc3QgcG9zc2libGUgc3RhdGVtZW50IHRvIGZpbHRlciB3aXRoLlxuICogVE9ETzogaW50cm9zcGVjdCBwcmltYXJ5IGtleSBvcmRpbmFsIG51bWJlcnMgc28gdGhlIHR1cGxlIGlzIGluIHRoZSBjb3JyZWN0IG9yZGVyLlxuICogVE9ETzogaWYgd2UgZXZlciBzdXBwb3J0IE1TU1FMLCB3ZSdsbCBuZWVkIHRvIGRyb3AgdG8gZHVtYiAoLi4uIGFuZCAuLi4pIG9yICguLi4gYW5kIC4uLikgbGlrZSBpbiB0aGUgb2xkIHdheSBqdXN0IGZvciBNU1NRTC5cbiAqXG4gKiBGb3Igc2luZ2xlIGNvbHVtbiBwcmltYXJ5IGtleTpcbiAqXG4gKiAxLiBpZiBvbmx5IDEgcm93OiBjb2wgPSB2YWx1ZVxuICogMi4gaWYgbXVsdGlwbGUgcm93czogY29sIElOICh2YWx1ZTEsIHZhbHVlMiwgLi4uKVxuICpcbiAqIEZvciBjb21wb3NpdGUgcHJpbWFyeSBrZXk6XG4gKlxuICogMS4gaWYgb25seSAxIHJvdzogKGNvbDEsIGNvbDIsIC4uLikgPSAodmFsdWUxLCB2YWx1ZTIsIC4uLilcbiAqIDIuIGlmIG11bHRpcGxlIHJvd3M6IChjb2wxLCBjb2wyLCAuLi4pIElOICgodmFsdWUxYSwgdmFsdWUyYSwgLi4uKSwgKHZhbHVlMWIsIHZhbHVlMmIsIC4uLiksIC4uLilcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGluZmVyUm93RmlsdGVycyhyb3dzOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPltdLCBjb2x1bW5zOiBUYWJsZVtcImNvbHVtbnNcIl0pOiBSb3dGaWx0ZXJzIHtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbiAgY29uc3QgcmVmczogRXhwcmVzc2lvbldyYXBwZXI8YW55LCBhbnksIGFueT5bXSA9IFtdO1xuICBjb25zdCB2YWx1ZXM6IHVua25vd25bXSA9IFtdO1xuXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG4gIGNvbnN0IGViID0gZXhwcmVzc2lvbkJ1aWxkZXI8YW55LCBhbnk+KCk7XG5cbiAgZm9yIChjb25zdCByb3cgb2Ygcm93cykge1xuICAgIGNvbnN0IHZhbHVlc0ZvclJvdzogdW5rbm93bltdID0gW107XG5cbiAgICBmb3IgKGNvbnN0IGNvbHVtbiBvZiBPYmplY3QudmFsdWVzKGNvbHVtbnMpKSB7XG4gICAgICBjb25zdCB7IGlzSW5QcmltYXJ5S2V5LCBuYW1lOiBjb2x1bW5OYW1lIH0gPSBjb2x1bW47XG5cbiAgICAgIGlmICghaXNJblByaW1hcnlLZXkpIHtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG5cbiAgICAgIGlmIChyb3cgPT09IHJvd3MuYXQoMCkpIHtcbiAgICAgICAgcmVmcy5wdXNoKGViLnJlZihjb2x1bW5OYW1lKSk7XG4gICAgICB9XG5cbiAgICAgIHZhbHVlc0ZvclJvdy5wdXNoKHRyYW5zZm9ybVZhbHVlKHJvd1tjb2x1bW5OYW1lXSA/PyBudWxsLCBjb2x1bW4pKTtcbiAgICB9XG5cbiAgICB2YWx1ZXMucHVzaChyZWZzLmxlbmd0aCA9PT0gMSA/IHZhbHVlc0ZvclJvdy5hdCgwKSEgOiB0dXBsZUZyb20odmFsdWVzRm9yUm93KSk7XG4gIH1cblxuICBjb25zdCBsaHMgPSByZWZzLmxlbmd0aCA9PT0gMSA/IHJlZnMuYXQoMCkhIDogdHVwbGVGcm9tKHJlZnMpO1xuICBjb25zdCByaHMgPSB2YWx1ZXMubGVuZ3RoID09PSAxID8gdmFsdWVzLmF0KDApISA6IHZhbHVlcztcblxuICByZXR1cm4gW1tbbGhzLCByaHNdXV07XG59XG5cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG5mdW5jdGlvbiB0dXBsZUZyb20oaXRlbXM6IHVua25vd25bXSk6IEV4cHJlc3Npb248YW55PiB7XG4gIHJldHVybiBzcWxgKCR7c3FsLmpvaW4oaXRlbXMsIHNxbGAsIGApfSlgO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYXBwbHlUcmFuc2Zvcm1hdGlvbnM8QyBleHRlbmRzIFwiaW5zZXJ0XCIgfCBcInVwZGF0ZVwiPihcbiAgX2NvbnRleHQ6IEMsXG4gIHZhbHVlczogQyBleHRlbmRzIFwidXBkYXRlXCIgPyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiA6IFJlY29yZDxzdHJpbmcsIHVua25vd24+IHwgUmVjb3JkPHN0cmluZywgdW5rbm93bj5bXSxcbiAgY29sdW1uczogVGFibGVbXCJjb2x1bW5zXCJdLFxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuKTogQyBleHRlbmRzIFwidXBkYXRlXCIgPyAoKSA9PiBVcGRhdGVPYmplY3Q8YW55LCBhbnk+IDogKCkgPT4gSW5zZXJ0T2JqZWN0PGFueSwgYW55PiB8IEluc2VydE9iamVjdDxhbnksIGFueT5bXSB7XG4gIHJldHVybiAoKSA9PlxuICAgIEFycmF5LmlzQXJyYXkodmFsdWVzKSA/IHZhbHVlcy5tYXAoKHJvdykgPT4gdHJhbnNmb3JtVmFsdWVzKHJvdywgY29sdW1ucykpIDogdHJhbnNmb3JtVmFsdWVzKHZhbHVlcywgY29sdW1ucyk7XG59XG5cbmZ1bmN0aW9uIHRyYW5zZm9ybVZhbHVlcyhcbiAgdmFsdWVzOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPixcbiAgY29sdW1uczogVGFibGVbXCJjb2x1bW5zXCJdLFxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuKTogSW5zZXJ0T2JqZWN0PGFueSwgYW55PiB8IFVwZGF0ZU9iamVjdDxhbnksIGFueT4ge1xuICBpZiAoT2JqZWN0LmtleXModmFsdWVzKS5sZW5ndGggPT09IDApIHtcbiAgICByZXR1cm4geyBbT2JqZWN0LmtleXMoY29sdW1ucykuYXQoMCkhXTogc3FsYGRlZmF1bHRgIH07XG4gIH1cblxuICByZXR1cm4gT2JqZWN0LmVudHJpZXModmFsdWVzKS5yZWR1Y2UoXG4gICAgKG9iaiwgW2tleSwgdmFsdWVdKSA9PiAoeyAuLi5vYmosIFtrZXldOiB0cmFuc2Zvcm1WYWx1ZSh2YWx1ZSwgY29sdW1uc1trZXldISkgfSksXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbiAgICB7fSBhcyBJbnNlcnRPYmplY3Q8YW55LCBhbnk+IHwgVXBkYXRlT2JqZWN0PGFueSwgYW55PixcbiAgKTtcbn1cblxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbmV4cG9ydCBmdW5jdGlvbiB0cmFuc2Zvcm1WYWx1ZSh2YWx1ZTogdW5rbm93biwgY29sdW1uOiBDb2x1bW4pOiBFeHByZXNzaW9uV3JhcHBlcjxhbnksIGFueSwgYW55PiB7XG4gIGNvbnN0IHsgZGF0YXR5cGUgfSA9IGNvbHVtbjtcblxuICBjb25zdCBlYiA9IGV4cHJlc3Npb25CdWlsZGVyKCk7XG5cbiAgaWYgKHZhbHVlID09PSBudWxsKSB7XG4gICAgcmV0dXJuIGViLmxpdChudWxsKTtcbiAgfVxuXG4gIGlmICghZGF0YXR5cGUuaXNOYXRpdmUpIHtcbiAgICByZXR1cm4gZWIuY2FzdChlYi52YWwodmFsdWUpLCBzcWwuaWQoZGF0YXR5cGUuc2NoZW1hLCBkYXRhdHlwZS5uYW1lKSk7XG4gIH1cblxuICByZXR1cm4gZWIudmFsKHZhbHVlKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldFNlbGVjdEZpbHRlckV4cHJlc3Npb24oXG4gIGZpbHRlcnM6IChDb2x1bW5GaWx0ZXIgfCBGaWx0ZXJHcm91cClbXSxcbiAgY29sdW1uczogVGFibGVbXCJjb2x1bW5zXCJdLFxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuKTogKGViOiBFeHByZXNzaW9uQnVpbGRlcjxhbnksIGFueT4pID0+IEV4cHJlc3Npb248U3FsQm9vbD4ge1xuICBpZiAoZmlsdGVycy5sZW5ndGggPT09IDApIHJldHVybiAoZWIpID0+IGViLmxpdCh0cnVlKTsgLy8gbm8gZmlsdGVycywgYWx3YXlzIHRydWVcblxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuICBjb25zdCBvckdyb3Vwc09mQW5kQnVpbGRlcnM6ICgoZWI6IEV4cHJlc3Npb25CdWlsZGVyPGFueSwgYW55PikgPT4gRXhwcmVzc2lvbjxTcWxCb29sPilbXVtdID0gW107XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG4gIGxldCBjdXJyZW50QW5kR3JvdXBCdWlsZGVyczogKChlYjogRXhwcmVzc2lvbkJ1aWxkZXI8YW55LCBhbnk+KSA9PiBFeHByZXNzaW9uPFNxbEJvb2w+KVtdID0gW107XG5cbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBmaWx0ZXJzLmxlbmd0aDsgaSsrKSB7XG4gICAgY3VycmVudEFuZEdyb3VwQnVpbGRlcnMucHVzaChidWlsZEJhc2VFeHByZXNzaW9uQnVpbGRlcihmaWx0ZXJzW2ldISwgY29sdW1ucykpO1xuXG4gICAgLy8gJm4gQU5EIGdyb3VwIGVuZHMgaWYgaXQncyB0aGUgbGFzdCBmaWx0ZXIsIG9yIHRoZSBpdGVtIGlzIGZvbGxvd2VkIGJ5IGFuICdvcidcbiAgICBpZiAoaSA9PT0gZmlsdGVycy5sZW5ndGggLSAxIHx8IGZpbHRlcnNbaV0hLmFmdGVyID09PSBcIm9yXCIpIHtcbiAgICAgIG9yR3JvdXBzT2ZBbmRCdWlsZGVycy5wdXNoKGN1cnJlbnRBbmRHcm91cEJ1aWxkZXJzKTtcbiAgICAgIGN1cnJlbnRBbmRHcm91cEJ1aWxkZXJzID0gW107IC8vIHN0YXJ0IGEgbmV3IGdyb3VwXG4gICAgfVxuICB9XG5cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbiAgcmV0dXJuIChlYjogRXhwcmVzc2lvbkJ1aWxkZXI8YW55LCBhbnk+KSA9PiB7XG4gICAgY29uc3QgYW5kRXhwcmVzc2lvbnMgPSBvckdyb3Vwc09mQW5kQnVpbGRlcnMubWFwKChncm91cCkgPT4ge1xuICAgICAgcmV0dXJuIGViLmFuZChncm91cC5tYXAoKGJ1aWxkZXIpID0+IGJ1aWxkZXIoZWIpKSk7XG4gICAgfSk7XG5cbiAgICByZXR1cm4gZWIub3IoYW5kRXhwcmVzc2lvbnMpO1xuICB9O1xufVxuXG4vLyBIZWxwZXIgdG8gYnVpbGQgYW4gZXhwcmVzc2lvbiBidWlsZGVyIGZvciBhIHNpbmdsZSBmaWx0ZXIgb3IgYSBncm91cFxuZnVuY3Rpb24gYnVpbGRCYXNlRXhwcmVzc2lvbkJ1aWxkZXIoXG4gIHNwZWM6IENvbHVtbkZpbHRlciB8IEZpbHRlckdyb3VwLFxuICBjb2x1bW5zOiBUYWJsZVtcImNvbHVtbnNcIl0sXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG4pOiAoZWI6IEV4cHJlc3Npb25CdWlsZGVyPGFueSwgYW55PikgPT4gRXhwcmVzc2lvbjxTcWxCb29sPiB7XG4gIGlmIChzcGVjLmtpbmQgPT09IFwiQ29sdW1uRmlsdGVyXCIpIHtcbiAgICByZXR1cm4gKGViKSA9PiB7XG4gICAgICBjb25zdCB7IGNvbHVtbiwgb3BlcmF0b3IsIHZhbHVlIH0gPSBzcGVjO1xuXG4gICAgICBjb25zdCBjb2x1bW5NZXRhID0gY29sdW1uc1tjb2x1bW5dITtcblxuICAgICAgcmV0dXJuIGViKFxuICAgICAgICBjb2x1bW5NZXRhLmRhdGF0eXBlLmdyb3VwID09PSBcInJhd1wiID8gZWIuY2FzdChjb2x1bW4sIFwidGV4dFwiKSA6IGNvbHVtbixcbiAgICAgICAgb3BlcmF0b3IsXG4gICAgICAgIHRyYW5zZm9ybVZhbHVlKHZhbHVlLCBjb2x1bW5NZXRhKSxcbiAgICAgICk7XG4gICAgfTtcbiAgfVxuXG4gIHJldHVybiBnZXRTZWxlY3RGaWx0ZXJFeHByZXNzaW9uKHNwZWMuZmlsdGVycywgY29sdW1ucyk7XG59XG4iLCAiaW1wb3J0IHsgYXNRdWVyeSwgdHlwZSBRdWVyeSB9IGZyb20gXCIuLi9xdWVyeVwiO1xuXG5leHBvcnQgZnVuY3Rpb24gZ2V0UElEUXVlcnkoKTogUXVlcnk8eyBwaWQ6IHVua25vd24gfT4ge1xuICByZXR1cm4gYXNRdWVyeShcInNlbGVjdCBwZ19iYWNrZW5kX3BpZCgpIGFzIHBpZFwiKTtcbn1cblxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1lbXB0eS1vYmplY3QtdHlwZVxuZXhwb3J0IGZ1bmN0aW9uIGdldENhbmNlbFF1ZXJ5KHBpZDoge30pOiBRdWVyeTx1bmtub3duPiB7XG4gIHJldHVybiB7XG4gICAgcGFyYW1ldGVyczogW3BpZF0sXG4gICAgc3FsOiBcInNlbGVjdCBwZ19jYW5jZWxfYmFja2VuZCgkMSk7XCIsXG4gIH07XG59XG4iXSwKICAibWFwcGluZ3MiOiAieWFBQUEsSUFBQUEsRUFBQSxHQUFBQyxFQUFBRCxFQUFBLDhCQUFBRSxJQUFBLGVBQUFDLEVBQUFILEdDa0JPLElBQU1JLEVBQU4sY0FBeUIsS0FBTSxDQUNwQyxhQUFjLENBQ1osTUFBTSw0QkFBNEIsRUFDbEMsS0FBSyxLQUFPLFlBQ2QsQ0FDRixFQUVPLFNBQVNDLEdBQStCLENBQzdDLE1BQU8sQ0FBQyxJQUFJRCxDQUFZLENBQzFCLENDdURPLFNBQVNFLEVBQVdDLEVBQTBDLENBQ25FLE9BQUksT0FB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cyIsICJfX2V4cG9ydCIsICJjcmVhdGVQb3N0Z3Jlc0pTRXhlY3V0b3IiLCAiX190b0NvbW1vbkpTIiwgIkFib3J0RXJyb3IiLCAiZ2V0QWJvcnRSZXN1bHQiLCAiYXNRdWVyeSIsICJxdWVyeSIsICJnZXRQSURRdWVyeSIsICJhc1F1ZXJ5IiwgImdldENhbmNlbFF1ZXJ5IiwgInBpZCIsICJjcmVhdGVQb3N0Z3Jlc0pTRXhlY3V0b3IiLCAicG9zdGdyZXNqcyIsICJxdWVyeSIsICJvcHRpb25zIiwgImFib3J0U2lnbmFsIiwgImVycm9yIiwgImdldEFib3J0UmVzdWx0IiwgImFib3J0TGlzdGVuZXIiLCAiY29ubmVjdGlvbiIsICJhYm9ydGVkIiwgImFib3J0aW9uUHJvbWlzZSIsICJyZXNvbHZlIiwgImNvbm5lY3Rpb25Qcm9taXNlIiwgImNvbm5lY3Rpb25SZXN1bHQiLCAicGlkUHJvbWlzZSIsICJnZXRDb25uZWN0aW9uUElEIiwgInBpZFJlc3VsdCIsICJxdWVyeVByb21pc2UiLCAicXVlcnlSZXN1bHQiLCAiY2FuY2VsUXVlcnkiLCAicGlkIiwgImdldENhbmNlbFF1ZXJ5IiwgImdldFBJRFF1ZXJ5IiwgInJlc3VsdCJdCn0K
@@ -1,5 +1,5 @@
1
1
  import { Sql } from 'postgres';
2
- import { E as Executor } from '../../index-CV9DQF9a.cjs';
2
+ import { c as Executor } from '../../index-CW6rqTos.cjs';
3
3
  import 'kysely';
4
4
 
5
5
  declare function createPostgresJSExecutor(postgresjs: Sql): Executor;
@@ -1,5 +1,5 @@
1
1
  import { Sql } from 'postgres';
2
- import { E as Executor } from '../../index-CV9DQF9a.js';
2
+ import { c as Executor } from '../../index-CW6rqTos.js';
3
3
  import 'kysely';
4
4
 
5
5
  declare function createPostgresJSExecutor(postgresjs: Sql): Executor;
@@ -6,5 +6,5 @@ function require(mod) {
6
6
  if (mod === 'react-dom') return ___react_dom___;
7
7
  throw new Error(`Unknown module ${mod}`);
8
8
  }
9
- import{b as s}from"../../chunk-NQGSK3IM.js";import{a as p,b as P}from"../../chunk-M7E5UEO3.js";import"../../chunk-A6CVKSUD.js";import{e as v}from"../../chunk-GDQBQ7MK.js";v();function g(o){return{execute:async(e,t)=>{let{abortSignal:n}=t||{};if(!n)try{return[null,await o.unsafe(e.sql,e.parameters)]}catch(a){return[a]}if(n.aborted)return s();let i,r;try{let a,c=new Promise(q=>a=q);n.addEventListener("abort",i=()=>a());let u=o.reserve(),l=await Promise.race([u,c]);if(!l)return u.catch(()=>{}),s();if(r=l,n.aborted)return r.release(),s();let d=w(r),f=await Promise.race([d,c]);if(f===void 0)return d.catch(()=>{}).finally(()=>r?.release()),s();if(n.aborted)return r.release(),s();let m=r.unsafe(e.sql,e.parameters),y=await Promise.race([m,c]);return y?(r.release(),[null,y]):(Promise.allSettled([b(o,f),m]).finally(()=>r?.release()),s())}catch(a){return r?.release(),[a]}finally{i&&n?.removeEventListener("abort",i)}}}}async function b(o,e){let t=P(e);try{await o.unsafe(t.sql,t.parameters)}catch(n){console.error("Failed to cancel query:",n)}}async function w(o){let e=p();try{let[t]=await o.unsafe(e.sql,e.parameters);return t?.pid}catch(t){console.error("Failed to get connection PID:",t);return}}export{g as createPostgresJSExecutor};
9
+ import{b as s}from"../../chunk-SXTJF4PD.js";import{a as p,b as P}from"../../chunk-M7E5UEO3.js";import"../../chunk-A6CVKSUD.js";import{e as v}from"../../chunk-GDQBQ7MK.js";v();function g(o){return{execute:async(e,t)=>{let{abortSignal:n}=t||{};if(!n)try{return[null,await o.unsafe(e.sql,e.parameters)]}catch(a){return[a]}if(n.aborted)return s();let i,r;try{let a,c=new Promise(q=>a=q);n.addEventListener("abort",i=()=>a());let u=o.reserve(),l=await Promise.race([u,c]);if(!l)return u.catch(()=>{}),s();if(r=l,n.aborted)return r.release(),s();let d=w(r),f=await Promise.race([d,c]);if(f===void 0)return d.catch(()=>{}).finally(()=>r?.release()),s();if(n.aborted)return r.release(),s();let m=r.unsafe(e.sql,e.parameters),y=await Promise.race([m,c]);return y?(r.release(),[null,y]):(Promise.allSettled([b(o,f),m]).finally(()=>r?.release()),s())}catch(a){return r?.release(),[a]}finally{i&&n?.removeEventListener("abort",i)}}}}async function b(o,e){let t=P(e);try{await o.unsafe(t.sql,t.parameters)}catch(n){console.error("Failed to cancel query:",n)}}async function w(o){let e=p();try{let[t]=await o.unsafe(e.sql,e.parameters);return t?.pid}catch(t){console.error("Failed to get connection PID:",t);return}}export{g as createPostgresJSExecutor};
10
10
  //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vZGF0YS9wb3N0Z3Jlc2pzL2luZGV4LnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyJpbXBvcnQgdHlwZSB7IFJlc2VydmVkU3FsLCBTcWwgfSBmcm9tIFwicG9zdGdyZXNcIjtcblxuaW1wb3J0IHsgdHlwZSBFeGVjdXRvciwgZ2V0QWJvcnRSZXN1bHQgfSBmcm9tIFwiLi4vZXhlY3V0b3JcIjtcbmltcG9ydCB7IGdldENhbmNlbFF1ZXJ5LCBnZXRQSURRdWVyeSB9IGZyb20gXCIuLi9wb3N0Z3Jlcy1jb3JlL3V0aWxpdHlcIjtcbmltcG9ydCB0eXBlIHsgUXVlcnlSZXN1bHQgfSBmcm9tIFwiLi4vcXVlcnlcIjtcblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZVBvc3RncmVzSlNFeGVjdXRvcihwb3N0Z3Jlc2pzOiBTcWwpOiBFeGVjdXRvciB7XG4gIHJldHVybiB7XG4gICAgZXhlY3V0ZTogYXN5bmMgKHF1ZXJ5LCBvcHRpb25zKSA9PiB7XG4gICAgICBjb25zdCB7IGFib3J0U2lnbmFsIH0gPSBvcHRpb25zIHx8IHt9O1xuXG4gICAgICBpZiAoIWFib3J0U2lnbmFsKSB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgcG9zdGdyZXNqcy51bnNhZmUocXVlcnkuc3FsLCBxdWVyeS5wYXJhbWV0ZXJzIGFzIG5ldmVyKTtcblxuICAgICAgICAgIHJldHVybiBbbnVsbCwgcmVzdWx0IGFzIG5ldmVyXTtcbiAgICAgICAgfSBjYXRjaCAoZXJyb3I6IHVua25vd24pIHtcbiAgICAgICAgICByZXR1cm4gW2Vycm9yIGFzIEVycm9yXTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpZiAoYWJvcnRTaWduYWwuYWJvcnRlZCkge1xuICAgICAgICByZXR1cm4gZ2V0QWJvcnRSZXN1bHQoKTtcbiAgICAgIH1cblxuICAgICAgbGV0IGFib3J0TGlzdGVuZXI6ICgoKSA9PiB2b2lkKSB8IHVuZGVmaW5lZDtcbiAgICAgIGxldCBjb25uZWN0aW9uOiBSZXNlcnZlZFNxbCB8IHVuZGVmaW5lZDtcblxuICAgICAgdHJ5IHtcbiAgICAgICAgbGV0IGFib3J0ZWQ6ICgpID0+IHZvaWQ7XG4gICAgICAgIGNvbnN0IGFib3J0aW9uUHJvbWlzZSA9IG5ldyBQcm9taXNlPHZvaWQ+KChyZXNvbHZlKSA9PiAoYWJvcnRlZCA9IHJlc29sdmUpKTtcblxuICAgICAgICBhYm9ydFNpZ25hbC5hZGRFdmVudExpc3RlbmVyKFwiYWJvcnRcIiwgKGFib3J0TGlzdGVuZXIgPSAoKSA9PiBhYm9ydGVkKCkpKTtcblxuICAgICAgICBjb25zdCBjb25uZWN0aW9uUHJvbWlzZSA9IHBvc3RncmVzanMucmVzZXJ2ZSgpO1xuXG4gICAgICAgIGNvbnN0IGNvbm5lY3Rpb25SZXN1bHQgPSBhd2FpdCBQcm9taXNlLnJhY2UoW2Nvbm5lY3Rpb25Qcm9taXNlLCBhYm9ydGlvblByb21pc2VdKTtcblxuICAgICAgICBpZiAoIWNvbm5lY3Rpb25SZXN1bHQpIHtcbiAgICAgICAgICB2b2lkIGNvbm5lY3Rpb25Qcm9taXNlLmNhdGNoKCgpID0+IHt9KTtcblxuICAgICAgICAgIHJldHVybiBnZXRBYm9ydFJlc3VsdCgpO1xuICAgICAgICB9XG5cbiAgICAgICAgY29ubmVjdGlvbiA9IGNvbm5lY3Rpb25SZXN1bHQ7XG5cbiAgICAgICAgaWYgKGFib3J0U2lnbmFsLmFib3J0ZWQpIHtcbiAgICAgICAgICBjb25uZWN0aW9uLnJlbGVhc2UoKTtcblxuICAgICAgICAgIHJldHVybiBnZXRBYm9ydFJlc3VsdCgpO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgcGlkUHJvbWlzZSA9IGdldENvbm5lY3Rpb25QSUQoY29ubmVjdGlvbik7XG5cbiAgICAgICAgY29uc3QgcGlkUmVzdWx0ID0gYXdhaXQgUHJvbWlzZS5yYWNlKFtwaWRQcm9taXNlLCBhYm9ydGlvblByb21pc2VdKTtcblxuICAgICAgICBpZiAocGlkUmVzdWx0ID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICB2b2lkIHBpZFByb21pc2UuY2F0Y2goKCkgPT4ge30pLmZpbmFsbHkoKCkgPT4gY29ubmVjdGlvbj8ucmVsZWFzZSgpKTtcblxuICAgICAgICAgIHJldHVybiBnZXRBYm9ydFJlc3VsdCgpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGFib3J0U2lnbmFsLmFib3J0ZWQpIHtcbiAgICAgICAgICBjb25uZWN0aW9uLnJlbGVhc2UoKTtcblxuICAgICAgICAgIHJldHVybiBnZXRBYm9ydFJlc3VsdCgpO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgcXVlcnlQcm9taXNlID0gY29ubmVjdGlvbi51bnNhZmUocXVlcnkuc3FsLCBxdWVyeS5wYXJhbWV0ZXJzIGFzIG5ldmVyKTtcblxuICAgICAgICBjb25zdCBxdWVyeVJlc3VsdCA9IGF3YWl0IFByb21pc2UucmFjZShbcXVlcnlQcm9taXNlLCBhYm9ydGlvblByb21pc2VdKTtcblxuICAgICAgICBpZiAoIXF1ZXJ5UmVzdWx0KSB7XG4gICAgICAgICAgdm9pZCBQcm9taXNlLmFsbFNldHRsZWQoW2NhbmNlbFF1ZXJ5KHBvc3RncmVzanMsIHBpZFJlc3VsdCEpLCBxdWVyeVByb21pc2VdKS5maW5hbGx5KCgpID0+XG4gICAgICAgICAgICBjb25uZWN0aW9uPy5yZWxlYXNlKCksXG4gICAgICAgICAgKTtcblxuICAgICAgICAgIHJldHVybiBnZXRBYm9ydFJlc3VsdCgpO1xuICAgICAgICB9XG5cbiAgICAgICAgY29ubmVjdGlvbi5yZWxlYXNlKCk7XG5cbiAgICAgICAgcmV0dXJuIFtudWxsLCBxdWVyeVJlc3VsdCBhcyBuZXZlcl07XG4gICAgICB9IGNhdGNoIChlcnJvcjogdW5rbm93bikge1xuICAgICAgICBjb25uZWN0aW9uPy5yZWxlYXNlKCk7XG5cbiAgICAgICAgcmV0dXJuIFtlcnJvciBhcyBFcnJvcl07XG4gICAgICB9IGZpbmFsbHkge1xuICAgICAgICBpZiAoYWJvcnRMaXN0ZW5lcikge1xuICAgICAgICAgIGFib3J0U2lnbmFsPy5yZW1vdmVFdmVudExpc3RlbmVyKFwiYWJvcnRcIiwgYWJvcnRMaXN0ZW5lcik7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9LFxuICB9O1xufVxuXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWVtcHR5LW9iamVjdC10eXBlXG5hc3luYyBmdW5jdGlvbiBjYW5jZWxRdWVyeShwb3N0Z3Jlc2pzOiBTcWwsIHBpZDoge30pOiBQcm9taXNlPHZvaWQ+IHtcbiAgY29uc3QgcXVlcnkgPSBnZXRDYW5jZWxRdWVyeShwaWQpO1xuXG4gIHRyeSB7XG4gICAgYXdhaXQgcG9zdGdyZXNqcy51bnNhZmUocXVlcnkuc3FsLCBxdWVyeS5wYXJhbWV0ZXJzIGFzIG5ldmVyKTtcbiAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICBjb25zb2xlLmVycm9yKFwiRmFpbGVkIHRvIGNhbmNlbCBxdWVyeTpcIiwgZXJyb3IpO1xuICB9XG59XG5cbmFzeW5jIGZ1bmN0aW9uIGdldENvbm5lY3Rpb25QSUQoY29ubmVjdGlvbjogUmVzZXJ2ZWRTcWwpOiBQcm9taXNlPHVua25vd24+IHtcbiAgY29uc3QgcXVlcnkgPSBnZXRQSURRdWVyeSgpO1xuXG4gIHRyeSB7XG4gICAgY29uc3QgW3Jlc3VsdF0gPSBhd2FpdCBjb25uZWN0aW9uLnVuc2FmZTxRdWVyeVJlc3VsdDx0eXBlb2YgcXVlcnk+PihxdWVyeS5zcWwsIHF1ZXJ5LnBhcmFtZXRlcnMgYXMgbmV2ZXIpO1xuXG4gICAgcmV0dXJuIHJlc3VsdD8ucGlkO1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIGNvbnNvbGUuZXJyb3IoXCJGYWlsZWQgdG8gZ2V0IGNvbm5lY3Rpb24gUElEOlwiLCBlcnJvcik7XG5cbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG59XG4iXSwKICAibWFwcGluZ3MiOiAiOzs7Ozs7OzsyS0FBQUEsSUFNTyxTQUFTQyxFQUF5QkMsRUFBMkIsQ0FDbEUsTUFBTyxDQUNMLFFBQVMsTUFBT0MsRUFBT0MsSUFBWSxDQUNqQyxHQUFNLENBQUUsWUFBQUMsQ0FBWSxFQUFJRCxHQUFXLENBQUMsRUFFcEMsR0FBSSxDQUFDQyxFQUNILEdBQUksQ0FHRixNQUFPLENBQUMsS0FGTyxNQUFNSCxFQUFXLE9BQU9DLEVBQU0sSUFBS0EsRUFBTSxVQUFtQixDQUU5QyxDQUMvQixPQUFTRyxFQUFnQixDQUN2QixNQUFPLENBQUNBLENBQWMsQ0FDeEIsQ0FHRixHQUFJRCxFQUFZLFFBQ2QsT0FBT0UsRUFBZSxFQUd4QixJQUFJQyxFQUNBQyxFQUVKLEdBQUksQ0FDRixJQUFJQyxFQUNFQyxFQUFrQixJQUFJLFFBQWVDLEdBQWFGLEVBQVVFLENBQVEsRUFFMUVQLEVBQVksaUJBQWlCLFFBQVVHLEVBQWdCLElBQU1FLEVBQVEsQ0FBRSxFQUV2RSxJQUFNRyxFQUFvQlgsRUFBVyxRQUFRLEVBRXZDWSxFQUFtQixNQUFNLFFBQVEsS0FBSyxDQUFDRCxFQUFtQkYsQ0FBZSxDQUFDLEVBRWhGLEdBQUksQ0FBQ0csRUFDSCxPQUFLRCxFQUFrQixNQUFNLElBQU0sQ0FBQyxDQUFDLEVBRTlCTixFQUFlLEVBS3hCLEdBRkFFLEVBQWFLLEVBRVRULEVBQVksUUFDZCxPQUFBSSxFQUFXLFFBQVEsRUFFWkYsRUFBZSxFQUd4QixJQUFNUSxFQUFhQyxFQUFpQlAsQ0FBVSxFQUV4Q1EsRUFBWSxNQUFNLFFBQVEsS0FBSyxDQUFDRixFQUFZSixDQUFlLENBQUMsRUFFbEUsR0FBSU0sSUFBYyxPQUNoQixPQUFLRixFQUFXLE1BQU0sSUFBTSxDQUFDLENBQUMsRUFBRSxRQUFRLElBQU1OLEdBQVksUUFBUSxDQUFDLEVBRTVERixFQUFlLEVBR3hCLEdBQUlGLEVBQVksUUFDZCxPQUFBSSxFQUFXLFFBQVEsRUFFWkYsRUFBZSxFQUd4QixJQUFNVyxFQUFlVCxFQUFXLE9BQU9OLEVBQU0sSUFBS0EsRUFBTSxVQUFtQixFQUVyRWdCLEVBQWMsTUFBTSxRQUFRLEtBQUssQ0FBQ0QsRUFBY1AsQ0FBZSxDQUFDLEVBRXRFLE9BQUtRLEdBUUxWLEVBQVcsUUFBUSxFQUVaLENBQUMsS0FBTVUsQ0FBb0IsSUFUM0IsUUFBUSxXQUFXLENBQUNDLEVBQVlsQixFQUFZZSxDQUFVLEVBQUdDLENBQVksQ0FBQyxFQUFFLFFBQVEsSUFDbkZULEdBQVksUUFBUSxDQUN0QixFQUVPRixFQUFlLEVBTTFCLE9BQVNELEVBQWdCLENBQ3ZCLE9BQUFHLEdBQVksUUFBUSxFQUViLENBQUNILENBQWMsQ0FDeEIsUUFBRSxDQUNJRSxHQUNGSCxHQUFhLG9CQUFvQixRQUFTRyxDQUFhLENBRTNELENBQ0YsQ0FDRixDQUNGLENBR0EsZUFBZVksRUFBWWxCLEVBQWlCbUIsRUFBd0IsQ0FDbEUsSUFBTWxCLEVBQVFtQixFQUFlRCxDQUFHLEVBRWhDLEdBQUksQ0FDRixNQUFNbkIsRUFBVyxPQUFPQyxFQUFNLElBQUtBLEVBQU0sVUFBbUIsQ0FDOUQsT0FBU0csRUFBTyxDQUNkLFFBQVEsTUFBTSwwQkFBMkJBLENBQUssQ0FDaEQsQ0FDRixDQUVBLGVBQWVVLEVBQWlCUCxFQUEyQyxDQUN6RSxJQUFNTixFQUFRb0IsRUFBWSxFQUUxQixHQUFJLENBQ0YsR0FBTSxDQUFDQyxDQUFNLEVBQUksTUFBTWYsRUFBVyxPQUFrQ04sRUFBTSxJQUFLQSxFQUFNLFVBQW1CLEVBRXhHLE9BQU9xQixHQUFRLEdBQ2pCLE9BQVNsQixFQUFPLENBQ2QsUUFBUSxNQUFNLGdDQUFpQ0EsQ0FBSyxFQUVwRCxNQUNGLENBQ0YiLAogICJuYW1lcyI6IFsiaW5pdF9kZWZpbmVfQUNDRUxFUkFURV9TQ0hFTUFfQllfUFJPVklERVIiLCAiY3JlYXRlUG9zdGdyZXNKU0V4ZWN1dG9yIiwgInBvc3RncmVzanMiLCAicXVlcnkiLCAib3B0aW9ucyIsICJhYm9ydFNpZ25hbCIsICJlcnJvciIsICJnZXRBYm9ydFJlc3VsdCIsICJhYm9ydExpc3RlbmVyIiwgImNvbm5lY3Rpb24iLCAiYWJvcnRlZCIsICJhYm9ydGlvblByb21pc2UiLCAicmVzb2x2ZSIsICJjb25uZWN0aW9uUHJvbWlzZSIsICJjb25uZWN0aW9uUmVzdWx0IiwgInBpZFByb21pc2UiLCAiZ2V0Q29ubmVjdGlvblBJRCIsICJwaWRSZXN1bHQiLCAicXVlcnlQcm9taXNlIiwgInF1ZXJ5UmVzdWx0IiwgImNhbmNlbFF1ZXJ5IiwgInBpZCIsICJnZXRDYW5jZWxRdWVyeSIsICJnZXRQSURRdWVyeSIsICJyZXN1bHQiXQp9Cg==
@@ -1,6 +1,6 @@
1
1
  import { RawResponse, AccelerateHttpClient } from '../accelerate/index.cjs';
2
2
  export { DeserializedResponse, QueryIntrospectionBuiltinType, deserializeRawResult } from '../accelerate/index.cjs';
3
- import '../../index-CV9DQF9a.cjs';
3
+ import '../../index-CW6rqTos.cjs';
4
4
  import 'kysely';
5
5
 
6
6
  interface PrismaPostgresHttpClientParams {
@@ -1,6 +1,6 @@
1
1
  import { RawResponse, AccelerateHttpClient } from '../accelerate/index.js';
2
2
  export { DeserializedResponse, QueryIntrospectionBuiltinType, deserializeRawResult } from '../accelerate/index.js';
3
- import '../../index-CV9DQF9a.js';
3
+ import '../../index-CW6rqTos.js';
4
4
  import 'kysely';
5
5
 
6
6
  interface PrismaPostgresHttpClientParams {
@@ -1,4 +1,4 @@
1
- import { d as AdapterRequirements, A as Adapter, T as Table, F as FilterOperator, Q as Query, e as AdapterQueryDetails, B as BuilderRequirements, f as AdapterDeleteDetails, g as AdapterInsertDetails, h as AdapterUpdateDetails } from '../../index-CV9DQF9a.cjs';
1
+ import { d as AdapterRequirements, A as Adapter, T as Table, F as FilterOperator, Q as Query, e as AdapterQueryDetails, B as BuilderRequirements, f as AdapterDeleteDetails, g as AdapterInsertDetails, h as AdapterUpdateDetails } from '../../index-CW6rqTos.cjs';
2
2
  import * as kysely from 'kysely';
3
3
 
4
4
  type SQLIteAdapterRequirements = AdapterRequirements;
@@ -1,4 +1,4 @@
1
- import { d as AdapterRequirements, A as Adapter, T as Table, F as FilterOperator, Q as Query, e as AdapterQueryDetails, B as BuilderRequirements, f as AdapterDeleteDetails, g as AdapterInsertDetails, h as AdapterUpdateDetails } from '../../index-CV9DQF9a.js';
1
+ import { d as AdapterRequirements, A as Adapter, T as Table, F as FilterOperator, Q as Query, e as AdapterQueryDetails, B as BuilderRequirements, f as AdapterDeleteDetails, g as AdapterInsertDetails, h as AdapterUpdateDetails } from '../../index-CW6rqTos.js';
2
2
  import * as kysely from 'kysely';
3
3
 
4
4
  type SQLIteAdapterRequirements = AdapterRequirements;
@@ -288,7 +288,7 @@ interface Executor {
288
288
  execute<T>(query: Query<T>, options?: ExecuteOptions): Promise<Either<Error, QueryResult<Query<T>>>>;
289
289
  }
290
290
  interface SequenceExecutor extends Executor {
291
- executeSequence<T, S>(query: [Query<T>, Query<S>], options?: ExecuteOptions): Promise<[[Error]] | [[null, QueryResult<Query<T>>], Either<Error, QueryResult<Query<S>>>]>;
291
+ executeSequence<T, S>(sequence: readonly [Query<T>, Query<S>], options?: ExecuteOptions): Promise<[[Error]] | [[null, QueryResult<Query<T>>], Either<Error, QueryResult<Query<S>>>]>;
292
292
  }
293
293
  interface ExecuteOptions {
294
294
  abortSignal?: AbortSignal;
@@ -298,4 +298,4 @@ declare class AbortError extends Error {
298
298
  }
299
299
  declare function getAbortResult(): [AbortError];
300
300
 
301
- export { type Adapter as A, type BuilderRequirements as B, type Column as C, type DataType as D, type Executor as E, type FilterOperator as F, type AdapterDeleteResult as G, createAdapterError as H, AbortError as I, getAbortResult as J, type BigIntString as K, type NumericString as N, type Query as Q, type SequenceExecutor as S, type Table as T, type ExecuteOptions as a, type Either as b, type QueryResult as c, type AdapterRequirements as d, type AdapterQueryDetails as e, type AdapterDeleteDetails as f, type AdapterInsertDetails as g, type AdapterUpdateDetails as h, AdapterError as i, applyInferredRowFilters as j, type AdapterBaseOptions as k, type AdapterIntrospectOptions as l, type AdapterQueryOptions as m, type AdapterInsertOptions as n, type AdapterUpdateOptions as o, type AdapterDeleteOptions as p, type AdapterIntrospectResult as q, type Schema as r, type DataTypeGroup as s, type ColumnFilter as t, type FilterGroup as u, type SortOrderItem as v, type SortDirection as w, type AdapterQueryResult as x, type AdapterInsertResult as y, type AdapterUpdateResult as z };
301
+ export { type Adapter as A, type BuilderRequirements as B, type Column as C, type DataType as D, type ExecuteOptions as E, type FilterOperator as F, type AdapterDeleteResult as G, createAdapterError as H, AbortError as I, getAbortResult as J, type BigIntString as K, type NumericString as N, type Query as Q, type SequenceExecutor as S, type Table as T, type Either as a, type QueryResult as b, type Executor as c, type AdapterRequirements as d, type AdapterQueryDetails as e, type AdapterDeleteDetails as f, type AdapterInsertDetails as g, type AdapterUpdateDetails as h, AdapterError as i, applyInferredRowFilters as j, type AdapterBaseOptions as k, type AdapterIntrospectOptions as l, type AdapterQueryOptions as m, type AdapterInsertOptions as n, type AdapterUpdateOptions as o, type AdapterDeleteOptions as p, type AdapterIntrospectResult as q, type Schema as r, type DataTypeGroup as s, type ColumnFilter as t, type FilterGroup as u, type SortOrderItem as v, type SortDirection as w, type AdapterQueryResult as x, type AdapterInsertResult as y, type AdapterUpdateResult as z };
@@ -288,7 +288,7 @@ interface Executor {
288
288
  execute<T>(query: Query<T>, options?: ExecuteOptions): Promise<Either<Error, QueryResult<Query<T>>>>;
289
289
  }
290
290
  interface SequenceExecutor extends Executor {
291
- executeSequence<T, S>(query: [Query<T>, Query<S>], options?: ExecuteOptions): Promise<[[Error]] | [[null, QueryResult<Query<T>>], Either<Error, QueryResult<Query<S>>>]>;
291
+ executeSequence<T, S>(sequence: readonly [Query<T>, Query<S>], options?: ExecuteOptions): Promise<[[Error]] | [[null, QueryResult<Query<T>>], Either<Error, QueryResult<Query<S>>>]>;
292
292
  }
293
293
  interface ExecuteOptions {
294
294
  abortSignal?: AbortSignal;
@@ -298,4 +298,4 @@ declare class AbortError extends Error {
298
298
  }
299
299
  declare function getAbortResult(): [AbortError];
300
300
 
301
- export { type Adapter as A, type BuilderRequirements as B, type Column as C, type DataType as D, type Executor as E, type FilterOperator as F, type AdapterDeleteResult as G, createAdapterError as H, AbortError as I, getAbortResult as J, type BigIntString as K, type NumericString as N, type Query as Q, type SequenceExecutor as S, type Table as T, type ExecuteOptions as a, type Either as b, type QueryResult as c, type AdapterRequirements as d, type AdapterQueryDetails as e, type AdapterDeleteDetails as f, type AdapterInsertDetails as g, type AdapterUpdateDetails as h, AdapterError as i, applyInferredRowFilters as j, type AdapterBaseOptions as k, type AdapterIntrospectOptions as l, type AdapterQueryOptions as m, type AdapterInsertOptions as n, type AdapterUpdateOptions as o, type AdapterDeleteOptions as p, type AdapterIntrospectResult as q, type Schema as r, type DataTypeGroup as s, type ColumnFilter as t, type FilterGroup as u, type SortOrderItem as v, type SortDirection as w, type AdapterQueryResult as x, type AdapterInsertResult as y, type AdapterUpdateResult as z };
301
+ export { type Adapter as A, type BuilderRequirements as B, type Column as C, type DataType as D, type ExecuteOptions as E, type FilterOperator as F, type AdapterDeleteResult as G, createAdapterError as H, AbortError as I, getAbortResult as J, type BigIntString as K, type NumericString as N, type Query as Q, type SequenceExecutor as S, type Table as T, type Either as a, type QueryResult as b, type Executor as c, type AdapterRequirements as d, type AdapterQueryDetails as e, type AdapterDeleteDetails as f, type AdapterInsertDetails as g, type AdapterUpdateDetails as h, AdapterError as i, applyInferredRowFilters as j, type AdapterBaseOptions as k, type AdapterIntrospectOptions as l, type AdapterQueryOptions as m, type AdapterInsertOptions as n, type AdapterUpdateOptions as o, type AdapterDeleteOptions as p, type AdapterIntrospectResult as q, type Schema as r, type DataTypeGroup as s, type ColumnFilter as t, type FilterGroup as u, type SortOrderItem as v, type SortDirection as w, type AdapterQueryResult as x, type AdapterInsertResult as y, type AdapterUpdateResult as z };