@decaf-ts/for-fabric 0.0.27 → 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (135) hide show
  1. package/dist/for-fabric.cjs +1 -1
  2. package/dist/for-fabric.cjs.map +1 -1
  3. package/dist/for-fabric.js +1 -1
  4. package/dist/for-fabric.js.map +1 -1
  5. package/lib/bin/build-contract.cjs +71 -0
  6. package/lib/bin/build-contract.d.ts +1 -0
  7. package/lib/bin/build-contract.js.map +1 -0
  8. package/lib/client/FabricClientAdapter.cjs +10 -3
  9. package/lib/client/FabricClientAdapter.d.ts +5 -3
  10. package/lib/client/FabricClientAdapter.js.map +1 -1
  11. package/lib/client/FabricClientRepository.cjs +15 -0
  12. package/lib/client/FabricClientRepository.d.ts +4 -1
  13. package/lib/client/FabricClientRepository.js.map +1 -1
  14. package/lib/client/services/FabricEnrollmentService.d.ts +1 -1
  15. package/lib/contract/Product.cjs +37 -0
  16. package/lib/contract/Product.d.ts +7 -0
  17. package/lib/contract/Product.js.map +1 -0
  18. package/lib/contract/ProductContract.cjs +34 -0
  19. package/lib/contract/ProductContract.d.ts +5 -0
  20. package/lib/contract/ProductContract.js.map +1 -0
  21. package/lib/contract/User.cjs +37 -0
  22. package/lib/contract/User.d.ts +7 -0
  23. package/lib/contract/User.js.map +1 -0
  24. package/lib/contract/UserContract.cjs +34 -0
  25. package/lib/contract/UserContract.d.ts +5 -0
  26. package/lib/contract/UserContract.js.map +1 -0
  27. package/lib/contract/index.cjs +9 -0
  28. package/lib/contract/index.d.ts +2 -0
  29. package/lib/contract/index.js.map +1 -0
  30. package/lib/contracts/ContractAdapter.cjs +28 -36
  31. package/lib/contracts/ContractAdapter.d.ts +2 -1
  32. package/lib/contracts/ContractAdapter.js.map +1 -1
  33. package/lib/contracts/FabricConstruction.cjs +3 -3
  34. package/lib/contracts/FabricConstruction.js.map +1 -1
  35. package/lib/contracts/FabricContractRepository.d.ts +2 -1
  36. package/lib/contracts/FabricContractRepository.js.map +1 -1
  37. package/lib/contracts/FabricContractStatement.cjs +5 -4
  38. package/lib/contracts/FabricContractStatement.js.map +1 -1
  39. package/lib/contracts/crud/crud-contract.cjs +1 -1
  40. package/lib/contracts/crud/crud-contract.d.ts +2 -1
  41. package/lib/contracts/crud/crud-contract.js.map +1 -1
  42. package/lib/contracts/crud/serialized-crud-contract.d.ts +2 -1
  43. package/lib/contracts/crud/serialized-crud-contract.js.map +1 -1
  44. package/lib/contracts/private-data.cjs +13 -14
  45. package/lib/contracts/private-data.js.map +1 -1
  46. package/lib/esm/bin/build-contract.d.ts +1 -0
  47. package/lib/esm/bin/build-contract.js +66 -0
  48. package/lib/esm/bin/build-contract.js.map +1 -0
  49. package/lib/esm/client/FabricClientAdapter.d.ts +5 -3
  50. package/lib/esm/client/FabricClientAdapter.js +13 -6
  51. package/lib/esm/client/FabricClientAdapter.js.map +1 -1
  52. package/lib/esm/client/FabricClientRepository.d.ts +4 -1
  53. package/lib/esm/client/FabricClientRepository.js +15 -0
  54. package/lib/esm/client/FabricClientRepository.js.map +1 -1
  55. package/lib/esm/client/services/FabricEnrollmentService.d.ts +1 -1
  56. package/lib/esm/contract/Product.d.ts +7 -0
  57. package/lib/esm/contract/Product.js +34 -0
  58. package/lib/esm/contract/Product.js.map +1 -0
  59. package/lib/esm/contract/ProductContract.d.ts +5 -0
  60. package/lib/esm/contract/ProductContract.js +31 -0
  61. package/lib/esm/contract/ProductContract.js.map +1 -0
  62. package/lib/esm/contract/User.d.ts +7 -0
  63. package/lib/esm/contract/User.js +34 -0
  64. package/lib/esm/contract/User.js.map +1 -0
  65. package/lib/esm/contract/UserContract.d.ts +5 -0
  66. package/lib/esm/contract/UserContract.js +31 -0
  67. package/lib/esm/contract/UserContract.js.map +1 -0
  68. package/lib/esm/contract/index.d.ts +2 -0
  69. package/lib/esm/contract/index.js +6 -0
  70. package/lib/esm/contract/index.js.map +1 -0
  71. package/lib/esm/contracts/ContractAdapter.d.ts +2 -1
  72. package/lib/esm/contracts/ContractAdapter.js +25 -33
  73. package/lib/esm/contracts/ContractAdapter.js.map +1 -1
  74. package/lib/esm/contracts/FabricConstruction.js +4 -4
  75. package/lib/esm/contracts/FabricConstruction.js.map +1 -1
  76. package/lib/esm/contracts/FabricContractRepository.d.ts +2 -1
  77. package/lib/esm/contracts/FabricContractRepository.js.map +1 -1
  78. package/lib/esm/contracts/FabricContractStatement.js +5 -4
  79. package/lib/esm/contracts/FabricContractStatement.js.map +1 -1
  80. package/lib/esm/contracts/crud/crud-contract.d.ts +2 -1
  81. package/lib/esm/contracts/crud/crud-contract.js +1 -1
  82. package/lib/esm/contracts/crud/crud-contract.js.map +1 -1
  83. package/lib/esm/contracts/crud/serialized-crud-contract.d.ts +2 -1
  84. package/lib/esm/contracts/crud/serialized-crud-contract.js.map +1 -1
  85. package/lib/esm/contracts/private-data.js +14 -15
  86. package/lib/esm/contracts/private-data.js.map +1 -1
  87. package/lib/esm/shared/ClientSerializer.d.ts +3 -3
  88. package/lib/esm/shared/ClientSerializer.js +12 -15
  89. package/lib/esm/shared/ClientSerializer.js.map +1 -1
  90. package/lib/esm/shared/constants.d.ts +1 -0
  91. package/lib/esm/shared/constants.js +1 -0
  92. package/lib/esm/shared/constants.js.map +1 -1
  93. package/lib/esm/shared/crypto.js.map +1 -1
  94. package/lib/esm/shared/decorators.d.ts +3 -2
  95. package/lib/esm/shared/decorators.js +32 -12
  96. package/lib/esm/shared/decorators.js.map +1 -1
  97. package/lib/esm/shared/events.js.map +1 -1
  98. package/lib/esm/shared/overrides/Model.d.ts +0 -0
  99. package/lib/esm/shared/overrides/Model.js +19 -0
  100. package/lib/esm/shared/overrides/Model.js.map +1 -0
  101. package/lib/esm/shared/overrides/index.d.ts +0 -0
  102. package/lib/esm/shared/overrides/index.js +4 -0
  103. package/lib/esm/shared/overrides/index.js.map +1 -0
  104. package/lib/esm/shared/overrides/overrides.d.ts +0 -0
  105. package/lib/esm/shared/overrides/overrides.js +89 -0
  106. package/lib/esm/shared/overrides/overrides.js.map +1 -0
  107. package/lib/esm/shared/types.d.ts +7 -0
  108. package/lib/esm/shared/utils.js.map +1 -1
  109. package/lib/esm/version.d.ts +1 -1
  110. package/lib/esm/version.js +1 -1
  111. package/lib/shared/ClientSerializer.cjs +11 -14
  112. package/lib/shared/ClientSerializer.d.ts +3 -3
  113. package/lib/shared/ClientSerializer.js.map +1 -1
  114. package/lib/shared/constants.cjs +1 -0
  115. package/lib/shared/constants.d.ts +1 -0
  116. package/lib/shared/constants.js.map +1 -1
  117. package/lib/shared/crypto.js.map +1 -1
  118. package/lib/shared/decorators.cjs +33 -13
  119. package/lib/shared/decorators.d.ts +3 -2
  120. package/lib/shared/decorators.js.map +1 -1
  121. package/lib/shared/events.js.map +1 -1
  122. package/lib/shared/overrides/Model.cjs +19 -0
  123. package/lib/shared/overrides/Model.d.ts +0 -0
  124. package/lib/shared/overrides/Model.js.map +1 -0
  125. package/lib/shared/overrides/index.cjs +4 -0
  126. package/lib/shared/overrides/index.d.ts +0 -0
  127. package/lib/shared/overrides/index.js.map +1 -0
  128. package/lib/shared/overrides/overrides.cjs +89 -0
  129. package/lib/shared/overrides/overrides.d.ts +0 -0
  130. package/lib/shared/overrides/overrides.js.map +1 -0
  131. package/lib/shared/types.d.ts +7 -0
  132. package/lib/shared/utils.js.map +1 -1
  133. package/lib/version.cjs +1 -1
  134. package/lib/version.d.ts +1 -1
  135. package/package.json +3 -2
