@prisma/studio-core 0.0.0-dev.202506240022 → 0.0.0-dev.202506240030
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/chunk-GSTLSVFG.js +10 -0
- package/dist/chunk-P5LRZ6C2.js +10 -0
- package/dist/chunk-ZB3J55HW.js +10 -0
- package/dist/data/accelerate/index.cjs +2 -0
- package/dist/data/accelerate/index.d.cts +55 -0
- package/dist/data/accelerate/index.d.ts +55 -0
- package/dist/data/accelerate/index.js +10 -0
- package/dist/data/bff/index.cjs +2 -0
- package/dist/data/bff/index.d.cts +62 -0
- package/dist/data/bff/index.d.ts +62 -0
- package/dist/data/bff/index.js +10 -0
- package/dist/data/index.cjs +2 -0
- package/dist/data/index.d.cts +12 -0
- package/dist/data/index.d.ts +12 -0
- package/dist/data/index.js +10 -0
- package/dist/data/pglite/index.cjs +2 -0
- package/dist/data/pglite/index.d.cts +26 -0
- package/dist/data/pglite/index.d.ts +26 -0
- package/dist/data/pglite/index.js +10 -0
- package/dist/data/postgres-core/index.cjs +2 -0
- package/dist/data/postgres-core/index.d.cts +251 -0
- package/dist/data/postgres-core/index.d.ts +251 -0
- package/dist/data/postgres-core/index.js +10 -0
- package/dist/metafile-cjs.json +1 -0
- package/dist/metafile-esm.json +1 -0
- package/dist/prisma-MHPRMNLH.svg +8 -0
- package/dist/query-C7LxjwdN.d.cts +274 -0
- package/dist/query-C7LxjwdN.d.ts +274 -0
- package/dist/ui/index.cjs +419 -0
- package/dist/ui/index.css +3087 -0
- package/dist/ui/index.d.cts +101 -0
- package/dist/ui/index.d.ts +101 -0
- package/dist/ui/index.js +427 -0
- package/package.json +1 -1
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import * as ___react___ from 'react';
|
|
2
|
+
import * as ___react_dom___ from 'react-dom';
|
|
3
|
+
|
|
4
|
+
function require(mod) {
|
|
5
|
+
if (mod === 'react') return ___react___;
|
|
6
|
+
if (mod === 'react-dom') return ___react_dom___;
|
|
7
|
+
throw new Error(`Unknown module ${mod}`);
|
|
8
|
+
}
|
|
9
|
+
var g=Object.create;var e=Object.defineProperty;var h=Object.getOwnPropertyDescriptor;var i=Object.getOwnPropertyNames;var j=Object.getPrototypeOf,k=Object.prototype.hasOwnProperty;var p=(a=>typeof require<"u"?require:typeof Proxy<"u"?new Proxy(a,{get:(b,c)=>(typeof require<"u"?require:b)[c]}):a)(function(a){if(typeof require<"u")return require.apply(this,arguments);throw Error('Dynamic require of "'+a+'" is not supported')});var l=(a,b)=>()=>(a&&(b=a(a=0)),b);var q=(a,b)=>()=>(b||a((b={exports:{}}).exports,b),b.exports),r=(a,b)=>{for(var c in b)e(a,c,{get:b[c],enumerable:!0})},m=(a,b,c,f)=>{if(b&&typeof b=="object"||typeof b=="function")for(let d of i(b))!k.call(a,d)&&d!==c&&e(a,d,{get:()=>b[d],enumerable:!(f=h(b,d))||f.enumerable});return a};var s=(a,b,c)=>(c=a!=null?g(j(a)):{},m(b||!a||!a.__esModule?e(c,"default",{value:a,enumerable:!0}):c,a));var v,o=l(()=>{v={postgres:{encoded:"ZGF0YXNvdXJjZSBkYiB7CiAgICBwcm92aWRlciA9ICJwb3N0Z3JlcyIKICAgIHVybCAgICAgID0gZW52KCJEQVRBQkFTRV9VUkwiKQp9CiAgICAKZ2VuZXJhdG9yIGNsaWVudCB7CiAgICBwcm92aWRlciA9ICJwcmlzbWEtY2xpZW50LWpzIgp9",hash:"54195896aeafa3318ca33f5a8bb44c6b4d89c368cb15288f3bd5ace35a3f9227"}}});export{p as a,q as b,r as c,s as d,o as e,v as f};
|
|
10
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiPGRlZmluZTpBQ0NFTEVSQVRFX1NDSEVNQV9CWV9QUk9WSURFUj4iXSwKICAic291cmNlc0NvbnRlbnQiOiBbIiJdLAogICJtYXBwaW5ncyI6ICI7Ozs7Ozs7OzIxQkFBQSxJQUFBQSxFQUFBQyxFQUFBQyxFQUFBLEtBQUFGLEVBQUEsQ0FBQyxTQUFXLENBQUMsUUFBVSwyTEFBMkwsS0FBTyxrRUFBa0UsQ0FBQyIsCiAgIm5hbWVzIjogWyJkZWZpbmVfQUNDRUxFUkFURV9TQ0hFTUFfQllfUFJPVklERVJfZGVmYXVsdCIsICJpbml0X2RlZmluZV9BQ0NFTEVSQVRFX1NDSEVNQV9CWV9QUk9WSURFUiIsICJfX2VzbU1pbiJdCn0K
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import * as ___react___ from 'react';
|
|
2
|
+
import * as ___react_dom___ from 'react-dom';
|
|
3
|
+
|
|
4
|
+
function require(mod) {
|
|
5
|
+
if (mod === 'react') return ___react___;
|
|
6
|
+
if (mod === 'react-dom') return ___react_dom___;
|
|
7
|
+
throw new Error(`Unknown module ${mod}`);
|
|
8
|
+
}
|
|
9
|
+
import{a as d,b as E,c as D,d as S,e as g,f as T,h as R}from"./chunk-GSTLSVFG.js";import{e as p}from"./chunk-P5LRZ6C2.js";p();p();p();function m(n){let{error:s,query:a}=n,e=s;return e.query=a,[e]}p();var B={bool:{group:"boolean"},boolean:{group:"boolean"},bytea:{group:"string"},char:{group:"string"},citext:{group:"string"},date:{group:"datetime"},interval:{group:"string"},name:{group:"string"},varchar:{group:"string"},text:{group:"string"},time:{group:"time"},timestamp:{group:"datetime"},timestamptz:{group:"datetime"},"timestamp without time zone":{group:"datetime"},"timestamp with time zone":{group:"datetime"},timetz:{group:"time"},"time without time zone":{group:"time"},"time with time zone":{group:"datetime"},uuid:{group:"string"},int2:{group:"numeric"},int4:{group:"numeric"},int8:{group:"numeric"},smallint:{group:"numeric"},integer:{group:"numeric"},bigint:{group:"numeric"},decimal:{group:"numeric"},numeric:{group:"numeric"},real:{group:"numeric"},float4:{group:"numeric"},float8:{group:"numeric"},"double precision":{group:"numeric"},json:{group:"json"},jsonb:{group:"json"}};p();p();function y(n){return S({...n,Adapter:D,QueryCompiler:E})}function I(n,s){let{table:a,rows:e}=n,{name:r,schema:t,columns:o}=a,i=y(s),u=Object.keys(o);return g(i.withSchema(t).insertInto(r).values(R("insert",e,o)).returning(u).returning(l=>l.cast("ctid","text").as("ctid")))}function q(n,s){let{pageIndex:a,pageSize:e,sortOrder:r,table:{name:t,schema:o,columns:i},filter:u={kind:"FilterGroup",after:"and",filters:[]}}=n,l=y(s),_=Object.keys(i),h=l.withSchema(o).selectFrom(t).select(c=>c.cast(c.fn.coalesce(c.fn.countAll(),d.lit(0)),"text").as("oid"));return g(l.with("count",()=>h).withSchema(o).selectFrom([t,"count"]).select(d.ref("count.oid").$castTo().as("oid")).select(c=>c.cast("ctid","text").as("ctid")).select(_).$call(c=>r.reduce((b,k)=>b.orderBy(k.column,k.direction),c)).where(O(u.filters,i)).limit(e).offset(d.lit(BigInt(a)*BigInt(e))))}function K(n,s){return n.kind==="ColumnFilter"?a=>{let{column:e,operator:r,value:t}=n,o=d.ref(e),i=s[e]?.datatype.group,u=i==="enum"||i==="string"?a.cast(o,"text"):o;return a(u,r,t)}:O(n.filters,s)}function O(n,s){if(n.length===0)return r=>r.lit(!0);let a=[],e=[];for(let r=0;r<n.length;r++)e.push(K(n[r],s)),(r===n.length-1||n[r].after==="or")&&(a.push(e),e=[]);return r=>{let t=a.map(o=>r.and(o.map(i=>i(r))));return r.or(t)}}function se(){return[{created_at:new Date("2025-01-26T21:56:12.345Z"),ctid:"(0,1)",deleted_at:null,id:1,name:"John Doe",oid:"2",role:"admin",name_role:"Jonn Doe - admin"},{created_at:new Date("2025-01-26T20:56:12.345Z"),ctid:"(0,2)",deleted_at:null,id:2,name:"Jane Doe",oid:"2",role:"poweruser",name_role:"Jane Doe - poweruser"}]}function C(n,s){let{changes:a,row:e,table:{columns:r,name:t,schema:o}}=n,i=y(s),u=Object.keys(r);return g(i.withSchema(o).updateTable(t).set(R("update",a,r)).$call(T([e],r)).returning(u).returning(l=>[l.cast("ctid","text").as("ctid"),l.cast(l.fn("floor",[l(l.fn("extract",[d`epoch from now()`]),"*",1e6)]),"text").as("__ps_updated_at__")]))}function N(n,s){let{rows:a,table:{columns:e,name:r,schema:t}}=n,o=y(s);return g(o.withSchema(t).deleteFrom(r).$call(T(a,e)))}p();p();function F(n){return d`(select coalesce(json_agg(agg), '[]') from ${n} as agg)`}var J="r",v="v",L=[J,v];function z(n){return g(y(n).selectFrom("pg_catalog.pg_class as cls").innerJoin("pg_catalog.pg_namespace as ns","cls.relnamespace","ns.oid").$call(M).where("cls.relkind","in",L).select(s=>["ns.nspname as schema","cls.relname as name",F(s.selectFrom("pg_catalog.pg_attribute as att").innerJoin("pg_catalog.pg_type as typ","typ.oid","att.atttypid").innerJoin("pg_catalog.pg_namespace as tns","tns.oid","typ.typnamespace").leftJoin("pg_catalog.pg_constraint as pk_con",a=>a.on("pk_con.contype","=","p").onRef("pk_con.conrelid","=","cls.oid").on(e=>e("att.attnum","=",e.fn.any("pk_con.conkey")))).leftJoin("pg_catalog.pg_constraint as fk_con",a=>a.on("fk_con.contype","=","f").onRef("fk_con.conrelid","=","cls.oid").on(e=>e("att.attnum","=",e.fn.any("fk_con.conkey")))).leftJoin("pg_catalog.pg_class as fk_cls","fk_cls.oid","fk_con.confrelid").leftJoin("pg_catalog.pg_namespace as fk_ns","fk_ns.oid","fk_cls.relnamespace").leftJoin("pg_catalog.pg_attribute as fk_att",a=>a.onRef("fk_att.attrelid","=","fk_cls.oid").on(e=>e("fk_att.attnum","=",e.fn.any("fk_con.confkey")))).whereRef("att.attrelid","=","cls.oid").where("att.attnum",">=",0).where("att.attisdropped","!=",!0).select(["att.attname as name","typ.typname as datatype","tns.nspname as datatype_schema","fk_ns.nspname as foreign_key_schema","fk_cls.relname as foreign_key_table","fk_att.attname as foreign_key_column"]).select(a=>[a("pk_con.conkey","is not",null).$castTo().as("pk"),a("att.attgenerated","!=","").$castTo().as("computed"),a("att.attnotnull","!=",!0).$castTo().as("nullable"),a.fn.coalesce(a.selectFrom("pg_catalog.pg_enum as enm").whereRef("enm.enumtypid","=","typ.oid").select(e=>e.fn.jsonAgg(e.ref("enm.enumlabel")).as("o")),d`'[]'`).as("options")])).as("columns")]))}function P(){return[{schema:"zoo",name:"animals",columns:[{name:"id",datatype:"int4",datatype_schema:"pg_catalog",pk:!0,computed:!1,options:[],nullable:!1,foreign_key_schema:null,foreign_key_table:null,foreign_key_column:null},{name:"name",datatype:"text",datatype_schema:"pg_catalog",pk:!1,computed:!1,options:[],nullable:!0,foreign_key_schema:null,foreign_key_table:null,foreign_key_column:null}]},{schema:"public",name:"users",columns:[{name:"id",datatype:"int4",datatype_schema:"pg_catalog",pk:!0,computed:!1,options:[],nullable:!1,foreign_key_schema:null,foreign_key_table:null,foreign_key_column:null},{name:"created_at",datatype:"timestamp",datatype_schema:"pg_catalog",pk:!1,computed:!1,options:[],nullable:!0,foreign_key_schema:null,foreign_key_table:null,foreign_key_column:null},{name:"deleted_at",datatype:"timestamp",datatype_schema:"pg_catalog",pk:!1,computed:!1,options:[],nullable:!0,foreign_key_schema:null,foreign_key_table:null,foreign_key_column:null},{name:"role",datatype:"varchar",datatype_schema:"pg_catalog",pk:!1,computed:!1,options:[],nullable:!0,foreign_key_schema:null,foreign_key_table:null,foreign_key_column:null},{name:"name",datatype:"varchar",datatype_schema:"pg_catalog",pk:!1,computed:!1,options:[],nullable:!0,foreign_key_schema:null,foreign_key_table:null,foreign_key_column:null},{name:"name_role",datatype:"text",datatype_schema:"pg_catalog",pk:!1,computed:!0,options:[],nullable:!1,foreign_key_schema:null,foreign_key_table:null,foreign_key_column:null}]},{schema:"public",name:"composite_pk",columns:[{name:"id",datatype:"uuid",datatype_schema:"pg_catalog",pk:!0,computed:!1,options:[],nullable:!1,foreign_key_schema:null,foreign_key_table:null,foreign_key_column:null},{name:"name",datatype:"text",datatype_schema:"pg_catalog",pk:!0,computed:!1,options:[],nullable:!0,foreign_key_schema:null,foreign_key_table:null,foreign_key_column:null},{name:"created_at",datatype:"timestamp",datatype_schema:"pg_catalog",pk:!1,computed:!1,options:[],nullable:!0,foreign_key_schema:null,foreign_key_table:null,foreign_key_column:null}]}]}function j(){let n=y();return g(n.selectNoFrom(n.fn("current_setting",[d.lit("timezone")]).as("timezone")))}function G(){return[{timezone:"UTC"}]}function M(n){return n.where("ns.nspname","!~","^pg_").where("ns.nspname","!=","information_schema")}function xe(n){let{executor:s,...a}=n;return{defaultSchema:"public",async introspect(e){try{let r=z(a),t=j(),[[o,i],[u,l]]=await Promise.all([s.execute(r,e),s.execute(t,e)]);if(o)return m({error:o,query:r});if(u)return m({error:u,query:t});let _=l[0]?.timezone;return _?[null,U({tables:i,timezone:_,query:r})]:m({error:new Error("Timezone not found"),query:t})}catch(r){return m({error:r})}},async query(e,r){try{let t=q(e,a),[o,i]=await s.execute(t,r);return o?m({error:o,query:t}):[null,{filteredRowCount:i[0]?.oid||"0",rows:i,query:t}]}catch(t){return m({error:t})}},async insert(e,r){try{let t=I(e,a),[o,i]=await s.execute(t,r);return o?m({error:o,query:t}):[null,{rows:i,query:t}]}catch(t){return m({error:t})}},async update(e,r){try{let t=C(e,a),[o,i]=await s.execute(t,r);if(o)return m({error:o,query:t});let[u]=i;return u?[null,{row:u,query:t}]:m({error:new Error("Update failed"),query:t})}catch(t){return m({error:t})}},async delete(e,r){try{let t=N(e,a),[o]=await s.execute(t,r);return o?m({error:o,query:t}):[null,{...e,query:t}]}catch(t){return m({error:t})}}}}function U(n){let{tables:s,timezone:a,query:e}=n;return s.reduce((r,t)=>{let{schemas:o}=r,{columns:i,name:u,schema:l}=t,_=i.reduce((h,c)=>{let{datatype:b,datatype_schema:k,name:w,options:Q,nullable:$}=c,A=b.startsWith("_"),x=A?b.slice(1):b;return{...h,[w]:{datatype:{...B[x]||{group:Q.length>0?"enum":"raw"},isArray:A,isNative:k==="pg_catalog",name:A?`${x}[]`:x,options:Q,schema:k},isComputed:c.computed,isInPrimaryKey:c.pk,name:w,nullable:$,schema:l,table:u,fkSchema:c.foreign_key_schema,fkTable:c.foreign_key_table,fkColumn:c.foreign_key_column}}},{});return o[l]===void 0&&(o[l]={name:l,tables:{}}),o[l].tables[u]={columns:_,name:u,schema:l},r},{schemas:{public:{tables:{},name:"public"}},timezone:a,filterOperators:W,query:e})}var W=["=","!=",">",">=","<","<=","is","is not","like","not like","ilike","not ilike"];function Te(){let n=P(),[{timezone:s}]=G();return U({tables:n,timezone:s,query:{parameters:[],sql:"<mocked>"}})}export{I as a,q as b,se as c,C as d,N as e,z as f,P as g,j as h,G as i,xe as j,Te as k};
|
|
10
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vZGF0YS9wb3N0Z3Jlcy1jb3JlL2luZGV4LnRzIiwgIi4uL2RhdGEvcG9zdGdyZXMtY29yZS9hZGFwdGVyLnRzIiwgIi4uL2RhdGEvYWRhcHRlci50cyIsICIuLi9kYXRhL3Bvc3RncmVzLWNvcmUvZGF0YXR5cGUudHMiLCAiLi4vZGF0YS9wb3N0Z3Jlcy1jb3JlL2RtbC50cyIsICIuLi9kYXRhL3Bvc3RncmVzLWNvcmUvYnVpbGRlci50cyIsICIuLi9kYXRhL3Bvc3RncmVzLWNvcmUvaW50cm9zcGVjdGlvbi50cyIsICIuLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0va3lzZWx5QDAuMjguMi9ub2RlX21vZHVsZXMva3lzZWx5L2Rpc3QvZXNtL2hlbHBlcnMvcG9zdGdyZXMuanMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbImV4cG9ydCAqIGZyb20gXCIuL2FkYXB0ZXJcIjtcbmV4cG9ydCAqIGZyb20gXCIuL2RtbFwiO1xuZXhwb3J0ICogZnJvbSBcIi4vaW50cm9zcGVjdGlvblwiO1xuIiwgImltcG9ydCB7XG4gIHR5cGUgQWRhcHRlcixcbiAgdHlwZSBBZGFwdGVyRGVsZXRlUmVzdWx0LFxuICB0eXBlIEFkYXB0ZXJFcnJvcixcbiAgdHlwZSBBZGFwdGVySW5zZXJ0UmVzdWx0LFxuICB0eXBlIEFkYXB0ZXJJbnRyb3NwZWN0UmVzdWx0LFxuICB0eXBlIEFkYXB0ZXJRdWVyeVJlc3VsdCxcbiAgdHlwZSBBZGFwdGVyVXBkYXRlUmVzdWx0LFxuICB0eXBlIENvbHVtbixcbiAgY3JlYXRlQWRhcHRlckVycm9yLFxuICB0eXBlIEZpbHRlck9wZXJhdG9yLFxuICB0eXBlIFRhYmxlLFxufSBmcm9tIFwiLi4vYWRhcHRlclwiO1xuaW1wb3J0IHR5cGUgeyBFeGVjdXRvciB9IGZyb20gXCIuLi9leGVjdXRvclwiO1xuaW1wb3J0IHR5cGUgeyBRdWVyeSwgUXVlcnlSZXN1bHQgfSBmcm9tIFwiLi4vcXVlcnlcIjtcbmltcG9ydCB0eXBlIHsgRWl0aGVyIH0gZnJvbSBcIi4uL3R5cGUtdXRpbHNcIjtcbmltcG9ydCB7IFBPU1RHUkVTUUxfREFUQV9UWVBFU19UT19NRVRBREFUQSB9IGZyb20gXCIuL2RhdGF0eXBlXCI7XG5pbXBvcnQgeyBnZXREZWxldGVRdWVyeSwgZ2V0SW5zZXJ0UXVlcnksIGdldFNlbGVjdFF1ZXJ5LCBnZXRVcGRhdGVRdWVyeSB9IGZyb20gXCIuL2RtbFwiO1xuaW1wb3J0IHsgZ2V0VGFibGVzUXVlcnksIGdldFRpbWV6b25lUXVlcnksIG1vY2tUYWJsZXNRdWVyeSwgbW9ja1RpbWV6b25lUXVlcnkgfSBmcm9tIFwiLi9pbnRyb3NwZWN0aW9uXCI7XG5cbmV4cG9ydCBpbnRlcmZhY2UgUG9zdGdyZXNBZGFwdGVyUmVxdWlyZW1lbnRzIHtcbiAgZXhlY3V0b3I6IEV4ZWN1dG9yO1xuICBub1BhcmFtZXRlcnM/OiBib29sZWFuO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlUG9zdGdyZXNBZGFwdGVyKHJlcXVpcmVtZW50czogUG9zdGdyZXNBZGFwdGVyUmVxdWlyZW1lbnRzKTogQWRhcHRlciB7XG4gIGNvbnN0IHsgZXhlY3V0b3IsIC4uLm90aGVyUmVxdWlyZW1lbnRzIH0gPSByZXF1aXJlbWVudHM7XG5cbiAgcmV0dXJuIHtcbiAgICBkZWZhdWx0U2NoZW1hOiBcInB1YmxpY1wiLFxuICAgIGFzeW5jIGludHJvc3BlY3Qob3B0aW9ucyk6IFByb21pc2U8RWl0aGVyPEFkYXB0ZXJFcnJvciwgQWRhcHRlckludHJvc3BlY3RSZXN1bHQ+PiB7XG4gICAgICB0cnkge1xuICAgICAgICBjb25zdCB0YWJsZXNRdWVyeSA9IGdldFRhYmxlc1F1ZXJ5KG90aGVyUmVxdWlyZW1lbnRzKTtcbiAgICAgICAgY29uc3QgdGltZXpvbmVRdWVyeSA9IGdldFRpbWV6b25lUXVlcnkoKTtcblxuICAgICAgICBjb25zdCBbW3RhYmxlc0Vycm9yLCB0YWJsZXNdLCBbdGltZXpvbmVFcnJvciwgdGltZXpvbmVzXV0gPSBhd2FpdCBQcm9taXNlLmFsbChbXG4gICAgICAgICAgZXhlY3V0b3IuZXhlY3V0ZSh0YWJsZXNRdWVyeSwgb3B0aW9ucyksXG4gICAgICAgICAgZXhlY3V0b3IuZXhlY3V0ZSh0aW1lem9uZVF1ZXJ5LCBvcHRpb25zKSxcbiAgICAgICAgXSk7XG5cbiAgICAgICAgaWYgKHRhYmxlc0Vycm9yKSB7XG4gICAgICAgICAgcmV0dXJuIGNyZWF0ZUFkYXB0ZXJFcnJvcih7IGVycm9yOiB0YWJsZXNFcnJvciwgcXVlcnk6IHRhYmxlc1F1ZXJ5IH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRpbWV6b25lRXJyb3IpIHtcbiAgICAgICAgICByZXR1cm4gY3JlYXRlQWRhcHRlckVycm9yKHsgZXJyb3I6IHRpbWV6b25lRXJyb3IsIHF1ZXJ5OiB0aW1lem9uZVF1ZXJ5IH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgdGltZXpvbmUgPSB0aW1lem9uZXNbMF0/LnRpbWV6b25lO1xuXG4gICAgICAgIGlmICghdGltZXpvbmUpIHtcbiAgICAgICAgICByZXR1cm4gY3JlYXRlQWRhcHRlckVycm9yKHsgZXJyb3I6IG5ldyBFcnJvcihcIlRpbWV6b25lIG5vdCBmb3VuZFwiKSwgcXVlcnk6IHRpbWV6b25lUXVlcnkgfSk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gW251bGwsIGNyZWF0ZUludHJvc3BlY3Rpb24oeyB0YWJsZXMsIHRpbWV6b25lLCBxdWVyeTogdGFibGVzUXVlcnkgfSldO1xuICAgICAgfSBjYXRjaCAoZXJyb3I6IHVua25vd24pIHtcbiAgICAgICAgLy8gVE9ETzogaGFuZGxlIHByb3Blcmx5XG4gICAgICAgIHJldHVybiBjcmVhdGVBZGFwdGVyRXJyb3IoeyBlcnJvcjogZXJyb3IgYXMgRXJyb3IgfSk7XG4gICAgICB9XG4gICAgfSxcblxuICAgIGFzeW5jIHF1ZXJ5KGRldGFpbHMsIG9wdGlvbnMpOiBQcm9taXNlPEVpdGhlcjxBZGFwdGVyRXJyb3IsIEFkYXB0ZXJRdWVyeVJlc3VsdD4+IHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IHF1ZXJ5ID0gZ2V0U2VsZWN0UXVlcnkoZGV0YWlscywgb3RoZXJSZXF1aXJlbWVudHMpO1xuICAgICAgICBjb25zdCBbZXJyb3IsIHJlc3VsdHNdID0gYXdhaXQgZXhlY3V0b3IuZXhlY3V0ZShxdWVyeSwgb3B0aW9ucyk7XG5cbiAgICAgICAgaWYgKGVycm9yKSB7XG4gICAgICAgICAgcmV0dXJuIGNyZWF0ZUFkYXB0ZXJFcnJvcih7IGVycm9yLCBxdWVyeSB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBbbnVsbCwgeyBmaWx0ZXJlZFJvd0NvdW50OiByZXN1bHRzWzBdPy5vaWQgfHwgXCIwXCIsIHJvd3M6IHJlc3VsdHMsIHF1ZXJ5IH1dO1xuICAgICAgfSBjYXRjaCAoZXJyb3I6IHVua25vd24pIHtcbiAgICAgICAgLy8gVE9ETzogaGFuZGxlIHByb3Blcmx5XG4gICAgICAgIHJldHVybiBjcmVhdGVBZGFwdGVyRXJyb3IoeyBlcnJvcjogZXJyb3IgYXMgRXJyb3IgfSk7XG4gICAgICB9XG4gICAgfSxcblxuICAgIGFzeW5jIGluc2VydChkZXRhaWxzLCBvcHRpb25zKTogUHJvbWlzZTxFaXRoZXI8QWRhcHRlckVycm9yLCBBZGFwdGVySW5zZXJ0UmVzdWx0Pj4ge1xuICAgICAgdHJ5IHtcbiAgICAgICAgY29uc3QgcXVlcnkgPSBnZXRJbnNlcnRRdWVyeShkZXRhaWxzLCBvdGhlclJlcXVpcmVtZW50cyk7XG4gICAgICAgIGNvbnN0IFtlcnJvciwgcm93c10gPSBhd2FpdCBleGVjdXRvci5leGVjdXRlKHF1ZXJ5LCBvcHRpb25zKTtcblxuICAgICAgICBpZiAoZXJyb3IpIHtcbiAgICAgICAgICByZXR1cm4gY3JlYXRlQWRhcHRlckVycm9yKHsgZXJyb3IsIHF1ZXJ5IH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIFtudWxsLCB7IHJvd3MsIHF1ZXJ5IH1dO1xuICAgICAgfSBjYXRjaCAoZXJyb3I6IHVua25vd24pIHtcbiAgICAgICAgcmV0dXJuIGNyZWF0ZUFkYXB0ZXJFcnJvcih7IGVycm9yOiBlcnJvciBhcyBFcnJvciB9KTtcbiAgICAgIH1cbiAgICB9LFxuXG4gICAgYXN5bmMgdXBkYXRlKGRldGFpbHMsIG9wdGlvbnMpOiBQcm9taXNlPEVpdGhlcjxBZGFwdGVyRXJyb3IsIEFkYXB0ZXJVcGRhdGVSZXN1bHQ+PiB7XG4gICAgICB0cnkge1xuICAgICAgICBjb25zdCBxdWVyeSA9IGdldFVwZGF0ZVF1ZXJ5KGRldGFpbHMsIG90aGVyUmVxdWlyZW1lbnRzKTtcbiAgICAgICAgY29uc3QgW2Vycm9yLCByZXN1bHRzXSA9IGF3YWl0IGV4ZWN1dG9yLmV4ZWN1dGUocXVlcnksIG9wdGlvbnMpO1xuXG4gICAgICAgIGlmIChlcnJvcikge1xuICAgICAgICAgIHJldHVybiBjcmVhdGVBZGFwdGVyRXJyb3IoeyBlcnJvciwgcXVlcnkgfSk7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBbcm93XSA9IHJlc3VsdHM7XG5cbiAgICAgICAgaWYgKCFyb3cpIHtcbiAgICAgICAgICAvLyBUT0RPOiBjdXN0b20gZXJyb3I/XG4gICAgICAgICAgcmV0dXJuIGNyZWF0ZUFkYXB0ZXJFcnJvcih7IGVycm9yOiBuZXcgRXJyb3IoXCJVcGRhdGUgZmFpbGVkXCIpLCBxdWVyeSB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBbbnVsbCwgeyByb3csIHF1ZXJ5IH1dO1xuICAgICAgfSBjYXRjaCAoZXJyb3I6IHVua25vd24pIHtcbiAgICAgICAgcmV0dXJuIGNyZWF0ZUFkYXB0ZXJFcnJvcih7IGVycm9yOiBlcnJvciBhcyBFcnJvciB9KTtcbiAgICAgIH1cbiAgICB9LFxuICAgIGFzeW5jIGRlbGV0ZShkZXRhaWxzLCBvcHRpb25zKTogUHJvbWlzZTxFaXRoZXI8QWRhcHRlckVycm9yLCBBZGFwdGVyRGVsZXRlUmVzdWx0Pj4ge1xuICAgICAgdHJ5IHtcbiAgICAgICAgY29uc3QgcXVlcnkgPSBnZXREZWxldGVRdWVyeShkZXRhaWxzLCBvdGhlclJlcXVpcmVtZW50cyk7XG4gICAgICAgIGNvbnN0IFtlcnJvcl0gPSBhd2FpdCBleGVjdXRvci5leGVjdXRlKHF1ZXJ5LCBvcHRpb25zKTtcblxuICAgICAgICBpZiAoZXJyb3IpIHtcbiAgICAgICAgICByZXR1cm4gY3JlYXRlQWRhcHRlckVycm9yKHsgZXJyb3IsIHF1ZXJ5IH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIFtudWxsLCB7IC4uLmRldGFpbHMsIHF1ZXJ5IH1dO1xuICAgICAgfSBjYXRjaCAoZXJyb3I6IHVua25vd24pIHtcbiAgICAgICAgcmV0dXJuIGNyZWF0ZUFkYXB0ZXJFcnJvcih7IGVycm9yOiBlcnJvciBhcyBFcnJvciB9KTtcbiAgICAgIH1cbiAgICB9LFxuICB9O1xufVxuXG5mdW5jdGlvbiBjcmVhdGVJbnRyb3NwZWN0aW9uKGFyZ3M6IHsgdGFibGVzOiBRdWVyeVJlc3VsdDx0eXBlb2YgZ2V0VGFibGVzUXVlcnk+OyB0aW1lem9uZTogc3RyaW5nOyBxdWVyeTogUXVlcnkgfSkge1xuICBjb25zdCB7IHRhYmxlcywgdGltZXpvbmUsIHF1ZXJ5IH0gPSBhcmdzO1xuXG4gIHJldHVybiB0YWJsZXMucmVkdWNlKFxuICAgIChyZXN1bHQsIHJvdykgPT4ge1xuICAgICAgY29uc3QgeyBzY2hlbWFzIH0gPSByZXN1bHQ7XG4gICAgICBjb25zdCB7IGNvbHVtbnMsIG5hbWU6IHRhYmxlTmFtZSwgc2NoZW1hIH0gPSByb3c7XG5cbiAgICAgIGNvbnN0IGNvbHVtbnNSZWNvcmQgPSBjb2x1bW5zLnJlZHVjZShcbiAgICAgICAgKGNvbHVtbnMsIGNvbHVtbikgPT4ge1xuICAgICAgICAgIGNvbnN0IHsgZGF0YXR5cGUsIGRhdGF0eXBlX3NjaGVtYSwgbmFtZTogY29sdW1uTmFtZSwgb3B0aW9ucywgbnVsbGFibGUgfSA9IGNvbHVtbjtcblxuICAgICAgICAgIGNvbnN0IGlzQXJyYXkgPSBkYXRhdHlwZS5zdGFydHNXaXRoKFwiX1wiKTtcbiAgICAgICAgICBjb25zdCBzdHJpcHBlZERhdGFUeXBlID0gaXNBcnJheSA/IGRhdGF0eXBlLnNsaWNlKDEpIDogZGF0YXR5cGU7XG5cbiAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgLi4uY29sdW1ucyxcbiAgICAgICAgICAgIFtjb2x1bW5OYW1lXToge1xuICAgICAgICAgICAgICBkYXRhdHlwZToge1xuICAgICAgICAgICAgICAgIC4uLihQT1NUR1JFU1FMX0RBVEFfVFlQRVNfVE9fTUVUQURBVEFbc3RyaXBwZWREYXRhVHlwZV0gfHwge1xuICAgICAgICAgICAgICAgICAgZ3JvdXA6IG9wdGlvbnMubGVuZ3RoID4gMCA/IFwiZW51bVwiIDogXCJyYXdcIixcbiAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICBpc0FycmF5LFxuICAgICAgICAgICAgICAgIGlzTmF0aXZlOiBkYXRhdHlwZV9zY2hlbWEgPT09IFwicGdfY2F0YWxvZ1wiLFxuICAgICAgICAgICAgICAgIG5hbWU6IGlzQXJyYXkgPyBgJHtzdHJpcHBlZERhdGFUeXBlfVtdYCA6IHN0cmlwcGVkRGF0YVR5cGUsXG4gICAgICAgICAgICAgICAgb3B0aW9ucyxcbiAgICAgICAgICAgICAgICBzY2hlbWE6IGRhdGF0eXBlX3NjaGVtYSxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgaXNDb21wdXRlZDogY29sdW1uLmNvbXB1dGVkLFxuICAgICAgICAgICAgICBpc0luUHJpbWFyeUtleTogY29sdW1uLnBrLFxuICAgICAgICAgICAgICBuYW1lOiBjb2x1bW5OYW1lLFxuICAgICAgICAgICAgICBudWxsYWJsZSxcbiAgICAgICAgICAgICAgc2NoZW1hLFxuICAgICAgICAgICAgICB0YWJsZTogdGFibGVOYW1lLFxuICAgICAgICAgICAgICBma1NjaGVtYTogY29sdW1uLmZvcmVpZ25fa2V5X3NjaGVtYSxcbiAgICAgICAgICAgICAgZmtUYWJsZTogY29sdW1uLmZvcmVpZ25fa2V5X3RhYmxlLFxuICAgICAgICAgICAgICBma0NvbHVtbjogY29sdW1uLmZvcmVpZ25fa2V5X2NvbHVtbixcbiAgICAgICAgICAgIH0gYXMgY29uc3Qgc2F0aXNmaWVzIENvbHVtbixcbiAgICAgICAgICB9O1xuICAgICAgICB9LFxuICAgICAgICB7fSBhcyBUYWJsZVtcImNvbHVtbnNcIl0sXG4gICAgICApO1xuXG4gICAgICBpZiAoc2NoZW1hc1tzY2hlbWFdID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgc2NoZW1hc1tzY2hlbWFdID0ge1xuICAgICAgICAgIG5hbWU6IHNjaGVtYSxcbiAgICAgICAgICB0YWJsZXM6IHt9LFxuICAgICAgICB9O1xuICAgICAgfVxuXG4gICAgICBzY2hlbWFzW3NjaGVtYV0udGFibGVzW3RhYmxlTmFtZV0gPSB7XG4gICAgICAgIGNvbHVtbnM6IGNvbHVtbnNSZWNvcmQsXG4gICAgICAgIG5hbWU6IHRhYmxlTmFtZSxcbiAgICAgICAgc2NoZW1hLFxuICAgICAgfTtcblxuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9LFxuICAgIHtcbiAgICAgIHNjaGVtYXM6IHsgcHVibGljOiB7IHRhYmxlczoge30sIG5hbWU6IFwicHVibGljXCIgfSB9LFxuICAgICAgdGltZXpvbmUsXG4gICAgICBmaWx0ZXJPcGVyYXRvcnMsXG4gICAgICBxdWVyeSxcbiAgICB9IHNhdGlzZmllcyBBZGFwdGVySW50cm9zcGVjdFJlc3VsdCBhcyBBZGFwdGVySW50cm9zcGVjdFJlc3VsdCxcbiAgKTtcbn1cblxuY29uc3QgZmlsdGVyT3BlcmF0b3JzID0gW1xuICBcIj1cIixcbiAgXCIhPVwiLFxuICBcIj5cIixcbiAgXCI+PVwiLFxuICBcIjxcIixcbiAgXCI8PVwiLFxuICBcImlzXCIsXG4gIFwiaXMgbm90XCIsXG4gIFwibGlrZVwiLFxuICBcIm5vdCBsaWtlXCIsXG4gIFwiaWxpa2VcIixcbiAgXCJub3QgaWxpa2VcIixcbl0gc2F0aXNmaWVzIEZpbHRlck9wZXJhdG9yW107XG5cbi8qKlxuICogRm9yIHRlc3RpbmcgcHVycG9zZXMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBtb2NrSW50cm9zcGVjdCgpIHtcbiAgY29uc3QgdGFibGVzID0gbW9ja1RhYmxlc1F1ZXJ5KCk7XG4gIGNvbnN0IFt7IHRpbWV6b25lIH1dID0gbW9ja1RpbWV6b25lUXVlcnkoKTtcbiAgY29uc3QgcXVlcnkgPSB7IHBhcmFtZXRlcnM6IFtdLCBzcWw6IFwiPG1vY2tlZD5cIiB9IGFzIFF1ZXJ5O1xuXG4gIHJldHVybiBjcmVhdGVJbnRyb3NwZWN0aW9uKHsgdGFibGVzLCB0aW1lem9uZSwgcXVlcnkgfSkgYXMge1xuICAgIC8vIGJlc3QgZWZmb3J0LCBubyBuZWVkIGdvIG92ZXJib2FyZC5cbiAgICBzY2hlbWFzOiB7XG4gICAgICBbSyBpbiAodHlwZW9mIHRhYmxlcylbbnVtYmVyXVtcInNjaGVtYVwiXV06IHtcbiAgICAgICAgbmFtZTogSztcbiAgICAgICAgdGFibGVzOiB7XG4gICAgICAgICAgW1QgaW4gKHR5cGVvZiB0YWJsZXMpW251bWJlcl1bXCJuYW1lXCJdXTogVGFibGU7XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gICAgdGltZXpvbmU6IHR5cGVvZiB0aW1lem9uZTtcbiAgICBmaWx0ZXJPcGVyYXRvcnM6IEZpbHRlck9wZXJhdG9yW107XG4gICAgcXVlcnk6IFF1ZXJ5O1xuICB9IHNhdGlzZmllcyBBZGFwdGVySW50cm9zcGVjdFJlc3VsdDtcbn1cbiIsICJpbXBvcnQgeyBRdWVyeSB9IGZyb20gXCIuL3F1ZXJ5XCI7XG5pbXBvcnQgdHlwZSB7IEJpZ0ludFN0cmluZywgRWl0aGVyLCBOdW1lcmljU3RyaW5nIH0gZnJvbSBcIi4vdHlwZS11dGlsc1wiO1xuXG5leHBvcnQgaW50ZXJmYWNlIEFkYXB0ZXIge1xuICAvKipcbiAgICogVGhlIHNjaGVtYSBzdHVkaW8gd2lsbCBjaG9vc2UgYnkgZGVmYXVsdC5cbiAgICpcbiAgICogZS5nLiBgcHVibGljYCBmb3IgUG9zdGdyZVNRTFxuICAgKi9cbiAgcmVhZG9ubHkgZGVmYXVsdFNjaGVtYT86IHN0cmluZztcblxuICAvKipcbiAgICogSW50cm9zcGVjdHMgdGhlIGRhdGFiYXNlIGFuZCByZXR1cm5zIHN0cnVjdHVyZWQgaW5mb3JtYXRpb24gYWJvdXQgdGhlIHNjaGVtYXMsIHRhYmxlcywgZXRjLlxuICAgKlxuICAgKiBAcGFyYW0gb3B0aW9ucyAtIE9wdGlvbnMgZm9yIHRoZSBpbnRyb3NwZWN0aW9uIHJlcXVlc3QuXG4gICAqL1xuICBpbnRyb3NwZWN0KG9wdGlvbnM6IEFkYXB0ZXJJbnRyb3NwZWN0T3B0aW9ucyk6IFByb21pc2U8RWl0aGVyPEFkYXB0ZXJFcnJvciwgQWRhcHRlckludHJvc3BlY3RSZXN1bHQ+PjtcblxuICAvKipcbiAgICogRXhlY3V0ZXMgYSBzdHJ1Y3R1cmVkIHF1ZXJ5IGFnYWluc3QgdGhlIGRhdGFiYXNlLlxuICAgKi9cbiAgcXVlcnkoZGV0YWlsczogQWRhcHRlclF1ZXJ5RGV0YWlscywgb3B0aW9uczogQWRhcHRlclF1ZXJ5T3B0aW9ucyk6IFByb21pc2U8RWl0aGVyPEFkYXB0ZXJFcnJvciwgQWRhcHRlclF1ZXJ5UmVzdWx0Pj47XG5cbiAgLyoqXG4gICAqIEluc2VydHMgYSBzaW5nbGUgcm93IGludG8gdGhlIGRhdGFiYXNlLlxuICAgKi9cbiAgaW5zZXJ0KFxuICAgIGRldGFpbHM6IEFkYXB0ZXJJbnNlcnREZXRhaWxzLFxuICAgIG9wdGlvbnM6IEFkYXB0ZXJJbnNlcnRPcHRpb25zLFxuICApOiBQcm9taXNlPEVpdGhlcjxBZGFwdGVyRXJyb3IsIEFkYXB0ZXJJbnNlcnRSZXN1bHQ+PjtcblxuICAvKipcbiAgICogVXBkYXRlcyBhIGdpdmVuIHJvdyBpbiB0aGUgZGF0YWJhc2Ugd2l0aCBnaXZlbiBjaGFuZ2VzLlxuICAgKi9cbiAgdXBkYXRlKFxuICAgIGRldGFpbHM6IEFkYXB0ZXJVcGRhdGVEZXRhaWxzLFxuICAgIG9wdGlvbnM6IEFkYXB0ZXJVcGRhdGVPcHRpb25zLFxuICApOiBQcm9taXNlPEVpdGhlcjxBZGFwdGVyRXJyb3IsIEFkYXB0ZXJVcGRhdGVSZXN1bHQ+PjtcblxuICAvKipcbiAgICogRGVsZXRlcyBnaXZlbiByb3dzIGZyb20gdGhlIGRhdGFiYXNlLlxuICAgKi9cbiAgZGVsZXRlKFxuICAgIGRldGFpbHM6IEFkYXB0ZXJEZWxldGVEZXRhaWxzLFxuICAgIG9wdGlvbnM6IEFkYXB0ZXJEZWxldGVPcHRpb25zLFxuICApOiBQcm9taXNlPEVpdGhlcjxBZGFwdGVyRXJyb3IsIEFkYXB0ZXJEZWxldGVSZXN1bHQ+Pjtcbn1cblxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1lbXB0eS1vYmplY3QtdHlwZVxuZXhwb3J0IGludGVyZmFjZSBBZGFwdGVyQmFzZU9wdGlvbnMge31cblxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1lbXB0eS1vYmplY3QtdHlwZVxuZXhwb3J0IGludGVyZmFjZSBBZGFwdGVySW50cm9zcGVjdE9wdGlvbnMgZXh0ZW5kcyBBZGFwdGVyQmFzZU9wdGlvbnMge31cblxuZXhwb3J0IGludGVyZmFjZSBBZGFwdGVyUXVlcnlPcHRpb25zIGV4dGVuZHMgQWRhcHRlckJhc2VPcHRpb25zIHtcbiAgYWJvcnRTaWduYWw6IEFib3J0U2lnbmFsO1xufVxuXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWVtcHR5LW9iamVjdC10eXBlXG5leHBvcnQgaW50ZXJmYWNlIEFkYXB0ZXJJbnNlcnRPcHRpb25zIGV4dGVuZHMgQWRhcHRlckJhc2VPcHRpb25zIHt9XG5cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZW1wdHktb2JqZWN0LXR5cGVcbmV4cG9ydCBpbnRlcmZhY2UgQWRhcHRlclVwZGF0ZU9wdGlvbnMgZXh0ZW5kcyBBZGFwdGVyQmFzZU9wdGlvbnMge31cblxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1lbXB0eS1vYmplY3QtdHlwZVxuZXhwb3J0IGludGVyZmFjZSBBZGFwdGVyRGVsZXRlT3B0aW9ucyBleHRlbmRzIEFkYXB0ZXJCYXNlT3B0aW9ucyB7fVxuXG50eXBlIFNjaGVtYU5hbWUgPSBzdHJpbmc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQWRhcHRlckludHJvc3BlY3RSZXN1bHQge1xuICBzY2hlbWFzOiBSZWNvcmQ8U2NoZW1hTmFtZSwgU2NoZW1hPjtcbiAgdGltZXpvbmU6IHN0cmluZztcbiAgZmlsdGVyT3BlcmF0b3JzOiBGaWx0ZXJPcGVyYXRvcltdO1xuICBxdWVyeTogUXVlcnk7XG59XG5cbnR5cGUgVGFibGVOYW1lID0gc3RyaW5nO1xuXG5leHBvcnQgaW50ZXJmYWNlIFNjaGVtYSB7XG4gIG5hbWU6IHN0cmluZztcbiAgdGFibGVzOiBSZWNvcmQ8VGFibGVOYW1lLCBUYWJsZT47XG59XG5cbnR5cGUgQ29sdW1uTmFtZSA9IHN0cmluZztcblxuZXhwb3J0IGludGVyZmFjZSBUYWJsZSB7XG4gIGNvbHVtbnM6IFJlY29yZDxDb2x1bW5OYW1lLCBDb2x1bW4+O1xuICBuYW1lOiBUYWJsZU5hbWU7XG4gIHNjaGVtYTogU2NoZW1hTmFtZTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBDb2x1bW4ge1xuICBkYXRhdHlwZTogRGF0YVR5cGU7XG4gIGlzQ29tcHV0ZWQ6IGJvb2xlYW47XG4gIGlzSW5QcmltYXJ5S2V5OiBib29sZWFuO1xuICBuYW1lOiBDb2x1bW5OYW1lO1xuICBudWxsYWJsZTogYm9vbGVhbjtcbiAgc2NoZW1hOiBTY2hlbWFOYW1lO1xuICB0YWJsZTogVGFibGVOYW1lO1xuICBma1NjaGVtYTogU2NoZW1hTmFtZSB8IG51bGw7XG4gIGZrQ29sdW1uOiBDb2x1bW5OYW1lIHwgbnVsbDtcbiAgZmtUYWJsZTogVGFibGVOYW1lIHwgbnVsbDtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBEYXRhVHlwZSB7XG4gIC8qKlxuICAgKiBBIHNpbXBsaWZpY2F0aW9uL25vcm1hbGl6YXRpb24gZm9yIFVJIHVzYWdlLlxuICAgKlxuICAgKiBlLmcuIHZhcmNoYXIgYW5kIGNoYXIgYXJlIHN0cmluZ3MuXG4gICAqL1xuICBncm91cDogRGF0YVR5cGVHcm91cDtcblxuICAvKipcbiAgICogSXMgdGhpcyBhIG5hdGl2ZSBhcnJheSB0eXBlP1xuICAgKi9cbiAgaXNBcnJheTogYm9vbGVhbjtcblxuICAvKipcbiAgICogSXMgYSBuYXRpdmUgZGF0YWJhc2UgZGF0YXR5cGUgb3IgYSB1c2VyLWRlZmluZWQgZGF0YXR5cGU/XG4gICAqXG4gICAqIGUuZy4gUG9zdGdyZVNRTCBlbnVtcyBhcmUgdXNlci1kZWZpbmVkIGRhdGF0eXBlcywgYnV0IGBpbnQ0YCBpcyBhIG5hdGl2ZSBkYXRhdHlwZS5cbiAgICovXG4gIGlzTmF0aXZlOiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBXaWxsIGJlIGRpc3BsYXllZCBhcy1pcy5cbiAgICovXG4gIG5hbWU6IHN0cmluZztcblxuICAvKipcbiAgICogRW51bSB2YWx1ZXMgZm9yIGVudW0gdHlwZXMuXG4gICAqL1xuICBvcHRpb25zOiBzdHJpbmdbXTtcblxuICAvKipcbiAgICogVGhlIHNjaGVtYSB0aGUgZGF0YXR5cGUgYmVsb25ncyB0by5cbiAgICovXG4gIHNjaGVtYTogc3RyaW5nO1xufVxuXG5leHBvcnQgdHlwZSBEYXRhVHlwZUdyb3VwID0gXCJzdHJpbmdcIiB8IFwiZGF0ZXRpbWVcIiB8IFwiYm9vbGVhblwiIHwgXCJlbnVtXCIgfCBcInRpbWVcIiB8IFwicmF3XCIgfCBcIm51bWVyaWNcIiB8IFwianNvblwiO1xuXG5leHBvcnQgaW50ZXJmYWNlIEFkYXB0ZXJRdWVyeURldGFpbHMge1xuICAvKipcbiAgICogWmVyby1iYXNlZCBpbmRleCBvZiB0aGUgcGFnZSB0byBmZXRjaC5cbiAgICovXG4gIHBhZ2VJbmRleDogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBNYXhpbXVtIG51bWJlciBvZiByb3dzIHRvIGZldGNoIGZyb20gdGhlIGRhdGFiYXNlLlxuICAgKi9cbiAgcGFnZVNpemU6IG51bWJlcjtcblxuICAvKipcbiAgICogU29ydCBvcmRlciBmb3IgdGhlIHF1ZXJ5LlxuICAgKi9cbiAgc29ydE9yZGVyOiBTb3J0T3JkZXJJdGVtW107XG5cbiAgLyoqXG4gICAqIFRoZSB0YWJsZSB0byBzZWxlY3QgZnJvbS5cbiAgICovXG4gIHRhYmxlOiBUYWJsZTtcblxuICAvKipcbiAgICogVGhlIGZpbHRlciB0byBiZSBhcHBsaWVkLlxuICAgKi9cbiAgZmlsdGVyPzogRmlsdGVyR3JvdXA7XG59XG5cbmV4cG9ydCB0eXBlIEZpbHRlck9wZXJhdG9yID1cbiAgfCBcIj1cIlxuICB8IFwiIT1cIlxuICB8IFwiPlwiXG4gIHwgXCI+PVwiXG4gIHwgXCI8XCJcbiAgfCBcIjw9XCJcbiAgfCBcImlzXCJcbiAgfCBcImlzIG5vdFwiXG4gIHwgXCJsaWtlXCJcbiAgfCBcIm5vdCBsaWtlXCJcbiAgfCBcImlsaWtlXCJcbiAgfCBcIm5vdCBpbGlrZVwiO1xuXG5leHBvcnQgaW50ZXJmYWNlIENvbHVtbkZpbHRlciB7XG4gIGtpbmQ6IFwiQ29sdW1uRmlsdGVyXCI7XG4gIGNvbHVtbjogc3RyaW5nO1xuICBvcGVyYXRvcjogRmlsdGVyT3BlcmF0b3I7XG4gIHZhbHVlOiB1bmtub3duO1xuICBhZnRlcjogXCJhbmRcIiB8IFwib3JcIjtcbiAgaWQ6IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBGaWx0ZXJHcm91cCB7XG4gIGtpbmQ6IFwiRmlsdGVyR3JvdXBcIjtcbiAgZmlsdGVyczogKENvbHVtbkZpbHRlciB8IEZpbHRlckdyb3VwKVtdO1xuICBhZnRlcjogXCJhbmRcIiB8IFwib3JcIjtcbiAgaWQ6IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBTb3J0T3JkZXJJdGVtIHtcbiAgLyoqXG4gICAqIFRoZSBjb2x1bW4gdG8gc29ydCBieS5cbiAgICovXG4gIGNvbHVtbjogQ29sdW1uTmFtZTtcblxuICAvKipcbiAgICogVGhlIGRpcmVjdGlvbiB0byBzb3J0IHRoZSBjb2x1bW4gYnkuXG4gICAqL1xuICBkaXJlY3Rpb246IFNvcnREaXJlY3Rpb247XG59XG5cbmV4cG9ydCB0eXBlIFNvcnREaXJlY3Rpb24gPSBcImFzY1wiIHwgXCJkZXNjXCI7XG5cbmV4cG9ydCBjbGFzcyBBZGFwdGVyRXJyb3IgZXh0ZW5kcyBFcnJvciB7XG4gIHF1ZXJ5PzogUXVlcnk7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQWRhcHRlclF1ZXJ5UmVzdWx0IHtcbiAgLyoqXG4gICAqIFRoZSB0b3RhbCBudW1iZXIgb2Ygcm93cyB0aGUgcXVlcnkgd291bGQgcmV0dXJuIGlmIG5vdCBsaW1pdGVkLlxuICAgKlxuICAgKiBJZiB0aGUgZGF0YWJhc2UgZG9lcyBub3Qgc3VwcG9ydCBjb3VudGluZyByb3dzLCB0aGlzIHNob3VsZCBiZSBzZXQgdG8gYEluZmluaXR5YC5cbiAgICovXG4gIGZpbHRlcmVkUm93Q291bnQ6IG51bWJlciB8IGJpZ2ludCB8IE51bWVyaWNTdHJpbmcgfCBCaWdJbnRTdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSByb3dzIHJldHVybmVkIGJ5IHRoZSBxdWVyeS5cbiAgICovXG4gIHJvd3M6IFJlY29yZDxDb2x1bW5OYW1lLCB1bmtub3duPltdO1xuXG4gIC8qKlxuICAgKiBUaGUgZXhlY3V0ZWQgcXVlcnkgc3RyaW5nLlxuICAgKi9cbiAgcXVlcnk6IFF1ZXJ5O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEFkYXB0ZXJJbnNlcnREZXRhaWxzIHtcbiAgLyoqXG4gICAqIFRoZSB0YWJsZSB0byBpbnNlcnQgaW50by5cbiAgICovXG4gIHRhYmxlOiBUYWJsZTtcblxuICAvKipcbiAgICogVGhlIHZhbHVlcyB0byBpbnNlcnQgaW50byB0aGUgdGFibGUuXG4gICAqIC0gVGhlIGtleXMgc2hvdWxkIG1hdGNoIHRoZSBjb2x1bW4gbmFtZXMgaW4gdGhlIHRhYmxlLlxuICAgKiAtIFRoZSB2YWx1ZXMgc2hvdWxkIGJlIHRoZSB2YWx1ZXMgdG8gaW5zZXJ0IGludG8gdGhlIHRhYmxlLlxuICAgKi9cbiAgcm93czogUmVjb3JkPHN0cmluZywgdW5rbm93bj5bXTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBBZGFwdGVySW5zZXJ0UmVzdWx0IHtcbiAgLyoqXG4gICAqIFRoZSBmcmVzaGx5IGluc2VydGVkIHJvdyBkYXRhLlxuICAgKi9cbiAgcm93czogUmVjb3JkPHN0cmluZywgdW5rbm93bj5bXTtcblxuICAvKipcbiAgICogVGhlIGV4ZWN1dGVkIHF1ZXJ5IHN0cmluZy5cbiAgICovXG4gIHF1ZXJ5OiBRdWVyeTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBBZGFwdGVyVXBkYXRlRGV0YWlscyB7XG4gIC8qKlxuICAgKiBDaGFuZ2VzIHRvIGFwcGx5IHRvIHRoZSByb3cuXG4gICAqL1xuICBjaGFuZ2VzOiBSZWNvcmQ8Q29sdW1uTmFtZSwgdW5rbm93bj47XG5cbiAgLyoqXG4gICAqIFRoZSByb3cgdG8gdXBkYXRlLlxuICAgKi9cbiAgcm93OiBSZWNvcmQ8Q29sdW1uTmFtZSwgdW5rbm93bj47XG5cbiAgLyoqXG4gICAqIFRoZSB0YWJsZSB0byB1cGRhdGUgaW4uXG4gICAqL1xuICB0YWJsZTogVGFibGU7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQWRhcHRlclVwZGF0ZVJlc3VsdCB7XG4gIC8qKlxuICAgKiBUaGUgdXBkYXRlZCByb3cgZGF0YS5cbiAgICovXG4gIHJvdzogUmVjb3JkPENvbHVtbk5hbWUsIHVua25vd24+ICYge1xuICAgIC8qKlxuICAgICAqIFdoZW4gdGhlIGNoYW5nZXMgd2VyZSBhcHBsaWVkIGluIGRhdGFiYXNlIHRpbWUuXG4gICAgICovXG4gICAgX19wc191cGRhdGVkX2F0X186IHN0cmluZyB8IG51bWJlciB8IERhdGU7XG4gIH07XG5cbiAgLyoqXG4gICAqIFRoZSBleGVjdXRlZCBxdWVyeSBzdHJpbmcuXG4gICAqL1xuICBxdWVyeTogUXVlcnk7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQWRhcHRlckRlbGV0ZURldGFpbHMge1xuICAvKipcbiAgICogVGhlIHJvd3MgdG8gZGVsZXRlLlxuICAgKi9cbiAgcm93czogUmVjb3JkPENvbHVtbk5hbWUsIHVua25vd24+W107XG5cbiAgLyoqXG4gICAqIFRoZSB0YWJsZSB0byBkZWxldGUgZnJvbS5cbiAgICovXG4gIHRhYmxlOiBUYWJsZTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBBZGFwdGVyRGVsZXRlUmVzdWx0IHtcbiAgcm93czogUmVjb3JkPENvbHVtbk5hbWUsIHVua25vd24+W107XG5cbiAgLyoqXG4gICAqIFRoZSBleGVjdXRlZCBxdWVyeSBzdHJpbmcuXG4gICAqL1xuICBxdWVyeTogUXVlcnk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVBZGFwdGVyRXJyb3IoYXJnczogeyBlcnJvcjogRXJyb3I7IHF1ZXJ5PzogUXVlcnkgfSkge1xuICBjb25zdCB7IGVycm9yLCBxdWVyeSB9ID0gYXJncztcblxuICBjb25zdCBhZGFwdGVyRXJyb3IgPSBlcnJvciBhcyBBZGFwdGVyRXJyb3I7XG5cbiAgYWRhcHRlckVycm9yLnF1ZXJ5ID0gcXVlcnk7XG5cbiAgcmV0dXJuIFthZGFwdGVyRXJyb3JdIGFzIFtBZGFwdGVyRXJyb3JdO1xufVxuIiwgImltcG9ydCB7IERhdGFUeXBlIH0gZnJvbSBcIi4uL2FkYXB0ZXJcIjtcblxuZXhwb3J0IGNvbnN0IFBPU1RHUkVTUUxfREFUQV9UWVBFU19UT19NRVRBREFUQTogUmVjb3JkPHN0cmluZywgUGljazxEYXRhVHlwZSwgXCJncm91cFwiPj4gPSB7XG4gIGJvb2w6IHtcbiAgICBncm91cDogXCJib29sZWFuXCIsXG4gIH0sXG4gIGJvb2xlYW46IHtcbiAgICBncm91cDogXCJib29sZWFuXCIsXG4gIH0sXG4gIGJ5dGVhOiB7XG4gICAgZ3JvdXA6IFwic3RyaW5nXCIsXG4gIH0sXG4gIGNoYXI6IHtcbiAgICBncm91cDogXCJzdHJpbmdcIixcbiAgfSxcbiAgY2l0ZXh0OiB7XG4gICAgZ3JvdXA6IFwic3RyaW5nXCIsXG4gIH0sXG4gIC8qKlxuICAgKiBAZXhhbXBsZSAnMjAyNS0wNC0xNCdcbiAgICovXG4gIGRhdGU6IHtcbiAgICBncm91cDogXCJkYXRldGltZVwiLFxuICB9LFxuICAvKipcbiAgICogQGV4YW1wbGUgJzEgZGF5IDIgaG91cnMnXG4gICAqL1xuICBpbnRlcnZhbDoge1xuICAgIGdyb3VwOiBcInN0cmluZ1wiLFxuICB9LFxuICBuYW1lOiB7XG4gICAgZ3JvdXA6IFwic3RyaW5nXCIsXG4gIH0sXG4gIHZhcmNoYXI6IHtcbiAgICBncm91cDogXCJzdHJpbmdcIixcbiAgfSxcbiAgdGV4dDoge1xuICAgIGdyb3VwOiBcInN0cmluZ1wiLFxuICB9LFxuICAvKipcbiAgICogc2hvcnQgZm9ybSBvZiBgdGltZSB3aXRob3V0IHRpbWUgem9uZWAuXG4gICAqXG4gICAqIEBleGFtcGxlICcxNDozMDowMCdcbiAgICovXG4gIHRpbWU6IHtcbiAgICBncm91cDogXCJ0aW1lXCIsXG4gIH0sXG4gIC8qKlxuICAgKiBzaG9ydCBmb3JtIG9mIGB0aW1lc3RhbXAgd2l0aG91dCB0aW1lIHpvbmVgLlxuICAgKlxuICAgKiBAZXhhbXBsZSAnMjAyNS0wNC0xNCAxNDozMDowMCdcbiAgICovXG4gIHRpbWVzdGFtcDoge1xuICAgIGdyb3VwOiBcImRhdGV0aW1lXCIsXG4gIH0sXG4gIC8qKlxuICAgKiBzaG9ydCBmb3JtIG9mIGB0aW1lc3RhbXAgd2l0aCB0aW1lIHpvbmVgLlxuICAgKlxuICAgKiBAZXhhbXBsZSAnMjAyNS0wNC0xNCAxNDozMDowMCswMCdcbiAgICovXG4gIHRpbWVzdGFtcHR6OiB7XG4gICAgZ3JvdXA6IFwiZGF0ZXRpbWVcIixcbiAgfSxcbiAgLyoqXG4gICAqIGxvbmcgZm9ybSBvZiBgdGltZXN0YW1wYC5cbiAgICpcbiAgICogQGV4YW1wbGUgJzIwMjUtMDQtMTQgMTQ6MzA6MDAnXG4gICAqL1xuICBcInRpbWVzdGFtcCB3aXRob3V0IHRpbWUgem9uZVwiOiB7XG4gICAgZ3JvdXA6IFwiZGF0ZXRpbWVcIixcbiAgfSxcbiAgLyoqXG4gICAqIGxvbmcgZm9ybSBvZiBgdGltZXN0YW1wdHpgLlxuICAgKlxuICAgKiBAZXhhbXBsZSAnMjAyNS0wNC0xNCAxNDozMDowMCswMCdcbiAgICovXG4gIFwidGltZXN0YW1wIHdpdGggdGltZSB6b25lXCI6IHtcbiAgICBncm91cDogXCJkYXRldGltZVwiLFxuICB9LFxuICAvKipcbiAgICogc2hvcnQgZm9ybSBvZiBgdGltZSB3aXRoIHRpbWUgem9uZWAuXG4gICAqXG4gICAqIEBleGFtcGxlICcxNDozMDowMCswMDowMCdcbiAgICovXG4gIHRpbWV0ejoge1xuICAgIGdyb3VwOiBcInRpbWVcIixcbiAgfSxcbiAgLyoqXG4gICAqIGxvbmcgZm9ybSBvZiBgdGltZWAuXG4gICAqXG4gICAqIEBleGFtcGxlICcxNDozMDowMCdcbiAgICovXG4gIFwidGltZSB3aXRob3V0IHRpbWUgem9uZVwiOiB7XG4gICAgZ3JvdXA6IFwidGltZVwiLFxuICB9LFxuICAvKipcbiAgICogbG9uZyBmb3JtIG9mIGB0aW1ldHpgLlxuICAgKlxuICAgKiBAZXhhbXBsZSAnMjAyNS0wNC0xNCAxNDozMDowMCswMCdcbiAgICovXG4gIFwidGltZSB3aXRoIHRpbWUgem9uZVwiOiB7XG4gICAgZ3JvdXA6IFwiZGF0ZXRpbWVcIixcbiAgfSxcbiAgdXVpZDoge1xuICAgIGdyb3VwOiBcInN0cmluZ1wiLFxuICB9LFxuICAvLyBOdW1lcmljIHR5cGVzXG4gIGludDI6IHtcbiAgICBncm91cDogXCJudW1lcmljXCIsXG4gIH0sXG4gIGludDQ6IHtcbiAgICBncm91cDogXCJudW1lcmljXCIsXG4gIH0sXG4gIGludDg6IHtcbiAgICBncm91cDogXCJudW1lcmljXCIsXG4gIH0sXG4gIHNtYWxsaW50OiB7XG4gICAgZ3JvdXA6IFwibnVtZXJpY1wiLFxuICB9LFxuICBpbnRlZ2VyOiB7XG4gICAgZ3JvdXA6IFwibnVtZXJpY1wiLFxuICB9LFxuICBiaWdpbnQ6IHtcbiAgICBncm91cDogXCJudW1lcmljXCIsXG4gIH0sXG4gIGRlY2ltYWw6IHtcbiAgICBncm91cDogXCJudW1lcmljXCIsXG4gIH0sXG4gIG51bWVyaWM6IHtcbiAgICBncm91cDogXCJudW1lcmljXCIsXG4gIH0sXG4gIHJlYWw6IHtcbiAgICBncm91cDogXCJudW1lcmljXCIsXG4gIH0sXG4gIGZsb2F0NDoge1xuICAgIGdyb3VwOiBcIm51bWVyaWNcIixcbiAgfSxcbiAgZmxvYXQ4OiB7XG4gICAgZ3JvdXA6IFwibnVtZXJpY1wiLFxuICB9LFxuICBcImRvdWJsZSBwcmVjaXNpb25cIjoge1xuICAgIGdyb3VwOiBcIm51bWVyaWNcIixcbiAgfSxcbiAganNvbjoge1xuICAgIGdyb3VwOiBcImpzb25cIixcbiAgfSxcbiAganNvbmI6IHtcbiAgICBncm91cDogXCJqc29uXCIsXG4gIH0sXG59O1xuIiwgImltcG9ydCB7IHR5cGUgRXhwcmVzc2lvbiwgdHlwZSBFeHByZXNzaW9uQnVpbGRlciwgc3FsLCB0eXBlIFNxbEJvb2wgfSBmcm9tIFwia3lzZWx5XCI7XG5cbmltcG9ydCB0eXBlIHtcbiAgQWRhcHRlckRlbGV0ZURldGFpbHMsXG4gIEFkYXB0ZXJJbnNlcnREZXRhaWxzLFxuICBBZGFwdGVyUXVlcnlEZXRhaWxzLFxuICBBZGFwdGVyVXBkYXRlRGV0YWlscyxcbiAgQ29sdW1uRmlsdGVyLFxuICBGaWx0ZXJHcm91cCxcbiAgVGFibGUsXG59IGZyb20gXCIuLi9hZGFwdGVyXCI7XG5pbXBvcnQgeyBhcHBseUluZmVycmVkUm93RmlsdGVycywgYXBwbHlUcmFuc2Zvcm1hdGlvbnMsIHR5cGUgQnVpbGRlclJlcXVpcmVtZW50cywgY29tcGlsZSB9IGZyb20gXCIuLi9xdWVyeVwiO1xuaW1wb3J0IHR5cGUgeyBCaWdJbnRTdHJpbmcgfSBmcm9tIFwiLi4vdHlwZS11dGlsc1wiO1xuaW1wb3J0IHsgZ2V0UG9zdGdyZVNRTEJ1aWxkZXIgfSBmcm9tIFwiLi9idWlsZGVyXCI7XG5pbXBvcnQgdHlwZSB7IG1vY2tUYWJsZXNRdWVyeSB9IGZyb20gXCIuL2ludHJvc3BlY3Rpb25cIjtcblxuLyoqXG4gKiBgY3RpZGAgaXMgYSBzeXN0ZW0gY29sdW1uIHRoYXQgcmVwcmVzZW50cyB0aGUgcGh5c2ljYWwgbG9jYXRpb24gb2YgYSByb3cgaW4gYSB0YWJsZS5cbiAqIEl0IGlzIGEgdHVwbGUgb2YgdHdvIGludGVnZXJzOiBgKGJsb2NrTnVtYmVyLCB0dXBsZUluZGV4KWAuXG4gKiBJdCBpcyB1c2VkIHRvIHVuaXF1ZWx5IGlkZW50aWZ5IGEgcm93IGluIGEgdGFibGUsIGV2ZW4gaWYgdGhlIHJvdyBoYXMgbm8gcHJpbWFyeSBrZXksIG9yIG90aGVyIHVuaXF1ZSBjb25zdHJhaW50cy5cbiAqXG4gKiBFeGFtcGxlOiAnKDAsMjMpJyByZXByZXNlbnRzIHRoZSAyNHRoIHJvdyBpbiB0aGUgZmlyc3QgYmxvY2sgb2YgdGhlIHRhYmxlLlxuICovXG5leHBvcnQgdHlwZSBDVElEYXNUZXh0ID0gYCgke251bWJlcn0sJHtudW1iZXJ9KWA7XG5cbi8qKlxuICogSW5zZXJ0cyBvbmUgb3IgbW9yZSByb3dzIGludG8gYSB0YWJsZSBhbmQgcmV0dXJucyB0aGUgaW5zZXJ0ZWQgcm93cyBhbG9uZyB3aXRoIHRoZWlyIGBjdGlkYC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldEluc2VydFF1ZXJ5KFxuICBkZXRhaWxzOiBBZGFwdGVySW5zZXJ0RGV0YWlscyxcbiAgcmVxdWlyZW1lbnRzPzogT21pdDxCdWlsZGVyUmVxdWlyZW1lbnRzLCBcIkFkYXB0ZXJcIiB8IFwiUXVlcnlDb21waWxlclwiPixcbikge1xuICBjb25zdCB7IHRhYmxlLCByb3dzIH0gPSBkZXRhaWxzO1xuICBjb25zdCB7IG5hbWU6IHRhYmxlTmFtZSwgc2NoZW1hLCBjb2x1bW5zIH0gPSB0YWJsZTtcblxuICBjb25zdCBidWlsZGVyID0gZ2V0UG9zdGdyZVNRTEJ1aWxkZXI8UmVjb3JkPHN0cmluZywgeyBjdGlkOiB1bmtub3duIH0gJiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPj4+KHJlcXVpcmVtZW50cyk7XG4gIGNvbnN0IGNvbHMgPSBPYmplY3Qua2V5cyhjb2x1bW5zKTtcblxuICByZXR1cm4gY29tcGlsZShcbiAgICBidWlsZGVyXG4gICAgICAud2l0aFNjaGVtYShzY2hlbWEpXG4gICAgICAuaW5zZXJ0SW50byh0YWJsZU5hbWUpXG4gICAgICAudmFsdWVzKGFwcGx5VHJhbnNmb3JtYXRpb25zKFwiaW5zZXJ0XCIsIHJvd3MsIGNvbHVtbnMpKVxuICAgICAgLnJldHVybmluZyhjb2xzKVxuICAgICAgLnJldHVybmluZygoZWIpID0+IGViLmNhc3Q8Q1RJRGFzVGV4dD4oXCJjdGlkXCIsIFwidGV4dFwiKS5hcyhcImN0aWRcIikpLFxuICApO1xufVxuXG4vKipcbiAqIFJldHVybnMgYSBxdWVyeSB0aGF0IHNlbGVjdHMgYWxsIGNvbHVtbnMgZnJvbSBhIHRhYmxlLCBhbG9uZyB3aXRoIHRoZSBgY3RpZGAgY29sdW1uLCBhbmQgdW5ib3VuZCByb3cgY291bnQgYXMgYG9pZGAgKHJlc2VydmVkIGNvbHVtbiBuYW1lIHRoYXQgY2Fubm90IGNvbmZsaWN0IHdpdGggdXNlciBjb2x1bW5zKS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldFNlbGVjdFF1ZXJ5KFxuICBkZXRhaWxzOiBBZGFwdGVyUXVlcnlEZXRhaWxzLFxuICByZXF1aXJlbWVudHM/OiBPbWl0PEJ1aWxkZXJSZXF1aXJlbWVudHMsIFwiQWRhcHRlclwiIHwgXCJRdWVyeUNvbXBpbGVyXCI+LFxuKSB7XG4gIGNvbnN0IHtcbiAgICBwYWdlSW5kZXgsXG4gICAgcGFnZVNpemUsXG4gICAgc29ydE9yZGVyLFxuICAgIHRhYmxlOiB7IG5hbWU6IHRhYmxlTmFtZSwgc2NoZW1hLCBjb2x1bW5zIH0sXG4gICAgZmlsdGVyID0geyBraW5kOiBcIkZpbHRlckdyb3VwXCIsIGFmdGVyOiBcImFuZFwiLCBmaWx0ZXJzOiBbXSB9LFxuICB9ID0gZGV0YWlscztcblxuICBjb25zdCBidWlsZGVyID0gZ2V0UG9zdGdyZVNRTEJ1aWxkZXI8UmVjb3JkPHN0cmluZywgeyBjdGlkOiB1bmtub3duIH0gJiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPj4+KHJlcXVpcmVtZW50cyk7XG4gIGNvbnN0IGNvbHMgPSBPYmplY3Qua2V5cyhjb2x1bW5zKTtcblxuICBjb25zdCBjb3VudFF1ZXJ5ID0gYnVpbGRlclxuICAgIC53aXRoU2NoZW1hKHNjaGVtYSlcbiAgICAuc2VsZWN0RnJvbSh0YWJsZU5hbWUpXG4gICAgLnNlbGVjdCgoZWIpID0+IGViLmNhc3Q8QmlnSW50U3RyaW5nPihlYi5mbi5jb2FsZXNjZShlYi5mbi5jb3VudEFsbCgpLCBzcWwubGl0KDApKSwgXCJ0ZXh0XCIpLmFzKFwib2lkXCIpKTtcblxuICByZXR1cm4gY29tcGlsZShcbiAgICBidWlsZGVyXG4gICAgICAud2l0aChcImNvdW50XCIsICgpID0+IGNvdW50UXVlcnkpXG4gICAgICAud2l0aFNjaGVtYShzY2hlbWEpXG4gICAgICAuc2VsZWN0RnJvbShbdGFibGVOYW1lLCBcImNvdW50XCJdKVxuICAgICAgLy8gYG9pZGAgaXMgYSByZXNlcnZlZCBjb2x1bW4gbmFtZSBpbiBQb3N0Z3JlU1FMLCBzbyB3ZSB1c2UgaXQgYXMgYW4gYWxpYXMgZm9yIHRoZSByb3cgY291bnQgdG8gbm90IGNvbmZsaWN0IHdpdGggdXNlciBjb2x1bW5zLlxuICAgICAgLnNlbGVjdChzcWwucmVmKFwiY291bnQub2lkXCIpLiRjYXN0VG88QmlnSW50U3RyaW5nPigpLmFzKFwib2lkXCIpKVxuICAgICAgLnNlbGVjdCgoZWIpID0+IGViLmNhc3Q8Q1RJRGFzVGV4dD4oXCJjdGlkXCIsIFwidGV4dFwiKS5hcyhcImN0aWRcIikpXG4gICAgICAuc2VsZWN0KGNvbHMpXG4gICAgICAuJGNhbGwoKHFiKSA9PiBzb3J0T3JkZXIucmVkdWNlKChxYiwgaXRlbSkgPT4gcWIub3JkZXJCeShpdGVtLmNvbHVtbiwgaXRlbS5kaXJlY3Rpb24pLCBxYikpXG4gICAgICAvLyBUT0RPOiBjdXJzb3IgcGFnaW5hdGlvbj9cbiAgICAgIC53aGVyZShnZXRTZWxlY3RGaWx0ZXJFeHByZXNzaW9uKGZpbHRlci5maWx0ZXJzLCBjb2x1bW5zKSlcbiAgICAgIC5saW1pdChwYWdlU2l6ZSlcbiAgICAgIC8vIHdlJ3JlIGluamVjdGluZyB0aGUgb2Zmc2V0IHZhbHVlIGhlcmUgdG8gYXZvaWQgc2VyaWFsaXphdGlvbiBjb21wbGV4aXR5IChgYmlnaW50YCBpcyBhIG5vLWdvIGZvciBgSlNPTi5zdHJpbmdpZnlgKS5cbiAgICAgIC5vZmZzZXQoc3FsLmxpdChCaWdJbnQocGFnZUluZGV4KSAqIEJpZ0ludChwYWdlU2l6ZSkpKSxcbiAgKTtcbn1cblxuLy8gSGVscGVyIHRvIGJ1aWxkIGFuIGV4cHJlc3Npb24gYnVpbGRlciBmb3IgYSBzaW5nbGUgZmlsdGVyIG9yIGEgZ3JvdXBcbmZ1bmN0aW9uIGJ1aWxkQmFzZUV4cHJlc3Npb25CdWlsZGVyKFxuICBzcGVjOiBDb2x1bW5GaWx0ZXIgfCBGaWx0ZXJHcm91cCxcbiAgY29sdW1uczogVGFibGVbXCJjb2x1bW5zXCJdLFxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuKTogKGViOiBFeHByZXNzaW9uQnVpbGRlcjxhbnksIGFueT4pID0+IEV4cHJlc3Npb248U3FsQm9vbD4ge1xuICBpZiAoc3BlYy5raW5kID09PSBcIkNvbHVtbkZpbHRlclwiKSB7XG4gICAgcmV0dXJuIChlYikgPT4ge1xuICAgICAgY29uc3QgeyBjb2x1bW4sIG9wZXJhdG9yLCB2YWx1ZSB9ID0gc3BlYztcbiAgICAgIGNvbnN0IGNvbHVtblJlZiA9IHNxbC5yZWYoY29sdW1uKTtcbiAgICAgIGNvbnN0IGdyb3VwID0gY29sdW1uc1tjb2x1bW5dPy5kYXRhdHlwZS5ncm91cDtcbiAgICAgIGNvbnN0IGxocyA9IGdyb3VwID09PSBcImVudW1cIiB8fCBncm91cCA9PT0gXCJzdHJpbmdcIiA/IGViLmNhc3QoY29sdW1uUmVmLCBcInRleHRcIikgOiBjb2x1bW5SZWY7XG5cbiAgICAgIHJldHVybiBlYihsaHMsIG9wZXJhdG9yLCB2YWx1ZSk7XG4gICAgfTtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gZ2V0U2VsZWN0RmlsdGVyRXhwcmVzc2lvbihzcGVjLmZpbHRlcnMsIGNvbHVtbnMpO1xuICB9XG59XG5cbmZ1bmN0aW9uIGdldFNlbGVjdEZpbHRlckV4cHJlc3Npb24oXG4gIGZpbHRlcnM6IChDb2x1bW5GaWx0ZXIgfCBGaWx0ZXJHcm91cClbXSxcbiAgY29sdW1uczogVGFibGVbXCJjb2x1bW5zXCJdLFxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuKTogKGViOiBFeHByZXNzaW9uQnVpbGRlcjxhbnksIGFueT4pID0+IEV4cHJlc3Npb248U3FsQm9vbD4ge1xuICBpZiAoZmlsdGVycy5sZW5ndGggPT09IDApIHJldHVybiAoZWIpID0+IGViLmxpdCh0cnVlKTsgLy8gbm8gZmlsdGVycywgYWx3YXlzIHRydWVcblxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuICBjb25zdCBvckdyb3Vwc09mQW5kQnVpbGRlcnM6ICgoZWI6IEV4cHJlc3Npb25CdWlsZGVyPGFueSwgYW55PikgPT4gRXhwcmVzc2lvbjxTcWxCb29sPilbXVtdID0gW107XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG4gIGxldCBjdXJyZW50QW5kR3JvdXBCdWlsZGVyczogKChlYjogRXhwcmVzc2lvbkJ1aWxkZXI8YW55LCBhbnk+KSA9PiBFeHByZXNzaW9uPFNxbEJvb2w+KVtdID0gW107XG5cbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBmaWx0ZXJzLmxlbmd0aDsgaSsrKSB7XG4gICAgY3VycmVudEFuZEdyb3VwQnVpbGRlcnMucHVzaChidWlsZEJhc2VFeHByZXNzaW9uQnVpbGRlcihmaWx0ZXJzW2ldISwgY29sdW1ucykpO1xuXG4gICAgLy8gJm4gQU5EIGdyb3VwIGVuZHMgaWYgaXQncyB0aGUgbGFzdCBmaWx0ZXIsIG9yIHRoZSBpdGVtIGlzIGZvbGxvd2VkIGJ5IGFuICdvcidcbiAgICBpZiAoaSA9PT0gZmlsdGVycy5sZW5ndGggLSAxIHx8IGZpbHRlcnNbaV0hLmFmdGVyID09PSBcIm9yXCIpIHtcbiAgICAgIG9yR3JvdXBzT2ZBbmRCdWlsZGVycy5wdXNoKGN1cnJlbnRBbmRHcm91cEJ1aWxkZXJzKTtcbiAgICAgIGN1cnJlbnRBbmRHcm91cEJ1aWxkZXJzID0gW107IC8vIHN0YXJ0IGEgbmV3IGdyb3VwXG4gICAgfVxuICB9XG5cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbiAgcmV0dXJuIChlYjogRXhwcmVzc2lvbkJ1aWxkZXI8YW55LCBhbnk+KSA9PiB7XG4gICAgY29uc3QgYW5kRXhwcmVzc2lvbnMgPSBvckdyb3Vwc09mQW5kQnVpbGRlcnMubWFwKChncm91cCkgPT4ge1xuICAgICAgcmV0dXJuIGViLmFuZChncm91cC5tYXAoKGJ1aWxkZXIpID0+IGJ1aWxkZXIoZWIpKSk7XG4gICAgfSk7XG5cbiAgICByZXR1cm4gZWIub3IoYW5kRXhwcmVzc2lvbnMpO1xuICB9O1xufVxuXG4vKipcbiAqIEZvciB0ZXN0aW5nIHB1cnBvc2VzLlxuICovXG5leHBvcnQgZnVuY3Rpb24gbW9ja1NlbGVjdFF1ZXJ5KCkge1xuICByZXR1cm4gW1xuICAgIHtcbiAgICAgIGNyZWF0ZWRfYXQ6IG5ldyBEYXRlKFwiMjAyNS0wMS0yNlQyMTo1NjoxMi4zNDVaXCIpLFxuICAgICAgY3RpZDogXCIoMCwxKVwiLFxuICAgICAgZGVsZXRlZF9hdDogbnVsbCxcbiAgICAgIGlkOiAxLFxuICAgICAgbmFtZTogXCJKb2huIERvZVwiLFxuICAgICAgb2lkOiBcIjJcIixcbiAgICAgIHJvbGU6IFwiYWRtaW5cIixcbiAgICAgIG5hbWVfcm9sZTogXCJKb25uIERvZSAtIGFkbWluXCIsXG4gICAgfSxcbiAgICB7XG4gICAgICBjcmVhdGVkX2F0OiBuZXcgRGF0ZShcIjIwMjUtMDEtMjZUMjA6NTY6MTIuMzQ1WlwiKSxcbiAgICAgIGN0aWQ6IFwiKDAsMilcIixcbiAgICAgIGRlbGV0ZWRfYXQ6IG51bGwsXG4gICAgICBpZDogMixcbiAgICAgIG5hbWU6IFwiSmFuZSBEb2VcIixcbiAgICAgIG9pZDogXCIyXCIsXG4gICAgICByb2xlOiBcInBvd2VydXNlclwiLFxuICAgICAgbmFtZV9yb2xlOiBcIkphbmUgRG9lIC0gcG93ZXJ1c2VyXCIsXG4gICAgfSxcbiAgXSBhcyBjb25zdCBzYXRpc2ZpZXMge1xuICAgIC8vIGJlc3QgZWZmb3J0IG5vIG5lZWQgdG8gZ28gb3ZlcmJvYXJkXG4gICAgW0sgaW4gUmV0dXJuVHlwZTx0eXBlb2YgbW9ja1RhYmxlc1F1ZXJ5PlsxXVtcImNvbHVtbnNcIl1bbnVtYmVyXVtcIm5hbWVcIl0gfCBcImN0aWRcIiB8IFwib2lkXCJdOiB1bmtub3duO1xuICB9W107XG59XG5cbi8qKlxuICogUmV0dXJucyBhIHF1ZXJ5IHRoYXQgdXBkYXRlcyBhIGdpdmVuIHJvdyBpbiBhIHRhYmxlIHdpdGggZ2l2ZW4gY2hhbmdlcy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldFVwZGF0ZVF1ZXJ5KFxuICBkZXRhaWxzOiBBZGFwdGVyVXBkYXRlRGV0YWlscyxcbiAgcmVxdWlyZW1lbnRzPzogT21pdDxCdWlsZGVyUmVxdWlyZW1lbnRzLCBcIkFkYXB0ZXJcIiB8IFwiUXVlcnlDb21waWxlclwiPixcbikge1xuICBjb25zdCB7XG4gICAgY2hhbmdlcyxcbiAgICByb3csXG4gICAgdGFibGU6IHsgY29sdW1ucywgbmFtZTogdGFibGVOYW1lLCBzY2hlbWEgfSxcbiAgfSA9IGRldGFpbHM7XG5cbiAgY29uc3QgYnVpbGRlciA9IGdldFBvc3RncmVTUUxCdWlsZGVyPFJlY29yZDxzdHJpbmcsIHsgY3RpZDogdW5rbm93biB9ICYgUmVjb3JkPHN0cmluZywgdW5rbm93bj4+PihyZXF1aXJlbWVudHMpO1xuICBjb25zdCBjb2xzID0gT2JqZWN0LmtleXMoY29sdW1ucyk7XG5cbiAgcmV0dXJuIGNvbXBpbGUoXG4gICAgYnVpbGRlclxuICAgICAgLndpdGhTY2hlbWEoc2NoZW1hKVxuICAgICAgLnVwZGF0ZVRhYmxlKHRhYmxlTmFtZSlcbiAgICAgIC5zZXQoYXBwbHlUcmFuc2Zvcm1hdGlvbnMoXCJ1cGRhdGVcIiwgY2hhbmdlcywgY29sdW1ucykpXG4gICAgICAuJGNhbGwoYXBwbHlJbmZlcnJlZFJvd0ZpbHRlcnMoW3Jvd10sIGNvbHVtbnMpKVxuICAgICAgLnJldHVybmluZyhjb2xzKVxuICAgICAgLnJldHVybmluZygoZWIpID0+IFtcbiAgICAgICAgZWIuY2FzdDxDVElEYXNUZXh0PihcImN0aWRcIiwgXCJ0ZXh0XCIpLmFzKFwiY3RpZFwiKSxcbiAgICAgICAgZWJcbiAgICAgICAgICAuY2FzdDxCaWdJbnRTdHJpbmc+KGViLmZuKFwiZmxvb3JcIiwgW2ViKGViLmZuKFwiZXh0cmFjdFwiLCBbc3FsYGVwb2NoIGZyb20gbm93KClgXSksIFwiKlwiLCAxXzAwMF8wMDApXSksIFwidGV4dFwiKVxuICAgICAgICAgIC5hcyhcIl9fcHNfdXBkYXRlZF9hdF9fXCIpLFxuICAgICAgXSksXG4gICk7XG59XG5cbi8qKlxuICogUmV0dXJucyBhIHF1ZXJ5IHRoYXQgZGVsZXRlcyBhIGdpdmVuIHNldCBvZiByb3dzLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0RGVsZXRlUXVlcnkoXG4gIGRldGFpbHM6IEFkYXB0ZXJEZWxldGVEZXRhaWxzLFxuICByZXF1aXJlbWVudHM/OiBPbWl0PEJ1aWxkZXJSZXF1aXJlbWVudHMsIFwiQWRhcHRlclwiIHwgXCJRdWVyeUNvbXBpbGVyXCI+LFxuKSB7XG4gIGNvbnN0IHtcbiAgICByb3dzLFxuICAgIHRhYmxlOiB7IGNvbHVtbnMsIG5hbWU6IHRhYmxlTmFtZSwgc2NoZW1hIH0sXG4gIH0gPSBkZXRhaWxzO1xuXG4gIGNvbnN0IGJ1aWxkZXIgPSBnZXRQb3N0Z3JlU1FMQnVpbGRlcjxSZWNvcmQ8c3RyaW5nLCB7IGN0aWQ6IHVua25vd24gfSAmIFJlY29yZDxzdHJpbmcsIHVua25vd24+Pj4ocmVxdWlyZW1lbnRzKTtcblxuICByZXR1cm4gY29tcGlsZShidWlsZGVyLndpdGhTY2hlbWEoc2NoZW1hKS5kZWxldGVGcm9tKHRhYmxlTmFtZSkuJGNhbGwoYXBwbHlJbmZlcnJlZFJvd0ZpbHRlcnMocm93cywgY29sdW1ucykpKTtcbn1cbiIsICJpbXBvcnQgeyB0eXBlIEt5c2VseSwgUG9zdGdyZXNBZGFwdGVyLCBQb3N0Z3Jlc1F1ZXJ5Q29tcGlsZXIgfSBmcm9tIFwia3lzZWx5XCI7XG5cbmltcG9ydCB7IHR5cGUgQnVpbGRlclJlcXVpcmVtZW50cywgZ2V0QnVpbGRlciB9IGZyb20gXCIuLi9xdWVyeVwiO1xuXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuZXhwb3J0IGZ1bmN0aW9uIGdldFBvc3RncmVTUUxCdWlsZGVyPERhdGFiYXNlID0gYW55PihcbiAgcmVxdWlyZW1lbnRzPzogT21pdDxCdWlsZGVyUmVxdWlyZW1lbnRzLCBcIkFkYXB0ZXJcIiB8IFwiUXVlcnlDb21waWxlclwiPixcbik6IEt5c2VseTxEYXRhYmFzZT4ge1xuICByZXR1cm4gZ2V0QnVpbGRlcih7IC4uLnJlcXVpcmVtZW50cywgQWRhcHRlcjogUG9zdGdyZXNBZGFwdGVyLCBRdWVyeUNvbXBpbGVyOiBQb3N0Z3Jlc1F1ZXJ5Q29tcGlsZXIgfSk7XG59XG4iLCAiaW1wb3J0IHsgdHlwZSBTZWxlY3RRdWVyeUJ1aWxkZXIsIHNxbCB9IGZyb20gXCJreXNlbHlcIjtcbmltcG9ydCB7IGpzb25BcnJheUZyb20gfSBmcm9tIFwia3lzZWx5L2hlbHBlcnMvcG9zdGdyZXNcIjtcblxuaW1wb3J0IHsgdHlwZSBCdWlsZGVyUmVxdWlyZW1lbnRzLCBjb21waWxlLCB0eXBlIFF1ZXJ5UmVzdWx0IH0gZnJvbSBcIi4uL3F1ZXJ5XCI7XG5pbXBvcnQgeyBnZXRQb3N0Z3JlU1FMQnVpbGRlciB9IGZyb20gXCIuL2J1aWxkZXJcIjtcblxuY29uc3QgUkVHVUxBUl9UQUJMRV9LSU5EID0gXCJyXCI7XG5jb25zdCBWSUVXX1RBQkxFX0tJTkQgPSBcInZcIjtcbmNvbnN0IFRBQkxFX0tJTkRTID0gW1JFR1VMQVJfVEFCTEVfS0lORCwgVklFV19UQUJMRV9LSU5EXSBhcyBjb25zdDtcbnR5cGUgVGFibGVLaW5kID0gKHR5cGVvZiBUQUJMRV9LSU5EUylbbnVtYmVyXTtcblxuaW50ZXJmYWNlIERhdGFiYXNlIHtcbiAgLyoqIGNvbHVtbnMgKi9cbiAgXCJwZ19jYXRhbG9nLnBnX2F0dHJpYnV0ZVwiOiB7XG4gICAgLyoqIGNvbHVtbiBvcmRlciBudW1iZXIgaW4gaXRzIHRhYmxlICovXG4gICAgYXR0bnVtOiBudW1iZXI7XG4gICAgLyoqIHRhYmxlL3ZpZXcgaWRlbnRpZmllciAqL1xuICAgIGF0dHJlbGlkOiBzdHJpbmc7XG4gICAgLyoqIGNvbHVtbiBuYW1lICovXG4gICAgYXR0bmFtZTogc3RyaW5nO1xuICAgIC8qKiB3YXMgdGhlIGNvbHVtbiBkcm9wcGVkLiBkcm9wcGVkIGNvbHVtbnMgbWlnaHQgbm90IGJlIDEwMCUgcmVtb3ZlZCBpbW1lZGlhdGVseS4gKi9cbiAgICBhdHRpc2Ryb3BwZWQ6IGJvb2xlYW47XG4gICAgLyoqIGNvbHVtbiBkYXRhdHlwZSBpZGVudGlmaWVyICovXG4gICAgYXR0dHlwaWQ6IHN0cmluZztcbiAgICAvKipcbiAgICAgKiBnZW5lcmF0aW9uIGZsYWcgZm9yIGNvbXB1dGVkIGNvbHVtbnM6XG4gICAgICogJycgKGVtcHR5KSBmb3IgcmVndWxhciBjb2x1bW5zLFxuICAgICAqICdzJyBmb3IgU1RPUkVEIGdlbmVyYXRlZCBjb2x1bW5zIChQb3N0Z3JlcyBHRU5FUkFURUQgQUxXQVlTIEFTKS5cbiAgICAgKi9cbiAgICBhdHRnZW5lcmF0ZWQ6IFwiXCIgfCBcInNcIjtcbiAgICAvKiogTk9UIE5VTEwgY29uc3RyYWludDogdHJ1ZSBpZiB0aGUgY29sdW1uIGhhcyBhIE5PVCBOVUxMIGNvbnN0cmFpbnQgKi9cbiAgICBhdHRub3RudWxsOiBib29sZWFuO1xuICB9O1xuICAvKiogcmVzb3VyY2VzLCBlLmcuIHRhYmxlcywgc2VxdWVuY2VzLCBldGMuICovXG4gIFwicGdfY2F0YWxvZy5wZ19jbGFzc1wiOiB7XG4gICAgLyoqIHJlc291cmNlIGlkICovXG4gICAgb2lkOiBudW1iZXI7XG4gICAgLyoqIHJlc291cmNlIG5hbWUgKi9cbiAgICByZWxuYW1lOiBzdHJpbmc7XG4gICAgLyoqIHNjaGVtYSBpZCAqL1xuICAgIHJlbG5hbWVzcGFjZTogbnVtYmVyO1xuICAgIC8qKiByZXNvdXJjZSBraW5kOiByZWd1bGFyIHRhYmxlLCB2aWV3ICovXG4gICAgcmVsa2luZDogVGFibGVLaW5kO1xuICB9O1xuICAvKiogZW51bSB0eXBlcycgdmFsdWVzICovXG4gIFwicGdfY2F0YWxvZy5wZ19lbnVtXCI6IHtcbiAgICAvKiogZW51bSB2YWx1ZSAqL1xuICAgIGVudW1sYWJlbDogc3RyaW5nO1xuICAgIC8qKiBlbnVtJ3MgdHlwZSBpZCAqL1xuICAgIGVudW10eXBpZDogbnVtYmVyO1xuICB9O1xuICAvKiogc2NoZW1hcyAqL1xuICBcInBnX2NhdGFsb2cucGdfbmFtZXNwYWNlXCI6IHtcbiAgICAvKiogc2NoZW1hIG5hbWUgKi9cbiAgICBuc3BuYW1lOiBzdHJpbmc7XG4gICAgLyoqIHNjaGVtYSBpZCAqL1xuICAgIG9pZDogbnVtYmVyO1xuICB9O1xuICAvKiogZGF0YXR5cGVzICovXG4gIFwicGdfY2F0YWxvZy5wZ190eXBlXCI6IHtcbiAgICAvKiogdHlwZSBpZCAqL1xuICAgIG9pZDogbnVtYmVyO1xuICAgIC8qKiB0eXBlIG5hbWUgKi9cbiAgICB0eXBuYW1lOiBzdHJpbmc7XG4gICAgLyoqIHR5cGUncyBzY2hlbWEgKGFrYSBuYW1lc3BhY2UpIGlkICovXG4gICAgdHlwbmFtZXNwYWNlOiBudW1iZXI7XG4gICAgLyoqXG4gICAgICogdHlwZSdzIGtpbmRcbiAgICAgKlxuICAgICAqICdlJyAtIGVudW0gdHlwZVxuICAgICAqL1xuICAgIHR5cHR5cGU6IFwiZVwiIHwgKHN0cmluZyAmIHt9KTtcbiAgfTtcbiAgLyoqIGNvbnN0cmFpbnRzICovXG4gIFwicGdfY2F0YWxvZy5wZ19jb25zdHJhaW50XCI6IHtcbiAgICAvKiogcmVsYXRpb24gKHRhYmxlKSBpZCB3aGljaCB0aGlzIGNvbnN0cmFpbnQgd2FzIGNyZWF0ZWQgZm9yICovXG4gICAgY29ucmVsaWQ6IG51bWJlcjtcbiAgICAvKipcbiAgICAgKiBjb25zdHJhaW50IHR5cGUuXG4gICAgICpcbiAgICAgKiBgJ3AnYCAtIHByaW1hcnkga2V5IGNvbnN0cmFpbnQuXG4gICAgICogYCdmJ2AgLSBmb3JlaWduIGtleSBjb25zdHJhaW50LlxuICAgICAqL1xuICAgIGNvbnR5cGU6IFwicFwiIHwgXCJmXCIgfCAoc3RyaW5nICYge30pO1xuICAgIC8qKlxuICAgICAqIGFuIG9yZGVyZWQgYXJyYXkgb2YgY29sdW1ucyBpbmNsdWRlZCBpbiB0aGUgY29uc3RyYWludC5cbiAgICAgKlxuICAgICAqIHRoZSBjb2x1bW5zIGFyZSByZXByZXNlbnRlZCBieSB0aGVpciBvcmRpbmFsIG51bWJlciAoYGF0dG51bWApIGluIHRoZWlyIHJlbGF0aW9uICh0YWJsZSkuXG4gICAgICpcbiAgICAgKiBAZXhhbXBsZSBgJ3sxLDN9J2AgLSBhIGNvbnN0cmFpbnQgd2l0aCAyIGNvbHVtbnMsIHRoZSAxc3QgJiAzcmQgaW4gdGhlaXIgdGFibGUuXG4gICAgICovXG4gICAgY29ua2V5OiBudW1iZXJbXTtcbiAgICAvKiogaWYgYSBmb3JlaWduIGtleSwgdGhlIHJlZmVyZW5jZWQgdGFibGUgKi9cbiAgICBjb25mcmVsaWQ6IG51bWJlcjtcbiAgICAvKiogaWYgYSBmb3JlaWduIGtleSwgdGhlIHJlZmVyZW5jZWQgY29sdW1ucyAqL1xuICAgIGNvbmZrZXk6IG51bWJlcltdO1xuICB9O1xufVxuXG4vKipcbiAqIFJldHVybnMgYSBxdWVyeSB0aGF0IHJldHVybnMgbWV0YWRhdGEgZm9yIGFsbCB1c2VyLWRlZmluZWQgdGFibGVzIGFuZCB2aWV3cyBpbiB0aGUgZGF0YWJhc2UuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRUYWJsZXNRdWVyeShyZXF1aXJlbWVudHM/OiBPbWl0PEJ1aWxkZXJSZXF1aXJlbWVudHMsIFwiQWRhcHRlclwiIHwgXCJRdWVyeUNvbXBpbGVyXCI+KSB7XG4gIHJldHVybiBjb21waWxlKFxuICAgIGdldFBvc3RncmVTUUxCdWlsZGVyPERhdGFiYXNlPihyZXF1aXJlbWVudHMpXG4gICAgICAuc2VsZWN0RnJvbShcInBnX2NhdGFsb2cucGdfY2xhc3MgYXMgY2xzXCIpXG4gICAgICAuaW5uZXJKb2luKFwicGdfY2F0YWxvZy5wZ19uYW1lc3BhY2UgYXMgbnNcIiwgXCJjbHMucmVsbmFtZXNwYWNlXCIsIFwibnMub2lkXCIpXG4gICAgICAuJGNhbGwoZXhjbHVkZVN5c3RlbVRhYmxlcylcbiAgICAgIC8vIHJlZ3VsYXIgdGFibGVzIG9yIHZpZXdzXG4gICAgICAud2hlcmUoXCJjbHMucmVsa2luZFwiLCBcImluXCIsIFRBQkxFX0tJTkRTKVxuICAgICAgLnNlbGVjdCgoZWIpID0+IFtcbiAgICAgICAgXCJucy5uc3BuYW1lIGFzIHNjaGVtYVwiLFxuICAgICAgICBcImNscy5yZWxuYW1lIGFzIG5hbWVcIixcbiAgICAgICAganNvbkFycmF5RnJvbShcbiAgICAgICAgICBlYlxuICAgICAgICAgICAgLnNlbGVjdEZyb20oXCJwZ19jYXRhbG9nLnBnX2F0dHJpYnV0ZSBhcyBhdHRcIilcbiAgICAgICAgICAgIC5pbm5lckpvaW4oXCJwZ19jYXRhbG9nLnBnX3R5cGUgYXMgdHlwXCIsIFwidHlwLm9pZFwiLCBcImF0dC5hdHR0eXBpZFwiKVxuICAgICAgICAgICAgLmlubmVySm9pbihcInBnX2NhdGFsb2cucGdfbmFtZXNwYWNlIGFzIHRuc1wiLCBcInRucy5vaWRcIiwgXCJ0eXAudHlwbmFtZXNwYWNlXCIpXG4gICAgICAgICAgICAubGVmdEpvaW4oXCJwZ19jYXRhbG9nLnBnX2NvbnN0cmFpbnQgYXMgcGtfY29uXCIsIChqYikgPT5cbiAgICAgICAgICAgICAgamJcbiAgICAgICAgICAgICAgICAub24oXCJwa19jb24uY29udHlwZVwiLCBcIj1cIiwgXCJwXCIpXG4gICAgICAgICAgICAgICAgLm9uUmVmKFwicGtfY29uLmNvbnJlbGlkXCIsIFwiPVwiLCBcImNscy5vaWRcIilcbiAgICAgICAgICAgICAgICAub24oKGViKSA9PiBlYihcImF0dC5hdHRudW1cIiwgXCI9XCIsIGViLmZuLmFueShcInBrX2Nvbi5jb25rZXlcIikpKSxcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIC5sZWZ0Sm9pbihcInBnX2NhdGFsb2cucGdfY29uc3RyYWludCBhcyBma19jb25cIiwgKGpiKSA9PlxuICAgICAgICAgICAgICBqYlxuICAgICAgICAgICAgICAgIC5vbihcImZrX2Nvbi5jb250eXBlXCIsIFwiPVwiLCBcImZcIilcbiAgICAgICAgICAgICAgICAub25SZWYoXCJma19jb24uY29ucmVsaWRcIiwgXCI9XCIsIFwiY2xzLm9pZFwiKVxuICAgICAgICAgICAgICAgIC5vbigoZWIpID0+IGViKFwiYXR0LmF0dG51bVwiLCBcIj1cIiwgZWIuZm4uYW55KFwiZmtfY29uLmNvbmtleVwiKSkpLFxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgLmxlZnRKb2luKFwicGdfY2F0YWxvZy5wZ19jbGFzcyBhcyBma19jbHNcIiwgXCJma19jbHMub2lkXCIsIFwiZmtfY29uLmNvbmZyZWxpZFwiKVxuICAgICAgICAgICAgLmxlZnRKb2luKFwicGdfY2F0YWxvZy5wZ19uYW1lc3BhY2UgYXMgZmtfbnNcIiwgXCJma19ucy5vaWRcIiwgXCJma19jbHMucmVsbmFtZXNwYWNlXCIpXG4gICAgICAgICAgICAubGVmdEpvaW4oXCJwZ19jYXRhbG9nLnBnX2F0dHJpYnV0ZSBhcyBma19hdHRcIiwgKGpiKSA9PlxuICAgICAgICAgICAgICBqYlxuICAgICAgICAgICAgICAgIC5vblJlZihcImZrX2F0dC5hdHRyZWxpZFwiLCBcIj1cIiwgXCJma19jbHMub2lkXCIpXG4gICAgICAgICAgICAgICAgLy8gVXNlIGEgY2FsbGJhY2sgZm9yIHRoZSAub24oKSBjb25kaXRpb24gdG8gZW5zdXJlIGNvcnJlY3QgY29udGV4dCBmb3IgdHlwZXNcbiAgICAgICAgICAgICAgICAub24oKG9uX2ViKSA9PiBvbl9lYihcImZrX2F0dC5hdHRudW1cIiwgXCI9XCIsIG9uX2ViLmZuLmFueShcImZrX2Nvbi5jb25ma2V5XCIpKSksXG4gICAgICAgICAgICApXG4gICAgICAgICAgICAud2hlcmVSZWYoXCJhdHQuYXR0cmVsaWRcIiwgXCI9XCIsIFwiY2xzLm9pZFwiKVxuICAgICAgICAgICAgLy8gZXhjbHVkZSBzeXN0ZW0gY29sdW1uc1xuICAgICAgICAgICAgLndoZXJlKFwiYXR0LmF0dG51bVwiLCBcIj49XCIsIDApXG4gICAgICAgICAgICAud2hlcmUoXCJhdHQuYXR0aXNkcm9wcGVkXCIsIFwiIT1cIiwgdHJ1ZSlcbiAgICAgICAgICAgIC5zZWxlY3QoW1xuICAgICAgICAgICAgICBcImF0dC5hdHRuYW1lIGFzIG5hbWVcIixcbiAgICAgICAgICAgICAgXCJ0eXAudHlwbmFtZSBhcyBkYXRhdHlwZVwiLFxuICAgICAgICAgICAgICBcInRucy5uc3BuYW1lIGFzIGRhdGF0eXBlX3NjaGVtYVwiLFxuICAgICAgICAgICAgICBcImZrX25zLm5zcG5hbWUgYXMgZm9yZWlnbl9rZXlfc2NoZW1hXCIsXG4gICAgICAgICAgICAgIFwiZmtfY2xzLnJlbG5hbWUgYXMgZm9yZWlnbl9rZXlfdGFibGVcIixcbiAgICAgICAgICAgICAgXCJma19hdHQuYXR0bmFtZSBhcyBmb3JlaWduX2tleV9jb2x1bW5cIixcbiAgICAgICAgICAgIF0pXG4gICAgICAgICAgICAuc2VsZWN0KChlYikgPT4gW1xuICAgICAgICAgICAgICBlYihcInBrX2Nvbi5jb25rZXlcIiwgXCJpcyBub3RcIiwgbnVsbCkuJGNhc3RUbzxib29sZWFuPigpLmFzKFwicGtcIiksXG4gICAgICAgICAgICAgIGViKFwiYXR0LmF0dGdlbmVyYXRlZFwiLCBcIiE9XCIsIFwiXCIpLiRjYXN0VG88Ym9vbGVhbj4oKS5hcyhcImNvbXB1dGVkXCIpLFxuICAgICAgICAgICAgICBlYihcImF0dC5hdHRub3RudWxsXCIsIFwiIT1cIiwgdHJ1ZSkuJGNhc3RUbzxib29sZWFuPigpLmFzKFwibnVsbGFibGVcIiksXG4gICAgICAgICAgICAgIGViLmZuXG4gICAgICAgICAgICAgICAgLmNvYWxlc2NlKFxuICAgICAgICAgICAgICAgICAgZWJcbiAgICAgICAgICAgICAgICAgICAgLnNlbGVjdEZyb20oXCJwZ19jYXRhbG9nLnBnX2VudW0gYXMgZW5tXCIpXG4gICAgICAgICAgICAgICAgICAgIC53aGVyZVJlZihcImVubS5lbnVtdHlwaWRcIiwgXCI9XCIsIFwidHlwLm9pZFwiKVxuICAgICAgICAgICAgICAgICAgICAuc2VsZWN0KChlYikgPT4gZWIuZm4uanNvbkFnZyhlYi5yZWYoXCJlbm0uZW51bWxhYmVsXCIpKS5hcyhcIm9cIikpLFxuICAgICAgICAgICAgICAgICAgc3FsPHN0cmluZ1tdPmAnW10nYCxcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgLmFzKFwib3B0aW9uc1wiKSxcbiAgICAgICAgICAgIF0pLFxuICAgICAgICApLmFzKFwiY29sdW1uc1wiKSxcbiAgICAgIF0pLFxuICApO1xufVxuXG4vKipcbiAqIEZvciB0ZXN0aW5nIHB1cnBvc2VzLlxuICovXG5leHBvcnQgZnVuY3Rpb24gbW9ja1RhYmxlc1F1ZXJ5KCkge1xuICByZXR1cm4gW1xuICAgIHtcbiAgICAgIHNjaGVtYTogXCJ6b29cIixcbiAgICAgIG5hbWU6IFwiYW5pbWFsc1wiLFxuICAgICAgY29sdW1uczogW1xuICAgICAgICB7XG4gICAgICAgICAgbmFtZTogXCJpZFwiLFxuICAgICAgICAgIGRhdGF0eXBlOiBcImludDRcIixcbiAgICAgICAgICBkYXRhdHlwZV9zY2hlbWE6IFwicGdfY2F0YWxvZ1wiLFxuICAgICAgICAgIHBrOiB0cnVlLFxuICAgICAgICAgIGNvbXB1dGVkOiBmYWxzZSxcbiAgICAgICAgICBvcHRpb25zOiBbXSxcbiAgICAgICAgICBudWxsYWJsZTogZmFsc2UsXG4gICAgICAgICAgZm9yZWlnbl9rZXlfc2NoZW1hOiBudWxsLFxuICAgICAgICAgIGZvcmVpZ25fa2V5X3RhYmxlOiBudWxsLFxuICAgICAgICAgIGZvcmVpZ25fa2V5X2NvbHVtbjogbnVsbCxcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIG5hbWU6IFwibmFtZVwiLFxuICAgICAgICAgIGRhdGF0eXBlOiBcInRleHRcIixcbiAgICAgICAgICBkYXRhdHlwZV9zY2hlbWE6IFwicGdfY2F0YWxvZ1wiLFxuICAgICAgICAgIHBrOiBmYWxzZSxcbiAgICAgICAgICBjb21wdXRlZDogZmFsc2UsXG4gICAgICAgICAgb3B0aW9uczogW10sXG4gICAgICAgICAgbnVsbGFibGU6IHRydWUsXG4gICAgICAgICAgZm9yZWlnbl9rZXlfc2NoZW1hOiBudWxsLFxuICAgICAgICAgIGZvcmVpZ25fa2V5X3RhYmxlOiBudWxsLFxuICAgICAgICAgIGZvcmVpZ25fa2V5X2NvbHVtbjogbnVsbCxcbiAgICAgICAgfSxcbiAgICAgIF0sXG4gICAgfSxcbiAgICB7XG4gICAgICBzY2hlbWE6IFwicHVibGljXCIsXG4gICAgICBuYW1lOiBcInVzZXJzXCIsXG4gICAgICBjb2x1bW5zOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBuYW1lOiBcImlkXCIsXG4gICAgICAgICAgZGF0YXR5cGU6IFwiaW50NFwiLFxuICAgICAgICAgIGRhdGF0eXBlX3NjaGVtYTogXCJwZ19jYXRhbG9nXCIsXG4gICAgICAgICAgcGs6IHRydWUsXG4gICAgICAgICAgY29tcHV0ZWQ6IGZhbHNlLFxuICAgICAgICAgIG9wdGlvbnM6IFtdLFxuICAgICAgICAgIG51bGxhYmxlOiBmYWxzZSxcbiAgICAgICAgICBmb3JlaWduX2tleV9zY2hlbWE6IG51bGwsXG4gICAgICAgICAgZm9yZWlnbl9rZXlfdGFibGU6IG51bGwsXG4gICAgICAgICAgZm9yZWlnbl9rZXlfY29sdW1uOiBudWxsLFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgbmFtZTogXCJjcmVhdGVkX2F0XCIsXG4gICAgICAgICAgZGF0YXR5cGU6IFwidGltZXN0YW1wXCIsXG4gICAgICAgICAgZGF0YXR5cGVfc2NoZW1hOiBcInBnX2NhdGFsb2dcIixcbiAgICAgICAgICBwazogZmFsc2UsXG4gICAgICAgICAgY29tcHV0ZWQ6IGZhbHNlLFxuICAgICAgICAgIG9wdGlvbnM6IFtdLFxuICAgICAgICAgIG51bGxhYmxlOiB0cnVlLFxuICAgICAgICAgIGZvcmVpZ25fa2V5X3NjaGVtYTogbnVsbCxcbiAgICAgICAgICBmb3JlaWduX2tleV90YWJsZTogbnVsbCxcbiAgICAgICAgICBmb3JlaWduX2tleV9jb2x1bW46IG51bGwsXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBuYW1lOiBcImRlbGV0ZWRfYXRcIixcbiAgICAgICAgICBkYXRhdHlwZTogXCJ0aW1lc3RhbXBcIixcbiAgICAgICAgICBkYXRhdHlwZV9zY2hlbWE6IFwicGdfY2F0YWxvZ1wiLFxuICAgICAgICAgIHBrOiBmYWxzZSxcbiAgICAgICAgICBjb21wdXRlZDogZmFsc2UsXG4gICAgICAgICAgb3B0aW9uczogW10sXG4gICAgICAgICAgbnVsbGFibGU6IHRydWUsXG4gICAgICAgICAgZm9yZWlnbl9rZXlfc2NoZW1hOiBudWxsLFxuICAgICAgICAgIGZvcmVpZ25fa2V5X3RhYmxlOiBudWxsLFxuICAgICAgICAgIGZvcmVpZ25fa2V5X2NvbHVtbjogbnVsbCxcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIG5hbWU6IFwicm9sZVwiLFxuICAgICAgICAgIGRhdGF0eXBlOiBcInZhcmNoYXJcIixcbiAgICAgICAgICBkYXRhdHlwZV9zY2hlbWE6IFwicGdfY2F0YWxvZ1wiLFxuICAgICAgICAgIHBrOiBmYWxzZSxcbiAgICAgICAgICBjb21wdXRlZDogZmFsc2UsXG4gICAgICAgICAgb3B0aW9uczogW10sXG4gICAgICAgICAgbnVsbGFibGU6IHRydWUsXG4gICAgICAgICAgZm9yZWlnbl9rZXlfc2NoZW1hOiBudWxsLFxuICAgICAgICAgIGZvcmVpZ25fa2V5X3RhYmxlOiBudWxsLFxuICAgICAgICAgIGZvcmVpZ25fa2V5X2NvbHVtbjogbnVsbCxcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIG5hbWU6IFwibmFtZVwiLFxuICAgICAgICAgIGRhdGF0eXBlOiBcInZhcmNoYXJcIixcbiAgICAgICAgICBkYXRhdHlwZV9zY2hlbWE6IFwicGdfY2F0YWxvZ1wiLFxuICAgICAgICAgIHBrOiBmYWxzZSxcbiAgICAgICAgICBjb21wdXRlZDogZmFsc2UsXG4gICAgICAgICAgb3B0aW9uczogW10sXG4gICAgICAgICAgbnVsbGFibGU6IHRydWUsXG4gICAgICAgICAgZm9yZWlnbl9rZXlfc2NoZW1hOiBudWxsLFxuICAgICAgICAgIGZvcmVpZ25fa2V5X3RhYmxlOiBudWxsLFxuICAgICAgICAgIGZvcmVpZ25fa2V5X2NvbHVtbjogbnVsbCxcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIG5hbWU6IFwibmFtZV9yb2xlXCIsXG4gICAgICAgICAgZGF0YXR5cGU6IFwidGV4dFwiLFxuICAgICAgICAgIGRhdGF0eXBlX3NjaGVtYTogXCJwZ19jYXRhbG9nXCIsXG4gICAgICAgICAgcGs6IGZhbHNlLFxuICAgICAgICAgIGNvbXB1dGVkOiB0cnVlLFxuICAgICAgICAgIG9wdGlvbnM6IFtdLFxuICAgICAgICAgIG51bGxhYmxlOiBmYWxzZSxcbiAgICAgICAgICBmb3JlaWduX2tleV9zY2hlbWE6IG51bGwsXG4gICAgICAgICAgZm9yZWlnbl9rZXlfdGFibGU6IG51bGwsXG4gICAgICAgICAgZm9yZWlnbl9rZXlfY29sdW1uOiBudWxsLFxuICAgICAgICB9LFxuICAgICAgXSxcbiAgICB9LFxuICAgIHtcbiAgICAgIHNjaGVtYTogXCJwdWJsaWNcIixcbiAgICAgIG5hbWU6IFwiY29tcG9zaXRlX3BrXCIsXG4gICAgICBjb2x1bW5zOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBuYW1lOiBcImlkXCIsXG4gICAgICAgICAgZGF0YXR5cGU6IFwidXVpZFwiLFxuICAgICAgICAgIGRhdGF0eXBlX3NjaGVtYTogXCJwZ19jYXRhbG9nXCIsXG4gICAgICAgICAgcGs6IHRydWUsXG4gICAgICAgICAgY29tcHV0ZWQ6IGZhbHNlLFxuICAgICAgICAgIG9wdGlvbnM6IFtdLFxuICAgICAgICAgIG51bGxhYmxlOiBmYWxzZSxcbiAgICAgICAgICBmb3JlaWduX2tleV9zY2hlbWE6IG51bGwsXG4gICAgICAgICAgZm9yZWlnbl9rZXlfdGFibGU6IG51bGwsXG4gICAgICAgICAgZm9yZWlnbl9rZXlfY29sdW1uOiBudWxsLFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgbmFtZTogXCJuYW1lXCIsXG4gICAgICAgICAgZGF0YXR5cGU6IFwidGV4dFwiLFxuICAgICAgICAgIGRhdGF0eXBlX3NjaGVtYTogXCJwZ19jYXRhbG9nXCIsXG4gICAgICAgICAgcGs6IHRydWUsXG4gICAgICAgICAgY29tcHV0ZWQ6IGZhbHNlLFxuICAgICAgICAgIG9wdGlvbnM6IFtdLFxuICAgICAgICAgIG51bGxhYmxlOiB0cnVlLFxuICAgICAgICAgIGZvcmVpZ25fa2V5X3NjaGVtYTogbnVsbCxcbiAgICAgICAgICBmb3JlaWduX2tleV90YWJsZTogbnVsbCxcbiAgICAgICAgICBmb3JlaWduX2tleV9jb2x1bW46IG51bGwsXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBuYW1lOiBcImNyZWF0ZWRfYXRcIixcbiAgICAgICAgICBkYXRhdHlwZTogXCJ0aW1lc3RhbXBcIixcbiAgICAgICAgICBkYXRhdHlwZV9zY2hlbWE6IFwicGdfY2F0YWxvZ1wiLFxuICAgICAgICAgIHBrOiBmYWxzZSxcbiAgICAgICAgICBjb21wdXRlZDogZmFsc2UsXG4gICAgICAgICAgb3B0aW9uczogW10sXG4gICAgICAgICAgbnVsbGFibGU6IHRydWUsXG4gICAgICAgICAgZm9yZWlnbl9rZXlfc2NoZW1hOiBudWxsLFxuICAgICAgICAgIGZvcmVpZ25fa2V5X3RhYmxlOiBudWxsLFxuICAgICAgICAgIGZvcmVpZ25fa2V5X2NvbHVtbjogbnVsbCxcbiAgICAgICAgfSxcbiAgICAgIF0sXG4gICAgfSxcbiAgXSBhcyBjb25zdCBzYXRpc2ZpZXMgUXVlcnlSZXN1bHQ8dHlwZW9mIGdldFRhYmxlc1F1ZXJ5Pjtcbn1cblxuLyoqXG4gKiBSZXR1cm5zIGEgcXVlcnkgdGhhdCByZXR1cm5zIHRoZSBjdXJyZW50IHRpbWV6b25lIHNldHRpbmcgb2YgdGhlIFBvc3RncmVTUUwgZGF0YWJhc2UuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRUaW1lem9uZVF1ZXJ5KCkge1xuICBjb25zdCBidWlsZGVyID0gZ2V0UG9zdGdyZVNRTEJ1aWxkZXIoKTtcblxuICByZXR1cm4gY29tcGlsZShidWlsZGVyLnNlbGVjdE5vRnJvbShidWlsZGVyLmZuPHN0cmluZz4oXCJjdXJyZW50X3NldHRpbmdcIiwgW3NxbC5saXQoXCJ0aW1lem9uZVwiKV0pLmFzKFwidGltZXpvbmVcIikpKTtcbn1cblxuLyoqXG4gKiBGb3IgdGVzdGluZyBwdXJwb3Nlcy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG1vY2tUaW1lem9uZVF1ZXJ5KCkge1xuICByZXR1cm4gW3sgdGltZXpvbmU6IFwiVVRDXCIgfV0gYXMgY29uc3Qgc2F0aXNmaWVzIFF1ZXJ5UmVzdWx0PHR5cGVvZiBnZXRUaW1lem9uZVF1ZXJ5Pjtcbn1cblxuLyoqXG4gKiBXZSBkb24ndCB3YW50IFBvc3RncmVTUUwgaW50ZXJuYWxzIGluIGludHJvc3BlY3Rpb24gcmVzdWx0cy4gVG8gYmUgdXNlZCBpbiBgJGNhbGxgLlxuICovXG5mdW5jdGlvbiBleGNsdWRlU3lzdGVtVGFibGVzPFxuICBUIGV4dGVuZHMgU2VsZWN0UXVlcnlCdWlsZGVyPFxuICAgIERhdGFiYXNlICYgeyBuczogRGF0YWJhc2VbXCJwZ19jYXRhbG9nLnBnX25hbWVzcGFjZVwiXTsgY2xzOiBEYXRhYmFzZVtcInBnX2NhdGFsb2cucGdfY2xhc3NcIl0gfSxcbiAgICBcIm5zXCIgfCBcImNsc1wiLFxuICAgIG9iamVjdFxuICA+LFxuPihxYjogVCk6IFQge1xuICByZXR1cm4gcWIud2hlcmUoYG5zLm5zcG5hbWVgLCBgIX5gLCBgXnBnX2ApLndoZXJlKGBucy5uc3BuYW1lYCwgYCE9YCwgYGluZm9ybWF0aW9uX3NjaGVtYWApIGFzIG5ldmVyO1xufVxuIiwgIi8vLyA8cmVmZXJlbmNlIHR5cGVzPVwiLi9wb3N0Z3Jlcy5kLnRzXCIgLz5cbmltcG9ydCB7IHNxbCB9IGZyb20gJy4uL3Jhdy1idWlsZGVyL3NxbC5qcyc7XG4vKipcbiAqIEEgcG9zdGdyZXMgaGVscGVyIGZvciBhZ2dyZWdhdGluZyBhIHN1YnF1ZXJ5IChvciBvdGhlciBleHByZXNzaW9uKSBpbnRvIGEgSlNPTkIgYXJyYXkuXG4gKlxuICogIyMjIEV4YW1wbGVzXG4gKlxuICogPCEtLSBzaXRlRXhhbXBsZShcInNlbGVjdFwiLCBcIk5lc3RlZCBhcnJheVwiLCAxMTApIC0tPlxuICpcbiAqIFdoaWxlIGt5c2VseSBpcyBub3QgYW4gT1JNIGFuZCBpdCBkb2Vzbid0IGhhdmUgdGhlIGNvbmNlcHQgb2YgcmVsYXRpb25zLCB3ZSBkbyBwcm92aWRlXG4gKiBoZWxwZXJzIGZvciBmZXRjaGluZyBuZXN0ZWQgb2JqZWN0cyBhbmQgYXJyYXlzIGluIGEgc2luZ2xlIHF1ZXJ5LiBJbiB0aGlzIGV4YW1wbGUgd2VcbiAqIHVzZSB0aGUgYGpzb25BcnJheUZyb21gIGhlbHBlciB0byBmZXRjaCBwZXJzb24ncyBwZXRzIGFsb25nIHdpdGggdGhlIHBlcnNvbidzIGlkLlxuICpcbiAqIFBsZWFzZSBrZWVwIGluIG1pbmQgdGhhdCB0aGUgaGVscGVycyB1bmRlciB0aGUgYGt5c2VseS9oZWxwZXJzYCBmb2xkZXIsIGluY2x1ZGluZ1xuICogYGpzb25BcnJheUZyb21gLCBhcmUgbm90IGd1YXJhbnRlZWQgdG8gd29yayB3aXRoIHRoaXJkIHBhcnR5IGRpYWxlY3RzLiBJbiBvcmRlciBmb3JcbiAqIHRoZW0gdG8gd29yaywgdGhlIGRpYWxlY3QgbXVzdCBhdXRvbWF0aWNhbGx5IHBhcnNlIHRoZSBganNvbmAgZGF0YSB0eXBlIGludG9cbiAqIEphdmFTY3JpcHQgSlNPTiB2YWx1ZXMgbGlrZSBvYmplY3RzIGFuZCBhcnJheXMuIFNvbWUgZGlhbGVjdHMgbWlnaHQgc2ltcGx5IHJldHVyblxuICogdGhlIGRhdGEgYXMgYSBKU09OIHN0cmluZy4gSW4gdGhlc2UgY2FzZXMgeW91IGNhbiB1c2UgdGhlIGJ1aWx0IGluIGBQYXJzZUpTT05SZXN1bHRzUGx1Z2luYFxuICogdG8gcGFyc2UgdGhlIHJlc3VsdHMuXG4gKlxuICogYGBgdHNcbiAqIGltcG9ydCB7IGpzb25BcnJheUZyb20gfSBmcm9tICdreXNlbHkvaGVscGVycy9wb3N0Z3JlcydcbiAqXG4gKiBjb25zdCByZXN1bHQgPSBhd2FpdCBkYlxuICogICAuc2VsZWN0RnJvbSgncGVyc29uJylcbiAqICAgLnNlbGVjdCgoZWIpID0+IFtcbiAqICAgICAnaWQnLFxuICogICAgIGpzb25BcnJheUZyb20oXG4gKiAgICAgICBlYi5zZWxlY3RGcm9tKCdwZXQnKVxuICogICAgICAgICAuc2VsZWN0KFsncGV0LmlkIGFzIHBldF9pZCcsICdwZXQubmFtZSddKVxuICogICAgICAgICAud2hlcmVSZWYoJ3BldC5vd25lcl9pZCcsICc9JywgJ3BlcnNvbi5pZCcpXG4gKiAgICAgICAgIC5vcmRlckJ5KCdwZXQubmFtZScpXG4gKiAgICAgKS5hcygncGV0cycpXG4gKiAgIF0pXG4gKiAgIC5leGVjdXRlKClcbiAqIGBgYFxuICpcbiAqIFRoZSBnZW5lcmF0ZWQgU1FMIChQb3N0Z3JlU1FMKTpcbiAqXG4gKiBgYGBzcWxcbiAqIHNlbGVjdCBcImlkXCIsIChcbiAqICAgc2VsZWN0IGNvYWxlc2NlKGpzb25fYWdnKGFnZyksICdbXScpIGZyb20gKFxuICogICAgIHNlbGVjdCBcInBldFwiLlwiaWRcIiBhcyBcInBldF9pZFwiLCBcInBldFwiLlwibmFtZVwiXG4gKiAgICAgZnJvbSBcInBldFwiXG4gKiAgICAgd2hlcmUgXCJwZXRcIi5cIm93bmVyX2lkXCIgPSBcInBlcnNvblwiLlwiaWRcIlxuICogICAgIG9yZGVyIGJ5IFwicGV0XCIuXCJuYW1lXCJcbiAqICAgKSBhcyBhZ2dcbiAqICkgYXMgXCJwZXRzXCJcbiAqIGZyb20gXCJwZXJzb25cIlxuICogYGBgXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBqc29uQXJyYXlGcm9tKGV4cHIpIHtcbiAgICByZXR1cm4gc3FsIGAoc2VsZWN0IGNvYWxlc2NlKGpzb25fYWdnKGFnZyksICdbXScpIGZyb20gJHtleHByfSBhcyBhZ2cpYDtcbn1cbi8qKlxuICogQSBwb3N0Z3JlcyBoZWxwZXIgZm9yIHR1cm5pbmcgYSBzdWJxdWVyeSAob3Igb3RoZXIgZXhwcmVzc2lvbikgaW50byBhIEpTT04gb2JqZWN0LlxuICpcbiAqIFRoZSBzdWJxdWVyeSBtdXN0IG9ubHkgcmV0dXJuIG9uZSByb3cuXG4gKlxuICogIyMjIEV4YW1wbGVzXG4gKlxuICogPCEtLSBzaXRlRXhhbXBsZShcInNlbGVjdFwiLCBcIk5lc3RlZCBvYmplY3RcIiwgMTIwKSAtLT5cbiAqXG4gKiBXaGlsZSBreXNlbHkgaXMgbm90IGFuIE9STSBhbmQgaXQgZG9lc24ndCBoYXZlIHRoZSBjb25jZXB0IG9mIHJlbGF0aW9ucywgd2UgZG8gcHJvdmlkZVxuICogaGVscGVycyBmb3IgZmV0Y2hpbmcgbmVzdGVkIG9iamVjdHMgYW5kIGFycmF5cyBpbiBhIHNpbmdsZSBxdWVyeS4gSW4gdGhpcyBleGFtcGxlIHdlXG4gKiB1c2UgdGhlIGBqc29uT2JqZWN0RnJvbWAgaGVscGVyIHRvIGZldGNoIHBlcnNvbidzIGZhdm9yaXRlIHBldCBhbG9uZyB3aXRoIHRoZSBwZXJzb24ncyBpZC5cbiAqXG4gKiBQbGVhc2Uga2VlcCBpbiBtaW5kIHRoYXQgdGhlIGhlbHBlcnMgdW5kZXIgdGhlIGBreXNlbHkvaGVscGVyc2AgZm9sZGVyLCBpbmNsdWRpbmdcbiAqIGBqc29uT2JqZWN0RnJvbWAsIGFyZSBub3QgZ3VhcmFudGVlZCB0byB3b3JrIHdpdGggdGhpcmQtcGFydHkgZGlhbGVjdHMuIEluIG9yZGVyIGZvclxuICogdGhlbSB0byB3b3JrLCB0aGUgZGlhbGVjdCBtdXN0IGF1dG9tYXRpY2FsbHkgcGFyc2UgdGhlIGBqc29uYCBkYXRhIHR5cGUgaW50b1xuICogSmF2YVNjcmlwdCBKU09OIHZhbHVlcyBsaWtlIG9iamVjdHMgYW5kIGFycmF5cy4gU29tZSBkaWFsZWN0cyBtaWdodCBzaW1wbHkgcmV0dXJuXG4gKiB0aGUgZGF0YSBhcyBhIEpTT04gc3RyaW5nLiBJbiB0aGVzZSBjYXNlcyB5b3UgY2FuIHVzZSB0aGUgYnVpbHQgaW4gYFBhcnNlSlNPTlJlc3VsdHNQbHVnaW5gXG4gKiB0byBwYXJzZSB0aGUgcmVzdWx0cy5cbiAqXG4gKiBgYGB0c1xuICogaW1wb3J0IHsganNvbk9iamVjdEZyb20gfSBmcm9tICdreXNlbHkvaGVscGVycy9wb3N0Z3JlcydcbiAqXG4gKiBjb25zdCByZXN1bHQgPSBhd2FpdCBkYlxuICogICAuc2VsZWN0RnJvbSgncGVyc29uJylcbiAqICAgLnNlbGVjdCgoZWIpID0+IFtcbiAqICAgICAnaWQnLFxuICogICAgIGpzb25PYmplY3RGcm9tKFxuICogICAgICAgZWIuc2VsZWN0RnJvbSgncGV0JylcbiAqICAgICAgICAgLnNlbGVjdChbJ3BldC5pZCBhcyBwZXRfaWQnLCAncGV0Lm5hbWUnXSlcbiAqICAgICAgICAgLndoZXJlUmVmKCdwZXQub3duZXJfaWQnLCAnPScsICdwZXJzb24uaWQnKVxuICogICAgICAgICAud2hlcmUoJ3BldC5pc19mYXZvcml0ZScsICc9JywgdHJ1ZSlcbiAqICAgICApLmFzKCdmYXZvcml0ZV9wZXQnKVxuICogICBdKVxuICogICAuZXhlY3V0ZSgpXG4gKiBgYGBcbiAqXG4gKiBUaGUgZ2VuZXJhdGVkIFNRTCAoUG9zdGdyZVNRTCk6XG4gKlxuICogYGBgc3FsXG4gKiBzZWxlY3QgXCJpZFwiLCAoXG4gKiAgIHNlbGVjdCB0b19qc29uKG9iaikgZnJvbSAoXG4gKiAgICAgc2VsZWN0IFwicGV0XCIuXCJpZFwiIGFzIFwicGV0X2lkXCIsIFwicGV0XCIuXCJuYW1lXCJcbiAqICAgICBmcm9tIFwicGV0XCJcbiAqICAgICB3aGVyZSBcInBldFwiLlwib3duZXJfaWRcIiA9IFwicGVyc29uXCIuXCJpZFwiXG4gKiAgICAgYW5kIFwicGV0XCIuXCJpc19mYXZvcml0ZVwiID0gJDFcbiAqICAgKSBhcyBvYmpcbiAqICkgYXMgXCJmYXZvcml0ZV9wZXRcIlxuICogZnJvbSBcInBlcnNvblwiXG4gKiBgYGBcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGpzb25PYmplY3RGcm9tKGV4cHIpIHtcbiAgICByZXR1cm4gc3FsIGAoc2VsZWN0IHRvX2pzb24ob2JqKSBmcm9tICR7ZXhwcn0gYXMgb2JqKWA7XG59XG4vKipcbiAqIFRoZSBQb3N0Z3JlU1FMIGBqc29uX2J1aWxkX29iamVjdGAgZnVuY3Rpb24uXG4gKlxuICogTk9URTogVGhpcyBoZWxwZXIgaXMgb25seSBndWFyYW50ZWVkIHRvIGZ1bGx5IHdvcmsgd2l0aCB0aGUgYnVpbHQtaW4gYFBvc3RncmVzRGlhbGVjdGAuXG4gKiBXaGlsZSB0aGUgcHJvZHVjZWQgU1FMIGlzIGNvbXBhdGlibGUgd2l0aCBhbGwgUG9zdGdyZVNRTCBkYXRhYmFzZXMsIHNvbWUgdGhpcmQtcGFydHkgZGlhbGVjdHNcbiAqIG1heSBub3QgcGFyc2UgdGhlIG5lc3RlZCBKU09OIGludG8gb2JqZWN0cy4gSW4gdGhlc2UgY2FzZXMgeW91IGNhbiB1c2UgdGhlIGJ1aWx0IGluXG4gKiBgUGFyc2VKU09OUmVzdWx0c1BsdWdpbmAgdG8gcGFyc2UgdGhlIHJlc3VsdHMuXG4gKlxuICogIyMjIEV4YW1wbGVzXG4gKlxuICogYGBgdHNcbiAqIGltcG9ydCB7IHNxbCB9IGZyb20gJ2t5c2VseSdcbiAqIGltcG9ydCB7IGpzb25CdWlsZE9iamVjdCB9IGZyb20gJ2t5c2VseS9oZWxwZXJzL3Bvc3RncmVzJ1xuICpcbiAqIGNvbnN0IHJlc3VsdCA9IGF3YWl0IGRiXG4gKiAgIC5zZWxlY3RGcm9tKCdwZXJzb24nKVxuICogICAuc2VsZWN0KChlYikgPT4gW1xuICogICAgICdpZCcsXG4gKiAgICAganNvbkJ1aWxkT2JqZWN0KHtcbiAqICAgICAgIGZpcnN0OiBlYi5yZWYoJ2ZpcnN0X25hbWUnKSxcbiAqICAgICAgIGxhc3Q6IGViLnJlZignbGFzdF9uYW1lJyksXG4gKiAgICAgICBmdWxsOiBzcWw8c3RyaW5nPmBmaXJzdF9uYW1lIHx8XHUwMEEwJyAnIHx8IGxhc3RfbmFtZWBcbiAqICAgICB9KS5hcygnbmFtZScpXG4gKiAgIF0pXG4gKiAgIC5leGVjdXRlKClcbiAqXG4gKiByZXN1bHRbMF0/LmlkXG4gKiByZXN1bHRbMF0/Lm5hbWUuZmlyc3RcbiAqIHJlc3VsdFswXT8ubmFtZS5sYXN0XG4gKiByZXN1bHRbMF0/Lm5hbWUuZnVsbFxuICogYGBgXG4gKlxuICogVGhlIGdlbmVyYXRlZCBTUUwgKFBvc3RncmVTUUwpOlxuICpcbiAqIGBgYHNxbFxuICogc2VsZWN0IFwiaWRcIiwganNvbl9idWlsZF9vYmplY3QoXG4gKiAgICdmaXJzdCcsIGZpcnN0X25hbWUsXG4gKiAgICdsYXN0JywgbGFzdF9uYW1lLFxuICogICAnZnVsbCcsIGZpcnN0X25hbWUgfHwgJyAnIHx8IGxhc3RfbmFtZVxuICogKSBhcyBcIm5hbWVcIlxuICogZnJvbSBcInBlcnNvblwiXG4gKiBgYGBcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGpzb25CdWlsZE9iamVjdChvYmopIHtcbiAgICByZXR1cm4gc3FsIGBqc29uX2J1aWxkX29iamVjdCgke3NxbC5qb2luKE9iamVjdC5rZXlzKG9iaikuZmxhdE1hcCgoaykgPT4gW3NxbC5saXQoayksIG9ialtrXV0pKX0pYDtcbn1cbi8qKlxuICogVGhlIFBvc3RncmVTUUwgYG1lcmdlX2FjdGlvbmAgZnVuY3Rpb24uXG4gKlxuICogVGhpcyBmdW5jdGlvbiBjYW4gYmUgdXNlZCBpbiBhIGByZXR1cm5pbmdgIGNsYXVzZSB0byBnZXQgdGhlIGFjdGlvbiB0aGF0IHdhc1xuICogcGVyZm9ybWVkIGluIGEgYG1lcmdlSW50b2AgcXVlcnkuIFRoZSBmdW5jdGlvbiByZXR1cm5zIG9uZSBvZiB0aGUgZm9sbG93aW5nXG4gKiBzdHJpbmdzOiBgJ0lOU0VSVCdgLCBgJ1VQREFURSdgLCBvciBgJ0RFTEVURSdgLlxuICpcbiAqICMjIyBFeGFtcGxlc1xuICpcbiAqIGBgYHRzXG4gKiBpbXBvcnQgeyBtZXJnZUFjdGlvbiB9IGZyb20gJ2t5c2VseS9oZWxwZXJzL3Bvc3RncmVzJ1xuICpcbiAqIGNvbnN0IHJlc3VsdCA9IGF3YWl0IGRiXG4gKiAgIC5tZXJnZUludG8oJ3BlcnNvbiBhcyBwJylcbiAqICAgLnVzaW5nKCdwZXJzb25fYmFja3VwIGFzIHBiJywgJ3AuaWQnLCAncGIuaWQnKVxuICogICAud2hlbk1hdGNoZWQoKVxuICogICAudGhlblVwZGF0ZVNldCgoeyByZWYgfSkgPT4gKHtcbiAqICAgICBmaXJzdF9uYW1lOiByZWYoJ3BiLmZpcnN0X25hbWUnKSxcbiAqICAgICB1cGRhdGVkX2F0OiByZWYoJ3BiLnVwZGF0ZWRfYXQnKS4kY2FzdFRvPHN0cmluZyB8IG51bGw+KCksXG4gKiAgIH0pKVxuICogICAud2hlbk5vdE1hdGNoZWQoKVxuICogICAudGhlbkluc2VydFZhbHVlcygoeyByZWZ9KSA9PiAoe1xuICogICAgIGlkOiByZWYoJ3BiLmlkJyksXG4gKiAgICAgZmlyc3RfbmFtZTogcmVmKCdwYi5maXJzdF9uYW1lJyksXG4gKiAgICAgY3JlYXRlZF9hdDogcmVmKCdwYi51cGRhdGVkX2F0JyksXG4gKiAgICAgdXBkYXRlZF9hdDogcmVmKCdwYi51cGRhdGVkX2F0JykuJGNhc3RUbzxzdHJpbmcgfCBudWxsPigpLFxuICogICB9KSlcbiAqICAgLnJldHVybmluZyhbbWVyZ2VBY3Rpb24oKS5hcygnYWN0aW9uJyksICdwLmlkJywgJ3AudXBkYXRlZF9hdCddKVxuICogICAuZXhlY3V0ZSgpXG4gKlxuICogcmVzdWx0WzBdLmFjdGlvblxuICogYGBgXG4gKlxuICogVGhlIGdlbmVyYXRlZCBTUUwgKFBvc3RncmVTUUwpOlxuICpcbiAqIGBgYHNxbFxuICogbWVyZ2UgaW50byBcInBlcnNvblwiIGFzIFwicFwiXG4gKiB1c2luZyBcInBlcnNvbl9iYWNrdXBcIiBhcyBcInBiXCIgb24gXCJwXCIuXCJpZFwiID0gXCJwYlwiLlwiaWRcIlxuICogd2hlbiBtYXRjaGVkIHRoZW4gdXBkYXRlIHNldFxuICogICBcImZpcnN0X25hbWVcIiA9IFwicGJcIi5cImZpcnN0X25hbWVcIixcbiAqICAgXCJ1cGRhdGVkX2F0XCIgPSBcInBiXCIuXCJ1cGRhdGVkX2F0XCI6OnRleHRcbiAqIHdoZW4gbm90IG1hdGNoZWQgdGhlbiBpbnNlcnQgdmFsdWVzIChcImlkXCIsIFwiZmlyc3RfbmFtZVwiLCBcImNyZWF0ZWRfYXRcIiwgXCJ1cGRhdGVkX2F0XCIpXG4gKiB2YWx1ZXMgKFwicGJcIi5cImlkXCIsIFwicGJcIi5cImZpcnN0X25hbWVcIiwgXCJwYlwiLlwidXBkYXRlZF9hdFwiLCBcInBiXCIuXCJ1cGRhdGVkX2F0XCIpXG4gKiByZXR1cm5pbmcgbWVyZ2VfYWN0aW9uKCkgYXMgXCJhY3Rpb25cIiwgXCJwXCIuXCJpZFwiLCBcInBcIi5cInVwZGF0ZWRfYXRcIlxuICogYGBgXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBtZXJnZUFjdGlvbigpIHtcbiAgICByZXR1cm4gc3FsIGBtZXJnZV9hY3Rpb24oKWA7XG59XG4iXSwKICAibWFwcGluZ3MiOiAiOzs7Ozs7OzswSEFBQUEsSUNBQUMsSUNBQUMsSUE2VE8sU0FBU0MsRUFBbUJDLEVBQXVDLENBQ3hFLEdBQU0sQ0FBRSxNQUFBQyxFQUFPLE1BQUFDLENBQU0sRUFBSUYsRUFFbkJHLEVBQWVGLEVBRXJCLE9BQUFFLEVBQWEsTUFBUUQsRUFFZCxDQUFDQyxDQUFZLENBQ3RCLENDclVBQyxJQUVPLElBQU1DLEVBQTZFLENBQ3hGLEtBQU0sQ0FDSixNQUFPLFNBQ1QsRUFDQSxRQUFTLENBQ1AsTUFBTyxTQUNULEVBQ0EsTUFBTyxDQUNMLE1BQU8sUUFDVCxFQUNBLEtBQU0sQ0FDSixNQUFPLFFBQ1QsRUFDQSxPQUFRLENBQ04sTUFBTyxRQUNULEVBSUEsS0FBTSxDQUNKLE1BQU8sVUFDVCxFQUlBLFNBQVUsQ0FDUixNQUFPLFFBQ1QsRUFDQSxLQUFNLENBQ0osTUFBTyxRQUNULEVBQ0EsUUFBUyxDQUNQLE1BQU8sUUFDVCxFQUNBLEtBQU0sQ0FDSixNQUFPLFFBQ1QsRUFNQSxLQUFNLENBQ0osTUFBTyxNQUNULEVBTUEsVUFBVyxDQUNULE1BQU8sVUFDVCxFQU1BLFlBQWEsQ0FDWCxNQUFPLFVBQ1QsRUFNQSw4QkFBK0IsQ0FDN0IsTUFBTyxVQUNULEVBTUEsMkJBQTRCLENBQzFCLE1BQU8sVUFDVCxFQU1BLE9BQVEsQ0FDTixNQUFPLE1BQ1QsRUFNQSx5QkFBMEIsQ0FDeEIsTUFBTyxNQUNULEVBTUEsc0JBQXVCLENBQ3JCLE1BQU8sVUFDVCxFQUNBLEtBQU0sQ0FDSixNQUFPLFFBQ1QsRUFFQSxLQUFNLENBQ0osTUFBTyxTQUNULEVBQ0EsS0FBTSxDQUNKLE1BQU8sU0FDVCxFQUNBLEtBQU0sQ0FDSixNQUFPLFNBQ1QsRUFDQSxTQUFVLENBQ1IsTUFBTyxTQUNULEVBQ0EsUUFBUyxDQUNQLE1BQU8sU0FDVCxFQUNBLE9BQVEsQ0FDTixN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QWtCLEVBR3pDLE9BQU83QixFQUFvQixDQUFFLE9BQUFMLEVBQVEsU0FBQUksRUFBVSxNQUZqQyxDQUFFLFdBQVksQ0FBQyxFQUFHLElBQUssVUFBVyxDQUVLLENBQUMsQ0FjeEQiLAogICJuYW1lcyI6IFsiaW5pdF9kZWZpbmVfQUNDRUxFUkFURV9TQ0hFTUFfQllfUFJPVklERVIiLCAiaW5pdF9kZWZpbmVfQUNDRUxFUkFURV9TQ0hFTUFfQllfUFJPVklERVIiLCAiaW5pdF9kZWZpbmVfQUNDRUxFUkFURV9TQ0hFTUFfQllfUFJPVklERVIiLCAiY3JlYXRlQWRhcHRlckVycm9yIiwgImFyZ3MiLCAiZXJyb3IiLCAicXVlcnkiLCAiYWRhcHRlckVycm9yIiwgImluaXRfZGVmaW5lX0FDQ0VMRVJBVEVfU0NIRU1BX0JZX1BST1ZJREVSIiwgIlBPU1RHUkVTUUxfREFUQV9UWVBFU19UT19NRVRBREFUQSIsICJpbml0X2RlZmluZV9BQ0NFTEVSQVRFX1NDSEVNQV9CWV9QUk9WSURFUiIsICJpbml0X2RlZmluZV9BQ0NFTEVSQVRFX1NDSEVNQV9CWV9QUk9WSURFUiIsICJnZXRQb3N0Z3JlU1FMQnVpbGRlciIsICJyZXF1aXJlbWVudHMiLCAiZ2V0QnVpbGRlciIsICJQb3N0Z3Jlc0FkYXB0ZXIiLCAiUG9zdGdyZXNRdWVyeUNvbXBpbGVyIiwgImdldEluc2VydFF1ZXJ5IiwgImRldGFpbHMiLCAicmVxdWlyZW1lbnRzIiwgInRhYmxlIiwgInJvd3MiLCAidGFibGVOYW1lIiwgInNjaGVtYSIsICJjb2x1bW5zIiwgImJ1aWxkZXIiLCAiZ2V0UG9zdGdyZVNRTEJ1aWxkZXIiLCAiY29scyIsICJjb21waWxlIiwgImFwcGx5VHJhbnNmb3JtYXRpb25zIiwgImViIiwgImdldFNlbGVjdFF1ZXJ5IiwgInBhZ2VJbmRleCIsICJwYWdlU2l6ZSIsICJzb3J0T3JkZXIiLCAiZmlsdGVyIiwgImNvdW50UXVlcnkiLCAic3FsIiwgInFiIiwgIml0ZW0iLCAiZ2V0U2VsZWN0RmlsdGVyRXhwcmVzc2lvbiIsICJidWlsZEJhc2VFeHByZXNzaW9uQnVpbGRlciIsICJzcGVjIiwgImNvbHVtbiIsICJvcGVyYXRvciIsICJ2YWx1ZSIsICJjb2x1bW5SZWYiLCAiZ3JvdXAiLCAibGhzIiwgImZpbHRlcnMiLCAib3JHcm91cHNPZkFuZEJ1aWxkZXJzIiwgImN1cnJlbnRBbmRHcm91cEJ1aWxkZXJzIiwgImkiLCAiYW5kRXhwcmVzc2lvbnMiLCAibW9ja1NlbGVjdFF1ZXJ5IiwgImdldFVwZGF0ZVF1ZXJ5IiwgImNoYW5nZXMiLCAicm93IiwgImFwcGx5SW5mZXJyZWRSb3dGaWx0ZXJzIiwgImdldERlbGV0ZVF1ZXJ5IiwgImluaXRfZGVmaW5lX0FDQ0VMRVJBVEVfU0NIRU1BX0JZX1BST1ZJREVSIiwgImluaXRfZGVmaW5lX0FDQ0VMRVJBVEVfU0NIRU1BX0JZX1BST1ZJREVSIiwgImpzb25BcnJheUZyb20iLCAiZXhwciIsICJzcWwiLCAiUkVHVUxBUl9UQUJMRV9LSU5EIiwgIlZJRVdfVEFCTEVfS0lORCIsICJUQUJMRV9LSU5EUyIsICJnZXRUYWJsZXNRdWVyeSIsICJyZXF1aXJlbWVudHMiLCAiY29tcGlsZSIsICJnZXRQb3N0Z3JlU1FMQnVpbGRlciIsICJleGNsdWRlU3lzdGVtVGFibGVzIiwgImViIiwgImpzb25BcnJheUZyb20iLCAiamIiLCAib25fZWIiLCAic3FsIiwgIm1vY2tUYWJsZXNRdWVyeSIsICJnZXRUaW1lem9uZVF1ZXJ5IiwgImJ1aWxkZXIiLCAibW9ja1RpbWV6b25lUXVlcnkiLCAicWIiLCAiY3JlYXRlUG9zdGdyZXNBZGFwdGVyIiwgInJlcXVpcmVtZW50cyIsICJleGVjdXRvciIsICJvdGhlclJlcXVpcmVtZW50cyIsICJvcHRpb25zIiwgInRhYmxlc1F1ZXJ5IiwgImdldFRhYmxlc1F1ZXJ5IiwgInRpbWV6b25lUXVlcnkiLCAiZ2V0VGltZXpvbmVRdWVyeSIsICJ0YWJsZXNFcnJvciIsICJ0YWJsZXMiLCAidGltZXpvbmVFcnJvciIsICJ0aW1lem9uZXMiLCAiY3JlYXRlQWRhcHRlckVycm9yIiwgInRpbWV6b25lIiwgImNyZWF0ZUludHJvc3BlY3Rpb24iLCAiZXJyb3IiLCAiZGV0YWlscyIsICJxdWVyeSIsICJnZXRTZWxlY3RRdWVyeSIsICJyZXN1bHRzIiwgImdldEluc2VydFF1ZXJ5IiwgInJvd3MiLCAiZ2V0VXBkYXRlUXVlcnkiLCAicm93IiwgImdldERlbGV0ZVF1ZXJ5IiwgImFyZ3MiLCAicmVzdWx0IiwgInNjaGVtYXMiLCAiY29sdW1ucyIsICJ0YWJsZU5hbWUiLCAic2NoZW1hIiwgImNvbHVtbnNSZWNvcmQiLCAiY29sdW1uIiwgImRhdGF0eXBlIiwgImRhdGF0eXBlX3NjaGVtYSIsICJjb2x1bW5OYW1lIiwgIm51bGxhYmxlIiwgImlzQXJyYXkiLCAic3RyaXBwZWREYXRhVHlwZSIsICJQT1NUR1JFU1FMX0RBVEFfVFlQRVNfVE9fTUVUQURBVEEiLCAiZmlsdGVyT3BlcmF0b3JzIiwgIm1vY2tJbnRyb3NwZWN0IiwgIm1vY2tUYWJsZXNRdWVyeSIsICJtb2NrVGltZXpvbmVRdWVyeSJdCn0K
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";var R=Object.defineProperty;var A=Object.getOwnPropertyDescriptor;var x=Object.getOwnPropertyNames;var P=Object.prototype.hasOwnProperty;var S=(e,t)=>{for(var r in t)R(e,r,{get:t[r],enumerable:!0})},C=(e,t,r,n)=>{if(t&&typeof t=="object"||typeof t=="function")for(let o of x(t))!P.call(e,o)&&o!==r&&R(e,o,{get:()=>t[o],enumerable:!(n=A(t,o))||n.enumerable});return e};var q=e=>C(R({},"__esModule",{value:!0}),e);var k={};S(k,{createAccelerateHttpClient:()=>E,deserializeRawResult:()=>y});module.exports=q(k);var p={postgres:{encoded:"ZGF0YXNvdXJjZSBkYiB7CiAgICBwcm92aWRlciA9ICJwb3N0Z3JlcyIKICAgIHVybCAgICAgID0gZW52KCJEQVRBQkFTRV9VUkwiKQp9CiAgICAKZ2VuZXJhdG9yIGNsaWVudCB7CiAgICBwcm92aWRlciA9ICJwcmlzbWEtY2xpZW50LWpzIgp9",hash:"54195896aeafa3318ca33f5a8bb44c6b4d89c368cb15288f3bd5ace35a3f9227"}};function y(e,t=T){let{columns:r,rows:n,types:o}=e,a=[],c=H(r);for(let s=0,d=n.length;s<d;s++){let l=n[s],i={...c};for(let u=0,w=l.length;u<w;u++){let m=r[u];i[m]=t(l[u],o[u],m)}a.push(i)}return a}function T(e,t,r){return e}function H(e){let t={};for(let r=0,n=e.length;r<n;r++)t[e[r]]=null;return t}var Q=["postgres"],g="accelerate.prisma-data.net",h=p;function E(e){let{provider:t}=e;if(t!=="postgresql"&&!Q.includes(t))throw new Error(`Invalid provider: ${t}`);let r=O(e);return{execute:D(e,r)}}function O(e){let{host:t,engineHash:r,clientVersion:n,provider:o,apiKey:a}=e,s=`${t===g?"https":"http"}://${t||g}/${n}/${f(o).hash}`,d=e.fetch||fetch,l={Authorization:`Bearer ${a}`,"Prisma-Engine-Hash":r};return i=>d(`${s}/${i.path}`,{body:i.body,headers:l,method:i.method,signal:i.signal})}async function _(e,t,r){let n=await r({body:f(e.provider).encoded,method:"PUT",path:"schema",signal:t?.abortSignal});if(!n.ok){try{console.error(await n.text())}catch{}throw new Error(`Failed to upload schema to query engine: ${n.statusText}`)}}function f(e){return e==="postgresql"?h.postgres:h[e]}async function v(e,t,r){let n=await r({body:JSON.stringify(e),method:"POST",path:"graphql",signal:t?.abortSignal});if(!n.ok){try{console.error(await n.text())}catch{}throw new Error(`Failed to execute query: ${n.statusText}`)}return await n.json()}function D(e,t){let{resultDeserializerFn:r=y}=e,n=null;return async(o,a)=>{try{await(n||=_(e,a,t));let{data:c,errors:s}=await v({action:"queryRaw",query:{arguments:{parameters:o.parameters,query:o.sql},selection:{}}},a,t);return s?[new AggregateError(s,"Errors occurred while executing the query")]:[null,r(c.queryRaw)]}catch(c){return[c]}}}
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vZGF0YS9hY2NlbGVyYXRlL2luZGV4LnRzIiwgIjxkZWZpbmU6QUNDRUxFUkFURV9TQ0hFTUFfQllfUFJPVklERVI+IiwgIi4uLy4uLy4uL2RhdGEvYWNjZWxlcmF0ZS9kZXNlcmlhbGl6ZXIudHMiLCAiLi4vLi4vLi4vZGF0YS9hY2NlbGVyYXRlL2h0dHAtY2xpZW50LnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyJleHBvcnQge1xuICB0eXBlIERlc2VyaWFsaXplZFJlc3BvbnNlLFxuICBkZXNlcmlhbGl6ZVJhd1Jlc3VsdCxcbiAgdHlwZSBRdWVyeUludHJvc3BlY3Rpb25CdWlsdGluVHlwZSxcbiAgdHlwZSBSYXdSZXNwb25zZSxcbn0gZnJvbSBcIi4vZGVzZXJpYWxpemVyXCI7XG5leHBvcnQge1xuICB0eXBlIEFjY2VsZXJhdGVIdHRwQ2xpZW50LFxuICB0eXBlIEFjY2VsZXJhdGVIdHRwQ2xpZW50UGFyYW1zLFxuICBjcmVhdGVBY2NlbGVyYXRlSHR0cENsaWVudCxcbiAgdHlwZSBTdXBwb3J0ZWRBY2NlbGVyYXRlUHJvdmlkZXIsXG59IGZyb20gXCIuL2h0dHAtY2xpZW50XCI7XG4iLCAiIiwgIi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIFNUT0xFTiBBTkQgQUxURVJFRCBGUk9NIGh0dHBzOi8vZ2l0aHViLmNvbS9wcmlzbWEvcHJpc21hL2Jsb2IvMDc5MzJhZTE4MTMyMzgxYmI4NGRiODg5YTlkY2FkMGU2YzllNmE2OC9wYWNrYWdlcy9jbGllbnQvc3JjL3J1bnRpbWUvdXRpbHMvZGVzZXJpYWxpemVSYXdSZXN1bHRzLnRzXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbmV4cG9ydCBmdW5jdGlvbiBkZXNlcmlhbGl6ZVJhd1Jlc3VsdChcbiAgcmVzcG9uc2U6IFJhd1Jlc3BvbnNlLFxuICB2YWx1ZURlc2VyaWFsaXplckZuOiAoXG4gICAgdmFsdWU6IHVua25vd24sXG4gICAgdHlwZTogUXVlcnlJbnRyb3NwZWN0aW9uQnVpbHRpblR5cGUsXG4gICAgY29sdW1uOiBzdHJpbmcsXG4gICkgPT4gdW5rbm93biA9IGRlc2VyaWFsaXplVmFsdWUsXG4pOiBEZXNlcmlhbGl6ZWRSZXNwb25zZSB7XG4gIGNvbnN0IHsgY29sdW1ucywgcm93cywgdHlwZXMgfSA9IHJlc3BvbnNlO1xuXG4gIGNvbnN0IGRlc2VyaWFsaXplZFJlc3BvbnNlOiBEZXNlcmlhbGl6ZWRSZXNwb25zZSA9IFtdO1xuXG4gIC8vIFBlcmZvcm1hbmNlIG9wdGltaXphdGlvbi4gU2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9icmlhbmMvbm9kZS1wb3N0Z3Jlcy9pc3N1ZXMvMzA0MlxuICBjb25zdCBwcmVidWlsdEVtcHR5T2JqZWN0ID0gY3JlYXRlUHJlYnVpbHRFbXB0eVJlc3VsdE9iamVjdChjb2x1bW5zKTtcblxuICBmb3IgKGxldCBpID0gMCwgbGVuID0gcm93cy5sZW5ndGg7IGkgPCBsZW47IGkrKykge1xuICAgIGNvbnN0IHJvdyA9IHJvd3NbaV0hO1xuXG4gICAgY29uc3QgbWFwcGVkUm93ID0geyAuLi5wcmVidWlsdEVtcHR5T2JqZWN0IH0gYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG5cbiAgICBmb3IgKGxldCBqID0gMCwgbGVuID0gcm93Lmxlbmd0aDsgaiA8IGxlbjsgaisrKSB7XG4gICAgICBjb25zdCBjb2x1bW4gPSBjb2x1bW5zW2pdITtcblxuICAgICAgbWFwcGVkUm93W2NvbHVtbl0gPSB2YWx1ZURlc2VyaWFsaXplckZuKHJvd1tqXSwgdHlwZXNbal0hLCBjb2x1bW4pO1xuICAgIH1cblxuICAgIGRlc2VyaWFsaXplZFJlc3BvbnNlLnB1c2gobWFwcGVkUm93KTtcbiAgfVxuXG4gIHJldHVybiBkZXNlcmlhbGl6ZWRSZXNwb25zZTtcbn1cblxuZnVuY3Rpb24gZGVzZXJpYWxpemVWYWx1ZSh2YWx1ZTogdW5rbm93biwgX3R5cGU6IFF1ZXJ5SW50cm9zcGVjdGlvbkJ1aWx0aW5UeXBlLCBfY29sdW1uOiBzdHJpbmcpOiB1bmtub3duIHtcbiAgcmV0dXJuIHZhbHVlO1xufVxuXG5leHBvcnQgdHlwZSBEZXNlcmlhbGl6ZWRSZXNwb25zZSA9IEFycmF5PFJlY29yZDxzdHJpbmcsIHVua25vd24+PjtcblxuZnVuY3Rpb24gY3JlYXRlUHJlYnVpbHRFbXB0eVJlc3VsdE9iamVjdChjb2x1bW5zOiBzdHJpbmdbXSk6IFJlY29yZDxzdHJpbmcsIG51bGw+IHtcbiAgY29uc3Qgcm93OiBSZWNvcmQ8c3RyaW5nLCBudWxsPiA9IHt9O1xuXG4gIGZvciAobGV0IGkgPSAwLCBsZW4gPSBjb2x1bW5zLmxlbmd0aDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgcm93W2NvbHVtbnNbaV0hXSA9IG51bGw7XG4gIH1cblxuICByZXR1cm4gcm93O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFJhd1Jlc3BvbnNlIHtcbiAgY29sdW1uczogc3RyaW5nW107XG4gIHR5cGVzOiBRdWVyeUludHJvc3BlY3Rpb25CdWlsdGluVHlwZVtdO1xuICByb3dzOiB1bmtub3duW11bXTtcbn1cblxuZXhwb3J0IHR5cGUgUXVlcnlJbnRyb3NwZWN0aW9uQnVpbHRpblR5cGUgPVxuICB8IFwiaW50XCJcbiAgfCBcImJpZ2ludFwiXG4gIHwgXCJmbG9hdFwiXG4gIHwgXCJkb3VibGVcIlxuICB8IFwic3RyaW5nXCJcbiAgfCBcImVudW1cIlxuICB8IFwiYnl0ZXNcIlxuICB8IFwiYm9vbFwiXG4gIHwgXCJjaGFyXCJcbiAgfCBcImRlY2ltYWxcIlxuICB8IFwianNvblwiXG4gIHwgXCJ4bWxcIlxuICB8IFwidXVpZFwiXG4gIHwgXCJkYXRldGltZVwiXG4gIHwgXCJkYXRlXCJcbiAgfCBcInRpbWVcIlxuICB8IFwiaW50LWFycmF5XCJcbiAgfCBcImJpZ2ludC1hcnJheVwiXG4gIHwgXCJmbG9hdC1hcnJheVwiXG4gIHwgXCJkb3VibGUtYXJyYXlcIlxuICB8IFwic3RyaW5nLWFycmF5XCJcbiAgfCBcImNoYXItYXJyYXlcIlxuICB8IFwiYnl0ZXMtYXJyYXlcIlxuICB8IFwiYm9vbC1hcnJheVwiXG4gIHwgXCJkZWNpbWFsLWFycmF5XCJcbiAgfCBcImpzb24tYXJyYXlcIlxuICB8IFwieG1sLWFycmF5XCJcbiAgfCBcInV1aWQtYXJyYXlcIlxuICB8IFwiZGF0ZXRpbWUtYXJyYXlcIlxuICB8IFwiZGF0ZS1hcnJheVwiXG4gIHwgXCJ0aW1lLWFycmF5XCJcbiAgfCBcIm51bGxcIlxuICB8IFwidW5rbm93blwiO1xuIiwgImltcG9ydCB0eXBlIHsgSnNvbkJhdGNoUXVlcnksIEpzb25RdWVyeSB9IGZyb20gXCJAcHJpc21hL2NsaWVudC9ydW50aW1lL2xpYnJhcnlcIjtcblxuaW1wb3J0IHR5cGUgeyBFeGVjdXRlT3B0aW9ucywgRXhlY3V0b3IgfSBmcm9tIFwiLi4vZXhlY3V0b3JcIjtcbmltcG9ydCB0eXBlIHsgUXVlcnksIFF1ZXJ5UmVzdWx0IH0gZnJvbSBcIi4uL3F1ZXJ5XCI7XG5pbXBvcnQgdHlwZSB7IEVpdGhlciB9IGZyb20gXCIuLi90eXBlLXV0aWxzXCI7XG5pbXBvcnQgeyBkZXNlcmlhbGl6ZVJhd1Jlc3VsdCwgdHlwZSBSYXdSZXNwb25zZSB9IGZyb20gXCIuL2Rlc2VyaWFsaXplclwiO1xuXG5leHBvcnQgY29uc3QgU1VQUE9SVEVEX0FDQ0VMRVJBVEVfUFJPVklERVJTID0gW1xuICAvLyBcIm15c3FsXCIsXG4gIFwicG9zdGdyZXNcIixcbl0gYXMgY29uc3Q7XG5leHBvcnQgdHlwZSBTdXBwb3J0ZWRBY2NlbGVyYXRlUHJvdmlkZXIgPSAodHlwZW9mIFNVUFBPUlRFRF9BQ0NFTEVSQVRFX1BST1ZJREVSUylbbnVtYmVyXTtcblxuLyoqIHZhbHVlIGluamVjdGVkIGF0IGJ1aWxkIHRpbWUgKi9cbmRlY2xhcmUgY29uc3QgQUNDRUxFUkFURV9TQ0hFTUFfQllfUFJPVklERVI6IFJlY29yZDxTdXBwb3J0ZWRBY2NlbGVyYXRlUHJvdmlkZXIsIHsgZW5jb2RlZDogc3RyaW5nOyBoYXNoOiBzdHJpbmcgfT47XG5cbmV4cG9ydCB0eXBlIEpzb25SZXF1ZXN0ID0gSnNvblF1ZXJ5IHwgSnNvbkJhdGNoUXVlcnk7XG5cbmV4cG9ydCBpbnRlcmZhY2UgUXVlcnlSYXdSZXN1bHQge1xuICBkYXRhOiB7XG4gICAgcXVlcnlSYXc6IFJhd1Jlc3BvbnNlO1xuICB9O1xuICBlcnJvcnM/OiB1bmtub3duW107XG59XG5cbmNvbnN0IEFDQ0VMRVJBVEVfSE9TVCA9IFwiYWNjZWxlcmF0ZS5wcmlzbWEtZGF0YS5uZXRcIjtcbmV4cG9ydCBjb25zdCBTQ0hFTUFfQllfUFJPVklERVIgPSBBQ0NFTEVSQVRFX1NDSEVNQV9CWV9QUk9WSURFUjtcblxuZXhwb3J0IGludGVyZmFjZSBBY2NlbGVyYXRlSHR0cENsaWVudFBhcmFtcyB7XG4gIC8qKlxuICAgKiBBY2NlbGVyYXRlIEFQSSBrZXkuXG4gICAqL1xuICBhcGlLZXk6IHN0cmluZztcblxuICAvKipcbiAgICogT3B0aW9uYWwgZmV0Y2ggaW1wbGVtZW50YXRpb24uXG4gICAqL1xuICBmZXRjaD86IHR5cGVvZiBnbG9iYWxUaGlzLmZldGNoO1xuXG4gIC8qKlxuICAgKiBPcHRpb25hbCBob3N0LlxuICAgKlxuICAgKiBEZWZhdWx0cyB0byBgYWNjZWxlcmF0ZS5wcmlzbWEtZGF0YS5uZXRgLlxuICAgKi9cbiAgaG9zdD86IHN0cmluZztcblxuICAvKipcbiAgICogRGF0YWJhc2UgcHJvdmlkZXIuXG4gICAqL1xuICBwcm92aWRlcjogU3VwcG9ydGVkQWNjZWxlcmF0ZVByb3ZpZGVyIHwgXCJwb3N0Z3Jlc3FsXCI7XG5cbiAgLyoqXG4gICAqIFByaXNtYSBFbmdpbmUgSGFzaCAoZWcuIDE3M2Y4ZDU0ZjhkNTJlNjkyYzdlMjdlNzJhODgzMTRlYzdhZWZmNjApXG4gICAqL1xuICBlbmdpbmVIYXNoOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFByaXNtYSBDbGllbnQgVmVyc2lvbiAoZWcuIDYuNS4wKS5cbiAgICovXG4gIGNsaWVudFZlcnNpb246IHN0cmluZztcblxuICAvKipcbiAgICogRnVuY3Rpb24gdXNlZCB0byBkZXNlcmlhbGl6ZSB0aGUgcmVzdWx0cyBvZiBxdWVyaWVzLlxuICAgKlxuICAgKiBCeSBkZWZhdWx0LCB0aGUgcmVzdWx0cyBhcmUgcGFzc2VkIHRvIGBkZXNlcmlhbGl6ZVJhd1Jlc3VsdGAuXG4gICAqL1xuICByZXN1bHREZXNlcmlhbGl6ZXJGbj86ICh0aGlzOiB2b2lkLCByZXNwb25zZTogUmF3UmVzcG9uc2UpID0+IHVua25vd25bXTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBBY2NlbGVyYXRlSHR0cENsaWVudCBleHRlbmRzIEV4ZWN1dG9yIHtcbiAgZXhlY3V0ZTxRIGV4dGVuZHMgUXVlcnk+KHRoaXM6IHZvaWQsIHF1ZXJ5OiBRLCBvcHRpb25zPzogRXhlY3V0ZU9wdGlvbnMpOiBQcm9taXNlPEVpdGhlcjxFcnJvciwgUXVlcnlSZXN1bHQ8UT4+Pjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUFjY2VsZXJhdGVIdHRwQ2xpZW50KHByb3BzOiBBY2NlbGVyYXRlSHR0cENsaWVudFBhcmFtcyk6IEFjY2VsZXJhdGVIdHRwQ2xpZW50IHtcbiAgY29uc3QgeyBwcm92aWRlciB9ID0gcHJvcHM7XG5cbiAgaWYgKHByb3ZpZGVyICE9PSBcInBvc3RncmVzcWxcIiAmJiAhU1VQUE9SVEVEX0FDQ0VMRVJBVEVfUFJPVklERVJTLmluY2x1ZGVzKHByb3ZpZGVyKSkge1xuICAgIHRocm93IG5ldyBFcnJvcihgSW52YWxpZCBwcm92aWRlcjogJHtwcm92aWRlcn1gKTtcbiAgfVxuXG4gIGNvbnN0IHNlbmRBY2NlbGVyYXRlUmVxdWVzdCA9IGdldFNlbmRBY2NlbGVyYXRlUmVxdWVzdEZuKHByb3BzKTtcblxuICByZXR1cm4ge1xuICAgIGV4ZWN1dGU6IGdldFNlbmRRdWVyeVJlcXVlc3RGbihwcm9wcywgc2VuZEFjY2VsZXJhdGVSZXF1ZXN0KSxcbiAgfTtcbn1cblxuZnVuY3Rpb24gZ2V0U2VuZEFjY2VsZXJhdGVSZXF1ZXN0Rm4oXG4gIHByb3BzOiBBY2NlbGVyYXRlSHR0cENsaWVudFBhcmFtcyxcbik6IChyZXF1ZXN0OiBSZXF1ZXN0SW5pdCAmIHsgcGF0aDogc3RyaW5nOyBzaWduYWw/OiBBYm9ydFNpZ25hbCB9KSA9PiBQcm9taXNlPFJlc3BvbnNlPiB7XG4gIGNvbnN0IHsgaG9zdCwgZW5naW5lSGFzaCwgY2xpZW50VmVyc2lvbiwgcHJvdmlkZXIsIGFwaUtleSB9ID0gcHJvcHM7XG4gIGNvbnN0IHByb3RvY29sID0gaG9zdCA9PT0gQUNDRUxFUkFURV9IT1NUID8gXCJodHRwc1wiIDogXCJodHRwXCI7XG4gIGNvbnN0IGJhc2VVcmwgPSBgJHtwcm90b2NvbH06Ly8ke2hvc3QgfHwgQUNDRUxFUkFURV9IT1NUfS8ke2NsaWVudFZlcnNpb259LyR7Z2V0U2NoZW1hQnlQcm92aWRlcihwcm92aWRlcikuaGFzaH1gO1xuXG4gIGNvbnN0IGZldGNoRm4gPSBwcm9wcy5mZXRjaCB8fCBmZXRjaDtcbiAgY29uc3QgaGVhZGVycyA9IHtcbiAgICBBdXRob3JpemF0aW9uOiBgQmVhcmVyICR7YXBpS2V5fWAsXG4gICAgXCJQcmlzbWEtRW5naW5lLUhhc2hcIjogZW5naW5lSGFzaCxcbiAgfSBhcyBjb25zdDtcblxuICByZXR1cm4gKHJlcXVlc3QpID0+XG4gICAgZmV0Y2hGbihgJHtiYXNlVXJsfS8ke3JlcXVlc3QucGF0aH1gLCB7XG4gICAgICBib2R5OiByZXF1ZXN0LmJvZHksXG4gICAgICBoZWFkZXJzLFxuICAgICAgbWV0aG9kOiByZXF1ZXN0Lm1ldGhvZCxcbiAgICAgIHNpZ25hbDogcmVxdWVzdC5zaWduYWwsXG4gICAgfSk7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIHNlbmRTY2hlbWFSZXF1ZXN0KFxuICBwcm9wczogQWNjZWxlcmF0ZUh0dHBDbGllbnRQYXJhbXMsXG4gIG9wdGlvbnM6IEV4ZWN1dGVPcHRpb25zIHwgdW5kZWZpbmVkLFxuICBzZW5kUmVxdWVzdDogUmV0dXJuVHlwZTx0eXBlb2YgZ2V0U2VuZEFjY2VsZXJhdGVSZXF1ZXN0Rm4+LFxuKTogUHJvbWlzZTx2b2lkPiB7XG4gIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgc2VuZFJlcXVlc3Qoe1xuICAgIGJvZHk6IGdldFNjaGVtYUJ5UHJvdmlkZXIocHJvcHMucHJvdmlkZXIpLmVuY29kZWQsXG4gICAgbWV0aG9kOiBcIlBVVFwiLFxuICAgIHBhdGg6IFwic2NoZW1hXCIsXG4gICAgc2lnbmFsOiBvcHRpb25zPy5hYm9ydFNpZ25hbCxcbiAgfSk7XG5cbiAgaWYgKCFyZXNwb25zZS5vaykge1xuICAgIHRyeSB7XG4gICAgICBjb25zb2xlLmVycm9yKGF3YWl0IHJlc3BvbnNlLnRleHQoKSk7XG4gICAgfSBjYXRjaCB7XG4gICAgICAvLyBub29wXG4gICAgfVxuICAgIHRocm93IG5ldyBFcnJvcihgRmFpbGVkIHRvIHVwbG9hZCBzY2hlbWEgdG8gcXVlcnkgZW5naW5lOiAke3Jlc3BvbnNlLnN0YXR1c1RleHR9YCk7XG4gIH1cbn1cblxuZnVuY3Rpb24gZ2V0U2NoZW1hQnlQcm92aWRlcihcbiAgcHJvdmlkZXI6IFN1cHBvcnRlZEFjY2VsZXJhdGVQcm92aWRlciB8IFwicG9zdGdyZXNxbFwiLFxuKTogKHR5cGVvZiBTQ0hFTUFfQllfUFJPVklERVIpW2tleW9mIHR5cGVvZiBTQ0hFTUFfQllfUFJPVklERVJdIHtcbiAgaWYgKHByb3ZpZGVyID09PSBcInBvc3RncmVzcWxcIikge1xuICAgIHJldHVybiBTQ0hFTUFfQllfUFJPVklERVJbXCJwb3N0Z3Jlc1wiXTtcbiAgfVxuXG4gIHJldHVybiBTQ0hFTUFfQllfUFJPVklERVJbcHJvdmlkZXJdO1xufVxuXG5hc3luYyBmdW5jdGlvbiBzZW5kUHJpc21hT3JtUmVxdWVzdDxSPihcbiAgcmVxdWVzdDogSnNvblJlcXVlc3QsXG4gIG9wdGlvbnM6IEV4ZWN1dGVPcHRpb25zIHwgdW5kZWZpbmVkLFxuICBzZW5kQWNjZWxlcmF0ZVJlcXVlc3Q6IFJldHVyblR5cGU8dHlwZW9mIGdldFNlbmRBY2NlbGVyYXRlUmVxdWVzdEZuPixcbik6IFByb21pc2U8Uj4ge1xuICBjb25zdCByZXNwb25zZSA9IGF3YWl0IHNlbmRBY2NlbGVyYXRlUmVxdWVzdCh7XG4gICAgYm9keTogSlNPTi5zdHJpbmdpZnkocmVxdWVzdCksXG4gICAgbWV0aG9kOiBcIlBPU1RcIixcbiAgICBwYXRoOiBcImdyYXBocWxcIixcbiAgICBzaWduYWw6IG9wdGlvbnM/LmFib3J0U2lnbmFsLFxuICB9KTtcblxuICBpZiAoIXJlc3BvbnNlLm9rKSB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoYXdhaXQgcmVzcG9uc2UudGV4dCgpKTtcbiAgICB9IGNhdGNoIHtcbiAgICAgIC8vIG5vb3BcbiAgICB9XG4gICAgdGhyb3cgbmV3IEVycm9yKGBGYWlsZWQgdG8gZXhlY3V0ZSBxdWVyeTogJHtyZXNwb25zZS5zdGF0dXNUZXh0fWApO1xuICB9XG5cbiAgcmV0dXJuIChhd2FpdCByZXNwb25zZS5qc29uKCkpIGFzIFI7XG59XG5cbmZ1bmN0aW9uIGdldFNlbmRRdWVyeVJlcXVlc3RGbihcbiAgcHJvcHM6IEFjY2VsZXJhdGVIdHRwQ2xpZW50UGFyYW1zLFxuICBzZW5kQWNjZWxlcmF0ZVJlcXVlc3Q6IFJldHVyblR5cGU8dHlwZW9mIGdldFNlbmRBY2NlbGVyYXRlUmVxdWVzdEZuPixcbik6IEV4ZWN1dG9yW1wiZXhlY3V0ZVwiXSB7XG4gIGNvbnN0IHsgcmVzdWx0RGVzZXJpYWxpemVyRm4gPSBkZXNlcmlhbGl6ZVJhd1Jlc3VsdCB9ID0gcHJvcHM7XG4gIGxldCBzY2hlbWFSZXF1ZXN0OiBQcm9taXNlPHZvaWQ+IHwgbnVsbCA9IG51bGw7XG5cbiAgcmV0dXJuIGFzeW5jIChxdWVyeSwgb3B0aW9ucykgPT4ge1xuICAgIHRyeSB7XG4gICAgICBhd2FpdCAoc2NoZW1hUmVxdWVzdCB8fD0gc2VuZFNjaGVtYVJlcXVlc3QocHJvcHMsIG9wdGlvbnMsIHNlbmRBY2NlbGVyYXRlUmVxdWVzdCkpO1xuXG4gICAgICBjb25zdCB7IGRhdGEsIGVycm9ycyB9ID0gYXdhaXQgc2VuZFByaXNtYU9ybVJlcXVlc3Q8UXVlcnlSYXdSZXN1bHQ+KFxuICAgICAgICB7XG4gICAgICAgICAgYWN0aW9uOiBcInF1ZXJ5UmF3XCIsXG4gICAgICAgICAgcXVlcnk6IHtcbiAgICAgICAgICAgIGFyZ3VtZW50czoge1xuICAgICAgICAgICAgICBwYXJhbWV0ZXJzOiBxdWVyeS5wYXJhbWV0ZXJzIGFzIG5ldmVyW10sXG4gICAgICAgICAgICAgIHF1ZXJ5OiBxdWVyeS5zcWwsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgc2VsZWN0aW9uOiB7fSxcbiAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgICBvcHRpb25zLFxuICAgICAgICBzZW5kQWNjZWxlcmF0ZVJlcXVlc3QsXG4gICAgICApO1xuXG4gICAgICBpZiAoZXJyb3JzKSB7XG4gICAgICAgIHJldHVybiBbbmV3IEFnZ3JlZ2F0ZUVycm9yKGVycm9ycywgXCJFcnJvcnMgb2NjdXJyZWQgd2hpbGUgZXhlY3V0aW5nIHRoZSBxdWVyeVwiKV07XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBbbnVsbCwgcmVzdWx0RGVzZXJpYWxpemVyRm4oZGF0YS5xdWVyeVJhdykgYXMgUXVlcnlSZXN1bHQ8dHlwZW9mIHF1ZXJ5Pl07XG4gICAgfSBjYXRjaCAoZXJyb3I6IHVua25vd24pIHtcbiAgICAgIC8vIFRPRE86IGhhbmRsZSBwcm9wZXJseVxuICAgICAgcmV0dXJuIFtlcnJvciBhcyBFcnJvcl07XG4gICAgfVxuICB9O1xufVxuIl0sCiAgIm1hcHBpbmdzIjogInlhQUFBLElBQUFBLEVBQUEsR0FBQUMsRUFBQUQsRUFBQSxnQ0FBQUUsRUFBQSx5QkFBQUMsSUFBQSxlQUFBQyxFQUFBSixHQ0FBLElBQUFLLEVBQUEsQ0FBQyxTQUFXLENBQUMsUUFBVSwyTEFBMkwsS0FB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SyxVQUFVVyxDQUFPLEVBQzVCLE9BQVEsT0FDUixLQUFNLFVBQ04sT0FBUUUsR0FBUyxXQUNuQixDQUFDLEVBRUQsR0FBSSxDQUFDRSxFQUFTLEdBQUksQ0FDaEIsR0FBSSxDQUNGLFFBQVEsTUFBTSxNQUFNQSxFQUFTLEtBQUssQ0FBQyxDQUNyQyxNQUFRLENBRVIsQ0FDQSxNQUFNLElBQUksTUFBTSw0QkFBNEJBLEVBQVMsVUFBVSxFQUFFLENBQ25FLENBRUEsT0FBUSxNQUFNQSxFQUFTLEtBQUssQ0FDOUIsQ0FFQSxTQUFTYixFQUNQSixFQUNBRSxFQUNxQixDQUNyQixHQUFNLENBQUUscUJBQUFpQixFQUF1QkMsQ0FBcUIsRUFBSXBCLEVBQ3BEcUIsRUFBc0MsS0FFMUMsTUFBTyxPQUFPQyxFQUFPUCxJQUFZLENBQy9CLEdBQUksQ0FDRixNQUFPTSxJQUFrQlAsRUFBa0JkLEVBQU9lLEVBQVNiLENBQXFCLEdBRWhGLEdBQU0sQ0FBRSxLQUFBcUIsRUFBTSxPQUFBQyxDQUFPLEVBQUksTUFBTU4sRUFDN0IsQ0FDRSxPQUFRLFdBQ1IsTUFBTyxDQUNMLFVBQVcsQ0FDVCxXQUFZSSxFQUFNLFdBQ2xCLE1BQU9BLEVBQU0sR0FDZixFQUNBLFVBQVcsQ0FBQyxDQUNkLENBQ0YsRUFDQVAsRUFDQWIsQ0FDRixFQUVBLE9BQUlzQixFQUNLLENBQUMsSUFBSSxlQUFlQSxFQUFRLDJDQUEyQyxDQUFDLEVBRzFFLENBQUMsS0FBTUwsRUFBcUJJLEVBQUssUUFBUSxDQUE4QixDQUNoRixPQUFTRSxFQUFnQixDQUV2QixNQUFPLENBQUNBLENBQWMsQ0FDeEIsQ0FDRixDQUNGIiwKICAibmFtZXMiOiBbImFjY2VsZXJhdGVfZXhwb3J0cyIsICJfX2V4cG9ydCIsICJjcmVhdGVBY2NlbGVyYXRlSHR0cENsaWVudCIsICJkZXNlcmlhbGl6ZVJhd1Jlc3VsdCIsICJfX3RvQ29tbW9uSlMiLCAiZGVmaW5lX0FDQ0VMRVJBVEVfU0NIRU1BX0JZX1BST1ZJREVSX2RlZmF1bHQiLCAiZGVzZXJpYWxpemVSYXdSZXN1bHQiLCAicmVzcG9uc2UiLCAidmFsdWVEZXNlcmlhbGl6ZXJGbiIsICJkZXNlcmlhbGl6ZVZhbHVlIiwgImNvbHVtbnMiLCAicm93cyIsICJ0eXBlcyIsICJkZXNlcmlhbGl6ZWRSZXNwb25zZSIsICJwcmVidWlsdEVtcHR5T2JqZWN0IiwgImNyZWF0ZVByZWJ1aWx0RW1wdHlSZXN1bHRPYmplY3QiLCAiaSIsICJsZW4iLCAicm93IiwgIm1hcHBlZFJvdyIsICJqIiwgImNvbHVtbiIsICJ2YWx1ZSIsICJfdHlwZSIsICJfY29sdW1uIiwgIlNVUFBPUlRFRF9BQ0NFTEVSQVRFX1BST1ZJREVSUyIsICJBQ0NFTEVSQVRFX0hPU1QiLCAiU0NIRU1BX0JZX1BST1ZJREVSIiwgImRlZmluZV9BQ0NFTEVSQVRFX1NDSEVNQV9CWV9QUk9WSURFUl9kZWZhdWx0IiwgImNyZWF0ZUFjY2VsZXJhdGVIdHRwQ2xpZW50IiwgInByb3BzIiwgInByb3ZpZGVyIiwgInNlbmRBY2NlbGVyYXRlUmVxdWVzdCIsICJnZXRTZW5kQWNjZWxlcmF0ZVJlcXVlc3RGbiIsICJnZXRTZW5kUXVlcnlSZXF1ZXN0Rm4iLCAiaG9zdCIsICJlbmdpbmVIYXNoIiwgImNsaWVudFZlcnNpb24iLCAiYXBpS2V5IiwgImJhc2VVcmwiLCAiZ2V0U2NoZW1hQnlQcm92aWRlciIsICJmZXRjaEZuIiwgImhlYWRlcnMiLCAicmVxdWVzdCIsICJzZW5kU2NoZW1hUmVxdWVzdCIsICJvcHRpb25zIiwgInNlbmRSZXF1ZXN0IiwgInJlc3BvbnNlIiwgInNlbmRQcmlzbWFPcm1SZXF1ZXN0IiwgInJlc3VsdERlc2VyaWFsaXplckZuIiwgImRlc2VyaWFsaXplUmF3UmVzdWx0IiwgInNjaGVtYVJlcXVlc3QiLCAicXVlcnkiLCAiZGF0YSIsICJlcnJvcnMiLCAiZXJyb3IiXQp9Cg==
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import { Executor, ExecuteOptions } from '../index.cjs';
|
|
2
|
+
import { Q as Query, E as Either, a as QueryResult } from '../../query-C7LxjwdN.cjs';
|
|
3
|
+
import 'kysely';
|
|
4
|
+
|
|
5
|
+
declare function deserializeRawResult(response: RawResponse, valueDeserializerFn?: (value: unknown, type: QueryIntrospectionBuiltinType, column: string) => unknown): DeserializedResponse;
|
|
6
|
+
type DeserializedResponse = Array<Record<string, unknown>>;
|
|
7
|
+
interface RawResponse {
|
|
8
|
+
columns: string[];
|
|
9
|
+
types: QueryIntrospectionBuiltinType[];
|
|
10
|
+
rows: unknown[][];
|
|
11
|
+
}
|
|
12
|
+
type QueryIntrospectionBuiltinType = "int" | "bigint" | "float" | "double" | "string" | "enum" | "bytes" | "bool" | "char" | "decimal" | "json" | "xml" | "uuid" | "datetime" | "date" | "time" | "int-array" | "bigint-array" | "float-array" | "double-array" | "string-array" | "char-array" | "bytes-array" | "bool-array" | "decimal-array" | "json-array" | "xml-array" | "uuid-array" | "datetime-array" | "date-array" | "time-array" | "null" | "unknown";
|
|
13
|
+
|
|
14
|
+
declare const SUPPORTED_ACCELERATE_PROVIDERS: readonly ["postgres"];
|
|
15
|
+
type SupportedAccelerateProvider = (typeof SUPPORTED_ACCELERATE_PROVIDERS)[number];
|
|
16
|
+
interface AccelerateHttpClientParams {
|
|
17
|
+
/**
|
|
18
|
+
* Accelerate API key.
|
|
19
|
+
*/
|
|
20
|
+
apiKey: string;
|
|
21
|
+
/**
|
|
22
|
+
* Optional fetch implementation.
|
|
23
|
+
*/
|
|
24
|
+
fetch?: typeof globalThis.fetch;
|
|
25
|
+
/**
|
|
26
|
+
* Optional host.
|
|
27
|
+
*
|
|
28
|
+
* Defaults to `accelerate.prisma-data.net`.
|
|
29
|
+
*/
|
|
30
|
+
host?: string;
|
|
31
|
+
/**
|
|
32
|
+
* Database provider.
|
|
33
|
+
*/
|
|
34
|
+
provider: SupportedAccelerateProvider | "postgresql";
|
|
35
|
+
/**
|
|
36
|
+
* Prisma Engine Hash (eg. 173f8d54f8d52e692c7e27e72a88314ec7aeff60)
|
|
37
|
+
*/
|
|
38
|
+
engineHash: string;
|
|
39
|
+
/**
|
|
40
|
+
* Prisma Client Version (eg. 6.5.0).
|
|
41
|
+
*/
|
|
42
|
+
clientVersion: string;
|
|
43
|
+
/**
|
|
44
|
+
* Function used to deserialize the results of queries.
|
|
45
|
+
*
|
|
46
|
+
* By default, the results are passed to `deserializeRawResult`.
|
|
47
|
+
*/
|
|
48
|
+
resultDeserializerFn?: (this: void, response: RawResponse) => unknown[];
|
|
49
|
+
}
|
|
50
|
+
interface AccelerateHttpClient extends Executor {
|
|
51
|
+
execute<Q extends Query>(this: void, query: Q, options?: ExecuteOptions): Promise<Either<Error, QueryResult<Q>>>;
|
|
52
|
+
}
|
|
53
|
+
declare function createAccelerateHttpClient(props: AccelerateHttpClientParams): AccelerateHttpClient;
|
|
54
|
+
|
|
55
|
+
export { type AccelerateHttpClient, type AccelerateHttpClientParams, type DeserializedResponse, type QueryIntrospectionBuiltinType, type RawResponse, type SupportedAccelerateProvider, createAccelerateHttpClient, deserializeRawResult };
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import { Executor, ExecuteOptions } from '../index.js';
|
|
2
|
+
import { Q as Query, E as Either, a as QueryResult } from '../../query-C7LxjwdN.js';
|
|
3
|
+
import 'kysely';
|
|
4
|
+
|
|
5
|
+
declare function deserializeRawResult(response: RawResponse, valueDeserializerFn?: (value: unknown, type: QueryIntrospectionBuiltinType, column: string) => unknown): DeserializedResponse;
|
|
6
|
+
type DeserializedResponse = Array<Record<string, unknown>>;
|
|
7
|
+
interface RawResponse {
|
|
8
|
+
columns: string[];
|
|
9
|
+
types: QueryIntrospectionBuiltinType[];
|
|
10
|
+
rows: unknown[][];
|
|
11
|
+
}
|
|
12
|
+
type QueryIntrospectionBuiltinType = "int" | "bigint" | "float" | "double" | "string" | "enum" | "bytes" | "bool" | "char" | "decimal" | "json" | "xml" | "uuid" | "datetime" | "date" | "time" | "int-array" | "bigint-array" | "float-array" | "double-array" | "string-array" | "char-array" | "bytes-array" | "bool-array" | "decimal-array" | "json-array" | "xml-array" | "uuid-array" | "datetime-array" | "date-array" | "time-array" | "null" | "unknown";
|
|
13
|
+
|
|
14
|
+
declare const SUPPORTED_ACCELERATE_PROVIDERS: readonly ["postgres"];
|
|
15
|
+
type SupportedAccelerateProvider = (typeof SUPPORTED_ACCELERATE_PROVIDERS)[number];
|
|
16
|
+
interface AccelerateHttpClientParams {
|
|
17
|
+
/**
|
|
18
|
+
* Accelerate API key.
|
|
19
|
+
*/
|
|
20
|
+
apiKey: string;
|
|
21
|
+
/**
|
|
22
|
+
* Optional fetch implementation.
|
|
23
|
+
*/
|
|
24
|
+
fetch?: typeof globalThis.fetch;
|
|
25
|
+
/**
|
|
26
|
+
* Optional host.
|
|
27
|
+
*
|
|
28
|
+
* Defaults to `accelerate.prisma-data.net`.
|
|
29
|
+
*/
|
|
30
|
+
host?: string;
|
|
31
|
+
/**
|
|
32
|
+
* Database provider.
|
|
33
|
+
*/
|
|
34
|
+
provider: SupportedAccelerateProvider | "postgresql";
|
|
35
|
+
/**
|
|
36
|
+
* Prisma Engine Hash (eg. 173f8d54f8d52e692c7e27e72a88314ec7aeff60)
|
|
37
|
+
*/
|
|
38
|
+
engineHash: string;
|
|
39
|
+
/**
|
|
40
|
+
* Prisma Client Version (eg. 6.5.0).
|
|
41
|
+
*/
|
|
42
|
+
clientVersion: string;
|
|
43
|
+
/**
|
|
44
|
+
* Function used to deserialize the results of queries.
|
|
45
|
+
*
|
|
46
|
+
* By default, the results are passed to `deserializeRawResult`.
|
|
47
|
+
*/
|
|
48
|
+
resultDeserializerFn?: (this: void, response: RawResponse) => unknown[];
|
|
49
|
+
}
|
|
50
|
+
interface AccelerateHttpClient extends Executor {
|
|
51
|
+
execute<Q extends Query>(this: void, query: Q, options?: ExecuteOptions): Promise<Either<Error, QueryResult<Q>>>;
|
|
52
|
+
}
|
|
53
|
+
declare function createAccelerateHttpClient(props: AccelerateHttpClientParams): AccelerateHttpClient;
|
|
54
|
+
|
|
55
|
+
export { type AccelerateHttpClient, type AccelerateHttpClientParams, type DeserializedResponse, type QueryIntrospectionBuiltinType, type RawResponse, type SupportedAccelerateProvider, createAccelerateHttpClient, deserializeRawResult };
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import * as ___react___ from 'react';
|
|
2
|
+
import * as ___react_dom___ from 'react-dom';
|
|
3
|
+
|
|
4
|
+
function require(mod) {
|
|
5
|
+
if (mod === 'react') return ___react___;
|
|
6
|
+
if (mod === 'react-dom') return ___react_dom___;
|
|
7
|
+
throw new Error(`Unknown module ${mod}`);
|
|
8
|
+
}
|
|
9
|
+
import{e as u,f as y}from"../../chunk-P5LRZ6C2.js";u();u();function R(e,t=w){let{columns:r,rows:n,types:i}=e,s=[],c=A(r);for(let o=0,d=n.length;o<d;o++){let p=n[o],a={...c};for(let l=0,f=p.length;l<f;l++){let m=r[l];a[m]=t(p[l],i[l],m)}s.push(a)}return s}function w(e,t,r){return e}function A(e){let t={};for(let r=0,n=e.length;r<n;r++)t[e[r]]=null;return t}u();var x=["postgres"],g="accelerate.prisma-data.net",h=y;function P(e){let{provider:t}=e;if(t!=="postgresql"&&!x.includes(t))throw new Error(`Invalid provider: ${t}`);let r=S(e);return{execute:b(e,r)}}function S(e){let{host:t,engineHash:r,clientVersion:n,provider:i,apiKey:s}=e,o=`${t===g?"https":"http"}://${t||g}/${n}/${E(i).hash}`,d=e.fetch||fetch,p={Authorization:`Bearer ${s}`,"Prisma-Engine-Hash":r};return a=>d(`${o}/${a.path}`,{body:a.body,headers:p,method:a.method,signal:a.signal})}async function C(e,t,r){let n=await r({body:E(e.provider).encoded,method:"PUT",path:"schema",signal:t?.abortSignal});if(!n.ok){try{console.error(await n.text())}catch{}throw new Error(`Failed to upload schema to query engine: ${n.statusText}`)}}function E(e){return e==="postgresql"?h.postgres:h[e]}async function q(e,t,r){let n=await r({body:JSON.stringify(e),method:"POST",path:"graphql",signal:t?.abortSignal});if(!n.ok){try{console.error(await n.text())}catch{}throw new Error(`Failed to execute query: ${n.statusText}`)}return await n.json()}function b(e,t){let{resultDeserializerFn:r=R}=e,n=null;return async(i,s)=>{try{await(n||=C(e,s,t));let{data:c,errors:o}=await q({action:"queryRaw",query:{arguments:{parameters:i.parameters,query:i.sql},selection:{}}},s,t);return o?[new AggregateError(o,"Errors occurred while executing the query")]:[null,r(c.queryRaw)]}catch(c){return[c]}}}export{P as createAccelerateHttpClient,R as deserializeRawResult};
|
|
10
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vZGF0YS9hY2NlbGVyYXRlL2luZGV4LnRzIiwgIi4uLy4uLy4uL2RhdGEvYWNjZWxlcmF0ZS9kZXNlcmlhbGl6ZXIudHMiLCAiLi4vLi4vLi4vZGF0YS9hY2NlbGVyYXRlL2h0dHAtY2xpZW50LnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyJleHBvcnQge1xuICB0eXBlIERlc2VyaWFsaXplZFJlc3BvbnNlLFxuICBkZXNlcmlhbGl6ZVJhd1Jlc3VsdCxcbiAgdHlwZSBRdWVyeUludHJvc3BlY3Rpb25CdWlsdGluVHlwZSxcbiAgdHlwZSBSYXdSZXNwb25zZSxcbn0gZnJvbSBcIi4vZGVzZXJpYWxpemVyXCI7XG5leHBvcnQge1xuICB0eXBlIEFjY2VsZXJhdGVIdHRwQ2xpZW50LFxuICB0eXBlIEFjY2VsZXJhdGVIdHRwQ2xpZW50UGFyYW1zLFxuICBjcmVhdGVBY2NlbGVyYXRlSHR0cENsaWVudCxcbiAgdHlwZSBTdXBwb3J0ZWRBY2NlbGVyYXRlUHJvdmlkZXIsXG59IGZyb20gXCIuL2h0dHAtY2xpZW50XCI7XG4iLCAiLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gU1RPTEVOIEFORCBBTFRFUkVEIEZST00gaHR0cHM6Ly9naXRodWIuY29tL3ByaXNtYS9wcmlzbWEvYmxvYi8wNzkzMmFlMTgxMzIzODFiYjg0ZGI4ODlhOWRjYWQwZTZjOWU2YTY4L3BhY2thZ2VzL2NsaWVudC9zcmMvcnVudGltZS91dGlscy9kZXNlcmlhbGl6ZVJhd1Jlc3VsdHMudHNcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuZXhwb3J0IGZ1bmN0aW9uIGRlc2VyaWFsaXplUmF3UmVzdWx0KFxuICByZXNwb25zZTogUmF3UmVzcG9uc2UsXG4gIHZhbHVlRGVzZXJpYWxpemVyRm46IChcbiAgICB2YWx1ZTogdW5rbm93bixcbiAgICB0eXBlOiBRdWVyeUludHJvc3BlY3Rpb25CdWlsdGluVHlwZSxcbiAgICBjb2x1bW46IHN0cmluZyxcbiAgKSA9PiB1bmtub3duID0gZGVzZXJpYWxpemVWYWx1ZSxcbik6IERlc2VyaWFsaXplZFJlc3BvbnNlIHtcbiAgY29uc3QgeyBjb2x1bW5zLCByb3dzLCB0eXBlcyB9ID0gcmVzcG9uc2U7XG5cbiAgY29uc3QgZGVzZXJpYWxpemVkUmVzcG9uc2U6IERlc2VyaWFsaXplZFJlc3BvbnNlID0gW107XG5cbiAgLy8gUGVyZm9ybWFuY2Ugb3B0aW1pemF0aW9uLiBTZWUgaHR0cHM6Ly9naXRodWIuY29tL2JyaWFuYy9ub2RlLXBvc3RncmVzL2lzc3Vlcy8zMDQyXG4gIGNvbnN0IHByZWJ1aWx0RW1wdHlPYmplY3QgPSBjcmVhdGVQcmVidWlsdEVtcHR5UmVzdWx0T2JqZWN0KGNvbHVtbnMpO1xuXG4gIGZvciAobGV0IGkgPSAwLCBsZW4gPSByb3dzLmxlbmd0aDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgY29uc3Qgcm93ID0gcm93c1tpXSE7XG5cbiAgICBjb25zdCBtYXBwZWRSb3cgPSB7IC4uLnByZWJ1aWx0RW1wdHlPYmplY3QgfSBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcblxuICAgIGZvciAobGV0IGogPSAwLCBsZW4gPSByb3cubGVuZ3RoOyBqIDwgbGVuOyBqKyspIHtcbiAgICAgIGNvbnN0IGNvbHVtbiA9IGNvbHVtbnNbal0hO1xuXG4gICAgICBtYXBwZWRSb3dbY29sdW1uXSA9IHZhbHVlRGVzZXJpYWxpemVyRm4ocm93W2pdLCB0eXBlc1tqXSEsIGNvbHVtbik7XG4gICAgfVxuXG4gICAgZGVzZXJpYWxpemVkUmVzcG9uc2UucHVzaChtYXBwZWRSb3cpO1xuICB9XG5cbiAgcmV0dXJuIGRlc2VyaWFsaXplZFJlc3BvbnNlO1xufVxuXG5mdW5jdGlvbiBkZXNlcmlhbGl6ZVZhbHVlKHZhbHVlOiB1bmtub3duLCBfdHlwZTogUXVlcnlJbnRyb3NwZWN0aW9uQnVpbHRpblR5cGUsIF9jb2x1bW46IHN0cmluZyk6IHVua25vd24ge1xuICByZXR1cm4gdmFsdWU7XG59XG5cbmV4cG9ydCB0eXBlIERlc2VyaWFsaXplZFJlc3BvbnNlID0gQXJyYXk8UmVjb3JkPHN0cmluZywgdW5rbm93bj4+O1xuXG5mdW5jdGlvbiBjcmVhdGVQcmVidWlsdEVtcHR5UmVzdWx0T2JqZWN0KGNvbHVtbnM6IHN0cmluZ1tdKTogUmVjb3JkPHN0cmluZywgbnVsbD4ge1xuICBjb25zdCByb3c6IFJlY29yZDxzdHJpbmcsIG51bGw+ID0ge307XG5cbiAgZm9yIChsZXQgaSA9IDAsIGxlbiA9IGNvbHVtbnMubGVuZ3RoOyBpIDwgbGVuOyBpKyspIHtcbiAgICByb3dbY29sdW1uc1tpXSFdID0gbnVsbDtcbiAgfVxuXG4gIHJldHVybiByb3c7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUmF3UmVzcG9uc2Uge1xuICBjb2x1bW5zOiBzdHJpbmdbXTtcbiAgdHlwZXM6IFF1ZXJ5SW50cm9zcGVjdGlvbkJ1aWx0aW5UeXBlW107XG4gIHJvd3M6IHVua25vd25bXVtdO1xufVxuXG5leHBvcnQgdHlwZSBRdWVyeUludHJvc3BlY3Rpb25CdWlsdGluVHlwZSA9XG4gIHwgXCJpbnRcIlxuICB8IFwiYmlnaW50XCJcbiAgfCBcImZsb2F0XCJcbiAgfCBcImRvdWJsZVwiXG4gIHwgXCJzdHJpbmdcIlxuICB8IFwiZW51bVwiXG4gIHwgXCJieXRlc1wiXG4gIHwgXCJib29sXCJcbiAgfCBcImNoYXJcIlxuICB8IFwiZGVjaW1hbFwiXG4gIHwgXCJqc29uXCJcbiAgfCBcInhtbFwiXG4gIHwgXCJ1dWlkXCJcbiAgfCBcImRhdGV0aW1lXCJcbiAgfCBcImRhdGVcIlxuICB8IFwidGltZVwiXG4gIHwgXCJpbnQtYXJyYXlcIlxuICB8IFwiYmlnaW50LWFycmF5XCJcbiAgfCBcImZsb2F0LWFycmF5XCJcbiAgfCBcImRvdWJsZS1hcnJheVwiXG4gIHwgXCJzdHJpbmctYXJyYXlcIlxuICB8IFwiY2hhci1hcnJheVwiXG4gIHwgXCJieXRlcy1hcnJheVwiXG4gIHwgXCJib29sLWFycmF5XCJcbiAgfCBcImRlY2ltYWwtYXJyYXlcIlxuICB8IFwianNvbi1hcnJheVwiXG4gIHwgXCJ4bWwtYXJyYXlcIlxuICB8IFwidXVpZC1hcnJheVwiXG4gIHwgXCJkYXRldGltZS1hcnJheVwiXG4gIHwgXCJkYXRlLWFycmF5XCJcbiAgfCBcInRpbWUtYXJyYXlcIlxuICB8IFwibnVsbFwiXG4gIHwgXCJ1bmtub3duXCI7XG4iLCAiaW1wb3J0IHR5cGUgeyBKc29uQmF0Y2hRdWVyeSwgSnNvblF1ZXJ5IH0gZnJvbSBcIkBwcmlzbWEvY2xpZW50L3J1bnRpbWUvbGlicmFyeVwiO1xuXG5pbXBvcnQgdHlwZSB7IEV4ZWN1dGVPcHRpb25zLCBFeGVjdXRvciB9IGZyb20gXCIuLi9leGVjdXRvclwiO1xuaW1wb3J0IHR5cGUgeyBRdWVyeSwgUXVlcnlSZXN1bHQgfSBmcm9tIFwiLi4vcXVlcnlcIjtcbmltcG9ydCB0eXBlIHsgRWl0aGVyIH0gZnJvbSBcIi4uL3R5cGUtdXRpbHNcIjtcbmltcG9ydCB7IGRlc2VyaWFsaXplUmF3UmVzdWx0LCB0eXBlIFJhd1Jlc3BvbnNlIH0gZnJvbSBcIi4vZGVzZXJpYWxpemVyXCI7XG5cbmV4cG9ydCBjb25zdCBTVVBQT1JURURfQUNDRUxFUkFURV9QUk9WSURFUlMgPSBbXG4gIC8vIFwibXlzcWxcIixcbiAgXCJwb3N0Z3Jlc1wiLFxuXSBhcyBjb25zdDtcbmV4cG9ydCB0eXBlIFN1cHBvcnRlZEFjY2VsZXJhdGVQcm92aWRlciA9ICh0eXBlb2YgU1VQUE9SVEVEX0FDQ0VMRVJBVEVfUFJPVklERVJTKVtudW1iZXJdO1xuXG4vKiogdmFsdWUgaW5qZWN0ZWQgYXQgYnVpbGQgdGltZSAqL1xuZGVjbGFyZSBjb25zdCBBQ0NFTEVSQVRFX1NDSEVNQV9CWV9QUk9WSURFUjogUmVjb3JkPFN1cHBvcnRlZEFjY2VsZXJhdGVQcm92aWRlciwgeyBlbmNvZGVkOiBzdHJpbmc7IGhhc2g6IHN0cmluZyB9PjtcblxuZXhwb3J0IHR5cGUgSnNvblJlcXVlc3QgPSBKc29uUXVlcnkgfCBKc29uQmF0Y2hRdWVyeTtcblxuZXhwb3J0IGludGVyZmFjZSBRdWVyeVJhd1Jlc3VsdCB7XG4gIGRhdGE6IHtcbiAgICBxdWVyeVJhdzogUmF3UmVzcG9uc2U7XG4gIH07XG4gIGVycm9ycz86IHVua25vd25bXTtcbn1cblxuY29uc3QgQUNDRUxFUkFURV9IT1NUID0gXCJhY2NlbGVyYXRlLnByaXNtYS1kYXRhLm5ldFwiO1xuZXhwb3J0IGNvbnN0IFNDSEVNQV9CWV9QUk9WSURFUiA9IEFDQ0VMRVJBVEVfU0NIRU1BX0JZX1BST1ZJREVSO1xuXG5leHBvcnQgaW50ZXJmYWNlIEFjY2VsZXJhdGVIdHRwQ2xpZW50UGFyYW1zIHtcbiAgLyoqXG4gICAqIEFjY2VsZXJhdGUgQVBJIGtleS5cbiAgICovXG4gIGFwaUtleTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBPcHRpb25hbCBmZXRjaCBpbXBsZW1lbnRhdGlvbi5cbiAgICovXG4gIGZldGNoPzogdHlwZW9mIGdsb2JhbFRoaXMuZmV0Y2g7XG5cbiAgLyoqXG4gICAqIE9wdGlvbmFsIGhvc3QuXG4gICAqXG4gICAqIERlZmF1bHRzIHRvIGBhY2NlbGVyYXRlLnByaXNtYS1kYXRhLm5ldGAuXG4gICAqL1xuICBob3N0Pzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBEYXRhYmFzZSBwcm92aWRlci5cbiAgICovXG4gIHByb3ZpZGVyOiBTdXBwb3J0ZWRBY2NlbGVyYXRlUHJvdmlkZXIgfCBcInBvc3RncmVzcWxcIjtcblxuICAvKipcbiAgICogUHJpc21hIEVuZ2luZSBIYXNoIChlZy4gMTczZjhkNTRmOGQ1MmU2OTJjN2UyN2U3MmE4ODMxNGVjN2FlZmY2MClcbiAgICovXG4gIGVuZ2luZUhhc2g6IHN0cmluZztcblxuICAvKipcbiAgICogUHJpc21hIENsaWVudCBWZXJzaW9uIChlZy4gNi41LjApLlxuICAgKi9cbiAgY2xpZW50VmVyc2lvbjogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBGdW5jdGlvbiB1c2VkIHRvIGRlc2VyaWFsaXplIHRoZSByZXN1bHRzIG9mIHF1ZXJpZXMuXG4gICAqXG4gICAqIEJ5IGRlZmF1bHQsIHRoZSByZXN1bHRzIGFyZSBwYXNzZWQgdG8gYGRlc2VyaWFsaXplUmF3UmVzdWx0YC5cbiAgICovXG4gIHJlc3VsdERlc2VyaWFsaXplckZuPzogKHRoaXM6IHZvaWQsIHJlc3BvbnNlOiBSYXdSZXNwb25zZSkgPT4gdW5rbm93bltdO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEFjY2VsZXJhdGVIdHRwQ2xpZW50IGV4dGVuZHMgRXhlY3V0b3Ige1xuICBleGVjdXRlPFEgZXh0ZW5kcyBRdWVyeT4odGhpczogdm9pZCwgcXVlcnk6IFEsIG9wdGlvbnM/OiBFeGVjdXRlT3B0aW9ucyk6IFByb21pc2U8RWl0aGVyPEVycm9yLCBRdWVyeVJlc3VsdDxRPj4+O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlQWNjZWxlcmF0ZUh0dHBDbGllbnQocHJvcHM6IEFjY2VsZXJhdGVIdHRwQ2xpZW50UGFyYW1zKTogQWNjZWxlcmF0ZUh0dHBDbGllbnQge1xuICBjb25zdCB7IHByb3ZpZGVyIH0gPSBwcm9wcztcblxuICBpZiAocHJvdmlkZXIgIT09IFwicG9zdGdyZXNxbFwiICYmICFTVVBQT1JURURfQUNDRUxFUkFURV9QUk9WSURFUlMuaW5jbHVkZXMocHJvdmlkZXIpKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkIHByb3ZpZGVyOiAke3Byb3ZpZGVyfWApO1xuICB9XG5cbiAgY29uc3Qgc2VuZEFjY2VsZXJhdGVSZXF1ZXN0ID0gZ2V0U2VuZEFjY2VsZXJhdGVSZXF1ZXN0Rm4ocHJvcHMpO1xuXG4gIHJldHVybiB7XG4gICAgZXhlY3V0ZTogZ2V0U2VuZFF1ZXJ5UmVxdWVzdEZuKHByb3BzLCBzZW5kQWNjZWxlcmF0ZVJlcXVlc3QpLFxuICB9O1xufVxuXG5mdW5jdGlvbiBnZXRTZW5kQWNjZWxlcmF0ZVJlcXVlc3RGbihcbiAgcHJvcHM6IEFjY2VsZXJhdGVIdHRwQ2xpZW50UGFyYW1zLFxuKTogKHJlcXVlc3Q6IFJlcXVlc3RJbml0ICYgeyBwYXRoOiBzdHJpbmc7IHNpZ25hbD86IEFib3J0U2lnbmFsIH0pID0+IFByb21pc2U8UmVzcG9uc2U+IHtcbiAgY29uc3QgeyBob3N0LCBlbmdpbmVIYXNoLCBjbGllbnRWZXJzaW9uLCBwcm92aWRlciwgYXBpS2V5IH0gPSBwcm9wcztcbiAgY29uc3QgcHJvdG9jb2wgPSBob3N0ID09PSBBQ0NFTEVSQVRFX0hPU1QgPyBcImh0dHBzXCIgOiBcImh0dHBcIjtcbiAgY29uc3QgYmFzZVVybCA9IGAke3Byb3RvY29sfTovLyR7aG9zdCB8fCBBQ0NFTEVSQVRFX0hPU1R9LyR7Y2xpZW50VmVyc2lvbn0vJHtnZXRTY2hlbWFCeVByb3ZpZGVyKHByb3ZpZGVyKS5oYXNofWA7XG5cbiAgY29uc3QgZmV0Y2hGbiA9IHByb3BzLmZldGNoIHx8IGZldGNoO1xuICBjb25zdCBoZWFkZXJzID0ge1xuICAgIEF1dGhvcml6YXRpb246IGBCZWFyZXIgJHthcGlLZXl9YCxcbiAgICBcIlByaXNtYS1FbmdpbmUtSGFzaFwiOiBlbmdpbmVIYXNoLFxuICB9IGFzIGNvbnN0O1xuXG4gIHJldHVybiAocmVxdWVzdCkgPT5cbiAgICBmZXRjaEZuKGAke2Jhc2VVcmx9LyR7cmVxdWVzdC5wYXRofWAsIHtcbiAgICAgIGJvZHk6IHJlcXVlc3QuYm9keSxcbiAgICAgIGhlYWRlcnMsXG4gICAgICBtZXRob2Q6IHJlcXVlc3QubWV0aG9kLFxuICAgICAgc2lnbmFsOiByZXF1ZXN0LnNpZ25hbCxcbiAgICB9KTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gc2VuZFNjaGVtYVJlcXVlc3QoXG4gIHByb3BzOiBBY2NlbGVyYXRlSHR0cENsaWVudFBhcmFtcyxcbiAgb3B0aW9uczogRXhlY3V0ZU9wdGlvbnMgfCB1bmRlZmluZWQsXG4gIHNlbmRSZXF1ZXN0OiBSZXR1cm5UeXBlPHR5cGVvZiBnZXRTZW5kQWNjZWxlcmF0ZVJlcXVlc3RGbj4sXG4pOiBQcm9taXNlPHZvaWQ+IHtcbiAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBzZW5kUmVxdWVzdCh7XG4gICAgYm9keTogZ2V0U2NoZW1hQnlQcm92aWRlcihwcm9wcy5wcm92aWRlcikuZW5jb2RlZCxcbiAgICBtZXRob2Q6IFwiUFVUXCIsXG4gICAgcGF0aDogXCJzY2hlbWFcIixcbiAgICBzaWduYWw6IG9wdGlvbnM/LmFib3J0U2lnbmFsLFxuICB9KTtcblxuICBpZiAoIXJlc3BvbnNlLm9rKSB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoYXdhaXQgcmVzcG9uc2UudGV4dCgpKTtcbiAgICB9IGNhdGNoIHtcbiAgICAgIC8vIG5vb3BcbiAgICB9XG4gICAgdGhyb3cgbmV3IEVycm9yKGBGYWlsZWQgdG8gdXBsb2FkIHNjaGVtYSB0byBxdWVyeSBlbmdpbmU6ICR7cmVzcG9uc2Uuc3RhdHVzVGV4dH1gKTtcbiAgfVxufVxuXG5mdW5jdGlvbiBnZXRTY2hlbWFCeVByb3ZpZGVyKFxuICBwcm92aWRlcjogU3VwcG9ydGVkQWNjZWxlcmF0ZVByb3ZpZGVyIHwgXCJwb3N0Z3Jlc3FsXCIsXG4pOiAodHlwZW9mIFNDSEVNQV9CWV9QUk9WSURFUilba2V5b2YgdHlwZW9mIFNDSEVNQV9CWV9QUk9WSURFUl0ge1xuICBpZiAocHJvdmlkZXIgPT09IFwicG9zdGdyZXNxbFwiKSB7XG4gICAgcmV0dXJuIFNDSEVNQV9CWV9QUk9WSURFUltcInBvc3RncmVzXCJdO1xuICB9XG5cbiAgcmV0dXJuIFNDSEVNQV9CWV9QUk9WSURFUltwcm92aWRlcl07XG59XG5cbmFzeW5jIGZ1bmN0aW9uIHNlbmRQcmlzbWFPcm1SZXF1ZXN0PFI+KFxuICByZXF1ZXN0OiBKc29uUmVxdWVzdCxcbiAgb3B0aW9uczogRXhlY3V0ZU9wdGlvbnMgfCB1bmRlZmluZWQsXG4gIHNlbmRBY2NlbGVyYXRlUmVxdWVzdDogUmV0dXJuVHlwZTx0eXBlb2YgZ2V0U2VuZEFjY2VsZXJhdGVSZXF1ZXN0Rm4+LFxuKTogUHJvbWlzZTxSPiB7XG4gIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgc2VuZEFjY2VsZXJhdGVSZXF1ZXN0KHtcbiAgICBib2R5OiBKU09OLnN0cmluZ2lmeShyZXF1ZXN0KSxcbiAgICBtZXRob2Q6IFwiUE9TVFwiLFxuICAgIHBhdGg6IFwiZ3JhcGhxbFwiLFxuICAgIHNpZ25hbDogb3B0aW9ucz8uYWJvcnRTaWduYWwsXG4gIH0pO1xuXG4gIGlmICghcmVzcG9uc2Uub2spIHtcbiAgICB0cnkge1xuICAgICAgY29uc29sZS5lcnJvcihhd2FpdCByZXNwb25zZS50ZXh0KCkpO1xuICAgIH0gY2F0Y2gge1xuICAgICAgLy8gbm9vcFxuICAgIH1cbiAgICB0aHJvdyBuZXcgRXJyb3IoYEZhaWxlZCB0byBleGVjdXRlIHF1ZXJ5OiAke3Jlc3BvbnNlLnN0YXR1c1RleHR9YCk7XG4gIH1cblxuICByZXR1cm4gKGF3YWl0IHJlc3BvbnNlLmpzb24oKSkgYXMgUjtcbn1cblxuZnVuY3Rpb24gZ2V0U2VuZFF1ZXJ5UmVxdWVzdEZuKFxuICBwcm9wczogQWNjZWxlcmF0ZUh0dHBDbGllbnRQYXJhbXMsXG4gIHNlbmRBY2NlbGVyYXRlUmVxdWVzdDogUmV0dXJuVHlwZTx0eXBlb2YgZ2V0U2VuZEFjY2VsZXJhdGVSZXF1ZXN0Rm4+LFxuKTogRXhlY3V0b3JbXCJleGVjdXRlXCJdIHtcbiAgY29uc3QgeyByZXN1bHREZXNlcmlhbGl6ZXJGbiA9IGRlc2VyaWFsaXplUmF3UmVzdWx0IH0gPSBwcm9wcztcbiAgbGV0IHNjaGVtYVJlcXVlc3Q6IFByb21pc2U8dm9pZD4gfCBudWxsID0gbnVsbDtcblxuICByZXR1cm4gYXN5bmMgKHF1ZXJ5LCBvcHRpb25zKSA9PiB7XG4gICAgdHJ5IHtcbiAgICAgIGF3YWl0IChzY2hlbWFSZXF1ZXN0IHx8PSBzZW5kU2NoZW1hUmVxdWVzdChwcm9wcywgb3B0aW9ucywgc2VuZEFjY2VsZXJhdGVSZXF1ZXN0KSk7XG5cbiAgICAgIGNvbnN0IHsgZGF0YSwgZXJyb3JzIH0gPSBhd2FpdCBzZW5kUHJpc21hT3JtUmVxdWVzdDxRdWVyeVJhd1Jlc3VsdD4oXG4gICAgICAgIHtcbiAgICAgICAgICBhY3Rpb246IFwicXVlcnlSYXdcIixcbiAgICAgICAgICBxdWVyeToge1xuICAgICAgICAgICAgYXJndW1lbnRzOiB7XG4gICAgICAgICAgICAgIHBhcmFtZXRlcnM6IHF1ZXJ5LnBhcmFtZXRlcnMgYXMgbmV2ZXJbXSxcbiAgICAgICAgICAgICAgcXVlcnk6IHF1ZXJ5LnNxbCxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBzZWxlY3Rpb246IHt9LFxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICAgIG9wdGlvbnMsXG4gICAgICAgIHNlbmRBY2NlbGVyYXRlUmVxdWVzdCxcbiAgICAgICk7XG5cbiAgICAgIGlmIChlcnJvcnMpIHtcbiAgICAgICAgcmV0dXJuIFtuZXcgQWdncmVnYXRlRXJyb3IoZXJyb3JzLCBcIkVycm9ycyBvY2N1cnJlZCB3aGlsZSBleGVjdXRpbmcgdGhlIHF1ZXJ5XCIpXTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIFtudWxsLCByZXN1bHREZXNlcmlhbGl6ZXJGbihkYXRhLnF1ZXJ5UmF3KSBhcyBRdWVyeVJlc3VsdDx0eXBlb2YgcXVlcnk+XTtcbiAgICB9IGNhdGNoIChlcnJvcjogdW5rbm93bikge1xuICAgICAgLy8gVE9ETzogaGFuZGxlIHByb3Blcmx5XG4gICAgICByZXR1cm4gW2Vycm9yIGFzIEVycm9yXTtcbiAgICB9XG4gIH07XG59XG4iXSwKICAibWFwcGluZ3MiOiAiOzs7Ozs7OzttREFBQUEsSUNBQUMsSUFJTyxTQUFTQyxFQUNkQyxFQUNBQyxFQUllQyxFQUNPLENBQ3RCLEdBQU0sQ0FBRSxRQUFBQyxFQUFTLEtBQUFDLEVBQU0sTUFBQUMsQ0FBTSxFQUFJTCxFQUUzQk0sRUFBNkMsQ0FBQyxFQUc5Q0MsRUFBc0JDLEVBQWdDTCxDQUFPLEVBRW5FLFFB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Q0FDQSxNQUFNLElBQUksTUFBTSw0QkFBNEJBLEVBQVMsVUFBVSxFQUFFLENBQ25FLENBRUEsT0FBUSxNQUFNQSxFQUFTLEtBQUssQ0FDOUIsQ0FFQSxTQUFTYixFQUNQSixFQUNBRSxFQUNxQixDQUNyQixHQUFNLENBQUUscUJBQUFpQixFQUF1QkMsQ0FBcUIsRUFBSXBCLEVBQ3BEcUIsRUFBc0MsS0FFMUMsTUFBTyxPQUFPQyxFQUFPUCxJQUFZLENBQy9CLEdBQUksQ0FDRixNQUFPTSxJQUFrQlAsRUFBa0JkLEVBQU9lLEVBQVNiLENBQXFCLEdBRWhGLEdBQU0sQ0FBRSxLQUFBcUIsRUFBTSxPQUFBQyxDQUFPLEVBQUksTUFBTU4sRUFDN0IsQ0FDRSxPQUFRLFdBQ1IsTUFBTyxDQUNMLFVBQVcsQ0FDVCxXQUFZSSxFQUFNLFdBQ2xCLE1BQU9BLEVBQU0sR0FDZixFQUNBLFVBQVcsQ0FBQyxDQUNkLENBQ0YsRUFDQVAsRUFDQWIsQ0FDRixFQUVBLE9BQUlzQixFQUNLLENBQUMsSUFBSSxlQUFlQSxFQUFRLDJDQUEyQyxDQUFDLEVBRzFFLENBQUMsS0FBTUwsRUFBcUJJLEVBQUssUUFBUSxDQUE4QixDQUNoRixPQUFTRSxFQUFnQixDQUV2QixNQUFPLENBQUNBLENBQWMsQ0FDeEIsQ0FDRixDQUNGIiwKICAibmFtZXMiOiBbImluaXRfZGVmaW5lX0FDQ0VMRVJBVEVfU0NIRU1BX0JZX1BST1ZJREVSIiwgImluaXRfZGVmaW5lX0FDQ0VMRVJBVEVfU0NIRU1BX0JZX1BST1ZJREVSIiwgImRlc2VyaWFsaXplUmF3UmVzdWx0IiwgInJlc3BvbnNlIiwgInZhbHVlRGVzZXJpYWxpemVyRm4iLCAiZGVzZXJpYWxpemVWYWx1ZSIsICJjb2x1bW5zIiwgInJvd3MiLCAidHlwZXMiLCAiZGVzZXJpYWxpemVkUmVzcG9uc2UiLCAicHJlYnVpbHRFbXB0eU9iamVjdCIsICJjcmVhdGVQcmVidWlsdEVtcHR5UmVzdWx0T2JqZWN0IiwgImkiLCAibGVuIiwgInJvdyIsICJtYXBwZWRSb3ciLCAiaiIsICJjb2x1bW4iLCAidmFsdWUiLCAiX3R5cGUiLCAiX2NvbHVtbiIsICJpbml0X2RlZmluZV9BQ0NFTEVSQVRFX1NDSEVNQV9CWV9QUk9WSURFUiIsICJTVVBQT1JURURfQUNDRUxFUkFURV9QUk9WSURFUlMiLCAiQUNDRUxFUkFURV9IT1NUIiwgIlNDSEVNQV9CWV9QUk9WSURFUiIsICJkZWZpbmVfQUNDRUxFUkFURV9TQ0hFTUFfQllfUFJPVklERVJfZGVmYXVsdCIsICJjcmVhdGVBY2NlbGVyYXRlSHR0cENsaWVudCIsICJwcm9wcyIsICJwcm92aWRlciIsICJzZW5kQWNjZWxlcmF0ZVJlcXVlc3QiLCAiZ2V0U2VuZEFjY2VsZXJhdGVSZXF1ZXN0Rm4iLCAiZ2V0U2VuZFF1ZXJ5UmVxdWVzdEZuIiwgImhvc3QiLCAiZW5naW5lSGFzaCIsICJjbGllbnRWZXJzaW9uIiwgImFwaUtleSIsICJiYXNlVXJsIiwgImdldFNjaGVtYUJ5UHJvdmlkZXIiLCAiZmV0Y2hGbiIsICJoZWFkZXJzIiwgInJlcXVlc3QiLCAic2VuZFNjaGVtYVJlcXVlc3QiLCAib3B0aW9ucyIsICJzZW5kUmVxdWVzdCIsICJyZXNwb25zZSIsICJzZW5kUHJpc21hT3JtUmVxdWVzdCIsICJyZXN1bHREZXNlcmlhbGl6ZXJGbiIsICJkZXNlcmlhbGl6ZVJhd1Jlc3VsdCIsICJzY2hlbWFSZXF1ZXN0IiwgInF1ZXJ5IiwgImRhdGEiLCAiZXJyb3JzIiwgImVycm9yIl0KfQo=
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";var a=Object.defineProperty;var y=Object.getOwnPropertyDescriptor;var f=Object.getOwnPropertyNames;var E=Object.prototype.hasOwnProperty;var x=(e,r)=>{for(var t in r)a(e,t,{get:r[t],enumerable:!0})},F=(e,r,t,o)=>{if(r&&typeof r=="object"||typeof r=="function")for(let n of f(r))!E.call(e,n)&&n!==t&&a(e,n,{get:()=>r[n],enumerable:!(o=y(r,n))||o.enumerable});return e};var w=e=>F(a({},"__esModule",{value:!0}),e);var Q={};x(Q,{createStudioBFFClient:()=>h,deserializeError:()=>c,serializeError:()=>m});module.exports=w(Q);function h(e){let{customHeaders:r,customPayload:t,resultDeserializerFn:o,url:n}=e,i=e.fetch||fetch;return{async execute(p,g){try{let s=await i(n,{body:JSON.stringify({customPayload:t,procedure:"query",query:p}),headers:{Accept:"application/json","Content-Type":"application/json",...r},method:"POST",signal:g?.abortSignal});if(!s.ok){let u;try{u=await s.text()}catch{u="unknown error"}return[new Error(u)]}let[l,d]=await s.json();return l?[c(l)]:[null,o?.(d)||d]}catch(s){return[s]}}}}function m(e){if(e instanceof AggregateError){let{name:r,message:t}=e,o=e.errors.map(m);return{name:r,message:t,errors:o}}if(e instanceof Error){let{name:r,message:t}=e;return{name:r,message:t}}return{name:"UnknownError",message:JSON.stringify(e)}}function c(e){let{name:r,message:t}=e;if(e.errors!==void 0){let n=e.errors.map(c),i=new AggregateError(n,t);return i.name=e.name,i}let o=new Error(e.message);return e.name=r,o}
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vZGF0YS9iZmYvaW5kZXgudHMiLCAiLi4vLi4vLi4vZGF0YS9iZmYvYmZmLWNsaWVudC50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiZXhwb3J0ICogZnJvbSBcIi4vYmZmLWNsaWVudFwiO1xuIiwgImltcG9ydCB0eXBlIHsgRXhlY3V0ZU9wdGlvbnMsIEV4ZWN1dG9yIH0gZnJvbSBcIi4uL2V4ZWN1dG9yXCI7XG5pbXBvcnQgdHlwZSB7IFF1ZXJ5LCBRdWVyeVJlc3VsdCB9IGZyb20gXCIuLi9xdWVyeVwiO1xuaW1wb3J0IHR5cGUgeyBFaXRoZXIgfSBmcm9tIFwiLi4vdHlwZS11dGlsc1wiO1xuXG5leHBvcnQgaW50ZXJmYWNlIFN0dWRpb0JGRkNsaWVudFByb3BzIHtcbiAgLyoqXG4gICAqIEFsbG93cyBwYXNzaW5nIGN1c3RvbSBoZWFkZXJzIHRvIHRoZSBCRkYuXG4gICAqXG4gICAqIGUuZy4gYXV0aG9yaXphdGlvbiB0b2tlbi5cbiAgICovXG4gIGN1c3RvbUhlYWRlcnM/OiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+O1xuXG4gIC8qKlxuICAgKiBBbGxvd3MgcGFzc2luZyBjdXN0b20gcGF5bG9hZCB0byB0aGUgQkZGIHZpYSBgYm9keS5jdXN0b21QYXlsb2FkYC5cbiAgICpcbiAgICogZS5nLiB0ZW5hbnQgaWQuXG4gICAqL1xuICBjdXN0b21QYXlsb2FkPzogUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG5cbiAgLyoqXG4gICAqIEFsbG93cyBvdmVycmlkaW5nIHRoZSBmZXRjaCBmdW5jdGlvbiBpbXBsZW1lbnRhdGlvbi5cbiAgICpcbiAgICogZS5nLiBmb3IgdGVzdGluZywgb3Igb2xkZXIgTm9kZS5qcyB2ZXJzaW9ucy5cbiAgICovXG4gIGZldGNoPzogdHlwZW9mIGdsb2JhbFRoaXMuZmV0Y2g7XG5cbiAgLyoqXG4gICAqIEZ1bmN0aW9uIHVzZWQgdG8gZGVzZXJpYWxpemUgdGhlIHJlc3VsdHMgb2YgcXVlcmllcy5cbiAgICpcbiAgICogQnkgZGVmYXVsdCwgdGhlIHJlc3VsdHMgYXJlIHJldHVybmVkIGFzIGlzIHdpdGhvdXQgYW55IGFkZGl0aW9uYWwgcHJvY2Vzc2luZy5cbiAgICovXG4gIHJlc3VsdERlc2VyaWFsaXplckZuPyh0aGlzOiB2b2lkLCByZXN1bHRzOiB1bmtub3duKTogdW5rbm93bltdO1xuXG4gIC8qKlxuICAgKiBCRkYgZW5kcG9pbnQgVVJMLlxuICAgKlxuICAgKiBlLmcuIGBodHRwczovL2FwaS5leGFtcGxlLmNvbS9zdHVkaW9gXG4gICAqL1xuICB1cmw6IHN0cmluZyB8IFVSTDtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBTdHVkaW9CRkZDbGllbnQgZXh0ZW5kcyBFeGVjdXRvciB7XG4gIC8qKlxuICAgKiBSZXF1ZXN0cyBCRkYgdG8gcXVlcnkgdGhlIGRhdGFiYXNlLlxuICAgKlxuICAgKiBUaGUgcXVlcnkgaXMgc2VudCBhcyBgYm9keS5xdWVyeWAuXG4gICAqL1xuICBleGVjdXRlPFEgZXh0ZW5kcyBRdWVyeT4odGhpczogdm9pZCwgcXVlcnk6IFEsIG9wdGlvbnM/OiBFeGVjdXRlT3B0aW9ucyk6IFByb21pc2U8RWl0aGVyPEVycm9yLCBRdWVyeVJlc3VsdDxRPj4+O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFN0dWRpb0JGRlF1ZXJ5UmVxdWVzdCB7XG4gIGN1c3RvbVBheWxvYWQ/OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcbiAgcHJvY2VkdXJlOiBcInF1ZXJ5XCI7XG4gIHF1ZXJ5OiBRdWVyeTx1bmtub3duPjtcbn1cblxuLyoqXG4gKiBDcmVhdGVzIGEgU3R1ZGlvIEJGRiBjbGllbnQuIEJGRiBzdGFuZHMgZm9yIFwiQmFja2VuZCBGb3IgRnJvbnRlbmRcIiBidHcuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVTdHVkaW9CRkZDbGllbnQocHJvcHM6IFN0dWRpb0JGRkNsaWVudFByb3BzKTogU3R1ZGlvQkZGQ2xpZW50IHtcbiAgY29uc3QgeyBjdXN0b21IZWFkZXJzLCBjdXN0b21QYXlsb2FkLCByZXN1bHREZXNlcmlhbGl6ZXJGbiwgdXJsIH0gPSBwcm9wcztcbiAgY29uc3QgZmV0Y2hGbiA9IHByb3BzLmZldGNoIHx8IGZldGNoO1xuXG4gIHJldHVybiB7XG4gICAgYXN5bmMgZXhlY3V0ZTxRIGV4dGVuZHMgUXVlcnk+KHF1ZXJ5OiBRLCBvcHRpb25zPzogRXhlY3V0ZU9wdGlvbnMpOiBQcm9taXNlPEVpdGhlcjxFcnJvciwgUXVlcnlSZXN1bHQ8UT4+PiB7XG4gICAgICB0cnkge1xuICAgICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGZldGNoRm4odXJsLCB7XG4gICAgICAgICAgYm9keTogSlNPTi5zdHJpbmdpZnkoeyBjdXN0b21QYXlsb2FkLCBwcm9jZWR1cmU6IFwicXVlcnlcIiwgcXVlcnkgfSBzYXRpc2ZpZXMgU3R1ZGlvQkZGUXVlcnlSZXF1ZXN0KSxcbiAgICAgICAgICBoZWFkZXJzOiB7XG4gICAgICAgICAgICBBY2NlcHQ6IFwiYXBwbGljYXRpb24vanNvblwiLFxuICAgICAgICAgICAgXCJDb250ZW50LVR5cGVcIjogXCJhcHBsaWNhdGlvbi9qc29uXCIsXG4gICAgICAgICAgICAuLi5jdXN0b21IZWFkZXJzLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgbWV0aG9kOiBcIlBPU1RcIixcbiAgICAgICAgICBzaWduYWw6IG9wdGlvbnM/LmFib3J0U2lnbmFsLFxuICAgICAgICB9KTtcblxuICAgICAgICBpZiAoIXJlc3BvbnNlLm9rKSB7XG4gICAgICAgICAgbGV0IGVycm9yVGV4dDogc3RyaW5nO1xuXG4gICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGVycm9yVGV4dCA9IGF3YWl0IHJlc3BvbnNlLnRleHQoKTtcbiAgICAgICAgICB9IGNhdGNoIHtcbiAgICAgICAgICAgIGVycm9yVGV4dCA9IFwidW5rbm93biBlcnJvclwiO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHJldHVybiBbbmV3IEVycm9yKGVycm9yVGV4dCldO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgW2Vycm9yLCByZXN1bHRzXSA9IChhd2FpdCByZXNwb25zZS5qc29uKCkpIGFzIFtTZXJpYWxpemVkRXJyb3IsIHVua25vd25dO1xuXG4gICAgICAgIGlmIChlcnJvcikge1xuICAgICAgICAgIHJldHVybiBbZGVzZXJpYWxpemVFcnJvcihlcnJvcildO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIFtudWxsLCAocmVzdWx0RGVzZXJpYWxpemVyRm4/LihyZXN1bHRzKSB8fCByZXN1bHRzKSBhcyBuZXZlcl07XG4gICAgICB9IGNhdGNoIChlcnJvcjogdW5rbm93bikge1xuICAgICAgICAvLyBUT0RPOiBoYW5kbGUgcHJvcGVybHlcbiAgICAgICAgcmV0dXJuIFtlcnJvciBhcyBFcnJvcl07XG4gICAgICB9XG4gICAgfSxcbiAgfTtcbn1cblxuaW50ZXJmYWNlIFNlcmlhbGl6ZWRFcnJvciB7XG4gIG1lc3NhZ2U6IHN0cmluZztcbiAgbmFtZTogc3RyaW5nO1xuICBlcnJvcnM/OiBTZXJpYWxpemVkRXJyb3JbXTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHNlcmlhbGl6ZUVycm9yKGVycm9yOiB1bmtub3duKTogU2VyaWFsaXplZEVycm9yIHtcbiAgaWYgKGVycm9yIGluc3RhbmNlb2YgQWdncmVnYXRlRXJyb3IpIHtcbiAgICBjb25zdCB7IG5hbWUsIG1lc3NhZ2UgfSA9IGVycm9yO1xuICAgIGNvbnN0IGVycm9ycyA9IGVycm9yLmVycm9ycy5tYXAoc2VyaWFsaXplRXJyb3IpO1xuICAgIHJldHVybiB7IG5hbWUsIG1lc3NhZ2UsIGVycm9ycyB9O1xuICB9XG5cbiAgaWYgKGVycm9yIGluc3RhbmNlb2YgRXJyb3IpIHtcbiAgICBjb25zdCB7IG5hbWUsIG1lc3NhZ2UgfSA9IGVycm9yO1xuICAgIHJldHVybiB7IG5hbWUsIG1lc3NhZ2UgfTtcbiAgfVxuXG4gIHJldHVybiB7IG5hbWU6IGBVbmtub3duRXJyb3JgLCBtZXNzYWdlOiBKU09OLnN0cmluZ2lmeShlcnJvcikgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGRlc2VyaWFsaXplRXJyb3IoZXJyb3I6IFNlcmlhbGl6ZWRFcnJvcik6IEVycm9yIHtcbiAgY29uc3QgeyBuYW1lLCBtZXNzYWdlIH0gPSBlcnJvcjtcblxuICBpZiAoZXJyb3IuZXJyb3JzICE9PSB1bmRlZmluZWQpIHtcbiAgICBjb25zdCBlcnJvcnMgPSBlcnJvci5lcnJvcnMubWFwKGRlc2VyaWFsaXplRXJyb3IpO1xuICAgIGNvbnN0IGFnZ3JlZ2F0ZUVycm9yID0gbmV3IEFnZ3JlZ2F0ZUVycm9yKGVycm9ycywgbWVzc2FnZSk7XG4gICAgYWdncmVnYXRlRXJyb3IubmFtZSA9IGVycm9yLm5hbWU7XG4gICAgcmV0dXJuIGFnZ3JlZ2F0ZUVycm9yO1xuICB9XG5cbiAgY29uc3QgcmVndWxhckVycm9yID0gbmV3IEVycm9yKGVycm9yLm1lc3NhZ2UpO1xuICBlcnJvci5uYW1lID0gbmFtZTtcbiAgcmV0dXJuIHJlZ3VsYXJFcnJvcjtcbn1cbiJdLAogICJtYXBwaW5ncyI6ICJ5YUFBQSxJQUFBQSxFQUFBLEdBQUFDLEVBQUFELEVBQUEsMkJBQUFFLEVBQUEscUJBQUFDLEVBQUEsbUJBQUFDLElBQUEsZUFBQUMsRUFBQUwsR0MyRE8sU0FBU00sRUFBc0JDLEVBQThDLENBQ2xGLEdBQU0sQ0FBRSxjQUFBQyxFQUFlLGNBQUFDLEVBQWUscUJBQUFDLEVBQXNCLElBQUFDLENBQUksRUFBSUosRUFDOURLLEVBQVVMLEVBQU0sT0FBUyxNQUUvQixNQUFPLENBQ0wsTUFBTSxRQUF5Qk0sRUFBVUMsRUFBa0UsQ0FDekcsR0FBSSxDQUNGLElBQU1DLEVBQVcsTUFBTUgsRUFBUUQsRUFBSyxDQUNsQyxLQUFNLEtBQUssVUFBVSxDQUFFLGNBQUFGLEVBQWUsVUFBVyxRQUFTLE1BQUFJLENBQU0sQ0FBaUMsRUFDakcsUUFBUyxDQUNQLE9BQVEsbUJBQ1IsZUFBZ0IsbUJBQ2hCLEdBQUdMLENBQ0wsRUFDQSxPQUFRLE9BQ1IsT0FBUU0sR0FBUyxXQUNuQixDQUFDLEVBRUQsR0FBSSxDQUFDQyxFQUFTLEdBQUksQ0FDaEIsSUFBSUMsRUFFSixHQUFJLENBQ0ZBLEVBQVksTUFBTUQsRUFBUyxLQUFLLENBQ2xDLE1BQVEsQ0FDTkMsRUFBWSxlQUNkLENBRUEsTUFBTyxDQUFDLElBQUksTUFBTUEsQ0FBUyxDQUFDLENBQzlCLENBRUEsR0FBTSxDQUFDQyxFQUFPQyxDQUFPLEVBQUssTUFBTUgsRUFBUyxLQUFLLEVBRTlDLE9BQUlFLEVBQ0ssQ0FBQ0UsRUFBaUJGLENBQUssQ0FBQyxFQUcxQixDQUFDLEtBQU9QLElBQXVCUSxDQUFPLEdBQUtBLENBQWlCLENBQ3JFLE9BQVNELEVBQWdCLENBRXZCLE1BQU8sQ0FBQ0EsQ0FBYyxDQUN4QixDQUNGLENBQ0YsQ0FDRixDQVFPLFNBQVNHLEVBQWVILEVBQWlDLENBQzlELEdBQUlBLGFBQWlCLGVBQWdCLENBQ25DLEdBQU0sQ0FBRSxLQUFBSSxFQUFNLFFBQUFDLENBQVEsRUFBSUwsRUFDcEJNLEVBQVNOLEVBQU0sT0FBTyxJQUFJRyxDQUFjLEVBQzlDLE1BQU8sQ0FBRSxLQUFBQyxFQUFNLFFBQUFDLEVBQVMsT0FBQUMsQ0FBTyxDQUNqQyxDQUVBLEdBQUlOLGFBQWlCLE1BQU8sQ0FDMUIsR0FBTSxDQUFFLEtBQUFJLEVBQU0sUUFBQUMsQ0FBUSxFQUFJTCxFQUMxQixNQUFPLENBQUUsS0FBQUksRUFBTSxRQUFBQyxDQUFRLENBQ3pCLENBRUEsTUFBTyxDQUFFLEtBQU0sZUFBZ0IsUUFBUyxLQUFLLFVBQVVMLENBQUssQ0FBRSxDQUNoRSxDQUVPLFNBQVNFLEVBQWlCRixFQUErQixDQUM5RCxHQUFNLENBQUUsS0FBQUksRUFBTSxRQUFBQyxDQUFRLEVBQUlMLEVBRTFCLEdBQUlBLEVBQU0sU0FBVyxPQUFXLENBQzlCLElBQU1NLEVBQVNOLEVBQU0sT0FBTyxJQUFJRSxDQUFnQixFQUMxQ0ssRUFBaUIsSUFBSSxlQUFlRCxFQUFRRCxDQUFPLEVBQ3pELE9BQUFFLEVBQWUsS0FBT1AsRUFBTSxLQUNyQk8sQ0FDVCxDQUVBLElBQU1DLEVBQWUsSUFBSSxNQUFNUixFQUFNLE9BQU8sRUFDNUMsT0FBQUEsRUFBTSxLQUFPSSxFQUNOSSxDQUNUIiwKICAibmFtZXMiOiBbImJmZl9leHBvcnRzIiwgIl9fZXhwb3J0IiwgImNyZWF0ZVN0dWRpb0JGRkNsaWVudCIsICJkZXNlcmlhbGl6ZUVycm9yIiwgInNlcmlhbGl6ZUVycm9yIiwgIl9fdG9Db21tb25KUyIsICJjcmVhdGVTdHVkaW9CRkZDbGllbnQiLCAicHJvcHMiLCAiY3VzdG9tSGVhZGVycyIsICJjdXN0b21QYXlsb2FkIiwgInJlc3VsdERlc2VyaWFsaXplckZuIiwgInVybCIsICJmZXRjaEZuIiwgInF1ZXJ5IiwgIm9wdGlvbnMiLCAicmVzcG9uc2UiLCAiZXJyb3JUZXh0IiwgImVycm9yIiwgInJlc3VsdHMiLCAiZGVzZXJpYWxpemVFcnJvciIsICJzZXJpYWxpemVFcnJvciIsICJuYW1lIiwgIm1lc3NhZ2UiLCAiZXJyb3JzIiwgImFnZ3JlZ2F0ZUVycm9yIiwgInJlZ3VsYXJFcnJvciJdCn0K
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
import { Executor, ExecuteOptions } from '../index.cjs';
|
|
2
|
+
import { Q as Query, E as Either, a as QueryResult } from '../../query-C7LxjwdN.cjs';
|
|
3
|
+
import 'kysely';
|
|
4
|
+
|
|
5
|
+
interface StudioBFFClientProps {
|
|
6
|
+
/**
|
|
7
|
+
* Allows passing custom headers to the BFF.
|
|
8
|
+
*
|
|
9
|
+
* e.g. authorization token.
|
|
10
|
+
*/
|
|
11
|
+
customHeaders?: Record<string, string>;
|
|
12
|
+
/**
|
|
13
|
+
* Allows passing custom payload to the BFF via `body.customPayload`.
|
|
14
|
+
*
|
|
15
|
+
* e.g. tenant id.
|
|
16
|
+
*/
|
|
17
|
+
customPayload?: Record<string, unknown>;
|
|
18
|
+
/**
|
|
19
|
+
* Allows overriding the fetch function implementation.
|
|
20
|
+
*
|
|
21
|
+
* e.g. for testing, or older Node.js versions.
|
|
22
|
+
*/
|
|
23
|
+
fetch?: typeof globalThis.fetch;
|
|
24
|
+
/**
|
|
25
|
+
* Function used to deserialize the results of queries.
|
|
26
|
+
*
|
|
27
|
+
* By default, the results are returned as is without any additional processing.
|
|
28
|
+
*/
|
|
29
|
+
resultDeserializerFn?(this: void, results: unknown): unknown[];
|
|
30
|
+
/**
|
|
31
|
+
* BFF endpoint URL.
|
|
32
|
+
*
|
|
33
|
+
* e.g. `https://api.example.com/studio`
|
|
34
|
+
*/
|
|
35
|
+
url: string | URL;
|
|
36
|
+
}
|
|
37
|
+
interface StudioBFFClient extends Executor {
|
|
38
|
+
/**
|
|
39
|
+
* Requests BFF to query the database.
|
|
40
|
+
*
|
|
41
|
+
* The query is sent as `body.query`.
|
|
42
|
+
*/
|
|
43
|
+
execute<Q extends Query>(this: void, query: Q, options?: ExecuteOptions): Promise<Either<Error, QueryResult<Q>>>;
|
|
44
|
+
}
|
|
45
|
+
interface StudioBFFQueryRequest {
|
|
46
|
+
customPayload?: Record<string, unknown>;
|
|
47
|
+
procedure: "query";
|
|
48
|
+
query: Query<unknown>;
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* Creates a Studio BFF client. BFF stands for "Backend For Frontend" btw.
|
|
52
|
+
*/
|
|
53
|
+
declare function createStudioBFFClient(props: StudioBFFClientProps): StudioBFFClient;
|
|
54
|
+
interface SerializedError {
|
|
55
|
+
message: string;
|
|
56
|
+
name: string;
|
|
57
|
+
errors?: SerializedError[];
|
|
58
|
+
}
|
|
59
|
+
declare function serializeError(error: unknown): SerializedError;
|
|
60
|
+
declare function deserializeError(error: SerializedError): Error;
|
|
61
|
+
|
|
62
|
+
export { type StudioBFFClient, type StudioBFFClientProps, type StudioBFFQueryRequest, createStudioBFFClient, deserializeError, serializeError };
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
import { Executor, ExecuteOptions } from '../index.js';
|
|
2
|
+
import { Q as Query, E as Either, a as QueryResult } from '../../query-C7LxjwdN.js';
|
|
3
|
+
import 'kysely';
|
|
4
|
+
|
|
5
|
+
interface StudioBFFClientProps {
|
|
6
|
+
/**
|
|
7
|
+
* Allows passing custom headers to the BFF.
|
|
8
|
+
*
|
|
9
|
+
* e.g. authorization token.
|
|
10
|
+
*/
|
|
11
|
+
customHeaders?: Record<string, string>;
|
|
12
|
+
/**
|
|
13
|
+
* Allows passing custom payload to the BFF via `body.customPayload`.
|
|
14
|
+
*
|
|
15
|
+
* e.g. tenant id.
|
|
16
|
+
*/
|
|
17
|
+
customPayload?: Record<string, unknown>;
|
|
18
|
+
/**
|
|
19
|
+
* Allows overriding the fetch function implementation.
|
|
20
|
+
*
|
|
21
|
+
* e.g. for testing, or older Node.js versions.
|
|
22
|
+
*/
|
|
23
|
+
fetch?: typeof globalThis.fetch;
|
|
24
|
+
/**
|
|
25
|
+
* Function used to deserialize the results of queries.
|
|
26
|
+
*
|
|
27
|
+
* By default, the results are returned as is without any additional processing.
|
|
28
|
+
*/
|
|
29
|
+
resultDeserializerFn?(this: void, results: unknown): unknown[];
|
|
30
|
+
/**
|
|
31
|
+
* BFF endpoint URL.
|
|
32
|
+
*
|
|
33
|
+
* e.g. `https://api.example.com/studio`
|
|
34
|
+
*/
|
|
35
|
+
url: string | URL;
|
|
36
|
+
}
|
|
37
|
+
interface StudioBFFClient extends Executor {
|
|
38
|
+
/**
|
|
39
|
+
* Requests BFF to query the database.
|
|
40
|
+
*
|
|
41
|
+
* The query is sent as `body.query`.
|
|
42
|
+
*/
|
|
43
|
+
execute<Q extends Query>(this: void, query: Q, options?: ExecuteOptions): Promise<Either<Error, QueryResult<Q>>>;
|
|
44
|
+
}
|
|
45
|
+
interface StudioBFFQueryRequest {
|
|
46
|
+
customPayload?: Record<string, unknown>;
|
|
47
|
+
procedure: "query";
|
|
48
|
+
query: Query<unknown>;
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* Creates a Studio BFF client. BFF stands for "Backend For Frontend" btw.
|
|
52
|
+
*/
|
|
53
|
+
declare function createStudioBFFClient(props: StudioBFFClientProps): StudioBFFClient;
|
|
54
|
+
interface SerializedError {
|
|
55
|
+
message: string;
|
|
56
|
+
name: string;
|
|
57
|
+
errors?: SerializedError[];
|
|
58
|
+
}
|
|
59
|
+
declare function serializeError(error: unknown): SerializedError;
|
|
60
|
+
declare function deserializeError(error: SerializedError): Error;
|
|
61
|
+
|
|
62
|
+
export { type StudioBFFClient, type StudioBFFClientProps, type StudioBFFQueryRequest, createStudioBFFClient, deserializeError, serializeError };
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import * as ___react___ from 'react';
|
|
2
|
+
import * as ___react_dom___ from 'react-dom';
|
|
3
|
+
|
|
4
|
+
function require(mod) {
|
|
5
|
+
if (mod === 'react') return ___react___;
|
|
6
|
+
if (mod === 'react-dom') return ___react_dom___;
|
|
7
|
+
throw new Error(`Unknown module ${mod}`);
|
|
8
|
+
}
|
|
9
|
+
import{e as i}from"../../chunk-P5LRZ6C2.js";i();i();function f(e){let{customHeaders:r,customPayload:t,resultDeserializerFn:n,url:u}=e,s=e.fetch||fetch;return{async execute(m,p){try{let o=await s(u,{body:JSON.stringify({customPayload:t,procedure:"query",query:m}),headers:{Accept:"application/json","Content-Type":"application/json",...r},method:"POST",signal:p?.abortSignal});if(!o.ok){let a;try{a=await o.text()}catch{a="unknown error"}return[new Error(a)]}let[c,l]=await o.json();return c?[d(c)]:[null,n?.(l)||l]}catch(o){return[o]}}}}function y(e){if(e instanceof AggregateError){let{name:r,message:t}=e,n=e.errors.map(y);return{name:r,message:t,errors:n}}if(e instanceof Error){let{name:r,message:t}=e;return{name:r,message:t}}return{name:"UnknownError",message:JSON.stringify(e)}}function d(e){let{name:r,message:t}=e;if(e.errors!==void 0){let u=e.errors.map(d),s=new AggregateError(u,t);return s.name=e.name,s}let n=new Error(e.message);return e.name=r,n}export{f as createStudioBFFClient,d as deserializeError,y as serializeError};
|
|
10
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vZGF0YS9iZmYvaW5kZXgudHMiLCAiLi4vLi4vLi4vZGF0YS9iZmYvYmZmLWNsaWVudC50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiZXhwb3J0ICogZnJvbSBcIi4vYmZmLWNsaWVudFwiO1xuIiwgImltcG9ydCB0eXBlIHsgRXhlY3V0ZU9wdGlvbnMsIEV4ZWN1dG9yIH0gZnJvbSBcIi4uL2V4ZWN1dG9yXCI7XG5pbXBvcnQgdHlwZSB7IFF1ZXJ5LCBRdWVyeVJlc3VsdCB9IGZyb20gXCIuLi9xdWVyeVwiO1xuaW1wb3J0IHR5cGUgeyBFaXRoZXIgfSBmcm9tIFwiLi4vdHlwZS11dGlsc1wiO1xuXG5leHBvcnQgaW50ZXJmYWNlIFN0dWRpb0JGRkNsaWVudFByb3BzIHtcbiAgLyoqXG4gICAqIEFsbG93cyBwYXNzaW5nIGN1c3RvbSBoZWFkZXJzIHRvIHRoZSBCRkYuXG4gICAqXG4gICAqIGUuZy4gYXV0aG9yaXphdGlvbiB0b2tlbi5cbiAgICovXG4gIGN1c3RvbUhlYWRlcnM/OiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+O1xuXG4gIC8qKlxuICAgKiBBbGxvd3MgcGFzc2luZyBjdXN0b20gcGF5bG9hZCB0byB0aGUgQkZGIHZpYSBgYm9keS5jdXN0b21QYXlsb2FkYC5cbiAgICpcbiAgICogZS5nLiB0ZW5hbnQgaWQuXG4gICAqL1xuICBjdXN0b21QYXlsb2FkPzogUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG5cbiAgLyoqXG4gICAqIEFsbG93cyBvdmVycmlkaW5nIHRoZSBmZXRjaCBmdW5jdGlvbiBpbXBsZW1lbnRhdGlvbi5cbiAgICpcbiAgICogZS5nLiBmb3IgdGVzdGluZywgb3Igb2xkZXIgTm9kZS5qcyB2ZXJzaW9ucy5cbiAgICovXG4gIGZldGNoPzogdHlwZW9mIGdsb2JhbFRoaXMuZmV0Y2g7XG5cbiAgLyoqXG4gICAqIEZ1bmN0aW9uIHVzZWQgdG8gZGVzZXJpYWxpemUgdGhlIHJlc3VsdHMgb2YgcXVlcmllcy5cbiAgICpcbiAgICogQnkgZGVmYXVsdCwgdGhlIHJlc3VsdHMgYXJlIHJldHVybmVkIGFzIGlzIHdpdGhvdXQgYW55IGFkZGl0aW9uYWwgcHJvY2Vzc2luZy5cbiAgICovXG4gIHJlc3VsdERlc2VyaWFsaXplckZuPyh0aGlzOiB2b2lkLCByZXN1bHRzOiB1bmtub3duKTogdW5rbm93bltdO1xuXG4gIC8qKlxuICAgKiBCRkYgZW5kcG9pbnQgVVJMLlxuICAgKlxuICAgKiBlLmcuIGBodHRwczovL2FwaS5leGFtcGxlLmNvbS9zdHVkaW9gXG4gICAqL1xuICB1cmw6IHN0cmluZyB8IFVSTDtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBTdHVkaW9CRkZDbGllbnQgZXh0ZW5kcyBFeGVjdXRvciB7XG4gIC8qKlxuICAgKiBSZXF1ZXN0cyBCRkYgdG8gcXVlcnkgdGhlIGRhdGFiYXNlLlxuICAgKlxuICAgKiBUaGUgcXVlcnkgaXMgc2VudCBhcyBgYm9keS5xdWVyeWAuXG4gICAqL1xuICBleGVjdXRlPFEgZXh0ZW5kcyBRdWVyeT4odGhpczogdm9pZCwgcXVlcnk6IFEsIG9wdGlvbnM/OiBFeGVjdXRlT3B0aW9ucyk6IFByb21pc2U8RWl0aGVyPEVycm9yLCBRdWVyeVJlc3VsdDxRPj4+O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFN0dWRpb0JGRlF1ZXJ5UmVxdWVzdCB7XG4gIGN1c3RvbVBheWxvYWQ/OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcbiAgcHJvY2VkdXJlOiBcInF1ZXJ5XCI7XG4gIHF1ZXJ5OiBRdWVyeTx1bmtub3duPjtcbn1cblxuLyoqXG4gKiBDcmVhdGVzIGEgU3R1ZGlvIEJGRiBjbGllbnQuIEJGRiBzdGFuZHMgZm9yIFwiQmFja2VuZCBGb3IgRnJvbnRlbmRcIiBidHcuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVTdHVkaW9CRkZDbGllbnQocHJvcHM6IFN0dWRpb0JGRkNsaWVudFByb3BzKTogU3R1ZGlvQkZGQ2xpZW50IHtcbiAgY29uc3QgeyBjdXN0b21IZWFkZXJzLCBjdXN0b21QYXlsb2FkLCByZXN1bHREZXNlcmlhbGl6ZXJGbiwgdXJsIH0gPSBwcm9wcztcbiAgY29uc3QgZmV0Y2hGbiA9IHByb3BzLmZldGNoIHx8IGZldGNoO1xuXG4gIHJldHVybiB7XG4gICAgYXN5bmMgZXhlY3V0ZTxRIGV4dGVuZHMgUXVlcnk+KHF1ZXJ5OiBRLCBvcHRpb25zPzogRXhlY3V0ZU9wdGlvbnMpOiBQcm9taXNlPEVpdGhlcjxFcnJvciwgUXVlcnlSZXN1bHQ8UT4+PiB7XG4gICAgICB0cnkge1xuICAgICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGZldGNoRm4odXJsLCB7XG4gICAgICAgICAgYm9keTogSlNPTi5zdHJpbmdpZnkoeyBjdXN0b21QYXlsb2FkLCBwcm9jZWR1cmU6IFwicXVlcnlcIiwgcXVlcnkgfSBzYXRpc2ZpZXMgU3R1ZGlvQkZGUXVlcnlSZXF1ZXN0KSxcbiAgICAgICAgICBoZWFkZXJzOiB7XG4gICAgICAgICAgICBBY2NlcHQ6IFwiYXBwbGljYXRpb24vanNvblwiLFxuICAgICAgICAgICAgXCJDb250ZW50LVR5cGVcIjogXCJhcHBsaWNhdGlvbi9qc29uXCIsXG4gICAgICAgICAgICAuLi5jdXN0b21IZWFkZXJzLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgbWV0aG9kOiBcIlBPU1RcIixcbiAgICAgICAgICBzaWduYWw6IG9wdGlvbnM/LmFib3J0U2lnbmFsLFxuICAgICAgICB9KTtcblxuICAgICAgICBpZiAoIXJlc3BvbnNlLm9rKSB7XG4gICAgICAgICAgbGV0IGVycm9yVGV4dDogc3RyaW5nO1xuXG4gICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGVycm9yVGV4dCA9IGF3YWl0IHJlc3BvbnNlLnRleHQoKTtcbiAgICAgICAgICB9IGNhdGNoIHtcbiAgICAgICAgICAgIGVycm9yVGV4dCA9IFwidW5rbm93biBlcnJvclwiO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHJldHVybiBbbmV3IEVycm9yKGVycm9yVGV4dCldO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgW2Vycm9yLCByZXN1bHRzXSA9IChhd2FpdCByZXNwb25zZS5qc29uKCkpIGFzIFtTZXJpYWxpemVkRXJyb3IsIHVua25vd25dO1xuXG4gICAgICAgIGlmIChlcnJvcikge1xuICAgICAgICAgIHJldHVybiBbZGVzZXJpYWxpemVFcnJvcihlcnJvcildO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIFtudWxsLCAocmVzdWx0RGVzZXJpYWxpemVyRm4/LihyZXN1bHRzKSB8fCByZXN1bHRzKSBhcyBuZXZlcl07XG4gICAgICB9IGNhdGNoIChlcnJvcjogdW5rbm93bikge1xuICAgICAgICAvLyBUT0RPOiBoYW5kbGUgcHJvcGVybHlcbiAgICAgICAgcmV0dXJuIFtlcnJvciBhcyBFcnJvcl07XG4gICAgICB9XG4gICAgfSxcbiAgfTtcbn1cblxuaW50ZXJmYWNlIFNlcmlhbGl6ZWRFcnJvciB7XG4gIG1lc3NhZ2U6IHN0cmluZztcbiAgbmFtZTogc3RyaW5nO1xuICBlcnJvcnM/OiBTZXJpYWxpemVkRXJyb3JbXTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHNlcmlhbGl6ZUVycm9yKGVycm9yOiB1bmtub3duKTogU2VyaWFsaXplZEVycm9yIHtcbiAgaWYgKGVycm9yIGluc3RhbmNlb2YgQWdncmVnYXRlRXJyb3IpIHtcbiAgICBjb25zdCB7IG5hbWUsIG1lc3NhZ2UgfSA9IGVycm9yO1xuICAgIGNvbnN0IGVycm9ycyA9IGVycm9yLmVycm9ycy5tYXAoc2VyaWFsaXplRXJyb3IpO1xuICAgIHJldHVybiB7IG5hbWUsIG1lc3NhZ2UsIGVycm9ycyB9O1xuICB9XG5cbiAgaWYgKGVycm9yIGluc3RhbmNlb2YgRXJyb3IpIHtcbiAgICBjb25zdCB7IG5hbWUsIG1lc3NhZ2UgfSA9IGVycm9yO1xuICAgIHJldHVybiB7IG5hbWUsIG1lc3NhZ2UgfTtcbiAgfVxuXG4gIHJldHVybiB7IG5hbWU6IGBVbmtub3duRXJyb3JgLCBtZXNzYWdlOiBKU09OLnN0cmluZ2lmeShlcnJvcikgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGRlc2VyaWFsaXplRXJyb3IoZXJyb3I6IFNlcmlhbGl6ZWRFcnJvcik6IEVycm9yIHtcbiAgY29uc3QgeyBuYW1lLCBtZXNzYWdlIH0gPSBlcnJvcjtcblxuICBpZiAoZXJyb3IuZXJyb3JzICE9PSB1bmRlZmluZWQpIHtcbiAgICBjb25zdCBlcnJvcnMgPSBlcnJvci5lcnJvcnMubWFwKGRlc2VyaWFsaXplRXJyb3IpO1xuICAgIGNvbnN0IGFnZ3JlZ2F0ZUVycm9yID0gbmV3IEFnZ3JlZ2F0ZUVycm9yKGVycm9ycywgbWVzc2FnZSk7XG4gICAgYWdncmVnYXRlRXJyb3IubmFtZSA9IGVycm9yLm5hbWU7XG4gICAgcmV0dXJuIGFnZ3JlZ2F0ZUVycm9yO1xuICB9XG5cbiAgY29uc3QgcmVndWxhckVycm9yID0gbmV3IEVycm9yKGVycm9yLm1lc3NhZ2UpO1xuICBlcnJvci5uYW1lID0gbmFtZTtcbiAgcmV0dXJuIHJlZ3VsYXJFcnJvcjtcbn1cbiJdLAogICJtYXBwaW5ncyI6ICI7Ozs7Ozs7OzRDQUFBQSxJQ0FBQyxJQTJETyxTQUFTQyxFQUFzQkMsRUFBOEMsQ0FDbEYsR0FBTSxDQUFFLGNBQUFDLEVBQWUsY0FBQUMsRUFBZSxxQkFBQUMsRUFBc0IsSUFBQUMsQ0FBSSxFQUFJSixFQUM5REssRUFBVUwsRUFBTSxPQUFTLE1BRS9CLE1BQU8sQ0FDTCxNQUFNLFFBQXlCTSxFQUFVQyxFQUFrRSxDQUN6RyxHQUFJLENBQ0YsSUFBTUMsRUFBVyxNQUFNSCxFQUFRRCxFQUFLLENBQ2xDLEtBQU0sS0FBSyxVQUFVLENBQUUsY0FBQUYsRUFBZSxVQUFXLFFBQVMsTUFBQUksQ0FBTSxDQUFpQyxFQUNqRyxRQUFTLENBQ1AsT0FBUSxtQkFDUixlQUFnQixtQkFDaEIsR0FBR0wsQ0FDTCxFQUNBLE9BQVEsT0FDUixPQUFRTSxHQUFTLFdBQ25CLENBQUMsRUFFRCxHQUFJLENBQUNDLEVBQVMsR0FBSSxDQUNoQixJQUFJQyxFQUVKLEdBQUksQ0FDRkEsRUFBWSxNQUFNRCxFQUFTLEtBQUssQ0FDbEMsTUFBUSxDQUNOQyxFQUFZLGVBQ2QsQ0FFQSxNQUFPLENBQUMsSUFBSSxNQUFNQSxDQUFTLENBQUMsQ0FDOUIsQ0FFQSxHQUFNLENBQUNDLEVBQU9DLENBQU8sRUFBSyxNQUFNSCxFQUFTLEtBQUssRUFFOUMsT0FBSUUsRUFDSyxDQUFDRSxFQUFpQkYsQ0FBSyxDQUFDLEVBRzFCLENBQUMsS0FBT1AsSUFBdUJRLENBQU8sR0FBS0EsQ0FBaUIsQ0FDckUsT0FBU0QsRUFBZ0IsQ0FFdkIsTUFBTyxDQUFDQSxDQUFjLENBQ3hCLENBQ0YsQ0FDRixDQUNGLENBUU8sU0FBU0csRUFBZUgsRUFBaUMsQ0FDOUQsR0FBSUEsYUFBaUIsZUFBZ0IsQ0FDbkMsR0FBTSxDQUFFLEtBQUFJLEVBQU0sUUFBQUMsQ0FBUSxFQUFJTCxFQUNwQk0sRUFBU04sRUFBTSxPQUFPLElBQUlHLENBQWMsRUFDOUMsTUFBTyxDQUFFLEtBQUFDLEVBQU0sUUFBQUMsRUFBUyxPQUFBQyxDQUFPLENBQ2pDLENBRUEsR0FBSU4sYUFBaUIsTUFBTyxDQUMxQixHQUFNLENBQUUsS0FBQUksRUFBTSxRQUFBQyxDQUFRLEVBQUlMLEVBQzFCLE1BQU8sQ0FBRSxLQUFBSSxFQUFNLFFBQUFDLENBQVEsQ0FDekIsQ0FFQSxNQUFPLENBQUUsS0FBTSxlQUFnQixRQUFTLEtBQUssVUFBVUwsQ0FBSyxDQUFFLENBQ2hFLENBRU8sU0FBU0UsRUFBaUJGLEVBQStCLENBQzlELEdBQU0sQ0FBRSxLQUFBSSxFQUFNLFFBQUFDLENBQVEsRUFBSUwsRUFFMUIsR0FBSUEsRUFBTSxTQUFXLE9BQVcsQ0FDOUIsSUFBTU0sRUFBU04sRUFBTSxPQUFPLElBQUlFLENBQWdCLEVBQzFDSyxFQUFpQixJQUFJLGVBQWVELEVBQVFELENBQU8sRUFDekQsT0FBQUUsRUFBZSxLQUFPUCxFQUFNLEtBQ3JCTyxDQUNULENBRUEsSUFBTUMsRUFBZSxJQUFJLE1BQU1SLEVBQU0sT0FBTyxFQUM1QyxPQUFBQSxFQUFNLEtBQU9JLEVBQ05JLENBQ1QiLAogICJuYW1lcyI6IFsiaW5pdF9kZWZpbmVfQUNDRUxFUkFURV9TQ0hFTUFfQllfUFJPVklERVIiLCAiaW5pdF9kZWZpbmVfQUNDRUxFUkFURV9TQ0hFTUFfQllfUFJPVklERVIiLCAiY3JlYXRlU3R1ZGlvQkZGQ2xpZW50IiwgInByb3BzIiwgImN1c3RvbUhlYWRlcnMiLCAiY3VzdG9tUGF5bG9hZCIsICJyZXN1bHREZXNlcmlhbGl6ZXJGbiIsICJ1cmwiLCAiZmV0Y2hGbiIsICJxdWVyeSIsICJvcHRpb25zIiwgInJlc3BvbnNlIiwgImVycm9yVGV4dCIsICJlcnJvciIsICJyZXN1bHRzIiwgImRlc2VyaWFsaXplRXJyb3IiLCAic2VyaWFsaXplRXJyb3IiLCAibmFtZSIsICJtZXNzYWdlIiwgImVycm9ycyIsICJhZ2dyZWdhdGVFcnJvciIsICJyZWd1bGFyRXJyb3IiXQp9Cg==
|