@@ -1,2 +1,2 @@
1
- import{CouchDBKeys as e,CouchDBStatement as t,CouchDBGroupOperator as r,CouchDBOperator as i,CouchDBAdapter as n}from"@decaf-ts/for-couchdb";import{Model as a,ModelKeys as s,propMetadata as o,required as l,model as c,JSONSerializer as p,Decoration as d,prop as u,type as h,list as g}from"@decaf-ts/decorator-validation";import{Context as f,OperationKeys as y,BulkCrudOperationKeys as w,NotFoundError as m,transient as b,getAllPropertyDecoratorsRecursive as v,SerializationError as S,modelToTransient as A,InternalError as k,BaseError as O,enforceDBDecorators as R,ValidationError as N,ConflictError as x,findPrimaryKey as $,onCreate as E,onCreateUpdate as P,DBKeys as z,readonly as T,onUpdate as C,onDelete as F,afterAny as I}from"@decaf-ts/db-decorators";import{Property as j,Object as D,Contract as B,Transaction as J,Context as q}from"fabric-contract-api";import{Logging as M,MiniLogger as L,NumericLogLevels as _,LogLevel as W}from"@decaf-ts/logging";import{ObserverHandler as V,AuthorizationError as U,Repository as H,pk as K,index as Q,table as Y,BaseModel as G,Sequence as X,Condition as Z,repositoryFromTypeMetadata as ee,cacheModelForPopulate as te,Cascade as re,createOrUpdate as ie,getPopulateKey as ne,UnsupportedError as ae,PersistenceKeys as se,OrderDirection as oe,NumericSequence as le,Adapter as ce,sequenceNameForModel as pe,oneToManyOnUpdate as de,column as ue}from"@decaf-ts/core";import{apply as he}from"@decaf-ts/reflection";import{__decorate as ge,__metadata as fe}from"tslib";import{Metadata as ye}from"@decaf-ts/decoration";class we extends f{constructor(){super()}get stub(){return this.get("stub")}get timestamp(){return this.stub.getDateTimestamp()}get identity(){return this.get("clientIdentity")}get logger(){return this.get("logger")}}class me extends V{constructor(e=[y.CREATE,y.UPDATE,y.DELETE,w.CREATE_ALL,w.UPDATE_ALL,w.DELETE_ALL]){super(),this.supportedEvents=e}async updateObservers(e,t,r,i,n,a,s){const{stub:o}=n;if(-1!==this.supportedEvents.indexOf(r)){e.debug(`Emitting ${r} event`);const n=((e,t,r)=>{const i=[e,t];return r&&i.push(r),i.join("_")})(t,r,a);o.setEvent(n,Buffer.from(JSON.stringify({id:i})))}else o.setEvent(r,Buffer.from(JSON.stringify(s)))}}var be,ve;(e=>{e.PRIVATE="private",e.FABRIC="fabric.",e.OWNEDBY="owned-by"})(be||(be={})),(e=>{e.X509="X.509"})(ve||(ve={}));const Se="hlf-fabric";function Ae(){return function(e,t,r){const i=r.value;return r.value=async function(...e){const r=e[0],n=r.clientIdentity.getID(),a=await this.tokenRepository.selectWithContext(void 0,r),s=await a.execute();if(0==s.length)throw new m("No tokens avaialble");if(s.length>1)throw new m("To many token available : "+s.length);if(s[0].owner!=n)throw new U(`User not authorized to run ${t} on the token`);return await i.apply(this,e)},r}}function ke(e){return a.key(be.FABRIC+e)}function Oe(e){if(!e)throw Error("Collection name is required");const t=ke(be.PRIVATE);return(r,i)=>{const n=i||void 0,a=Reflect.getMetadata(t,r[s.ANCHOR]||r,n),l=a?.collections||[];o(ke(be.PRIVATE),{...!i&&{collections:l?[...new Set([...l,e])]:[e]},isPrivate:!i})(i?r.constructor:r[s.ANCHOR]||r),i&&(o(ke(be.PRIVATE),{collections:l?[...new Set([...l,e])]:[e]})(r,i),b()(r,i))}}const Re=/private\s+data\s+matching\s+public\s+hash\s+version\s+is\s+not\s+available/i;function Ne(e){let t=Reflect.getMetadata(ke(be.PRIVATE),e);return t=t||Reflect.getMetadata(ke(be.PRIVATE),e.constructor),t}function xe(e){const t=Ne(e);return!(!t||void 0===t.isPrivate)&&t.isPrivate}function $e(e){if(!(e=>!!Ne(e))(e))return{model:e};const t=v(e,void 0,ke(be.PRIVATE)),r=xe(e),i=Ne(e);let n={model:e,private:void 0};if(n=r?Object.keys(e).reduce((t,r)=>{const n=i.collections;t.private=t.private||{};for(const i of n)try{t.private[i]=t.private[i]||{},t.private[i][r]=e[r]}catch(e){throw new S(`Failed to serialize private property ${r}: ${e}`)}return t},{model:{}}):Object.entries(t).reduce((t,[r,i])=>{const n=i.find(e=>""===e.key);if(n){const i=n.props.collections;t.private=t.private||{};for(const n of i)try{t.private[n]=t.private[n]||{},t.private[n][r]=e[r]}catch(e){throw new S(`Failed to serialize private property ${r}: ${e}`)}}else t.model=t.model||{},t.model[r]=e[r];return t},{}),n.model=n.model||{},n.model=a.build(n.model,e.constructor.name),n.private){const t=Object.keys(n.private);for(const r of t)n.private[r]=a.build(n.private[r],e.constructor.name)}return n}class Ee extends k{constructor(e){super(e,Ee.name)}}class Pe extends k{constructor(e){super(e,Pe.name)}}class ze extends k{constructor(e){super(e,ze.name)}}class Te extends k{constructor(e){super(e,Te.name,500)}}class Ce extends O{constructor(e="private data matching public hash version is not available ..."){super(Ce.name,e,403)}}class Fe extends O{constructor(e){super(Fe.name,e,409)}}let Ie=class extends G{constructor(e){super(e)}};ge([K(),fe("design:type",String)],Ie.prototype,"id",void 0),ge([l(),Q(),fe("design:type",Object)],Ie.prototype,"current",void 0),Ie=ge([Y(e.SEQUENCE),c(),fe("design:paramtypes",[Object])],Ie);class je extends X{constructor(e,t,r){super(e);for(const e of r||[])Oe(e)(Ie);this.repo=H.forModel(Ie,t.alias)}async current(e){if(!e)throw new Te("Context is required");const{name:t,startWith:r}=this.options;try{const r=await this.repo.read(t,e);return this.parse(r.current)}catch(e){if(e instanceof m){if(void 0===r)throw new k("Starting value is not defined for a non existing sequence");try{return this.parse(r)}catch(e){throw new k(`Failed to parse initial value for sequence ${r}: ${e}`)}}throw new k(`Failed to retrieve current value for sequence ${t}: ${e}`)}}parse(e){return X.parseValue(this.options.type,e)}async increment(e,t,r){if(!r)throw new Te("Context is required");const{type:i,incrementBy:n,name:a}=this.options;let s;const o=t||n;if(o%n!==0)throw new k("Value to increment does not consider the incrementBy setting: "+n);switch(i){case"Number":s=this.parse(e)+o;break;case"BigInt":s=this.parse(e)+BigInt(o);break;default:throw new k("Should never happen")}let l;try{l=await this.repo.update(new Ie({id:a,current:s}),r)}catch(e){if(!(e instanceof m))throw e;l=await this.repo.create(new Ie({id:a,current:s}),r)}return l.current}async next(e){if(!e)throw new Te("Context is required");const t=await this.current(e);return this.increment(t,void 0,e)}async range(e,t){if(!t)throw new Te("Context is required");const r=await this.current(t),i=this.parse(this.options.incrementBy),n=await this.increment(r,this.parse(e)*i,t),a=[];for(let t=1;e>=t;t++)a.push(r+i*this.parse(t));if(a[a.length-1]!==n)throw new k("Miscalculation of range");return a}}class De extends H{constructor(e,t,r){super(e,t),this.trackedEvents=r}logFor(e){return M.for(De,{},e)}async create(e,...t){const r=t[t.length-1],i=this.logFor(r).for(this.create);i.info("Preparing model: "+JSON.stringify(e));let n,{record:a,id:s,transient:o}=this.adapter.prepare(e,this.pk,this.tableName,...t);return i.info("Creating model: "+JSON.stringify(e)),a=await this.adapter.create(this.tableName,s,a,...t),t.length&&(n=t[t.length-1]),i.info("Reverting model: "+JSON.stringify(e)),this.adapter.revert(a,this.class,this.pk,s,n&&n.get("rebuildWithTransient")?o:void 0)}async read(e,...t){const r=await this.adapter.read(this.tableName,e,new this.class,...t);return this.adapter.revert(r,this.class,this.pk,e)}async delete(e,...t){const r=await this.adapter.delete(this.tableName,e,new this.class,...t);return this.adapter.revert(r,this.class,this.pk,e)}async update(e,...t){const r=t[t.length-1],i=this.logFor(r).for(this.update);i.info("Preparing model: "+JSON.stringify(e));let n,{record:a,id:s,transient:o}=this.adapter.prepare(e,this.pk,this.tableName,...t);return i.info("Updating model: "+JSON.stringify(e)),a=await this.adapter.update(this.tableName,s,a,...t),t.length&&(n=t[t.length-1]),i.info("Reverting model: "+JSON.stringify(e)),this.adapter.revert(a,this.class,this.pk,s,n&&n.get("rebuildWithTransient")?o:void 0)}ObserverHandler(){return new me}async createAll(e,...t){if(!e.length)return e;const r=e.map(e=>this.adapter.prepare(e,this.pk,this.tableName,...t)),i=r.map(e=>e.id);let n=r.map(e=>e.record);const a=r.map(e=>e.transient).filter(e=>!!e);let s;return t.length&&(s=t[t.length-1]),n=await this.adapter.createAll(this.tableName,i,n,...t),n.map((e,t)=>this.adapter.revert(e,this.class,this.pk,i[t],s&&s.get("rebuildWithTransient")?a:void 0))}async updateAll(e,...t){if(!e.length)return e;const r=e.map(e=>this.adapter.prepare(e,this.pk,this.tableName,...t)),i=r.map(e=>e.transient).filter(e=>!!e);let n;return t.length&&(n=t[t.length-1]),(await this.adapter.updateAll(this.tableName,r.map(e=>e.id),r.map(e=>e.record),...t)).map((e,t)=>this.adapter.revert(e,this.class,this.pk,r[t].id,n&&n.get("rebuildWithTransient")?i:void 0))}async raw(e,t,...r){const i=r.pop(),n=await f.args("QUERY",this.class,[i],this.adapter,{});return this.adapter.raw(e,t,new this.class,...n.args)}async updateObservers(e,t,r,i,...n){if(!this.trackedEvents||-1!==this.trackedEvents.indexOf(t))return await super.updateObservers(e,t,r,i,...n)}async selectWithContext(e,t){let r;return t instanceof we?r.context=t:r=await f.args(y.CREATE,this.class,[t],this.adapter,this._overrides||{}),e?this.adapter.Statement(r.context).select(e).from(this.class):this.adapter.Statement(r.context).select().from(this.class)}async createAllPrefix(e,...t){const r=t[t.length-1],i=await f.args(y.CREATE,this.class,t,this.adapter,this._overrides||{});if(!e.length)return[e,...i.args];const n=H.getSequenceOptions(e[0]);let a=[];n.type?(n.name||(n.name=je.pk(e[0])),a=await(await this.adapter.Sequence(n)).range(e.length,r)):a=e.map((e,t)=>{if(void 0===e[this.pk])throw new k("Primary key is not defined for model in position "+t);return e[this.pk]}),e=await Promise.all(e.map(async(e,t)=>(e=new this.class(e),n.type&&(e[this.pk]=a[t]),await R(this,i.context,e,y.CREATE,y.ON),e)));const s=i.context.get("ignoredValidationProperties")||[],o=(await Promise.all(e.map(e=>Promise.resolve(e.hasErrors(...s))))).reduce((e,t,r)=>(t&&(e="string"==typeof e?e+`\n - ${r}: ${t.toString()}`:` - ${r}: ${t.toString()}`),e),void 0);if(o)throw new N(o);return[e,...i.args]}async createPrefix(e,...t){const r=await super.createPrefix(e,...t),i=r[0][this.pk];try{if(await this.read(i+"",...t))throw new x(`Conflict detected while creating model with id: ${i} already exists`)}catch(e){if(404!==e.code)throw e;this.logFor(t[t.length-1]).info(`Record entry with pk ${i} does not exist, creating it now...`)}return r}}class Be extends t{constructor(e,t){super(e),this.ctx=t}async raw(e){const t=await this.adapter.raw(e,!0,this.ctx),r=$(new this.fromSelector),i=r.id,n=r.props.type;return this.selectSelector?t:t.map(e=>this.processRecord(e,i,n))}build(){const t={};t[e.TABLE]={},t[e.TABLE]=H.table(this.fromSelector);const n={selector:t};if(this.selectSelector&&(n.fields=this.selectSelector),this.whereCondition){const t=this.parseCondition(Z.and(this.whereCondition,Z.attribute(e.TABLE).eq(n.selector[e.TABLE]))).selector,i=Object.keys(t);if(1===i.length&&-1!==Object.values(r).indexOf(i[0]))switch(i[0]){case r.AND:t[r.AND]=[...Object.values(t[r.AND]).reduce((e,t)=>{const i=Object.keys(t);if(1!==i.length)throw Error("Too many keys in query selector. should be one");const n=i[0];return n===r.AND?e.push(...t[n]):e.push(t),e},[])],n.selector=t;break;case r.OR:{const e={};e[r.AND]=[t,...Object.entries(n.selector).map(([e,t])=>{const r={};return r[e]=t,r})],n.selector=e;break}default:throw Error("This should be impossible")}else Object.entries(t).forEach(([e,t])=>{n.selector[e],n.selector[e]=t})}if(this.orderBySelector){n.sort=n.sort||[],n.selector=n.selector||{};const[e,t]=this.orderBySelector,r={};r[e]=t,n.sort.push(r),n.selector[e]||(n.selector[e]={},n.selector[e][i.BIGGER]=null)}return this.limitSelector&&(n.limit=this.limitSelector),this.offsetSelector&&(n.skip=this.offsetSelector),n}}class Je extends p{constructor(){super()}deserialize(e,t){return JSON.parse(e)}serialize(e){return require("json-stringify-deterministic")(require("sort-keys-recursive")(this.preSerialize(e)))}preSerialize(e){return Object.assign({},e)}}async function qe(e,t,r,i){const n=i[r];if(!n)return;if("object"!=typeof n){const t=ee(i,r,this.adapter.alias),a=await t.read(n,e);return await te(e,i,r,n,a),void(i[r]=n)}t.class="string"==typeof t.class?t.class:t.class().name;const s=a.get(t.class);if(!s)throw new k("Could not find model "+t.class);const o=H.forModel(s,this.adapter.alias),l=await o.create(n,e),c=$(l).id;await te(e,i,r,l[c],l),i[r]=l[c]}async function Me(e,t,r,i){const n=i[r];if(!n)return;if(t.cascade.update!==re.CASCADE)return;if("object"!=typeof n){const t=ee(i,r,this.adapter.alias),a=await t.read(n,e);return await te(e,i,r,n,a),void(i[r]=n)}const a=await ie(i[r],e,this.adapter.alias),s=$(a).id;await te(e,i,r,a[s],a),i[r]=a[s]}async function Le(e,t,r,i){const n=i[r];if(!n)return;if(t.cascade.update!==re.CASCADE)return;const s=ee(i,r,this.adapter.alias);let o;o=n instanceof a?await s.delete(i[r][s.pk],e):await s.delete(i[r],e),await te(e,i,r,o[s.pk],o)}async function _e(e,t,r,i){const n=i[r];if(!n||!n.length)return;const a=typeof n[0];if(!n.every(e=>typeof e===a))throw new k(`Invalid operation. All elements of property ${r} must match the same type.`);const s=new Set([...n]);if("object"!==a){const t=ee(i,r,this.adapter.alias);for(const n of s){const a=await t.read(n,e);await te(e,i,r,n,a)}return void(i[r]=[...s])}const o=$(n[0]).id,l=new Set;for(const t of n){const n=await ie(t,e,this.adapter.alias);await te(e,i,r,n[o],n),l.add(n[o])}i[r]=[...l]}async function We(e,t,r,i){if(t.cascade.delete!==re.CASCADE)return;const n=i[r];if(!n||!n.length)return;const a=typeof n[0];if(!n.every(e=>typeof e===a))throw new k(`Invalid operation. All elements of property ${r} must match the same type.`);const s="object"===a,o=s?H.forModel(n[0],this.adapter.alias):ee(i,r,this.adapter.alias),l=new Set([...s?n.map(e=>e[o.pk]):n]);for(const t of l.values()){const n=await o.delete(t,e);await te(e,i,r,t,n)}i[r]=[...l]}async function Ve(e,t,r,i){if(!t.populate)return;const n=i[r],a=Array.isArray(n);if(void 0===n||a&&0===n.length)return;const s=await(async(t,r,i,n,a)=>{let s,o;const l=[];for(const c of n){s=ne(r.constructor.name,i,c);try{o=await t.get(s)}catch(t){const n=ee(r,i,a);if(!n)throw new k("Could not find repo");o=await n.read(c,e)}l.push(o)}return l})(e,i,r,a?n:[n],this.adapter.alias);i[r]=a?s:s[0]}async function Ue(e,t,r,i){try{const t=e.get("clientIdentity");i[r]=t.getID()}catch(e){throw new ae("No User found in context. Please provide a user in the context")}}async function He(e,t,r,i){if(!t.type||i[r])return;let n;t.name||(t.name=pe(i,"pk"));try{n=await this.adapter.Sequence(t)}catch(e){throw new k(`Failed to instantiate Sequence ${t.name}: ${e}`)}const a=await n.next(e);Object.defineProperty(i,r,{enumerable:!0,writable:!1,configurable:!0,value:a})}class Ke extends n{getClient(){throw new ae("Client is not supported in Fabric contracts")}static{this.textDecoder=new TextDecoder("utf8")}static{this.serializer=new Je}logFor(e){return M.for(Ke,{},e)}repository(){return De}constructor(e,t){super(e,Se,t),this.Context=we}for(e,...t){return super.for(e,...t)}async create(e,t,r,...i){const{stub:n,logger:a}=i.pop(),s=a.for(this.create);try{s.info(`adding entry to ${e} table with pk ${t}`),r=await this.putState(n,t.toString(),r)}catch(e){throw this.parseError(e)}return r}async read(e,t,...r){const{stub:i,logger:n}=r.pop(),a=n.for(this.read);let s;try{const r=await this.readState(i,e,t.toString());if(1>r.length)throw a.debug(`No record found for id ${t} in ${e} table`),new m(`No record found for id ${t} in ${e} table`);2>r.length?(a.debug(`No record found for id ${t} in ${e} table`),s=r.pop()):s=this.mergeModels(r)}catch(e){throw this.parseError(e)}return s}async update(e,t,r,...i){const{stub:n,logger:a}=i.pop(),s=a.for(this.update);try{s.info(`updating entry to ${e} table with pk ${t}`),r=await this.putState(n,t.toString(),r)}catch(e){throw this.parseError(e)}return r}async delete(e,t,...r){const i=r.pop(),{stub:n,logger:a}=i,s=a.for(this.delete);let o;r.push(i);try{o=await this.read(e,t,...r),s.verbose(`deleting entry with pk ${t} from ${e} table`),this.deleteState(n,e,t.toString())}catch(e){throw this.parseError(e)}return o}async deleteState(e,t,r,...i){const n=e.createCompositeKey(t,[r+""]);await e.deleteState(n)}async putState(e,t,r,...i){let n;try{n=Buffer.from(Ke.serializer.serialize(r))}catch(e){throw new S(`Failed to serialize record with id ${t}: ${e}`)}return await e.putState(t.toString(),n),r}async readState(e,t,r,...i){const n=e.createCompositeKey(t,[r+""]),a=[];let s=await e.getState(n);if(""===s.toString())throw new m(`Record with id ${r} not found`);try{s=Ke.serializer.deserialize(s.toString())}catch(e){throw new S("Failed to parse record: "+e)}return a.push(s),a}async queryResult(e,t,...r){return await e.getQueryResult(JSON.stringify(t))}async queryResultPaginated(e,t,r=250,i,...n){return await e.getQueryResultWithPagination(JSON.stringify(t),r,i?.toString())}mergeModels(e){const t=e=>Object.entries(e).reduce((e,[t,r])=>(void 0!==r&&(e[t]=r),e),{});let r=e.pop();for(const i of e)r=Object.assign({},t(r),t(i));return r}decode(e){return Ke.textDecoder.decode(e)}async flags(e,t,r,i,...n){return Object.assign(await super.flags(e,t,r,...n),{stub:i.stub,identity:i.clientIdentity??i.identity,logger:i.logger??this.logFor(i)})}index(e){return Promise.resolve(void 0)}async resultIterator(e,t,r=!1){const i=[];let n=await t.next();for(;!n.done;){if(n.value&&n.value.value.toString()){let t={};if(e.debug(n.value.value.toString("utf8")),r){t.TxId=n.value.txId,t.Timestamp=n.value.timestamp;try{t.Value=JSON.parse(n.value.value.toString("utf8"))}catch(r){e.error(r),t.Value=n.value.value.toString("utf8")}}else try{t=JSON.parse(n.value.value.toString("utf8"))}catch(r){e.error(r),t=n.value.value.toString("utf8")}i.push(t)}n=await t.next()}return e.debug(`Closing iterator after ${i.length} results`),t.close(),i}async raw(e,t,...r){const{stub:i,logger:n}=r.pop(),a=n.for(this.raw),{skip:s,limit:o}=e;let l;o||s?(delete e.limit,delete e.skip,a.debug(`Retrieving paginated iterator: limit: ${o}/ skip: ${s}`),l=(await this.queryResultPaginated(i,e,o||250,s?.toString())).iterator):(a.debug("Retrieving iterator"),l=await this.queryResult(i,e)),a.debug("Iterator acquired");const c=await this.resultIterator(a,l);return a.debug("returning {0} results",""+(Array.isArray(c)?c.length:1)),c}Statement(e){if(!e)throw new Te("Context is required");return new Be(this,e)}async Sequence(e){return new je(e,this)}async createAll(e,t,r,...i){if(t.length!==r.length)throw new k("Ids and models must have the same length");const{logger:n}=i[i.length-1],a=n.for(this.createAll);return a.info(`Creating ${t.length} entries ${e} table`),a.debug("pks: "+t),Promise.all(t.map(async(t,n)=>this.create(e,t,r[n],...i)))}async updateAll(e,t,r,...i){if(t.length!==r.length)throw new k("Ids and models must have the same length");const{logger:n}=i[i.length-1],a=n.for(this.createAll);return a.info(`Updating ${t.length} entries ${e} table`),a.debug("pks: "+t),Promise.all(t.map(async(t,n)=>this.update(e,t,r[n],...i)))}prepare(e,t,...r){const{stub:i,logger:n}=r.pop(),a=r.shift(),s=n.for(this.prepare),o=A(e),l=Object.entries(o.model).reduce((t,[r,i])=>{if(void 0===i)return t;const n=H.column(e,r);if(this.isReserved(n))throw new k(`Property name ${n} is reserved`);return t[n]=i,t},{});return e[se.METADATA]&&(s.silly("Passing along persistence metadata for "+e[se.METADATA]),Object.defineProperty(l,se.METADATA,{enumerable:!1,writable:!1,configurable:!0,value:e[se.METADATA]})),s.info(`Preparing record for ${a} table with pk ${e[t]}`),{record:l,id:i.createCompositeKey(a,[e[t]+""]),transient:o.transient}}revert(e,t,r,i,n){const s=this.log.for(this.revert),o={};o[r]=i;const l="string"==typeof t?a.build(o,t):new t(o);s.silly(`Rebuilding model ${l.constructor.name} id ${i}`);const c=e[se.METADATA],p=Object.keys(l).reduce((t,r)=>(t[r]=e[H.column(t,r)],t),l);return n&&(s.verbose("re-adding transient properties: "+Object.keys(n).join(", ")),Object.entries(n).forEach(([e,t])=>{if(e in p&&void 0!==p[e])throw new k(`Transient property ${e} already exists on model ${l.constructor.name}. should be impossible`);p[e]=t})),c&&(s.silly(`Passing along ${this.flavour} persistence metadata for ${l.constructor.name} id ${i}: ${c}`),Object.defineProperty(p,se.METADATA,{enumerable:!1,configurable:!1,writable:!1,value:c})),p}createPrefix(t,r,i,...n){const a=n.pop(),s={};return s[e.TABLE]=t,Object.assign(s,i),[t,r,s,a]}updatePrefix(t,r,i,...n){const a=n.pop(),s={};return s[e.TABLE]=t,Object.assign(s,i),[t,r,s,a]}createAllPrefix(t,r,i,...n){if(r.length!==i.length)throw new k("Ids and models must have the same length");const a=n.pop(),s=r.map((r,n)=>{const a={};return a[e.TABLE]=t,Object.assign(a,i[n]),a});return[t,r,s,a]}updateAllPrefix(t,r,i,...n){if(r.length!==i.length)throw new k("Ids and models must have the same length");const a=n.pop(),s=r.map((r,n)=>{const a={};return a[e.TABLE]=t,Object.assign(a,i[n]),a});return[t,r,s,a]}static decoration(){super.decoration();const e=H.key(se.CREATED_BY),t=H.key(se.UPDATED_BY);d.flavouredAs(Se).for(e).define(E(Ue),o(e,{})).apply(),d.flavouredAs(Se).for(t).define(P(Ue),o(t,{})).apply();const r=H.key(z.ID);d.flavouredAs(Se).for(r).define(Q([oe.ASC,oe.DSC]),l(),T(),o(r,le),E(He,le)).apply();const i=ce.key(se.COLUMN);d.flavouredAs(Se).for(i).extend(j()).apply();const n=ce.key(se.TABLE);d.flavouredAs(Se).for(n).extend(e=>D()(e)).apply();const a=H.key(se.ONE_TO_ONE);d.flavouredAs(Se).for(a).define({decorator:(e,t,r,i,n)=>{const s={class:e.name?e.name:e,cascade:t,populate:r};return i&&(s.joinTable=i),n&&(s.name=n),he(u(se.RELATIONS),h([e.name?e.name:e,String.name,Number.name,BigInt.name]),E(qe,s),C(Me,s),F(Le,s),I(Ve,s),o(a,s))}}).apply();const s=H.key(se.ONE_TO_MANY);d.for(s).define({decorator:(e,t,r,i,n)=>{const a={class:e.name?e.name:e,cascade:t,populate:r};return i&&(a.joinTable=i),n&&(a.name=n),he(u(se.RELATIONS),g([e,String,Number]),E(_e,a),C(de,a),F(We,a),I(Ve,a),o(s,a))}}).apply()}}Ke.decoration(),ce.setCurrent(Se);class Qe extends p{constructor(){super()}deserialize(e){return super.deserialize(e)}serialize(e){return require("json-stringify-deterministic")(require("sort-keys-recursive")(this.preSerialize(e)))}}class Ye extends Ke{constructor(e,t,r){super(e,t),this.collections=r,this.collections=r||[]}async Sequence(e){return new je(e,this,this.collections)}async read(e,t,r,...i){const{stub:n,logger:a}=i.pop(),s=a.for(this.read);let o;try{const i=await this.readState(n,e,t.toString(),r);if(1>i.length)throw s.debug(`No record found for id ${t} in ${e} table`),new m(`No record found for id ${t} in ${e} table`);2>i.length?(s.debug(`No record found for id ${t} in ${e} table`),o=i.pop()):o=this.mergeModels(i)}catch(e){throw this.parseError(e)}return o}async delete(e,t,r,...i){const n=i.pop(),{stub:a,logger:s}=n,o=s.for(this.delete);let l;i.push(n);try{l=await this.read(e,t,r,...i),o.verbose(`deleting entry with pk ${t} from ${e} table`),this.deleteState(a,e,t.toString(),r)}catch(e){throw this.parseError(e)}return l}prepare(e,t,...r){const{stub:i,logger:n}=r.pop(),a=r.shift(),s=n.for(this.prepare),o=((e,t)=>{const r=A(t),i=$e(t),n=t=>Object.entries(t).reduce((r,[i,n])=>{if(void 0===n)return r;const a=H.column(t,i);if(e.isReserved(a))throw new k(`Property name ${a} is reserved`);return r[a]=n,r},{});if(i.private){const e=Object.keys(i.private);for(const t of e)i.private[t]=n(i.private[t])}return{model:r.model,transient:r.transient,privateData:i.private,result:n(r.model)}})(this,e);return s.info(`Preparing record for ${a} table with pk ${e[t]}`),{record:o.privateData,id:i.createCompositeKey(a,[e[t]+""]),transient:o.transient}}createPrefix(t,r,i,...n){const a=n.pop(),s=Object.keys(i);for(const r of s)i[r][e.TABLE]=t;return[t,r,i,a]}updatePrefix(t,r,i,...n){const a=n.pop(),s=Object.keys(i);for(const r of s)i[r][e.TABLE]=t;return[t,r,i,a]}async putState(e,t,r,...i){const n=Object.keys(r);let a,s={};for(const i of n){s=r[i];try{a=Buffer.from(Ke.serializer.serialize(r[i]))}catch(e){throw new S(`Failed to serialize record with id ${t}: ${e}`)}await e.putPrivateData(i,t.toString(),a)}return s}async readState(e,t,r,i,...n){const a=e.createCompositeKey(t,[r+""]),s=$e(i),o=Object.keys(s.private),l=[];for(const t of o)try{let i=await e.getPrivateData(t,a);if(""===i.toString())throw new m(`Entry with id ${r} doesn't exist...`);try{i=Ke.serializer.deserialize(i.toString())}catch(e){throw new S("Failed to parse private data: "+e)}l.push(i)}catch(e){if(Re.test(e.message))throw new Ce(e);throw e}return l}async deleteState(e,t,r,i,...n){const a=e.createCompositeKey(t,[r+""]),s=$e(i),o=Object.keys(s.private);for(const t of o)await e.deletePrivateData(t,a)}async queryResult(e,t,r){const i=$e(r).private,n=Object.keys(i)[0]||"";return(await e.getPrivateDataQueryResult(n,JSON.stringify(t))).iterator}async queryResultPaginated(e,t,r=250,i=void 0,n){const a=$e(n).private,s=Object.keys(a)[0]||"",o=await e.getPrivateDataQueryResult(s,JSON.stringify(t)),l=[];let c=0,p=!i,d=null;for(;;){const e=await o.next();if(e.value&&e.value.value.toString()){const t=e.value.key,n=e.value.value.toString("utf8");if(!p){t===i?.toString()&&(p=!0);continue}if(l.push({Key:t,Record:JSON.parse(n)}),d=t,c++,c>=r)return await o.close(),{iterator:l,metadata:{fetchedRecordsCount:l.length,bookmark:d}}}if(e.done)return await o.close(),{iterator:l,metadata:{fetchedRecordsCount:l.length,bookmark:""}}}}async raw(e,t,...r){const{stub:i,logger:n}=r.pop(),a=n.for(this.raw),{skip:s,limit:o}=e,l=r.shift();let c;o||s?(delete e.limit,delete e.skip,a.debug(`Retrieving paginated iterator: limit: ${o}/ skip: ${s}`),c=(await this.queryResultPaginated(i,e,o||250,s?.toString(),l)).iterator):(a.debug("Retrieving iterator"),c=await this.queryResult(i,e,l)),a.debug("Iterator acquired");const p=await this.resultIterator(a,c);return a.debug("returning {0} results",""+(Array.isArray(p)?p.length:1)),p}}class Ge extends B{static{this.serializer=new Qe}constructor(e,t){super(e),this.clazz=t,this.initialized=!1,Ge.adapter=this.getAdapter(t),this.repo=H.forModel(t,Ge.adapter.alias)}getAdapter(e){const t=new e;if(xe(t)){const e=$e(t),r=Object.keys(e.private);return new Ye(void 0,"fabric-private-data-adapter",r)}return new Ke(void 0,Se)}logFor(e){return M.for(Ge.name,{},e)}async create(e,t,...r){const i=this.logFor(e).for(this.create);"string"==typeof t&&(t=this.deserialize(t)),i.info("Creating model: "+JSON.stringify(t));const n=this.getTransientData(e);return i.info("Merging transient data..."),t=this.repo.merge(t,n),this.repo.create(t,e,...r)}async read(e,t,...r){return this.logFor(e).for(this.read).info(`reading entry with pk ${t} `),this.repo.read(t,e,...r)}getTransientData(e){const t=e.stub.getTransient();let r={};return t.has(this.repo.tableName)&&(r=JSON.parse(t.get(this.repo.tableName)?.toString("utf8"))),r}async update(e,t,...r){const i=this.logFor(e).for(this.update);"string"==typeof t&&(t=this.deserialize(t)),i.info("Updating model: "+JSON.stringify(t));const n=this.getTransientData(e);return i.info("Merging transient data..."),t=this.repo.merge(t,n),this.repo.update(t,e,...r)}async delete(e,t,...r){return this.logFor(e).for(this.delete).info(`deleting entry with pk ${t} `),this.repo.delete(t+"",e,...r)}async deleteAll(e,t,...r){return"string"==typeof t&&(t=JSON.parse(t)),this.repo.deleteAll(t,e,...r)}async readAll(e,t,...r){return"string"==typeof t&&(t=JSON.parse(t)),this.repo.readAll(t,e,...r)}async updateAll(e,t,...r){const i=this.logFor(e).for(this.updateAll);return"string"==typeof t&&(t=JSON.parse(t).map(e=>this.deserialize(e)).map(e=>new this.clazz(e))),i.info(`updating ${t.length} entries to the table`),this.repo.updateAll(t,e,...r)}async raw(e,t,r,...i){return"string"==typeof t&&(t=JSON.parse(t)),this.repo.raw(t,r,e,...i)}serialize(e){return Ge.serializer.serialize(e)}deserialize(e){return Ge.serializer.deserialize(e)}async init(e){const t=this.logFor(e).for(this.init);t.info("Running contract initialization..."),this.initialized=!0,t.info("Contract initialization completed.")}async healthcheck(e){return this.logFor(e).for(this.healthcheck).info(`Running Healthcheck: ${this.initialized}...`),{healthcheck:this.initialized}}async createAll(e,t,...r){const i=this.logFor(e).for(this.createAll);return"string"==typeof t&&(t=JSON.parse(t).map(e=>this.deserialize(e)).map(e=>new this.clazz(e))),i.info(`adding ${t.length} entries to the table`),this.repo.createAll(t,e,...r)}}class Xe extends Ge{constructor(e,t){super(e,t)}logFor(e){return M.for(Xe,{},e)}async create(e,t){const r=this.logFor(e).for(this.create);r.info("Creating model: "+t);const i=this.deserialize(t);return r.info("Model deserialized: "+JSON.stringify(i)),this.serialize(await super.create(e,i))}async read(e,t){return this.logFor(e).for(this.read).info("Reading id: "+t),this.serialize(await super.read(e,t))}async update(e,t){return this.logFor(e).for(this.update).info("Updating model: "+t),this.serialize(await super.update(e,t))}async delete(e,t){return this.logFor(e).for(this.delete).info("Deleting id: "+t),this.serialize(await super.delete(e,t))}async deleteAll(e,t){const r=JSON.parse(t);return this.logFor(e).for(this.deleteAll).info(`deleting ${r.length} entries from the table`),JSON.stringify((await super.deleteAll(e,r)).map(e=>this.serialize(e)))}async readAll(e,t){const r=JSON.parse(t);return this.logFor(e).for(this.readAll).info(`reading ${r.length} entries from the table`),JSON.stringify((await super.readAll(e,r)).map(e=>this.serialize(e)))}async updateAll(e,t){const r=this.logFor(e).for(this.updateAll),i=JSON.parse(t).map(e=>this.deserialize(e)).map(e=>new this.clazz(e));return r.info(`Updating ${i.length} entries to the table`),JSON.stringify((await super.updateAll(e,i)).map(e=>this.serialize(e)))}async raw(e,t,r){const i=JSON.parse(t);return super.raw(e,i,r)}async init(e){await super.init(e)}async healthcheck(e){return JSON.stringify(await super.healthcheck(e))}async createAll(e,t){const r=this.logFor(e).for(this.createAll),i=JSON.parse(t).map(e=>this.deserialize(e)).map(e=>new this.clazz(e));return r.info(`Adding ${i.length} entries to the table`),JSON.stringify((await super.createAll(e,i)).map(e=>this.serialize(e)))}}function Ze(e,t){const r=e+t;if(e!==r-t||t!==r-e)throw new Ee(`Addition overflow: ${e} + ${t}`);return r}function et(e,t){const r=e-t;if(e!==r+t||t!==e-r)throw new Ee(`Subtraction overflow: ${e} - ${t}`);return r}ge([J(),fe("design:type",Function),fe("design:paramtypes",[q,String]),fe("design:returntype",Promise)],Xe.prototype,"create",null),ge([J(!1),fe("design:type",Function),fe("design:paramtypes",[q,String]),fe("design:returntype",Promise)],Xe.prototype,"read",null),ge([J(),fe("design:type",Function),fe("design:paramtypes",[q,String]),fe("design:returntype",Promise)],Xe.prototype,"update",null),ge([J(),fe("design:type",Function),fe("design:paramtypes",[q,String]),fe("design:returntype",Promise)],Xe.prototype,"delete",null),ge([J(),fe("design:type",Function),fe("design:paramtypes",[q,String]),fe("design:returntype",Promise)],Xe.prototype,"deleteAll",null),ge([J(!1),fe("design:type",Function),fe("design:paramtypes",[q,String]),fe("design:returntype",Promise)],Xe.prototype,"readAll",null),ge([J(),fe("design:type",Function),fe("design:paramtypes",[q,String]),fe("design:returntype",Promise)],Xe.prototype,"updateAll",null),ge([J(!1),fe("design:type",Function),fe("design:paramtypes",[q,String,Boolean]),fe("design:returntype",Promise)],Xe.prototype,"raw",null),ge([J(),fe("design:type",Function),fe("design:paramtypes",[q]),fe("design:returntype",Promise)],Xe.prototype,"init",null),ge([J(!1),fe("design:type",Function),fe("design:paramtypes",[q]),fe("design:returntype",Promise)],Xe.prototype,"healthcheck",null),ge([J(),fe("design:type",Function),fe("design:paramtypes",[q,String]),fe("design:returntype",Promise)],Xe.prototype,"createAll",null);let tt=class extends G{constructor(e){super(e)}};ge([K({type:"String"}),fe("design:type",String)],tt.prototype,"name",void 0),ge([ue(),l(),fe("design:type",String)],tt.prototype,"owner",void 0),ge([ue(),l(),fe("design:type",String)],tt.prototype,"symbol",void 0),ge([ue(),l(),fe("design:type",Number)],tt.prototype,"decimals",void 0),tt=ge([Y("erc20_tokens"),c(),fe("design:paramtypes",[Object])],tt);let rt=class extends G{constructor(e){super(e)}};ge([K({type:"String"}),fe("design:type",String)],rt.prototype,"id",void 0),ge([ue(),l(),fe("design:type",String)],rt.prototype,"token",void 0),ge([ue(),l(),fe("design:type",Number)],rt.prototype,"balance",void 0),ge([ue(),fe("design:type",String)],rt.prototype,"captive",void 0),rt=ge([Y("erc20_wallets"),c(),fe("design:paramtypes",[Object])],rt);let it=class extends G{constructor(e){super(e)}};var nt;ge([K({type:"String"}),ue(),l(),fe("design:type",String)],it.prototype,"owner",void 0),ge([ue(),l(),fe("design:type",String)],it.prototype,"spender",void 0),ge([ue(),l(),fe("design:type",Number)],it.prototype,"value",void 0),it=ge([Y("erc20_allowances"),c(),fe("design:paramtypes",[Object])],it),(e=>{e.TRANSFER="Transfer",e.APPROVAL="Approval"})(nt||(nt={}));class at extends Ge{constructor(e){super(e,rt),at.adapter=at.adapter||new Ke,this.walletRepository=De.forModel(rt,at.adapter.alias),this.tokenRepository=De.forModel(tt,at.adapter.alias),this.allowanceRepository=De.forModel(it,at.adapter.alias)}async TokenName(e){await this.CheckInitialized(e);const t=await this.tokenRepository.selectWithContext(void 0,e);return(await t.execute())[0].name}async Symbol(e){await this.CheckInitialized(e);const t=await this.tokenRepository.selectWithContext(void 0,e);return(await t.execute())[0].symbol}async Decimals(e){await this.CheckInitialized(e);const t=await this.tokenRepository.selectWithContext(void 0,e);return(await t.execute())[0].decimals}async TotalSupply(e){await this.CheckInitialized(e);const t=await this.walletRepository.selectWithContext(void 0,e),r=await t.execute();if(0==r.length)throw new m(`The token ${this.getName()} does not exist`);let i=0;return r.forEach(e=>{i+=e.balance}),i}async BalanceOf(e,t){return await this.CheckInitialized(e),(await this.walletRepository.read(t,e)).balance}async Transfer(e,t,r){await this.CheckInitialized(e);const i=e.clientIdentity.getID();if(!await this._transfer(e,i,t,r))throw new k("Failed to transfer");return!0}async TransferFrom(e,t,r,i){await this.CheckInitialized(e);const n=e.clientIdentity.getID(),a=await this._getAllowance(e,t,n);if(!a||0>a.value)throw new ze(`spender ${n} has no allowance from ${t}`);const s=a.value;if(i>s)throw new Pe("The spender does not have enough allowance to spend.");const o=et(s,i),l=Object.assign({},a,{value:o});if(await this.allowanceRepository.update(l,e),!await this._transfer(e,t,r,i))throw new k("Failed to transfer");return!0}async _transfer(e,t,r,i){const n=this.logFor(e).for(this._transfer);if(t===r)throw new U("cannot transfer to and from same client account");if(0>i)throw new Pe("transfer amount cannot be negative");const a=await this.walletRepository.read(t,e),s=a.balance;if(i>s)throw new Pe(`client account ${t} has insufficient funds.`);let o,l=!1;try{o=await this.walletRepository.read(r,e)}catch(t){if(!(t instanceof O))throw new k(t);if(404!==t.code)throw new k(t.message);o=new rt({id:r,balance:0,token:await this.TokenName(e)}),l=!0}const c=o.balance,p=et(s,i),d=Ze(c,i),u=Object.assign({},a,{balance:p});await this.walletRepository.update(u,e);const h=Object.assign({},o,{balance:d});l?await this.walletRepository.create(h,e):await this.walletRepository.update(h,e);const g={from:t,to:r,value:i};return this.repo.ObserverHandler().updateObservers(n,"",nt.TRANSFER,"",e,"",g),!0}async Approve(e,t,r){await this.CheckInitialized(e);const i=this.logFor(e).for(this.Approve),n=e.clientIdentity.getID();let a=await this._getAllowance(e,n,t);if((await this.walletRepository.read(n,e)).balance<r)throw new Pe(`client account ${n} has insufficient funds.`);a?(a.value=r,await this.allowanceRepository.update(a,e)):(a=new it({owner:n,spender:t,value:r}),await this.allowanceRepository.create(a,e));const s={owner:n,spender:t,value:r};return this.repo.ObserverHandler().updateObservers(i,"",nt.APPROVAL,"",e,"",s),!0}async Allowance(e,t,r){await this.CheckInitialized(e);const i=await this._getAllowance(e,t,r);if(!i)throw new ze(`spender ${r} has no allowance from ${t}`);return i.value}async _getAllowance(e,t,r){const i=Z.and(Z.attribute("owner").eq(t),Z.attribute("spender").eq(r)),n=await this.allowanceRepository.selectWithContext(void 0,e),a=await n.where(i).execute();return a?.[0]}async Initialize(e,t){const r=await this.tokenRepository.selectWithContext(void 0,e);if((await r.execute()).length>0)throw new U("contract options are already set, client is not authorized to change them");return t.owner=e.clientIdentity.getID(),await this.tokenRepository.create(t,e),!0}async CheckInitialized(e){const t=await this.tokenRepository.selectWithContext(void 0,e);if(0==(await t.execute()).length)throw new Fe("contract options need to be set before calling any function, call Initialize() to initialize contract")}async Mint(e,t){await this.CheckInitialized(e);const r=this.logFor(e).for(this.Mint),i=e.clientIdentity.getID();if(0>=t)throw new N("mint amount must be a positive integer");let n;try{n=await this.walletRepository.read(i,e);const r=Ze(n.balance,t),a=Object.assign({},n,{balance:r});await this.walletRepository.update(a,e)}catch(r){if(!(r instanceof O))throw new k(r);if(404!==r.code)throw new k(r.message);{const r=new rt({id:i,balance:t,token:await this.TokenName(e)});await this.walletRepository.create(r,e)}}const a={from:"0x0",to:i,value:t};this.repo.ObserverHandler().updateObservers(r,"",nt.TRANSFER,"",e,"",a)}async Burn(e,t){await this.CheckInitialized(e);const r=this.logFor(e).for(this.Burn),i=e.clientIdentity.getID(),n=await this.walletRepository.read(i,e),a=n.balance;if(t>a)throw new Pe("Minter has insufficient funds.");const s=et(a,t),o=Object.assign({},n,{balance:s});await this.walletRepository.update(o,e),r.info(t+" tokens were burned");const l={from:i,to:"0x0",value:t};this.repo.ObserverHandler().updateObservers(r,"",nt.TRANSFER,"",e,"",l)}async BurnFrom(e,t,r){await this.CheckInitialized(e);const i=this.logFor(e).for(this.BurnFrom),n=await this.walletRepository.read(t,e),a=n.balance;if(r>a)throw new Pe(t+" has insufficient funds.");const s=et(a,r),o=Object.assign({},n,{balance:s});await this.walletRepository.update(o,e),i.info(`${r} tokens were berned from ${t}`);const l={from:t,to:"0x0",value:r};this.repo.ObserverHandler().updateObservers(i,"",nt.TRANSFER,"",e,"",l)}async ClientAccountBalance(e){await this.CheckInitialized(e);const t=e.clientIdentity.getID(),r=await this.walletRepository.read(t,e);if(!r)throw new Pe(`The account ${t} does not exist`);return r.balance}async ClientAccountID(e){return await this.CheckInitialized(e),e.clientIdentity.getID()}}ge([J(!1),fe("design:type",Function),fe("design:paramtypes",[q]),fe("design:returntype",Promise)],at.prototype,"TokenName",null),ge([J(!1),fe("design:type",Function),fe("design:paramtypes",[q]),fe("design:returntype",Promise)],at.prototype,"Symbol",null),ge([J(!1),fe("design:type",Function),fe("design:paramtypes",[q]),fe("design:returntype",Promise)],at.prototype,"Decimals",null),ge([J(!1),fe("design:type",Function),fe("design:paramtypes",[q]),fe("design:returntype",Promise)],at.prototype,"TotalSupply",null),ge([J(!1),fe("design:type",Function),fe("design:paramtypes",[q,String]),fe("design:returntype",Promise)],at.prototype,"BalanceOf",null),ge([J(),fe("design:type",Function),fe("design:paramtypes",[q,String,Number]),fe("design:returntype",Promise)],at.prototype,"Transfer",null),ge([J(),fe("design:type",Function),fe("design:paramtypes",[q,String,String,Number]),fe("design:returntype",Promise)],at.prototype,"TransferFrom",null),ge([J(),fe("design:type",Function),fe("design:paramtypes",[q,String,Number]),fe("design:returntype",Promise)],at.prototype,"Approve",null),ge([J(),fe("design:type",Function),fe("design:paramtypes",[q,String,String]),fe("design:returntype",Promise)],at.prototype,"Allowance",null),ge([J(),fe("design:type",Function),fe("design:paramtypes",[q,tt]),fe("design:returntype",Promise)],at.prototype,"Initialize",null),ge([J(!1),fe("design:type",Function),fe("design:paramtypes",[q]),fe("design:returntype",Promise)],at.prototype,"CheckInitialized",null),ge([Ae(),J(),fe("design:type",Function),fe("design:paramtypes",[q,Number]),fe("design:returntype",Promise)],at.prototype,"Mint",null),ge([Ae(),J(),fe("design:type",Function),fe("design:paramtypes",[q,Number]),fe("design:returntype",Promise)],at.prototype,"Burn",null),ge([Ae(),J(),fe("design:type",Function),fe("design:paramtypes",[q,String,Number]),fe("design:returntype",Promise)],at.prototype,"BurnFrom",null),ge([J(),fe("design:type",Function),fe("design:paramtypes",[q]),fe("design:returntype",Promise)],at.prototype,"ClientAccountBalance",null),ge([J(),fe("design:type",Function),fe("design:paramtypes",[q]),fe("design:returntype",Promise)],at.prototype,"ClientAccountID",null);const st=[at];class ot extends L{constructor(e,t,r){if(super(e,t),r){if(r instanceof we)throw new Te("Receiving incorrect context... It should be the contract context!!!");this.logger=r.logging.getLogger(e)}else this.logger=new L(e,t)}log(e,t,r){if(_[this.config("level")]<_[e])return;let i;switch(e){case W.info:i=this.logger.info;break;case W.verbose:i=this.logger.verbose;break;case W.debug:i=this.logger.debug;break;case W.error:i=this.logger.error;break;case W.silly:i=this.logger.silly;break;default:throw Error("Invalid log level")}i.call(this.logger,this.createLog(e,t,r))}}M.setFactory((e,t,r)=>new ot(e,t||{},r));const lt="##VERSION##",ct="##PACKAGE##";ye.registerLibrary(ct,lt);export{ot as ContractLogger,Ke as FabricContractAdapter,we as FabricContractContext,De as FabricContractRepository,me as FabricContractRepositoryObservableHandler,je as FabricContractSequence,Ge as FabricCrudContract,Be as FabricStatement,ct as PACKAGE_NAME,Xe as SerializedCrudContract,lt as VERSION,st as contracts,Ue as createdByOnFabricCreateUpdate,He as pkFabricOnCreate};
1
+ import{CouchDBKeys as e,CouchDBStatement as t,CouchDBGroupOperator as r,CouchDBOperator as i,CouchDBAdapter as n}from"@decaf-ts/for-couchdb";import{Model as s,required as a,model as o,JSONSerializer as l,type as c,list as p}from"@decaf-ts/decorator-validation";import{Context as d,OperationKeys as u,BulkCrudOperationKeys as h,SerializationError as g,InternalError as f,BaseError as y,NotFoundError as w,transient as m,enforceDBDecorators as b,ValidationError as v,ConflictError as S,DBKeys as A,onCreate as k,onCreateUpdate as O,readonly as N,onUpdate as x,onDelete as E,afterAny as $}from"@decaf-ts/db-decorators";import{Property as R,Object as T,Contract as z,Transaction as P,Context as F}from"fabric-contract-api";import{Logging as C,MiniLogger as I,NumericLogLevels as D,LogLevel as j}from"@decaf-ts/logging";import{ObserverHandler as B,Repository as J,pk as _,index as q,table as M,BaseModel as L,AuthorizationError as W,Sequence as U,Condition as V,repositoryFromTypeMetadata as Y,cacheModelForPopulate as H,Cascade as K,createOrUpdate as Q,getPopulateKey as G,UnsupportedError as X,PersistenceKeys as Z,Adapter as ee,sequenceNameForModel as te,relation as re,oneToManyOnUpdate as ie,column as ne}from"@decaf-ts/core";import{Metadata as se,propMetadata as ae,Decoration as oe,apply as le,prop as ce}from"@decaf-ts/decoration";import{__decorate as pe,__metadata as de}from"tslib";class ue extends d{constructor(){super()}get stub(){return this.get("stub")}get timestamp(){return this.stub.getDateTimestamp()}get identity(){return this.get("clientIdentity")}get logger(){return this.get("logger")}}class he extends B{constructor(e=[u.CREATE,u.UPDATE,u.DELETE,h.CREATE_ALL,h.UPDATE_ALL,h.DELETE_ALL]){super(),this.supportedEvents=e}async updateObservers(e,t,r,i,n,s,a){const{stub:o}=n;if(-1!==this.supportedEvents.indexOf(r)){e.debug(`Emitting ${r} event`);const n=((e,t,r)=>{const i=[e,t];return r&&i.push(r),i.join("_")})(t,r,s);o.setEvent(n,Buffer.from(JSON.stringify({id:i})))}else o.setEvent(r,Buffer.from(JSON.stringify(a)))}}var ge,fe;(e=>{e.PRIVATE="private",e.SHARED="shared",e.FABRIC="fabric.",e.OWNEDBY="owned-by"})(ge||(ge={})),(e=>{e.X509="X.509"})(fe||(fe={}));const ye="hlf-fabric",we=/private\s+data\s+matching\s+public\s+hash\s+version\s+is\s+not\s+available/i;function me(e){return se.get(e.constructor,ge.PRIVATE)}function be(e){const t=me(e);return!(!t||void 0===t.isPrivate)&&t.isPrivate}function ve(e){if(!(e=>!!me(e))(e))return{model:e};const t=be(e),r=me(e);let i={model:e,private:void 0};if(t){const t=r.collections;i=(se.properties(e.constructor)||[]).reduce((t,i)=>{const n=r.collections;t.private=t.private||{};for(const r of n)try{t.private[r]=t.private[r]||{},t.private[r][i]=e[i]}catch(e){throw new g(`Failed to serialize private property ${i}: ${e}`)}return t},{model:{},private:t})}else i=Object.entries(r).reduce((t,[r,i])=>{const n=se.properties(e.constructor);if(!n?.includes(r))return t;const s=i.collections;if(s?.length){t.private=t.private||{};for(const i of s)try{t.private[i]=t.private[i]||{},t.private[i][r]=e[r]}catch(e){throw new g(`Failed to serialize private property ${r}: ${e}`)}}else t.model=t.model||{},t.model[r]=e[r];return t},{});if(i.model=i.model||{},i.model=s.build(i.model,e.constructor.name),i.private){const t=Object.keys(i.private);for(const r of t)i.private[r]=s.build(i.private[r],e.constructor.name)}return i}class Se extends f{constructor(e){super(e,Se.name)}}class Ae extends f{constructor(e){super(e,Ae.name)}}class ke extends f{constructor(e){super(e,ke.name)}}class Oe extends f{constructor(e){super(e,Oe.name,500)}}class Ne extends y{constructor(e="private data matching public hash version is not available ..."){super(Ne.name,e,403)}}class xe extends y{constructor(e){super(xe.name,e,409)}}let Ee=class extends L{constructor(e){super(e)}};function $e(){return function(e,t,r){const i=r.value;return r.value=async function(...e){const r=e[0],n=r.clientIdentity.getID(),s=await this.tokenRepository.selectWithContext(void 0,r),a=await s.execute();if(0==a.length)throw new w("No tokens avaialble");if(a.length>1)throw new w("To many token available : "+a.length);if(a[0].owner!=n)throw new W(`User not authorized to run ${t} on the token`);return await i.apply(this,e)},r}}function Re(e){if(!e)throw Error("Collection name is required");const t=ge.PRIVATE;return(r,i)=>{const n=r instanceof s?r.constructor:r,a=se.get(n),o=a?.private?.collections||[];if(ae(t,{...!i&&{collections:o?[...new Set([...o,e])]:[e]},isPrivate:!i})(i?n:r),i){const n=a?.private?.[i]?.collections||[];ae(se.key(t,i),{collections:n?[...new Set([...n,e])]:[e]})(r,i),m()(r,i)}}}pe([_(),de("design:type",String)],Ee.prototype,"id",void 0),pe([a(),q(),de("design:type",Object)],Ee.prototype,"current",void 0),Ee=pe([M(e.SEQUENCE),o(),de("design:paramtypes",[Object])],Ee);class Te extends U{constructor(e,t,r){super(e);for(const e of r||[])Re(e)(Ee);this.repo=J.forModel(Ee,t.alias)}async current(e){if(!e)throw new Oe("Context is required");const{name:t,startWith:r}=this.options;try{const r=await this.repo.read(t,e);return this.parse(r.current)}catch(e){if(e instanceof w){if(void 0===r)throw new f("Starting value is not defined for a non existing sequence");try{return this.parse(r)}catch(e){throw new f(`Failed to parse initial value for sequence ${r}: ${e}`)}}throw new f(`Failed to retrieve current value for sequence ${t}: ${e}`)}}parse(e){return U.parseValue(this.options.type,e)}async increment(e,t,r){if(!r)throw new Oe("Context is required");const{type:i,incrementBy:n,name:s}=this.options;let a;const o=t||n;if(o%n!==0)throw new f("Value to increment does not consider the incrementBy setting: "+n);switch(i){case"Number":a=this.parse(e)+o;break;case"BigInt":a=this.parse(e)+BigInt(o);break;default:throw new f("Should never happen")}let l;try{l=await this.repo.update(new Ee({id:s,current:a}),r)}catch(e){if(!(e instanceof w))throw e;l=await this.repo.create(new Ee({id:s,current:a}),r)}return l.current}async next(e){if(!e)throw new Oe("Context is required");const t=await this.current(e);return this.increment(t,void 0,e)}async range(e,t){if(!t)throw new Oe("Context is required");const r=await this.current(t),i=this.parse(this.options.incrementBy),n=await this.increment(r,this.parse(e)*i,t),s=[];for(let t=1;e>=t;t++)s.push(r+i*this.parse(t));if(s[s.length-1]!==n)throw new f("Miscalculation of range");return s}}class ze extends J{constructor(e,t,r){super(e,t),this.trackedEvents=r}logFor(e){return C.for(ze,{},e)}async create(e,...t){const r=t[t.length-1],i=this.logFor(r).for(this.create);i.info("Preparing model: "+JSON.stringify(e));let n,{record:s,id:a,transient:o}=this.adapter.prepare(e,this.pk,this.tableName,...t);return i.info("Creating model: "+JSON.stringify(e)),s=await this.adapter.create(this.tableName,a,s,...t),t.length&&(n=t[t.length-1]),i.info("Reverting model: "+JSON.stringify(e)),this.adapter.revert(s,this.class,this.pk,a,n&&n.get("rebuildWithTransient")?o:void 0)}async read(e,...t){const r=await this.adapter.read(this.tableName,e,new this.class,...t);return this.adapter.revert(r,this.class,this.pk,e)}async delete(e,...t){const r=await this.adapter.delete(this.tableName,e,new this.class,...t);return this.adapter.revert(r,this.class,this.pk,e)}async update(e,...t){const r=t[t.length-1],i=this.logFor(r).for(this.update);i.info("Preparing model: "+JSON.stringify(e));let n,{record:s,id:a,transient:o}=this.adapter.prepare(e,this.pk,this.tableName,...t);return i.info("Updating model: "+JSON.stringify(e)),s=await this.adapter.update(this.tableName,a,s,...t),t.length&&(n=t[t.length-1]),i.info("Reverting model: "+JSON.stringify(e)),this.adapter.revert(s,this.class,this.pk,a,n&&n.get("rebuildWithTransient")?o:void 0)}ObserverHandler(){return new he}async createAll(e,...t){if(!e.length)return e;const r=e.map(e=>this.adapter.prepare(e,this.pk,this.tableName,...t)),i=r.map(e=>e.id);let n=r.map(e=>e.record);const s=r.map(e=>e.transient).filter(e=>!!e);let a;return t.length&&(a=t[t.length-1]),n=await this.adapter.createAll(this.tableName,i,n,...t),n.map((e,t)=>this.adapter.revert(e,this.class,this.pk,i[t],a&&a.get("rebuildWithTransient")?s:void 0))}async updateAll(e,...t){if(!e.length)return e;const r=e.map(e=>this.adapter.prepare(e,this.pk,this.tableName,...t)),i=r.map(e=>e.transient).filter(e=>!!e);let n;return t.length&&(n=t[t.length-1]),(await this.adapter.updateAll(this.tableName,r.map(e=>e.id),r.map(e=>e.record),...t)).map((e,t)=>this.adapter.revert(e,this.class,this.pk,r[t].id,n&&n.get("rebuildWithTransient")?i:void 0))}async raw(e,t,...r){const i=r.pop(),n=await d.args("QUERY",this.class,[i],this.adapter,{});return this.adapter.raw(e,t,new this.class,...n.args)}async updateObservers(e,t,r,i,...n){if(!this.trackedEvents||-1!==this.trackedEvents.indexOf(t))return await super.updateObservers(e,t,r,i,...n)}async selectWithContext(e,t){let r;return t instanceof ue?r.context=t:r=await d.args(u.CREATE,this.class,[t],this.adapter,this._overrides||{}),e?this.adapter.Statement(r.context).select(e).from(this.class):this.adapter.Statement(r.context).select().from(this.class)}async createAllPrefix(e,...t){const r=t[t.length-1],i=await d.args(u.CREATE,this.class,t,this.adapter,this._overrides||{});if(!e.length)return[e,...i.args];const n=J.getSequenceOptions(e[0]);let s=[];n.type?(n.name||(n.name=Te.pk(e[0])),s=await(await this.adapter.Sequence(n)).range(e.length,r)):s=e.map((e,t)=>{if(void 0===e[this.pk])throw new f("Primary key is not defined for model in position "+t);return e[this.pk]}),e=await Promise.all(e.map(async(e,t)=>(e=new this.class(e),n.type&&(e[this.pk]=s[t]),await b(this,i.context,e,u.CREATE,u.ON),e)));const a=i.context.get("ignoredValidationProperties")||[],o=(await Promise.all(e.map(e=>Promise.resolve(e.hasErrors(...a))))).reduce((e,t,r)=>(t&&(e="string"==typeof e?e+`\n - ${r}: ${t.toString()}`:` - ${r}: ${t.toString()}`),e),void 0);if(o)throw new v(o);return[e,...i.args]}async createPrefix(e,...t){const r=await super.createPrefix(e,...t),i=r[0][this.pk];try{if(await this.read(i+"",...t))throw new S(`Conflict detected while creating model with id: ${i} already exists`)}catch(e){if(404!==e.code)throw e;this.logFor(t[t.length-1]).info(`Record entry with pk ${i} does not exist, creating it now...`)}return r}}class Pe extends t{constructor(e,t){super(e),this.ctx=t}async raw(e){const t=await this.adapter.raw(e,!0,this.ctx),r=s.pk(this.fromSelector),i=se.get(this.fromSelector,se.key(A.ID,r))?.type;return this.selectSelector?t:t.map(e=>this.processRecord(e,r,i))}build(){const t={};t[e.TABLE]={},t[e.TABLE]=J.table(this.fromSelector);const n={selector:t};if(this.selectSelector&&(n.fields=this.selectSelector),this.whereCondition){const t=this.parseCondition(V.and(this.whereCondition,V.attribute(e.TABLE).eq(n.selector[e.TABLE]))).selector,i=Object.keys(t);if(1===i.length&&-1!==Object.values(r).indexOf(i[0]))switch(i[0]){case r.AND:t[r.AND]=[...Object.values(t[r.AND]).reduce((e,t)=>{const i=Object.keys(t);if(1!==i.length)throw Error("Too many keys in query selector. should be one");const n=i[0];return n===r.AND?e.push(...t[n]):e.push(t),e},[])],n.selector=t;break;case r.OR:{const e={};e[r.AND]=[t,...Object.entries(n.selector).map(([e,t])=>{const r={};return r[e]=t,r})],n.selector=e;break}default:throw Error("This should be impossible")}else Object.entries(t).forEach(([e,t])=>{n.selector[e],n.selector[e]=t})}if(this.orderBySelector){n.sort=n.sort||[],n.selector=n.selector||{};const[e,t]=this.orderBySelector,r={};r[e]=t,n.sort.push(r),n.selector[e]||(n.selector[e]={},n.selector[e][i.BIGGER]=null)}return this.limitSelector&&(n.limit=this.limitSelector),this.offsetSelector&&(n.skip=this.offsetSelector),n}}class Fe extends l{constructor(){super()}deserialize(e,t){return JSON.parse(e)}serialize(e){return require("json-stringify-deterministic")(require("sort-keys-recursive")(this.preSerialize(e)))}preSerialize(e){return Object.assign({},e)}}async function Ce(e,t,r,i){const n=i[r];if(!n)return;if("object"!=typeof n){const t=Y(i,r,this.adapter.alias),s=await t.read(n,e);return await H(e,i,r,n,s),void(i[r]=n)}t.class="string"==typeof t.class?t.class:t.class().name;const a=s.get(t.class);if(!a)throw new f("Could not find model "+t.class);const o=J.forModel(a,this.adapter.alias),l=await o.create(n,e),c=s.pk(l);await H(e,i,r,l[c],l),i[r]=l[c]}async function Ie(e,t,r,i){const n=i[r];if(!n)return;if(t.cascade.update!==K.CASCADE)return;if("object"!=typeof n){const t=Y(i,r,this.adapter.alias),s=await t.read(n,e);return await H(e,i,r,n,s),void(i[r]=n)}const a=await Q(i[r],e,this.adapter.alias),o=s.pk(a);await H(e,i,r,a[o],a),i[r]=a[o]}async function De(e,t,r,i){const n=i[r];if(!n)return;if(t.cascade.update!==K.CASCADE)return;const a=Y(i,r,this.adapter.alias);let o;o=n instanceof s?await a.delete(i[r][a.pk],e):await a.delete(i[r],e),await H(e,i,r,o[a.pk],o)}async function je(e,t,r,i){const n=i[r];if(!n||!n.length)return;const a=typeof n[0];if(!n.every(e=>typeof e===a))throw new f(`Invalid operation. All elements of property ${r} must match the same type.`);const o=new Set([...n]);if("object"!==a){const t=Y(i,r,this.adapter.alias);for(const n of o){const s=await t.read(n,e);await H(e,i,r,n,s)}return void(i[r]=[...o])}const l=s.pk(n[0]),c=new Set;for(const t of n){const n=await Q(t,e,this.adapter.alias);await H(e,i,r,n[l],n),c.add(n[l])}i[r]=[...c]}async function Be(e,t,r,i){if(t.cascade.delete!==K.CASCADE)return;const n=i[r];if(!n||!n.length)return;const s=typeof n[0];if(!n.every(e=>typeof e===s))throw new f(`Invalid operation. All elements of property ${r} must match the same type.`);const a="object"===s,o=a?J.forModel(n[0],this.adapter.alias):Y(i,r,this.adapter.alias),l=new Set([...a?n.map(e=>e[o.pk]):n]);for(const t of l.values()){const n=await o.delete(t,e);await H(e,i,r,t,n)}i[r]=[...l]}async function Je(e,t,r,i){if(!t.populate)return;const n=i[r],s=Array.isArray(n);if(void 0===n||s&&0===n.length)return;const a=await(async(t,r,i,n,s)=>{let a,o;const l=[];for(const c of n){a=G(r.constructor.name,i,c);try{o=await t.get(a)}catch(t){const n=Y(r,i,s);if(!n)throw new f("Could not find repo");o=await n.read(c,e)}l.push(o)}return l})(e,i,r,s?n:[n],this.adapter.alias);i[r]=s?a:a[0]}async function _e(e,t,r,i){try{const t=e.get("clientIdentity");i[r]=t.getID()}catch(e){throw new X("No User found in context. Please provide a user in the context")}}async function qe(e,t,r,i){if(!t.type||i[r])return;let n;t.name||(t.name=te(i,"pk"));try{n=await this.adapter.Sequence(t)}catch(e){throw new f(`Failed to instantiate Sequence ${t.name}: ${e}`)}const s=await n.next(e);Object.defineProperty(i,r,{enumerable:!0,writable:!1,configurable:!0,value:s})}class Me extends n{getClient(){throw new X("Client is not supported in Fabric contracts")}static{this.textDecoder=new TextDecoder("utf8")}static{this.serializer=new Fe}logFor(e){return C.for(Me,{},e)}repository(){return ze}constructor(e,t){super(e,ye,t),this.Context=ue}for(e,...t){return super.for(e,...t)}async create(e,t,r,...i){const{stub:n,logger:s}=i.pop(),a=s.for(this.create);try{a.info(`adding entry to ${e} table with pk ${t}`),r=await this.putState(n,t.toString(),r)}catch(e){throw this.parseError(e)}return r}async read(e,t,...r){const{stub:i,logger:n}=r.pop(),s=n.for(this.read);let a;try{const r=await this.readState(i,e,t.toString());if(1>r.length)throw s.debug(`No record found for id ${t} in ${e} table`),new w(`No record found for id ${t} in ${e} table`);2>r.length?(s.debug(`No record found for id ${t} in ${e} table`),a=r.pop()):a=this.mergeModels(r)}catch(e){throw this.parseError(e)}return a}async update(e,t,r,...i){const{stub:n,logger:s}=i.pop(),a=s.for(this.update);try{a.info(`updating entry to ${e} table with pk ${t}`),r=await this.putState(n,t.toString(),r)}catch(e){throw this.parseError(e)}return r}async delete(e,t,...r){const i=r.pop(),{stub:n,logger:s}=i,a=s.for(this.delete);let o;r.push(i);try{o=await this.read(e,t,...r),a.verbose(`deleting entry with pk ${t} from ${e} table`),this.deleteState(n,e,t.toString())}catch(e){throw this.parseError(e)}return o}async deleteState(e,t,r,...i){const n=e.createCompositeKey(t,[r+""]);await e.deleteState(n)}async putState(e,t,r,...i){let n;try{n=Buffer.from(Me.serializer.serialize(r))}catch(e){throw new g(`Failed to serialize record with id ${t}: ${e}`)}return await e.putState(t.toString(),n),r}async readState(e,t,r,...i){const n=e.createCompositeKey(t,[r+""]),s=[];let a=await e.getState(n);if(""===a.toString())throw new w(`Record with id ${r} not found`);try{a=Me.serializer.deserialize(a.toString())}catch(e){throw new g("Failed to parse record: "+e)}return s.push(a),s}async queryResult(e,t,...r){return await e.getQueryResult(JSON.stringify(t))}async queryResultPaginated(e,t,r=250,i,...n){return await e.getQueryResultWithPagination(JSON.stringify(t),r,i?.toString())}mergeModels(e){const t=e=>Object.entries(e).reduce((e,[t,r])=>(void 0!==r&&(e[t]=r),e),{});let r=e.pop();for(const i of e)r=Object.assign({},t(r),t(i));return r}decode(e){return Me.textDecoder.decode(e)}async flags(e,t,r,i,...n){return Object.assign(await super.flags(e,t,r,...n),{stub:i.stub,identity:i.clientIdentity??i.identity,logger:i.logger??this.logFor(i)})}index(e){return Promise.resolve(void 0)}async resultIterator(e,t,r=!1){const i=[];let n=await t.next();for(;!n.done;){if(n.value&&n.value.value.toString()){let t={};if(e.debug(n.value.value.toString("utf8")),r){t.TxId=n.value.txId,t.Timestamp=n.value.timestamp;try{t.Value=JSON.parse(n.value.value.toString("utf8"))}catch(r){e.error(r),t.Value=n.value.value.toString("utf8")}}else try{t=JSON.parse(n.value.value.toString("utf8"))}catch(r){e.error(r),t=n.value.value.toString("utf8")}i.push(t)}n=await t.next()}return e.debug(`Closing iterator after ${i.length} results`),t.close(),i}async raw(e,t,...r){const{stub:i,logger:n}=r.pop(),s=n.for(this.raw),{skip:a,limit:o}=e;let l;o||a?(delete e.limit,delete e.skip,s.debug(`Retrieving paginated iterator: limit: ${o}/ skip: ${a}`),l=(await this.queryResultPaginated(i,e,o||250,a?.toString())).iterator):(s.debug("Retrieving iterator"),l=await this.queryResult(i,e)),s.debug("Iterator acquired");const c=await this.resultIterator(s,l);return s.debug("returning {0} results",""+(Array.isArray(c)?c.length:1)),c}Statement(e){if(!e)throw new Oe("Context is required");return new Pe(this,e)}async Sequence(e){return new Te(e,this)}async createAll(e,t,r,...i){if(t.length!==r.length)throw new f("Ids and models must have the same length");const{logger:n}=i[i.length-1],s=n.for(this.createAll);return s.info(`Creating ${t.length} entries ${e} table`),s.debug("pks: "+t),Promise.all(t.map(async(t,n)=>this.create(e,t,r[n],...i)))}async updateAll(e,t,r,...i){if(t.length!==r.length)throw new f("Ids and models must have the same length");const{logger:n}=i[i.length-1],s=n.for(this.createAll);return s.info(`Updating ${t.length} entries ${e} table`),s.debug("pks: "+t),Promise.all(t.map(async(t,n)=>this.update(e,t,r[n],...i)))}prepare(e,t,...r){const{stub:i,logger:n}=r.pop(),a=r.shift(),o=n.for(this.prepare),l=s.toTransient(e),c=Object.entries(l.model).reduce((t,[r,i])=>{if(void 0===i)return t;const n=J.column(e,r);if(this.isReserved(n))throw new f(`Property name ${n} is reserved`);return t[n]=i,t},{});return e[Z.METADATA]&&(o.silly("Passing along persistence metadata for "+e[Z.METADATA]),Object.defineProperty(c,Z.METADATA,{enumerable:!1,writable:!1,configurable:!0,value:e[Z.METADATA]})),o.info(`Preparing record for ${a} table with pk ${e[t]}`),{record:c,id:i.createCompositeKey(a,[e[t]+""]),transient:l.transient}}revert(e,t,r,i,n){const a=this.log.for(this.revert),o={};o[r]=i;const l="string"==typeof t?s.build(o,t):new t(o);a.silly(`Rebuilding model ${l.constructor.name} id ${i}`);const c=e[Z.METADATA],p=Object.keys(l).reduce((t,r)=>(t[r]=e[J.column(t,r)],t),l);return n&&(a.verbose("re-adding transient properties: "+Object.keys(n).join(", ")),Object.entries(n).forEach(([e,t])=>{if(e in p&&void 0!==p[e])throw new f(`Transient property ${e} already exists on model ${l.constructor.name}. should be impossible`);p[e]=t})),c&&(a.silly(`Passing along ${this.flavour} persistence metadata for ${l.constructor.name} id ${i}: ${c}`),Object.defineProperty(p,Z.METADATA,{enumerable:!1,configurable:!1,writable:!1,value:c})),p}createPrefix(t,r,i,...n){const s=n.pop(),a={};return a[e.TABLE]=t,Object.assign(a,i),[t,r,a,s]}updatePrefix(t,r,i,...n){const s=n.pop(),a={};return a[e.TABLE]=t,Object.assign(a,i),[t,r,a,s]}createAllPrefix(t,r,i,...n){if(r.length!==i.length)throw new f("Ids and models must have the same length");const s=n.pop(),a=r.map((r,n)=>{const s={};return s[e.TABLE]=t,Object.assign(s,i[n]),s});return[t,r,a,s]}updateAllPrefix(t,r,i,...n){if(r.length!==i.length)throw new f("Ids and models must have the same length");const s=n.pop(),a=r.map((r,n)=>{const s={};return s[e.TABLE]=t,Object.assign(s,i[n]),s});return[t,r,a,s]}static decoration(){super.decoration(),oe.flavouredAs(ye).for(Z.CREATED_BY).define(k(_e),ae(Z.CREATED_BY,{})).apply(),oe.flavouredAs(ye).for(Z.UPDATED_BY).define(O(_e),ae(Z.UPDATED_BY,{})).apply(),oe.flavouredAs(ye).for(A.ID).define({decorator:(e,t)=>(r,i)=>le(a(),N(),ae(se.key(A.ID,i),e),k(qe,e,t))(r,i)}).apply(),oe.flavouredAs(ye).for(Z.COLUMN).extend(R()).apply(),oe.flavouredAs(ye).for(Z.TABLE).extend(e=>T()(e)).apply(),oe.flavouredAs(ye).for(Z.ONE_TO_ONE).define({decorator:(e,t,r,i,n)=>{const s={class:e,cascade:t,populate:r};return i&&(s.joinTable=i),n&&(s.name=n),le(ce(),re(Z.ONE_TO_ONE,s),c([e,String,Number,BigInt]),k(Ce,s),x(Ie,s),E(De,s),$(Je,s),ae(Z.ONE_TO_ONE,s))}}).apply(),oe.for(Z.ONE_TO_MANY).define({decorator:(e,t,r,i,n)=>{const s={class:e,cascade:t,populate:r};return i&&(s.joinTable=i),n&&(s.name=n),le(ce(),re(Z.ONE_TO_MANY,s),p([e,String,Number]),k(je,s),x(ie,s),E(Be,s),$(Je,s),ae(Z.ONE_TO_MANY,s))}}).apply()}}Me.decoration(),ee.setCurrent(ye);class Le extends l{constructor(){super()}deserialize(e){return super.deserialize(e)}serialize(e){return require("json-stringify-deterministic")(require("sort-keys-recursive")(this.preSerialize(e)))}}class We extends Me{constructor(e,t,r){super(e,t),this.collections=r,this.collections=r||[]}async Sequence(e){return new Te(e,this,this.collections)}async read(e,t,r,...i){const{stub:n,logger:s}=i.pop(),a=s.for(this.read);let o;try{const i=await this.readState(n,e,t.toString(),r);if(1>i.length)throw a.debug(`No record found for id ${t} in ${e} table`),new w(`No record found for id ${t} in ${e} table`);2>i.length?(a.debug(`No record found for id ${t} in ${e} table`),o=i.pop()):o=this.mergeModels(i)}catch(e){throw this.parseError(e)}return o}async delete(e,t,r,...i){const n=i.pop(),{stub:s,logger:a}=n,o=a.for(this.delete);let l;i.push(n);try{l=await this.read(e,t,r,...i),o.verbose(`deleting entry with pk ${t} from ${e} table`),this.deleteState(s,e,t.toString(),r)}catch(e){throw this.parseError(e)}return l}prepare(e,t,...r){const{stub:i,logger:n}=r.pop(),a=r.shift(),o=n.for(this.prepare),l=((e,t)=>{const r=s.toTransient(t),i=ve(t),n=t=>Object.entries(t).reduce((r,[i,n])=>{if(void 0===n)return r;const s=J.column(t,i);if(e.isReserved(s))throw new f(`Property name ${s} is reserved`);return r[s]=n,r},{});if(i.private){const e=Object.keys(i.private);for(const t of e)i.private[t]=n(i.private[t])}return{model:r.model,transient:r.transient,privateData:i.private,result:n(r.model)}})(this,e);return o.info(`Preparing record for ${a} table with pk ${e[t]}`),{record:l.privateData,id:i.createCompositeKey(a,[e[t]+""]),transient:l.transient}}createPrefix(t,r,i,...n){const s=n.pop(),a=Object.keys(i);for(const r of a)i[r][e.TABLE]=t;return[t,r,i,s]}updatePrefix(t,r,i,...n){const s=n.pop(),a=Object.keys(i);for(const r of a)i[r][e.TABLE]=t;return[t,r,i,s]}async putState(e,t,r,...i){const n=Object.keys(r);let s,a={};for(const i of n){a=r[i];try{s=Buffer.from(Me.serializer.serialize(r[i]))}catch(e){throw new g(`Failed to serialize record with id ${t}: ${e}`)}await e.putPrivateData(i,t.toString(),s)}return a}async readState(e,t,r,i,...n){const s=e.createCompositeKey(t,[r+""]),a=ve(i),o=Object.keys(a.private),l=[];for(const t of o)try{let i=await e.getPrivateData(t,s);if(""===i.toString())throw new w(`Entry with id ${r} doesn't exist...`);try{i=Me.serializer.deserialize(i.toString())}catch(e){throw new g("Failed to parse private data: "+e)}l.push(i)}catch(e){if(we.test(e.message))throw new Ne(e);throw e}return l}async deleteState(e,t,r,i,...n){const s=e.createCompositeKey(t,[r+""]),a=ve(i),o=Object.keys(a.private);for(const t of o)await e.deletePrivateData(t,s)}async queryResult(e,t,r){const i=ve(r).private,n=Object.keys(i)[0]||"";return(await e.getPrivateDataQueryResult(n,JSON.stringify(t))).iterator}async queryResultPaginated(e,t,r=250,i=void 0,n){const s=ve(n).private,a=Object.keys(s)[0]||"",o=await e.getPrivateDataQueryResult(a,JSON.stringify(t)),l=[];let c=0,p=!i,d=null;for(;;){const e=await o.next();if(e.value&&e.value.value.toString()){const t=e.value.key,n=e.value.value.toString("utf8");if(!p){t===i?.toString()&&(p=!0);continue}if(l.push({Key:t,Record:JSON.parse(n)}),d=t,c++,c>=r)return await o.close(),{iterator:l,metadata:{fetchedRecordsCount:l.length,bookmark:d}}}if(e.done)return await o.close(),{iterator:l,metadata:{fetchedRecordsCount:l.length,bookmark:""}}}}async raw(e,t,...r){const{stub:i,logger:n}=r.pop(),s=n.for(this.raw),{skip:a,limit:o}=e,l=r.shift();let c;o||a?(delete e.limit,delete e.skip,s.debug(`Retrieving paginated iterator: limit: ${o}/ skip: ${a}`),c=(await this.queryResultPaginated(i,e,o||250,a?.toString(),l)).iterator):(s.debug("Retrieving iterator"),c=await this.queryResult(i,e,l)),s.debug("Iterator acquired");const p=await this.resultIterator(s,c);return s.debug("returning {0} results",""+(Array.isArray(p)?p.length:1)),p}}class Ue extends z{static{this.serializer=new Le}constructor(e,t){super(e),this.clazz=t,this.initialized=!1,Ue.adapter=this.getAdapter(t),this.repo=J.forModel(t,Ue.adapter.alias)}getAdapter(e){const t=new e;if(be(t)){const e=ve(t),r=Object.keys(e.private);return new We(void 0,"fabric-private-data-adapter",r)}return new Me(void 0,[ye,e.name].join("_"))}logFor(e){return C.for(Ue.name,{},e)}async create(e,t,...r){const i=this.logFor(e).for(this.create);"string"==typeof t&&(t=this.deserialize(t)),i.info("Creating model: "+JSON.stringify(t));const n=this.getTransientData(e);return i.info("Merging transient data..."),t=this.repo.merge(t,n),this.repo.create(t,e,...r)}async read(e,t,...r){return this.logFor(e).for(this.read).info(`reading entry with pk ${t} `),this.repo.read(t,e,...r)}getTransientData(e){const t=e.stub.getTransient();let r={};return t.has(this.repo.tableName)&&(r=JSON.parse(t.get(this.repo.tableName)?.toString("utf8"))),r}async update(e,t,...r){const i=this.logFor(e).for(this.update);"string"==typeof t&&(t=this.deserialize(t)),i.info("Updating model: "+JSON.stringify(t));const n=this.getTransientData(e);return i.info("Merging transient data..."),t=this.repo.merge(t,n),this.repo.update(t,e,...r)}async delete(e,t,...r){return this.logFor(e).for(this.delete).info(`deleting entry with pk ${t} `),this.repo.delete(t+"",e,...r)}async deleteAll(e,t,...r){return"string"==typeof t&&(t=JSON.parse(t)),this.repo.deleteAll(t,e,...r)}async readAll(e,t,...r){return"string"==typeof t&&(t=JSON.parse(t)),this.repo.readAll(t,e,...r)}async updateAll(e,t,...r){const i=this.logFor(e).for(this.updateAll);return"string"==typeof t&&(t=JSON.parse(t).map(e=>this.deserialize(e)).map(e=>new this.clazz(e))),i.info(`updating ${t.length} entries to the table`),this.repo.updateAll(t,e,...r)}async raw(e,t,r,...i){return"string"==typeof t&&(t=JSON.parse(t)),this.repo.raw(t,r,e,...i)}serialize(e){return Ue.serializer.serialize(e)}deserialize(e){return Ue.serializer.deserialize(e)}async init(e){const t=this.logFor(e).for(this.init);t.info("Running contract initialization..."),this.initialized=!0,t.info("Contract initialization completed.")}async healthcheck(e){return this.logFor(e).for(this.healthcheck).info(`Running Healthcheck: ${this.initialized}...`),{healthcheck:this.initialized}}async createAll(e,t,...r){const i=this.logFor(e).for(this.createAll);return"string"==typeof t&&(t=JSON.parse(t).map(e=>this.deserialize(e)).map(e=>new this.clazz(e))),i.info(`adding ${t.length} entries to the table`),this.repo.createAll(t,e,...r)}}class Ve extends Ue{constructor(e,t){super(e,t)}logFor(e){return C.for(Ve,{},e)}async create(e,t){const r=this.logFor(e).for(this.create);r.info("Creating model: "+t);const i=this.deserialize(t);return r.info("Model deserialized: "+JSON.stringify(i)),this.serialize(await super.create(e,i))}async read(e,t){return this.logFor(e).for(this.read).info("Reading id: "+t),this.serialize(await super.read(e,t))}async update(e,t){return this.logFor(e).for(this.update).info("Updating model: "+t),this.serialize(await super.update(e,t))}async delete(e,t){return this.logFor(e).for(this.delete).info("Deleting id: "+t),this.serialize(await super.delete(e,t))}async deleteAll(e,t){const r=JSON.parse(t);return this.logFor(e).for(this.deleteAll).info(`deleting ${r.length} entries from the table`),JSON.stringify((await super.deleteAll(e,r)).map(e=>this.serialize(e)))}async readAll(e,t){const r=JSON.parse(t);return this.logFor(e).for(this.readAll).info(`reading ${r.length} entries from the table`),JSON.stringify((await super.readAll(e,r)).map(e=>this.serialize(e)))}async updateAll(e,t){const r=this.logFor(e).for(this.updateAll),i=JSON.parse(t).map(e=>this.deserialize(e)).map(e=>new this.clazz(e));return r.info(`Updating ${i.length} entries to the table`),JSON.stringify((await super.updateAll(e,i)).map(e=>this.serialize(e)))}async raw(e,t,r){const i=JSON.parse(t);return super.raw(e,i,r)}async init(e){await super.init(e)}async healthcheck(e){return JSON.stringify(await super.healthcheck(e))}async createAll(e,t){const r=this.logFor(e).for(this.createAll),i=JSON.parse(t).map(e=>this.deserialize(e)).map(e=>new this.clazz(e));return r.info(`Adding ${i.length} entries to the table`),JSON.stringify((await super.createAll(e,i)).map(e=>this.serialize(e)))}}function Ye(e,t){const r=e+t;if(e!==r-t||t!==r-e)throw new Se(`Addition overflow: ${e} + ${t}`);return r}function He(e,t){const r=e-t;if(e!==r+t||t!==e-r)throw new Se(`Subtraction overflow: ${e} - ${t}`);return r}pe([P(),de("design:type",Function),de("design:paramtypes",[F,String]),de("design:returntype",Promise)],Ve.prototype,"create",null),pe([P(!1),de("design:type",Function),de("design:paramtypes",[F,String]),de("design:returntype",Promise)],Ve.prototype,"read",null),pe([P(),de("design:type",Function),de("design:paramtypes",[F,String]),de("design:returntype",Promise)],Ve.prototype,"update",null),pe([P(),de("design:type",Function),de("design:paramtypes",[F,String]),de("design:returntype",Promise)],Ve.prototype,"delete",null),pe([P(),de("design:type",Function),de("design:paramtypes",[F,String]),de("design:returntype",Promise)],Ve.prototype,"deleteAll",null),pe([P(!1),de("design:type",Function),de("design:paramtypes",[F,String]),de("design:returntype",Promise)],Ve.prototype,"readAll",null),pe([P(),de("design:type",Function),de("design:paramtypes",[F,String]),de("design:returntype",Promise)],Ve.prototype,"updateAll",null),pe([P(!1),de("design:type",Function),de("design:paramtypes",[F,String,Boolean]),de("design:returntype",Promise)],Ve.prototype,"raw",null),pe([P(),de("design:type",Function),de("design:paramtypes",[F]),de("design:returntype",Promise)],Ve.prototype,"init",null),pe([P(!1),de("design:type",Function),de("design:paramtypes",[F]),de("design:returntype",Promise)],Ve.prototype,"healthcheck",null),pe([P(),de("design:type",Function),de("design:paramtypes",[F,String]),de("design:returntype",Promise)],Ve.prototype,"createAll",null);let Ke=class extends L{constructor(e){super(e)}};pe([_({type:"String"}),de("design:type",String)],Ke.prototype,"name",void 0),pe([ne(),a(),de("design:type",String)],Ke.prototype,"owner",void 0),pe([ne(),a(),de("design:type",String)],Ke.prototype,"symbol",void 0),pe([ne(),a(),de("design:type",Number)],Ke.prototype,"decimals",void 0),Ke=pe([M("erc20_tokens"),o(),de("design:paramtypes",[Object])],Ke);let Qe=class extends L{constructor(e){super(e)}};pe([_({type:"String"}),de("design:type",String)],Qe.prototype,"id",void 0),pe([ne(),a(),de("design:type",String)],Qe.prototype,"token",void 0),pe([ne(),a(),de("design:type",Number)],Qe.prototype,"balance",void 0),pe([ne(),de("design:type",String)],Qe.prototype,"captive",void 0),Qe=pe([M("erc20_wallets"),o(),de("design:paramtypes",[Object])],Qe);let Ge=class extends L{constructor(e){super(e)}};var Xe;pe([_({type:"String"}),ne(),a(),de("design:type",String)],Ge.prototype,"owner",void 0),pe([ne(),a(),de("design:type",String)],Ge.prototype,"spender",void 0),pe([ne(),a(),de("design:type",Number)],Ge.prototype,"value",void 0),Ge=pe([M("erc20_allowances"),o(),de("design:paramtypes",[Object])],Ge),(e=>{e.TRANSFER="Transfer",e.APPROVAL="Approval"})(Xe||(Xe={}));class Ze extends Ue{constructor(e){super(e,Qe),Ze.adapter=Ze.adapter||new Me,this.walletRepository=ze.forModel(Qe,Ze.adapter.alias),this.tokenRepository=ze.forModel(Ke,Ze.adapter.alias),this.allowanceRepository=ze.forModel(Ge,Ze.adapter.alias)}async TokenName(e){await this.CheckInitialized(e);const t=await this.tokenRepository.selectWithContext(void 0,e);return(await t.execute())[0].name}async Symbol(e){await this.CheckInitialized(e);const t=await this.tokenRepository.selectWithContext(void 0,e);return(await t.execute())[0].symbol}async Decimals(e){await this.CheckInitialized(e);const t=await this.tokenRepository.selectWithContext(void 0,e);return(await t.execute())[0].decimals}async TotalSupply(e){await this.CheckInitialized(e);const t=await this.walletRepository.selectWithContext(void 0,e),r=await t.execute();if(0==r.length)throw new w(`The token ${this.getName()} does not exist`);let i=0;return r.forEach(e=>{i+=e.balance}),i}async BalanceOf(e,t){return await this.CheckInitialized(e),(await this.walletRepository.read(t,e)).balance}async Transfer(e,t,r){await this.CheckInitialized(e);const i=e.clientIdentity.getID();if(!await this._transfer(e,i,t,r))throw new f("Failed to transfer");return!0}async TransferFrom(e,t,r,i){await this.CheckInitialized(e);const n=e.clientIdentity.getID(),s=await this._getAllowance(e,t,n);if(!s||0>s.value)throw new ke(`spender ${n} has no allowance from ${t}`);const a=s.value;if(i>a)throw new Ae("The spender does not have enough allowance to spend.");const o=He(a,i),l=Object.assign({},s,{value:o});if(await this.allowanceRepository.update(l,e),!await this._transfer(e,t,r,i))throw new f("Failed to transfer");return!0}async _transfer(e,t,r,i){const n=this.logFor(e).for(this._transfer);if(t===r)throw new W("cannot transfer to and from same client account");if(0>i)throw new Ae("transfer amount cannot be negative");const s=await this.walletRepository.read(t,e),a=s.balance;if(i>a)throw new Ae(`client account ${t} has insufficient funds.`);let o,l=!1;try{o=await this.walletRepository.read(r,e)}catch(t){if(!(t instanceof y))throw new f(t);if(404!==t.code)throw new f(t.message);o=new Qe({id:r,balance:0,token:await this.TokenName(e)}),l=!0}const c=o.balance,p=He(a,i),d=Ye(c,i),u=Object.assign({},s,{balance:p});await this.walletRepository.update(u,e);const h=Object.assign({},o,{balance:d});l?await this.walletRepository.create(h,e):await this.walletRepository.update(h,e);const g={from:t,to:r,value:i};return this.repo.ObserverHandler().updateObservers(n,"",Xe.TRANSFER,"",e,"",g),!0}async Approve(e,t,r){await this.CheckInitialized(e);const i=this.logFor(e).for(this.Approve),n=e.clientIdentity.getID();let s=await this._getAllowance(e,n,t);if((await this.walletRepository.read(n,e)).balance<r)throw new Ae(`client account ${n} has insufficient funds.`);s?(s.value=r,await this.allowanceRepository.update(s,e)):(s=new Ge({owner:n,spender:t,value:r}),await this.allowanceRepository.create(s,e));const a={owner:n,spender:t,value:r};return this.repo.ObserverHandler().updateObservers(i,"",Xe.APPROVAL,"",e,"",a),!0}async Allowance(e,t,r){await this.CheckInitialized(e);const i=await this._getAllowance(e,t,r);if(!i)throw new ke(`spender ${r} has no allowance from ${t}`);return i.value}async _getAllowance(e,t,r){const i=V.and(V.attribute("owner").eq(t),V.attribute("spender").eq(r)),n=await this.allowanceRepository.selectWithContext(void 0,e),s=await n.where(i).execute();return s?.[0]}async Initialize(e,t){const r=await this.tokenRepository.selectWithContext(void 0,e);if((await r.execute()).length>0)throw new W("contract options are already set, client is not authorized to change them");return t.owner=e.clientIdentity.getID(),await this.tokenRepository.create(t,e),!0}async CheckInitialized(e){const t=await this.tokenRepository.selectWithContext(void 0,e);if(0==(await t.execute()).length)throw new xe("contract options need to be set before calling any function, call Initialize() to initialize contract")}async Mint(e,t){await this.CheckInitialized(e);const r=this.logFor(e).for(this.Mint),i=e.clientIdentity.getID();if(0>=t)throw new v("mint amount must be a positive integer");let n;try{n=await this.walletRepository.read(i,e);const r=Ye(n.balance,t),s=Object.assign({},n,{balance:r});await this.walletRepository.update(s,e)}catch(r){if(!(r instanceof y))throw new f(r);if(404!==r.code)throw new f(r.message);{const r=new Qe({id:i,balance:t,token:await this.TokenName(e)});await this.walletRepository.create(r,e)}}const s={from:"0x0",to:i,value:t};this.repo.ObserverHandler().updateObservers(r,"",Xe.TRANSFER,"",e,"",s)}async Burn(e,t){await this.CheckInitialized(e);const r=this.logFor(e).for(this.Burn),i=e.clientIdentity.getID(),n=await this.walletRepository.read(i,e),s=n.balance;if(t>s)throw new Ae("Minter has insufficient funds.");const a=He(s,t),o=Object.assign({},n,{balance:a});await this.walletRepository.update(o,e),r.info(t+" tokens were burned");const l={from:i,to:"0x0",value:t};this.repo.ObserverHandler().updateObservers(r,"",Xe.TRANSFER,"",e,"",l)}async BurnFrom(e,t,r){await this.CheckInitialized(e);const i=this.logFor(e).for(this.BurnFrom),n=await this.walletRepository.read(t,e),s=n.balance;if(r>s)throw new Ae(t+" has insufficient funds.");const a=He(s,r),o=Object.assign({},n,{balance:a});await this.walletRepository.update(o,e),i.info(`${r} tokens were berned from ${t}`);const l={from:t,to:"0x0",value:r};this.repo.ObserverHandler().updateObservers(i,"",Xe.TRANSFER,"",e,"",l)}async ClientAccountBalance(e){await this.CheckInitialized(e);const t=e.clientIdentity.getID(),r=await this.walletRepository.read(t,e);if(!r)throw new Ae(`The account ${t} does not exist`);return r.balance}async ClientAccountID(e){return await this.CheckInitialized(e),e.clientIdentity.getID()}}pe([P(!1),de("design:type",Function),de("design:paramtypes",[F]),de("design:returntype",Promise)],Ze.prototype,"TokenName",null),pe([P(!1),de("design:type",Function),de("design:paramtypes",[F]),de("design:returntype",Promise)],Ze.prototype,"Symbol",null),pe([P(!1),de("design:type",Function),de("design:paramtypes",[F]),de("design:returntype",Promise)],Ze.prototype,"Decimals",null),pe([P(!1),de("design:type",Function),de("design:paramtypes",[F]),de("design:returntype",Promise)],Ze.prototype,"TotalSupply",null),pe([P(!1),de("design:type",Function),de("design:paramtypes",[F,String]),de("design:returntype",Promise)],Ze.prototype,"BalanceOf",null),pe([P(),de("design:type",Function),de("design:paramtypes",[F,String,Number]),de("design:returntype",Promise)],Ze.prototype,"Transfer",null),pe([P(),de("design:type",Function),de("design:paramtypes",[F,String,String,Number]),de("design:returntype",Promise)],Ze.prototype,"TransferFrom",null),pe([P(),de("design:type",Function),de("design:paramtypes",[F,String,Number]),de("design:returntype",Promise)],Ze.prototype,"Approve",null),pe([P(),de("design:type",Function),de("design:paramtypes",[F,String,String]),de("design:returntype",Promise)],Ze.prototype,"Allowance",null),pe([P(),de("design:type",Function),de("design:paramtypes",[F,Ke]),de("design:returntype",Promise)],Ze.prototype,"Initialize",null),pe([P(!1),de("design:type",Function),de("design:paramtypes",[F]),de("design:returntype",Promise)],Ze.prototype,"CheckInitialized",null),pe([$e(),P(),de("design:type",Function),de("design:paramtypes",[F,Number]),de("design:returntype",Promise)],Ze.prototype,"Mint",null),pe([$e(),P(),de("design:type",Function),de("design:paramtypes",[F,Number]),de("design:returntype",Promise)],Ze.prototype,"Burn",null),pe([$e(),P(),de("design:type",Function),de("design:paramtypes",[F,String,Number]),de("design:returntype",Promise)],Ze.prototype,"BurnFrom",null),pe([P(),de("design:type",Function),de("design:paramtypes",[F]),de("design:returntype",Promise)],Ze.prototype,"ClientAccountBalance",null),pe([P(),de("design:type",Function),de("design:paramtypes",[F]),de("design:returntype",Promise)],Ze.prototype,"ClientAccountID",null);const et=[Ze];class tt extends I{constructor(e,t,r){if(super(e,t),r){if(r instanceof ue)throw new Oe("Receiving incorrect context... It should be the contract context!!!");this.logger=r.logging.getLogger(e)}else this.logger=new I(e,t)}log(e,t,r){if(D[this.config("level")]<D[e])return;let i;switch(e){case j.info:i=this.logger.info;break;case j.verbose:i=this.logger.verbose;break;case j.debug:i=this.logger.debug;break;case j.error:i=this.logger.error;break;case j.silly:i=this.logger.silly;break;default:throw Error("Invalid log level")}i.call(this.logger,this.createLog(e,t,r))}}C.setFactory((e,t,r)=>new tt(e,t||{},r));const rt="##VERSION##",it="##PACKAGE##";se.registerLibrary(it,rt);export{tt as ContractLogger,Me as FabricContractAdapter,ue as FabricContractContext,ze as FabricContractRepository,he as FabricContractRepositoryObservableHandler,Te as FabricContractSequence,Ue as FabricCrudContract,Pe as FabricStatement,it as PACKAGE_NAME,Ve as SerializedCrudContract,rt as VERSION,et as contracts,_e as createdByOnFabricCreateUpdate,qe as pkFabricOnCreate};
2
2
  //# sourceMappingURL=for-fabric.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"for-fabric.js","sources":["../src/contracts/ContractContext.ts","../src/contracts/FabricContractRepositoryObservableHandler.ts","../src/shared/events.ts","../src/shared/constants.ts","../src/shared/decorators.ts","../src/contracts/private-data.ts","../src/shared/errors.ts","../src/contracts/PrivateSequence.ts","../src/contracts/FabricContractSequence.ts","../src/contracts/FabricContractRepository.ts","../src/contracts/FabricContractStatement.ts","../src/shared/SimpleDeterministicSerializer.ts","../src/contracts/FabricConstruction.ts","../src/contracts/ContractAdapter.ts","../src/shared/DeterministicSerializer.ts","../src/contracts/ContractPrivateDataAdapter.ts","../src/contracts/crud/crud-contract.ts","../src/contracts/crud/serialized-crud-contract.ts","../src/shared/math.ts","../src/contracts/erc20/models.ts","../src/shared/erc20/erc20-constants.ts","../src/contracts/erc20/erc20contract.ts","../src/contracts/erc20/index.ts","../src/contracts/logging.ts","../src/version.ts"],"sourcesContent":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],"names":["FabricContractContext","Context","constructor","super","stub","this","get","timestamp","getDateTimestamp","identity","logger","FabricContractRepositoryObservableHandler","ObserverHandler","supportedEvents","OperationKeys","CREATE","UPDATE","DELETE","BulkCrudOperationKeys","CREATE_ALL","UPDATE_ALL","DELETE_ALL","updateObservers","log","table","event","id","ctx","owner","payload","indexOf","debug","eventName","params","push","join","generateFabricEventName","setEvent","Buffer","from","JSON","stringify","FabricModelKeys","IdentityType","FabricFlavour","Owner","target","propertyKey","descriptor","originalMethod","value","async","args","acountId","clientIdentity","getID","select","selectWithContext","undefined","tokens","execute","length","NotFoundError","AuthorizationError","apply","getFabricModelKey","key","Model","FABRIC","privateData","collection","Error","PRIVATE","model","attribute","meta","Reflect","getMetadata","ModelKeys","ANCHOR","data","collections","propMetadata","Set","isPrivate","transient","MISSING_PRIVATE_DATA_REGEX","getClassPrivateDataMetadata","metadata","isModelPrivate","modelToPrivate","hasPrivateData","decs","getAllPropertyDecoratorsRecursive","modelCollections","result","private","Object","keys","reduce","accum","k","e","SerializationError","entries","val","find","el","props","build","name","OverflowError","InternalError","msg","BalanceError","AllowanceError","MissingContextError","UnauthorizedPrivateDataAccess","BaseError","NotInitializedError","CustomizableSequence","BaseModel","seq","__decorate","pk","prototype","required","index","CouchDBKeys","SEQUENCE","FabricContractSequence","Sequence","options","adapter","repo","Repository","forModel","alias","current","startWith","sequence","read","parse","parseValue","type","increment","count","incrementBy","next","toIncrementBy","BigInt","update","create","range","i","FabricContractRepository","clazz","trackedEvents","logFor","Logging","for","info","c","record","prepare","tableName","revert","class","m","delete","createAll","models","prepared","map","ids","p","records","transients","filter","r","updateAll","u","raw","rawInput","docsOnly","pop","transformedArgs","CTX","selector","contextArgs","context","Ctx","_overrides","Statement","createAllPrefix","opts","getSequenceOptions","Promise","all","enforceDBDecorators","ON","ignoredProps","errorMessages","resolve","hasErrors","toString","ValidationError","createPrefix","String","ConflictError","code","FabricStatement","CouchDBStatement","results","pkDef","findPrimaryKey","fromSelector","pkAttr","selectSelector","processRecord","selectors","TABLE","query","fields","whereCondition","condition","parseCondition","Condition","and","eq","selectorKeys","values","CouchDBGroupOperator","AND","OR","s","forEach","orderBySelector","sort","rec","CouchDBOperator","BIGGER","limitSelector","limit","offsetSelector","skip","SimpleDeterministicSerializer","JSONSerializer","deserialize","str","serialize","require","sortKeysRecursive","preSerialize","assign","oneToOneOnCreate","propertyValue","innerRepo","repositoryFromTypeMetadata","cacheModelForPopulate","created","oneToOneOnUpdate","cascade","Cascade","CASCADE","updated","createOrUpdate","oneToOneOnDelete","deleted","oneToManyOnCreate","propertyValues","arrayType","every","item","uniqueValues","pkName","add","oneToManyOnDelete","isInstantiated","v","populate","nested","isArr","Array","isArray","res","propName","propKeyValues","cacheKey","proKeyValue","getPopulateKey","fetchPopulateValues","createdByOnFabricCreateUpdate","user","UnsupportedError","pkFabricOnCreate","sequenceNameForModel","defineProperty","enumerable","writable","configurable","FabricContractAdapter","CouchDBAdapter","getClient","textDecoder","TextDecoder","serializer","repository","scope","config","putState","parseError","readState","mergeModels","verbose","deleteState","composedKey","createCompositeKey","getState","queryResult","getQueryResult","queryResultPaginated","getQueryResultWithPagination","extract","finalModel","decode","buffer","flags","operation","resultIterator","iterator","isHistory","allResults","done","jsonRes","TxId","txId","Timestamp","Value","err","error","close","shift","split","modelToTransient","mappedProp","column","isReserved","PersistenceKeys","METADATA","silly","obj","ob","flavour","updatePrefix","updateAllPrefix","decoration","createdByKey","CREATED_BY","updatedByKey","UPDATED_BY","Decoration","flavouredAs","define","onCreate","onCreateUpdate","pkKey","DBKeys","ID","OrderDirection","ASC","DSC","readonly","NumericSequence","columnKey","Adapter","COLUMN","extend","FabricProperty","tableKey","FabricObject","oneToOnekey","ONE_TO_ONE","decorator","joinColumnOpts","fk","joinTable","prop","RELATIONS","Number","onUpdate","onDelete","afterAny","oneToManyKey","ONE_TO_MANY","joinTableOpts","list","oneToManyOnUpdate","setCurrent","DeterministicSerializer","FabricContractPrivateDataAdapter","instance","transformModel","processModel","putPrivateData","getPrivateData","test","message","deletePrivateData","getPrivateDataQueryResult","reachedBookmark","lastKey","recordKey","recordValue","Key","Record","fetchedRecordsCount","bookmark","FabricCrudContract","Contract","initialized","getAdapter","pvt","getTransientData","merge","transientMap","getTransient","has","deleteAll","readAll","init","healthcheck","SerializedCrudContract","parsedKeys","modelList","parsedInput","a","b","sub","Transaction","Boolean","ERC20Token","ERC20Wallet","Allowance","ERC20Events","FabricERC20Contract","walletRepository","tokenRepository","allowanceRepository","TokenName","CheckInitialized","Symbol","symbol","Decimals","decimals","TotalSupply","wallets","getName","total","wallet","balance","BalanceOf","Transfer","to","_transfer","TransferFrom","spender","allowance","_getAllowance","currentAllowance","updatedAllowance","newAllowance","fromWallet","fromBalance","toWallet","newToWallet","token","toBalance","fromUpdatedBalance","toUpdatedBalance","updatedFromWallet","updatedToWallet","transferEvent","TRANSFER","Approve","approvalEvent","APPROVAL","allowanceCondition","where","Initialize","Mint","amount","minter","minterWallet","updatedBalance","updatedminter","newWallet","Burn","currentBalance","BurnFrom","account","accountWallet","updatedaccount","ClientAccountBalance","clientAccountID","clientWallet","ClientAccountID","__metadata","contracts","ContractLogger","MiniLogger","conf","logging","getLogger","level","stack","NumericLogLevels","method","LogLevel","call","createLog","setFactory","object","VERSION","PACKAGE_NAME","Metadata","registerLibrary"],"mappings":"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"}
1
+ {"version":3,"file":"for-fabric.js","sources":["../src/contracts/ContractContext.ts","../src/contracts/FabricContractRepositoryObservableHandler.ts","../src/shared/events.ts","../src/shared/constants.ts","../src/contracts/private-data.ts","../src/shared/errors.ts","../src/contracts/PrivateSequence.ts","../src/shared/decorators.ts","../src/contracts/FabricContractSequence.ts","../src/contracts/FabricContractRepository.ts","../src/contracts/FabricContractStatement.ts","../src/shared/SimpleDeterministicSerializer.ts","../src/contracts/FabricConstruction.ts","../src/contracts/ContractAdapter.ts","../src/shared/DeterministicSerializer.ts","../src/contracts/ContractPrivateDataAdapter.ts","../src/contracts/crud/crud-contract.ts","../src/contracts/crud/serialized-crud-contract.ts","../src/shared/math.ts","../src/contracts/erc20/models.ts","../src/shared/erc20/erc20-constants.ts","../src/contracts/erc20/erc20contract.ts","../src/contracts/erc20/index.ts","../src/contracts/logging.ts","../src/version.ts"],"sourcesContent":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],"names":["FabricContractContext","Context","constructor","super","stub","this","get","timestamp","getDateTimestamp","identity","logger","FabricContractRepositoryObservableHandler","ObserverHandler","supportedEvents","OperationKeys","CREATE","UPDATE","DELETE","BulkCrudOperationKeys","CREATE_ALL","UPDATE_ALL","DELETE_ALL","updateObservers","log","table","event","id","ctx","owner","payload","indexOf","debug","eventName","params","push","join","generateFabricEventName","setEvent","Buffer","from","JSON","stringify","FabricModelKeys","IdentityType","FabricFlavour","MISSING_PRIVATE_DATA_REGEX","getClassPrivateDataMetadata","model","Metadata","PRIVATE","isModelPrivate","metadata","undefined","isPrivate","modelToPrivate","hasPrivateData","modelCollections","result","private","privatePart","collections","properties","reduce","accum","k","collection","e","SerializationError","Object","entries","val","props","includes","length","Model","build","name","keys","OverflowError","InternalError","msg","BalanceError","AllowanceError","MissingContextError","UnauthorizedPrivateDataAccess","BaseError","NotInitializedError","CustomizableSequence","BaseModel","seq","Owner","target","propertyKey","descriptor","originalMethod","value","async","args","acountId","clientIdentity","getID","select","selectWithContext","tokens","execute","NotFoundError","AuthorizationError","apply","privateData","Error","key","attribute","constr","metaData","modeldata","propMetadata","Set","attributeData","transient","__decorate","pk","prototype","required","index","CouchDBKeys","SEQUENCE","FabricContractSequence","Sequence","options","adapter","repo","Repository","forModel","alias","current","startWith","sequence","read","parse","parseValue","type","increment","count","incrementBy","next","toIncrementBy","BigInt","update","create","range","i","FabricContractRepository","clazz","trackedEvents","logFor","Logging","for","info","c","record","prepare","tableName","revert","class","m","delete","createAll","models","prepared","map","ids","p","records","transients","filter","r","updateAll","u","raw","rawInput","docsOnly","pop","transformedArgs","CTX","selector","contextArgs","context","Ctx","_overrides","Statement","createAllPrefix","opts","getSequenceOptions","Promise","all","enforceDBDecorators","ON","ignoredProps","errorMessages","resolve","hasErrors","toString","ValidationError","createPrefix","String","ConflictError","code","FabricStatement","CouchDBStatement","results","pkAttr","fromSelector","DBKeys","ID","selectSelector","processRecord","selectors","TABLE","query","fields","whereCondition","condition","parseCondition","Condition","and","eq","selectorKeys","values","CouchDBGroupOperator","AND","OR","s","forEach","orderBySelector","sort","rec","CouchDBOperator","BIGGER","limitSelector","limit","offsetSelector","skip","SimpleDeterministicSerializer","JSONSerializer","deserialize","str","serialize","require","sortKeysRecursive","preSerialize","assign","oneToOneOnCreate","data","propertyValue","innerRepo","repositoryFromTypeMetadata","cacheModelForPopulate","created","oneToOneOnUpdate","cascade","Cascade","CASCADE","updated","createOrUpdate","oneToOneOnDelete","deleted","oneToManyOnCreate","propertyValues","arrayType","every","item","uniqueValues","pkName","add","oneToManyOnDelete","isInstantiated","v","populate","nested","isArr","Array","isArray","res","propName","propKeyValues","cacheKey","proKeyValue","getPopulateKey","fetchPopulateValues","createdByOnFabricCreateUpdate","user","UnsupportedError","pkFabricOnCreate","sequenceNameForModel","defineProperty","enumerable","writable","configurable","FabricContractAdapter","CouchDBAdapter","getClient","textDecoder","TextDecoder","serializer","repository","scope","config","putState","parseError","readState","mergeModels","verbose","deleteState","composedKey","createCompositeKey","getState","queryResult","getQueryResult","queryResultPaginated","getQueryResultWithPagination","extract","finalModel","decode","buffer","flags","operation","resultIterator","iterator","isHistory","allResults","done","jsonRes","TxId","txId","Timestamp","Value","err","error","close","shift","split","toTransient","mappedProp","column","isReserved","PersistenceKeys","METADATA","silly","obj","ob","flavour","updatePrefix","updateAllPrefix","decoration","Decoration","flavouredAs","CREATED_BY","define","onCreate","UPDATED_BY","onCreateUpdate","decorator","groupsort","attr","readonly","COLUMN","extend","FabricProperty","FabricObject","ONE_TO_ONE","joinColumnOpts","fk","meta","joinTable","prop","relation","Number","onUpdate","onDelete","afterAny","ONE_TO_MANY","joinTableOpts","list","oneToManyOnUpdate","Adapter","setCurrent","DeterministicSerializer","FabricContractPrivateDataAdapter","instance","transformModel","processModel","putPrivateData","getPrivateData","test","message","deletePrivateData","getPrivateDataQueryResult","reachedBookmark","lastKey","recordKey","recordValue","Key","Record","fetchedRecordsCount","bookmark","FabricCrudContract","Contract","initialized","getAdapter","pvt","getTransientData","merge","transientMap","getTransient","has","deleteAll","readAll","init","healthcheck","SerializedCrudContract","parsedKeys","modelList","parsedInput","a","b","sub","Transaction","Boolean","ERC20Token","ERC20Wallet","Allowance","ERC20Events","FabricERC20Contract","walletRepository","tokenRepository","allowanceRepository","TokenName","CheckInitialized","Symbol","symbol","Decimals","decimals","TotalSupply","wallets","getName","total","wallet","balance","BalanceOf","Transfer","to","_transfer","TransferFrom","spender","allowance","_getAllowance","currentAllowance","updatedAllowance","newAllowance","fromWallet","fromBalance","toWallet","newToWallet","token","toBalance","fromUpdatedBalance","toUpdatedBalance","updatedFromWallet","updatedToWallet","transferEvent","TRANSFER","Approve","approvalEvent","APPROVAL","allowanceCondition","where","Initialize","Mint","amount","minter","minterWallet","updatedBalance","updatedminter","newWallet","Burn","currentBalance","BurnFrom","account","accountWallet","updatedaccount","ClientAccountBalance","clientAccountID","clientWallet","ClientAccountID","__metadata","contracts","ContractLogger","MiniLogger","conf","logging","getLogger","level","stack","NumericLogLevels","method","LogLevel","call","createLog","setFactory","object","VERSION","PACKAGE_NAME","registerLibrary"],"mappings":"22CAkCM,MAAOA,WAA8BC,EAKzC,WAAAC,GACEC,OACD,CAOD,QAAIC,GACF,OAAOC,KAAKC,IAAI,OACjB,CAOD,aAAaC,GACX,OAAOF,KAAKD,KAAKI,kBAClB,CAOD,YAAIC,GACF,OAAOJ,KAAKC,IAAI,iBACjB,CAOD,UAAII,GACF,OAAOL,KAAKC,IAAI,SACjB,ECpCG,MAAOK,WAAkDC,EAM7D,WAAAV,CACUW,EAIF,CACJC,EAAcC,OACdD,EAAcE,OACdF,EAAcG,OACdC,EAAsBC,WACtBD,EAAsBE,WACtBF,EAAsBG,aAGxBlB,QAbQE,KAAeQ,gBAAfA,CAcT,CAeQ,qBAAMS,CACbC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,GAEA,MAAMzB,KAAEA,GAASuB,EACjB,IAA6C,IAAzCtB,KAAKQ,gBAAgBiB,QAAQL,GAAe,CAC9CF,EAAIQ,MAAM,YAAYN,WACtB,MAAMO,IC5EVR,EACAC,EACAG,KAEA,MAAMK,EAAS,CAACT,EAAOC,GAEvB,OADIG,GAAOK,EAAOC,KAAKN,GAChBK,EAAOE,KAAK,IACrB,EDqEwBC,CAAwBZ,EAAOC,EAAOG,GACxDxB,EAAKiC,SAASL,EAAWM,OAAOC,KAAKC,KAAKC,UAAU,CAAEf,GAAIA,KAC3D,MACCtB,EAAKiC,SAASZ,EAAOa,OAAOC,KAAKC,KAAKC,UAAUZ,IAEnD,EEvFH,IAAYa,GAeAC,GAfZ,CAAYD,IAEVA,EAAA,QAAA,UACAA,EAAA,OAAA,SAEAA,EAAA,OAAA,UACAA,EAAA,QAAA,UACD,EAPD,CAAYA,KAAAA,GAOX,CAAA,IAQD,CAAYC,IAEVA,EAAA,KAAA,OACD,EAHD,CAAYA,KAAAA,GAGX,CAAA,IAQM,MAAMC,GAAgB,aC3BhBC,GACX,8EA+CI,SAAUC,GACdC,GAEA,OAAOC,GAAS1C,IACdyC,EAAM7C,YACNwC,GAAgBO,QAEpB,CAEM,SAAUC,GAAgCH,GAC9C,MAAMI,EAAWL,GAA4BC,GAC7C,SAAKI,QAAmCC,IAAvBD,EAASE,YACnBF,EAASE,SAClB,CAEM,SAAUC,GACdP,GAEA,IAxBI,CAA0CA,KAC7BD,GAA4BC,GAuBxCQ,CAAeR,GAAQ,MAAO,CAAEA,MAAOA,GAE5C,MAAMM,EAAYH,GAAeH,GAC3BS,EACJV,GAA4BC,GAE9B,IAAIU,EAAwE,CAC1EV,MAAOA,EACPW,aAASN,GAIX,GAAIC,EAAW,CACb,MAAMM,EAAcH,EAAiBI,YACrCH,GACET,GAASa,WAAWd,EAAM7C,cAA+B,IACzD4D,OACA,CACEC,EACAC,KAEA,MAAMJ,EAAcJ,EAAiBI,YACrCG,EAAML,QAAUK,EAAML,SAAW,CAAA,EAEjC,IAAK,MAAMO,KAAcL,EACvB,IACEG,EAAML,QAAQO,GAAcF,EAAML,QAAQO,IAAe,GACzDF,EAAML,QAAQO,GAAYD,GAAKjB,EAAMiB,EACtC,CAAC,MAAOE,GACP,MAAM,IAAIC,EACR,wCAAwCH,MAAME,IAEjD,CAGH,OAAOH,GAET,CAAEhB,MAAO,CAAA,EAAIW,QAASC,GAKzB,MACCF,EAASW,OAAOC,QAAQb,GAAkBM,OACxC,CACEC,GACCC,EAAGM,MAEJ,MAAMC,EAAQvB,GAASa,WAAWd,EAAM7C,aACxC,IAAKqE,GAAOC,SAASR,GAAI,OAAOD,EAEhC,MAAMH,EAAeU,EAA4BV,YAEjD,GAAIA,GAAaa,OAAQ,CACvBV,EAAML,QAAUK,EAAML,SAAW,CAAA,EAEjC,IAAK,MAAMO,KAAcL,EACvB,IACEG,EAAML,QAAQO,GAAcF,EAAML,QAAQO,IAAe,GACzDF,EAAML,QAAQO,GAAYD,GAAKjB,EAAMiB,EACtC,CAAC,MAAOE,GACP,MAAM,IAAIC,EACR,wCAAwCH,MAAME,IAEjD,CAEJ,MACCH,EAAMhB,MAAQgB,EAAMhB,OAAS,CAAA,EAC7BgB,EAAMhB,MAAMiB,GAAMjB,EAA8BiB,GAElD,OAAOD,GAET,CAAmE,GAQvE,GAJAN,EAAOV,MAAQU,EAAOV,OAAS,CAAA,EAE/BU,EAAOV,MAAQ2B,EAAMC,MAAMlB,EAAOV,MAAOA,EAAM7C,YAAY0E,MAEvDnB,EAAOC,QAAS,CAClB,MAAME,EAAcQ,OAAOS,KAAKpB,EAAOC,SAEvC,IAAK,MAAMO,KAAcL,EACvBH,EAAOC,QAASO,GAAcS,EAAMC,MAClClB,EAAOC,QAASO,GAChBlB,EAAM7C,YAAY0E,KAGvB,CACD,OAAOnB,CACT,CCtJM,MAAOqB,WAAsBC,EACjC,WAAA7E,CAAY8E,GACV7E,MAAM6E,EAAKF,GAAcF,KAC1B,EAaG,MAAOK,WAAqBF,EAChC,WAAA7E,CAAY8E,GACV7E,MAAM6E,EAAKC,GAAaL,KACzB,EAaG,MAAOM,WAAuBH,EAClC,WAAA7E,CAAY8E,GACV7E,MAAM6E,EAAKE,GAAeN,KAC3B,EA2CG,MAAOO,WAA4BJ,EACvC,WAAA7E,CAAY8E,GACV7E,MAAM6E,EAAKG,GAAoBP,KAAM,IACtC,EAGG,MAAOQ,WAAsCC,EACjD,WAAAnF,CAAY8E,EDxFZ,kECyFE7E,MAAMiF,GAA8BR,KAAMI,EAAK,IAChD,EAgCG,MAAOM,WAA4BD,EACvC,WAAAnF,CAAY8E,GACV7E,MAAMmF,GAAoBV,KAAMI,EAAK,IACtC,ECjII,IAAMO,GAAN,cAAmCC,EAgBxC,WAAAtF,CAAYuF,GACVtF,MAAMsF,EACP,YCaaC,KACd,OAAO,SACLC,EACAC,EACAC,GAEA,MAAMC,EAAiBD,EAAWE,MAgClC,OA9BAF,EAAWE,MAAQC,kBAEdC,GAEH,MAAMtE,EAAiBsE,EAAK,GACtBC,EAAWvE,EAAIwE,eAAeC,QAE9BC,QAAgBhG,KACH,gBACjBiG,uBAAkBlD,EAAWzB,GAEzB4E,QAAeF,EAAOG,UAE5B,GAAqB,GAAjBD,EAAO9B,OACT,MAAM,IAAIgC,EAAc,uBAG1B,GAAIF,EAAO9B,OAAS,EAClB,MAAM,IAAIgC,EAAc,6BAA6BF,EAAO9B,QAG9D,GAAI8B,EAAO,GAAG3E,OAASsE,EACrB,MAAM,IAAIQ,EACR,8BAA8Bd,kBAIlC,aAAaE,EAAea,MAAMtG,KAAM4F,EAC1C,EAEOJ,CACT,CACF,CA6EM,SAAUe,GAAY3C,GAC1B,IAAKA,EACH,MAAU4C,MAAM,+BAGlB,MAAMC,EAAcpE,GAAgBO,QAEpC,MAAO,CACLF,EACAgE,KAEA,MAAMC,EACJjE,aAAiB2B,EAAS3B,EAAM7C,YAA8B6C,EAE1DkE,EAAgBjE,GAAS1C,IAAI0G,GAC7BE,EAAYD,GAAUvD,SAASE,aAAe,GAWpD,GATAuD,GAAaL,EAAK,KACXC,GAAa,CAChBnD,YAAasD,EACT,IAAI,IAAIE,IAAI,IAAIF,EAAWjD,KAC3B,CAACA,IAEPZ,WAAY0D,GANdI,CAOGJ,EAAYC,EAASjE,GAEpBgE,EAAW,CACb,MAAMM,EACHJ,GAAUvD,UAAUqD,IAAoBnD,aAAe,GAC1DuD,GAAanE,GAAS8D,IAAIA,EAAKC,GAAY,CACzCnD,YAAayD,EACT,IAAI,IAAID,IAAI,IAAIC,EAAepD,KAC/B,CAACA,IAHPkD,CAIGpE,EAAOgE,GACVO,IAAYvE,EAAOgE,EACpB,CACH,CACF,CDnLEQ,GAAA,CADCC,8BACWjC,GAAAkC,UAAA,UAAA,GAQZF,GAAA,CAFCG,IACAC,8BACyBpC,GAAAkC,UAAA,eAAA,GAdflC,GAAoBgC,GAAA,CAFhC/F,EAAMoG,EAAYC,UAClB9E,sCACYwC,IE+BP,MAAOuC,WAA+BC,EAG1C,WAAA7H,CACE8H,EACAC,EACArE,GAEAzD,MAAM6H,GAEN,IAAK,MAAM/D,KAAcL,GAAe,GACtCgD,GAAY3C,EAAZ2C,CAAwBrB,IAG1BlF,KAAK6H,KAAOC,EAAWC,SAAS7C,GAAsB0C,EAAQI,MAC/D,CAMD,aAAMC,CACJ3G,GAEA,IAAKA,EAAK,MAAM,IAAIwD,GAAoB,uBACxC,MAAMP,KAAEA,EAAI2D,UAAEA,GAAclI,KAAK2H,QACjC,IACE,MAAMQ,QAAuCnI,KAAK6H,KAAKO,KACrD7D,EACAjD,GAEF,OAAOtB,KAAKqI,MAAMF,EAASF,QAC5B,CAAC,MAAOpE,GACP,GAAIA,aAAauC,EAAe,CAC9B,QAAyB,IAAd8B,EACT,MAAM,IAAIxD,EACR,6DAEJ,IACE,OAAO1E,KAAKqI,MAAMH,EACnB,CAAC,MAAOrE,GACP,MAAM,IAAIa,EACR,8CAA8CwD,MAAcrE,IAE/D,CACF,CACD,MAAM,IAAIa,EACR,iDAAiDH,MAASV,IAE7D,CACF,CAQO,KAAAwE,CAAM3C,GACZ,OAAOgC,EAASY,WAAWtI,KAAK2H,QAAQY,KAAM7C,EAC/C,CAUO,eAAM8C,CACZP,EACAQ,EACAnH,GAEA,IAAKA,EAAK,MAAM,IAAIwD,GAAoB,uBACxC,MAAMyD,KAAEA,EAAIG,YAAEA,EAAWnE,KAAEA,GAASvE,KAAK2H,QACzC,IAAIgB,EACJ,MAAMC,EAAgBH,GAASC,EAC/B,GAAIE,EAAgBF,IAAgB,EAClC,MAAM,IAAIhE,EACR,iEAAiEgE,GAErE,OAAQH,GACN,IAAK,SACHI,EAAQ3I,KAAKqI,MAAMJ,GAAsBW,EACzC,MACF,IAAK,SACHD,EAAQ3I,KAAKqI,MAAMJ,GAAsBY,OAAOD,GAChD,MACF,QACE,MAAM,IAAIlE,EAAc,uBAE5B,IAAIU,EACJ,IACEA,QAAYpF,KAAK6H,KAAKiB,OACpB,IAAI5D,GAAqB,CAAE7D,GAAIkD,EAAM0D,QAASU,IAC9CrH,EAEH,CAAC,MAAOuC,GACP,KAAMA,aAAauC,GAAgB,MAAMvC,EACzCuB,QAAYpF,KAAK6H,KAAKkB,OACpB,IAAI7D,GAAqB,CAAE7D,GAAIkD,EAAM0D,QAASU,IAC9CrH,EAEH,CAED,OAAO8D,EAAI6C,OACZ,CAQD,UAAMU,CAAKrH,GACT,IAAKA,EAAK,MAAM,IAAIwD,GAAoB,uBACxC,MAAMmD,QAAgBjI,KAAKiI,QAAQ3G,GACnC,OAAOtB,KAAKwI,UAAUP,OAASlF,EAAWzB,EAC3C,CAED,WAAM0H,CACJP,EACAnH,GAEA,IAAKA,EAAK,MAAM,IAAIwD,GAAoB,uBACxC,MAAMmD,QAAiBjI,KAAKiI,QAAQ3G,GAC9BoH,EAAc1I,KAAKqI,MAAMrI,KAAK2H,QAAQe,aACtCC,QAAuC3I,KAAKwI,UAChDP,EACCjI,KAAKqI,MAAMI,GAAoBC,EAChCpH,GAEI0H,EAAsC,GAC5C,IAAK,IAAIC,EAAY,EAAQR,GAALQ,EAAYA,IAClCD,EAAMnH,KAAKoG,EAAUS,EAAe1I,KAAKqI,MAAMY,IAEjD,GAAID,EAAMA,EAAM5E,OAAS,KAAOuE,EAC9B,MAAM,IAAIjE,EAAc,2BAC1B,OAAOsE,CACR,ECvFG,MAAOE,WAAkDpB,EAO7D,WAAAjI,CACE+H,EACAuB,EACUC,GAEVtJ,MAAM8H,EAASuB,GAFLnJ,KAAaoJ,cAAbA,CAGX,CAQM,MAAAC,CAAO/H,GACZ,OAAOgI,EAAQC,IAAIL,GAA0B,CAAE,EAAE5H,EAClD,CASQ,YAAMyH,CAAOrG,KAAakD,GACjC,MAAMtE,EAAMsE,EAAKA,EAAKxB,OAAS,GACzBlD,EAAMlB,KAAKqJ,OAAO/H,GAAKiI,IAAIvJ,KAAK+I,QACtC7H,EAAIsI,KAAK,oBAAoBrH,KAAKC,UAAUM,IAE5C,IAQI+G,GARAC,OAAEA,EAAMrI,GAAEA,EAAE4F,UAAEA,GAAcjH,KAAK4H,QAAQ+B,QAC3CjH,EACA1C,KAAKmH,GACLnH,KAAK4J,aACFhE,GAOL,OALA1E,EAAIsI,KAAK,mBAAmBrH,KAAKC,UAAUM,IAC3CgH,QAAe1J,KAAK4H,QAAQmB,OAAO/I,KAAK4J,UAAWvI,EAAIqI,KAAW9D,GAE9DA,EAAKxB,SAAQqF,EAAI7D,EAAKA,EAAKxB,OAAS,IACxClD,EAAIsI,KAAK,oBAAoBrH,KAAKC,UAAUM,IACrC1C,KAAK4H,QAAQiC,OAClBH,EACA1J,KAAK8J,MACL9J,KAAKmH,GACL9F,EACAoI,GAAKA,EAAExJ,IAAI,wBAA0BgH,OAAYlE,EAEpD,CAEQ,UAAMqF,CACb/G,KACGuE,GAEH,MAAMmE,QAAU/J,KAAK4H,QAAQQ,KAC3BpI,KAAK4J,UACLvI,EACA,IAAIrB,KAAK8J,SACNlE,GAEL,OAAO5F,KAAK4H,QAAQiC,OAAUE,EAAG/J,KAAK8J,MAAO9J,KAAKmH,GAAI9F,EACvD,CASQ,YAAM,CAAOA,KAAeuE,GACnC,MAAMmE,QAAU/J,KAAK4H,QAAQoC,OAC3BhK,KAAK4J,UACLvI,EACA,IAAIrB,KAAK8J,SACNlE,GAEL,OAAO5F,KAAK4H,QAAQiC,OAAOE,EAAG/J,KAAK8J,MAAO9J,KAAKmH,GAAI9F,EACpD,CASQ,YAAMyH,CAAOpG,KAAakD,GACjC,MAAMtE,EAAMsE,EAAKA,EAAKxB,OAAS,GACzBlD,EAAMlB,KAAKqJ,OAAO/H,GAAKiI,IAAIvJ,KAAK8I,QACtC5H,EAAIsI,KAAK,oBAAoBrH,KAAKC,UAAUM,IAE5C,IAQI+G,GARAC,OAAEA,EAAMrI,GAAEA,EAAE4F,UAAEA,GAAcjH,KAAK4H,QAAQ+B,QAC3CjH,EACA1C,KAAKmH,GACLnH,KAAK4J,aACFhE,GAOL,OALA1E,EAAIsI,KAAK,mBAAmBrH,KAAKC,UAAUM,IAC3CgH,QAAe1J,KAAK4H,QAAQkB,OAAO9I,KAAK4J,UAAWvI,EAAIqI,KAAW9D,GAE9DA,EAAKxB,SAAQqF,EAAI7D,EAAKA,EAAKxB,OAAS,IACxClD,EAAIsI,KAAK,oBAAoBrH,KAAKC,UAAUM,IACrC1C,KAAK4H,QAAQiC,OAClBH,EACA1J,KAAK8J,MACL9J,KAAKmH,GACL9F,EACAoI,GAAKA,EAAExJ,IAAI,wBAA0BgH,OAAYlE,EAEpD,CAOQ,eAAAxC,GACP,OAAO,IAAID,EACZ,CASQ,eAAM2J,CAAUC,KAAgBtE,GACvC,IAAKsE,EAAO9F,OAAQ,OAAO8F,EAC3B,MAAMC,EAAWD,EAAOE,IAAKL,GAC3B/J,KAAK4H,QAAQ+B,QAAQI,EAAG/J,KAAKmH,GAAInH,KAAK4J,aAAchE,IAEhDyE,EAAMF,EAASC,IAAKE,GAAMA,EAAEjJ,IAClC,IAAIkJ,EAAUJ,EAASC,IAAKE,GAAMA,EAAEZ,QACpC,MAAMc,EAAaL,EAASC,IAAKE,GAAMA,EAAErD,WAAWwD,OAAQ5G,KAAQA,GACpE,IAAI4F,EAQJ,OAPI7D,EAAKxB,SAAQqF,EAAI7D,EAAKA,EAAKxB,OAAS,IACxCmG,QAAgBvK,KAAK4H,QAAQqC,UAC3BjK,KAAK4J,UACLS,EACAE,KACG3E,GAEE2E,EAAQH,IAAI,CAACM,EAAGzB,IACrBjJ,KAAK4H,QAAQiC,OACXa,EACA1K,KAAK8J,MACL9J,KAAKmH,GACLkD,EAAIpB,GACJQ,GAAKA,EAAExJ,IAAI,wBAA0BuK,OAAazH,GAGvD,CASQ,eAAM4H,CAAUT,KAAgBtE,GACvC,IAAKsE,EAAO9F,OAAQ,OAAO8F,EAC3B,MAAMK,EAAUL,EAAOE,IAAKL,GAC1B/J,KAAK4H,QAAQ+B,QAAQI,EAAG/J,KAAKmH,GAAInH,KAAK4J,aAAchE,IAEhD4E,EAAaD,EAAQH,IAAKE,GAAMA,EAAErD,WAAWwD,OAAQ5G,KAAQA,GACnE,IAAI4F,EASJ,OARI7D,EAAKxB,SAAQqF,EAAI7D,EAAKA,EAAKxB,OAAS,WAElBpE,KAAK4H,QAAQ+C,UACjC3K,KAAK4J,UACLW,EAAQH,IAAKM,GAAMA,EAAErJ,IACrBkJ,EAAQH,IAAKM,GAAMA,EAAEhB,WAClB9D,IAEUwE,IAAI,CAACQ,EAAG3B,IACrBjJ,KAAK4H,QAAQiC,OACXe,EACA5K,KAAK8J,MACL9J,KAAKmH,GACLoD,EAAQtB,GAAG5H,GACXoI,GAAKA,EAAExJ,IAAI,wBAA0BuK,OAAazH,GAGvD,CAUD,SAAM8H,CAAIC,EAAsBC,KAAsBnF,GACpD,MAAMtE,EAAMsE,EAAKoF,MACXC,QAAwBC,EAAItF,KAChC,QACA5F,KAAK8J,MACL,CAACxI,GACDtB,KAAc,QACd,CAAE,GAGJ,OAAOA,KAAK4H,QAAQiD,IAClBC,EACAC,EACA,IAAI/K,KAAK8J,SACNmB,EAAgBrF,KAEtB,CAYQ,qBAAM3E,CACbE,EACAC,EACAC,EACAC,KACGsE,GAEH,IAAK5F,KAAKoJ,gBAAwD,IAAvCpJ,KAAKoJ,cAAc3H,QAAQL,GACpD,aAAatB,MAAMmB,gBAAgBE,EAAOC,EAAOC,EAAIC,KAAQsE,EAChE,CAED,uBAAMK,CACJkF,EACA7J,GAEA,IAAI8J,EAYJ,OAXI9J,aAAe3B,GACjByL,EAAYC,QAAU/J,EAEtB8J,QAAoBE,EAAI1F,KACtBnF,EAAcC,OACdV,KAAK8J,MACL,CAACxI,GACDtB,KAAK4H,QACL5H,KAAKuL,YAAc,CAAA,GAGlBJ,EAMEnL,KAAK4H,QACT4D,UAAaJ,EAAYC,SACzBrF,OAAOmF,GACPjJ,KAAKlC,KAAK8J,OARJ9J,KAAK4H,QACT4D,UAAaJ,EAAYC,SACzBrF,SACA9D,KAAKlC,KAAK8J,MAMhB,CAUkB,qBAAM2B,CAAgBvB,KAAgBtE,GACvD,MAAMtE,EAAMsE,EAAKA,EAAKxB,OAAS,GAEzBgH,QAAoBE,EAAI1F,KAC5BnF,EAAcC,OACdV,KAAK8J,MACLlE,EACA5F,KAAK4H,QACL5H,KAAKuL,YAAc,CAAE,GAEvB,IAAKrB,EAAO9F,OAAQ,MAAO,CAAC8F,KAAWkB,EAAYxF,MACnD,MAAM8F,EAAO5D,EAAW6D,mBAAmBzB,EAAO,IAClD,IAAIG,EAAgD,GAChDqB,EAAKnD,MACFmD,EAAKnH,OAAMmH,EAAKnH,KAAOkD,GAAuBN,GAAG+C,EAAO,KAC7DG,cACSrK,KAAK4H,QAAQF,SAASgE,IAC7B1C,MAAMkB,EAAO9F,OAAQ9C,IAEvB+I,EAAMH,EAAOE,IAAI,CAACL,EAAGd,KACnB,QAA0B,IAAfc,EAAE/J,KAAKmH,IAChB,MAAM,IAAIzC,EACR,oDAAoDuE,GAExD,OAAOc,EAAE/J,KAAKmH,MAIlB+C,QAAe0B,QAAQC,IACrB3B,EAAOE,IAAIzE,MAAOoE,EAAGd,KACnBc,EAAI,IAAI/J,KAAK8J,MAAMC,GACf2B,EAAKnD,OAAMwB,EAAE/J,KAAKmH,IAAMkD,EAAIpB,UAC1B6C,EACJ9L,KACAoL,EAAYC,QACZtB,EACAtJ,EAAcC,OACdD,EAAcsL,IAEThC,KAIX,MAAMiC,EACJZ,EAAYC,QAAQpL,IAAI,gCAAkC,GAMtDgM,SAJeL,QAAQC,IAC3B3B,EAAOE,IAAKL,GAAM6B,QAAQM,QAAQnC,EAAEoC,aAAaH,OAGtBvI,OAAO,CAACC,EAA2BG,EAAGoF,KAC7DpF,IACFH,EACmB,iBAAVA,EACHA,EAAQ,QAAQuF,MAAMpF,EAAEuI,aACxB,MAAMnD,MAAMpF,EAAEuI,cACf1I,QACNX,GAEH,GAAIkJ,EAAe,MAAM,IAAII,EAAgBJ,GAC7C,MAAO,CAAC/B,KAAWkB,EAAYxF,KAChC,CAEkB,kBAAM0G,CACvB5J,KACGkD,GAEH,MAAMxC,QAAetD,MAAMwM,aAAa5J,KAAUkD,GAC5CvE,EAAK+B,EAAO,GAAGpD,KAAKmH,IAC1B,IAEE,SADkBnH,KAAKoI,KAAY/G,EAAPkL,MAAe3G,GAEzC,MAAM,IAAI4G,EACR,mDAAmDnL,mBAGxD,CAAC,MAAOwC,GACP,GAAwB,MAAnBA,EAAU4I,KAKb,MAAM5I,EAJN7D,KAAKqJ,OAAOzD,EAAKA,EAAKxB,OAAS,IAAIoF,KACjC,wBAAwBnI,uCAK7B,CACD,OAAO+B,CACR,EC9ZG,MAAOsJ,WAA4CC,EAIvD,WAAA9M,CACE+H,EACiBtG,GAEjBxB,MAAM8H,GAFW5H,KAAGsB,IAAHA,CAGlB,CAEQ,SAAMuJ,CAAOC,GACpB,MAAM8B,QAAuB5M,KAAK4H,QAAQiD,IAAIC,GAAU,EAAM9K,KAAKsB,KAE7DuL,EAASxI,EAAM8C,GAAGnH,KAAK8M,cACvBvE,EAAO5F,GAAS1C,IACpBD,KAAK8M,aACLnK,GAAS8D,IAAIsG,EAAOC,GAAIH,KACvBtE,KAEH,OAAKvI,KAAKiN,eAEHL,EADEA,EAAQxC,IAAKM,GAAM1K,KAAKkN,cAAcxC,EAAGmC,EAAQtE,GAE3D,CAEQ,KAAAjE,GACP,MAAM6I,EAA2B,CAAA,EACjCA,EAAU5F,EAAY6F,OAAS,GAC/BD,EAAU5F,EAAY6F,OAAStF,EAAW3G,MAAMnB,KAAK8M,cACrD,MAAMO,EAAoB,CAAElC,SAAUgC,GAGtC,GAFInN,KAAKiN,iBAAgBI,EAAMC,OAAStN,KAAKiN,gBAEzCjN,KAAKuN,eAAgB,CACvB,MAAMC,EAA2BxN,KAAKyN,eACpCC,EAAUC,IACR3N,KAAKuN,eACLG,EAAUhH,UAAaa,EAAY6F,OAAkBQ,GACnDP,EAAMlC,SAAS5D,EAAY6F,UAG/BjC,SACI0C,EAAe9J,OAAOS,KAAKgJ,GACjC,GAC0B,IAAxBK,EAAazJ,SACqD,IAAlEL,OAAO+J,OAAOC,GAAsBtM,QAAQoM,EAAa,IAEzD,OAAQA,EAAa,IACnB,KAAKE,EAAqBC,IACxBR,EAAUO,EAAqBC,KAAO,IACjCjK,OAAO+J,OACRN,EAAUO,EAAqBC,MAC/BvK,OAAO,CAACC,EAAwBO,KAChC,MAAMO,EAAOT,OAAOS,KAAKP,GACzB,GAAoB,IAAhBO,EAAKJ,OACP,MAAUoC,MACR,kDAEJ,MAAM7C,EAAIa,EAAK,GAIf,OAHIb,IAAMoK,EAAqBC,IAC7BtK,EAAM7B,QAASoC,EAAIN,IAChBD,EAAM7B,KAAKoC,GACTP,GACN,KAEL2J,EAAMlC,SAAWqC,EACjB,MACF,KAAKO,EAAqBE,GAAI,CAC5B,MAAMC,EAAsB,CAAA,EAC5BA,EAAEH,EAAqBC,KAAO,CAC5BR,KACGzJ,OAAOC,QAAQqJ,EAAMlC,UAAUf,IAAI,EAAE3D,EAAKxC,MAC3C,MAAMb,EAA2B,CAAA,EAEjC,OADAA,EAAOqD,GAAOxC,EACPb,KAGXiK,EAAMlC,SAAW+C,EACjB,KACD,CACD,QACE,MAAU1H,MAAM,kCAGpBzC,OAAOC,QAAQwJ,GAAWW,QAAQ,EAAE1H,EAAKxC,MACnCoJ,EAAMlC,SAAS1E,GAInB4G,EAAMlC,SAAS1E,GAAOxC,GAG3B,CAED,GAAIjE,KAAKoO,gBAAiB,CACxBf,EAAMgB,KAAOhB,EAAMgB,MAAQ,GAC3BhB,EAAMlC,SAAWkC,EAAMlC,UAAa,CAAA,EACpC,MAAOA,EAAUzF,GAAS1F,KAAKoO,gBAIzBE,EAAW,CAAA,EACjBA,EAAInD,GAAYzF,EACf2H,EAAMgB,KAAexM,KAAKyM,GACtBjB,EAAMlC,SAASA,KAClBkC,EAAMlC,SAASA,GAAY,GAC1BkC,EAAMlC,SAASA,GAA4BoD,EAAgBC,QAC1D,KAEL,CAMD,OAJIxO,KAAKyO,gBAAepB,EAAMqB,MAAQ1O,KAAKyO,eAEvCzO,KAAK2O,iBAAgBtB,EAAMuB,KAAO5O,KAAK2O,gBAEpCtB,CACR,EC1JG,MAAOwB,WAEHC,EACR,WAAAjP,GACEC,OACD,CAGQ,WAAAiP,CAAYC,EAAapF,GAyBhC,OAxBwBzH,KAAKkG,MAAM2G,EAyBpC,CAEQ,SAAAC,CAAUvM,GAKjB,OAHkBwM,QAAQ,+BAGnB9M,CADmB8M,QAAQ,sBACjBC,CAAkBnP,KAAKoP,aAAa1M,IACtD,CAEQ,YAAA0M,CAAa1M,GAEpB,OADyCqB,OAAOsL,OAAO,CAAE,EAAE3M,EAE5D,ECeIiD,eAAe2J,GAQpBjE,EACAkE,EACA9I,EACA/D,GAEA,MAAM8M,EAAqB9M,EAAM+D,GACjC,IAAK+I,EAAe,OAEpB,GAA6B,iBAAlBA,EAA4B,CACrC,MAAMC,EAAYC,EAChBhN,EACA+D,EACAzG,KAAK4H,QAAQI,OAETI,QAAaqH,EAAUrH,KAAKoH,EAAenE,GAGjD,aAFMsE,EAAsBtE,EAAS3I,EAAO+D,EAAK+I,EAAepH,QAC/D1F,EAAc+D,GAAO+I,EAEvB,CAEDD,EAAKzF,MACmB,iBAAfyF,EAAKzF,MAAqByF,EAAKzF,MAASyF,EAAKzF,QAAgBvF,KAEtE,MAAM1E,EAAcwE,EAAMpE,IAAIsP,EAAKzF,OACnC,IAAKjK,EACH,MAAM,IAAI6E,EAAc,wBAAwB6K,EAAKzF,OACvD,MAAMjC,EAAkBC,EAAWC,SAASlI,EAAaG,KAAK4H,QAAQI,OAChE4H,QAAgB/H,EAAKkB,OAAOyG,EAAenE,GAC3ClE,EAAK9C,EAAM8C,GAAGyI,SACdD,EAAsBtE,EAAS3I,EAAO+D,EAAKmJ,EAAQzI,GAAKyI,GAC7DlN,EAAc+D,GAAOmJ,EAAQzI,EAChC,CAiDOxB,eAAekK,GAQpBxE,EACAkE,EACA9I,EACA/D,GAEA,MAAM8M,EAAqB9M,EAAM+D,GACjC,IAAK+I,EAAe,OACpB,GAAID,EAAKO,QAAQhH,SAAWiH,EAAQC,QAAS,OAE7C,GAA6B,iBAAlBR,EAA4B,CACrC,MAAMC,EAAYC,EAChBhN,EACA+D,EACAzG,KAAK4H,QAAQI,OAETI,QAAaqH,EAAUrH,KAAKoH,EAAenE,GAGjD,aAFMsE,EAAsBtE,EAAS3I,EAAO+D,EAAK+I,EAAepH,QAC/D1F,EAAc+D,GAAO+I,EAEvB,CAED,MAAMS,QAAqBC,EACzBxN,EAAM+D,GACN4E,EACArL,KAAK4H,QAAQI,OAETb,EAAK9C,EAAM8C,GAAG8I,SACdN,EACJtE,EACA3I,EACA+D,EACAwJ,EAAQ9I,GACR8I,GAEFvN,EAAM+D,GAAOwJ,EAAQ9I,EACvB,CA2COxB,eAAewK,GAQpB9E,EACAkE,EACA9I,EACA/D,GAEA,MAAM8M,EAAqB9M,EAAM+D,GACjC,IAAK+I,EAAe,OACpB,GAAID,EAAKO,QAAQhH,SAAWiH,EAAQC,QAAS,OAC7C,MAAMP,EAAqBC,EACzBhN,EACA+D,EACAzG,KAAK4H,QAAQI,OAEf,IAAIoI,EAIFA,EAHIZ,aAAyBnL,QAGboL,EAAUzF,OACvBtH,EAAM+D,GAAWgJ,EAAUtI,IAC5BkE,SAJcoE,EAAUzF,OAAOtH,EAAM+D,GAAgB4E,SAMnDsE,EACJtE,EACA3I,EACA+D,EACA2J,EAAQX,EAAUtI,IAClBiJ,EAEJ,CAwDOzK,eAAe0K,GAQpBhF,EACAkE,EACA9I,EACA/D,GAEA,MAAM4N,EAAsB5N,EAAM+D,GAClC,IAAK6J,IAAmBA,EAAelM,OAAQ,OAC/C,MAAMmM,SAAmBD,EAAe,GACxC,IAAKA,EAAeE,MAAOC,UAAqBA,IAASF,GACvD,MAAM,IAAI7L,EACR,+CAA+C+B,+BAEnD,MAAMiK,EAAe,IAAI3J,IAAI,IAAIuJ,IACjC,GAAkB,WAAdC,EAAwB,CAC1B,MAAM1I,EAAO6H,EAA2BhN,EAAO+D,EAAKzG,KAAK4H,QAAQI,OACjE,IAAK,MAAM3G,KAAMqP,EAAc,CAC7B,MAAMtI,QAAaP,EAAKO,KAAK/G,EAAIgK,SAC3BsE,EAAsBtE,EAAS3I,EAAO+D,EAAKpF,EAAI+G,EACtD,CAED,YADC1F,EAAc+D,GAAO,IAAIiK,GAE3B,CAED,MAAMC,EAAStM,EAAM8C,GAAGmJ,EAAe,IAEjClN,EAAsB,IAAI2D,IAEhC,IAAK,MAAMgD,KAAKuG,EAAgB,CAC9B,MAAM5G,QAAewG,EAAenG,EAAGsB,EAASrL,KAAK4H,QAAQI,aACvD2H,EAAsBtE,EAAS3I,EAAO+D,EAAKiD,EAAOiH,GAASjH,GACjEtG,EAAOwN,IAAIlH,EAAOiH,GACnB,CAEAjO,EAAc+D,GAAO,IAAIrD,EAC5B,CAkDOuC,eAAekL,GAQpBxF,EACAkE,EACA9I,EACA/D,GAEA,GAAI6M,EAAKO,QAAQ9F,SAAW+F,EAAQC,QAAS,OAC7C,MAAMlC,EAASpL,EAAM+D,GACrB,IAAKqH,IAAWA,EAAO1J,OAAQ,OAC/B,MAAMmM,SAAmBzC,EAAO,GAEhC,IADuBA,EAAO0C,MAAOC,UAAqBA,IAASF,GAEjE,MAAM,IAAI7L,EACR,+CAA+C+B,+BAEnD,MAAMqK,EAA+B,WAAdP,EACjB1I,EAAOiJ,EACThJ,EAAWC,SAAS+F,EAAO,GAAI9N,KAAK4H,QAAQI,OAC5C0H,EAA2BhN,EAAO+D,EAAKzG,KAAK4H,QAAQI,OAElD0I,EAAe,IAAI3J,IAAI,IACvB+J,EACAhD,EAAO1D,IAAK2G,GAA2BA,EAAElJ,EAAKV,KAC9C2G,IAGN,IAAK,MAAMzM,KAAMqP,EAAa5C,SAAU,CACtC,MAAMsC,QAAgBvI,EAAKmC,OAAO3I,EAAIgK,SAChCsE,EAAsBtE,EAAS3I,EAAO+D,EAAKpF,EAAI+O,EACtD,CACA1N,EAAc+D,GAAO,IAAIiK,EAC5B,CAwDO/K,eAAeqL,GAQpB3F,EACAkE,EACA9I,EACA/D,GAEA,IAAK6M,EAAKyB,SAAU,OACpB,MAAMC,EAAcvO,EAAM+D,GACpByK,EAAQC,MAAMC,QAAQH,GAC5B,QAAsB,IAAXA,GAA2BC,GAA2B,IAAlBD,EAAO7M,OAAe,OA8BrE,MAAMiN,OA5BN1L,OACE8D,EACA/G,EACA4O,EACAC,EACAvJ,KAEA,IAAIwJ,EACAvN,EACJ,MAAM2I,EAAe,GACrB,IAAK,MAAM6E,KAAeF,EAAe,CACvCC,EAAWE,EAAehP,EAAM7C,YAAY0E,KAAM+M,EAAUG,GAC5D,IACExN,QAAYwF,EAAExJ,IAAIuR,EAEnB,CAAC,MAAO3N,GACP,MAAMgE,EAAO6H,EACXhN,EACA4O,EACAtJ,GAEF,IAAKH,EAAM,MAAM,IAAInD,EAAc,uBACnCT,QAAY4D,EAAKO,KAAKqJ,EAAapG,EACpC,CACDuB,EAAQ/K,KAAKoC,EACd,CACD,OAAO2I,CACR,EACiB+E,CAChBtG,EACA3I,EACA+D,EACAyK,EAAQD,EAAS,CAACA,GAClBjR,KAAK4H,QAAQI,OAEdtF,EAAc+D,GAAOyK,EAAQG,EAAMA,EAAI,EAC1C,CCzdO1L,eAAeiM,GAMpBvG,EACAkE,EACA9I,EACA/D,GAEA,IACE,MAAMmP,EAAOxG,EAAQpL,IAAI,kBACzByC,EAAM+D,GAAOoL,EAAK9L,OAEnB,CAAC,MAAOlC,GACP,MAAM,IAAIiO,EACR,iEAEH,CACH,CA8BOnM,eAAeoM,GAOpB1G,EACAkE,EACA9I,EACA/D,GAEA,IAAK6M,EAAKhH,MAAQ7F,EAAM+D,GACtB,OAgBF,IAAI0B,EADCoH,EAAKhL,OAAMgL,EAAKhL,KAAOyN,GAAqBtP,EAAO,OAExD,IACEyF,QAAkBnI,KAAK4H,QAAQF,SAAS6H,EACzC,CAAC,MAAO1L,GACP,MAAM,IAAIa,EACR,kCAAkC6K,EAAKhL,SAASV,IAEnD,CAED,MAAM8E,QAAaR,EAASQ,KAAK0C,GAjB/BtH,OAAOkO,eAkBUvP,EAAO+D,EAlBmB,CACzCyL,YAAY,EACZC,UAAU,EACVC,cAAc,EACd1M,MAcqCiD,GAC3C,CAuCM,MAAO0J,WAA8BC,EAMtB,SAAAC,GACjB,MAAM,IAAIT,EAAiB,8CAC5B,QAIc9R,KAAAwS,YAAc,IAAIC,YAAY,OAAQ,QAE3BzS,KAAA0S,WAAa,IAAI7D,EAAgC,CAQpE,MAAAxF,CAAO/H,GACZ,OAAOgI,EAAQC,IAAI8I,GAAuB,CAAE,EAAE/Q,EAC/C,CAcQ,UAAAqR,GASP,OAAOzJ,EACR,CAQD,WAAArJ,CAAY+S,EAAa5K,GACvBlI,MAAM8S,EAAOrQ,GAAeyF,GA3BrBhI,KAAOJ,QAAGD,EA4BlB,CAEQ,IAAIkT,KAAyBjN,GACpC,OAAO9F,MAAMyJ,IAAIsJ,KAAWjN,EAC7B,CAYQ,YAAMmD,CACba,EACAvI,EACAqB,KACGkD,GAEH,MAAM7F,KAAEA,EAAIM,OAAEA,GAAWuF,EAAKoF,MACxB9J,EAAMb,EAAOkJ,IAAIvJ,KAAK+I,QAE5B,IACE7H,EAAIsI,KAAK,mBAAmBI,mBAA2BvI,KACvDqB,QAAc1C,KAAK8S,SAAS/S,EAAMsB,EAAG+K,WAAY1J,EAClD,CAAC,MAAOmB,GACP,MAAM7D,KAAK+S,WAAWlP,EACvB,CAED,OAAOnB,CACR,CAUQ,UAAM0F,CACbwB,EACAvI,KACGuE,GAEH,MAAM7F,KAAEA,EAAIM,OAAEA,GAAWuF,EAAKoF,MACxB9J,EAAMb,EAAOkJ,IAAIvJ,KAAKoI,MAE5B,IAAI1F,EACJ,IACE,MAAMkK,QAAgB5M,KAAKgT,UAAUjT,EAAM6J,EAAWvI,EAAG+K,YAEzD,GAAqB,EAAjBQ,EAAQxI,OAEV,MADAlD,EAAIQ,MAAM,0BAA0BL,QAASuI,WACvC,IAAIxD,EACR,0BAA0B/E,QAASuI,WAEX,EAAjBgD,EAAQxI,QACjBlD,EAAIQ,MAAM,0BAA0BL,QAASuI,WAC7ClH,EAAQkK,EAAQ5B,OAEhBtI,EAAQ1C,KAAKiT,YAAYrG,EAE5B,CAAC,MAAO/I,GACP,MAAM7D,KAAK+S,WAAWlP,EACvB,CAED,OAAOnB,CACR,CAYQ,YAAMoG,CACbc,EACAvI,EACAqB,KACGkD,GAEH,MAAM7F,KAAEA,EAAIM,OAAEA,GAAWuF,EAAKoF,MACxB9J,EAAMb,EAAOkJ,IAAIvJ,KAAK8I,QAE5B,IACE5H,EAAIsI,KAAK,qBAAqBI,mBAA2BvI,KACzDqB,QAAc1C,KAAK8S,SAAS/S,EAAMsB,EAAG+K,WAAY1J,EAClD,CAAC,MAAOmB,GACP,MAAM7D,KAAK+S,WAAWlP,EACvB,CAED,OAAOnB,CACR,CAUD,YAAM,CACJkH,EACAvI,KACGuE,GAEH,MAAMtE,EAAMsE,EAAKoF,OACXjL,KAAEA,EAAIM,OAAEA,GAAWiB,EACnBJ,EAAMb,EAAOkJ,IAAIvJ,KAAKgK,QAI5B,IAAItH,EAFJkD,EAAK/D,KAAKP,GAGV,IACEoB,QAAc1C,KAAKoI,KAAKwB,EAAWvI,KAAOuE,GAC1C1E,EAAIgS,QAAQ,0BAA0B7R,UAAWuI,WACjD5J,KAAKmT,YAAYpT,EAAM6J,EAAWvI,EAAG+K,WACtC,CAAC,MAAOvI,GACP,MAAM7D,KAAK+S,WAAWlP,EACvB,CAED,OAAOnB,CACR,CAES,iBAAMyQ,CACdpT,EACA6J,EACAvI,KAEGuE,GAEH,MAAMwN,EAAcrT,EAAKsT,mBAAmBzJ,EAAW,CAAQvI,EAAPkL,WAClDxM,EAAKoT,YAAYC,EACxB,CAES,cAAMN,CACd/S,EACAsB,EACAqB,KAEGkD,GAEH,IAAI2J,EAEJ,IACEA,EAAOtN,OAAOC,KACZmQ,GAAsBK,WAAWzD,UAAUvM,GAE9C,CAAC,MAAOmB,GACP,MAAM,IAAIC,EACR,sCAAsCzC,MAAOwC,IAEhD,CAGD,aAFM9D,EAAK+S,SAASzR,EAAG+K,WAAYmD,GAE5B7M,CACR,CAES,eAAMsQ,CACdjT,EACA6J,EACAvI,KAEGuE,GAEH,MAAMwN,EAAcrT,EAAKsT,mBAAmBzJ,EAAW,CAAQvI,EAAPkL,KAClDK,EAAiB,GAEvB,IAAIyE,QAA0CtR,EAAKuT,SAASF,GAE5D,GAAuB,KAAnB/B,EAAIjF,WACN,MAAM,IAAIhG,EAAc,kBAAkB/E,eAE5C,IACEgQ,EAAMgB,GAAsBK,WAAW3D,YACrCsC,EAAIjF,WAGP,CAAC,MAAOvI,GACP,MAAM,IAAIC,EAAmB,2BAA2BD,EACzD,CAID,OAFA+I,EAAQ/K,KAAKwP,GAENzE,CACR,CAES,iBAAM2G,CACdxT,EACA+K,KAEGlF,GAEH,aAAc7F,EAAKyT,eACjBrR,KAAKC,UAAU0I,GAElB,CAES,0BAAM2I,CACd1T,EACA+K,EACA4D,EAAgB,IAChBE,KAEGhJ,GAEH,aAAc7F,EAAK2T,6BACjBvR,KAAKC,UAAU0I,GACf4D,EACAE,GAAMxC,WAET,CAES,WAAA6G,CAAYrG,GACpB,MAAM+G,EAAWjR,GACfqB,OAAOC,QAAQtB,GAAOe,OAAO,CAACC,GAA6B+C,EAAKxC,WAC3C,IAARA,IAAqBP,EAAM+C,GAAOxC,GACtCP,GACN,CAAE,GAEP,IAAIkQ,EAAkChH,EAAQ5B,MAE9C,IAAK,MAAMqG,KAAOzE,EAChBgH,EAAa7P,OAAOsL,OAAO,GAAIsE,EAAQC,GAAaD,EAAQtC,IAG9D,OAAOuC,CACR,CAQS,MAAAC,CAAOC,GACf,OAAOzB,GAAsBG,YAAYqB,OAAOC,EACjD,CAYkB,WAAMC,CACvBC,EACAtR,EACAqR,EACAzS,KACGsE,GAEH,OAAO7B,OAAOsL,aAAavP,MAAMiU,MAAMC,EAAWtR,EAAOqR,KAAUnO,GAAO,CACxE7F,KAAMuB,EAAIvB,KACVK,SACGkB,EAAYwE,gBAAmBxE,EAA8BlB,SAChEC,OAASiB,EAA8BjB,QAAUL,KAAKqJ,OAAO/H,IAEhE,CAUS,KAAAgG,CAAS4C,GACjB,OAAO0B,QAAQM,aAAQnJ,EACxB,CA2BS,oBAAMkR,CACd/S,EACAgT,EACAC,GAAY,GAEZ,MAAMC,EAAa,GACnB,IAAI/C,QAA2C6C,EAASvL,OACxD,MAAQ0I,EAAIgD,MAAM,CAChB,GAAIhD,EAAI3L,OAAS2L,EAAI3L,MAAMA,MAAM0G,WAAY,CAC3C,IAAIkI,EAAe,CAAA,EAEnB,GADApT,EAAIQ,MAAM2P,EAAI3L,MAAMA,MAAM0G,SAAS,SAC/B+H,EAAsC,CACxCG,EAAQC,KAAOlD,EAAI3L,MAAM8O,KACzBF,EAAQG,UAAYpD,EAAI3L,MAAMxF,UAC9B,IACEoU,EAAQI,MAAQvS,KAAKkG,MAAMgJ,EAAI3L,MAAMA,MAAM0G,SAAS,QACrD,CAAC,MAAOuI,GACPzT,EAAI0T,MAAMD,GACVL,EAAQI,MAAQrD,EAAI3L,MAAMA,MAAM0G,SAAS,OAC1C,CACF,MACC,IACEkI,EAAUnS,KAAKkG,MAAMgJ,EAAI3L,MAAMA,MAAM0G,SAAS,QAC/C,CAAC,MAAOuI,GACPzT,EAAI0T,MAAMD,GACVL,EAAUjD,EAAI3L,MAAMA,MAAM0G,SAAS,OACpC,CAEHgI,EAAWvS,KAAKyS,EACjB,CACDjD,QAAY6C,EAASvL,MACtB,CAGD,OAFAzH,EAAIQ,MAAM,0BAA0B0S,EAAWhQ,kBAC/C8P,EAASW,QACFT,CACR,CA8BD,SAAMvJ,CACJC,EACAC,KACGnF,GAEH,MAAM7F,KAAEA,EAAIM,OAAEA,GAAWuF,EAAKoF,MACxB9J,EAAMb,EAAOkJ,IAAIvJ,KAAK6K,MACtB+D,KAAEA,EAAIF,MAAEA,GAAU5D,EACxB,IAAIoJ,EACAxF,GAASE,UACJ9D,EAAgB,aAChBA,EAAe,KACtB5J,EAAIQ,MACF,yCAAyCgN,YAAgBE,KAS3DsF,SANSlU,KAAKyT,qBACV1T,EACA+K,EACA4D,GAAS,IACRE,GAAcxC,aAEC8H,WAEpBhT,EAAIQ,MAAM,uBACVwS,QAAkBlU,KAAKuT,YACrBxT,EACA+K,IAGJ5J,EAAIQ,MAAM,qBAEV,MAAMkL,QAAiB5M,KAAKiU,eAAe/S,EAAKgT,GAKhD,OAJAhT,EAAIQ,MACF,wBACA,IAAGyP,MAAMC,QAAQxE,GAAWA,EAAQxI,OAAS,IAExCwI,CACR,CAEQ,SAAApB,CACPlK,GAEA,IAAKA,EACH,MAAM,IAAIwD,GAAoB,uBAEhC,OAAO,IAAI4H,GAAgB1M,KAAMsB,EAClC,CAEQ,cAAMoG,CAASC,GACtB,OAAO,IAAIF,GAAuBE,EAAS3H,KAC5C,CAEQ,eAAMiK,CACbL,EACAvI,EACAqB,KACGkD,GAEH,GAAIvE,EAAG+C,SAAW1B,EAAM0B,OACtB,MAAM,IAAIM,EAAc,4CAE1B,MAAMrE,OAAEA,GAAWuF,EAAKA,EAAKxB,OAAS,GAChClD,EAAMb,EAAOkJ,IAAIvJ,KAAKiK,WAI5B,OAHA/I,EAAIsI,KAAK,YAAYnI,EAAG+C,kBAAkBwF,WAC1C1I,EAAIQ,MAAM,QAAQL,GAEXuK,QAAQC,IACbxK,EAAG+I,IAAIzE,MAAOsD,EAAG3B,IACRtH,KAAK+I,OAAOa,EAAWX,EAAGvG,EAAM4E,MAAW1B,IAGvD,CAEQ,eAAM+E,CACbf,EACAvI,EACAqB,KACGkD,GAEH,GAAIvE,EAAG+C,SAAW1B,EAAM0B,OACtB,MAAM,IAAIM,EAAc,4CAE1B,MAAMrE,OAAEA,GAAWuF,EAAKA,EAAKxB,OAAS,GAEhClD,EAAMb,EAAOkJ,IAAIvJ,KAAKiK,WAI5B,OAHA/I,EAAIsI,KAAK,YAAYnI,EAAG+C,kBAAkBwF,WAC1C1I,EAAIQ,MAAM,QAAQL,GAEXuK,QAAQC,IACbxK,EAAG+I,IAAIzE,MAAOsD,EAAG3B,IACRtH,KAAK8I,OAAOc,EAAWX,EAAGvG,EAAM4E,MAAW1B,IAGvD,CAQQ,OAAA+D,CACPjH,EACAyE,KACGvB,GAMH,MAAM7F,KAAEA,EAAIM,OAAEA,GAAWuF,EAAKoF,MACxBpB,EAAYhE,EAAKkP,QACjB5T,EAAMb,EAAOkJ,IAAIvJ,KAAK2J,SAEtBoL,EAAQ1Q,EAAM2Q,YAAYtS,GAC1BU,EAASW,OAAOC,QAAQ+Q,EAAMrS,OAAOe,OACzC,CAACC,GAA6B+C,EAAKxC,MACjC,QAAmB,IAARA,EAAqB,OAAOP,EACvC,MAAMuR,EAAanN,EAAWoN,OAAOxS,EAAO+D,GAC5C,GAAIzG,KAAKmV,WAAWF,GAClB,MAAM,IAAIvQ,EAAc,iBAAiBuQ,iBAE3C,OADAvR,EAAMuR,GAAchR,EACbP,GAET,CAAE,GAgBJ,OAdKhB,EAAc0S,EAAgBC,YACjCnU,EAAIoU,MACF,0CAA2C5S,EAAc0S,EAAgBC,WAE3EtR,OAAOkO,eAAe7O,EAAQgS,EAAgBC,SAAU,CACtDnD,YAAY,EACZC,UAAU,EACVC,cAAc,EACd1M,MAAQhD,EAAc0S,EAAgBC,aAI1CnU,EAAIsI,KAAK,wBAAwBI,mBAA2BlH,EAAMyE,MAE3D,CACLuC,OAAQtG,EACR/B,GAAItB,EAAKsT,mBAAmBzJ,EAAW,CAAQlH,EAAMyE,GAAboF,KACxCtF,UAAW8N,EAAM9N,UAEpB,CAEQ,MAAA4C,CACP0L,EACApM,EACAhC,EACA9F,EACA4F,GAEA,MAAM/F,EAAMlB,KAAKkB,IAAIqI,IAAIvJ,KAAK6J,QACxB2L,EAA0B,CAAA,EAChCA,EAAGrO,GAAgB9F,EACnB,MAAM0I,EACa,iBAAVZ,EAAqB9E,EAAMC,MAAMkR,EAAIrM,GAAS,IAAIA,EAAMqM,GAEjEtU,EAAIoU,MAAM,oBAAoBvL,EAAElK,YAAY0E,WAAWlD,KACvD,MAAMyB,EAAWyS,EAAIH,EAAgBC,UAC/BjS,EAASW,OAAOS,KAAKuF,GAAGtG,OAAO,CAACC,EAAU+C,KAC7C/C,EAA8B+C,GAAO8O,EAAIzN,EAAWoN,OAAOxR,EAAO+C,IAC5D/C,GACNqG,GA2BH,OAzBI9C,IACF/F,EAAIgS,QACF,mCAAmCnP,OAAOS,KAAKyC,GAAWnF,KAAK,OAEjEiC,OAAOC,QAAQiD,GAAWkH,QAAQ,EAAE1H,EAAKxC,MACvC,GAAIwC,KAAOrD,QAAmCL,IAAxBK,EAAeqD,GACnC,MAAM,IAAI/B,EACR,sBAAsB+B,6BAA+BsD,EAAElK,YAAY0E,8BAEvEnB,EAAOqD,GAAkBxC,KAIzBnB,IACF5B,EAAIoU,MACF,iBAAiBtV,KAAKyV,oCAAoC1L,EAAElK,YAAY0E,WAAWlD,MAAOyB,KAE5FiB,OAAOkO,eAAe7O,EAAQgS,EAAgBC,SAAU,CACtDnD,YAAY,EACZE,cAAc,EACdD,UAAU,EACVzM,MAAO5C,KAIJM,CACR,CAEQ,YAAAkJ,CACP1C,EACAvI,EACAqB,KACGkD,GAEH,MAAMtE,EAA6BsE,EAAKoF,MAClCtB,EAA8B,CAAA,EAIpC,OAHAA,EAAOnC,EAAY6F,OAASxD,EAC5B7F,OAAOsL,OAAO3F,EAAQhH,GAEf,CAACkH,EAAWvI,EAAIqI,EAAQpI,EAChC,CAEQ,YAAAoU,CACP9L,EACAvI,EACAqB,KACGkD,GAEH,MAAMtE,EAA6BsE,EAAKoF,MAClCtB,EAA8B,CAAA,EAIpC,OAHAA,EAAOnC,EAAY6F,OAASxD,EAC5B7F,OAAOsL,OAAO3F,EAAQhH,GAEf,CAACkH,EAAWvI,EAAIqI,EAAQpI,EAChC,CAEkB,eAAAmK,CACjB7B,EACAS,EACAH,KACGtE,GAEH,GAAIyE,EAAIjG,SAAW8F,EAAO9F,OACxB,MAAM,IAAIM,EAAc,4CAE1B,MAAMpD,EAA6BsE,EAAKoF,MAElCT,EAAUF,EAAID,IAAI,CAAC/I,EAAIoH,KAC3B,MAAMiB,EAA8B,CAAA,EAIpC,OAHAA,EAAOnC,EAAY6F,OAASxD,EAE5B7F,OAAOsL,OAAO3F,EAAQQ,EAAOzB,IACtBiB,IAET,MAAO,CAACE,EAAWS,EAAKE,EAASjJ,EAClC,CAEkB,eAAAqU,CACjB/L,EACAS,EACAH,KACGtE,GAEH,GAAIyE,EAAIjG,SAAW8F,EAAO9F,OACxB,MAAM,IAAIM,EAAc,4CAE1B,MAAMpD,EAA6BsE,EAAKoF,MAElCT,EAAUF,EAAID,IAAI,CAAC/I,EAAIoH,KAC3B,MAAMiB,EAA8B,CAAA,EAGpC,OAFAA,EAAOnC,EAAY6F,OAASxD,EAC5B7F,OAAOsL,OAAO3F,EAAQQ,EAAOzB,IACtBiB,IAET,MAAO,CAACE,EAAWS,EAAKE,EAASjJ,EAClC,CASD,iBAAgBsU,GACd9V,MAAM8V,aACNC,GAAWC,YAAYvT,IACpBgH,IAAI6L,EAAgBW,YACpBC,OACCC,EAASrE,IACT9K,GAAasO,EAAgBW,WAAY,CAAA,IAE1CzP,QAEHuP,GAAWC,YAAYvT,IACpBgH,IAAI6L,EAAgBc,YACpBF,OACCG,EAAevE,IACf9K,GAAasO,EAAgBc,WAAY,CAAA,IAE1C5P,QAEHuP,GAAWC,YAAYvT,IACpBgH,IAAIwD,EAAOC,IACXgJ,OAAO,CACNI,UAAW,CACTzO,EACA0O,IAEO,CAAed,EAAUe,IACvBhQ,GACLe,IACAkP,IACAzP,GAAanE,GAAS8D,IAAIsG,EAAOC,GAAIsJ,GAAO3O,GAC5CsO,EAASlE,GAAkBpK,EAAS0O,GAJ/B/P,CAKLiP,EAAKe,KAIZhQ,QAEHuP,GAAWC,YAAYvT,IACpBgH,IAAI6L,EAAgBoB,QACpBC,OAAOC,KACPpQ,QAEHuP,GAAWC,YAAYvT,IACpBgH,IAAI6L,EAAgBhI,OACpBqJ,OAAsBlB,GAiBdoB,IAAepB,IAEvBjP,QA4BHuP,GAAWC,YAAYvT,IACpBgH,IAAI6L,EAAgBwB,YACpBZ,OAAO,CACNI,UA7BJ,CACEjN,EACA2G,EACAkB,EACA6F,EACAC,KAEA,MAAMC,EAA0B,CAC9BjN,MAAOX,EACP2G,QAASA,EACTkB,SAAUA,GAIZ,OAFI6F,IAAgBE,EAAKC,UAAYH,GACjCC,IAAIC,EAAKxS,KAAOuS,GACbxQ,GACL2Q,KACAC,GAAS9B,EAAgBwB,WAAYG,GACrCxO,EAAK,CAACY,EAAOoD,OAAQ4K,OAAQtO,SAC7BoN,EAAS3G,GAAkByH,GAC3BK,EAASvH,GAAkBkH,GAC3BM,EAASlH,GAAkB4G,GAC3BO,EAAStM,GAAK+L,GACdjQ,GAAasO,EAAgBwB,WAAYG,GAE5C,IAOEzQ,QA4BHuP,GAAWtM,IAAI6L,EAAgBmC,aAC5BvB,OAAO,CACNI,UA5BJ,CACEjN,EACA2G,EACAkB,EACAwG,EACAV,KAEA,MAAMhU,EAA8B,CAClCgH,MAAOX,EACP2G,QAASA,EACTkB,SAAUA,GAIZ,OAFIwG,IAAe1U,EAASkU,UAAYQ,GACpCV,IAAIhU,EAASyB,KAAOuS,GACjBxQ,GACL2Q,KACAC,GAAS9B,EAAgBmC,YAAazU,GACtC2U,EAAK,CAACtO,EAAyBoD,OAAQ4K,SACvClB,EAAS5F,GAAmBvN,GAC5BsU,EAASM,GAAmB5U,GAC5BuU,EAASxG,GAAmB/N,GAC5BwU,EAAStM,GAAKlI,GACdgE,GAAasO,EAAgBmC,YAAazU,GAE7C,IAMEwD,OACJ,EAGH+L,GAAsBuD,aACtB+B,GAAQC,WAAWrV,IC/gCb,MAAOsV,WAEH/I,EACR,WAAAjP,GACEC,OACD,CAQQ,WAAAiP,CAAYC,GACnB,OAAOlP,MAAMiP,YAAYC,EAC1B,CAQQ,SAAAC,CAAUvM,GAGjB,OAFkBwM,QAAQ,+BAEnB9M,CADmB8M,QAAQ,sBACjBC,CAAkBnP,KAAKoP,aAAa1M,IACtD,ECjCG,MAAOoV,WAAyCzF,GAOpD,WAAAxS,CACE+S,EACA5K,EACiBzE,GAEjBzD,MAAM8S,EAAO5K,GAFIhI,KAAWuD,YAAXA,EAGjBvD,KAAKuD,YAAcA,GAAe,EACnC,CAEQ,cAAMmE,CAASC,GACtB,OAAO,IAAIF,GAAuBE,EAAS3H,KAAMA,KAAKuD,YACvD,CAUQ,UAAM6E,CACbwB,EACAvI,EACA0W,KACGnS,GAEH,MAAM7F,KAAEA,EAAIM,OAAEA,GAAWuF,EAAKoF,MACxB9J,EAAMb,EAAOkJ,IAAIvJ,KAAKoI,MAE5B,IAAI1F,EACJ,IACE,MAAMkK,QAAgB5M,KAAKgT,UACzBjT,EACA6J,EACAvI,EAAG+K,WACH2L,GAGF,GAAqB,EAAjBnL,EAAQxI,OAEV,MADAlD,EAAIQ,MAAM,0BAA0BL,QAASuI,WACvC,IAAIxD,EACR,0BAA0B/E,QAASuI,WAEX,EAAjBgD,EAAQxI,QACjBlD,EAAIQ,MAAM,0BAA0BL,QAASuI,WAC7ClH,EAAQkK,EAAQ5B,OAEhBtI,EAAQ1C,KAAKiT,YAAYrG,EAE5B,CAAC,MAAO/I,GACP,MAAM7D,KAAK+S,WAAWlP,EACvB,CAED,OAAOnB,CACR,CAUQ,YAAM,CACbkH,EACAvI,EACA0W,KACGnS,GAEH,MAAMtE,EAAMsE,EAAKoF,OACXjL,KAAEA,EAAIM,OAAEA,GAAWiB,EACnBJ,EAAMb,EAAOkJ,IAAIvJ,KAAKgK,QAI5B,IAAItH,EAFJkD,EAAK/D,KAAKP,GAGV,IACEoB,QAAc1C,KAAKoI,KAAKwB,EAAWvI,EAAI0W,KAAanS,GACpD1E,EAAIgS,QAAQ,0BAA0B7R,UAAWuI,WACjD5J,KAAKmT,YAAYpT,EAAM6J,EAAWvI,EAAG+K,WAAY2L,EAClD,CAAC,MAAOlU,GACP,MAAM7D,KAAK+S,WAAWlP,EACvB,CAED,OAAOnB,CACR,CACQ,OAAAiH,CACPjH,EACAyE,KACGvB,GAMH,MAAM7F,KAAEA,EAAIM,OAAEA,GAAWuF,EAAKoF,MACxBpB,EAAYhE,EAAKkP,QACjB5T,EAAMb,EAAOkJ,IAAIvJ,KAAK2J,SAEtBoL,EXnHM,EAA8BnN,EAAclF,KAC1D,MAAMuE,EAAY5C,EAAM2Q,YAAYtS,GAC9B6D,EAActD,GAAeP,GAE7BsV,EAAkBtV,GACfqB,OAAOC,QAAQtB,GAAOe,OAC3B,CAACC,GAA6B+C,EAAKxC,MACjC,QAAmB,IAARA,EAAqB,OAAOP,EACvC,MAAMuR,EAAanN,EAAWoN,OAAOxS,EAAO+D,GAC5C,GAAImB,EAAQuN,WAAWF,GACrB,MAAM,IAAIvQ,EAAc,iBAAiBuQ,iBAE3C,OADAvR,EAAMuR,GAAchR,EACbP,GAET,CAAE,GAIN,GAAI6C,EAAYlD,QAAS,CACvB,MAAME,EAAcQ,OAAOS,KAAK+B,EAAYlD,SAE5C,IAAK,MAAMO,KAAcL,EACvBgD,EAAYlD,QAASO,GAAcoU,EACjCzR,EAAYlD,QAASO,GAG1B,CAED,MAAO,CACLlB,MAAOuE,EAAUvE,MACjBuE,UAAWA,EAAUA,UACrBV,YAAaA,EAAYlD,QACzBD,OAAQ4U,EAAe/Q,EAAUvE,OAErC,EWiFkBuV,CAAajY,KAAM0C,GAejC,OAFAxB,EAAIsI,KAAK,wBAAwBI,mBAA2BlH,EAAMyE,MAE3D,CACLuC,OAAQqL,EAAMxO,YACdlF,GAAItB,EAAKsT,mBAAmBzJ,EAAW,CAAQlH,EAAMyE,GAAboF,KACxCtF,UAAW8N,EAAM9N,UAEpB,CAEQ,YAAAqF,CACP1C,EACAvI,EACAqB,KACGkD,GAEH,MAAMtE,EAA6BsE,EAAKoF,MAClCzH,EAAcQ,OAAOS,KAAK9B,GAChC,IAAK,MAAMkB,KAAcL,EACvBb,EAAMkB,GAAY2D,EAAY6F,OAASxD,EAKzC,MAAO,CAACA,EAAWvI,EAFiBqB,EAELpB,EAChC,CAEQ,YAAAoU,CACP9L,EACAvI,EACAqB,KACGkD,GAEH,MAAMtE,EAA6BsE,EAAKoF,MAClCzH,EAAcQ,OAAOS,KAAK9B,GAEhC,IAAK,MAAMkB,KAAcL,EACvBb,EAAMkB,GAAY2D,EAAY6F,OAASxD,EAKzC,MAAO,CAACA,EAAWvI,EAFiBqB,EAELpB,EAChC,CACQ,cAAMwR,CACb/S,EACAsB,EACAqB,KAEGkD,GAEH,MAAMrC,EAAcQ,OAAOS,KAAK9B,GAChC,IACI6M,EADA8B,EAA2B,CAAA,EAG/B,IAAK,MAAMzN,KAAcL,EAAa,CACpC8N,EAAM3O,EAAOkB,GACb,IACE2L,EAAOtN,OAAOC,KACZmQ,GAAsBK,WAAWzD,UAC/BvM,EAAOkB,IAGZ,CAAC,MAAOC,GACP,MAAM,IAAIC,EACR,sCAAsCzC,MAAOwC,IAEhD,OACK9D,EAAKmY,eAAetU,EAAYvC,EAAG+K,WAAYmD,EACtD,CAED,OAAO8B,CACR,CAEQ,eAAM2B,CACbjT,EACA6J,EACAvI,EACA0W,KAEGnS,GAEH,MAAMwN,EAAcrT,EAAKsT,mBAAmBzJ,EAAW,CAAQvI,EAAPkL,KAClD7J,EAAQO,GAAe8U,GACvBxU,EAAcQ,OAAOS,KAAK9B,EAAMW,SAChCuJ,EAAiB,GAEvB,IAAK,MAAMhJ,KAAcL,EACvB,IACE,IAAI8N,QAA0CtR,EAAKoY,eACjDvU,EACAwP,GAEF,GAAuB,KAAnB/B,EAAIjF,WACN,MAAM,IAAIhG,EAAc,iBAAiB/E,sBAE3C,IACEgQ,EAAMgB,GAAsBK,WAAW3D,YACrCsC,EAAIjF,WAGP,CAAC,MAAOvI,GACP,MAAM,IAAIC,EAAmB,iCAAiCD,EAC/D,CACD+I,EAAQ/K,KAAKwP,EACd,CAAC,MAAOxN,GACP,GAAIrB,GAA2B4V,KAAMvU,EAAgBwU,SACnD,MAAM,IAAItT,GAA8BlB,GAC1C,MAAMA,CACP,CAGH,OAAO+I,CACR,CAEQ,iBAAMuG,CACbpT,EACA6J,EACAvI,EACA0W,KAEGnS,GAEH,MAAMwN,EAAcrT,EAAKsT,mBAAmBzJ,EAAW,CAAQvI,EAAPkL,KAClD7J,EAAQO,GAAe8U,GACvBxU,EAAcQ,OAAOS,KAAK9B,EAAMW,SAEtC,IAAK,MAAMO,KAAcL,QACjBxD,EAAKuY,kBAAkB1U,EAAYwP,EAE5C,CAEQ,iBAAMG,CACbxT,EACA+K,EACAiN,GAEA,MAAMxR,EAActD,GAAe8U,GAAU1U,QACvCO,EAAaG,OAAOS,KAAK+B,GAAa,IAAM,GASlD,aAPsBxG,EAAKwY,0BACzB3U,EACAzB,KAAKC,UAAU0I,KAGOoJ,QAGzB,CAEQ,0BAAMT,CACb1T,EACA+K,EACA4D,EAAgB,IAChBE,OAA2B7L,EAC3BgV,GAEA,MAAMxR,EAActD,GAAe8U,GAAU1U,QACvCO,EAAaG,OAAOS,KAAK+B,GAAa,IAAM,GAE5C2N,QAAiBnU,EAAKwY,0BAC1B3U,EACAzB,KAAKC,UAAU0I,IAGX8B,EAAiB,GACvB,IAAInE,EAAQ,EACR+P,GAAkB5J,EAClB6J,EAAyB,KAE7B,OAAa,CACX,MAAMpH,QAAY6C,EAASvL,OAE3B,GAAI0I,EAAI3L,OAAS2L,EAAI3L,MAAMA,MAAM0G,WAAY,CAC3C,MAAMsM,EAAYrH,EAAI3L,MAAMe,IACtBkS,EAAetH,EAAI3L,MAAMA,MAAc0G,SAAS,QAGtD,IAAKoM,EAAiB,CAChBE,IAAc9J,GAAMxC,aACtBoM,GAAkB,GAEpB,QACD,CAMD,GAJA5L,EAAQ/K,KAAK,CAAE+W,IAAKF,EAAWG,OAAQ1W,KAAKkG,MAAMsQ,KAClDF,EAAUC,EACVjQ,IAEIA,GAASiG,EAEX,aADMwF,EAASW,QACR,CACLX,SAAUtH,EACV9J,SAAU,CACRgW,oBAAqBlM,EAAQxI,OAC7B2U,SAAUN,GAIjB,CAED,GAAIpH,EAAIgD,KAEN,aADMH,EAASW,QACR,CACLX,SAAUtH,EACV9J,SAAU,CACRgW,oBAAqBlM,EAAQxI,OAC7B2U,SAAU,IAIjB,CAMF,CA8BQ,SAAMlO,CACbC,EACAC,KACGnF,GAEH,MAAM7F,KAAEA,EAAIM,OAAEA,GAAWuF,EAAKoF,MACxB9J,EAAMb,EAAOkJ,IAAIvJ,KAAK6K,MACtB+D,KAAEA,EAAIF,MAAEA,GAAU5D,EAClBiN,EAAWnS,EAAKkP,QACtB,IAAIZ,EACAxF,GAASE,UACJ9D,EAAgB,aAChBA,EAAe,KACtB5J,EAAIQ,MACF,yCAAyCgN,YAAgBE,KAU3DsF,SAPSlU,KAAKyT,qBACV1T,EACA+K,EACA4D,GAAS,IACRE,GAAcxC,WACf2L,IAEgB7D,WAEpBhT,EAAIQ,MAAM,uBACVwS,QAAkBlU,KAAKuT,YACrBxT,EACA+K,EACAiN,IAGJ7W,EAAIQ,MAAM,qBAEV,MAAMkL,QAAiB5M,KAAKiU,eAAe/S,EAAKgT,GAKhD,OAJAhT,EAAIQ,MACF,wBACA,IAAGyP,MAAMC,QAAQxE,GAAWA,EAAQxI,OAAS,IAExCwI,CACR,EC5WG,MAAgBoM,WACZC,SAUkBjZ,KAAA0S,WAAa,IAAImF,EAA0B,CAUrE,WAAAhY,CACE0E,EACmB4E,GAEnBrJ,MAAMyE,GAFavE,KAAKmJ,MAALA,EAVXnJ,KAAWkZ,aAAY,EAa/BF,GAAmBpR,QAAU5H,KAAKmZ,WAAWhQ,GAC7CnJ,KAAK6H,KAAOC,EAAWC,SAASoB,EAAO6P,GAAmBpR,QAAQI,MACnE,CAES,UAAAmR,CAAWhQ,GACnB,MAAM4O,EAAW,IAAI5O,EAErB,GAAItG,GAAekV,GAAW,CAC5B,MAAMqB,EAAMnW,GAAe8U,GACrBxU,EAAcQ,OAAOS,KAAK4U,EAAI/V,SAEpC,OAAO,IAAIyU,QACT/U,EACA,8BACAQ,EAEH,CACC,OAAO,IAAI8O,QACTtP,EACA,CAACR,GAAe4G,EAAM5E,MAAMzC,KAAK,KAGtC,CAQM,MAAAuH,CAAO/H,GACZ,OAAOgI,EAAQC,IAAIyP,GAAmBzU,KAAM,CAAA,EAAIjD,EACjD,CAUD,YAAMyH,CACJzH,EACAoB,KACGkD,GAEH,MAAM1E,EAAMlB,KAAKqJ,OAAO/H,GAAKiI,IAAIvJ,KAAK+I,QAEjB,iBAAVrG,IAAoBA,EAAQ1C,KAAK+O,YAAerM,IAE3DxB,EAAIsI,KAAK,mBAAmBrH,KAAKC,UAAUM,IAE3C,MAAMuE,EAAYjH,KAAKqZ,iBAAiB/X,GAKxC,OAHAJ,EAAIsI,KAAK,6BACT9G,EAAS1C,KAAK6H,KAAayR,MAAM5W,EAAYuE,GAEtCjH,KAAK6H,KAAKkB,OAAOrG,EAAuBpB,KAAQsE,EACxD,CAUD,UAAMwC,CACJ9G,EACAmF,KACGb,GAMH,OAJY5F,KAAKqJ,OAAO/H,GAAKiI,IAAIvJ,KAAKoI,MAElCoB,KAAK,yBAAyB/C,MAE3BzG,KAAK6H,KAAKO,KAAK3B,EAAKnF,KAAQsE,EACpC,CAES,gBAAAyT,CAAiB/X,GACzB,MAAMiY,EAAejY,EAAIvB,KAAKyZ,eAC9B,IAAIvS,EAAiB,CAAA,EAUrB,OARIsS,EAAaE,IAAKzZ,KAAK6H,KAAa+B,aACtC3C,EAAY9E,KAAKkG,MACdkR,EAAatZ,IAAKD,KAAK6H,KAAa+B,YAAuBwC,SAC1D,UAKCnF,CACR,CAUD,YAAM6B,CACJxH,EACAoB,KACGkD,GAEH,MAAM1E,EAAMlB,KAAKqJ,OAAO/H,GAAKiI,IAAIvJ,KAAK8I,QAEjB,iBAAVpG,IAAoBA,EAAQ1C,KAAK+O,YAAerM,IAE3DxB,EAAIsI,KAAK,mBAAmBrH,KAAKC,UAAUM,IAE3C,MAAMuE,EAAYjH,KAAKqZ,iBAAiB/X,GAKxC,OAHAJ,EAAIsI,KAAK,6BACT9G,EAAS1C,KAAK6H,KAAayR,MAAM5W,EAAYuE,GAEtCjH,KAAK6H,KAAKiB,OAAOpG,EAAuBpB,KAAQsE,EACxD,CAUD,YAAM,CACJtE,EACAmF,KACGb,GAIH,OAFY5F,KAAKqJ,OAAO/H,GAAKiI,IAAIvJ,KAAKgK,QAClCR,KAAK,0BAA0B/C,MAC5BzG,KAAK6H,KAAKmC,OAAcvD,EAAP8F,GAAajL,KAAQsE,EAC9C,CAUD,eAAM8T,CACJpY,EACAkD,KACGoB,GAGH,MADoB,iBAATpB,IAAmBA,EAAOrC,KAAKkG,MAAM7D,IACzCxE,KAAK6H,KAAK6R,UAAUlV,EAAMlD,KAAQsE,EAC1C,CAUD,aAAM+T,CACJrY,EACAkD,KACGoB,GAGH,MADoB,iBAATpB,IAAmBA,EAAOrC,KAAKkG,MAAM7D,IACzCxE,KAAK6H,KAAK8R,QAAQnV,EAAMlD,KAAQsE,EACxC,CAUD,eAAM+E,CACJrJ,EACA4I,KACGtE,GAEH,MAAM1E,EAAMlB,KAAKqJ,OAAO/H,GAAKiI,IAAIvJ,KAAK2K,WAOtC,MANsB,iBAAXT,IACTA,EAAU/H,KAAKkG,MAAM6B,GAClBE,IAAKL,GAAM/J,KAAK+O,YAAYhF,IAC5BK,IAAKL,GAAM,IAAI/J,KAAKmJ,MAAMY,KAE/B7I,EAAIsI,KAAK,YAAYU,EAAO9F,+BACrBpE,KAAK6H,KAAK8C,UAAUT,EAA0B5I,KAAQsE,EAC9D,CAWD,SAAMiF,CACJvJ,EACAwJ,EACAC,KACGnF,GAIH,MAFwB,iBAAbkF,IACTA,EAAW3I,KAAKkG,MAAMyC,IACjB9K,KAAK6H,KAAKgD,IAAIC,EAAUC,EAAUzJ,KAAQsE,EAClD,CAES,SAAAqJ,CAAUvM,GAClB,OAAOsW,GAAmBtG,WAAWzD,UAAUvM,EAChD,CAES,WAAAqM,CAA6BC,GACrC,OACEgK,GAAmBtG,WACnB3D,YAAYC,EACf,CAES,UAAM4K,CAAKtY,GACnB,MAAMJ,EAAMlB,KAAKqJ,OAAO/H,GAAKiI,IAAIvJ,KAAK4Z,MACtC1Y,EAAIsI,KAAK,sCACTxJ,KAAKkZ,aAAc,EACnBhY,EAAIsI,KAAK,qCACV,CAED,iBAAMqQ,CAAYvY,GAGhB,OAFYtB,KAAKqJ,OAAO/H,GAAKiI,IAAIvJ,KAAK6Z,aAClCrQ,KAAK,wBAAwBxJ,KAAKkZ,kBAC/B,CAAEW,YAAa7Z,KAAKkZ,YAC5B,CAUD,eAAMjP,CACJ3I,EACA4I,KACGtE,GAEH,MAAM1E,EAAMlB,KAAKqJ,OAAO/H,GAAKiI,IAAIvJ,KAAKiK,WAQtC,MANsB,iBAAXC,IACTA,EAAU/H,KAAKkG,MAAM6B,GAClBE,IAAKL,GAAM/J,KAAK+O,YAAYhF,IAC5BK,IAAKL,GAAM,IAAI/J,KAAKmJ,MAAMY,KAE/B7I,EAAIsI,KAAK,UAAUU,EAAO9F,+BACnBpE,KAAK6H,KAAKoC,UAAUC,EAA0B5I,KAAQsE,EAC9D,EC5UG,MAAOkU,WAEHd,GACR,WAAAnZ,CAAY0E,EAAc4E,GACxBrJ,MAAMyE,EAAM4E,EACb,CAQe,MAAAE,CAAO/H,GACrB,OAAOgI,EAAQC,IAAIuQ,GAAwB,CAAE,EAAExY,EAChD,CAGQ,YAAMyH,CAAOzH,EAAUoB,GAC9B,MAAMxB,EAAMlB,KAAKqJ,OAAO/H,GAAKiI,IAAIvJ,KAAK+I,QACtC7H,EAAIsI,KAAK,mBAAmB9G,GAE5B,MAAMqH,EAAI/J,KAAK+O,YAAerM,GAG9B,OADAxB,EAAIsI,KAAK,uBAAuBrH,KAAKC,UAAU2H,IACxC/J,KAAKiP,gBAAiBnP,MAAMiJ,OAAOzH,EAAKyI,GAChD,CAGQ,UAAM3B,CAAK9G,EAAUmF,GAG5B,OAFYzG,KAAKqJ,OAAO/H,GAAKiI,IAAIvJ,KAAKoI,MAClCoB,KAAK,eAAe/C,GACjBzG,KAAKiP,gBAAiBnP,MAAMsI,KAAK9G,EAAKmF,GAC9C,CAGQ,YAAMqC,CAAOxH,EAAUoB,GAG9B,OAFY1C,KAAKqJ,OAAO/H,GAAKiI,IAAIvJ,KAAK8I,QAClCU,KAAK,mBAAmB9G,GACrB1C,KAAKiP,gBAAiBnP,MAAMgJ,OAAOxH,EAAKoB,GAChD,CAGQ,YAAM,CAAOpB,EAAUmF,GAG9B,OAFYzG,KAAKqJ,OAAO/H,GAAKiI,IAAIvJ,KAAKgK,QAClCR,KAAK,gBAAgB/C,GAClBzG,KAAKiP,gBAAiBnP,MAAMkK,OAAO1I,EAAKmF,GAChD,CAGQ,eAAMiT,CAAUpY,EAAUkD,GACjC,MAAMuV,EAAuB5X,KAAKkG,MAAM7D,GAKxC,OAJYxE,KAAKqJ,OAAO/H,GAAKiI,IAAIvJ,KAAK0Z,WAElClQ,KAAK,YAAYuQ,EAAW3V,iCAEzBjC,KAAKC,iBACFtC,MAAM4Z,UAAUpY,EAAKyY,IAAqB3P,IAC/CL,GAAM/J,KAAKiP,UAAUlF,IAG3B,CAGQ,aAAM4P,CAAQrY,EAAUkD,GAC/B,MAAMuV,EAAuB5X,KAAKkG,MAAM7D,GAKxC,OAHYxE,KAAKqJ,OAAO/H,GAAKiI,IAAIvJ,KAAK2Z,SAClCnQ,KAAK,WAAWuQ,EAAW3V,iCAExBjC,KAAKC,iBACFtC,MAAM6Z,QAAQrY,EAAKyY,IAAqB3P,IAAKL,GACnD/J,KAAKiP,UAAUlF,IAGpB,CAGQ,eAAMY,CAAUrJ,EAAU4I,GACjC,MAAMhJ,EAAMlB,KAAKqJ,OAAO/H,GAAKiI,IAAIvJ,KAAK2K,WAEhCqP,EADiB7X,KAAKkG,MAAM6B,GAE/BE,IAAKL,GAAM/J,KAAK+O,YAAYhF,IAC5BK,IAAKL,GAAM,IAAI/J,KAAKmJ,MAAMY,IAG7B,OADA7I,EAAIsI,KAAK,YAAYwQ,EAAU5V,+BACxBjC,KAAKC,iBACFtC,MAAM6K,UAAUrJ,EAAK0Y,IAAoB5P,IAC9CL,GAAM/J,KAAKiP,UAAUlF,IAG3B,CAGc,SAAAc,CACbvJ,EACAwJ,EACAC,GAEA,MAAMkP,EAA0B9X,KAAKkG,MAAMyC,GAC3C,OAAOhL,MAAM+K,IAAIvJ,EAAK2Y,EAAalP,EACpC,CAGQ,UAAM6O,CAAKtY,SACZxB,MAAM8Z,KAAKtY,EAClB,CAGQ,iBAAMuY,CAAYvY,GAEzB,OAAOa,KAAKC,gBAAgBtC,MAAM+Z,YAAYvY,GAC/C,CAGQ,eAAM2I,CAAU3I,EAAU4I,GACjC,MAAMhJ,EAAMlB,KAAKqJ,OAAO/H,GAAKiI,IAAIvJ,KAAKiK,WAEhC+P,EADiB7X,KAAKkG,MAAM6B,GAE/BE,IAAKL,GAAM/J,KAAK+O,YAAYhF,IAC5BK,IAAKL,GAAM,IAAI/J,KAAKmJ,MAAMY,IAG7B,OADA7I,EAAIsI,KAAK,UAAUwQ,EAAU5V,+BACtBjC,KAAKC,iBACFtC,MAAMmK,UAAU3I,EAAK0Y,IAAoB5P,IAC9CL,GAAM/J,KAAKiP,UAAUlF,IAG3B,ECtIa,SAAA6G,GAAIsJ,EAAWC,GAC7B,MAAM1Q,EAAIyQ,EAAIC,EACd,GAAID,IAAMzQ,EAAI0Q,GAAKA,IAAM1Q,EAAIyQ,EAC3B,MAAM,IAAIzV,GAAc,sBAAsByV,OAAOC,KAEvD,OAAO1Q,CACT,CAYgB,SAAA2Q,GAAIF,EAAWC,GAC7B,MAAM1Q,EAAIyQ,EAAIC,EACd,GAAID,IAAMzQ,EAAI0Q,GAAKA,IAAMD,EAAIzQ,EAC3B,MAAM,IAAIhF,GAAc,yBAAyByV,OAAOC,KAE1D,OAAO1Q,CACT,CDAiBvC,GAAA,CADdmT,uDAC0B/O,EAAGiB,0CAQ7BuN,GAAA1S,UAAA,SAAA,MAGcF,GAAA,CADdmT,GAAY,sDACY/O,EAAGiB,0CAI3BuN,GAAA1S,UAAA,OAAA,MAGcF,GAAA,CADdmT,uDAC0B/O,EAAGiB,0CAI7BuN,GAAA1S,UAAA,SAAA,MAGcF,GAAA,CADdmT,uDAC0B/O,EAAGiB,0CAI7BuN,GAAA1S,UAAA,SAAA,MAGcF,GAAA,CADdmT,uDAC6B/O,EAAGiB,0CAWhCuN,GAAA1S,UAAA,YAAA,MAGcF,GAAA,CADdmT,GAAY,sDACe/O,EAAGiB,0CAW9BuN,GAAA1S,UAAA,UAAA,MAGcF,GAAA,CADdmT,uDAC6B/O,EAAGiB,0CAahCuN,GAAA1S,UAAA,YAAA,MAGcF,GAAA,CADdmT,GAAY,sDAEN/O,EAAGiB,OAAA+N,2CAMTR,GAAA1S,UAAA,MAAA,MAGcF,GAAA,CADdmT,uDACwB/O,qCAExBwO,GAAA1S,UAAA,OAAA,MAGcF,GAAA,CADdmT,GAAY,sDACmB/O,qCAG/BwO,GAAA1S,UAAA,cAAA,MAGcF,GAAA,CADdmT,uDAC6B/O,EAAGiB,0CAahCuN,GAAA1S,UAAA,YAAA,ME5HI,IAAMmT,GAAN,cAAyBpV,EA8B9B,WAAAtF,CAAYkK,GACVjK,MAAMiK,EACP,GA1BD7C,GAAA,CALCC,EAAG,CAAEoB,KAAM,qCAKEgS,GAAAnT,UAAA,YAAA,GAQdF,GAAA,CANCgO,KACA7N,8BAKckT,GAAAnT,UAAA,aAAA,GAOfF,GAAA,CANCgO,KACA7N,8BAKekT,GAAAnT,UAAA,cAAA,GAOhBF,GAAA,CANCgO,KACA7N,8BAKiBkT,GAAAnT,UAAA,gBAAA,GA5BPmT,GAAUrT,GAAA,CAFtB/F,EAAM,gBACNuB,sCACY6X,IAqDN,IAAMC,GAAN,cAA0BrV,EA+B/B,WAAAtF,CAAYkK,GACVjK,MAAMiK,EACP,GA3BD7C,GAAA,CALCC,EAAG,CAAEoB,KAAM,qCAKAiS,GAAApT,UAAA,UAAA,GAQZF,GAAA,CANCgO,KACA7N,8BAKcmT,GAAApT,UAAA,aAAA,GAQfF,GAAA,CANCgO,KACA7N,8BAKgBmT,GAAApT,UAAA,eAAA,GAOjBF,GAAA,CALCgO,+BAKgBsF,GAAApT,UAAA,eAAA,GA7BNoT,GAAWtT,GAAA,CAFvB/F,EAAM,iBACNuB,sCACY8X,IAmDN,IAAMC,GAAN,cAAwBtV,EA8B7B,WAAAtF,CAAYkK,GACVjK,MAAMiK,EACP,GCzJH,IAAY2Q,GDqIVxT,GAAA,CAXCC,EAAG,CAAEoB,KAAM,WAKX2M,KACA7N,8BAKcoT,GAAArT,UAAA,aAAA,GAQfF,GAAA,CANCgO,KACA7N,8BAKgBoT,GAAArT,UAAA,eAAA,GAQjBF,GAAA,CANCgO,KACA7N,8BAKcoT,GAAArT,UAAA,aAAA,GA5BJqT,GAASvT,GAAA,CAFrB/F,EAAM,oBACNuB,sCACY+X,ICzHb,CAAYC,IAQVA,EAAA,SAAA,WASAA,EAAA,SAAA,UACD,EAlBD,CAAYA,KAAAA,GAkBX,CAAA,ICsBK,MAAgBC,WAA4B3B,GAOhD,WAAAnZ,CAAsB0E,GACpBzE,MAAMyE,EAAMiW,IAEZG,GAAoB/S,QAClB+S,GAAoB/S,SAAW,IAAIyK,GAErCrS,KAAK4a,iBAAmB1R,GAAyBnB,SAC/CyS,GACAG,GAAoB/S,QAAQI,OAG9BhI,KAAK6a,gBAAkB3R,GAAyBnB,SAC9CwS,GACAI,GAAoB/S,QAAQI,OAG9BhI,KAAK8a,oBAAsB5R,GAAyBnB,SAClD0S,GACAE,GAAoB/S,QAAQI,MAE/B,CAGD,eAAM+S,CAAUzZ,SAERtB,KAAKgb,iBAAiB1Z,GAE5B,MAAM0E,QAAehG,KAAK6a,gBAAgB5U,uBAAkBlD,EAAWzB,GAGvE,aAFqB0E,EAAOG,WAAW,GAE1B5B,IACd,CASD,YAAM0W,CAAO3Z,SAELtB,KAAKgb,iBAAiB1Z,GAE5B,MAAM0E,QAAehG,KAAK6a,gBAAgB5U,uBAAkBlD,EAAWzB,GAGvE,aAFqB0E,EAAOG,WAAW,GAE1B+U,MACd,CAUD,cAAMC,CAAS7Z,SAEPtB,KAAKgb,iBAAiB1Z,GAE5B,MAAM0E,QAAehG,KAAK6a,gBAAgB5U,uBAAkBlD,EAAWzB,GAGvE,aAFqB0E,EAAOG,WAAW,GAE1BiV,QACd,CASD,iBAAMC,CAAY/Z,SAEVtB,KAAKgb,iBAAiB1Z,GAE5B,MAAM0E,QAAehG,KAAK4a,iBAAiB3U,uBACzClD,EACAzB,GAEIga,QAAgBtV,EAAOG,UAE7B,GAAsB,GAAlBmV,EAAQlX,OACV,MAAM,IAAIgC,EAAc,aAAapG,KAAKub,4BAG5C,IAAIC,EAAQ,EAMZ,OAJAF,EAAQnN,QAASsN,IACfD,GAASC,EAAOC,UAGXF,CACR,CAUD,eAAMG,CAAUra,EAAcC,GAM5B,aAJMvB,KAAKgb,iBAAiB1Z,UAEPtB,KAAK4a,iBAAiBxS,KAAK7G,EAAOD,IAEzCoa,OACf,CAaK,cAAAE,CAASta,EAAcua,EAAYnW,SAEjC1F,KAAKgb,iBAAiB1Z,GAE5B,MAAMY,EAAOZ,EAAIwE,eAAeC,QAGhC,UAD2B/F,KAAK8b,UAAUxa,EAAKY,EAAM2Z,EAAInW,GAEvD,MAAM,IAAIhB,EAAc,sBAG1B,OAAO,CACR,CAYK,kBAAAqX,CACJza,EACAY,EACA2Z,EACAnW,SAGM1F,KAAKgb,iBAAiB1Z,GAI5B,MAAM0a,EAAU1a,EAAIwE,eAAeC,QAE7BkW,QAAkBjc,KAAKkc,cAAc5a,EAAKY,EAAM8Z,GACtD,IAAKC,GAA+B,EAAlBA,EAAUvW,MAC1B,MAAM,IAAIb,GACR,WAAWmX,2BAAiC9Z,KAIhD,MAAMia,EAAmBF,EAAUvW,MAGnC,GAAuBA,EAAnByW,EACF,MAAM,IAAIvX,GACR,wDAKJ,MAAMwX,EAAmBhC,GAAI+B,EAAkBzW,GACzC2W,EAAetY,OAAOsL,OAAO,CAAA,EAAI4M,EAAW,CAChDvW,MAAO0W,IAOT,SAJMpc,KAAK8a,oBAAoBhS,OAAOuT,EAAc/a,UAGzBtB,KAAK8b,UAAUxa,EAAKY,EAAM2Z,EAAInW,GAEvD,MAAM,IAAIhB,EAAc,sBAG1B,OAAO,CACR,CAED,eAAMoX,CAAUxa,EAAcY,EAAc2Z,EAAYnW,GACtD,MAAMrF,EAASL,KAAKqJ,OAAO/H,GAAKiI,IAAIvJ,KAAK8b,WAEzC,GAAI5Z,IAAS2Z,EACX,MAAM,IAAIxV,EACR,mDAIJ,GAAY,EAARX,EAEF,MAAM,IAAId,GAAa,sCAKzB,MAAM0X,QAAmBtc,KAAK4a,iBAAiBxS,KAAKlG,EAAMZ,GAEpDib,EAAcD,EAAWZ,QAG/B,GAAkBhW,EAAd6W,EACF,MAAM,IAAI3X,GAAa,kBAAkB1C,6BAK3C,IAAIsa,EACAC,GAAuB,EAC3B,IACED,QAAiBxc,KAAK4a,iBAAiBxS,KAAKyT,EAAIva,EACjD,CAAC,MAAOuC,GACP,KAAIA,aAAamB,GAaf,MAAM,IAAIN,EAAcb,GAZxB,GAAe,MAAXA,EAAE4I,KASJ,MAAM,IAAI/H,EAAcb,EAAEwU,SAP1BmE,EAAW,IAAIhC,GAAY,CACzBnZ,GAAIwa,EACJH,QAAS,EACTgB,YAAa1c,KAAK+a,UAAUzZ,KAE9Bmb,GAAc,CAOnB,CAED,MAAME,EAAYH,EAASd,QAGrBkB,EAAqBxC,GAAImC,EAAa7W,GACtCmX,EAAmBjM,GAAI+L,EAAWjX,GAElCoX,EAAoB/Y,OAAOsL,OAAO,CAAA,EAAIiN,EAAY,CACtDZ,QAASkB,UAGL5c,KAAK4a,iBAAiB9R,OAAOgU,EAAmBxb,GAEtD,MAAMyb,EAAkBhZ,OAAOsL,OAAO,CAAA,EAAImN,EAAU,CAClDd,QAASmB,IAGPJ,QACIzc,KAAK4a,iBAAiB7R,OAAOgU,EAAiBzb,SAE9CtB,KAAK4a,iBAAiB9R,OAAOiU,EAAiBzb,GAItD,MAAM0b,EAAgB,CAAE9a,OAAM2Z,KAAInW,MAAOA,GAazC,OAXE1F,KAAK6H,KAAKtH,kBACCU,gBACXZ,EACA,GACAqa,GAAYuC,SACZ,GACA3b,EACA,GACA0b,IAGK,CACR,CAYK,aAAAE,CACJ5b,EACA0a,EACAtW,SAGM1F,KAAKgb,iBAAiB1Z,GAC5B,MAAMjB,EAASL,KAAKqJ,OAAO/H,GAAKiI,IAAIvJ,KAAKkd,SAEnC3b,EAAQD,EAAIwE,eAAeC,QAEjC,IAAIkW,QAAkBjc,KAAKkc,cAAc5a,EAAKC,EAAOya,GAIrD,UAF0Bhc,KAAK4a,iBAAiBxS,KAAK7G,EAAOD,IAE5Coa,QAAUhW,EACxB,MAAM,IAAId,GAAa,kBAAkBrD,6BAGvC0a,GAEFA,EAAUvW,MAAQA,QACZ1F,KAAK8a,oBAAoBhS,OAAOmT,EAAW3a,KAEjD2a,EAAY,IAAIxB,GAAU,CACxBlZ,MAAOA,EACPya,QAASA,EACTtW,MAAOA,UAGH1F,KAAK8a,oBAAoB/R,OAAOkT,EAAW3a,IAInD,MAAM6b,EAAgB,CAAE5b,QAAOya,UAAStW,MAAOA,GAa/C,OAXE1F,KAAK6H,KAAKtH,kBACCU,gBACXZ,EACA,GACAqa,GAAY0C,SACZ,GACA9b,EACA,GACA6b,IAGK,CACR,CAWK,eAAA1C,CACJnZ,EACAC,EACAya,SAGMhc,KAAKgb,iBAAiB1Z,GAE5B,MAAM2a,QAAkBjc,KAAKkc,cAAc5a,EAAKC,EAAOya,GAEvD,IAAKC,EACH,MAAM,IAAIpX,GACR,WAAWmX,2BAAiCza,KAGhD,OAAO0a,EAAUvW,KAClB,CAED,mBAAMwW,CACJ5a,EACAC,EACAya,GAEA,MAAMqB,EAAqB3P,EAAUC,IACnCD,EAAUhH,UAAqB,SAASkH,GAAGrM,GAC3CmM,EAAUhH,UAAqB,WAAWkH,GAAGoO,IAGzChW,QAAehG,KAAK8a,oBAAoB7U,uBAC5ClD,EACAzB,GAEI2a,QAAkBjW,EAAOsX,MAAMD,GAAoBlX,UACzD,OAAO8V,IAAY,EACpB,CAcD,gBAAMsB,CAAWjc,EAAcob,GAE7B,MAAM1W,QAAehG,KAAK6a,gBAAgB5U,uBAAkBlD,EAAWzB,GAEvE,UADqB0E,EAAOG,WACjB/B,OAAS,EAClB,MAAM,IAAIiC,EACR,6EAQJ,OAJAqW,EAAMnb,MAAQD,EAAIwE,eAAeC,cAE3B/F,KAAK6a,gBAAgB9R,OAAO2T,EAAOpb,IAElC,CACR,CAID,sBAAM0Z,CAAiB1Z,GACrB,MAAM0E,QAAehG,KAAK6a,gBAAgB5U,uBAAkBlD,EAAWzB,GAEvE,GAAqB,UADA0E,EAAOG,WACjB/B,OACT,MAAM,IAAIa,GACR,wGAGL,CAWD,UAAMuY,CAAKlc,EAAcmc,SAEjBzd,KAAKgb,iBAAiB1Z,GAE5B,MAAMjB,EAASL,KAAKqJ,OAAO/H,GAAKiI,IAAIvJ,KAAKwd,MAGnCE,EAASpc,EAAIwE,eAAeC,QAElC,GAAc,GAAV0X,EACF,MAAM,IAAIpR,EAAgB,0CAG5B,IAAIsR,EACJ,IACEA,QAAqB3d,KAAK4a,iBAAiBxS,KAAKsV,EAAQpc,GAExD,MAEMsc,EAAiBhN,GAFA+M,EAAajC,QAEO+B,GAErCI,EAAgB9Z,OAAOsL,OAAO,CAAA,EAAIsO,EAAc,CACpDjC,QAASkC,UAGL5d,KAAK4a,iBAAiB9R,OAAO+U,EAAevc,EACnD,CAAC,MAAOuC,GACP,KAAIA,aAAamB,GAaf,MAAM,IAAIN,EAAcb,GAZxB,GAAe,MAAXA,EAAE4I,KASJ,MAAM,IAAI/H,EAAcb,EAAEwU,SATR,CAElB,MAAMyF,EAAY,IAAItD,GAAY,CAChCnZ,GAAIqc,EACJhC,QAAS+B,EACTf,YAAa1c,KAAK+a,UAAUzZ,WAExBtB,KAAK4a,iBAAiB7R,OAAO+U,EAAWxc,EAC/C,CAMJ,CAGD,MAAM0b,EAAgB,CAAE9a,KAAM,MAAO2Z,GAAI6B,EAAQhY,MAAO+X,GAEtDzd,KAAK6H,KAAKtH,kBACCU,gBACXZ,EACA,GACAqa,GAAYuC,SACZ,GACA3b,EACA,GACA0b,EAEH,CAWD,UAAMe,CAAKzc,EAAcmc,SAEjBzd,KAAKgb,iBAAiB1Z,GAE5B,MAAMjB,EAASL,KAAKqJ,OAAO/H,GAAKiI,IAAIvJ,KAAK+d,MAEnCL,EAASpc,EAAIwE,eAAeC,QAE5B4X,QAAqB3d,KAAK4a,iBAAiBxS,KAAKsV,EAAQpc,GAExD0c,EAAiBL,EAAajC,QAEpC,GAAqB+B,EAAjBO,EACF,MAAM,IAAIpZ,GAAa,kCAGzB,MAAMgZ,EAAiBxD,GAAI4D,EAAgBP,GAErCI,EAAgB9Z,OAAOsL,OAAO,CAAA,EAAIsO,EAAc,CACpDjC,QAASkC,UAGL5d,KAAK4a,iBAAiB9R,OAAO+U,EAAevc,GAElDjB,EAAOmJ,KAAQiU,EAAH,uBAGZ,MAAMT,EAAgB,CAAE9a,KAAMwb,EAAQ7B,GAAI,MAAOnW,MAAO+X,GAEtDzd,KAAK6H,KAAKtH,kBACCU,gBACXZ,EACA,GACAqa,GAAYuC,SACZ,GACA3b,EACA,GACA0b,EAEH,CAYK,cAAAiB,CAAS3c,EAAc4c,EAAiBT,SAEtCzd,KAAKgb,iBAAiB1Z,GAE5B,MAAMjB,EAASL,KAAKqJ,OAAO/H,GAAKiI,IAAIvJ,KAAKie,UAEnCE,QAAsBne,KAAK4a,iBAAiBxS,KAAK8V,EAAS5c,GAE1D0c,EAAiBG,EAAczC,QAErC,GAAqB+B,EAAjBO,EACF,MAAM,IAAIpZ,GAAgBsZ,EAAH,4BAGzB,MAAMN,EAAiBxD,GAAI4D,EAAgBP,GAErCW,EAAiBra,OAAOsL,OAAO,CAAA,EAAI8O,EAAe,CACtDzC,QAASkC,UAGL5d,KAAK4a,iBAAiB9R,OAAOsV,EAAgB9c,GAEnDjB,EAAOmJ,KAAK,GAAGiU,6BAAkCS,KAGjD,MAAMlB,EAAgB,CAAE9a,KAAMgc,EAASrC,GAAI,MAAOnW,MAAO+X,GAEvDzd,KAAK6H,KAAKtH,kBACCU,gBACXZ,EACA,GACAqa,GAAYuC,SACZ,GACA3b,EACA,GACA0b,EAEH,CASD,0BAAMqB,CAAqB/c,SAEnBtB,KAAKgb,iBAAiB1Z,GAG5B,MAAMgd,EAAkBhd,EAAIwE,eAAeC,QAErCwY,QAAqBve,KAAK4a,iBAAiBxS,KAAKkW,EAAiBhd,GAEvE,IAAKid,EACH,MAAM,IAAI3Z,GAAa,eAAe0Z,oBAGxC,OAAOC,EAAa7C,OACrB,CAMD,qBAAM8C,CAAgBld,GAMpB,aAJMtB,KAAKgb,iBAAiB1Z,GAGJA,EAAIwE,eAAeC,OAE5C,EAhmBKmB,GAAA,CADLmT,GAAY,sDACQza,qCAQpB+a,GAAAvT,UAAA,YAAA,MASKF,GAAA,CADLmT,GAAY,sDACKza,qCAQjB+a,GAAAvT,UAAA,SAAA,MAUKF,GAAA,CADLmT,GAAY,sDACOza,qCAQnB+a,GAAAvT,UAAA,WAAA,MASKF,GAAA,CADLmT,GAAY,sDACUza,qCAqBtB+a,GAAAvT,UAAA,cAAA,MAUKF,GAAA,CADLmT,GAAY,sDACQza,EAAO2M,0CAO3BoO,GAAAvT,UAAA,YAAA,MAaKF,GAAA,CADLmT,uDACmBza,EAAO2M,OAAA4K,0CAY1BwD,GAAAvT,UAAA,WAAA,MAYKF,GAAA,CADLmT,uDAEMza,EAAO2M,OAAAA,OAAA4K,0CA2CbwD,GAAAvT,UAAA,eAAA,MAoGKF,GAAA,CADLmT,uDAEMza,EAAO2M,OAAA4K,0CA+CbwD,GAAAvT,UAAA,UAAA,MAWKF,GAAA,CADLmT,uDAEMza,EAAO2M,OAAAA,0CAeboO,GAAAvT,UAAA,YAAA,MAgCKF,GAAA,CADLmT,+BACqBoE,GAAA,oBAAA,CAAA7e,EAAgB2a,sCAerCI,GAAAvT,UAAA,aAAA,MAIKF,GAAA,CADLmT,GAAY,sDACeza,qCAQ3B+a,GAAAvT,UAAA,mBAAA,MAWKF,GAAA,CAFL7B,KACAgV,uDACeza,EAAOuX,0CAyDtBwD,GAAAvT,UAAA,OAAA,MAWKF,GAAA,CAFL7B,KACAgV,uDACeza,EAAOuX,0CAuCtBwD,GAAAvT,UAAA,OAAA,MAYKF,GAAA,CAFL7B,KACAgV,uDACmBza,EAAO2M,OAAA4K,0CAqC1BwD,GAAAvT,UAAA,WAAA,MASKF,GAAA,CADLmT,uDAC+Bza,qCAc/B+a,GAAAvT,UAAA,uBAAA,MAMKF,GAAA,CADLmT,uDAC0Bza,qCAO1B+a,GAAAvT,UAAA,kBAAA,MCzqBU,MAAAsX,GAAmB,CAAC/D,ICwC3B,MAAOgE,WAAuBC,EAMlC,WAAA/e,CACEwL,EACAwT,EACAvd,GAIA,GAFAxB,MAAMuL,EAASwT,GAEVvd,EAEE,IAAIA,aAAe3B,GACxB,MAAM,IAAImF,GACR,uEAGF9E,KAAKK,OAASiB,EAAIwd,QAAQC,UAAU1T,EACrC,MAPCrL,KAAKK,OAAS,IAAIue,EAAWvT,EAASwT,EAQzC,CAUkB,GAAA3d,CACjB8d,EACAra,EACAsa,GAEA,GACEC,EAAiBlf,KAAK6S,OAAO,UAC7BqM,EAAiBF,GAEjB,OAEF,IAAIG,EACJ,OAAQH,GACN,KAAKI,EAAS5V,KACZ2V,EAASnf,KAAKK,OAAOmJ,KACrB,MACF,KAAK4V,EAASlM,QACZiM,EAASnf,KAAKK,OAAO6S,QACrB,MACF,KAAKkM,EAAS1d,MACZyd,EAASnf,KAAKK,OAAOqB,MACrB,MACF,KAAK0d,EAASxK,MACZuK,EAASnf,KAAKK,OAAOuU,MACrB,MACF,KAAKwK,EAAS9J,MACZ6J,EAASnf,KAAKK,OAAOiV,MACrB,MACF,QACE,MAAU9O,MAAM,qBAEpB2Y,EAAOE,KAAKrf,KAAKK,OAAQL,KAAKsf,UAAUN,EAAOra,EAAKsa,GACrD,EAsBH3V,EAAQiW,WATuB,CAC7BC,EACA3M,EACAvR,IAEO,IAAIqd,GAAea,EAAQ3M,GAAU,CAAE,EAAEvR,IC5H3C,MAAMme,GAAU,cACVC,GAAe,cAE5B/c,GAASgd,gBAAgBD,GAAcD"}
@@ -0,0 +1,71 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const path_1 = __importDefault(require("path"));
7
+ const fs_1 = __importDefault(require("fs"));
8
+ const rollup_1 = require("rollup");
9
+ const plugin_replace_1 = __importDefault(require("@rollup/plugin-replace"));
10
+ const plugin_typescript_1 = __importDefault(require("@rollup/plugin-typescript"));
11
+ const commander_1 = require("commander");
12
+ const child_process_1 = require("child_process");
13
+ const program = new commander_1.Command();
14
+ program
15
+ .command("compile-global-contract")
16
+ .description("Creates a global contract")
17
+ .option("--dev", "compiles contracts without minification", false)
18
+ .option("--debug", "makes attaching debugger possible", false)
19
+ .action(async (options) => {
20
+ const dev = options.dev;
21
+ (0, child_process_1.execSync)("rm -rf ./global");
22
+ const pkg = JSON.parse(fs_1.default.readFileSync(path_1.default.join(__dirname, "../../package.json"), "utf-8"));
23
+ const version = pkg.version;
24
+ const bundle = await (0, rollup_1.rollup)({
25
+ input: "./src/contract/index.ts",
26
+ plugins: [
27
+ (0, plugin_replace_1.default)({
28
+ preventAssignment: true,
29
+ delimiters: ["", ""],
30
+ values: { "##VERSION##": version },
31
+ }),
32
+ (0, plugin_typescript_1.default)({
33
+ tsconfig: "./tsconfig.json",
34
+ compilerOptions: {
35
+ outDir: "global",
36
+ },
37
+ module: "esnext",
38
+ declaration: false,
39
+ }),
40
+ ],
41
+ });
42
+ await bundle.write({
43
+ file: "./global/GlobalContract.js",
44
+ format: "umd",
45
+ name: "GlobalContract.js",
46
+ });
47
+ const scripts = {
48
+ start: options.debug
49
+ ? "node --inspect=0.0.0.0:9229 /usr/local/src/node_modules/.bin/fabric-chaincode-node start"
50
+ : "fabric-chaincode-node start",
51
+ "start:dev": 'fabric-chaincode-node start --peer.address "127.0.0.1:8541" --chaincode-id-name "chaincode1:0.0.1" --tls.enabled false',
52
+ "start:watch": 'nodemon --exec "npm run start:dev"',
53
+ build: 'echo "No need to build the chaincode"',
54
+ lint: "eslint . --fix --ext .js",
55
+ };
56
+ const contractPackage = pkg;
57
+ contractPackage.name = "global-contract";
58
+ contractPackage.description = "Global contract implementation";
59
+ contractPackage.scripts = scripts;
60
+ delete contractPackage.type;
61
+ delete contractPackage.types;
62
+ delete contractPackage.exports;
63
+ contractPackage.main = "GlobalContract.js";
64
+ fs_1.default.writeFileSync(path_1.default.join(__dirname, "../../global/package.json"), JSON.stringify(contractPackage));
65
+ (0, child_process_1.execSync)("cd ./global && npm install");
66
+ (0, child_process_1.execSync)("cd ./global && npm shrinkwrap");
67
+ (0, child_process_1.execSync)("cd ./global && rm -rf node_modules");
68
+ (0, child_process_1.execSync)("rm -rf ./global/lib && rm -rf ./global/dist");
69
+ });
70
+ program.parse(process.argv);
71
+ //# sourceMappingURL=build-contract.js.map
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1 @@
1
+ {"version":3,"file":"build-contract.js","sourceRoot":"","sources":["../../src/bin/build-contract.ts"],"names":[],"mappings":";;;;;AAAA,gDAAwB;AACxB,4CAAoB;AACpB,mCAAgC;AAChC,4EAA6C;AAC7C,kFAAmD;AACnD,yCAAoC;AACpC,iDAAyC;AACzC,MAAM,OAAO,GAAG,IAAI,mBAAO,EAAE,CAAC;AAE9B,OAAO;KACJ,OAAO,CAAC,yBAAyB,CAAC;KAClC,WAAW,CAAC,2BAA2B,CAAC;KACxC,MAAM,CAAC,OAAO,EAAE,yCAAyC,EAAE,KAAK,CAAC;KACjE,MAAM,CAAC,SAAS,EAAE,mCAAmC,EAAE,KAAK,CAAC;KAC7D,MAAM,CAAC,KAAK,EAAE,OAAY,EAAE,EAAE;IAC7B,MAAM,GAAG,GAAY,OAAO,CAAC,GAAG,CAAC;IAEjC,IAAA,wBAAQ,EAAC,iBAAiB,CAAC,CAAC;IAE5B,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CACpB,YAAE,CAAC,YAAY,CAAC,cAAI,CAAC,IAAI,CAAC,SAAS,EAAE,oBAAoB,CAAC,EAAE,OAAO,CAAC,CACrE,CAAC;IAEF,MAAM,OAAO,GAAG,GAAG,CAAC,OAAO,CAAC;IAE5B,MAAM,MAAM,GAAG,MAAM,IAAA,eAAM,EAAC;QAC1B,KAAK,EAAE,yBAAyB;QAChC,OAAO,EAAE;YACP,IAAA,wBAAO,EAAC;gBACN,iBAAiB,EAAE,IAAI;gBACvB,UAAU,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC;gBACpB,MAAM,EAAE,EAAE,aAAa,EAAE,OAAO,EAAE;aACnC,CAAC;YACF,IAAA,2BAAU,EAAC;gBACT,QAAQ,EAAE,iBAAiB;gBAC3B,eAAe,EAAE;oBACf,MAAM,EAAE,QAAQ;iBACjB;gBACD,MAAM,EAAE,QAAQ;gBAChB,WAAW,EAAE,KAAK;aACnB,CAAC;SACH;KACF,CAAC,CAAC;IAEH,MAAM,MAAM,CAAC,KAAK,CAAC;QACjB,IAAI,EAAE,4BAA4B;QAClC,MAAM,EAAE,KAAK;QACb,IAAI,EAAE,mBAAmB;KAC1B,CAAC,CAAC;IAEH,MAAM,OAAO,GAAG;QACd,KAAK,EAAE,OAAO,CAAC,KAAK;YAClB,CAAC,CAAC,0FAA0F;YAC5F,CAAC,CAAC,6BAA6B;QACjC,WAAW,EACT,wHAAwH;QAC1H,aAAa,EAAE,oCAAoC;QACnD,KAAK,EAAE,uCAAuC;QAC9C,IAAI,EAAE,0BAA0B;KACjC,CAAC;IAEF,MAAM,eAAe,GAAG,GAAG,CAAC;IAE5B,eAAe,CAAC,IAAI,GAAG,iBAAiB,CAAC;IACzC,eAAe,CAAC,WAAW,GAAG,gCAAgC,CAAC;IAC/D,eAAe,CAAC,OAAO,GAAG,OAAO,CAAC;IAElC,OAAO,eAAe,CAAC,IAAI,CAAC;IAC5B,OAAO,eAAe,CAAC,KAAK,CAAC;IAC7B,OAAO,eAAe,CAAC,OAAO,CAAC;IAC/B,eAAe,CAAC,IAAI,GAAG,mBAAmB,CAAC;IAE3C,YAAE,CAAC,aAAa,CACd,cAAI,CAAC,IAAI,CAAC,SAAS,EAAE,2BAA2B,CAAC,EACjD,IAAI,CAAC,SAAS,CAAC,eAAe,CAAC,CAChC,CAAC;IAEF,IAAA,wBAAQ,EAAC,4BAA4B,CAAC,CAAC;IACvC,IAAA,wBAAQ,EAAC,+BAA+B,CAAC,CAAC;IAC1C,IAAA,wBAAQ,EAAC,oCAAoC,CAAC,CAAC;IAE/C,IAAA,wBAAQ,EAAC,6CAA6C,CAAC,CAAC;AAC1D,CAAC,CAAC,CAAC;AAEL,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC"}