@mochabug/adapt-web 1.0.0-rc21 → 1.0.0-rc23
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +225 -0
- package/dist/esm/index.js +961 -159
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/types.js +2 -0
- package/dist/esm/types.js.map +1 -0
- package/dist/types/index.d.ts +67 -27
- package/dist/types/types.d.ts +254 -0
- package/dist/umd/adapt-web.js +5038 -0
- package/dist/umd/adapt-web.min.js +271 -0
- package/package.json +19 -41
- package/dist/cjs/genproto/buf/validate/validate_pb.js +0 -355
- package/dist/cjs/genproto/buf/validate/validate_pb.js.map +0 -1
- package/dist/cjs/genproto/google/api/annotations_pb.js +0 -30
- package/dist/cjs/genproto/google/api/annotations_pb.js.map +0 -1
- package/dist/cjs/genproto/google/api/client_pb.js +0 -290
- package/dist/cjs/genproto/google/api/client_pb.js.map +0 -1
- package/dist/cjs/genproto/google/api/http_pb.js +0 -37
- package/dist/cjs/genproto/google/api/http_pb.js.map +0 -1
- package/dist/cjs/genproto/google/api/launch_stage_pb.js +0 -104
- package/dist/cjs/genproto/google/api/launch_stage_pb.js.map +0 -1
- package/dist/cjs/genproto/mochabugapis/adapt/automations/v1/automations_pb.js +0 -179
- package/dist/cjs/genproto/mochabugapis/adapt/automations/v1/automations_pb.js.map +0 -1
- package/dist/cjs/genproto/mochabugapis/adapt/graph/exchange_pb.js +0 -29
- package/dist/cjs/genproto/mochabugapis/adapt/graph/exchange_pb.js.map +0 -1
- package/dist/cjs/genproto/mochabugapis/adapt/graph/jtd_schema_pb.js +0 -29
- package/dist/cjs/genproto/mochabugapis/adapt/graph/jtd_schema_pb.js.map +0 -1
- package/dist/cjs/genproto/mochabugapis/adapt/graph/receiver_pb.js +0 -29
- package/dist/cjs/genproto/mochabugapis/adapt/graph/receiver_pb.js.map +0 -1
- package/dist/cjs/genproto/mochabugapis/adapt/graph/signal_binding_pb.js +0 -88
- package/dist/cjs/genproto/mochabugapis/adapt/graph/signal_binding_pb.js.map +0 -1
- package/dist/cjs/genproto/mochabugapis/adapt/graph/signal_data_pb.js +0 -28
- package/dist/cjs/genproto/mochabugapis/adapt/graph/signal_data_pb.js.map +0 -1
- package/dist/cjs/genproto/mochabugapis/adapt/graph/signal_descriptor_pb.js +0 -29
- package/dist/cjs/genproto/mochabugapis/adapt/graph/signal_descriptor_pb.js.map +0 -1
- package/dist/cjs/genproto/mochabugapis/adapt/graph/signal_format_pb.js +0 -29
- package/dist/cjs/genproto/mochabugapis/adapt/graph/signal_format_pb.js.map +0 -1
- package/dist/cjs/genproto/mochabugapis/adapt/graph/transceiver_pb.js +0 -29
- package/dist/cjs/genproto/mochabugapis/adapt/graph/transceiver_pb.js.map +0 -1
- package/dist/cjs/genproto/mochabugapis/adapt/graph/transmitter_pb.js +0 -65
- package/dist/cjs/genproto/mochabugapis/adapt/graph/transmitter_pb.js.map +0 -1
- package/dist/cjs/genproto/mochabugapis/adapt/graph/vertex_metadata_pb.js +0 -31
- package/dist/cjs/genproto/mochabugapis/adapt/graph/vertex_metadata_pb.js.map +0 -1
- package/dist/cjs/genproto/mochabugapis/adapt/plugins/v1/compound_services_pb.js +0 -33
- package/dist/cjs/genproto/mochabugapis/adapt/plugins/v1/compound_services_pb.js.map +0 -1
- package/dist/cjs/genproto/mochabugapis/adapt/plugins/v1/file_pb.js +0 -28
- package/dist/cjs/genproto/mochabugapis/adapt/plugins/v1/file_pb.js.map +0 -1
- package/dist/cjs/genproto/mochabugapis/adapt/plugins/v1/http_proxy_service_pb.js +0 -105
- package/dist/cjs/genproto/mochabugapis/adapt/plugins/v1/http_proxy_service_pb.js.map +0 -1
- package/dist/cjs/genproto/mochabugapis/adapt/plugins/v1/manifest_pb.js +0 -30
- package/dist/cjs/genproto/mochabugapis/adapt/plugins/v1/manifest_pb.js.map +0 -1
- package/dist/cjs/genproto/mochabugapis/adapt/plugins/v1/oauth2_service_pb.js +0 -187
- package/dist/cjs/genproto/mochabugapis/adapt/plugins/v1/oauth2_service_pb.js.map +0 -1
- package/dist/cjs/genproto/mochabugapis/adapt/plugins/v1/plugins_pb.js +0 -48
- package/dist/cjs/genproto/mochabugapis/adapt/plugins/v1/plugins_pb.js.map +0 -1
- package/dist/cjs/genproto/mochabugapis/adapt/plugins/v1/service_definition_pb.js +0 -32
- package/dist/cjs/genproto/mochabugapis/adapt/plugins/v1/service_definition_pb.js.map +0 -1
- package/dist/cjs/genproto/mochabugapis/adapt/plugins/v1/service_settings_pb.js +0 -40
- package/dist/cjs/genproto/mochabugapis/adapt/plugins/v1/service_settings_pb.js.map +0 -1
- package/dist/cjs/genproto/mochabugapis/adapt/plugins/v1/variable_service_pb.js +0 -30
- package/dist/cjs/genproto/mochabugapis/adapt/plugins/v1/variable_service_pb.js.map +0 -1
- package/dist/cjs/genproto/mochabugapis/adapt/plugins/v1/vertex_pb.js +0 -79
- package/dist/cjs/genproto/mochabugapis/adapt/plugins/v1/vertex_pb.js.map +0 -1
- package/dist/cjs/genproto/mochabugapis/adapt/runtime/v1/incoming_pb.js +0 -74
- package/dist/cjs/genproto/mochabugapis/adapt/runtime/v1/incoming_pb.js.map +0 -1
- package/dist/cjs/genproto/mochabugapis/adapt/runtime/v1/runtime_pb.js +0 -442
- package/dist/cjs/genproto/mochabugapis/adapt/runtime/v1/runtime_pb.js.map +0 -1
- package/dist/cjs/genproto/mochabugapis/adapt/runtime/v1/store_pb.js +0 -94
- package/dist/cjs/genproto/mochabugapis/adapt/runtime/v1/store_pb.js.map +0 -1
- package/dist/cjs/index.js +0 -191
- package/dist/cjs/index.js.map +0 -1
- package/dist/cjs/pubsub-client.js +0 -566
- package/dist/cjs/pubsub-client.js.map +0 -1
- package/dist/esm/genproto/buf/validate/validate_pb.js +0 -352
- package/dist/esm/genproto/buf/validate/validate_pb.js.map +0 -1
- package/dist/esm/genproto/google/api/annotations_pb.js +0 -27
- package/dist/esm/genproto/google/api/annotations_pb.js.map +0 -1
- package/dist/esm/genproto/google/api/client_pb.js +0 -287
- package/dist/esm/genproto/google/api/client_pb.js.map +0 -1
- package/dist/esm/genproto/google/api/http_pb.js +0 -34
- package/dist/esm/genproto/google/api/http_pb.js.map +0 -1
- package/dist/esm/genproto/google/api/launch_stage_pb.js +0 -101
- package/dist/esm/genproto/google/api/launch_stage_pb.js.map +0 -1
- package/dist/esm/genproto/mochabugapis/adapt/automations/v1/automations_pb.js +0 -176
- package/dist/esm/genproto/mochabugapis/adapt/automations/v1/automations_pb.js.map +0 -1
- package/dist/esm/genproto/mochabugapis/adapt/graph/exchange_pb.js +0 -26
- package/dist/esm/genproto/mochabugapis/adapt/graph/exchange_pb.js.map +0 -1
- package/dist/esm/genproto/mochabugapis/adapt/graph/jtd_schema_pb.js +0 -26
- package/dist/esm/genproto/mochabugapis/adapt/graph/jtd_schema_pb.js.map +0 -1
- package/dist/esm/genproto/mochabugapis/adapt/graph/receiver_pb.js +0 -26
- package/dist/esm/genproto/mochabugapis/adapt/graph/receiver_pb.js.map +0 -1
- package/dist/esm/genproto/mochabugapis/adapt/graph/signal_binding_pb.js +0 -85
- package/dist/esm/genproto/mochabugapis/adapt/graph/signal_binding_pb.js.map +0 -1
- package/dist/esm/genproto/mochabugapis/adapt/graph/signal_data_pb.js +0 -25
- package/dist/esm/genproto/mochabugapis/adapt/graph/signal_data_pb.js.map +0 -1
- package/dist/esm/genproto/mochabugapis/adapt/graph/signal_descriptor_pb.js +0 -26
- package/dist/esm/genproto/mochabugapis/adapt/graph/signal_descriptor_pb.js.map +0 -1
- package/dist/esm/genproto/mochabugapis/adapt/graph/signal_format_pb.js +0 -26
- package/dist/esm/genproto/mochabugapis/adapt/graph/signal_format_pb.js.map +0 -1
- package/dist/esm/genproto/mochabugapis/adapt/graph/transceiver_pb.js +0 -26
- package/dist/esm/genproto/mochabugapis/adapt/graph/transceiver_pb.js.map +0 -1
- package/dist/esm/genproto/mochabugapis/adapt/graph/transmitter_pb.js +0 -62
- package/dist/esm/genproto/mochabugapis/adapt/graph/transmitter_pb.js.map +0 -1
- package/dist/esm/genproto/mochabugapis/adapt/graph/vertex_metadata_pb.js +0 -28
- package/dist/esm/genproto/mochabugapis/adapt/graph/vertex_metadata_pb.js.map +0 -1
- package/dist/esm/genproto/mochabugapis/adapt/plugins/v1/compound_services_pb.js +0 -30
- package/dist/esm/genproto/mochabugapis/adapt/plugins/v1/compound_services_pb.js.map +0 -1
- package/dist/esm/genproto/mochabugapis/adapt/plugins/v1/file_pb.js +0 -25
- package/dist/esm/genproto/mochabugapis/adapt/plugins/v1/file_pb.js.map +0 -1
- package/dist/esm/genproto/mochabugapis/adapt/plugins/v1/http_proxy_service_pb.js +0 -102
- package/dist/esm/genproto/mochabugapis/adapt/plugins/v1/http_proxy_service_pb.js.map +0 -1
- package/dist/esm/genproto/mochabugapis/adapt/plugins/v1/manifest_pb.js +0 -27
- package/dist/esm/genproto/mochabugapis/adapt/plugins/v1/manifest_pb.js.map +0 -1
- package/dist/esm/genproto/mochabugapis/adapt/plugins/v1/oauth2_service_pb.js +0 -184
- package/dist/esm/genproto/mochabugapis/adapt/plugins/v1/oauth2_service_pb.js.map +0 -1
- package/dist/esm/genproto/mochabugapis/adapt/plugins/v1/plugins_pb.js +0 -45
- package/dist/esm/genproto/mochabugapis/adapt/plugins/v1/plugins_pb.js.map +0 -1
- package/dist/esm/genproto/mochabugapis/adapt/plugins/v1/service_definition_pb.js +0 -29
- package/dist/esm/genproto/mochabugapis/adapt/plugins/v1/service_definition_pb.js.map +0 -1
- package/dist/esm/genproto/mochabugapis/adapt/plugins/v1/service_settings_pb.js +0 -37
- package/dist/esm/genproto/mochabugapis/adapt/plugins/v1/service_settings_pb.js.map +0 -1
- package/dist/esm/genproto/mochabugapis/adapt/plugins/v1/variable_service_pb.js +0 -27
- package/dist/esm/genproto/mochabugapis/adapt/plugins/v1/variable_service_pb.js.map +0 -1
- package/dist/esm/genproto/mochabugapis/adapt/plugins/v1/vertex_pb.js +0 -76
- package/dist/esm/genproto/mochabugapis/adapt/plugins/v1/vertex_pb.js.map +0 -1
- package/dist/esm/genproto/mochabugapis/adapt/runtime/v1/incoming_pb.js +0 -71
- package/dist/esm/genproto/mochabugapis/adapt/runtime/v1/incoming_pb.js.map +0 -1
- package/dist/esm/genproto/mochabugapis/adapt/runtime/v1/runtime_pb.js +0 -438
- package/dist/esm/genproto/mochabugapis/adapt/runtime/v1/runtime_pb.js.map +0 -1
- package/dist/esm/genproto/mochabugapis/adapt/runtime/v1/store_pb.js +0 -91
- package/dist/esm/genproto/mochabugapis/adapt/runtime/v1/store_pb.js.map +0 -1
- package/dist/esm/pubsub-client.js +0 -559
- package/dist/esm/pubsub-client.js.map +0 -1
- package/dist/types/genproto/buf/validate/validate_pb.d.ts +0 -8490
- package/dist/types/genproto/google/api/annotations_pb.d.ts +0 -13
- package/dist/types/genproto/google/api/client_pb.d.ts +0 -1431
- package/dist/types/genproto/google/api/http_pb.d.ts +0 -842
- package/dist/types/genproto/google/api/launch_stage_pb.d.ts +0 -93
- package/dist/types/genproto/mochabugapis/adapt/automations/v1/automations_pb.d.ts +0 -1043
- package/dist/types/genproto/mochabugapis/adapt/graph/exchange_pb.d.ts +0 -76
- package/dist/types/genproto/mochabugapis/adapt/graph/jtd_schema_pb.d.ts +0 -400
- package/dist/types/genproto/mochabugapis/adapt/graph/receiver_pb.d.ts +0 -68
- package/dist/types/genproto/mochabugapis/adapt/graph/signal_binding_pb.d.ts +0 -429
- package/dist/types/genproto/mochabugapis/adapt/graph/signal_data_pb.d.ts +0 -197
- package/dist/types/genproto/mochabugapis/adapt/graph/signal_descriptor_pb.d.ts +0 -160
- package/dist/types/genproto/mochabugapis/adapt/graph/signal_format_pb.d.ts +0 -304
- package/dist/types/genproto/mochabugapis/adapt/graph/transceiver_pb.d.ts +0 -76
- package/dist/types/genproto/mochabugapis/adapt/graph/transmitter_pb.d.ts +0 -119
- package/dist/types/genproto/mochabugapis/adapt/graph/vertex_metadata_pb.d.ts +0 -98
- package/dist/types/genproto/mochabugapis/adapt/plugins/v1/compound_services_pb.d.ts +0 -346
- package/dist/types/genproto/mochabugapis/adapt/plugins/v1/file_pb.d.ts +0 -63
- package/dist/types/genproto/mochabugapis/adapt/plugins/v1/http_proxy_service_pb.d.ts +0 -1281
- package/dist/types/genproto/mochabugapis/adapt/plugins/v1/manifest_pb.d.ts +0 -387
- package/dist/types/genproto/mochabugapis/adapt/plugins/v1/oauth2_service_pb.d.ts +0 -804
- package/dist/types/genproto/mochabugapis/adapt/plugins/v1/plugins_pb.d.ts +0 -237
- package/dist/types/genproto/mochabugapis/adapt/plugins/v1/service_definition_pb.d.ts +0 -240
- package/dist/types/genproto/mochabugapis/adapt/plugins/v1/service_settings_pb.d.ts +0 -538
- package/dist/types/genproto/mochabugapis/adapt/plugins/v1/variable_service_pb.d.ts +0 -189
- package/dist/types/genproto/mochabugapis/adapt/plugins/v1/vertex_pb.d.ts +0 -268
- package/dist/types/genproto/mochabugapis/adapt/runtime/v1/incoming_pb.d.ts +0 -338
- package/dist/types/genproto/mochabugapis/adapt/runtime/v1/runtime_pb.d.ts +0 -2720
- package/dist/types/genproto/mochabugapis/adapt/runtime/v1/store_pb.d.ts +0 -871
- package/dist/types/pubsub-client.d.ts +0 -59
|
@@ -0,0 +1,271 @@
|
|
|
1
|
+
"use strict";var MbAdapt=(()=>{var Ae=Object.defineProperty;var so=Object.getOwnPropertyDescriptor;var ao=Object.getOwnPropertyNames;var io=Object.prototype.hasOwnProperty;var co=(e,n)=>{for(var t in n)Ae(e,t,{get:n[t],enumerable:!0})},lo=(e,n,t,o)=>{if(n&&typeof n=="object"||typeof n=="function")for(let s of ao(n))!io.call(e,s)&&s!==t&&Ae(e,s,{get:()=>n[s],enumerable:!(o=so(n,s))||o.enumerable});return e};var ro=e=>lo(Ae({},"__esModule",{value:!0}),e);var Vs={};co(Vs,{AdaptWebClient:()=>cn});function v(e,n){return e!==null&&typeof e=="object"&&"$typeName"in e&&typeof e.$typeName=="string"?n===void 0?!0:n.typeName===e.$typeName:!1}var d;(function(e){e[e.DOUBLE=1]="DOUBLE",e[e.FLOAT=2]="FLOAT",e[e.INT64=3]="INT64",e[e.UINT64=4]="UINT64",e[e.INT32=5]="INT32",e[e.FIXED64=6]="FIXED64",e[e.FIXED32=7]="FIXED32",e[e.BOOL=8]="BOOL",e[e.STRING=9]="STRING",e[e.BYTES=12]="BYTES",e[e.UINT32=13]="UINT32",e[e.SFIXED32=15]="SFIXED32",e[e.SFIXED64=16]="SFIXED64",e[e.SINT32=17]="SINT32",e[e.SINT64=18]="SINT64"})(d||(d={}));function mn(){let e=0,n=0;for(let o=0;o<28;o+=7){let s=this.buf[this.pos++];if(e|=(s&127)<<o,(s&128)==0)return this.assertBounds(),[e,n]}let t=this.buf[this.pos++];if(e|=(t&15)<<28,n=(t&112)>>4,(t&128)==0)return this.assertBounds(),[e,n];for(let o=3;o<=31;o+=7){let s=this.buf[this.pos++];if(n|=(s&127)<<o,(s&128)==0)return this.assertBounds(),[e,n]}throw new Error("invalid varint")}var oe=4294967296;function Ce(e){let n=e[0]==="-";n&&(e=e.slice(1));let t=1e6,o=0,s=0;function a(i,c){let r=Number(e.slice(i,c));s*=t,o=o*t+r,o>=oe&&(s=s+(o/oe|0),o=o%oe)}return a(-24,-18),a(-18,-12),a(-12,-6),a(-6),n?bn(o,s):We(o,s)}function un(e,n){let t=We(e,n),o=t.hi&2147483648;o&&(t=bn(t.lo,t.hi));let s=Xe(t.lo,t.hi);return o?"-"+s:s}function Xe(e,n){if({lo:e,hi:n}=mo(e,n),n<=2097151)return String(oe*n+e);let t=e&16777215,o=(e>>>24|n<<8)&16777215,s=n>>16&65535,a=t+o*6777216+s*6710656,i=o+s*8147497,c=s*2,r=1e7;return a>=r&&(i+=Math.floor(a/r),a%=r),i>=r&&(c+=Math.floor(i/r),i%=r),c.toString()+rn(i)+rn(a)}function mo(e,n){return{lo:e>>>0,hi:n>>>0}}function We(e,n){return{lo:e|0,hi:n|0}}function bn(e,n){return n=~n,e?e=~e+1:n+=1,We(e,n)}var rn=e=>{let n=String(e);return"0000000".slice(n.length)+n};function Be(e,n){if(e>=0){for(;e>127;)n.push(e&127|128),e=e>>>7;n.push(e)}else{for(let t=0;t<9;t++)n.push(e&127|128),e=e>>7;n.push(1)}}function gn(){let e=this.buf[this.pos++],n=e&127;if((e&128)==0)return this.assertBounds(),n;if(e=this.buf[this.pos++],n|=(e&127)<<7,(e&128)==0)return this.assertBounds(),n;if(e=this.buf[this.pos++],n|=(e&127)<<14,(e&128)==0)return this.assertBounds(),n;if(e=this.buf[this.pos++],n|=(e&127)<<21,(e&128)==0)return this.assertBounds(),n;e=this.buf[this.pos++],n|=(e&15)<<28;for(let t=5;(e&128)!==0&&t<10;t++)e=this.buf[this.pos++];if((e&128)!=0)throw new Error("invalid varint");return this.assertBounds(),n>>>0}var u=uo();function uo(){let e=new DataView(new ArrayBuffer(8));if(typeof BigInt=="function"&&typeof e.getBigInt64=="function"&&typeof e.getBigUint64=="function"&&typeof e.setBigInt64=="function"&&typeof e.setBigUint64=="function"&&(!!globalThis.Deno||typeof process!="object"||typeof process.env!="object"||process.env.BUF_BIGINT_DISABLE!=="1")){let t=BigInt("-9223372036854775808"),o=BigInt("9223372036854775807"),s=BigInt("0"),a=BigInt("18446744073709551615");return{zero:BigInt(0),supported:!0,parse(i){let c=typeof i=="bigint"?i:BigInt(i);if(c>o||c<t)throw new Error(`invalid int64: ${i}`);return c},uParse(i){let c=typeof i=="bigint"?i:BigInt(i);if(c>a||c<s)throw new Error(`invalid uint64: ${i}`);return c},enc(i){return e.setBigInt64(0,this.parse(i),!0),{lo:e.getInt32(0,!0),hi:e.getInt32(4,!0)}},uEnc(i){return e.setBigInt64(0,this.uParse(i),!0),{lo:e.getInt32(0,!0),hi:e.getInt32(4,!0)}},dec(i,c){return e.setInt32(0,i,!0),e.setInt32(4,c,!0),e.getBigInt64(0,!0)},uDec(i,c){return e.setInt32(0,i,!0),e.setInt32(4,c,!0),e.getBigUint64(0,!0)}}}return{zero:"0",supported:!1,parse(t){return typeof t!="string"&&(t=t.toString()),hn(t),t},uParse(t){return typeof t!="string"&&(t=t.toString()),In(t),t},enc(t){return typeof t!="string"&&(t=t.toString()),hn(t),Ce(t)},uEnc(t){return typeof t!="string"&&(t=t.toString()),In(t),Ce(t)},dec(t,o){return un(t,o)},uDec(t,o){return Xe(t,o)}}}function hn(e){if(!/^-?[0-9]+$/.test(e))throw new Error("invalid int64: "+e)}function In(e){if(!/^[0-9]+$/.test(e))throw new Error("invalid uint64: "+e)}function G(e,n){switch(e){case d.STRING:return"";case d.BOOL:return!1;case d.DOUBLE:case d.FLOAT:return 0;case d.INT64:case d.UINT64:case d.SFIXED64:case d.FIXED64:case d.SINT64:return n?"0":u.zero;case d.BYTES:return new Uint8Array(0);default:return 0}}function pn(e,n){switch(e){case d.BOOL:return n===!1;case d.STRING:return n==="";case d.BYTES:return n instanceof Uint8Array&&!n.byteLength;default:return n==0}}var Gn=2,y=Symbol.for("reflect unsafe local");function se(e,n){let t=e[n.localName].case;return t===void 0?t:n.fields.find(o=>o.localName===t)}function yn(e,n){let t=n.localName;if(n.oneof)return e[n.oneof.localName].case===t;if(n.presence!=Gn)return e[t]!==void 0&&Object.prototype.hasOwnProperty.call(e,t);switch(n.fieldKind){case"list":return e[t].length>0;case"map":return Object.keys(e[t]).length>0;case"scalar":return!pn(n.scalar,e[t]);case"enum":return e[t]!==n.enum.values[0].number}throw new Error("message field with implicit presence")}function F(e,n){return Object.prototype.hasOwnProperty.call(e,n)&&e[n]!==void 0}function ae(e,n){if(n.oneof){let t=e[n.oneof.localName];return t.case===n.localName?t.value:void 0}return e[n.localName]}function ie(e,n,t){n.oneof?e[n.oneof.localName]={case:n.localName,value:t}:e[n.localName]=t}function Zn(e,n){let t=n.localName;if(n.oneof){let o=n.oneof.localName;e[o].case===t&&(e[o]={case:void 0})}else if(n.presence!=Gn)delete e[t];else switch(n.fieldKind){case"map":e[t]={};break;case"list":e[t]=[];break;case"enum":e[t]=n.enum.values[0].number;break;case"scalar":e[t]=G(n.scalar,n.longAsString);break}}function f(e){return e!==null&&typeof e=="object"&&!Array.isArray(e)}function D(e,n){var t,o,s,a;if(f(e)&&y in e&&"add"in e&&"field"in e&&typeof e.field=="function"){if(n!==void 0){let i=n,c=e.field();return i.listKind==c.listKind&&i.scalar===c.scalar&&((t=i.message)===null||t===void 0?void 0:t.typeName)===((o=c.message)===null||o===void 0?void 0:o.typeName)&&((s=i.enum)===null||s===void 0?void 0:s.typeName)===((a=c.enum)===null||a===void 0?void 0:a.typeName)}return!0}return!1}function T(e,n){var t,o,s,a;if(f(e)&&y in e&&"has"in e&&"field"in e&&typeof e.field=="function"){if(n!==void 0){let i=n,c=e.field();return i.mapKey===c.mapKey&&i.mapKind==c.mapKind&&i.scalar===c.scalar&&((t=i.message)===null||t===void 0?void 0:t.typeName)===((o=c.message)===null||o===void 0?void 0:o.typeName)&&((s=i.enum)===null||s===void 0?void 0:s.typeName)===((a=c.enum)===null||a===void 0?void 0:a.typeName)}return!0}return!1}function _(e,n){return f(e)&&y in e&&"desc"in e&&f(e.desc)&&e.desc.kind==="message"&&(n===void 0||e.desc.typeName==n.typeName)}function Vn(e){return fn(e.$typeName)}function J(e){let n=e.fields[0];return fn(e.typeName)&&n!==void 0&&n.fieldKind=="scalar"&&n.name=="value"&&n.number==1}function fn(e){return e.startsWith("google.protobuf.")&&["DoubleValue","FloatValue","Int64Value","UInt64Value","Int32Value","UInt32Value","BoolValue","StringValue","BytesValue"].includes(e.substring(16))}var bo=999,go=998,de=2;function M(e,n){if(v(n,e))return n;let t=yo(e);return n!==void 0&&ho(e,t,n),t}function ho(e,n,t){for(let o of e.members){let s=t[o.localName];if(s==null)continue;let a;if(o.kind=="oneof"){let i=se(t,o);if(!i)continue;a=i,s=ae(t,i)}else a=o;switch(a.fieldKind){case"message":s=xe(a,s);break;case"scalar":s=Xn(a,s);break;case"list":s=po(a,s);break;case"map":s=Io(a,s);break}ie(n,a,s)}return n}function Xn(e,n){return e.scalar==d.BYTES?Je(n):n}function Io(e,n){if(f(n)){if(e.scalar==d.BYTES)return An(n,Je);if(e.mapKind=="message")return An(n,t=>xe(e,t))}return n}function po(e,n){if(Array.isArray(n)){if(e.scalar==d.BYTES)return n.map(Je);if(e.listKind=="message")return n.map(t=>xe(e,t))}return n}function xe(e,n){if(e.fieldKind=="message"&&!e.oneof&&J(e.message))return Xn(e.message.fields[0],n);if(f(n)){if(e.message.typeName=="google.protobuf.Struct"&&e.parent.typeName!=="google.protobuf.Value")return n;if(!v(n,e.message))return M(e.message,n)}return n}function Je(e){return Array.isArray(e)?new Uint8Array(e):e}function An(e,n){let t={};for(let o of Object.entries(e))t[o[0]]=n(o[1]);return t}var Go=Symbol(),Cn=new WeakMap;function yo(e){let n;if(Zo(e)){let t=Cn.get(e),o,s;if(t)({prototype:o,members:s}=t);else{o={},s=new Set;for(let a of e.members)a.kind!="oneof"&&(a.fieldKind!="scalar"&&a.fieldKind!="enum"||a.presence!=de&&(s.add(a),o[a.localName]=Se(a)));Cn.set(e,{prototype:o,members:s})}n=Object.create(o),n.$typeName=e.typeName;for(let a of e.members)s.has(a)||a.kind=="field"&&(a.fieldKind=="message"||(a.fieldKind=="scalar"||a.fieldKind=="enum")&&a.presence!=de)||(n[a.localName]=Se(a))}else{n={$typeName:e.typeName};for(let t of e.members)(t.kind=="oneof"||t.presence==de)&&(n[t.localName]=Se(t))}return n}function Zo(e){switch(e.file.edition){case bo:return!1;case go:return!0;default:return e.fields.some(n=>n.presence!=de&&n.fieldKind!="message"&&!n.oneof)}}function Se(e){if(e.kind=="oneof")return{case:void 0};if(e.fieldKind=="list")return[];if(e.fieldKind=="map")return{};if(e.fieldKind=="message")return Go;let n=e.getDefaultValue();return n!==void 0?e.fieldKind=="scalar"&&e.longAsString?n.toString():n:e.fieldKind=="scalar"?G(e.scalar,e.longAsString):e.enum.values[0].number}var A=class extends Error{constructor(n,t,o="FieldValueInvalidError"){super(t),this.name=o,this.field=()=>n}};var Ee=Symbol.for("@bufbuild/protobuf/text-encoding");function ce(){if(globalThis[Ee]==null){let e=new globalThis.TextEncoder,n=new globalThis.TextDecoder;globalThis[Ee]={encodeUtf8(t){return e.encode(t)},decodeUtf8(t){return n.decode(t)},checkUtf8(t){try{return encodeURIComponent(t),!0}catch{return!1}}}}return globalThis[Ee]}var p;(function(e){e[e.Varint=0]="Varint",e[e.Bit64=1]="Bit64",e[e.LengthDelimited=2]="LengthDelimited",e[e.StartGroup=3]="StartGroup",e[e.EndGroup=4]="EndGroup",e[e.Bit32=5]="Bit32"})(p||(p={}));var Wn=34028234663852886e22,Bn=-34028234663852886e22,Sn=4294967295,xn=2147483647,Jn=-2147483648;var z=class{constructor(n,t=ce().decodeUtf8){this.decodeUtf8=t,this.varint64=mn,this.uint32=gn,this.buf=n,this.len=n.length,this.pos=0,this.view=new DataView(n.buffer,n.byteOffset,n.byteLength)}tag(){let n=this.uint32(),t=n>>>3,o=n&7;if(t<=0||o<0||o>5)throw new Error("illegal tag: field no "+t+" wire type "+o);return[t,o]}skip(n,t){let o=this.pos;switch(n){case p.Varint:for(;this.buf[this.pos++]&128;);break;case p.Bit64:this.pos+=4;case p.Bit32:this.pos+=4;break;case p.LengthDelimited:let s=this.uint32();this.pos+=s;break;case p.StartGroup:for(;;){let[a,i]=this.tag();if(i===p.EndGroup){if(t!==void 0&&a!==t)throw new Error("invalid end group tag");break}this.skip(i,a)}break;default:throw new Error("cant skip wire type "+n)}return this.assertBounds(),this.buf.subarray(o,this.pos)}assertBounds(){if(this.pos>this.len)throw new RangeError("premature EOF")}int32(){return this.uint32()|0}sint32(){let n=this.uint32();return n>>>1^-(n&1)}int64(){return u.dec(...this.varint64())}uint64(){return u.uDec(...this.varint64())}sint64(){let[n,t]=this.varint64(),o=-(n&1);return n=(n>>>1|(t&1)<<31)^o,t=t>>>1^o,u.dec(n,t)}bool(){let[n,t]=this.varint64();return n!==0||t!==0}fixed32(){return this.view.getUint32((this.pos+=4)-4,!0)}sfixed32(){return this.view.getInt32((this.pos+=4)-4,!0)}fixed64(){return u.uDec(this.sfixed32(),this.sfixed32())}sfixed64(){return u.dec(this.sfixed32(),this.sfixed32())}float(){return this.view.getFloat32((this.pos+=4)-4,!0)}double(){return this.view.getFloat64((this.pos+=8)-8,!0)}bytes(){let n=this.uint32(),t=this.pos;return this.pos+=n,this.assertBounds(),this.buf.subarray(t,t+n)}string(){return this.decodeUtf8(this.bytes())}};function W(e,n){let t=e.fieldKind=="list"?D(n,e):e.fieldKind=="map"?T(n,e):Ye(e,n);if(t===!0)return;let o;switch(e.fieldKind){case"list":o=`expected ${Fn(e)}, got ${L(n)}`;break;case"map":o=`expected ${Hn(e)}, got ${L(n)}`;break;default:o=le(e,n,t)}return new A(e,o)}function Re(e,n,t){let o=Ye(e,t);if(o!==!0)return new A(e,`list item #${n+1}: ${le(e,t,o)}`)}function En(e,n,t){let o=Rn(n,e.mapKey);if(o!==!0)return new A(e,`invalid map key: ${le({scalar:e.mapKey},n,o)}`);let s=Ye(e,t);if(s!==!0)return new A(e,`map entry ${L(n)}: ${le(e,t,s)}`)}function Ye(e,n){return e.scalar!==void 0?Rn(n,e.scalar):e.enum!==void 0?e.enum.open?Number.isInteger(n):e.enum.values.some(t=>t.number===n):_(n,e.message)}function Rn(e,n){switch(n){case d.DOUBLE:return typeof e=="number";case d.FLOAT:return typeof e!="number"?!1:Number.isNaN(e)||!Number.isFinite(e)?!0:e>Wn||e<Bn?`${e.toFixed()} out of range`:!0;case d.INT32:case d.SFIXED32:case d.SINT32:return typeof e!="number"||!Number.isInteger(e)?!1:e>xn||e<Jn?`${e.toFixed()} out of range`:!0;case d.FIXED32:case d.UINT32:return typeof e!="number"||!Number.isInteger(e)?!1:e>Sn||e<0?`${e.toFixed()} out of range`:!0;case d.BOOL:return typeof e=="boolean";case d.STRING:return typeof e!="string"?!1:ce().checkUtf8(e)||"invalid UTF8";case d.BYTES:return e instanceof Uint8Array;case d.INT64:case d.SFIXED64:case d.SINT64:if(typeof e=="bigint"||typeof e=="number"||typeof e=="string"&&e.length>0)try{return u.parse(e),!0}catch{return`${e} out of range`}return!1;case d.FIXED64:case d.UINT64:if(typeof e=="bigint"||typeof e=="number"||typeof e=="string"&&e.length>0)try{return u.uParse(e),!0}catch{return`${e} out of range`}return!1}}function le(e,n,t){return t=typeof t=="string"?`: ${t}`:`, got ${L(n)}`,e.scalar!==void 0?`expected ${Vo(e.scalar)}`+t:e.enum!==void 0?`expected ${e.enum.toString()}`+t:`expected ${Yn(e.message)}`+t}function L(e){switch(typeof e){case"object":return e===null?"null":e instanceof Uint8Array?`Uint8Array(${e.length})`:Array.isArray(e)?`Array(${e.length})`:D(e)?Fn(e.field()):T(e)?Hn(e.field()):_(e)?Yn(e.desc):v(e)?`message ${e.$typeName}`:"object";case"string":return e.length>30?"string":`"${e.split('"').join('\\"')}"`;case"boolean":return String(e);case"number":return String(e);case"bigint":return String(e)+"n";default:return typeof e}}function Yn(e){return`ReflectMessage (${e.typeName})`}function Fn(e){switch(e.listKind){case"message":return`ReflectList (${e.message.toString()})`;case"enum":return`ReflectList (${e.enum.toString()})`;case"scalar":return`ReflectList (${d[e.scalar]})`}}function Hn(e){switch(e.mapKind){case"message":return`ReflectMap (${d[e.mapKey]}, ${e.message.toString()})`;case"enum":return`ReflectMap (${d[e.mapKey]}, ${e.enum.toString()})`;case"scalar":return`ReflectMap (${d[e.mapKey]}, ${d[e.scalar]})`}}function Vo(e){switch(e){case d.STRING:return"string";case d.BOOL:return"boolean";case d.INT64:case d.SINT64:case d.SFIXED64:return"bigint (int64)";case d.UINT64:case d.FIXED64:return"bigint (uint64)";case d.BYTES:return"Uint8Array";case d.DOUBLE:return"number (float64)";case d.FLOAT:return"number (float32)";case d.FIXED32:case d.UINT32:return"number (uint32)";case d.INT32:case d.SFIXED32:case d.SINT32:return"number (int32)"}}function B(e,n,t=!0){return new me(e,n,t)}var Nn=new WeakMap,me=class{get sortedFields(){let n=Nn.get(this.desc);if(n)return n;let t=this.desc.fields.concat().sort((o,s)=>o.number-s.number);return Nn.set(this.desc,t),t}constructor(n,t,o=!0){this.lists=new Map,this.maps=new Map,this.check=o,this.desc=n,this.message=this[y]=t??M(n),this.fields=n.fields,this.oneofs=n.oneofs,this.members=n.members}findNumber(n){return this._fieldsByNumber||(this._fieldsByNumber=new Map(this.desc.fields.map(t=>[t.number,t]))),this._fieldsByNumber.get(n)}oneofCase(n){return P(this.message,n),se(this.message,n)}isSet(n){return P(this.message,n),yn(this.message,n)}clear(n){P(this.message,n),Zn(this.message,n)}get(n){P(this.message,n);let t=ae(this.message,n);switch(n.fieldKind){case"list":let o=this.lists.get(n);return(!o||o[y]!==t)&&this.lists.set(n,o=new Ne(n,t,this.check)),o;case"map":let s=this.maps.get(n);return(!s||s[y]!==t)&&this.maps.set(n,s=new Me(n,t,this.check)),s;case"message":return Le(n,t,this.check);case"scalar":return t===void 0?G(n.scalar,!1):we(n,t);case"enum":return t??n.enum.values[0].number}}set(n,t){if(P(this.message,n),this.check){let s=W(n,t);if(s)throw s}let o;n.fieldKind=="message"?o=ze(n,t):T(t)||D(t)?o=t[y]:o=Ke(n,t),ie(this.message,n,o)}getUnknown(){return this.message.$unknown}setUnknown(n){this.message.$unknown=n}};function P(e,n){if(n.parent.typeName!==e.$typeName)throw new A(n,`cannot use ${n.toString()} with message ${e.$typeName}`,"ForeignFieldError")}var Ne=class{field(){return this._field}get size(){return this._arr.length}constructor(n,t,o){this._field=n,this._arr=this[y]=t,this.check=o}get(n){let t=this._arr[n];return t===void 0?void 0:Fe(this._field,t,this.check)}set(n,t){if(n<0||n>=this._arr.length)throw new A(this._field,`list item #${n+1}: out of range`);if(this.check){let o=Re(this._field,n,t);if(o)throw o}this._arr[n]=Mn(this._field,t)}add(n){if(this.check){let t=Re(this._field,this._arr.length,n);if(t)throw t}this._arr.push(Mn(this._field,n))}clear(){this._arr.splice(0,this._arr.length)}[Symbol.iterator](){return this.values()}keys(){return this._arr.keys()}*values(){for(let n of this._arr)yield Fe(this._field,n,this.check)}*entries(){for(let n=0;n<this._arr.length;n++)yield[n,Fe(this._field,this._arr[n],this.check)]}};var Me=class{constructor(n,t,o=!0){this.obj=this[y]=t??{},this.check=o,this._field=n}field(){return this._field}set(n,t){if(this.check){let o=En(this._field,n,t);if(o)throw o}return this.obj[re(n)]=fo(this._field,t),this}delete(n){let t=re(n),o=Object.prototype.hasOwnProperty.call(this.obj,t);return o&&delete this.obj[t],o}clear(){for(let n of Object.keys(this.obj))delete this.obj[n]}get(n){let t=this.obj[re(n)];return t!==void 0&&(t=He(this._field,t,this.check)),t}has(n){return Object.prototype.hasOwnProperty.call(this.obj,re(n))}*keys(){for(let n of Object.keys(this.obj))yield zn(n,this._field.mapKey)}*entries(){for(let n of Object.entries(this.obj))yield[zn(n[0],this._field.mapKey),He(this._field,n[1],this.check)]}[Symbol.iterator](){return this.entries()}get size(){return Object.keys(this.obj).length}*values(){for(let n of Object.values(this.obj))yield He(this._field,n,this.check)}forEach(n,t){for(let o of this.entries())n.call(t,o[1],o[0],this)}};function ze(e,n){return _(n)?Vn(n.message)&&!e.oneof&&e.fieldKind=="message"?n.message.value:n.desc.typeName=="google.protobuf.Struct"&&e.parent.typeName!="google.protobuf.Value"?wn(n.message):n.message:n}function Le(e,n,t){return n!==void 0&&(J(e.message)&&!e.oneof&&e.fieldKind=="message"?n={$typeName:e.message.typeName,value:we(e.message.fields[0],n)}:e.message.typeName=="google.protobuf.Struct"&&e.parent.typeName!="google.protobuf.Value"&&f(n)&&(n=Ln(n))),new me(e.message,n,t)}function Mn(e,n){return e.listKind=="message"?ze(e,n):Ke(e,n)}function Fe(e,n,t){return e.listKind=="message"?Le(e,n,t):we(e,n)}function fo(e,n){return e.mapKind=="message"?ze(e,n):Ke(e,n)}function He(e,n,t){return e.mapKind=="message"?Le(e,n,t):n}function re(e){return typeof e=="string"||typeof e=="number"?e:String(e)}function zn(e,n){switch(n){case d.STRING:return e;case d.INT32:case d.FIXED32:case d.UINT32:case d.SFIXED32:case d.SINT32:{let t=Number.parseInt(e);if(Number.isFinite(t))return t;break}case d.BOOL:switch(e){case"true":return!0;case"false":return!1}break;case d.UINT64:case d.FIXED64:try{return u.uParse(e)}catch{}break;default:try{return u.parse(e)}catch{}break}return e}function we(e,n){switch(e.scalar){case d.INT64:case d.SFIXED64:case d.SINT64:"longAsString"in e&&e.longAsString&&typeof n=="string"&&(n=u.parse(n));break;case d.FIXED64:case d.UINT64:"longAsString"in e&&e.longAsString&&typeof n=="string"&&(n=u.uParse(n));break}return n}function Ke(e,n){switch(e.scalar){case d.INT64:case d.SFIXED64:case d.SINT64:"longAsString"in e&&e.longAsString?n=String(n):(typeof n=="string"||typeof n=="number")&&(n=u.parse(n));break;case d.FIXED64:case d.UINT64:"longAsString"in e&&e.longAsString?n=String(n):(typeof n=="string"||typeof n=="number")&&(n=u.uParse(n));break}return n}function Ln(e){let n={$typeName:"google.protobuf.Struct",fields:{}};if(f(e))for(let[t,o]of Object.entries(e))n.fields[t]=kn(o);return n}function wn(e){let n={};for(let[t,o]of Object.entries(e.fields))n[t]=Kn(o);return n}function Kn(e){switch(e.kind.case){case"structValue":return wn(e.kind.value);case"listValue":return e.kind.value.values.map(Kn);case"nullValue":case void 0:return null;default:return e.kind.value}}function kn(e){let n={$typeName:"google.protobuf.Value",kind:{case:void 0}};switch(typeof e){case"number":n.kind={case:"numberValue",value:e};break;case"string":n.kind={case:"stringValue",value:e};break;case"boolean":n.kind={case:"boolValue",value:e};break;case"object":if(e===null)n.kind={case:"nullValue",value:0};else if(Array.isArray(e)){let t={$typeName:"google.protobuf.ListValue",values:[]};if(Array.isArray(e))for(let o of e)t.values.push(kn(o));n.kind={case:"listValue",value:t}}else n.kind={case:"structValue",value:Ln(e)};break}return n}function Qn(e){let n=Ao(),t=e.length*3/4;e[e.length-2]=="="?t-=2:e[e.length-1]=="="&&(t-=1);let o=new Uint8Array(t),s=0,a=0,i,c=0;for(let r=0;r<e.length;r++){if(i=n[e.charCodeAt(r)],i===void 0)switch(e[r]){case"=":a=0;case`
|
|
2
|
+
`:case"\r":case" ":case" ":continue;default:throw Error("invalid base64 string")}switch(a){case 0:c=i,a=1;break;case 1:o[s++]=c<<2|(i&48)>>4,c=i,a=2;break;case 2:o[s++]=(c&15)<<4|(i&60)>>2,c=i,a=3;break;case 3:o[s++]=(c&3)<<6|i,a=0;break}}if(a==1)throw Error("invalid base64 string");return o.subarray(0,s)}function vn(e,n="std"){let t=Dn(n),o=n=="std",s="",a=0,i,c=0;for(let r=0;r<e.length;r++)switch(i=e[r],a){case 0:s+=t[i>>2],c=(i&3)<<4,a=1;break;case 1:s+=t[c|i>>4],c=(i&15)<<2,a=2;break;case 2:s+=t[c|i>>6],s+=t[i&63],a=0;break}return a&&(s+=t[c],o&&(s+="=",a==1&&(s+="="))),s}var ue,Un,w;function Dn(e){return ue||(ue="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".split(""),Un=ue.slice(0,-2).concat("-","_")),e=="url"?Un:ue}function Ao(){if(!w){w=[];let e=Dn("std");for(let n=0;n<e.length;n++)w[e[n].charCodeAt(0)]=n;w[45]=e.indexOf("+"),w[95]=e.indexOf("/")}return w}function E(e){let n=!1,t=[];for(let o=0;o<e.length;o++){let s=e.charAt(o);switch(s){case"_":n=!0;break;case"0":case"1":case"2":case"3":case"4":case"5":case"6":case"7":case"8":case"9":t.push(s),n=!1;break;default:n&&(n=!1,s=s.toUpperCase()),t.push(s);break}}return t.join("")}var Co=new Set(["constructor","toString","toJSON","valueOf"]);function K(e){return Co.has(e)?e+"$":e}function O(e){for(let n of e.field)F(n,"jsonName")||(n.jsonName=E(n.name));e.nestedType.forEach(O)}function Tn(e,n){let t=e.values.find(o=>o.name===n);if(!t)throw new Error(`cannot parse ${e} default value: ${n}`);return t.number}function _n(e,n){switch(e){case d.STRING:return n;case d.BYTES:{let t=Xo(n);if(t===!1)throw new Error(`cannot parse ${d[e]} default value: ${n}`);return t}case d.INT64:case d.SFIXED64:case d.SINT64:return u.parse(n);case d.UINT64:case d.FIXED64:return u.uParse(n);case d.DOUBLE:case d.FLOAT:switch(n){case"inf":return Number.POSITIVE_INFINITY;case"-inf":return Number.NEGATIVE_INFINITY;case"nan":return Number.NaN;default:return parseFloat(n)}case d.BOOL:return n==="true";case d.INT32:case d.UINT32:case d.SINT32:case d.FIXED32:case d.SFIXED32:return parseInt(n,10)}}function Xo(e){let n=[],t={tail:e,c:"",next(){return this.tail.length==0?!1:(this.c=this.tail[0],this.tail=this.tail.substring(1),!0)},take(o){if(this.tail.length>=o){let s=this.tail.substring(0,o);return this.tail=this.tail.substring(o),s}return!1}};for(;t.next();)switch(t.c){case"\\":if(t.next())switch(t.c){case"\\":n.push(t.c.charCodeAt(0));break;case"b":n.push(8);break;case"f":n.push(12);break;case"n":n.push(10);break;case"r":n.push(13);break;case"t":n.push(9);break;case"v":n.push(11);break;case"0":case"1":case"2":case"3":case"4":case"5":case"6":case"7":{let o=t.c,s=t.take(2);if(s===!1)return!1;let a=parseInt(o+s,8);if(Number.isNaN(a))return!1;n.push(a);break}case"x":{let o=t.c,s=t.take(2);if(s===!1)return!1;let a=parseInt(o+s,16);if(Number.isNaN(a))return!1;n.push(a);break}case"u":{let o=t.c,s=t.take(4);if(s===!1)return!1;let a=parseInt(o+s,16);if(Number.isNaN(a))return!1;let i=new Uint8Array(4);new DataView(i.buffer).setInt32(0,a,!0),n.push(i[0],i[1],i[2],i[3]);break}case"U":{let o=t.c,s=t.take(8);if(s===!1)return!1;let a=u.uEnc(o+s),i=new Uint8Array(8),c=new DataView(i.buffer);c.setInt32(0,a.lo,!0),c.setInt32(4,a.hi,!0),n.push(i[0],i[1],i[2],i[3],i[4],i[5],i[6],i[7]);break}}break;default:n.push(t.c.charCodeAt(0))}return new Uint8Array(n)}function*be(e){switch(e.kind){case"file":for(let n of e.messages)yield n,yield*be(n);yield*e.enums,yield*e.services,yield*e.extensions;break;case"message":for(let n of e.nestedMessages)yield n,yield*be(n);yield*e.nestedEnums,yield*e.nestedExtensions;break}}function ge(...e){let n=Wo();if(!e.length)return n;if("$typeName"in e[0]&&e[0].$typeName=="google.protobuf.FileDescriptorSet"){for(let t of e[0].file)$n(t,n);return n}if("$typeName"in e[0]){let a=function(i){let c=[];for(let r of i.dependency){if(n.getFile(r)!=null||s.has(r))continue;let l=o(r);if(!l)throw new Error(`Unable to resolve ${r}, imported by ${i.name}`);"kind"in l?n.addFile(l,!1,!0):(s.add(l.name),c.push(l))}return c.concat(...c.map(a))},t=e[0],o=e[1],s=new Set;for(let i of[t,...a(t)].reverse())$n(i,n)}else for(let t of e)for(let o of t.files)n.addFile(o);return n}function Wo(){let e=new Map,n=new Map,t=new Map;return{kind:"registry",types:e,extendees:n,[Symbol.iterator](){return e.values()},get files(){return t.values()},addFile(o,s,a){if(t.set(o.proto.name,o),!s)for(let i of be(o))this.add(i);if(a)for(let i of o.dependencies)this.addFile(i,s,a)},add(o){if(o.kind=="extension"){let s=n.get(o.extendee.typeName);s||n.set(o.extendee.typeName,s=new Map),s.set(o.number,o)}e.set(o.typeName,o)},get(o){return e.get(o)},getFile(o){return t.get(o)},getMessage(o){let s=e.get(o);return s?.kind=="message"?s:void 0},getEnum(o){let s=e.get(o);return s?.kind=="enum"?s:void 0},getExtension(o){let s=e.get(o);return s?.kind=="extension"?s:void 0},getExtensionFor(o,s){var a;return(a=n.get(o.typeName))===null||a===void 0?void 0:a.get(s)},getService(o){let s=e.get(o);return s?.kind=="service"?s:void 0}}}var Bo=998,So=999,xo=9,$=10,j=11,Jo=12,Pn=14,De=3,Eo=2,On=1,Ro=0,ke=1,jn=2,Yo=3,Fo=1,Ho=2,No=1;var et={998:{fieldPresence:1,enumType:2,repeatedFieldEncoding:2,utf8Validation:3,messageEncoding:1,jsonFormat:2,enforceNamingStyle:2,defaultSymbolVisibility:1},999:{fieldPresence:2,enumType:1,repeatedFieldEncoding:1,utf8Validation:2,messageEncoding:1,jsonFormat:1,enforceNamingStyle:2,defaultSymbolVisibility:1},1e3:{fieldPresence:1,enumType:1,repeatedFieldEncoding:1,utf8Validation:2,messageEncoding:1,jsonFormat:1,enforceNamingStyle:2,defaultSymbolVisibility:1},1001:{fieldPresence:1,enumType:1,repeatedFieldEncoding:1,utf8Validation:2,messageEncoding:1,jsonFormat:1,enforceNamingStyle:1,defaultSymbolVisibility:2}};function $n(e,n){var t,o;let s={kind:"file",proto:e,deprecated:(o=(t=e.options)===null||t===void 0?void 0:t.deprecated)!==null&&o!==void 0?o:!1,edition:wo(e),name:e.name.replace(/\.proto$/,""),dependencies:Ko(e,n),enums:[],messages:[],extensions:[],services:[],toString(){return`file ${e.name}`}},a=new Map,i={get(c){return a.get(c)},add(c){var r;Z(((r=c.proto.options)===null||r===void 0?void 0:r.mapEntry)===!0),a.set(c.typeName,c)}};for(let c of e.enumType)nt(c,s,void 0,n);for(let c of e.messageType)tt(c,s,void 0,n,i);for(let c of e.service)Mo(c,s,n);Ue(s,n);for(let c of a.values())Qe(c,n,i);for(let c of s.messages)Qe(c,n,i),Ue(c,n);n.addFile(s,!0)}function Ue(e,n){switch(e.kind){case"file":for(let t of e.proto.extension){let o=ve(t,e,n);e.extensions.push(o),n.add(o)}break;case"message":for(let t of e.proto.extension){let o=ve(t,e,n);e.nestedExtensions.push(o),n.add(o)}for(let t of e.nestedMessages)Ue(t,n);break}}function Qe(e,n,t){let o=e.proto.oneofDecl.map(a=>Lo(a,e)),s=new Set;for(let a of e.proto.field){let i=Qo(a,o),c=ve(a,e,n,i,t);e.fields.push(c),e.field[c.localName]=c,i===void 0?e.members.push(c):(i.fields.push(c),s.has(i)||(s.add(i),e.members.push(i)))}for(let a of o.filter(i=>s.has(i)))e.oneofs.push(a);for(let a of e.nestedMessages)Qe(a,n,t)}function nt(e,n,t,o){var s,a,i,c,r;let l=ko(e.name,e.value),m={kind:"enum",proto:e,deprecated:(a=(s=e.options)===null||s===void 0?void 0:s.deprecated)!==null&&a!==void 0?a:!1,file:n,parent:t,open:!0,name:e.name,typeName:he(e,t,n),value:{},values:[],sharedPrefix:l,toString(){return`enum ${this.typeName}`}};m.open=_o(m),o.add(m);for(let g of e.value){let Y=g.name;m.values.push(m.value[g.number]={kind:"enum_value",proto:g,deprecated:(c=(i=g.options)===null||i===void 0?void 0:i.deprecated)!==null&&c!==void 0?c:!1,parent:m,name:Y,localName:K(l==null?Y:Y.substring(l.length)),number:g.number,toString(){return`enum value ${m.typeName}.${Y}`}})}((r=t?.nestedEnums)!==null&&r!==void 0?r:n.enums).push(m)}function tt(e,n,t,o,s){var a,i,c,r;let l={kind:"message",proto:e,deprecated:(i=(a=e.options)===null||a===void 0?void 0:a.deprecated)!==null&&i!==void 0?i:!1,file:n,parent:t,name:e.name,typeName:he(e,t,n),fields:[],field:{},oneofs:[],members:[],nestedEnums:[],nestedMessages:[],nestedExtensions:[],toString(){return`message ${this.typeName}`}};((c=e.options)===null||c===void 0?void 0:c.mapEntry)===!0?s.add(l):(((r=t?.nestedMessages)!==null&&r!==void 0?r:n.messages).push(l),o.add(l));for(let m of e.enumType)nt(m,n,l,o);for(let m of e.nestedType)tt(m,n,l,o,s)}function Mo(e,n,t){var o,s;let a={kind:"service",proto:e,deprecated:(s=(o=e.options)===null||o===void 0?void 0:o.deprecated)!==null&&s!==void 0?s:!1,file:n,name:e.name,typeName:he(e,void 0,n),methods:[],method:{},toString(){return`service ${this.typeName}`}};n.services.push(a),t.add(a);for(let i of e.method){let c=zo(i,a,t);a.methods.push(c),a.method[c.localName]=c}}function zo(e,n,t){var o,s,a,i;let c;e.clientStreaming&&e.serverStreaming?c="bidi_streaming":e.clientStreaming?c="client_streaming":e.serverStreaming?c="server_streaming":c="unary";let r=t.getMessage(S(e.inputType)),l=t.getMessage(S(e.outputType));Z(r,`invalid MethodDescriptorProto: input_type ${e.inputType} not found`),Z(l,`invalid MethodDescriptorProto: output_type ${e.inputType} not found`);let m=e.name;return{kind:"rpc",proto:e,deprecated:(s=(o=e.options)===null||o===void 0?void 0:o.deprecated)!==null&&s!==void 0?s:!1,parent:n,name:m,localName:K(m.length?K(m[0].toLowerCase()+m.substring(1)):m),methodKind:c,input:r,output:l,idempotency:(i=(a=e.options)===null||a===void 0?void 0:a.idempotencyLevel)!==null&&i!==void 0?i:Ro,toString(){return`rpc ${n.typeName}.${m}`}}}function Lo(e,n){return{kind:"oneof",proto:e,deprecated:!1,parent:n,fields:[],name:e.name,localName:K(E(e.name)),toString(){return`oneof ${n.typeName}.${this.name}`}}}function ve(e,n,t,o,s){var a,i,c;let r=s===void 0,l={kind:"field",proto:e,deprecated:(i=(a=e.options)===null||a===void 0?void 0:a.deprecated)!==null&&i!==void 0?i:!1,name:e.name,number:e.number,scalar:void 0,message:void 0,enum:void 0,presence:vo(e,o,r,n),listKind:void 0,mapKind:void 0,mapKey:void 0,delimitedEncoding:void 0,packed:void 0,longAsString:!1,getDefaultValue:void 0};if(r){let I=n.kind=="file"?n:n.file,te=n.kind=="file"?void 0:n,x=he(e,te,I);l.kind="extension",l.file=I,l.parent=te,l.oneof=void 0,l.typeName=x,l.jsonName=`[${x}]`,l.toString=()=>`extension ${x}`;let ln=t.getMessage(S(e.extendee));Z(ln,`invalid FieldDescriptorProto: extendee ${e.extendee} not found`),l.extendee=ln}else{let I=n;Z(I.kind=="message"),l.parent=I,l.oneof=o,l.localName=o?E(e.name):K(E(e.name)),l.jsonName=e.jsonName,l.toString=()=>`field ${I.typeName}.${e.name}`}let m=e.label,g=e.type,Y=(c=e.options)===null||c===void 0?void 0:c.jstype;if(m===De){let I=g==j?s?.get(S(e.typeName)):void 0;if(I){l.fieldKind="map";let{key:te,value:x}=To(I);return l.mapKey=te.scalar,l.mapKind=x.fieldKind,l.message=x.message,l.delimitedEncoding=!1,l.enum=x.enum,l.scalar=x.scalar,l}switch(l.fieldKind="list",g){case j:case $:l.listKind="message",l.message=t.getMessage(S(e.typeName)),Z(l.message),l.delimitedEncoding=qn(e,n);break;case Pn:l.listKind="enum",l.enum=t.getEnum(S(e.typeName)),Z(l.enum);break;default:l.listKind="scalar",l.scalar=g,l.longAsString=Y==On;break}return l.packed=Do(e,n),l}switch(g){case j:case $:l.fieldKind="message",l.message=t.getMessage(S(e.typeName)),Z(l.message,`invalid FieldDescriptorProto: type_name ${e.typeName} not found`),l.delimitedEncoding=qn(e,n),l.getDefaultValue=()=>{};break;case Pn:{let I=t.getEnum(S(e.typeName));Z(I!==void 0,`invalid FieldDescriptorProto: type_name ${e.typeName} not found`),l.fieldKind="enum",l.enum=t.getEnum(S(e.typeName)),l.getDefaultValue=()=>F(e,"defaultValue")?Tn(I,e.defaultValue):void 0;break}default:{l.fieldKind="scalar",l.scalar=g,l.longAsString=Y==On,l.getDefaultValue=()=>F(e,"defaultValue")?_n(g,e.defaultValue):void 0;break}}return l}function wo(e){switch(e.syntax){case"":case"proto2":return Bo;case"proto3":return So;case"editions":if(e.edition in et)return e.edition;throw new Error(`${e.name}: unsupported edition`);default:throw new Error(`${e.name}: unsupported syntax "${e.syntax}"`)}}function Ko(e,n){return e.dependency.map(t=>{let o=n.getFile(t);if(!o)throw new Error(`Cannot find ${t}, imported by ${e.name}`);return o})}function ko(e,n){let t=Uo(e)+"_";for(let o of n){if(!o.name.toLowerCase().startsWith(t))return;let s=o.name.substring(t.length);if(s.length==0||/^\d/.test(s))return}return t}function Uo(e){return(e.substring(0,1)+e.substring(1).replace(/[A-Z]/g,n=>"_"+n)).toLowerCase()}function he(e,n,t){let o;return n?o=`${n.typeName}.${e.name}`:t.proto.package.length>0?o=`${t.proto.package}.${e.name}`:o=`${e.name}`,o}function S(e){return e.startsWith(".")?e.substring(1):e}function Qo(e,n){if(!F(e,"oneofIndex")||e.proto3Optional)return;let t=n[e.oneofIndex];return Z(t,`invalid FieldDescriptorProto: oneof #${e.oneofIndex} for field #${e.number} not found`),t}function vo(e,n,t,o){if(e.label==Eo)return Yo;if(e.label==De)return jn;if(n||e.proto3Optional||t)return ke;let s=k("fieldPresence",{proto:e,parent:o});return s==jn&&(e.type==j||e.type==$)?ke:s}function Do(e,n){if(e.label!=De)return!1;switch(e.type){case xo:case Jo:case $:case j:return!1}let t=e.options;return t&&F(t,"packed")?t.packed:Fo==k("repeatedFieldEncoding",{proto:e,parent:n})}function To(e){let n=e.fields.find(o=>o.number===1),t=e.fields.find(o=>o.number===2);return Z(n&&n.fieldKind=="scalar"&&n.scalar!=d.BYTES&&n.scalar!=d.FLOAT&&n.scalar!=d.DOUBLE&&t&&t.fieldKind!="list"&&t.fieldKind!="map"),{key:n,value:t}}function _o(e){var n;return No==k("enumType",{proto:e.proto,parent:(n=e.parent)!==null&&n!==void 0?n:e.file})}function qn(e,n){return e.type==$?!0:Ho==k("messageEncoding",{proto:e,parent:n})}function k(e,n){var t,o;let s=(t=n.proto.options)===null||t===void 0?void 0:t.features;if(s){let a=s[e];if(a!=0)return a}if("kind"in n){if(n.kind=="message")return k(e,(o=n.parent)!==null&&o!==void 0?o:n.file);let a=et[n.edition];if(!a)throw new Error(`feature default for edition ${n.edition} not found`);return a[e]}return k(e,n.parent)}function Z(e,n){if(!e)throw new Error(n)}function ot(e){let n=Po(e);return n.messageType.forEach(O),ge(n,()=>{}).getFile(n.name)}function Po(e){return Object.assign(Object.create({syntax:"",edition:0}),Object.assign(Object.assign({$typeName:"google.protobuf.FileDescriptorProto",dependency:[],publicDependency:[],weakDependency:[],optionDependency:[],service:[],extension:[]},e),{messageType:e.messageType.map(st),enumType:e.enumType.map(at)}))}function st(e){var n,t,o,s,a,i,c,r;return Object.assign(Object.create({visibility:0}),{$typeName:"google.protobuf.DescriptorProto",name:e.name,field:(t=(n=e.field)===null||n===void 0?void 0:n.map(Oo))!==null&&t!==void 0?t:[],extension:[],nestedType:(s=(o=e.nestedType)===null||o===void 0?void 0:o.map(st))!==null&&s!==void 0?s:[],enumType:(i=(a=e.enumType)===null||a===void 0?void 0:a.map(at))!==null&&i!==void 0?i:[],extensionRange:(r=(c=e.extensionRange)===null||c===void 0?void 0:c.map(m=>Object.assign({$typeName:"google.protobuf.DescriptorProto.ExtensionRange"},m)))!==null&&r!==void 0?r:[],oneofDecl:[],reservedRange:[],reservedName:[]})}function Oo(e){return Object.assign(Object.create({label:1,typeName:"",extendee:"",defaultValue:"",oneofIndex:0,jsonName:"",proto3Optional:!1}),Object.assign(Object.assign({$typeName:"google.protobuf.FieldDescriptorProto"},e),{options:e.options?jo(e.options):void 0}))}function jo(e){var n,t,o;return Object.assign(Object.create({ctype:0,packed:!1,jstype:0,lazy:!1,unverifiedLazy:!1,deprecated:!1,weak:!1,debugRedact:!1,retention:0}),Object.assign(Object.assign({$typeName:"google.protobuf.FieldOptions"},e),{targets:(n=e.targets)!==null&&n!==void 0?n:[],editionDefaults:(o=(t=e.editionDefaults)===null||t===void 0?void 0:t.map(a=>Object.assign({$typeName:"google.protobuf.FieldOptions.EditionDefault"},a)))!==null&&o!==void 0?o:[],uninterpretedOption:[]}))}function at(e){return Object.assign(Object.create({visibility:0}),{$typeName:"google.protobuf.EnumDescriptorProto",name:e.name,reservedName:[],reservedRange:[],value:e.value.map(t=>Object.assign({$typeName:"google.protobuf.EnumValueDescriptorProto"},t))})}function C(e,n,...t){return t.reduce((o,s)=>o.nestedMessages[s],e.messages[n])}var H=ot({name:"google/protobuf/descriptor.proto",package:"google.protobuf",messageType:[{name:"FileDescriptorSet",field:[{name:"file",number:1,type:11,label:3,typeName:".google.protobuf.FileDescriptorProto"}],extensionRange:[{start:536e6,end:536000001}]},{name:"FileDescriptorProto",field:[{name:"name",number:1,type:9,label:1},{name:"package",number:2,type:9,label:1},{name:"dependency",number:3,type:9,label:3},{name:"public_dependency",number:10,type:5,label:3},{name:"weak_dependency",number:11,type:5,label:3},{name:"option_dependency",number:15,type:9,label:3},{name:"message_type",number:4,type:11,label:3,typeName:".google.protobuf.DescriptorProto"},{name:"enum_type",number:5,type:11,label:3,typeName:".google.protobuf.EnumDescriptorProto"},{name:"service",number:6,type:11,label:3,typeName:".google.protobuf.ServiceDescriptorProto"},{name:"extension",number:7,type:11,label:3,typeName:".google.protobuf.FieldDescriptorProto"},{name:"options",number:8,type:11,label:1,typeName:".google.protobuf.FileOptions"},{name:"source_code_info",number:9,type:11,label:1,typeName:".google.protobuf.SourceCodeInfo"},{name:"syntax",number:12,type:9,label:1},{name:"edition",number:14,type:14,label:1,typeName:".google.protobuf.Edition"}]},{name:"DescriptorProto",field:[{name:"name",number:1,type:9,label:1},{name:"field",number:2,type:11,label:3,typeName:".google.protobuf.FieldDescriptorProto"},{name:"extension",number:6,type:11,label:3,typeName:".google.protobuf.FieldDescriptorProto"},{name:"nested_type",number:3,type:11,label:3,typeName:".google.protobuf.DescriptorProto"},{name:"enum_type",number:4,type:11,label:3,typeName:".google.protobuf.EnumDescriptorProto"},{name:"extension_range",number:5,type:11,label:3,typeName:".google.protobuf.DescriptorProto.ExtensionRange"},{name:"oneof_decl",number:8,type:11,label:3,typeName:".google.protobuf.OneofDescriptorProto"},{name:"options",number:7,type:11,label:1,typeName:".google.protobuf.MessageOptions"},{name:"reserved_range",number:9,type:11,label:3,typeName:".google.protobuf.DescriptorProto.ReservedRange"},{name:"reserved_name",number:10,type:9,label:3},{name:"visibility",number:11,type:14,label:1,typeName:".google.protobuf.SymbolVisibility"}],nestedType:[{name:"ExtensionRange",field:[{name:"start",number:1,type:5,label:1},{name:"end",number:2,type:5,label:1},{name:"options",number:3,type:11,label:1,typeName:".google.protobuf.ExtensionRangeOptions"}]},{name:"ReservedRange",field:[{name:"start",number:1,type:5,label:1},{name:"end",number:2,type:5,label:1}]}]},{name:"ExtensionRangeOptions",field:[{name:"uninterpreted_option",number:999,type:11,label:3,typeName:".google.protobuf.UninterpretedOption"},{name:"declaration",number:2,type:11,label:3,typeName:".google.protobuf.ExtensionRangeOptions.Declaration",options:{retention:2}},{name:"features",number:50,type:11,label:1,typeName:".google.protobuf.FeatureSet"},{name:"verification",number:3,type:14,label:1,typeName:".google.protobuf.ExtensionRangeOptions.VerificationState",defaultValue:"UNVERIFIED",options:{retention:2}}],nestedType:[{name:"Declaration",field:[{name:"number",number:1,type:5,label:1},{name:"full_name",number:2,type:9,label:1},{name:"type",number:3,type:9,label:1},{name:"reserved",number:5,type:8,label:1},{name:"repeated",number:6,type:8,label:1}]}],enumType:[{name:"VerificationState",value:[{name:"DECLARATION",number:0},{name:"UNVERIFIED",number:1}]}],extensionRange:[{start:1e3,end:536870912}]},{name:"FieldDescriptorProto",field:[{name:"name",number:1,type:9,label:1},{name:"number",number:3,type:5,label:1},{name:"label",number:4,type:14,label:1,typeName:".google.protobuf.FieldDescriptorProto.Label"},{name:"type",number:5,type:14,label:1,typeName:".google.protobuf.FieldDescriptorProto.Type"},{name:"type_name",number:6,type:9,label:1},{name:"extendee",number:2,type:9,label:1},{name:"default_value",number:7,type:9,label:1},{name:"oneof_index",number:9,type:5,label:1},{name:"json_name",number:10,type:9,label:1},{name:"options",number:8,type:11,label:1,typeName:".google.protobuf.FieldOptions"},{name:"proto3_optional",number:17,type:8,label:1}],enumType:[{name:"Type",value:[{name:"TYPE_DOUBLE",number:1},{name:"TYPE_FLOAT",number:2},{name:"TYPE_INT64",number:3},{name:"TYPE_UINT64",number:4},{name:"TYPE_INT32",number:5},{name:"TYPE_FIXED64",number:6},{name:"TYPE_FIXED32",number:7},{name:"TYPE_BOOL",number:8},{name:"TYPE_STRING",number:9},{name:"TYPE_GROUP",number:10},{name:"TYPE_MESSAGE",number:11},{name:"TYPE_BYTES",number:12},{name:"TYPE_UINT32",number:13},{name:"TYPE_ENUM",number:14},{name:"TYPE_SFIXED32",number:15},{name:"TYPE_SFIXED64",number:16},{name:"TYPE_SINT32",number:17},{name:"TYPE_SINT64",number:18}]},{name:"Label",value:[{name:"LABEL_OPTIONAL",number:1},{name:"LABEL_REPEATED",number:3},{name:"LABEL_REQUIRED",number:2}]}]},{name:"OneofDescriptorProto",field:[{name:"name",number:1,type:9,label:1},{name:"options",number:2,type:11,label:1,typeName:".google.protobuf.OneofOptions"}]},{name:"EnumDescriptorProto",field:[{name:"name",number:1,type:9,label:1},{name:"value",number:2,type:11,label:3,typeName:".google.protobuf.EnumValueDescriptorProto"},{name:"options",number:3,type:11,label:1,typeName:".google.protobuf.EnumOptions"},{name:"reserved_range",number:4,type:11,label:3,typeName:".google.protobuf.EnumDescriptorProto.EnumReservedRange"},{name:"reserved_name",number:5,type:9,label:3},{name:"visibility",number:6,type:14,label:1,typeName:".google.protobuf.SymbolVisibility"}],nestedType:[{name:"EnumReservedRange",field:[{name:"start",number:1,type:5,label:1},{name:"end",number:2,type:5,label:1}]}]},{name:"EnumValueDescriptorProto",field:[{name:"name",number:1,type:9,label:1},{name:"number",number:2,type:5,label:1},{name:"options",number:3,type:11,label:1,typeName:".google.protobuf.EnumValueOptions"}]},{name:"ServiceDescriptorProto",field:[{name:"name",number:1,type:9,label:1},{name:"method",number:2,type:11,label:3,typeName:".google.protobuf.MethodDescriptorProto"},{name:"options",number:3,type:11,label:1,typeName:".google.protobuf.ServiceOptions"}]},{name:"MethodDescriptorProto",field:[{name:"name",number:1,type:9,label:1},{name:"input_type",number:2,type:9,label:1},{name:"output_type",number:3,type:9,label:1},{name:"options",number:4,type:11,label:1,typeName:".google.protobuf.MethodOptions"},{name:"client_streaming",number:5,type:8,label:1,defaultValue:"false"},{name:"server_streaming",number:6,type:8,label:1,defaultValue:"false"}]},{name:"FileOptions",field:[{name:"java_package",number:1,type:9,label:1},{name:"java_outer_classname",number:8,type:9,label:1},{name:"java_multiple_files",number:10,type:8,label:1,defaultValue:"false"},{name:"java_generate_equals_and_hash",number:20,type:8,label:1,options:{deprecated:!0}},{name:"java_string_check_utf8",number:27,type:8,label:1,defaultValue:"false"},{name:"optimize_for",number:9,type:14,label:1,typeName:".google.protobuf.FileOptions.OptimizeMode",defaultValue:"SPEED"},{name:"go_package",number:11,type:9,label:1},{name:"cc_generic_services",number:16,type:8,label:1,defaultValue:"false"},{name:"java_generic_services",number:17,type:8,label:1,defaultValue:"false"},{name:"py_generic_services",number:18,type:8,label:1,defaultValue:"false"},{name:"deprecated",number:23,type:8,label:1,defaultValue:"false"},{name:"cc_enable_arenas",number:31,type:8,label:1,defaultValue:"true"},{name:"objc_class_prefix",number:36,type:9,label:1},{name:"csharp_namespace",number:37,type:9,label:1},{name:"swift_prefix",number:39,type:9,label:1},{name:"php_class_prefix",number:40,type:9,label:1},{name:"php_namespace",number:41,type:9,label:1},{name:"php_metadata_namespace",number:44,type:9,label:1},{name:"ruby_package",number:45,type:9,label:1},{name:"features",number:50,type:11,label:1,typeName:".google.protobuf.FeatureSet"},{name:"uninterpreted_option",number:999,type:11,label:3,typeName:".google.protobuf.UninterpretedOption"}],enumType:[{name:"OptimizeMode",value:[{name:"SPEED",number:1},{name:"CODE_SIZE",number:2},{name:"LITE_RUNTIME",number:3}]}],extensionRange:[{start:1e3,end:536870912}]},{name:"MessageOptions",field:[{name:"message_set_wire_format",number:1,type:8,label:1,defaultValue:"false"},{name:"no_standard_descriptor_accessor",number:2,type:8,label:1,defaultValue:"false"},{name:"deprecated",number:3,type:8,label:1,defaultValue:"false"},{name:"map_entry",number:7,type:8,label:1},{name:"deprecated_legacy_json_field_conflicts",number:11,type:8,label:1,options:{deprecated:!0}},{name:"features",number:12,type:11,label:1,typeName:".google.protobuf.FeatureSet"},{name:"uninterpreted_option",number:999,type:11,label:3,typeName:".google.protobuf.UninterpretedOption"}],extensionRange:[{start:1e3,end:536870912}]},{name:"FieldOptions",field:[{name:"ctype",number:1,type:14,label:1,typeName:".google.protobuf.FieldOptions.CType",defaultValue:"STRING"},{name:"packed",number:2,type:8,label:1},{name:"jstype",number:6,type:14,label:1,typeName:".google.protobuf.FieldOptions.JSType",defaultValue:"JS_NORMAL"},{name:"lazy",number:5,type:8,label:1,defaultValue:"false"},{name:"unverified_lazy",number:15,type:8,label:1,defaultValue:"false"},{name:"deprecated",number:3,type:8,label:1,defaultValue:"false"},{name:"weak",number:10,type:8,label:1,defaultValue:"false",options:{deprecated:!0}},{name:"debug_redact",number:16,type:8,label:1,defaultValue:"false"},{name:"retention",number:17,type:14,label:1,typeName:".google.protobuf.FieldOptions.OptionRetention"},{name:"targets",number:19,type:14,label:3,typeName:".google.protobuf.FieldOptions.OptionTargetType"},{name:"edition_defaults",number:20,type:11,label:3,typeName:".google.protobuf.FieldOptions.EditionDefault"},{name:"features",number:21,type:11,label:1,typeName:".google.protobuf.FeatureSet"},{name:"feature_support",number:22,type:11,label:1,typeName:".google.protobuf.FieldOptions.FeatureSupport"},{name:"uninterpreted_option",number:999,type:11,label:3,typeName:".google.protobuf.UninterpretedOption"}],nestedType:[{name:"EditionDefault",field:[{name:"edition",number:3,type:14,label:1,typeName:".google.protobuf.Edition"},{name:"value",number:2,type:9,label:1}]},{name:"FeatureSupport",field:[{name:"edition_introduced",number:1,type:14,label:1,typeName:".google.protobuf.Edition"},{name:"edition_deprecated",number:2,type:14,label:1,typeName:".google.protobuf.Edition"},{name:"deprecation_warning",number:3,type:9,label:1},{name:"edition_removed",number:4,type:14,label:1,typeName:".google.protobuf.Edition"}]}],enumType:[{name:"CType",value:[{name:"STRING",number:0},{name:"CORD",number:1},{name:"STRING_PIECE",number:2}]},{name:"JSType",value:[{name:"JS_NORMAL",number:0},{name:"JS_STRING",number:1},{name:"JS_NUMBER",number:2}]},{name:"OptionRetention",value:[{name:"RETENTION_UNKNOWN",number:0},{name:"RETENTION_RUNTIME",number:1},{name:"RETENTION_SOURCE",number:2}]},{name:"OptionTargetType",value:[{name:"TARGET_TYPE_UNKNOWN",number:0},{name:"TARGET_TYPE_FILE",number:1},{name:"TARGET_TYPE_EXTENSION_RANGE",number:2},{name:"TARGET_TYPE_MESSAGE",number:3},{name:"TARGET_TYPE_FIELD",number:4},{name:"TARGET_TYPE_ONEOF",number:5},{name:"TARGET_TYPE_ENUM",number:6},{name:"TARGET_TYPE_ENUM_ENTRY",number:7},{name:"TARGET_TYPE_SERVICE",number:8},{name:"TARGET_TYPE_METHOD",number:9}]}],extensionRange:[{start:1e3,end:536870912}]},{name:"OneofOptions",field:[{name:"features",number:1,type:11,label:1,typeName:".google.protobuf.FeatureSet"},{name:"uninterpreted_option",number:999,type:11,label:3,typeName:".google.protobuf.UninterpretedOption"}],extensionRange:[{start:1e3,end:536870912}]},{name:"EnumOptions",field:[{name:"allow_alias",number:2,type:8,label:1},{name:"deprecated",number:3,type:8,label:1,defaultValue:"false"},{name:"deprecated_legacy_json_field_conflicts",number:6,type:8,label:1,options:{deprecated:!0}},{name:"features",number:7,type:11,label:1,typeName:".google.protobuf.FeatureSet"},{name:"uninterpreted_option",number:999,type:11,label:3,typeName:".google.protobuf.UninterpretedOption"}],extensionRange:[{start:1e3,end:536870912}]},{name:"EnumValueOptions",field:[{name:"deprecated",number:1,type:8,label:1,defaultValue:"false"},{name:"features",number:2,type:11,label:1,typeName:".google.protobuf.FeatureSet"},{name:"debug_redact",number:3,type:8,label:1,defaultValue:"false"},{name:"feature_support",number:4,type:11,label:1,typeName:".google.protobuf.FieldOptions.FeatureSupport"},{name:"uninterpreted_option",number:999,type:11,label:3,typeName:".google.protobuf.UninterpretedOption"}],extensionRange:[{start:1e3,end:536870912}]},{name:"ServiceOptions",field:[{name:"features",number:34,type:11,label:1,typeName:".google.protobuf.FeatureSet"},{name:"deprecated",number:33,type:8,label:1,defaultValue:"false"},{name:"uninterpreted_option",number:999,type:11,label:3,typeName:".google.protobuf.UninterpretedOption"}],extensionRange:[{start:1e3,end:536870912}]},{name:"MethodOptions",field:[{name:"deprecated",number:33,type:8,label:1,defaultValue:"false"},{name:"idempotency_level",number:34,type:14,label:1,typeName:".google.protobuf.MethodOptions.IdempotencyLevel",defaultValue:"IDEMPOTENCY_UNKNOWN"},{name:"features",number:35,type:11,label:1,typeName:".google.protobuf.FeatureSet"},{name:"uninterpreted_option",number:999,type:11,label:3,typeName:".google.protobuf.UninterpretedOption"}],enumType:[{name:"IdempotencyLevel",value:[{name:"IDEMPOTENCY_UNKNOWN",number:0},{name:"NO_SIDE_EFFECTS",number:1},{name:"IDEMPOTENT",number:2}]}],extensionRange:[{start:1e3,end:536870912}]},{name:"UninterpretedOption",field:[{name:"name",number:2,type:11,label:3,typeName:".google.protobuf.UninterpretedOption.NamePart"},{name:"identifier_value",number:3,type:9,label:1},{name:"positive_int_value",number:4,type:4,label:1},{name:"negative_int_value",number:5,type:3,label:1},{name:"double_value",number:6,type:1,label:1},{name:"string_value",number:7,type:12,label:1},{name:"aggregate_value",number:8,type:9,label:1}],nestedType:[{name:"NamePart",field:[{name:"name_part",number:1,type:9,label:2},{name:"is_extension",number:2,type:8,label:2}]}]},{name:"FeatureSet",field:[{name:"field_presence",number:1,type:14,label:1,typeName:".google.protobuf.FeatureSet.FieldPresence",options:{retention:1,targets:[4,1],editionDefaults:[{value:"EXPLICIT",edition:900},{value:"IMPLICIT",edition:999},{value:"EXPLICIT",edition:1e3}]}},{name:"enum_type",number:2,type:14,label:1,typeName:".google.protobuf.FeatureSet.EnumType",options:{retention:1,targets:[6,1],editionDefaults:[{value:"CLOSED",edition:900},{value:"OPEN",edition:999}]}},{name:"repeated_field_encoding",number:3,type:14,label:1,typeName:".google.protobuf.FeatureSet.RepeatedFieldEncoding",options:{retention:1,targets:[4,1],editionDefaults:[{value:"EXPANDED",edition:900},{value:"PACKED",edition:999}]}},{name:"utf8_validation",number:4,type:14,label:1,typeName:".google.protobuf.FeatureSet.Utf8Validation",options:{retention:1,targets:[4,1],editionDefaults:[{value:"NONE",edition:900},{value:"VERIFY",edition:999}]}},{name:"message_encoding",number:5,type:14,label:1,typeName:".google.protobuf.FeatureSet.MessageEncoding",options:{retention:1,targets:[4,1],editionDefaults:[{value:"LENGTH_PREFIXED",edition:900}]}},{name:"json_format",number:6,type:14,label:1,typeName:".google.protobuf.FeatureSet.JsonFormat",options:{retention:1,targets:[3,6,1],editionDefaults:[{value:"LEGACY_BEST_EFFORT",edition:900},{value:"ALLOW",edition:999}]}},{name:"enforce_naming_style",number:7,type:14,label:1,typeName:".google.protobuf.FeatureSet.EnforceNamingStyle",options:{retention:2,targets:[1,2,3,4,5,6,7,8,9],editionDefaults:[{value:"STYLE_LEGACY",edition:900},{value:"STYLE2024",edition:1001}]}},{name:"default_symbol_visibility",number:8,type:14,label:1,typeName:".google.protobuf.FeatureSet.VisibilityFeature.DefaultSymbolVisibility",options:{retention:2,targets:[1],editionDefaults:[{value:"EXPORT_ALL",edition:900},{value:"EXPORT_TOP_LEVEL",edition:1001}]}}],nestedType:[{name:"VisibilityFeature",enumType:[{name:"DefaultSymbolVisibility",value:[{name:"DEFAULT_SYMBOL_VISIBILITY_UNKNOWN",number:0},{name:"EXPORT_ALL",number:1},{name:"EXPORT_TOP_LEVEL",number:2},{name:"LOCAL_ALL",number:3},{name:"STRICT",number:4}]}]}],enumType:[{name:"FieldPresence",value:[{name:"FIELD_PRESENCE_UNKNOWN",number:0},{name:"EXPLICIT",number:1},{name:"IMPLICIT",number:2},{name:"LEGACY_REQUIRED",number:3}]},{name:"EnumType",value:[{name:"ENUM_TYPE_UNKNOWN",number:0},{name:"OPEN",number:1},{name:"CLOSED",number:2}]},{name:"RepeatedFieldEncoding",value:[{name:"REPEATED_FIELD_ENCODING_UNKNOWN",number:0},{name:"PACKED",number:1},{name:"EXPANDED",number:2}]},{name:"Utf8Validation",value:[{name:"UTF8_VALIDATION_UNKNOWN",number:0},{name:"VERIFY",number:2},{name:"NONE",number:3}]},{name:"MessageEncoding",value:[{name:"MESSAGE_ENCODING_UNKNOWN",number:0},{name:"LENGTH_PREFIXED",number:1},{name:"DELIMITED",number:2}]},{name:"JsonFormat",value:[{name:"JSON_FORMAT_UNKNOWN",number:0},{name:"ALLOW",number:1},{name:"LEGACY_BEST_EFFORT",number:2}]},{name:"EnforceNamingStyle",value:[{name:"ENFORCE_NAMING_STYLE_UNKNOWN",number:0},{name:"STYLE2024",number:1},{name:"STYLE_LEGACY",number:2}]}],extensionRange:[{start:1e3,end:9995},{start:9995,end:1e4},{start:1e4,end:10001}]},{name:"FeatureSetDefaults",field:[{name:"defaults",number:1,type:11,label:3,typeName:".google.protobuf.FeatureSetDefaults.FeatureSetEditionDefault"},{name:"minimum_edition",number:4,type:14,label:1,typeName:".google.protobuf.Edition"},{name:"maximum_edition",number:5,type:14,label:1,typeName:".google.protobuf.Edition"}],nestedType:[{name:"FeatureSetEditionDefault",field:[{name:"edition",number:3,type:14,label:1,typeName:".google.protobuf.Edition"},{name:"overridable_features",number:4,type:11,label:1,typeName:".google.protobuf.FeatureSet"},{name:"fixed_features",number:5,type:11,label:1,typeName:".google.protobuf.FeatureSet"}]}]},{name:"SourceCodeInfo",field:[{name:"location",number:1,type:11,label:3,typeName:".google.protobuf.SourceCodeInfo.Location"}],nestedType:[{name:"Location",field:[{name:"path",number:1,type:5,label:3,options:{packed:!0}},{name:"span",number:2,type:5,label:3,options:{packed:!0}},{name:"leading_comments",number:3,type:9,label:1},{name:"trailing_comments",number:4,type:9,label:1},{name:"leading_detached_comments",number:6,type:9,label:3}]}],extensionRange:[{start:536e6,end:536000001}]},{name:"GeneratedCodeInfo",field:[{name:"annotation",number:1,type:11,label:3,typeName:".google.protobuf.GeneratedCodeInfo.Annotation"}],nestedType:[{name:"Annotation",field:[{name:"path",number:1,type:5,label:3,options:{packed:!0}},{name:"source_file",number:2,type:9,label:1},{name:"begin",number:3,type:5,label:1},{name:"end",number:4,type:5,label:1},{name:"semantic",number:5,type:14,label:1,typeName:".google.protobuf.GeneratedCodeInfo.Annotation.Semantic"}],enumType:[{name:"Semantic",value:[{name:"NONE",number:0},{name:"SET",number:1},{name:"ALIAS",number:2}]}]}]}],enumType:[{name:"Edition",value:[{name:"EDITION_UNKNOWN",number:0},{name:"EDITION_LEGACY",number:900},{name:"EDITION_PROTO2",number:998},{name:"EDITION_PROTO3",number:999},{name:"EDITION_2023",number:1e3},{name:"EDITION_2024",number:1001},{name:"EDITION_1_TEST_ONLY",number:1},{name:"EDITION_2_TEST_ONLY",number:2},{name:"EDITION_99997_TEST_ONLY",number:99997},{name:"EDITION_99998_TEST_ONLY",number:99998},{name:"EDITION_99999_TEST_ONLY",number:99999},{name:"EDITION_MAX",number:2147483647}]},{name:"SymbolVisibility",value:[{name:"VISIBILITY_UNSET",number:0},{name:"VISIBILITY_LOCAL",number:1},{name:"VISIBILITY_EXPORT",number:2}]}]});var Wt=C(H,1);var it;(function(e){e[e.DECLARATION=0]="DECLARATION",e[e.UNVERIFIED=1]="UNVERIFIED"})(it||(it={}));var dt;(function(e){e[e.DOUBLE=1]="DOUBLE",e[e.FLOAT=2]="FLOAT",e[e.INT64=3]="INT64",e[e.UINT64=4]="UINT64",e[e.INT32=5]="INT32",e[e.FIXED64=6]="FIXED64",e[e.FIXED32=7]="FIXED32",e[e.BOOL=8]="BOOL",e[e.STRING=9]="STRING",e[e.GROUP=10]="GROUP",e[e.MESSAGE=11]="MESSAGE",e[e.BYTES=12]="BYTES",e[e.UINT32=13]="UINT32",e[e.ENUM=14]="ENUM",e[e.SFIXED32=15]="SFIXED32",e[e.SFIXED64=16]="SFIXED64",e[e.SINT32=17]="SINT32",e[e.SINT64=18]="SINT64"})(dt||(dt={}));var ct;(function(e){e[e.OPTIONAL=1]="OPTIONAL",e[e.REPEATED=3]="REPEATED",e[e.REQUIRED=2]="REQUIRED"})(ct||(ct={}));var lt;(function(e){e[e.SPEED=1]="SPEED",e[e.CODE_SIZE=2]="CODE_SIZE",e[e.LITE_RUNTIME=3]="LITE_RUNTIME"})(lt||(lt={}));var rt;(function(e){e[e.STRING=0]="STRING",e[e.CORD=1]="CORD",e[e.STRING_PIECE=2]="STRING_PIECE"})(rt||(rt={}));var mt;(function(e){e[e.JS_NORMAL=0]="JS_NORMAL",e[e.JS_STRING=1]="JS_STRING",e[e.JS_NUMBER=2]="JS_NUMBER"})(mt||(mt={}));var ut;(function(e){e[e.RETENTION_UNKNOWN=0]="RETENTION_UNKNOWN",e[e.RETENTION_RUNTIME=1]="RETENTION_RUNTIME",e[e.RETENTION_SOURCE=2]="RETENTION_SOURCE"})(ut||(ut={}));var bt;(function(e){e[e.TARGET_TYPE_UNKNOWN=0]="TARGET_TYPE_UNKNOWN",e[e.TARGET_TYPE_FILE=1]="TARGET_TYPE_FILE",e[e.TARGET_TYPE_EXTENSION_RANGE=2]="TARGET_TYPE_EXTENSION_RANGE",e[e.TARGET_TYPE_MESSAGE=3]="TARGET_TYPE_MESSAGE",e[e.TARGET_TYPE_FIELD=4]="TARGET_TYPE_FIELD",e[e.TARGET_TYPE_ONEOF=5]="TARGET_TYPE_ONEOF",e[e.TARGET_TYPE_ENUM=6]="TARGET_TYPE_ENUM",e[e.TARGET_TYPE_ENUM_ENTRY=7]="TARGET_TYPE_ENUM_ENTRY",e[e.TARGET_TYPE_SERVICE=8]="TARGET_TYPE_SERVICE",e[e.TARGET_TYPE_METHOD=9]="TARGET_TYPE_METHOD"})(bt||(bt={}));var gt;(function(e){e[e.IDEMPOTENCY_UNKNOWN=0]="IDEMPOTENCY_UNKNOWN",e[e.NO_SIDE_EFFECTS=1]="NO_SIDE_EFFECTS",e[e.IDEMPOTENT=2]="IDEMPOTENT"})(gt||(gt={}));var ht;(function(e){e[e.DEFAULT_SYMBOL_VISIBILITY_UNKNOWN=0]="DEFAULT_SYMBOL_VISIBILITY_UNKNOWN",e[e.EXPORT_ALL=1]="EXPORT_ALL",e[e.EXPORT_TOP_LEVEL=2]="EXPORT_TOP_LEVEL",e[e.LOCAL_ALL=3]="LOCAL_ALL",e[e.STRICT=4]="STRICT"})(ht||(ht={}));var It;(function(e){e[e.FIELD_PRESENCE_UNKNOWN=0]="FIELD_PRESENCE_UNKNOWN",e[e.EXPLICIT=1]="EXPLICIT",e[e.IMPLICIT=2]="IMPLICIT",e[e.LEGACY_REQUIRED=3]="LEGACY_REQUIRED"})(It||(It={}));var pt;(function(e){e[e.ENUM_TYPE_UNKNOWN=0]="ENUM_TYPE_UNKNOWN",e[e.OPEN=1]="OPEN",e[e.CLOSED=2]="CLOSED"})(pt||(pt={}));var Gt;(function(e){e[e.REPEATED_FIELD_ENCODING_UNKNOWN=0]="REPEATED_FIELD_ENCODING_UNKNOWN",e[e.PACKED=1]="PACKED",e[e.EXPANDED=2]="EXPANDED"})(Gt||(Gt={}));var yt;(function(e){e[e.UTF8_VALIDATION_UNKNOWN=0]="UTF8_VALIDATION_UNKNOWN",e[e.VERIFY=2]="VERIFY",e[e.NONE=3]="NONE"})(yt||(yt={}));var Zt;(function(e){e[e.MESSAGE_ENCODING_UNKNOWN=0]="MESSAGE_ENCODING_UNKNOWN",e[e.LENGTH_PREFIXED=1]="LENGTH_PREFIXED",e[e.DELIMITED=2]="DELIMITED"})(Zt||(Zt={}));var Vt;(function(e){e[e.JSON_FORMAT_UNKNOWN=0]="JSON_FORMAT_UNKNOWN",e[e.ALLOW=1]="ALLOW",e[e.LEGACY_BEST_EFFORT=2]="LEGACY_BEST_EFFORT"})(Vt||(Vt={}));var ft;(function(e){e[e.ENFORCE_NAMING_STYLE_UNKNOWN=0]="ENFORCE_NAMING_STYLE_UNKNOWN",e[e.STYLE2024=1]="STYLE2024",e[e.STYLE_LEGACY=2]="STYLE_LEGACY"})(ft||(ft={}));var At;(function(e){e[e.NONE=0]="NONE",e[e.SET=1]="SET",e[e.ALIAS=2]="ALIAS"})(At||(At={}));var Ct;(function(e){e[e.EDITION_UNKNOWN=0]="EDITION_UNKNOWN",e[e.EDITION_LEGACY=900]="EDITION_LEGACY",e[e.EDITION_PROTO2=998]="EDITION_PROTO2",e[e.EDITION_PROTO3=999]="EDITION_PROTO3",e[e.EDITION_2023=1e3]="EDITION_2023",e[e.EDITION_2024=1001]="EDITION_2024",e[e.EDITION_1_TEST_ONLY=1]="EDITION_1_TEST_ONLY",e[e.EDITION_2_TEST_ONLY=2]="EDITION_2_TEST_ONLY",e[e.EDITION_99997_TEST_ONLY=99997]="EDITION_99997_TEST_ONLY",e[e.EDITION_99998_TEST_ONLY=99998]="EDITION_99998_TEST_ONLY",e[e.EDITION_99999_TEST_ONLY=99999]="EDITION_99999_TEST_ONLY",e[e.EDITION_MAX=2147483647]="EDITION_MAX"})(Ct||(Ct={}));var Xt;(function(e){e[e.VISIBILITY_UNSET=0]="VISIBILITY_UNSET",e[e.VISIBILITY_LOCAL=1]="VISIBILITY_LOCAL",e[e.VISIBILITY_EXPORT=2]="VISIBILITY_EXPORT"})(Xt||(Xt={}));var Bt={readUnknownFields:!0};function $o(e){return e?Object.assign(Object.assign({},Bt),e):Bt}function N(e,n,t){let o=B(e,void 0,!1);return St(o,new z(n),$o(t),!1,n.byteLength),o.message}function St(e,n,t,o,s){var a;let i=o?n.len:n.pos+s,c,r,l=(a=e.getUnknown())!==null&&a!==void 0?a:[];for(;n.pos<i&&([c,r]=n.tag(),!(o&&r==p.EndGroup));){let m=e.findNumber(c);if(!m){let g=n.skip(r,c);t.readUnknownFields&&l.push({no:c,wireType:r,data:g});continue}Te(e,n,m,r,t)}if(o&&(r!=p.EndGroup||c!==s))throw new Error("invalid end group tag");l.length>0&&e.setUnknown(l)}function Te(e,n,t,o,s){var a;switch(t.fieldKind){case"scalar":e.set(t,U(n,t.scalar));break;case"enum":let i=U(n,d.INT32);if(t.enum.open)e.set(t,i);else if(t.enum.values.some(r=>r.number===i))e.set(t,i);else if(s.readUnknownFields){let r=[];Be(i,r);let l=(a=e.getUnknown())!==null&&a!==void 0?a:[];l.push({no:t.number,wireType:o,data:new Uint8Array(r)}),e.setUnknown(l)}break;case"message":e.set(t,_e(n,s,t,e.get(t)));break;case"list":es(n,o,e.get(t),s);break;case"map":qo(n,e.get(t),s);break}}function qo(e,n,t){let o=n.field(),s,a,i=e.uint32(),c=e.pos+i;for(;e.pos<c;){let[r]=e.tag();switch(r){case 1:s=U(e,o.mapKey);break;case 2:switch(o.mapKind){case"scalar":a=U(e,o.scalar);break;case"enum":a=e.int32();break;case"message":a=_e(e,t,o);break}break}}if(s===void 0&&(s=G(o.mapKey,!1)),a===void 0)switch(o.mapKind){case"scalar":a=G(o.scalar,!1);break;case"enum":a=o.enum.values[0].number;break;case"message":a=B(o.message,void 0,!1);break}n.set(s,a)}function es(e,n,t,o){var s;let a=t.field();if(a.listKind==="message"){t.add(_e(e,o,a));return}let i=(s=a.scalar)!==null&&s!==void 0?s:d.INT32;if(!(n==p.LengthDelimited&&i!=d.STRING&&i!=d.BYTES)){t.add(U(e,i));return}let r=e.uint32()+e.pos;for(;e.pos<r;)t.add(U(e,i))}function _e(e,n,t,o){let s=t.delimitedEncoding,a=o??B(t.message,void 0,!1);return St(a,e,n,s,s?t.number:e.uint32()),a}function U(e,n){switch(n){case d.STRING:return e.string();case d.BOOL:return e.bool();case d.DOUBLE:return e.double();case d.FLOAT:return e.float();case d.INT32:return e.int32();case d.INT64:return e.int64();case d.UINT64:return e.uint64();case d.FIXED64:return e.fixed64();case d.BYTES:return e.bytes();case d.FIXED32:return e.fixed32();case d.SFIXED32:return e.sfixed32();case d.SFIXED64:return e.sfixed64();case d.SINT64:return e.sint64();case d.UINT32:return e.uint32();case d.SINT32:return e.sint32()}}function b(e,n){var t;let o=N(Wt,Qn(e));return o.messageType.forEach(O),o.dependency=(t=n?.map(a=>a.proto.name))!==null&&t!==void 0?t:[],ge(o,a=>n?.find(i=>i.proto.name===a)).getFile(o.name)}var Ie=b("Ch9nb29nbGUvcHJvdG9idWYvdGltZXN0YW1wLnByb3RvEg9nb29nbGUucHJvdG9idWYiKwoJVGltZXN0YW1wEg8KB3NlY29uZHMYASABKAMSDQoFbmFub3MYAiABKAVChQEKE2NvbS5nb29nbGUucHJvdG9idWZCDlRpbWVzdGFtcFByb3RvUAFaMmdvb2dsZS5nb2xhbmcub3JnL3Byb3RvYnVmL3R5cGVzL2tub3duL3RpbWVzdGFtcHBi+AEBogIDR1BCqgIeR29vZ2xlLlByb3RvYnVmLldlbGxLbm93blR5cGVzYgZwcm90bzM");function xt(e){return new Date(ns(e))}function ns(e){return Number(e.seconds)*1e3+Math.round(e.nanos/1e6)}var pe=b("Ch5nb29nbGUvcHJvdG9idWYvZHVyYXRpb24ucHJvdG8SD2dvb2dsZS5wcm90b2J1ZiIqCghEdXJhdGlvbhIPCgdzZWNvbmRzGAEgASgDEg0KBW5hbm9zGAIgASgFQoMBChNjb20uZ29vZ2xlLnByb3RvYnVmQg1EdXJhdGlvblByb3RvUAFaMWdvb2dsZS5nb2xhbmcub3JnL3Byb3RvYnVmL3R5cGVzL2tub3duL2R1cmF0aW9ucGL4AQGiAgNHUEKqAh5Hb29nbGUuUHJvdG9idWYuV2VsbEtub3duVHlwZXNiBnByb3RvMw");function os(e,n){if(e.typeUrl==="")return!1;let t=typeof n=="string"?n:n.typeName,o=Et(e.typeUrl);return t===o}function Jt(e,n){if(e.typeUrl==="")return;let t=n.kind=="message"?n:n.getMessage(Et(e.typeUrl));if(!(!t||!os(e,t)))return N(t,e.value)}function Et(e){let n=e.lastIndexOf("/"),t=n>=0?e.substring(n+1):e;if(!t.length)throw new Error(`invalid type url: ${e}`);return t}function Rt(e,n){as(n,e);let t=ss(e.$unknown,n),[o,s,a]=Pe(n);for(let i of t)Te(o,new z(i.data),s,i.wireType,{readUnknownFields:!0});return a()}function ss(e,n){if(e===void 0)return[];if(n.fieldKind==="enum"||n.fieldKind==="scalar"){for(let t=e.length-1;t>=0;--t)if(e[t].no==n.number)return[e[t]];return[]}return e.filter(t=>t.no===n.number)}function Pe(e,n){let t=e.typeName,o=Object.assign(Object.assign({},e),{kind:"field",parent:e.extendee,localName:t}),s=Object.assign(Object.assign({},e.extendee),{fields:[o],members:[o],oneofs:[]}),a=M(s,n!==void 0?{[t]:n}:void 0);return[B(s,a),o,()=>{let i=a[t];if(i===void 0){let c=e.message;return J(c)?G(c.fields[0].scalar,c.fields[0].longAsString):M(c)}return i}]}function as(e,n){if(e.extendee.typeName!=n.$typeName)throw new Error(`extension ${e.typeName} can only be applied to message ${e.extendee.typeName}`)}var is=3,ds=2,Yt={alwaysEmitImplicit:!1,enumAsInteger:!1,useProtoFieldName:!1};function cs(e){return e?Object.assign(Object.assign({},Yt),e):Yt}function Oe(e,n,t){return q(B(e,n),cs(t))}function q(e,n){var t;let o=us(e,n);if(o!==void 0)return o;let s={};for(let a of e.sortedFields){if(!e.isSet(a)){if(a.presence==is)throw new Error(`cannot encode ${a} to JSON: required field not set`);if(!n.alwaysEmitImplicit||a.presence!==ds)continue}let i=Ft(a,e.get(a),n);i!==void 0&&(s[ms(a,n)]=i)}if(n.registry){let a=new Set;for(let{no:i}of(t=e.getUnknown())!==null&&t!==void 0?t:[])if(!a.has(i)){a.add(i);let c=n.registry.getExtensionFor(e.desc,i);if(!c)continue;let r=Rt(e.message,c),[l,m]=Pe(c,r),g=Ft(m,l.get(m),n);g!==void 0&&(s[c.jsonName]=g)}}return s}function Ft(e,n,t){switch(e.fieldKind){case"scalar":return Ge(e,n);case"message":return q(n,t);case"enum":return je(e.enum,n,t.enumAsInteger);case"list":return rs(n,t);case"map":return ls(n,t)}}function ls(e,n){let t=e.field(),o={};switch(t.mapKind){case"scalar":for(let[s,a]of e)o[s]=Ge(t,a);break;case"message":for(let[s,a]of e)o[s]=q(a,n);break;case"enum":for(let[s,a]of e)o[s]=je(t.enum,a,n.enumAsInteger);break}return n.alwaysEmitImplicit||e.size>0?o:void 0}function rs(e,n){let t=e.field(),o=[];switch(t.listKind){case"scalar":for(let s of e)o.push(Ge(t,s));break;case"enum":for(let s of e)o.push(je(t.enum,s,n.enumAsInteger));break;case"message":for(let s of e)o.push(q(s,n));break}return n.alwaysEmitImplicit||o.length>0?o:void 0}function je(e,n,t){var o;if(typeof n!="number")throw new Error(`cannot encode ${e} to JSON: expected number, got ${L(n)}`);if(e.typeName=="google.protobuf.NullValue")return null;if(t)return n;let s=e.value[n];return(o=s?.name)!==null&&o!==void 0?o:n}function Ge(e,n){var t,o,s,a,i,c;switch(e.scalar){case d.INT32:case d.SFIXED32:case d.SINT32:case d.FIXED32:case d.UINT32:if(typeof n!="number")throw new Error(`cannot encode ${e} to JSON: ${(t=W(e,n))===null||t===void 0?void 0:t.message}`);return n;case d.FLOAT:case d.DOUBLE:if(typeof n!="number")throw new Error(`cannot encode ${e} to JSON: ${(o=W(e,n))===null||o===void 0?void 0:o.message}`);return Number.isNaN(n)?"NaN":n===Number.POSITIVE_INFINITY?"Infinity":n===Number.NEGATIVE_INFINITY?"-Infinity":n;case d.STRING:if(typeof n!="string")throw new Error(`cannot encode ${e} to JSON: ${(s=W(e,n))===null||s===void 0?void 0:s.message}`);return n;case d.BOOL:if(typeof n!="boolean")throw new Error(`cannot encode ${e} to JSON: ${(a=W(e,n))===null||a===void 0?void 0:a.message}`);return n;case d.UINT64:case d.FIXED64:case d.INT64:case d.SFIXED64:case d.SINT64:if(typeof n!="bigint"&&typeof n!="string")throw new Error(`cannot encode ${e} to JSON: ${(i=W(e,n))===null||i===void 0?void 0:i.message}`);return n.toString();case d.BYTES:if(n instanceof Uint8Array)return vn(n);throw new Error(`cannot encode ${e} to JSON: ${(c=W(e,n))===null||c===void 0?void 0:c.message}`)}}function ms(e,n){return n.useProtoFieldName?e.name:e.jsonName}function us(e,n){if(e.desc.typeName.startsWith("google.protobuf."))switch(e.desc.typeName){case"google.protobuf.Any":return bs(e.message,n);case"google.protobuf.Timestamp":return Is(e.message);case"google.protobuf.Duration":return gs(e.message);case"google.protobuf.FieldMask":return hs(e.message);case"google.protobuf.Struct":return Ht(e.message);case"google.protobuf.Value":return $e(e.message);case"google.protobuf.ListValue":return Nt(e.message);default:if(J(e.desc)){let t=e.desc.fields[0];return Ge(t,e.get(t))}return}}function bs(e,n){if(e.typeUrl==="")return{};let{registry:t}=n,o,s;if(t&&(o=Jt(e,t),o&&(s=t.getMessage(o.$typeName))),!s||!o)throw new Error(`cannot encode message ${e.$typeName} to JSON: "${e.typeUrl}" is not in the type registry`);let a=q(B(s,o),n);return(s.typeName.startsWith("google.protobuf.")||a===null||Array.isArray(a)||typeof a!="object")&&(a={value:a}),a["@type"]=e.typeUrl,a}function gs(e){let n=Number(e.seconds),t=e.nanos;if(n>315576e6||n<-315576e6)throw new Error(`cannot encode message ${e.$typeName} to JSON: value out of range`);if(n>0&&t<0||n<0&&t>0)throw new Error(`cannot encode message ${e.$typeName} to JSON: nanos sign must match seconds sign`);let o=e.seconds.toString();if(t!==0){let s=Math.abs(t).toString();s="0".repeat(9-s.length)+s,s.substring(3)==="000000"?s=s.substring(0,3):s.substring(6)==="000"&&(s=s.substring(0,6)),o+="."+s,t<0&&n==0&&(o="-"+o)}return o+"s"}function hs(e){return e.paths.map(n=>{if(n.match(/_[0-9]?_/g)||n.match(/[A-Z]/g))throw new Error(`cannot encode message ${e.$typeName} to JSON: lowerCamelCase of path name "`+n+'" is irreversible');return E(n)}).join(",")}function Ht(e){let n={};for(let[t,o]of Object.entries(e.fields))n[t]=$e(o);return n}function $e(e){switch(e.kind.case){case"nullValue":return null;case"numberValue":if(!Number.isFinite(e.kind.value))throw new Error(`${e.$typeName} cannot be NaN or Infinity`);return e.kind.value;case"boolValue":return e.kind.value;case"stringValue":return e.kind.value;case"structValue":return Ht(e.kind.value);case"listValue":return Nt(e.kind.value);default:throw new Error(`${e.$typeName} must have a value`)}}function Nt(e){return e.values.map($e)}function Is(e){let n=Number(e.seconds)*1e3;if(n<Date.parse("0001-01-01T00:00:00Z")||n>Date.parse("9999-12-31T23:59:59Z"))throw new Error(`cannot encode message ${e.$typeName} to JSON: must be from 0001-01-01T00:00:00Z to 9999-12-31T23:59:59Z inclusive`);if(e.nanos<0)throw new Error(`cannot encode message ${e.$typeName} to JSON: nanos must not be negative`);if(e.nanos>999999999)throw new Error(`cannot encode message ${e.$typeName} to JSON: nanos must not be greater than 99999999`);let t="Z";if(e.nanos>0){let o=(e.nanos+1e9).toString().substring(1);o.substring(3)==="000000"?t="."+o.substring(0,3)+"Z":o.substring(6)==="000"?t="."+o.substring(0,6)+"Z":t="."+o+"Z"}return new Date(n).toISOString().replace(".000Z",t)}var Q=null;typeof WebSocket<"u"?Q=WebSocket:typeof MozWebSocket<"u"?Q=MozWebSocket:typeof global<"u"?Q=global.WebSocket||global.MozWebSocket:typeof window<"u"?Q=window.WebSocket||window.MozWebSocket:typeof self<"u"&&(Q=self.WebSocket||self.MozWebSocket);var ee=Q;var Mt=/^(?:[0-9a-f]{8}-[0-9a-f]{4}-[1-8][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$/i;function ps(e){return typeof e=="string"&&Mt.test(e)}var zt=ps;function Gs(e){if(!zt(e))throw TypeError("Invalid UUID");let n;return Uint8Array.of((n=parseInt(e.slice(0,8),16))>>>24,n>>>16&255,n>>>8&255,n&255,(n=parseInt(e.slice(9,13),16))>>>8,n&255,(n=parseInt(e.slice(14,18),16))>>>8,n&255,(n=parseInt(e.slice(19,23),16))>>>8,n&255,(n=parseInt(e.slice(24,36),16))/1099511627776&255,n/4294967296&255,n>>>24&255,n>>>16&255,n>>>8&255,n&255)}var qe=Gs;var ye=b("ChtidWYvdmFsaWRhdGUvdmFsaWRhdGUucHJvdG8SDGJ1Zi52YWxpZGF0ZSI3CgRSdWxlEgoKAmlkGAEgASgJEg8KB21lc3NhZ2UYAiABKAkSEgoKZXhwcmVzc2lvbhgDIAEoCSJuCgxNZXNzYWdlUnVsZXMSHwoDY2VsGAMgAygLMhIuYnVmLnZhbGlkYXRlLlJ1bGUSLQoFb25lb2YYBCADKAsyHi5idWYudmFsaWRhdGUuTWVzc2FnZU9uZW9mUnVsZUoECAEQAlIIZGlzYWJsZWQiNAoQTWVzc2FnZU9uZW9mUnVsZRIOCgZmaWVsZHMYASADKAkSEAoIcmVxdWlyZWQYAiABKAgiHgoKT25lb2ZSdWxlcxIQCghyZXF1aXJlZBgBIAEoCCK/CAoKRmllbGRSdWxlcxIfCgNjZWwYFyADKAsyEi5idWYudmFsaWRhdGUuUnVsZRIQCghyZXF1aXJlZBgZIAEoCBIkCgZpZ25vcmUYGyABKA4yFC5idWYudmFsaWRhdGUuSWdub3JlEikKBWZsb2F0GAEgASgLMhguYnVmLnZhbGlkYXRlLkZsb2F0UnVsZXNIABIrCgZkb3VibGUYAiABKAsyGS5idWYudmFsaWRhdGUuRG91YmxlUnVsZXNIABIpCgVpbnQzMhgDIAEoCzIYLmJ1Zi52YWxpZGF0ZS5JbnQzMlJ1bGVzSAASKQoFaW50NjQYBCABKAsyGC5idWYudmFsaWRhdGUuSW50NjRSdWxlc0gAEisKBnVpbnQzMhgFIAEoCzIZLmJ1Zi52YWxpZGF0ZS5VSW50MzJSdWxlc0gAEisKBnVpbnQ2NBgGIAEoCzIZLmJ1Zi52YWxpZGF0ZS5VSW50NjRSdWxlc0gAEisKBnNpbnQzMhgHIAEoCzIZLmJ1Zi52YWxpZGF0ZS5TSW50MzJSdWxlc0gAEisKBnNpbnQ2NBgIIAEoCzIZLmJ1Zi52YWxpZGF0ZS5TSW50NjRSdWxlc0gAEi0KB2ZpeGVkMzIYCSABKAsyGi5idWYudmFsaWRhdGUuRml4ZWQzMlJ1bGVzSAASLQoHZml4ZWQ2NBgKIAEoCzIaLmJ1Zi52YWxpZGF0ZS5GaXhlZDY0UnVsZXNIABIvCghzZml4ZWQzMhgLIAEoCzIbLmJ1Zi52YWxpZGF0ZS5TRml4ZWQzMlJ1bGVzSAASLwoIc2ZpeGVkNjQYDCABKAsyGy5idWYudmFsaWRhdGUuU0ZpeGVkNjRSdWxlc0gAEicKBGJvb2wYDSABKAsyFy5idWYudmFsaWRhdGUuQm9vbFJ1bGVzSAASKwoGc3RyaW5nGA4gASgLMhkuYnVmLnZhbGlkYXRlLlN0cmluZ1J1bGVzSAASKQoFYnl0ZXMYDyABKAsyGC5idWYudmFsaWRhdGUuQnl0ZXNSdWxlc0gAEicKBGVudW0YECABKAsyFy5idWYudmFsaWRhdGUuRW51bVJ1bGVzSAASLwoIcmVwZWF0ZWQYEiABKAsyGy5idWYudmFsaWRhdGUuUmVwZWF0ZWRSdWxlc0gAEiUKA21hcBgTIAEoCzIWLmJ1Zi52YWxpZGF0ZS5NYXBSdWxlc0gAEiUKA2FueRgUIAEoCzIWLmJ1Zi52YWxpZGF0ZS5BbnlSdWxlc0gAEi8KCGR1cmF0aW9uGBUgASgLMhsuYnVmLnZhbGlkYXRlLkR1cmF0aW9uUnVsZXNIABIxCgl0aW1lc3RhbXAYFiABKAsyHC5idWYudmFsaWRhdGUuVGltZXN0YW1wUnVsZXNIAEIGCgR0eXBlSgQIGBAZSgQIGhAbUgdza2lwcGVkUgxpZ25vcmVfZW1wdHkiVQoPUHJlZGVmaW5lZFJ1bGVzEh8KA2NlbBgBIAMoCzISLmJ1Zi52YWxpZGF0ZS5SdWxlSgQIGBAZSgQIGhAbUgdza2lwcGVkUgxpZ25vcmVfZW1wdHki2hcKCkZsb2F0UnVsZXMSgwEKBWNvbnN0GAEgASgCQnTCSHEKbwoLZmxvYXQuY29uc3QaYHRoaXMgIT0gZ2V0RmllbGQocnVsZXMsICdjb25zdCcpID8gJ3ZhbHVlIG11c3QgZXF1YWwgJXMnLmZvcm1hdChbZ2V0RmllbGQocnVsZXMsICdjb25zdCcpXSkgOiAnJxKfAQoCbHQYAiABKAJCkAHCSIwBCokBCghmbG9hdC5sdBp9IWhhcyhydWxlcy5ndGUpICYmICFoYXMocnVsZXMuZ3QpICYmICh0aGlzLmlzTmFuKCkgfHwgdGhpcyA+PSBydWxlcy5sdCk/ICd2YWx1ZSBtdXN0IGJlIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5sdF0pIDogJydIABKvAQoDbHRlGAMgASgCQp8BwkibAQqYAQoJZmxvYXQubHRlGooBIWhhcyhydWxlcy5ndGUpICYmICFoYXMocnVsZXMuZ3QpICYmICh0aGlzLmlzTmFuKCkgfHwgdGhpcyA+IHJ1bGVzLmx0ZSk/ICd2YWx1ZSBtdXN0IGJlIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5sdGVdKSA6ICcnSAAS7wcKAmd0GAQgASgCQuAHwkjcBwqNAQoIZmxvYXQuZ3QagAEhaGFzKHJ1bGVzLmx0KSAmJiAhaGFzKHJ1bGVzLmx0ZSkgJiYgKHRoaXMuaXNOYW4oKSB8fCB0aGlzIDw9IHJ1bGVzLmd0KT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0XSkgOiAnJwrDAQoLZmxvYXQuZ3RfbHQaswFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0ID49IHJ1bGVzLmd0ICYmICh0aGlzLmlzTmFuKCkgfHwgdGhpcyA+PSBydWxlcy5sdCB8fCB0aGlzIDw9IHJ1bGVzLmd0KT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuICVzIGFuZCBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3QsIHJ1bGVzLmx0XSkgOiAnJwrNAQoVZmxvYXQuZ3RfbHRfZXhjbHVzaXZlGrMBaGFzKHJ1bGVzLmx0KSAmJiBydWxlcy5sdCA8IHJ1bGVzLmd0ICYmICh0aGlzLmlzTmFuKCkgfHwgKHJ1bGVzLmx0IDw9IHRoaXMgJiYgdGhpcyA8PSBydWxlcy5ndCkpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgb3IgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdF0pIDogJycK0wEKDGZsb2F0Lmd0X2x0ZRrCAWhhcyhydWxlcy5sdGUpICYmIHJ1bGVzLmx0ZSA+PSBydWxlcy5ndCAmJiAodGhpcy5pc05hbigpIHx8IHRoaXMgPiBydWxlcy5sdGUgfHwgdGhpcyA8PSBydWxlcy5ndCk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcyBhbmQgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdGVdKSA6ICcnCt0BChZmbG9hdC5ndF9sdGVfZXhjbHVzaXZlGsIBaGFzKHJ1bGVzLmx0ZSkgJiYgcnVsZXMubHRlIDwgcnVsZXMuZ3QgJiYgKHRoaXMuaXNOYW4oKSB8fCAocnVsZXMubHRlIDwgdGhpcyAmJiB0aGlzIDw9IHJ1bGVzLmd0KSk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcyBvciBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3QsIHJ1bGVzLmx0ZV0pIDogJydIARK6CAoDZ3RlGAUgASgCQqoIwkimCAqbAQoJZmxvYXQuZ3RlGo0BIWhhcyhydWxlcy5sdCkgJiYgIWhhcyhydWxlcy5sdGUpICYmICh0aGlzLmlzTmFuKCkgfHwgdGhpcyA8IHJ1bGVzLmd0ZSk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndGVdKSA6ICcnCtIBCgxmbG9hdC5ndGVfbHQawQFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0ID49IHJ1bGVzLmd0ZSAmJiAodGhpcy5pc05hbigpIHx8IHRoaXMgPj0gcnVsZXMubHQgfHwgdGhpcyA8IHJ1bGVzLmd0ZSk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcyBhbmQgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0ZSwgcnVsZXMubHRdKSA6ICcnCtwBChZmbG9hdC5ndGVfbHRfZXhjbHVzaXZlGsEBaGFzKHJ1bGVzLmx0KSAmJiBydWxlcy5sdCA8IHJ1bGVzLmd0ZSAmJiAodGhpcy5pc05hbigpIHx8IChydWxlcy5sdCA8PSB0aGlzICYmIHRoaXMgPCBydWxlcy5ndGUpKT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzIG9yIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndGUsIHJ1bGVzLmx0XSkgOiAnJwriAQoNZmxvYXQuZ3RlX2x0ZRrQAWhhcyhydWxlcy5sdGUpICYmIHJ1bGVzLmx0ZSA+PSBydWxlcy5ndGUgJiYgKHRoaXMuaXNOYW4oKSB8fCB0aGlzID4gcnVsZXMubHRlIHx8IHRoaXMgPCBydWxlcy5ndGUpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMgYW5kIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndGUsIHJ1bGVzLmx0ZV0pIDogJycK7AEKF2Zsb2F0Lmd0ZV9sdGVfZXhjbHVzaXZlGtABaGFzKHJ1bGVzLmx0ZSkgJiYgcnVsZXMubHRlIDwgcnVsZXMuZ3RlICYmICh0aGlzLmlzTmFuKCkgfHwgKHJ1bGVzLmx0ZSA8IHRoaXMgJiYgdGhpcyA8IHJ1bGVzLmd0ZSkpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMgb3IgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0ZSwgcnVsZXMubHRlXSkgOiAnJ0gBEn8KAmluGAYgAygCQnPCSHAKbgoIZmxvYXQuaW4aYiEodGhpcyBpbiBnZXRGaWVsZChydWxlcywgJ2luJykpID8gJ3ZhbHVlIG11c3QgYmUgaW4gbGlzdCAlcycuZm9ybWF0KFtnZXRGaWVsZChydWxlcywgJ2luJyldKSA6ICcnEnYKBm5vdF9pbhgHIAMoAkJmwkhjCmEKDGZsb2F0Lm5vdF9pbhpRdGhpcyBpbiBydWxlcy5ub3RfaW4gPyAndmFsdWUgbXVzdCBub3QgYmUgaW4gbGlzdCAlcycuZm9ybWF0KFtydWxlcy5ub3RfaW5dKSA6ICcnEnUKBmZpbml0ZRgIIAEoCEJlwkhiCmAKDGZsb2F0LmZpbml0ZRpQcnVsZXMuZmluaXRlID8gKHRoaXMuaXNOYW4oKSB8fCB0aGlzLmlzSW5mKCkgPyAndmFsdWUgbXVzdCBiZSBmaW5pdGUnIDogJycpIDogJycSKwoHZXhhbXBsZRgJIAMoAkIawkgXChUKDWZsb2F0LmV4YW1wbGUaBHRydWUqCQjoBxCAgICAAkILCglsZXNzX3RoYW5CDgoMZ3JlYXRlcl90aGFuIu0XCgtEb3VibGVSdWxlcxKEAQoFY29uc3QYASABKAFCdcJIcgpwCgxkb3VibGUuY29uc3QaYHRoaXMgIT0gZ2V0RmllbGQocnVsZXMsICdjb25zdCcpID8gJ3ZhbHVlIG11c3QgZXF1YWwgJXMnLmZvcm1hdChbZ2V0RmllbGQocnVsZXMsICdjb25zdCcpXSkgOiAnJxKgAQoCbHQYAiABKAFCkQHCSI0BCooBCglkb3VibGUubHQafSFoYXMocnVsZXMuZ3RlKSAmJiAhaGFzKHJ1bGVzLmd0KSAmJiAodGhpcy5pc05hbigpIHx8IHRoaXMgPj0gcnVsZXMubHQpPyAndmFsdWUgbXVzdCBiZSBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMubHRdKSA6ICcnSAASsAEKA2x0ZRgDIAEoAUKgAcJInAEKmQEKCmRvdWJsZS5sdGUaigEhaGFzKHJ1bGVzLmd0ZSkgJiYgIWhhcyhydWxlcy5ndCkgJiYgKHRoaXMuaXNOYW4oKSB8fCB0aGlzID4gcnVsZXMubHRlKT8gJ3ZhbHVlIG11c3QgYmUgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmx0ZV0pIDogJydIABL0BwoCZ3QYBCABKAFC5QfCSOEHCo4BCglkb3VibGUuZ3QagAEhaGFzKHJ1bGVzLmx0KSAmJiAhaGFzKHJ1bGVzLmx0ZSkgJiYgKHRoaXMuaXNOYW4oKSB8fCB0aGlzIDw9IHJ1bGVzLmd0KT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0XSkgOiAnJwrEAQoMZG91YmxlLmd0X2x0GrMBaGFzKHJ1bGVzLmx0KSAmJiBydWxlcy5sdCA+PSBydWxlcy5ndCAmJiAodGhpcy5pc05hbigpIHx8IHRoaXMgPj0gcnVsZXMubHQgfHwgdGhpcyA8PSBydWxlcy5ndCk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcyBhbmQgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdF0pIDogJycKzgEKFmRvdWJsZS5ndF9sdF9leGNsdXNpdmUaswFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0IDwgcnVsZXMuZ3QgJiYgKHRoaXMuaXNOYW4oKSB8fCAocnVsZXMubHQgPD0gdGhpcyAmJiB0aGlzIDw9IHJ1bGVzLmd0KSk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcyBvciBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3QsIHJ1bGVzLmx0XSkgOiAnJwrUAQoNZG91YmxlLmd0X2x0ZRrCAWhhcyhydWxlcy5sdGUpICYmIHJ1bGVzLmx0ZSA+PSBydWxlcy5ndCAmJiAodGhpcy5pc05hbigpIHx8IHRoaXMgPiBydWxlcy5sdGUgfHwgdGhpcyA8PSBydWxlcy5ndCk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcyBhbmQgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdGVdKSA6ICcnCt4BChdkb3VibGUuZ3RfbHRlX2V4Y2x1c2l2ZRrCAWhhcyhydWxlcy5sdGUpICYmIHJ1bGVzLmx0ZSA8IHJ1bGVzLmd0ICYmICh0aGlzLmlzTmFuKCkgfHwgKHJ1bGVzLmx0ZSA8IHRoaXMgJiYgdGhpcyA8PSBydWxlcy5ndCkpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgb3IgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdGVdKSA6ICcnSAESvwgKA2d0ZRgFIAEoAUKvCMJIqwgKnAEKCmRvdWJsZS5ndGUajQEhaGFzKHJ1bGVzLmx0KSAmJiAhaGFzKHJ1bGVzLmx0ZSkgJiYgKHRoaXMuaXNOYW4oKSB8fCB0aGlzIDwgcnVsZXMuZ3RlKT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0ZV0pIDogJycK0wEKDWRvdWJsZS5ndGVfbHQawQFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0ID49IHJ1bGVzLmd0ZSAmJiAodGhpcy5pc05hbigpIHx8IHRoaXMgPj0gcnVsZXMubHQgfHwgdGhpcyA8IHJ1bGVzLmd0ZSk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcyBhbmQgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0ZSwgcnVsZXMubHRdKSA6ICcnCt0BChdkb3VibGUuZ3RlX2x0X2V4Y2x1c2l2ZRrBAWhhcyhydWxlcy5sdCkgJiYgcnVsZXMubHQgPCBydWxlcy5ndGUgJiYgKHRoaXMuaXNOYW4oKSB8fCAocnVsZXMubHQgPD0gdGhpcyAmJiB0aGlzIDwgcnVsZXMuZ3RlKSk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcyBvciBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3RlLCBydWxlcy5sdF0pIDogJycK4wEKDmRvdWJsZS5ndGVfbHRlGtABaGFzKHJ1bGVzLmx0ZSkgJiYgcnVsZXMubHRlID49IHJ1bGVzLmd0ZSAmJiAodGhpcy5pc05hbigpIHx8IHRoaXMgPiBydWxlcy5sdGUgfHwgdGhpcyA8IHJ1bGVzLmd0ZSk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcyBhbmQgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0ZSwgcnVsZXMubHRlXSkgOiAnJwrtAQoYZG91YmxlLmd0ZV9sdGVfZXhjbHVzaXZlGtABaGFzKHJ1bGVzLmx0ZSkgJiYgcnVsZXMubHRlIDwgcnVsZXMuZ3RlICYmICh0aGlzLmlzTmFuKCkgfHwgKHJ1bGVzLmx0ZSA8IHRoaXMgJiYgdGhpcyA8IHJ1bGVzLmd0ZSkpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMgb3IgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0ZSwgcnVsZXMubHRlXSkgOiAnJ0gBEoABCgJpbhgGIAMoAUJ0wkhxCm8KCWRvdWJsZS5pbhpiISh0aGlzIGluIGdldEZpZWxkKHJ1bGVzLCAnaW4nKSkgPyAndmFsdWUgbXVzdCBiZSBpbiBsaXN0ICVzJy5mb3JtYXQoW2dldEZpZWxkKHJ1bGVzLCAnaW4nKV0pIDogJycSdwoGbm90X2luGAcgAygBQmfCSGQKYgoNZG91YmxlLm5vdF9pbhpRdGhpcyBpbiBydWxlcy5ub3RfaW4gPyAndmFsdWUgbXVzdCBub3QgYmUgaW4gbGlzdCAlcycuZm9ybWF0KFtydWxlcy5ub3RfaW5dKSA6ICcnEnYKBmZpbml0ZRgIIAEoCEJmwkhjCmEKDWRvdWJsZS5maW5pdGUaUHJ1bGVzLmZpbml0ZSA/ICh0aGlzLmlzTmFuKCkgfHwgdGhpcy5pc0luZigpID8gJ3ZhbHVlIG11c3QgYmUgZmluaXRlJyA6ICcnKSA6ICcnEiwKB2V4YW1wbGUYCSADKAFCG8JIGAoWCg5kb3VibGUuZXhhbXBsZRoEdHJ1ZSoJCOgHEICAgIACQgsKCWxlc3NfdGhhbkIOCgxncmVhdGVyX3RoYW4ijBUKCkludDMyUnVsZXMSgwEKBWNvbnN0GAEgASgFQnTCSHEKbwoLaW50MzIuY29uc3QaYHRoaXMgIT0gZ2V0RmllbGQocnVsZXMsICdjb25zdCcpID8gJ3ZhbHVlIG11c3QgZXF1YWwgJXMnLmZvcm1hdChbZ2V0RmllbGQocnVsZXMsICdjb25zdCcpXSkgOiAnJxKKAQoCbHQYAiABKAVCfMJIeQp3CghpbnQzMi5sdBprIWhhcyhydWxlcy5ndGUpICYmICFoYXMocnVsZXMuZ3QpICYmIHRoaXMgPj0gcnVsZXMubHQ/ICd2YWx1ZSBtdXN0IGJlIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5sdF0pIDogJydIABKcAQoDbHRlGAMgASgFQowBwkiIAQqFAQoJaW50MzIubHRlGnghaGFzKHJ1bGVzLmd0ZSkgJiYgIWhhcyhydWxlcy5ndCkgJiYgdGhpcyA+IHJ1bGVzLmx0ZT8gJ3ZhbHVlIG11c3QgYmUgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmx0ZV0pIDogJydIABKXBwoCZ3QYBCABKAVCiAfCSIQHCnoKCGludDMyLmd0Gm4haGFzKHJ1bGVzLmx0KSAmJiAhaGFzKHJ1bGVzLmx0ZSkgJiYgdGhpcyA8PSBydWxlcy5ndD8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0XSkgOiAnJwqzAQoLaW50MzIuZ3RfbHQaowFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0ID49IHJ1bGVzLmd0ICYmICh0aGlzID49IHJ1bGVzLmx0IHx8IHRoaXMgPD0gcnVsZXMuZ3QpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgYW5kIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndCwgcnVsZXMubHRdKSA6ICcnCrsBChVpbnQzMi5ndF9sdF9leGNsdXNpdmUaoQFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0IDwgcnVsZXMuZ3QgJiYgKHJ1bGVzLmx0IDw9IHRoaXMgJiYgdGhpcyA8PSBydWxlcy5ndCk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcyBvciBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3QsIHJ1bGVzLmx0XSkgOiAnJwrDAQoMaW50MzIuZ3RfbHRlGrIBaGFzKHJ1bGVzLmx0ZSkgJiYgcnVsZXMubHRlID49IHJ1bGVzLmd0ICYmICh0aGlzID4gcnVsZXMubHRlIHx8IHRoaXMgPD0gcnVsZXMuZ3QpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgYW5kIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndCwgcnVsZXMubHRlXSkgOiAnJwrLAQoWaW50MzIuZ3RfbHRlX2V4Y2x1c2l2ZRqwAWhhcyhydWxlcy5sdGUpICYmIHJ1bGVzLmx0ZSA8IHJ1bGVzLmd0ICYmIChydWxlcy5sdGUgPCB0aGlzICYmIHRoaXMgPD0gcnVsZXMuZ3QpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgb3IgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdGVdKSA6ICcnSAES4wcKA2d0ZRgFIAEoBULTB8JIzwcKiAEKCWludDMyLmd0ZRp7IWhhcyhydWxlcy5sdCkgJiYgIWhhcyhydWxlcy5sdGUpICYmIHRoaXMgPCBydWxlcy5ndGU/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndGVdKSA6ICcnCsIBCgxpbnQzMi5ndGVfbHQasQFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0ID49IHJ1bGVzLmd0ZSAmJiAodGhpcyA+PSBydWxlcy5sdCB8fCB0aGlzIDwgcnVsZXMuZ3RlKT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzIGFuZCBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3RlLCBydWxlcy5sdF0pIDogJycKygEKFmludDMyLmd0ZV9sdF9leGNsdXNpdmUarwFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0IDwgcnVsZXMuZ3RlICYmIChydWxlcy5sdCA8PSB0aGlzICYmIHRoaXMgPCBydWxlcy5ndGUpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMgb3IgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0ZSwgcnVsZXMubHRdKSA6ICcnCtIBCg1pbnQzMi5ndGVfbHRlGsABaGFzKHJ1bGVzLmx0ZSkgJiYgcnVsZXMubHRlID49IHJ1bGVzLmd0ZSAmJiAodGhpcyA+IHJ1bGVzLmx0ZSB8fCB0aGlzIDwgcnVsZXMuZ3RlKT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzIGFuZCBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3RlLCBydWxlcy5sdGVdKSA6ICcnCtoBChdpbnQzMi5ndGVfbHRlX2V4Y2x1c2l2ZRq+AWhhcyhydWxlcy5sdGUpICYmIHJ1bGVzLmx0ZSA8IHJ1bGVzLmd0ZSAmJiAocnVsZXMubHRlIDwgdGhpcyAmJiB0aGlzIDwgcnVsZXMuZ3RlKT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzIG9yIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndGUsIHJ1bGVzLmx0ZV0pIDogJydIARJ/CgJpbhgGIAMoBUJzwkhwCm4KCGludDMyLmluGmIhKHRoaXMgaW4gZ2V0RmllbGQocnVsZXMsICdpbicpKSA/ICd2YWx1ZSBtdXN0IGJlIGluIGxpc3QgJXMnLmZvcm1hdChbZ2V0RmllbGQocnVsZXMsICdpbicpXSkgOiAnJxJ2CgZub3RfaW4YByADKAVCZsJIYwphCgxpbnQzMi5ub3RfaW4aUXRoaXMgaW4gcnVsZXMubm90X2luID8gJ3ZhbHVlIG11c3Qgbm90IGJlIGluIGxpc3QgJXMnLmZvcm1hdChbcnVsZXMubm90X2luXSkgOiAnJxIrCgdleGFtcGxlGAggAygFQhrCSBcKFQoNaW50MzIuZXhhbXBsZRoEdHJ1ZSoJCOgHEICAgIACQgsKCWxlc3NfdGhhbkIOCgxncmVhdGVyX3RoYW4ijBUKCkludDY0UnVsZXMSgwEKBWNvbnN0GAEgASgDQnTCSHEKbwoLaW50NjQuY29uc3QaYHRoaXMgIT0gZ2V0RmllbGQocnVsZXMsICdjb25zdCcpID8gJ3ZhbHVlIG11c3QgZXF1YWwgJXMnLmZvcm1hdChbZ2V0RmllbGQocnVsZXMsICdjb25zdCcpXSkgOiAnJxKKAQoCbHQYAiABKANCfMJIeQp3CghpbnQ2NC5sdBprIWhhcyhydWxlcy5ndGUpICYmICFoYXMocnVsZXMuZ3QpICYmIHRoaXMgPj0gcnVsZXMubHQ/ICd2YWx1ZSBtdXN0IGJlIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5sdF0pIDogJydIABKcAQoDbHRlGAMgASgDQowBwkiIAQqFAQoJaW50NjQubHRlGnghaGFzKHJ1bGVzLmd0ZSkgJiYgIWhhcyhydWxlcy5ndCkgJiYgdGhpcyA+IHJ1bGVzLmx0ZT8gJ3ZhbHVlIG11c3QgYmUgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmx0ZV0pIDogJydIABKXBwoCZ3QYBCABKANCiAfCSIQHCnoKCGludDY0Lmd0Gm4haGFzKHJ1bGVzLmx0KSAmJiAhaGFzKHJ1bGVzLmx0ZSkgJiYgdGhpcyA8PSBydWxlcy5ndD8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0XSkgOiAnJwqzAQoLaW50NjQuZ3RfbHQaowFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0ID49IHJ1bGVzLmd0ICYmICh0aGlzID49IHJ1bGVzLmx0IHx8IHRoaXMgPD0gcnVsZXMuZ3QpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgYW5kIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndCwgcnVsZXMubHRdKSA6ICcnCrsBChVpbnQ2NC5ndF9sdF9leGNsdXNpdmUaoQFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0IDwgcnVsZXMuZ3QgJiYgKHJ1bGVzLmx0IDw9IHRoaXMgJiYgdGhpcyA8PSBydWxlcy5ndCk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcyBvciBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3QsIHJ1bGVzLmx0XSkgOiAnJwrDAQoMaW50NjQuZ3RfbHRlGrIBaGFzKHJ1bGVzLmx0ZSkgJiYgcnVsZXMubHRlID49IHJ1bGVzLmd0ICYmICh0aGlzID4gcnVsZXMubHRlIHx8IHRoaXMgPD0gcnVsZXMuZ3QpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgYW5kIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndCwgcnVsZXMubHRlXSkgOiAnJwrLAQoWaW50NjQuZ3RfbHRlX2V4Y2x1c2l2ZRqwAWhhcyhydWxlcy5sdGUpICYmIHJ1bGVzLmx0ZSA8IHJ1bGVzLmd0ICYmIChydWxlcy5sdGUgPCB0aGlzICYmIHRoaXMgPD0gcnVsZXMuZ3QpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgb3IgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdGVdKSA6ICcnSAES4wcKA2d0ZRgFIAEoA0LTB8JIzwcKiAEKCWludDY0Lmd0ZRp7IWhhcyhydWxlcy5sdCkgJiYgIWhhcyhydWxlcy5sdGUpICYmIHRoaXMgPCBydWxlcy5ndGU/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndGVdKSA6ICcnCsIBCgxpbnQ2NC5ndGVfbHQasQFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0ID49IHJ1bGVzLmd0ZSAmJiAodGhpcyA+PSBydWxlcy5sdCB8fCB0aGlzIDwgcnVsZXMuZ3RlKT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzIGFuZCBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3RlLCBydWxlcy5sdF0pIDogJycKygEKFmludDY0Lmd0ZV9sdF9leGNsdXNpdmUarwFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0IDwgcnVsZXMuZ3RlICYmIChydWxlcy5sdCA8PSB0aGlzICYmIHRoaXMgPCBydWxlcy5ndGUpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMgb3IgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0ZSwgcnVsZXMubHRdKSA6ICcnCtIBCg1pbnQ2NC5ndGVfbHRlGsABaGFzKHJ1bGVzLmx0ZSkgJiYgcnVsZXMubHRlID49IHJ1bGVzLmd0ZSAmJiAodGhpcyA+IHJ1bGVzLmx0ZSB8fCB0aGlzIDwgcnVsZXMuZ3RlKT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzIGFuZCBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3RlLCBydWxlcy5sdGVdKSA6ICcnCtoBChdpbnQ2NC5ndGVfbHRlX2V4Y2x1c2l2ZRq+AWhhcyhydWxlcy5sdGUpICYmIHJ1bGVzLmx0ZSA8IHJ1bGVzLmd0ZSAmJiAocnVsZXMubHRlIDwgdGhpcyAmJiB0aGlzIDwgcnVsZXMuZ3RlKT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzIG9yIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndGUsIHJ1bGVzLmx0ZV0pIDogJydIARJ/CgJpbhgGIAMoA0JzwkhwCm4KCGludDY0LmluGmIhKHRoaXMgaW4gZ2V0RmllbGQocnVsZXMsICdpbicpKSA/ICd2YWx1ZSBtdXN0IGJlIGluIGxpc3QgJXMnLmZvcm1hdChbZ2V0RmllbGQocnVsZXMsICdpbicpXSkgOiAnJxJ2CgZub3RfaW4YByADKANCZsJIYwphCgxpbnQ2NC5ub3RfaW4aUXRoaXMgaW4gcnVsZXMubm90X2luID8gJ3ZhbHVlIG11c3Qgbm90IGJlIGluIGxpc3QgJXMnLmZvcm1hdChbcnVsZXMubm90X2luXSkgOiAnJxIrCgdleGFtcGxlGAkgAygDQhrCSBcKFQoNaW50NjQuZXhhbXBsZRoEdHJ1ZSoJCOgHEICAgIACQgsKCWxlc3NfdGhhbkIOCgxncmVhdGVyX3RoYW4inhUKC1VJbnQzMlJ1bGVzEoQBCgVjb25zdBgBIAEoDUJ1wkhyCnAKDHVpbnQzMi5jb25zdBpgdGhpcyAhPSBnZXRGaWVsZChydWxlcywgJ2NvbnN0JykgPyAndmFsdWUgbXVzdCBlcXVhbCAlcycuZm9ybWF0KFtnZXRGaWVsZChydWxlcywgJ2NvbnN0JyldKSA6ICcnEosBCgJsdBgCIAEoDUJ9wkh6CngKCXVpbnQzMi5sdBprIWhhcyhydWxlcy5ndGUpICYmICFoYXMocnVsZXMuZ3QpICYmIHRoaXMgPj0gcnVsZXMubHQ/ICd2YWx1ZSBtdXN0IGJlIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5sdF0pIDogJydIABKdAQoDbHRlGAMgASgNQo0BwkiJAQqGAQoKdWludDMyLmx0ZRp4IWhhcyhydWxlcy5ndGUpICYmICFoYXMocnVsZXMuZ3QpICYmIHRoaXMgPiBydWxlcy5sdGU/ICd2YWx1ZSBtdXN0IGJlIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5sdGVdKSA6ICcnSAASnAcKAmd0GAQgASgNQo0HwkiJBwp7Cgl1aW50MzIuZ3QabiFoYXMocnVsZXMubHQpICYmICFoYXMocnVsZXMubHRlKSAmJiB0aGlzIDw9IHJ1bGVzLmd0PyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3RdKSA6ICcnCrQBCgx1aW50MzIuZ3RfbHQaowFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0ID49IHJ1bGVzLmd0ICYmICh0aGlzID49IHJ1bGVzLmx0IHx8IHRoaXMgPD0gcnVsZXMuZ3QpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgYW5kIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndCwgcnVsZXMubHRdKSA6ICcnCrwBChZ1aW50MzIuZ3RfbHRfZXhjbHVzaXZlGqEBaGFzKHJ1bGVzLmx0KSAmJiBydWxlcy5sdCA8IHJ1bGVzLmd0ICYmIChydWxlcy5sdCA8PSB0aGlzICYmIHRoaXMgPD0gcnVsZXMuZ3QpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgb3IgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdF0pIDogJycKxAEKDXVpbnQzMi5ndF9sdGUasgFoYXMocnVsZXMubHRlKSAmJiBydWxlcy5sdGUgPj0gcnVsZXMuZ3QgJiYgKHRoaXMgPiBydWxlcy5sdGUgfHwgdGhpcyA8PSBydWxlcy5ndCk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcyBhbmQgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdGVdKSA6ICcnCswBChd1aW50MzIuZ3RfbHRlX2V4Y2x1c2l2ZRqwAWhhcyhydWxlcy5sdGUpICYmIHJ1bGVzLmx0ZSA8IHJ1bGVzLmd0ICYmIChydWxlcy5sdGUgPCB0aGlzICYmIHRoaXMgPD0gcnVsZXMuZ3QpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgb3IgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdGVdKSA6ICcnSAES6AcKA2d0ZRgFIAEoDULYB8JI1AcKiQEKCnVpbnQzMi5ndGUaeyFoYXMocnVsZXMubHQpICYmICFoYXMocnVsZXMubHRlKSAmJiB0aGlzIDwgcnVsZXMuZ3RlPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3RlXSkgOiAnJwrDAQoNdWludDMyLmd0ZV9sdBqxAWhhcyhydWxlcy5sdCkgJiYgcnVsZXMubHQgPj0gcnVsZXMuZ3RlICYmICh0aGlzID49IHJ1bGVzLmx0IHx8IHRoaXMgPCBydWxlcy5ndGUpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMgYW5kIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndGUsIHJ1bGVzLmx0XSkgOiAnJwrLAQoXdWludDMyLmd0ZV9sdF9leGNsdXNpdmUarwFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0IDwgcnVsZXMuZ3RlICYmIChydWxlcy5sdCA8PSB0aGlzICYmIHRoaXMgPCBydWxlcy5ndGUpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMgb3IgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0ZSwgcnVsZXMubHRdKSA6ICcnCtMBCg51aW50MzIuZ3RlX2x0ZRrAAWhhcyhydWxlcy5sdGUpICYmIHJ1bGVzLmx0ZSA+PSBydWxlcy5ndGUgJiYgKHRoaXMgPiBydWxlcy5sdGUgfHwgdGhpcyA8IHJ1bGVzLmd0ZSk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcyBhbmQgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0ZSwgcnVsZXMubHRlXSkgOiAnJwrbAQoYdWludDMyLmd0ZV9sdGVfZXhjbHVzaXZlGr4BaGFzKHJ1bGVzLmx0ZSkgJiYgcnVsZXMubHRlIDwgcnVsZXMuZ3RlICYmIChydWxlcy5sdGUgPCB0aGlzICYmIHRoaXMgPCBydWxlcy5ndGUpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMgb3IgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0ZSwgcnVsZXMubHRlXSkgOiAnJ0gBEoABCgJpbhgGIAMoDUJ0wkhxCm8KCXVpbnQzMi5pbhpiISh0aGlzIGluIGdldEZpZWxkKHJ1bGVzLCAnaW4nKSkgPyAndmFsdWUgbXVzdCBiZSBpbiBsaXN0ICVzJy5mb3JtYXQoW2dldEZpZWxkKHJ1bGVzLCAnaW4nKV0pIDogJycSdwoGbm90X2luGAcgAygNQmfCSGQKYgoNdWludDMyLm5vdF9pbhpRdGhpcyBpbiBydWxlcy5ub3RfaW4gPyAndmFsdWUgbXVzdCBub3QgYmUgaW4gbGlzdCAlcycuZm9ybWF0KFtydWxlcy5ub3RfaW5dKSA6ICcnEiwKB2V4YW1wbGUYCCADKA1CG8JIGAoWCg51aW50MzIuZXhhbXBsZRoEdHJ1ZSoJCOgHEICAgIACQgsKCWxlc3NfdGhhbkIOCgxncmVhdGVyX3RoYW4inhUKC1VJbnQ2NFJ1bGVzEoQBCgVjb25zdBgBIAEoBEJ1wkhyCnAKDHVpbnQ2NC5jb25zdBpgdGhpcyAhPSBnZXRGaWVsZChydWxlcywgJ2NvbnN0JykgPyAndmFsdWUgbXVzdCBlcXVhbCAlcycuZm9ybWF0KFtnZXRGaWVsZChydWxlcywgJ2NvbnN0JyldKSA6ICcnEosBCgJsdBgCIAEoBEJ9wkh6CngKCXVpbnQ2NC5sdBprIWhhcyhydWxlcy5ndGUpICYmICFoYXMocnVsZXMuZ3QpICYmIHRoaXMgPj0gcnVsZXMubHQ/ICd2YWx1ZSBtdXN0IGJlIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5sdF0pIDogJydIABKdAQoDbHRlGAMgASgEQo0BwkiJAQqGAQoKdWludDY0Lmx0ZRp4IWhhcyhydWxlcy5ndGUpICYmICFoYXMocnVsZXMuZ3QpICYmIHRoaXMgPiBydWxlcy5sdGU/ICd2YWx1ZSBtdXN0IGJlIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5sdGVdKSA6ICcnSAASnAcKAmd0GAQgASgEQo0HwkiJBwp7Cgl1aW50NjQuZ3QabiFoYXMocnVsZXMubHQpICYmICFoYXMocnVsZXMubHRlKSAmJiB0aGlzIDw9IHJ1bGVzLmd0PyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3RdKSA6ICcnCrQBCgx1aW50NjQuZ3RfbHQaowFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0ID49IHJ1bGVzLmd0ICYmICh0aGlzID49IHJ1bGVzLmx0IHx8IHRoaXMgPD0gcnVsZXMuZ3QpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgYW5kIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndCwgcnVsZXMubHRdKSA6ICcnCrwBChZ1aW50NjQuZ3RfbHRfZXhjbHVzaXZlGqEBaGFzKHJ1bGVzLmx0KSAmJiBydWxlcy5sdCA8IHJ1bGVzLmd0ICYmIChydWxlcy5sdCA8PSB0aGlzICYmIHRoaXMgPD0gcnVsZXMuZ3QpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgb3IgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdF0pIDogJycKxAEKDXVpbnQ2NC5ndF9sdGUasgFoYXMocnVsZXMubHRlKSAmJiBydWxlcy5sdGUgPj0gcnVsZXMuZ3QgJiYgKHRoaXMgPiBydWxlcy5sdGUgfHwgdGhpcyA8PSBydWxlcy5ndCk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcyBhbmQgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdGVdKSA6ICcnCswBChd1aW50NjQuZ3RfbHRlX2V4Y2x1c2l2ZRqwAWhhcyhydWxlcy5sdGUpICYmIHJ1bGVzLmx0ZSA8IHJ1bGVzLmd0ICYmIChydWxlcy5sdGUgPCB0aGlzICYmIHRoaXMgPD0gcnVsZXMuZ3QpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgb3IgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdGVdKSA6ICcnSAES6AcKA2d0ZRgFIAEoBELYB8JI1AcKiQEKCnVpbnQ2NC5ndGUaeyFoYXMocnVsZXMubHQpICYmICFoYXMocnVsZXMubHRlKSAmJiB0aGlzIDwgcnVsZXMuZ3RlPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3RlXSkgOiAnJwrDAQoNdWludDY0Lmd0ZV9sdBqxAWhhcyhydWxlcy5sdCkgJiYgcnVsZXMubHQgPj0gcnVsZXMuZ3RlICYmICh0aGlzID49IHJ1bGVzLmx0IHx8IHRoaXMgPCBydWxlcy5ndGUpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMgYW5kIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndGUsIHJ1bGVzLmx0XSkgOiAnJwrLAQoXdWludDY0Lmd0ZV9sdF9leGNsdXNpdmUarwFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0IDwgcnVsZXMuZ3RlICYmIChydWxlcy5sdCA8PSB0aGlzICYmIHRoaXMgPCBydWxlcy5ndGUpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMgb3IgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0ZSwgcnVsZXMubHRdKSA6ICcnCtMBCg51aW50NjQuZ3RlX2x0ZRrAAWhhcyhydWxlcy5sdGUpICYmIHJ1bGVzLmx0ZSA+PSBydWxlcy5ndGUgJiYgKHRoaXMgPiBydWxlcy5sdGUgfHwgdGhpcyA8IHJ1bGVzLmd0ZSk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcyBhbmQgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0ZSwgcnVsZXMubHRlXSkgOiAnJwrbAQoYdWludDY0Lmd0ZV9sdGVfZXhjbHVzaXZlGr4BaGFzKHJ1bGVzLmx0ZSkgJiYgcnVsZXMubHRlIDwgcnVsZXMuZ3RlICYmIChydWxlcy5sdGUgPCB0aGlzICYmIHRoaXMgPCBydWxlcy5ndGUpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMgb3IgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0ZSwgcnVsZXMubHRlXSkgOiAnJ0gBEoABCgJpbhgGIAMoBEJ0wkhxCm8KCXVpbnQ2NC5pbhpiISh0aGlzIGluIGdldEZpZWxkKHJ1bGVzLCAnaW4nKSkgPyAndmFsdWUgbXVzdCBiZSBpbiBsaXN0ICVzJy5mb3JtYXQoW2dldEZpZWxkKHJ1bGVzLCAnaW4nKV0pIDogJycSdwoGbm90X2luGAcgAygEQmfCSGQKYgoNdWludDY0Lm5vdF9pbhpRdGhpcyBpbiBydWxlcy5ub3RfaW4gPyAndmFsdWUgbXVzdCBub3QgYmUgaW4gbGlzdCAlcycuZm9ybWF0KFtydWxlcy5ub3RfaW5dKSA6ICcnEiwKB2V4YW1wbGUYCCADKARCG8JIGAoWCg51aW50NjQuZXhhbXBsZRoEdHJ1ZSoJCOgHEICAgIACQgsKCWxlc3NfdGhhbkIOCgxncmVhdGVyX3RoYW4inhUKC1NJbnQzMlJ1bGVzEoQBCgVjb25zdBgBIAEoEUJ1wkhyCnAKDHNpbnQzMi5jb25zdBpgdGhpcyAhPSBnZXRGaWVsZChydWxlcywgJ2NvbnN0JykgPyAndmFsdWUgbXVzdCBlcXVhbCAlcycuZm9ybWF0KFtnZXRGaWVsZChydWxlcywgJ2NvbnN0JyldKSA6ICcnEosBCgJsdBgCIAEoEUJ9wkh6CngKCXNpbnQzMi5sdBprIWhhcyhydWxlcy5ndGUpICYmICFoYXMocnVsZXMuZ3QpICYmIHRoaXMgPj0gcnVsZXMubHQ/ICd2YWx1ZSBtdXN0IGJlIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5sdF0pIDogJydIABKdAQoDbHRlGAMgASgRQo0BwkiJAQqGAQoKc2ludDMyLmx0ZRp4IWhhcyhydWxlcy5ndGUpICYmICFoYXMocnVsZXMuZ3QpICYmIHRoaXMgPiBydWxlcy5sdGU/ICd2YWx1ZSBtdXN0IGJlIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5sdGVdKSA6ICcnSAASnAcKAmd0GAQgASgRQo0HwkiJBwp7CglzaW50MzIuZ3QabiFoYXMocnVsZXMubHQpICYmICFoYXMocnVsZXMubHRlKSAmJiB0aGlzIDw9IHJ1bGVzLmd0PyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3RdKSA6ICcnCrQBCgxzaW50MzIuZ3RfbHQaowFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0ID49IHJ1bGVzLmd0ICYmICh0aGlzID49IHJ1bGVzLmx0IHx8IHRoaXMgPD0gcnVsZXMuZ3QpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgYW5kIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndCwgcnVsZXMubHRdKSA6ICcnCrwBChZzaW50MzIuZ3RfbHRfZXhjbHVzaXZlGqEBaGFzKHJ1bGVzLmx0KSAmJiBydWxlcy5sdCA8IHJ1bGVzLmd0ICYmIChydWxlcy5sdCA8PSB0aGlzICYmIHRoaXMgPD0gcnVsZXMuZ3QpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgb3IgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdF0pIDogJycKxAEKDXNpbnQzMi5ndF9sdGUasgFoYXMocnVsZXMubHRlKSAmJiBydWxlcy5sdGUgPj0gcnVsZXMuZ3QgJiYgKHRoaXMgPiBydWxlcy5sdGUgfHwgdGhpcyA8PSBydWxlcy5ndCk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcyBhbmQgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdGVdKSA6ICcnCswBChdzaW50MzIuZ3RfbHRlX2V4Y2x1c2l2ZRqwAWhhcyhydWxlcy5sdGUpICYmIHJ1bGVzLmx0ZSA8IHJ1bGVzLmd0ICYmIChydWxlcy5sdGUgPCB0aGlzICYmIHRoaXMgPD0gcnVsZXMuZ3QpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgb3IgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdGVdKSA6ICcnSAES6AcKA2d0ZRgFIAEoEULYB8JI1AcKiQEKCnNpbnQzMi5ndGUaeyFoYXMocnVsZXMubHQpICYmICFoYXMocnVsZXMubHRlKSAmJiB0aGlzIDwgcnVsZXMuZ3RlPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3RlXSkgOiAnJwrDAQoNc2ludDMyLmd0ZV9sdBqxAWhhcyhydWxlcy5sdCkgJiYgcnVsZXMubHQgPj0gcnVsZXMuZ3RlICYmICh0aGlzID49IHJ1bGVzLmx0IHx8IHRoaXMgPCBydWxlcy5ndGUpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMgYW5kIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndGUsIHJ1bGVzLmx0XSkgOiAnJwrLAQoXc2ludDMyLmd0ZV9sdF9leGNsdXNpdmUarwFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0IDwgcnVsZXMuZ3RlICYmIChydWxlcy5sdCA8PSB0aGlzICYmIHRoaXMgPCBydWxlcy5ndGUpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMgb3IgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0ZSwgcnVsZXMubHRdKSA6ICcnCtMBCg5zaW50MzIuZ3RlX2x0ZRrAAWhhcyhydWxlcy5sdGUpICYmIHJ1bGVzLmx0ZSA+PSBydWxlcy5ndGUgJiYgKHRoaXMgPiBydWxlcy5sdGUgfHwgdGhpcyA8IHJ1bGVzLmd0ZSk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcyBhbmQgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0ZSwgcnVsZXMubHRlXSkgOiAnJwrbAQoYc2ludDMyLmd0ZV9sdGVfZXhjbHVzaXZlGr4BaGFzKHJ1bGVzLmx0ZSkgJiYgcnVsZXMubHRlIDwgcnVsZXMuZ3RlICYmIChydWxlcy5sdGUgPCB0aGlzICYmIHRoaXMgPCBydWxlcy5ndGUpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMgb3IgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0ZSwgcnVsZXMubHRlXSkgOiAnJ0gBEoABCgJpbhgGIAMoEUJ0wkhxCm8KCXNpbnQzMi5pbhpiISh0aGlzIGluIGdldEZpZWxkKHJ1bGVzLCAnaW4nKSkgPyAndmFsdWUgbXVzdCBiZSBpbiBsaXN0ICVzJy5mb3JtYXQoW2dldEZpZWxkKHJ1bGVzLCAnaW4nKV0pIDogJycSdwoGbm90X2luGAcgAygRQmfCSGQKYgoNc2ludDMyLm5vdF9pbhpRdGhpcyBpbiBydWxlcy5ub3RfaW4gPyAndmFsdWUgbXVzdCBub3QgYmUgaW4gbGlzdCAlcycuZm9ybWF0KFtydWxlcy5ub3RfaW5dKSA6ICcnEiwKB2V4YW1wbGUYCCADKBFCG8JIGAoWCg5zaW50MzIuZXhhbXBsZRoEdHJ1ZSoJCOgHEICAgIACQgsKCWxlc3NfdGhhbkIOCgxncmVhdGVyX3RoYW4inhUKC1NJbnQ2NFJ1bGVzEoQBCgVjb25zdBgBIAEoEkJ1wkhyCnAKDHNpbnQ2NC5jb25zdBpgdGhpcyAhPSBnZXRGaWVsZChydWxlcywgJ2NvbnN0JykgPyAndmFsdWUgbXVzdCBlcXVhbCAlcycuZm9ybWF0KFtnZXRGaWVsZChydWxlcywgJ2NvbnN0JyldKSA6ICcnEosBCgJsdBgCIAEoEkJ9wkh6CngKCXNpbnQ2NC5sdBprIWhhcyhydWxlcy5ndGUpICYmICFoYXMocnVsZXMuZ3QpICYmIHRoaXMgPj0gcnVsZXMubHQ/ICd2YWx1ZSBtdXN0IGJlIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5sdF0pIDogJydIABKdAQoDbHRlGAMgASgSQo0BwkiJAQqGAQoKc2ludDY0Lmx0ZRp4IWhhcyhydWxlcy5ndGUpICYmICFoYXMocnVsZXMuZ3QpICYmIHRoaXMgPiBydWxlcy5sdGU/ICd2YWx1ZSBtdXN0IGJlIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5sdGVdKSA6ICcnSAASnAcKAmd0GAQgASgSQo0HwkiJBwp7CglzaW50NjQuZ3QabiFoYXMocnVsZXMubHQpICYmICFoYXMocnVsZXMubHRlKSAmJiB0aGlzIDw9IHJ1bGVzLmd0PyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3RdKSA6ICcnCrQBCgxzaW50NjQuZ3RfbHQaowFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0ID49IHJ1bGVzLmd0ICYmICh0aGlzID49IHJ1bGVzLmx0IHx8IHRoaXMgPD0gcnVsZXMuZ3QpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgYW5kIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndCwgcnVsZXMubHRdKSA6ICcnCrwBChZzaW50NjQuZ3RfbHRfZXhjbHVzaXZlGqEBaGFzKHJ1bGVzLmx0KSAmJiBydWxlcy5sdCA8IHJ1bGVzLmd0ICYmIChydWxlcy5sdCA8PSB0aGlzICYmIHRoaXMgPD0gcnVsZXMuZ3QpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgb3IgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdF0pIDogJycKxAEKDXNpbnQ2NC5ndF9sdGUasgFoYXMocnVsZXMubHRlKSAmJiBydWxlcy5sdGUgPj0gcnVsZXMuZ3QgJiYgKHRoaXMgPiBydWxlcy5sdGUgfHwgdGhpcyA8PSBydWxlcy5ndCk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcyBhbmQgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdGVdKSA6ICcnCswBChdzaW50NjQuZ3RfbHRlX2V4Y2x1c2l2ZRqwAWhhcyhydWxlcy5sdGUpICYmIHJ1bGVzLmx0ZSA8IHJ1bGVzLmd0ICYmIChydWxlcy5sdGUgPCB0aGlzICYmIHRoaXMgPD0gcnVsZXMuZ3QpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgb3IgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdGVdKSA6ICcnSAES6AcKA2d0ZRgFIAEoEkLYB8JI1AcKiQEKCnNpbnQ2NC5ndGUaeyFoYXMocnVsZXMubHQpICYmICFoYXMocnVsZXMubHRlKSAmJiB0aGlzIDwgcnVsZXMuZ3RlPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3RlXSkgOiAnJwrDAQoNc2ludDY0Lmd0ZV9sdBqxAWhhcyhydWxlcy5sdCkgJiYgcnVsZXMubHQgPj0gcnVsZXMuZ3RlICYmICh0aGlzID49IHJ1bGVzLmx0IHx8IHRoaXMgPCBydWxlcy5ndGUpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMgYW5kIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndGUsIHJ1bGVzLmx0XSkgOiAnJwrLAQoXc2ludDY0Lmd0ZV9sdF9leGNsdXNpdmUarwFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0IDwgcnVsZXMuZ3RlICYmIChydWxlcy5sdCA8PSB0aGlzICYmIHRoaXMgPCBydWxlcy5ndGUpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMgb3IgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0ZSwgcnVsZXMubHRdKSA6ICcnCtMBCg5zaW50NjQuZ3RlX2x0ZRrAAWhhcyhydWxlcy5sdGUpICYmIHJ1bGVzLmx0ZSA+PSBydWxlcy5ndGUgJiYgKHRoaXMgPiBydWxlcy5sdGUgfHwgdGhpcyA8IHJ1bGVzLmd0ZSk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcyBhbmQgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0ZSwgcnVsZXMubHRlXSkgOiAnJwrbAQoYc2ludDY0Lmd0ZV9sdGVfZXhjbHVzaXZlGr4BaGFzKHJ1bGVzLmx0ZSkgJiYgcnVsZXMubHRlIDwgcnVsZXMuZ3RlICYmIChydWxlcy5sdGUgPCB0aGlzICYmIHRoaXMgPCBydWxlcy5ndGUpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMgb3IgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0ZSwgcnVsZXMubHRlXSkgOiAnJ0gBEoABCgJpbhgGIAMoEkJ0wkhxCm8KCXNpbnQ2NC5pbhpiISh0aGlzIGluIGdldEZpZWxkKHJ1bGVzLCAnaW4nKSkgPyAndmFsdWUgbXVzdCBiZSBpbiBsaXN0ICVzJy5mb3JtYXQoW2dldEZpZWxkKHJ1bGVzLCAnaW4nKV0pIDogJycSdwoGbm90X2luGAcgAygSQmfCSGQKYgoNc2ludDY0Lm5vdF9pbhpRdGhpcyBpbiBydWxlcy5ub3RfaW4gPyAndmFsdWUgbXVzdCBub3QgYmUgaW4gbGlzdCAlcycuZm9ybWF0KFtydWxlcy5ub3RfaW5dKSA6ICcnEiwKB2V4YW1wbGUYCCADKBJCG8JIGAoWCg5zaW50NjQuZXhhbXBsZRoEdHJ1ZSoJCOgHEICAgIACQgsKCWxlc3NfdGhhbkIOCgxncmVhdGVyX3RoYW4irxUKDEZpeGVkMzJSdWxlcxKFAQoFY29uc3QYASABKAdCdsJIcwpxCg1maXhlZDMyLmNvbnN0GmB0aGlzICE9IGdldEZpZWxkKHJ1bGVzLCAnY29uc3QnKSA/ICd2YWx1ZSBtdXN0IGVxdWFsICVzJy5mb3JtYXQoW2dldEZpZWxkKHJ1bGVzLCAnY29uc3QnKV0pIDogJycSjAEKAmx0GAIgASgHQn7CSHsKeQoKZml4ZWQzMi5sdBprIWhhcyhydWxlcy5ndGUpICYmICFoYXMocnVsZXMuZ3QpICYmIHRoaXMgPj0gcnVsZXMubHQ/ICd2YWx1ZSBtdXN0IGJlIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5sdF0pIDogJydIABKeAQoDbHRlGAMgASgHQo4BwkiKAQqHAQoLZml4ZWQzMi5sdGUaeCFoYXMocnVsZXMuZ3RlKSAmJiAhaGFzKHJ1bGVzLmd0KSAmJiB0aGlzID4gcnVsZXMubHRlPyAndmFsdWUgbXVzdCBiZSBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMubHRlXSkgOiAnJ0gAEqEHCgJndBgEIAEoB0KSB8JIjgcKfAoKZml4ZWQzMi5ndBpuIWhhcyhydWxlcy5sdCkgJiYgIWhhcyhydWxlcy5sdGUpICYmIHRoaXMgPD0gcnVsZXMuZ3Q/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndF0pIDogJycKtQEKDWZpeGVkMzIuZ3RfbHQaowFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0ID49IHJ1bGVzLmd0ICYmICh0aGlzID49IHJ1bGVzLmx0IHx8IHRoaXMgPD0gcnVsZXMuZ3QpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgYW5kIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndCwgcnVsZXMubHRdKSA6ICcnCr0BChdmaXhlZDMyLmd0X2x0X2V4Y2x1c2l2ZRqhAWhhcyhydWxlcy5sdCkgJiYgcnVsZXMubHQgPCBydWxlcy5ndCAmJiAocnVsZXMubHQgPD0gdGhpcyAmJiB0aGlzIDw9IHJ1bGVzLmd0KT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuICVzIG9yIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndCwgcnVsZXMubHRdKSA6ICcnCsUBCg5maXhlZDMyLmd0X2x0ZRqyAWhhcyhydWxlcy5sdGUpICYmIHJ1bGVzLmx0ZSA+PSBydWxlcy5ndCAmJiAodGhpcyA+IHJ1bGVzLmx0ZSB8fCB0aGlzIDw9IHJ1bGVzLmd0KT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuICVzIGFuZCBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3QsIHJ1bGVzLmx0ZV0pIDogJycKzQEKGGZpeGVkMzIuZ3RfbHRlX2V4Y2x1c2l2ZRqwAWhhcyhydWxlcy5sdGUpICYmIHJ1bGVzLmx0ZSA8IHJ1bGVzLmd0ICYmIChydWxlcy5sdGUgPCB0aGlzICYmIHRoaXMgPD0gcnVsZXMuZ3QpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgb3IgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdGVdKSA6ICcnSAES7QcKA2d0ZRgFIAEoB0LdB8JI2QcKigEKC2ZpeGVkMzIuZ3RlGnshaGFzKHJ1bGVzLmx0KSAmJiAhaGFzKHJ1bGVzLmx0ZSkgJiYgdGhpcyA8IHJ1bGVzLmd0ZT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0ZV0pIDogJycKxAEKDmZpeGVkMzIuZ3RlX2x0GrEBaGFzKHJ1bGVzLmx0KSAmJiBydWxlcy5sdCA+PSBydWxlcy5ndGUgJiYgKHRoaXMgPj0gcnVsZXMubHQgfHwgdGhpcyA8IHJ1bGVzLmd0ZSk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcyBhbmQgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0ZSwgcnVsZXMubHRdKSA6ICcnCswBChhmaXhlZDMyLmd0ZV9sdF9leGNsdXNpdmUarwFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0IDwgcnVsZXMuZ3RlICYmIChydWxlcy5sdCA8PSB0aGlzICYmIHRoaXMgPCBydWxlcy5ndGUpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMgb3IgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0ZSwgcnVsZXMubHRdKSA6ICcnCtQBCg9maXhlZDMyLmd0ZV9sdGUawAFoYXMocnVsZXMubHRlKSAmJiBydWxlcy5sdGUgPj0gcnVsZXMuZ3RlICYmICh0aGlzID4gcnVsZXMubHRlIHx8IHRoaXMgPCBydWxlcy5ndGUpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMgYW5kIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndGUsIHJ1bGVzLmx0ZV0pIDogJycK3AEKGWZpeGVkMzIuZ3RlX2x0ZV9leGNsdXNpdmUavgFoYXMocnVsZXMubHRlKSAmJiBydWxlcy5sdGUgPCBydWxlcy5ndGUgJiYgKHJ1bGVzLmx0ZSA8IHRoaXMgJiYgdGhpcyA8IHJ1bGVzLmd0ZSk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcyBvciBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3RlLCBydWxlcy5sdGVdKSA6ICcnSAESgQEKAmluGAYgAygHQnXCSHIKcAoKZml4ZWQzMi5pbhpiISh0aGlzIGluIGdldEZpZWxkKHJ1bGVzLCAnaW4nKSkgPyAndmFsdWUgbXVzdCBiZSBpbiBsaXN0ICVzJy5mb3JtYXQoW2dldEZpZWxkKHJ1bGVzLCAnaW4nKV0pIDogJycSeAoGbm90X2luGAcgAygHQmjCSGUKYwoOZml4ZWQzMi5ub3RfaW4aUXRoaXMgaW4gcnVsZXMubm90X2luID8gJ3ZhbHVlIG11c3Qgbm90IGJlIGluIGxpc3QgJXMnLmZvcm1hdChbcnVsZXMubm90X2luXSkgOiAnJxItCgdleGFtcGxlGAggAygHQhzCSBkKFwoPZml4ZWQzMi5leGFtcGxlGgR0cnVlKgkI6AcQgICAgAJCCwoJbGVzc190aGFuQg4KDGdyZWF0ZXJfdGhhbiKvFQoMRml4ZWQ2NFJ1bGVzEoUBCgVjb25zdBgBIAEoBkJ2wkhzCnEKDWZpeGVkNjQuY29uc3QaYHRoaXMgIT0gZ2V0RmllbGQocnVsZXMsICdjb25zdCcpID8gJ3ZhbHVlIG11c3QgZXF1YWwgJXMnLmZvcm1hdChbZ2V0RmllbGQocnVsZXMsICdjb25zdCcpXSkgOiAnJxKMAQoCbHQYAiABKAZCfsJIewp5CgpmaXhlZDY0Lmx0GmshaGFzKHJ1bGVzLmd0ZSkgJiYgIWhhcyhydWxlcy5ndCkgJiYgdGhpcyA+PSBydWxlcy5sdD8gJ3ZhbHVlIG11c3QgYmUgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmx0XSkgOiAnJ0gAEp4BCgNsdGUYAyABKAZCjgHCSIoBCocBCgtmaXhlZDY0Lmx0ZRp4IWhhcyhydWxlcy5ndGUpICYmICFoYXMocnVsZXMuZ3QpICYmIHRoaXMgPiBydWxlcy5sdGU/ICd2YWx1ZSBtdXN0IGJlIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5sdGVdKSA6ICcnSAASoQcKAmd0GAQgASgGQpIHwkiOBwp8CgpmaXhlZDY0Lmd0Gm4haGFzKHJ1bGVzLmx0KSAmJiAhaGFzKHJ1bGVzLmx0ZSkgJiYgdGhpcyA8PSBydWxlcy5ndD8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0XSkgOiAnJwq1AQoNZml4ZWQ2NC5ndF9sdBqjAWhhcyhydWxlcy5sdCkgJiYgcnVsZXMubHQgPj0gcnVsZXMuZ3QgJiYgKHRoaXMgPj0gcnVsZXMubHQgfHwgdGhpcyA8PSBydWxlcy5ndCk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcyBhbmQgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdF0pIDogJycKvQEKF2ZpeGVkNjQuZ3RfbHRfZXhjbHVzaXZlGqEBaGFzKHJ1bGVzLmx0KSAmJiBydWxlcy5sdCA8IHJ1bGVzLmd0ICYmIChydWxlcy5sdCA8PSB0aGlzICYmIHRoaXMgPD0gcnVsZXMuZ3QpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgb3IgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdF0pIDogJycKxQEKDmZpeGVkNjQuZ3RfbHRlGrIBaGFzKHJ1bGVzLmx0ZSkgJiYgcnVsZXMubHRlID49IHJ1bGVzLmd0ICYmICh0aGlzID4gcnVsZXMubHRlIHx8IHRoaXMgPD0gcnVsZXMuZ3QpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgYW5kIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndCwgcnVsZXMubHRlXSkgOiAnJwrNAQoYZml4ZWQ2NC5ndF9sdGVfZXhjbHVzaXZlGrABaGFzKHJ1bGVzLmx0ZSkgJiYgcnVsZXMubHRlIDwgcnVsZXMuZ3QgJiYgKHJ1bGVzLmx0ZSA8IHRoaXMgJiYgdGhpcyA8PSBydWxlcy5ndCk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcyBvciBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3QsIHJ1bGVzLmx0ZV0pIDogJydIARLtBwoDZ3RlGAUgASgGQt0HwkjZBwqKAQoLZml4ZWQ2NC5ndGUaeyFoYXMocnVsZXMubHQpICYmICFoYXMocnVsZXMubHRlKSAmJiB0aGlzIDwgcnVsZXMuZ3RlPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3RlXSkgOiAnJwrEAQoOZml4ZWQ2NC5ndGVfbHQasQFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0ID49IHJ1bGVzLmd0ZSAmJiAodGhpcyA+PSBydWxlcy5sdCB8fCB0aGlzIDwgcnVsZXMuZ3RlKT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzIGFuZCBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3RlLCBydWxlcy5sdF0pIDogJycKzAEKGGZpeGVkNjQuZ3RlX2x0X2V4Y2x1c2l2ZRqvAWhhcyhydWxlcy5sdCkgJiYgcnVsZXMubHQgPCBydWxlcy5ndGUgJiYgKHJ1bGVzLmx0IDw9IHRoaXMgJiYgdGhpcyA8IHJ1bGVzLmd0ZSk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcyBvciBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3RlLCBydWxlcy5sdF0pIDogJycK1AEKD2ZpeGVkNjQuZ3RlX2x0ZRrAAWhhcyhydWxlcy5sdGUpICYmIHJ1bGVzLmx0ZSA+PSBydWxlcy5ndGUgJiYgKHRoaXMgPiBydWxlcy5sdGUgfHwgdGhpcyA8IHJ1bGVzLmd0ZSk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcyBhbmQgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0ZSwgcnVsZXMubHRlXSkgOiAnJwrcAQoZZml4ZWQ2NC5ndGVfbHRlX2V4Y2x1c2l2ZRq+AWhhcyhydWxlcy5sdGUpICYmIHJ1bGVzLmx0ZSA8IHJ1bGVzLmd0ZSAmJiAocnVsZXMubHRlIDwgdGhpcyAmJiB0aGlzIDwgcnVsZXMuZ3RlKT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzIG9yIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndGUsIHJ1bGVzLmx0ZV0pIDogJydIARKBAQoCaW4YBiADKAZCdcJIcgpwCgpmaXhlZDY0LmluGmIhKHRoaXMgaW4gZ2V0RmllbGQocnVsZXMsICdpbicpKSA/ICd2YWx1ZSBtdXN0IGJlIGluIGxpc3QgJXMnLmZvcm1hdChbZ2V0RmllbGQocnVsZXMsICdpbicpXSkgOiAnJxJ4CgZub3RfaW4YByADKAZCaMJIZQpjCg5maXhlZDY0Lm5vdF9pbhpRdGhpcyBpbiBydWxlcy5ub3RfaW4gPyAndmFsdWUgbXVzdCBub3QgYmUgaW4gbGlzdCAlcycuZm9ybWF0KFtydWxlcy5ub3RfaW5dKSA6ICcnEi0KB2V4YW1wbGUYCCADKAZCHMJIGQoXCg9maXhlZDY0LmV4YW1wbGUaBHRydWUqCQjoBxCAgICAAkILCglsZXNzX3RoYW5CDgoMZ3JlYXRlcl90aGFuIsAVCg1TRml4ZWQzMlJ1bGVzEoYBCgVjb25zdBgBIAEoD0J3wkh0CnIKDnNmaXhlZDMyLmNvbnN0GmB0aGlzICE9IGdldEZpZWxkKHJ1bGVzLCAnY29uc3QnKSA/ICd2YWx1ZSBtdXN0IGVxdWFsICVzJy5mb3JtYXQoW2dldEZpZWxkKHJ1bGVzLCAnY29uc3QnKV0pIDogJycSjQEKAmx0GAIgASgPQn/CSHwKegoLc2ZpeGVkMzIubHQaayFoYXMocnVsZXMuZ3RlKSAmJiAhaGFzKHJ1bGVzLmd0KSAmJiB0aGlzID49IHJ1bGVzLmx0PyAndmFsdWUgbXVzdCBiZSBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMubHRdKSA6ICcnSAASnwEKA2x0ZRgDIAEoD0KPAcJIiwEKiAEKDHNmaXhlZDMyLmx0ZRp4IWhhcyhydWxlcy5ndGUpICYmICFoYXMocnVsZXMuZ3QpICYmIHRoaXMgPiBydWxlcy5sdGU/ICd2YWx1ZSBtdXN0IGJlIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5sdGVdKSA6ICcnSAASpgcKAmd0GAQgASgPQpcHwkiTBwp9CgtzZml4ZWQzMi5ndBpuIWhhcyhydWxlcy5sdCkgJiYgIWhhcyhydWxlcy5sdGUpICYmIHRoaXMgPD0gcnVsZXMuZ3Q/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndF0pIDogJycKtgEKDnNmaXhlZDMyLmd0X2x0GqMBaGFzKHJ1bGVzLmx0KSAmJiBydWxlcy5sdCA+PSBydWxlcy5ndCAmJiAodGhpcyA+PSBydWxlcy5sdCB8fCB0aGlzIDw9IHJ1bGVzLmd0KT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuICVzIGFuZCBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3QsIHJ1bGVzLmx0XSkgOiAnJwq+AQoYc2ZpeGVkMzIuZ3RfbHRfZXhjbHVzaXZlGqEBaGFzKHJ1bGVzLmx0KSAmJiBydWxlcy5sdCA8IHJ1bGVzLmd0ICYmIChydWxlcy5sdCA8PSB0aGlzICYmIHRoaXMgPD0gcnVsZXMuZ3QpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgb3IgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdF0pIDogJycKxgEKD3NmaXhlZDMyLmd0X2x0ZRqyAWhhcyhydWxlcy5sdGUpICYmIHJ1bGVzLmx0ZSA+PSBydWxlcy5ndCAmJiAodGhpcyA+IHJ1bGVzLmx0ZSB8fCB0aGlzIDw9IHJ1bGVzLmd0KT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuICVzIGFuZCBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3QsIHJ1bGVzLmx0ZV0pIDogJycKzgEKGXNmaXhlZDMyLmd0X2x0ZV9leGNsdXNpdmUasAFoYXMocnVsZXMubHRlKSAmJiBydWxlcy5sdGUgPCBydWxlcy5ndCAmJiAocnVsZXMubHRlIDwgdGhpcyAmJiB0aGlzIDw9IHJ1bGVzLmd0KT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuICVzIG9yIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndCwgcnVsZXMubHRlXSkgOiAnJ0gBEvIHCgNndGUYBSABKA9C4gfCSN4HCosBCgxzZml4ZWQzMi5ndGUaeyFoYXMocnVsZXMubHQpICYmICFoYXMocnVsZXMubHRlKSAmJiB0aGlzIDwgcnVsZXMuZ3RlPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3RlXSkgOiAnJwrFAQoPc2ZpeGVkMzIuZ3RlX2x0GrEBaGFzKHJ1bGVzLmx0KSAmJiBydWxlcy5sdCA+PSBydWxlcy5ndGUgJiYgKHRoaXMgPj0gcnVsZXMubHQgfHwgdGhpcyA8IHJ1bGVzLmd0ZSk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcyBhbmQgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0ZSwgcnVsZXMubHRdKSA6ICcnCs0BChlzZml4ZWQzMi5ndGVfbHRfZXhjbHVzaXZlGq8BaGFzKHJ1bGVzLmx0KSAmJiBydWxlcy5sdCA8IHJ1bGVzLmd0ZSAmJiAocnVsZXMubHQgPD0gdGhpcyAmJiB0aGlzIDwgcnVsZXMuZ3RlKT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzIG9yIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndGUsIHJ1bGVzLmx0XSkgOiAnJwrVAQoQc2ZpeGVkMzIuZ3RlX2x0ZRrAAWhhcyhydWxlcy5sdGUpICYmIHJ1bGVzLmx0ZSA+PSBydWxlcy5ndGUgJiYgKHRoaXMgPiBydWxlcy5sdGUgfHwgdGhpcyA8IHJ1bGVzLmd0ZSk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcyBhbmQgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0ZSwgcnVsZXMubHRlXSkgOiAnJwrdAQoac2ZpeGVkMzIuZ3RlX2x0ZV9leGNsdXNpdmUavgFoYXMocnVsZXMubHRlKSAmJiBydWxlcy5sdGUgPCBydWxlcy5ndGUgJiYgKHJ1bGVzLmx0ZSA8IHRoaXMgJiYgdGhpcyA8IHJ1bGVzLmd0ZSk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcyBvciBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3RlLCBydWxlcy5sdGVdKSA6ICcnSAESggEKAmluGAYgAygPQnbCSHMKcQoLc2ZpeGVkMzIuaW4aYiEodGhpcyBpbiBnZXRGaWVsZChydWxlcywgJ2luJykpID8gJ3ZhbHVlIG11c3QgYmUgaW4gbGlzdCAlcycuZm9ybWF0KFtnZXRGaWVsZChydWxlcywgJ2luJyldKSA6ICcnEnkKBm5vdF9pbhgHIAMoD0JpwkhmCmQKD3NmaXhlZDMyLm5vdF9pbhpRdGhpcyBpbiBydWxlcy5ub3RfaW4gPyAndmFsdWUgbXVzdCBub3QgYmUgaW4gbGlzdCAlcycuZm9ybWF0KFtydWxlcy5ub3RfaW5dKSA6ICcnEi4KB2V4YW1wbGUYCCADKA9CHcJIGgoYChBzZml4ZWQzMi5leGFtcGxlGgR0cnVlKgkI6AcQgICAgAJCCwoJbGVzc190aGFuQg4KDGdyZWF0ZXJfdGhhbiLAFQoNU0ZpeGVkNjRSdWxlcxKGAQoFY29uc3QYASABKBBCd8JIdApyCg5zZml4ZWQ2NC5jb25zdBpgdGhpcyAhPSBnZXRGaWVsZChydWxlcywgJ2NvbnN0JykgPyAndmFsdWUgbXVzdCBlcXVhbCAlcycuZm9ybWF0KFtnZXRGaWVsZChydWxlcywgJ2NvbnN0JyldKSA6ICcnEo0BCgJsdBgCIAEoEEJ/wkh8CnoKC3NmaXhlZDY0Lmx0GmshaGFzKHJ1bGVzLmd0ZSkgJiYgIWhhcyhydWxlcy5ndCkgJiYgdGhpcyA+PSBydWxlcy5sdD8gJ3ZhbHVlIG11c3QgYmUgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmx0XSkgOiAnJ0gAEp8BCgNsdGUYAyABKBBCjwHCSIsBCogBCgxzZml4ZWQ2NC5sdGUaeCFoYXMocnVsZXMuZ3RlKSAmJiAhaGFzKHJ1bGVzLmd0KSAmJiB0aGlzID4gcnVsZXMubHRlPyAndmFsdWUgbXVzdCBiZSBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMubHRlXSkgOiAnJ0gAEqYHCgJndBgEIAEoEEKXB8JIkwcKfQoLc2ZpeGVkNjQuZ3QabiFoYXMocnVsZXMubHQpICYmICFoYXMocnVsZXMubHRlKSAmJiB0aGlzIDw9IHJ1bGVzLmd0PyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3RdKSA6ICcnCrYBCg5zZml4ZWQ2NC5ndF9sdBqjAWhhcyhydWxlcy5sdCkgJiYgcnVsZXMubHQgPj0gcnVsZXMuZ3QgJiYgKHRoaXMgPj0gcnVsZXMubHQgfHwgdGhpcyA8PSBydWxlcy5ndCk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcyBhbmQgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdF0pIDogJycKvgEKGHNmaXhlZDY0Lmd0X2x0X2V4Y2x1c2l2ZRqhAWhhcyhydWxlcy5sdCkgJiYgcnVsZXMubHQgPCBydWxlcy5ndCAmJiAocnVsZXMubHQgPD0gdGhpcyAmJiB0aGlzIDw9IHJ1bGVzLmd0KT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuICVzIG9yIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndCwgcnVsZXMubHRdKSA6ICcnCsYBCg9zZml4ZWQ2NC5ndF9sdGUasgFoYXMocnVsZXMubHRlKSAmJiBydWxlcy5sdGUgPj0gcnVsZXMuZ3QgJiYgKHRoaXMgPiBydWxlcy5sdGUgfHwgdGhpcyA8PSBydWxlcy5ndCk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcyBhbmQgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdGVdKSA6ICcnCs4BChlzZml4ZWQ2NC5ndF9sdGVfZXhjbHVzaXZlGrABaGFzKHJ1bGVzLmx0ZSkgJiYgcnVsZXMubHRlIDwgcnVsZXMuZ3QgJiYgKHJ1bGVzLmx0ZSA8IHRoaXMgJiYgdGhpcyA8PSBydWxlcy5ndCk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcyBvciBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3QsIHJ1bGVzLmx0ZV0pIDogJydIARLyBwoDZ3RlGAUgASgQQuIHwkjeBwqLAQoMc2ZpeGVkNjQuZ3RlGnshaGFzKHJ1bGVzLmx0KSAmJiAhaGFzKHJ1bGVzLmx0ZSkgJiYgdGhpcyA8IHJ1bGVzLmd0ZT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0ZV0pIDogJycKxQEKD3NmaXhlZDY0Lmd0ZV9sdBqxAWhhcyhydWxlcy5sdCkgJiYgcnVsZXMubHQgPj0gcnVsZXMuZ3RlICYmICh0aGlzID49IHJ1bGVzLmx0IHx8IHRoaXMgPCBydWxlcy5ndGUpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMgYW5kIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndGUsIHJ1bGVzLmx0XSkgOiAnJwrNAQoZc2ZpeGVkNjQuZ3RlX2x0X2V4Y2x1c2l2ZRqvAWhhcyhydWxlcy5sdCkgJiYgcnVsZXMubHQgPCBydWxlcy5ndGUgJiYgKHJ1bGVzLmx0IDw9IHRoaXMgJiYgdGhpcyA8IHJ1bGVzLmd0ZSk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcyBvciBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3RlLCBydWxlcy5sdF0pIDogJycK1QEKEHNmaXhlZDY0Lmd0ZV9sdGUawAFoYXMocnVsZXMubHRlKSAmJiBydWxlcy5sdGUgPj0gcnVsZXMuZ3RlICYmICh0aGlzID4gcnVsZXMubHRlIHx8IHRoaXMgPCBydWxlcy5ndGUpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMgYW5kIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndGUsIHJ1bGVzLmx0ZV0pIDogJycK3QEKGnNmaXhlZDY0Lmd0ZV9sdGVfZXhjbHVzaXZlGr4BaGFzKHJ1bGVzLmx0ZSkgJiYgcnVsZXMubHRlIDwgcnVsZXMuZ3RlICYmIChydWxlcy5sdGUgPCB0aGlzICYmIHRoaXMgPCBydWxlcy5ndGUpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMgb3IgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0ZSwgcnVsZXMubHRlXSkgOiAnJ0gBEoIBCgJpbhgGIAMoEEJ2wkhzCnEKC3NmaXhlZDY0LmluGmIhKHRoaXMgaW4gZ2V0RmllbGQocnVsZXMsICdpbicpKSA/ICd2YWx1ZSBtdXN0IGJlIGluIGxpc3QgJXMnLmZvcm1hdChbZ2V0RmllbGQocnVsZXMsICdpbicpXSkgOiAnJxJ5CgZub3RfaW4YByADKBBCacJIZgpkCg9zZml4ZWQ2NC5ub3RfaW4aUXRoaXMgaW4gcnVsZXMubm90X2luID8gJ3ZhbHVlIG11c3Qgbm90IGJlIGluIGxpc3QgJXMnLmZvcm1hdChbcnVsZXMubm90X2luXSkgOiAnJxIuCgdleGFtcGxlGAggAygQQh3CSBoKGAoQc2ZpeGVkNjQuZXhhbXBsZRoEdHJ1ZSoJCOgHEICAgIACQgsKCWxlc3NfdGhhbkIOCgxncmVhdGVyX3RoYW4ixwEKCUJvb2xSdWxlcxKCAQoFY29uc3QYASABKAhCc8JIcApuCgpib29sLmNvbnN0GmB0aGlzICE9IGdldEZpZWxkKHJ1bGVzLCAnY29uc3QnKSA/ICd2YWx1ZSBtdXN0IGVxdWFsICVzJy5mb3JtYXQoW2dldEZpZWxkKHJ1bGVzLCAnY29uc3QnKV0pIDogJycSKgoHZXhhbXBsZRgCIAMoCEIZwkgWChQKDGJvb2wuZXhhbXBsZRoEdHJ1ZSoJCOgHEICAgIACIpA3CgtTdHJpbmdSdWxlcxKGAQoFY29uc3QYASABKAlCd8JIdApyCgxzdHJpbmcuY29uc3QaYnRoaXMgIT0gZ2V0RmllbGQocnVsZXMsICdjb25zdCcpID8gJ3ZhbHVlIG11c3QgZXF1YWwgYCVzYCcuZm9ybWF0KFtnZXRGaWVsZChydWxlcywgJ2NvbnN0JyldKSA6ICcnEn4KA2xlbhgTIAEoBEJxwkhuCmwKCnN0cmluZy5sZW4aXnVpbnQodGhpcy5zaXplKCkpICE9IHJ1bGVzLmxlbiA/ICd2YWx1ZSBsZW5ndGggbXVzdCBiZSAlcyBjaGFyYWN0ZXJzJy5mb3JtYXQoW3J1bGVzLmxlbl0pIDogJycSmQEKB21pbl9sZW4YAiABKARChwHCSIMBCoABCg5zdHJpbmcubWluX2xlbhpudWludCh0aGlzLnNpemUoKSkgPCBydWxlcy5taW5fbGVuID8gJ3ZhbHVlIGxlbmd0aCBtdXN0IGJlIGF0IGxlYXN0ICVzIGNoYXJhY3RlcnMnLmZvcm1hdChbcnVsZXMubWluX2xlbl0pIDogJycSlwEKB21heF9sZW4YAyABKARChQHCSIEBCn8KDnN0cmluZy5tYXhfbGVuGm11aW50KHRoaXMuc2l6ZSgpKSA+IHJ1bGVzLm1heF9sZW4gPyAndmFsdWUgbGVuZ3RoIG11c3QgYmUgYXQgbW9zdCAlcyBjaGFyYWN0ZXJzJy5mb3JtYXQoW3J1bGVzLm1heF9sZW5dKSA6ICcnEpsBCglsZW5fYnl0ZXMYFCABKARChwHCSIMBCoABChBzdHJpbmcubGVuX2J5dGVzGmx1aW50KGJ5dGVzKHRoaXMpLnNpemUoKSkgIT0gcnVsZXMubGVuX2J5dGVzID8gJ3ZhbHVlIGxlbmd0aCBtdXN0IGJlICVzIGJ5dGVzJy5mb3JtYXQoW3J1bGVzLmxlbl9ieXRlc10pIDogJycSowEKCW1pbl9ieXRlcxgEIAEoBEKPAcJIiwEKiAEKEHN0cmluZy5taW5fYnl0ZXMadHVpbnQoYnl0ZXModGhpcykuc2l6ZSgpKSA8IHJ1bGVzLm1pbl9ieXRlcyA/ICd2YWx1ZSBsZW5ndGggbXVzdCBiZSBhdCBsZWFzdCAlcyBieXRlcycuZm9ybWF0KFtydWxlcy5taW5fYnl0ZXNdKSA6ICcnEqIBCgltYXhfYnl0ZXMYBSABKARCjgHCSIoBCocBChBzdHJpbmcubWF4X2J5dGVzGnN1aW50KGJ5dGVzKHRoaXMpLnNpemUoKSkgPiBydWxlcy5tYXhfYnl0ZXMgPyAndmFsdWUgbGVuZ3RoIG11c3QgYmUgYXQgbW9zdCAlcyBieXRlcycuZm9ybWF0KFtydWxlcy5tYXhfYnl0ZXNdKSA6ICcnEo0BCgdwYXR0ZXJuGAYgASgJQnzCSHkKdwoOc3RyaW5nLnBhdHRlcm4aZSF0aGlzLm1hdGNoZXMocnVsZXMucGF0dGVybikgPyAndmFsdWUgZG9lcyBub3QgbWF0Y2ggcmVnZXggcGF0dGVybiBgJXNgJy5mb3JtYXQoW3J1bGVzLnBhdHRlcm5dKSA6ICcnEoQBCgZwcmVmaXgYByABKAlCdMJIcQpvCg1zdHJpbmcucHJlZml4Gl4hdGhpcy5zdGFydHNXaXRoKHJ1bGVzLnByZWZpeCkgPyAndmFsdWUgZG9lcyBub3QgaGF2ZSBwcmVmaXggYCVzYCcuZm9ybWF0KFtydWxlcy5wcmVmaXhdKSA6ICcnEoIBCgZzdWZmaXgYCCABKAlCcsJIbwptCg1zdHJpbmcuc3VmZml4GlwhdGhpcy5lbmRzV2l0aChydWxlcy5zdWZmaXgpID8gJ3ZhbHVlIGRvZXMgbm90IGhhdmUgc3VmZml4IGAlc2AnLmZvcm1hdChbcnVsZXMuc3VmZml4XSkgOiAnJxKQAQoIY29udGFpbnMYCSABKAlCfsJIewp5Cg9zdHJpbmcuY29udGFpbnMaZiF0aGlzLmNvbnRhaW5zKHJ1bGVzLmNvbnRhaW5zKSA/ICd2YWx1ZSBkb2VzIG5vdCBjb250YWluIHN1YnN0cmluZyBgJXNgJy5mb3JtYXQoW3J1bGVzLmNvbnRhaW5zXSkgOiAnJxKYAQoMbm90X2NvbnRhaW5zGBcgASgJQoEBwkh+CnwKE3N0cmluZy5ub3RfY29udGFpbnMaZXRoaXMuY29udGFpbnMocnVsZXMubm90X2NvbnRhaW5zKSA/ICd2YWx1ZSBjb250YWlucyBzdWJzdHJpbmcgYCVzYCcuZm9ybWF0KFtydWxlcy5ub3RfY29udGFpbnNdKSA6ICcnEoABCgJpbhgKIAMoCUJ0wkhxCm8KCXN0cmluZy5pbhpiISh0aGlzIGluIGdldEZpZWxkKHJ1bGVzLCAnaW4nKSkgPyAndmFsdWUgbXVzdCBiZSBpbiBsaXN0ICVzJy5mb3JtYXQoW2dldEZpZWxkKHJ1bGVzLCAnaW4nKV0pIDogJycSdwoGbm90X2luGAsgAygJQmfCSGQKYgoNc3RyaW5nLm5vdF9pbhpRdGhpcyBpbiBydWxlcy5ub3RfaW4gPyAndmFsdWUgbXVzdCBub3QgYmUgaW4gbGlzdCAlcycuZm9ybWF0KFtydWxlcy5ub3RfaW5dKSA6ICcnEt8BCgVlbWFpbBgMIAEoCELNAcJIyQEKYQoMc3RyaW5nLmVtYWlsEiN2YWx1ZSBtdXN0IGJlIGEgdmFsaWQgZW1haWwgYWRkcmVzcxosIXJ1bGVzLmVtYWlsIHx8IHRoaXMgPT0gJycgfHwgdGhpcy5pc0VtYWlsKCkKZAoSc3RyaW5nLmVtYWlsX2VtcHR5EjJ2YWx1ZSBpcyBlbXB0eSwgd2hpY2ggaXMgbm90IGEgdmFsaWQgZW1haWwgYWRkcmVzcxoaIXJ1bGVzLmVtYWlsIHx8IHRoaXMgIT0gJydIABLnAQoIaG9zdG5hbWUYDSABKAhC0gHCSM4BCmUKD3N0cmluZy5ob3N0bmFtZRIedmFsdWUgbXVzdCBiZSBhIHZhbGlkIGhvc3RuYW1lGjIhcnVsZXMuaG9zdG5hbWUgfHwgdGhpcyA9PSAnJyB8fCB0aGlzLmlzSG9zdG5hbWUoKQplChVzdHJpbmcuaG9zdG5hbWVfZW1wdHkSLXZhbHVlIGlzIGVtcHR5LCB3aGljaCBpcyBub3QgYSB2YWxpZCBob3N0bmFtZRodIXJ1bGVzLmhvc3RuYW1lIHx8IHRoaXMgIT0gJydIABLHAQoCaXAYDiABKAhCuAHCSLQBClUKCXN0cmluZy5pcBIgdmFsdWUgbXVzdCBiZSBhIHZhbGlkIElQIGFkZHJlc3MaJiFydWxlcy5pcCB8fCB0aGlzID09ICcnIHx8IHRoaXMuaXNJcCgpClsKD3N0cmluZy5pcF9lbXB0eRIvdmFsdWUgaXMgZW1wdHksIHdoaWNoIGlzIG5vdCBhIHZhbGlkIElQIGFkZHJlc3MaFyFydWxlcy5pcCB8fCB0aGlzICE9ICcnSAAS1gEKBGlwdjQYDyABKAhCxQHCSMEBClwKC3N0cmluZy5pcHY0EiJ2YWx1ZSBtdXN0IGJlIGEgdmFsaWQgSVB2NCBhZGRyZXNzGikhcnVsZXMuaXB2NCB8fCB0aGlzID09ICcnIHx8IHRoaXMuaXNJcCg0KQphChFzdHJpbmcuaXB2NF9lbXB0eRIxdmFsdWUgaXMgZW1wdHksIHdoaWNoIGlzIG5vdCBhIHZhbGlkIElQdjQgYWRkcmVzcxoZIXJ1bGVzLmlwdjQgfHwgdGhpcyAhPSAnJ0gAEtYBCgRpcHY2GBAgASgIQsUBwkjBAQpcCgtzdHJpbmcuaXB2NhIidmFsdWUgbXVzdCBiZSBhIHZhbGlkIElQdjYgYWRkcmVzcxopIXJ1bGVzLmlwdjYgfHwgdGhpcyA9PSAnJyB8fCB0aGlzLmlzSXAoNikKYQoRc3RyaW5nLmlwdjZfZW1wdHkSMXZhbHVlIGlzIGVtcHR5LCB3aGljaCBpcyBub3QgYSB2YWxpZCBJUHY2IGFkZHJlc3MaGSFydWxlcy5pcHY2IHx8IHRoaXMgIT0gJydIABK/AQoDdXJpGBEgASgIQq8BwkirAQpRCgpzdHJpbmcudXJpEhl2YWx1ZSBtdXN0IGJlIGEgdmFsaWQgVVJJGighcnVsZXMudXJpIHx8IHRoaXMgPT0gJycgfHwgdGhpcy5pc1VyaSgpClYKEHN0cmluZy51cmlfZW1wdHkSKHZhbHVlIGlzIGVtcHR5LCB3aGljaCBpcyBub3QgYSB2YWxpZCBVUkkaGCFydWxlcy51cmkgfHwgdGhpcyAhPSAnJ0gAEnAKB3VyaV9yZWYYEiABKAhCXcJIWgpYCg5zdHJpbmcudXJpX3JlZhIjdmFsdWUgbXVzdCBiZSBhIHZhbGlkIFVSSSBSZWZlcmVuY2UaISFydWxlcy51cmlfcmVmIHx8IHRoaXMuaXNVcmlSZWYoKUgAEpACCgdhZGRyZXNzGBUgASgIQvwBwkj4AQqBAQoOc3RyaW5nLmFkZHJlc3MSLXZhbHVlIG11c3QgYmUgYSB2YWxpZCBob3N0bmFtZSwgb3IgaXAgYWRkcmVzcxpAIXJ1bGVzLmFkZHJlc3MgfHwgdGhpcyA9PSAnJyB8fCB0aGlzLmlzSG9zdG5hbWUoKSB8fCB0aGlzLmlzSXAoKQpyChRzdHJpbmcuYWRkcmVzc19lbXB0eRI8dmFsdWUgaXMgZW1wdHksIHdoaWNoIGlzIG5vdCBhIHZhbGlkIGhvc3RuYW1lLCBvciBpcCBhZGRyZXNzGhwhcnVsZXMuYWRkcmVzcyB8fCB0aGlzICE9ICcnSAASmAIKBHV1aWQYFiABKAhChwLCSIMCCqUBCgtzdHJpbmcudXVpZBIadmFsdWUgbXVzdCBiZSBhIHZhbGlkIFVVSUQaeiFydWxlcy51dWlkIHx8IHRoaXMgPT0gJycgfHwgdGhpcy5tYXRjaGVzKCdeWzAtOWEtZkEtRl17OH0tWzAtOWEtZkEtRl17NH0tWzAtOWEtZkEtRl17NH0tWzAtOWEtZkEtRl17NH0tWzAtOWEtZkEtRl17MTJ9JCcpClkKEXN0cmluZy51dWlkX2VtcHR5Eil2YWx1ZSBpcyBlbXB0eSwgd2hpY2ggaXMgbm90IGEgdmFsaWQgVVVJRBoZIXJ1bGVzLnV1aWQgfHwgdGhpcyAhPSAnJ0gAEvABCgV0dXVpZBghIAEoCELeAcJI2gEKcwoMc3RyaW5nLnR1dWlkEiJ2YWx1ZSBtdXN0IGJlIGEgdmFsaWQgdHJpbW1lZCBVVUlEGj8hcnVsZXMudHV1aWQgfHwgdGhpcyA9PSAnJyB8fCB0aGlzLm1hdGNoZXMoJ15bMC05YS1mQS1GXXszMn0kJykKYwoSc3RyaW5nLnR1dWlkX2VtcHR5EjF2YWx1ZSBpcyBlbXB0eSwgd2hpY2ggaXMgbm90IGEgdmFsaWQgdHJpbW1lZCBVVUlEGhohcnVsZXMudHV1aWQgfHwgdGhpcyAhPSAnJ0gAEpYCChFpcF93aXRoX3ByZWZpeGxlbhgaIAEoCEL4AcJI9AEKeAoYc3RyaW5nLmlwX3dpdGhfcHJlZml4bGVuEh92YWx1ZSBtdXN0IGJlIGEgdmFsaWQgSVAgcHJlZml4GjshcnVsZXMuaXBfd2l0aF9wcmVmaXhsZW4gfHwgdGhpcyA9PSAnJyB8fCB0aGlzLmlzSXBQcmVmaXgoKQp4Ch5zdHJpbmcuaXBfd2l0aF9wcmVmaXhsZW5fZW1wdHkSLnZhbHVlIGlzIGVtcHR5LCB3aGljaCBpcyBub3QgYSB2YWxpZCBJUCBwcmVmaXgaJiFydWxlcy5pcF93aXRoX3ByZWZpeGxlbiB8fCB0aGlzICE9ICcnSAASzwIKE2lwdjRfd2l0aF9wcmVmaXhsZW4YGyABKAhCrwLCSKsCCpMBChpzdHJpbmcuaXB2NF93aXRoX3ByZWZpeGxlbhI1dmFsdWUgbXVzdCBiZSBhIHZhbGlkIElQdjQgYWRkcmVzcyB3aXRoIHByZWZpeCBsZW5ndGgaPiFydWxlcy5pcHY0X3dpdGhfcHJlZml4bGVuIHx8IHRoaXMgPT0gJycgfHwgdGhpcy5pc0lwUHJlZml4KDQpCpIBCiBzdHJpbmcuaXB2NF93aXRoX3ByZWZpeGxlbl9lbXB0eRJEdmFsdWUgaXMgZW1wdHksIHdoaWNoIGlzIG5vdCBhIHZhbGlkIElQdjQgYWRkcmVzcyB3aXRoIHByZWZpeCBsZW5ndGgaKCFydWxlcy5pcHY0X3dpdGhfcHJlZml4bGVuIHx8IHRoaXMgIT0gJydIABLPAgoTaXB2Nl93aXRoX3ByZWZpeGxlbhgcIAEoCEKvAsJIqwIKkwEKGnN0cmluZy5pcHY2X3dpdGhfcHJlZml4bGVuEjV2YWx1ZSBtdXN0IGJlIGEgdmFsaWQgSVB2NiBhZGRyZXNzIHdpdGggcHJlZml4IGxlbmd0aBo+IXJ1bGVzLmlwdjZfd2l0aF9wcmVmaXhsZW4gfHwgdGhpcyA9PSAnJyB8fCB0aGlzLmlzSXBQcmVmaXgoNikKkgEKIHN0cmluZy5pcHY2X3dpdGhfcHJlZml4bGVuX2VtcHR5EkR2YWx1ZSBpcyBlbXB0eSwgd2hpY2ggaXMgbm90IGEgdmFsaWQgSVB2NiBhZGRyZXNzIHdpdGggcHJlZml4IGxlbmd0aBooIXJ1bGVzLmlwdjZfd2l0aF9wcmVmaXhsZW4gfHwgdGhpcyAhPSAnJ0gAEvIBCglpcF9wcmVmaXgYHSABKAhC3AHCSNgBCmwKEHN0cmluZy5pcF9wcmVmaXgSH3ZhbHVlIG11c3QgYmUgYSB2YWxpZCBJUCBwcmVmaXgaNyFydWxlcy5pcF9wcmVmaXggfHwgdGhpcyA9PSAnJyB8fCB0aGlzLmlzSXBQcmVmaXgodHJ1ZSkKaAoWc3RyaW5nLmlwX3ByZWZpeF9lbXB0eRIudmFsdWUgaXMgZW1wdHksIHdoaWNoIGlzIG5vdCBhIHZhbGlkIElQIHByZWZpeBoeIXJ1bGVzLmlwX3ByZWZpeCB8fCB0aGlzICE9ICcnSAASgwIKC2lwdjRfcHJlZml4GB4gASgIQusBwkjnAQp1ChJzdHJpbmcuaXB2NF9wcmVmaXgSIXZhbHVlIG11c3QgYmUgYSB2YWxpZCBJUHY0IHByZWZpeBo8IXJ1bGVzLmlwdjRfcHJlZml4IHx8IHRoaXMgPT0gJycgfHwgdGhpcy5pc0lwUHJlZml4KDQsIHRydWUpCm4KGHN0cmluZy5pcHY0X3ByZWZpeF9lbXB0eRIwdmFsdWUgaXMgZW1wdHksIHdoaWNoIGlzIG5vdCBhIHZhbGlkIElQdjQgcHJlZml4GiAhcnVsZXMuaXB2NF9wcmVmaXggfHwgdGhpcyAhPSAnJ0gAEoMCCgtpcHY2X3ByZWZpeBgfIAEoCELrAcJI5wEKdQoSc3RyaW5nLmlwdjZfcHJlZml4EiF2YWx1ZSBtdXN0IGJlIGEgdmFsaWQgSVB2NiBwcmVmaXgaPCFydWxlcy5pcHY2X3ByZWZpeCB8fCB0aGlzID09ICcnIHx8IHRoaXMuaXNJcFByZWZpeCg2LCB0cnVlKQpuChhzdHJpbmcuaXB2Nl9wcmVmaXhfZW1wdHkSMHZhbHVlIGlzIGVtcHR5LCB3aGljaCBpcyBub3QgYSB2YWxpZCBJUHY2IHByZWZpeBogIXJ1bGVzLmlwdjZfcHJlZml4IHx8IHRoaXMgIT0gJydIABK1AgoNaG9zdF9hbmRfcG9ydBggIAEoCEKbAsJIlwIKmQEKFHN0cmluZy5ob3N0X2FuZF9wb3J0EkF2YWx1ZSBtdXN0IGJlIGEgdmFsaWQgaG9zdCAoaG9zdG5hbWUgb3IgSVAgYWRkcmVzcykgYW5kIHBvcnQgcGFpcho+IXJ1bGVzLmhvc3RfYW5kX3BvcnQgfHwgdGhpcyA9PSAnJyB8fCB0aGlzLmlzSG9zdEFuZFBvcnQodHJ1ZSkKeQoac3RyaW5nLmhvc3RfYW5kX3BvcnRfZW1wdHkSN3ZhbHVlIGlzIGVtcHR5LCB3aGljaCBpcyBub3QgYSB2YWxpZCBob3N0IGFuZCBwb3J0IHBhaXIaIiFydWxlcy5ob3N0X2FuZF9wb3J0IHx8IHRoaXMgIT0gJydIABKoBQoQd2VsbF9rbm93bl9yZWdleBgYIAEoDjIYLmJ1Zi52YWxpZGF0ZS5Lbm93blJlZ2V4QvEEwkjtBArwAQojc3RyaW5nLndlbGxfa25vd25fcmVnZXguaGVhZGVyX25hbWUSJnZhbHVlIG11c3QgYmUgYSB2YWxpZCBIVFRQIGhlYWRlciBuYW1lGqABcnVsZXMud2VsbF9rbm93bl9yZWdleCAhPSAxIHx8IHRoaXMgPT0gJycgfHwgdGhpcy5tYXRjaGVzKCFoYXMocnVsZXMuc3RyaWN0KSB8fCBydWxlcy5zdHJpY3QgPydeOj9bMC05YS16QS1aISMkJSZcJyorLS5eX3x+XHg2MF0rJCcgOideW15cdTAwMDBcdTAwMEFcdTAwMERdKyQnKQqNAQopc3RyaW5nLndlbGxfa25vd25fcmVnZXguaGVhZGVyX25hbWVfZW1wdHkSNXZhbHVlIGlzIGVtcHR5LCB3aGljaCBpcyBub3QgYSB2YWxpZCBIVFRQIGhlYWRlciBuYW1lGilydWxlcy53ZWxsX2tub3duX3JlZ2V4ICE9IDEgfHwgdGhpcyAhPSAnJwrnAQokc3RyaW5nLndlbGxfa25vd25fcmVnZXguaGVhZGVyX3ZhbHVlEid2YWx1ZSBtdXN0IGJlIGEgdmFsaWQgSFRUUCBoZWFkZXIgdmFsdWUalQFydWxlcy53ZWxsX2tub3duX3JlZ2V4ICE9IDIgfHwgdGhpcy5tYXRjaGVzKCFoYXMocnVsZXMuc3RyaWN0KSB8fCBydWxlcy5zdHJpY3QgPydeW15cdTAwMDAtXHUwMDA4XHUwMDBBLVx1MDAxRlx1MDA3Rl0qJCcgOideW15cdTAwMDBcdTAwMEFcdTAwMERdKiQnKUgAEg4KBnN0cmljdBgZIAEoCBIsCgdleGFtcGxlGCIgAygJQhvCSBgKFgoOc3RyaW5nLmV4YW1wbGUaBHRydWUqCQjoBxCAgICAAkIMCgp3ZWxsX2tub3duIuoQCgpCeXRlc1J1bGVzEoABCgVjb25zdBgBIAEoDEJxwkhuCmwKC2J5dGVzLmNvbnN0Gl10aGlzICE9IGdldEZpZWxkKHJ1bGVzLCAnY29uc3QnKSA/ICd2YWx1ZSBtdXN0IGJlICV4Jy5mb3JtYXQoW2dldEZpZWxkKHJ1bGVzLCAnY29uc3QnKV0pIDogJycSeAoDbGVuGA0gASgEQmvCSGgKZgoJYnl0ZXMubGVuGll1aW50KHRoaXMuc2l6ZSgpKSAhPSBydWxlcy5sZW4gPyAndmFsdWUgbGVuZ3RoIG11c3QgYmUgJXMgYnl0ZXMnLmZvcm1hdChbcnVsZXMubGVuXSkgOiAnJxKQAQoHbWluX2xlbhgCIAEoBEJ/wkh8CnoKDWJ5dGVzLm1pbl9sZW4aaXVpbnQodGhpcy5zaXplKCkpIDwgcnVsZXMubWluX2xlbiA/ICd2YWx1ZSBsZW5ndGggbXVzdCBiZSBhdCBsZWFzdCAlcyBieXRlcycuZm9ybWF0KFtydWxlcy5taW5fbGVuXSkgOiAnJxKIAQoHbWF4X2xlbhgDIAEoBEJ3wkh0CnIKDWJ5dGVzLm1heF9sZW4aYXVpbnQodGhpcy5zaXplKCkpID4gcnVsZXMubWF4X2xlbiA/ICd2YWx1ZSBtdXN0IGJlIGF0IG1vc3QgJXMgYnl0ZXMnLmZvcm1hdChbcnVsZXMubWF4X2xlbl0pIDogJycSkAEKB3BhdHRlcm4YBCABKAlCf8JIfAp6Cg1ieXRlcy5wYXR0ZXJuGmkhc3RyaW5nKHRoaXMpLm1hdGNoZXMocnVsZXMucGF0dGVybikgPyAndmFsdWUgbXVzdCBtYXRjaCByZWdleCBwYXR0ZXJuIGAlc2AnLmZvcm1hdChbcnVsZXMucGF0dGVybl0pIDogJycSgQEKBnByZWZpeBgFIAEoDEJxwkhuCmwKDGJ5dGVzLnByZWZpeBpcIXRoaXMuc3RhcnRzV2l0aChydWxlcy5wcmVmaXgpID8gJ3ZhbHVlIGRvZXMgbm90IGhhdmUgcHJlZml4ICV4Jy5mb3JtYXQoW3J1bGVzLnByZWZpeF0pIDogJycSfwoGc3VmZml4GAYgASgMQm/CSGwKagoMYnl0ZXMuc3VmZml4GlohdGhpcy5lbmRzV2l0aChydWxlcy5zdWZmaXgpID8gJ3ZhbHVlIGRvZXMgbm90IGhhdmUgc3VmZml4ICV4Jy5mb3JtYXQoW3J1bGVzLnN1ZmZpeF0pIDogJycSgwEKCGNvbnRhaW5zGAcgASgMQnHCSG4KbAoOYnl0ZXMuY29udGFpbnMaWiF0aGlzLmNvbnRhaW5zKHJ1bGVzLmNvbnRhaW5zKSA/ICd2YWx1ZSBkb2VzIG5vdCBjb250YWluICV4Jy5mb3JtYXQoW3J1bGVzLmNvbnRhaW5zXSkgOiAnJxKnAQoCaW4YCCADKAxCmgHCSJYBCpMBCghieXRlcy5pbhqGAWdldEZpZWxkKHJ1bGVzLCAnaW4nKS5zaXplKCkgPiAwICYmICEodGhpcyBpbiBnZXRGaWVsZChydWxlcywgJ2luJykpID8gJ3ZhbHVlIG11c3QgYmUgaW4gbGlzdCAlcycuZm9ybWF0KFtnZXRGaWVsZChydWxlcywgJ2luJyldKSA6ICcnEnYKBm5vdF9pbhgJIAMoDEJmwkhjCmEKDGJ5dGVzLm5vdF9pbhpRdGhpcyBpbiBydWxlcy5ub3RfaW4gPyAndmFsdWUgbXVzdCBub3QgYmUgaW4gbGlzdCAlcycuZm9ybWF0KFtydWxlcy5ub3RfaW5dKSA6ICcnEusBCgJpcBgKIAEoCELcAcJI2AEKdAoIYnl0ZXMuaXASIHZhbHVlIG11c3QgYmUgYSB2YWxpZCBJUCBhZGRyZXNzGkYhcnVsZXMuaXAgfHwgdGhpcy5zaXplKCkgPT0gMCB8fCB0aGlzLnNpemUoKSA9PSA0IHx8IHRoaXMuc2l6ZSgpID09IDE2CmAKDmJ5dGVzLmlwX2VtcHR5Ei92YWx1ZSBpcyBlbXB0eSwgd2hpY2ggaXMgbm90IGEgdmFsaWQgSVAgYWRkcmVzcxodIXJ1bGVzLmlwIHx8IHRoaXMuc2l6ZSgpICE9IDBIABLkAQoEaXB2NBgLIAEoCELTAcJIzwEKZQoKYnl0ZXMuaXB2NBIidmFsdWUgbXVzdCBiZSBhIHZhbGlkIElQdjQgYWRkcmVzcxozIXJ1bGVzLmlwdjQgfHwgdGhpcy5zaXplKCkgPT0gMCB8fCB0aGlzLnNpemUoKSA9PSA0CmYKEGJ5dGVzLmlwdjRfZW1wdHkSMXZhbHVlIGlzIGVtcHR5LCB3aGljaCBpcyBub3QgYSB2YWxpZCBJUHY0IGFkZHJlc3MaHyFydWxlcy5pcHY0IHx8IHRoaXMuc2l6ZSgpICE9IDBIABLlAQoEaXB2NhgMIAEoCELUAcJI0AEKZgoKYnl0ZXMuaXB2NhIidmFsdWUgbXVzdCBiZSBhIHZhbGlkIElQdjYgYWRkcmVzcxo0IXJ1bGVzLmlwdjYgfHwgdGhpcy5zaXplKCkgPT0gMCB8fCB0aGlzLnNpemUoKSA9PSAxNgpmChBieXRlcy5pcHY2X2VtcHR5EjF2YWx1ZSBpcyBlbXB0eSwgd2hpY2ggaXMgbm90IGEgdmFsaWQgSVB2NiBhZGRyZXNzGh8hcnVsZXMuaXB2NiB8fCB0aGlzLnNpemUoKSAhPSAwSAASKwoHZXhhbXBsZRgOIAMoDEIawkgXChUKDWJ5dGVzLmV4YW1wbGUaBHRydWUqCQjoBxCAgICAAkIMCgp3ZWxsX2tub3duItQDCglFbnVtUnVsZXMSggEKBWNvbnN0GAEgASgFQnPCSHAKbgoKZW51bS5jb25zdBpgdGhpcyAhPSBnZXRGaWVsZChydWxlcywgJ2NvbnN0JykgPyAndmFsdWUgbXVzdCBlcXVhbCAlcycuZm9ybWF0KFtnZXRGaWVsZChydWxlcywgJ2NvbnN0JyldKSA6ICcnEhQKDGRlZmluZWRfb25seRgCIAEoCBJ+CgJpbhgDIAMoBUJywkhvCm0KB2VudW0uaW4aYiEodGhpcyBpbiBnZXRGaWVsZChydWxlcywgJ2luJykpID8gJ3ZhbHVlIG11c3QgYmUgaW4gbGlzdCAlcycuZm9ybWF0KFtnZXRGaWVsZChydWxlcywgJ2luJyldKSA6ICcnEnUKBm5vdF9pbhgEIAMoBUJlwkhiCmAKC2VudW0ubm90X2luGlF0aGlzIGluIHJ1bGVzLm5vdF9pbiA/ICd2YWx1ZSBtdXN0IG5vdCBiZSBpbiBsaXN0ICVzJy5mb3JtYXQoW3J1bGVzLm5vdF9pbl0pIDogJycSKgoHZXhhbXBsZRgFIAMoBUIZwkgWChQKDGVudW0uZXhhbXBsZRoEdHJ1ZSoJCOgHEICAgIACIvsDCg1SZXBlYXRlZFJ1bGVzEp4BCgltaW5faXRlbXMYASABKARCigHCSIYBCoMBChJyZXBlYXRlZC5taW5faXRlbXMabXVpbnQodGhpcy5zaXplKCkpIDwgcnVsZXMubWluX2l0ZW1zID8gJ3ZhbHVlIG11c3QgY29udGFpbiBhdCBsZWFzdCAlZCBpdGVtKHMpJy5mb3JtYXQoW3J1bGVzLm1pbl9pdGVtc10pIDogJycSogEKCW1heF9pdGVtcxgCIAEoBEKOAcJIigEKhwEKEnJlcGVhdGVkLm1heF9pdGVtcxpxdWludCh0aGlzLnNpemUoKSkgPiBydWxlcy5tYXhfaXRlbXMgPyAndmFsdWUgbXVzdCBjb250YWluIG5vIG1vcmUgdGhhbiAlcyBpdGVtKHMpJy5mb3JtYXQoW3J1bGVzLm1heF9pdGVtc10pIDogJycScAoGdW5pcXVlGAMgASgIQmDCSF0KWwoPcmVwZWF0ZWQudW5pcXVlEihyZXBlYXRlZCB2YWx1ZSBtdXN0IGNvbnRhaW4gdW5pcXVlIGl0ZW1zGh4hcnVsZXMudW5pcXVlIHx8IHRoaXMudW5pcXVlKCkSJwoFaXRlbXMYBCABKAsyGC5idWYudmFsaWRhdGUuRmllbGRSdWxlcyoJCOgHEICAgIACIooDCghNYXBSdWxlcxKPAQoJbWluX3BhaXJzGAEgASgEQnzCSHkKdwoNbWFwLm1pbl9wYWlycxpmdWludCh0aGlzLnNpemUoKSkgPCBydWxlcy5taW5fcGFpcnMgPyAnbWFwIG11c3QgYmUgYXQgbGVhc3QgJWQgZW50cmllcycuZm9ybWF0KFtydWxlcy5taW5fcGFpcnNdKSA6ICcnEo4BCgltYXhfcGFpcnMYAiABKARCe8JIeAp2Cg1tYXAubWF4X3BhaXJzGmV1aW50KHRoaXMuc2l6ZSgpKSA+IHJ1bGVzLm1heF9wYWlycyA/ICdtYXAgbXVzdCBiZSBhdCBtb3N0ICVkIGVudHJpZXMnLmZvcm1hdChbcnVsZXMubWF4X3BhaXJzXSkgOiAnJxImCgRrZXlzGAQgASgLMhguYnVmLnZhbGlkYXRlLkZpZWxkUnVsZXMSKAoGdmFsdWVzGAUgASgLMhguYnVmLnZhbGlkYXRlLkZpZWxkUnVsZXMqCQjoBxCAgICAAiImCghBbnlSdWxlcxIKCgJpbhgCIAMoCRIOCgZub3RfaW4YAyADKAkimRcKDUR1cmF0aW9uUnVsZXMSoQEKBWNvbnN0GAIgASgLMhkuZ29vZ2xlLnByb3RvYnVmLkR1cmF0aW9uQnfCSHQKcgoOZHVyYXRpb24uY29uc3QaYHRoaXMgIT0gZ2V0RmllbGQocnVsZXMsICdjb25zdCcpID8gJ3ZhbHVlIG11c3QgZXF1YWwgJXMnLmZvcm1hdChbZ2V0RmllbGQocnVsZXMsICdjb25zdCcpXSkgOiAnJxKoAQoCbHQYAyABKAsyGS5nb29nbGUucHJvdG9idWYuRHVyYXRpb25Cf8JIfAp6CgtkdXJhdGlvbi5sdBprIWhhcyhydWxlcy5ndGUpICYmICFoYXMocnVsZXMuZ3QpICYmIHRoaXMgPj0gcnVsZXMubHQ/ICd2YWx1ZSBtdXN0IGJlIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5sdF0pIDogJydIABK6AQoDbHRlGAQgASgLMhkuZ29vZ2xlLnByb3RvYnVmLkR1cmF0aW9uQo8BwkiLAQqIAQoMZHVyYXRpb24ubHRlGnghaGFzKHJ1bGVzLmd0ZSkgJiYgIWhhcyhydWxlcy5ndCkgJiYgdGhpcyA+IHJ1bGVzLmx0ZT8gJ3ZhbHVlIG11c3QgYmUgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmx0ZV0pIDogJydIABLBBwoCZ3QYBSABKAsyGS5nb29nbGUucHJvdG9idWYuRHVyYXRpb25ClwfCSJMHCn0KC2R1cmF0aW9uLmd0Gm4haGFzKHJ1bGVzLmx0KSAmJiAhaGFzKHJ1bGVzLmx0ZSkgJiYgdGhpcyA8PSBydWxlcy5ndD8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0XSkgOiAnJwq2AQoOZHVyYXRpb24uZ3RfbHQaowFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0ID49IHJ1bGVzLmd0ICYmICh0aGlzID49IHJ1bGVzLmx0IHx8IHRoaXMgPD0gcnVsZXMuZ3QpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgYW5kIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndCwgcnVsZXMubHRdKSA6ICcnCr4BChhkdXJhdGlvbi5ndF9sdF9leGNsdXNpdmUaoQFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0IDwgcnVsZXMuZ3QgJiYgKHJ1bGVzLmx0IDw9IHRoaXMgJiYgdGhpcyA8PSBydWxlcy5ndCk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcyBvciBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3QsIHJ1bGVzLmx0XSkgOiAnJwrGAQoPZHVyYXRpb24uZ3RfbHRlGrIBaGFzKHJ1bGVzLmx0ZSkgJiYgcnVsZXMubHRlID49IHJ1bGVzLmd0ICYmICh0aGlzID4gcnVsZXMubHRlIHx8IHRoaXMgPD0gcnVsZXMuZ3QpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgYW5kIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndCwgcnVsZXMubHRlXSkgOiAnJwrOAQoZZHVyYXRpb24uZ3RfbHRlX2V4Y2x1c2l2ZRqwAWhhcyhydWxlcy5sdGUpICYmIHJ1bGVzLmx0ZSA8IHJ1bGVzLmd0ICYmIChydWxlcy5sdGUgPCB0aGlzICYmIHRoaXMgPD0gcnVsZXMuZ3QpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgb3IgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdGVdKSA6ICcnSAESjQgKA2d0ZRgGIAEoCzIZLmdvb2dsZS5wcm90b2J1Zi5EdXJhdGlvbkLiB8JI3gcKiwEKDGR1cmF0aW9uLmd0ZRp7IWhhcyhydWxlcy5sdCkgJiYgIWhhcyhydWxlcy5sdGUpICYmIHRoaXMgPCBydWxlcy5ndGU/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndGVdKSA6ICcnCsUBCg9kdXJhdGlvbi5ndGVfbHQasQFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0ID49IHJ1bGVzLmd0ZSAmJiAodGhpcyA+PSBydWxlcy5sdCB8fCB0aGlzIDwgcnVsZXMuZ3RlKT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzIGFuZCBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3RlLCBydWxlcy5sdF0pIDogJycKzQEKGWR1cmF0aW9uLmd0ZV9sdF9leGNsdXNpdmUarwFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0IDwgcnVsZXMuZ3RlICYmIChydWxlcy5sdCA8PSB0aGlzICYmIHRoaXMgPCBydWxlcy5ndGUpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMgb3IgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0ZSwgcnVsZXMubHRdKSA6ICcnCtUBChBkdXJhdGlvbi5ndGVfbHRlGsABaGFzKHJ1bGVzLmx0ZSkgJiYgcnVsZXMubHRlID49IHJ1bGVzLmd0ZSAmJiAodGhpcyA+IHJ1bGVzLmx0ZSB8fCB0aGlzIDwgcnVsZXMuZ3RlKT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzIGFuZCBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3RlLCBydWxlcy5sdGVdKSA6ICcnCt0BChpkdXJhdGlvbi5ndGVfbHRlX2V4Y2x1c2l2ZRq+AWhhcyhydWxlcy5sdGUpICYmIHJ1bGVzLmx0ZSA8IHJ1bGVzLmd0ZSAmJiAocnVsZXMubHRlIDwgdGhpcyAmJiB0aGlzIDwgcnVsZXMuZ3RlKT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzIG9yIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndGUsIHJ1bGVzLmx0ZV0pIDogJydIARKdAQoCaW4YByADKAsyGS5nb29nbGUucHJvdG9idWYuRHVyYXRpb25CdsJIcwpxCgtkdXJhdGlvbi5pbhpiISh0aGlzIGluIGdldEZpZWxkKHJ1bGVzLCAnaW4nKSkgPyAndmFsdWUgbXVzdCBiZSBpbiBsaXN0ICVzJy5mb3JtYXQoW2dldEZpZWxkKHJ1bGVzLCAnaW4nKV0pIDogJycSlAEKBm5vdF9pbhgIIAMoCzIZLmdvb2dsZS5wcm90b2J1Zi5EdXJhdGlvbkJpwkhmCmQKD2R1cmF0aW9uLm5vdF9pbhpRdGhpcyBpbiBydWxlcy5ub3RfaW4gPyAndmFsdWUgbXVzdCBub3QgYmUgaW4gbGlzdCAlcycuZm9ybWF0KFtydWxlcy5ub3RfaW5dKSA6ICcnEkkKB2V4YW1wbGUYCSADKAsyGS5nb29nbGUucHJvdG9idWYuRHVyYXRpb25CHcJIGgoYChBkdXJhdGlvbi5leGFtcGxlGgR0cnVlKgkI6AcQgICAgAJCCwoJbGVzc190aGFuQg4KDGdyZWF0ZXJfdGhhbiKSGAoOVGltZXN0YW1wUnVsZXMSowEKBWNvbnN0GAIgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEJ4wkh1CnMKD3RpbWVzdGFtcC5jb25zdBpgdGhpcyAhPSBnZXRGaWVsZChydWxlcywgJ2NvbnN0JykgPyAndmFsdWUgbXVzdCBlcXVhbCAlcycuZm9ybWF0KFtnZXRGaWVsZChydWxlcywgJ2NvbnN0JyldKSA6ICcnEqsBCgJsdBgDIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBCgAHCSH0KewoMdGltZXN0YW1wLmx0GmshaGFzKHJ1bGVzLmd0ZSkgJiYgIWhhcyhydWxlcy5ndCkgJiYgdGhpcyA+PSBydWxlcy5sdD8gJ3ZhbHVlIG11c3QgYmUgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmx0XSkgOiAnJ0gAErwBCgNsdGUYBCABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wQpABwkiMAQqJAQoNdGltZXN0YW1wLmx0ZRp4IWhhcyhydWxlcy5ndGUpICYmICFoYXMocnVsZXMuZ3QpICYmIHRoaXMgPiBydWxlcy5sdGU/ICd2YWx1ZSBtdXN0IGJlIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5sdGVdKSA6ICcnSAASbAoGbHRfbm93GAcgASgIQlrCSFcKVQoQdGltZXN0YW1wLmx0X25vdxpBKHJ1bGVzLmx0X25vdyAmJiB0aGlzID4gbm93KSA/ICd2YWx1ZSBtdXN0IGJlIGxlc3MgdGhhbiBub3cnIDogJydIABLHBwoCZ3QYBSABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wQpwHwkiYBwp+Cgx0aW1lc3RhbXAuZ3QabiFoYXMocnVsZXMubHQpICYmICFoYXMocnVsZXMubHRlKSAmJiB0aGlzIDw9IHJ1bGVzLmd0PyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3RdKSA6ICcnCrcBCg90aW1lc3RhbXAuZ3RfbHQaowFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0ID49IHJ1bGVzLmd0ICYmICh0aGlzID49IHJ1bGVzLmx0IHx8IHRoaXMgPD0gcnVsZXMuZ3QpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgYW5kIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndCwgcnVsZXMubHRdKSA6ICcnCr8BChl0aW1lc3RhbXAuZ3RfbHRfZXhjbHVzaXZlGqEBaGFzKHJ1bGVzLmx0KSAmJiBydWxlcy5sdCA8IHJ1bGVzLmd0ICYmIChydWxlcy5sdCA8PSB0aGlzICYmIHRoaXMgPD0gcnVsZXMuZ3QpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgb3IgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdF0pIDogJycKxwEKEHRpbWVzdGFtcC5ndF9sdGUasgFoYXMocnVsZXMubHRlKSAmJiBydWxlcy5sdGUgPj0gcnVsZXMuZ3QgJiYgKHRoaXMgPiBydWxlcy5sdGUgfHwgdGhpcyA8PSBydWxlcy5ndCk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcyBhbmQgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdGVdKSA6ICcnCs8BChp0aW1lc3RhbXAuZ3RfbHRlX2V4Y2x1c2l2ZRqwAWhhcyhydWxlcy5sdGUpICYmIHJ1bGVzLmx0ZSA8IHJ1bGVzLmd0ICYmIChydWxlcy5sdGUgPCB0aGlzICYmIHRoaXMgPD0gcnVsZXMuZ3QpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgb3IgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdGVdKSA6ICcnSAESkwgKA2d0ZRgGIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBC5wfCSOMHCowBCg10aW1lc3RhbXAuZ3RlGnshaGFzKHJ1bGVzLmx0KSAmJiAhaGFzKHJ1bGVzLmx0ZSkgJiYgdGhpcyA8IHJ1bGVzLmd0ZT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0ZV0pIDogJycKxgEKEHRpbWVzdGFtcC5ndGVfbHQasQFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0ID49IHJ1bGVzLmd0ZSAmJiAodGhpcyA+PSBydWxlcy5sdCB8fCB0aGlzIDwgcnVsZXMuZ3RlKT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzIGFuZCBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3RlLCBydWxlcy5sdF0pIDogJycKzgEKGnRpbWVzdGFtcC5ndGVfbHRfZXhjbHVzaXZlGq8BaGFzKHJ1bGVzLmx0KSAmJiBydWxlcy5sdCA8IHJ1bGVzLmd0ZSAmJiAocnVsZXMubHQgPD0gdGhpcyAmJiB0aGlzIDwgcnVsZXMuZ3RlKT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzIG9yIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndGUsIHJ1bGVzLmx0XSkgOiAnJwrWAQoRdGltZXN0YW1wLmd0ZV9sdGUawAFoYXMocnVsZXMubHRlKSAmJiBydWxlcy5sdGUgPj0gcnVsZXMuZ3RlICYmICh0aGlzID4gcnVsZXMubHRlIHx8IHRoaXMgPCBydWxlcy5ndGUpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMgYW5kIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndGUsIHJ1bGVzLmx0ZV0pIDogJycK3gEKG3RpbWVzdGFtcC5ndGVfbHRlX2V4Y2x1c2l2ZRq+AWhhcyhydWxlcy5sdGUpICYmIHJ1bGVzLmx0ZSA8IHJ1bGVzLmd0ZSAmJiAocnVsZXMubHRlIDwgdGhpcyAmJiB0aGlzIDwgcnVsZXMuZ3RlKT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzIG9yIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndGUsIHJ1bGVzLmx0ZV0pIDogJydIARJvCgZndF9ub3cYCCABKAhCXcJIWgpYChB0aW1lc3RhbXAuZ3Rfbm93GkQocnVsZXMuZ3Rfbm93ICYmIHRoaXMgPCBub3cpID8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuIG5vdycgOiAnJ0gBErgBCgZ3aXRoaW4YCSABKAsyGS5nb29nbGUucHJvdG9idWYuRHVyYXRpb25CjAHCSIgBCoUBChB0aW1lc3RhbXAud2l0aGluGnF0aGlzIDwgbm93LXJ1bGVzLndpdGhpbiB8fCB0aGlzID4gbm93K3J1bGVzLndpdGhpbiA/ICd2YWx1ZSBtdXN0IGJlIHdpdGhpbiAlcyBvZiBub3cnLmZvcm1hdChbcnVsZXMud2l0aGluXSkgOiAnJxJLCgdleGFtcGxlGAogAygLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEIewkgbChkKEXRpbWVzdGFtcC5leGFtcGxlGgR0cnVlKgkI6AcQgICAgAJCCwoJbGVzc190aGFuQg4KDGdyZWF0ZXJfdGhhbiI5CgpWaW9sYXRpb25zEisKCnZpb2xhdGlvbnMYASADKAsyFy5idWYudmFsaWRhdGUuVmlvbGF0aW9uIp8BCglWaW9sYXRpb24SJgoFZmllbGQYBSABKAsyFy5idWYudmFsaWRhdGUuRmllbGRQYXRoEiUKBHJ1bGUYBiABKAsyFy5idWYudmFsaWRhdGUuRmllbGRQYXRoEg8KB3J1bGVfaWQYAiABKAkSDwoHbWVzc2FnZRgDIAEoCRIPCgdmb3Jfa2V5GAQgASgISgQIARACUgpmaWVsZF9wYXRoIj0KCUZpZWxkUGF0aBIwCghlbGVtZW50cxgBIAMoCzIeLmJ1Zi52YWxpZGF0ZS5GaWVsZFBhdGhFbGVtZW50IukCChBGaWVsZFBhdGhFbGVtZW50EhQKDGZpZWxkX251bWJlchgBIAEoBRISCgpmaWVsZF9uYW1lGAIgASgJEj4KCmZpZWxkX3R5cGUYAyABKA4yKi5nb29nbGUucHJvdG9idWYuRmllbGREZXNjcmlwdG9yUHJvdG8uVHlwZRI8CghrZXlfdHlwZRgEIAEoDjIqLmdvb2dsZS5wcm90b2J1Zi5GaWVsZERlc2NyaXB0b3JQcm90by5UeXBlEj4KCnZhbHVlX3R5cGUYBSABKA4yKi5nb29nbGUucHJvdG9idWYuRmllbGREZXNjcmlwdG9yUHJvdG8uVHlwZRIPCgVpbmRleBgGIAEoBEgAEhIKCGJvb2xfa2V5GAcgASgISAASEQoHaW50X2tleRgIIAEoA0gAEhIKCHVpbnRfa2V5GAkgASgESAASFAoKc3RyaW5nX2tleRgKIAEoCUgAQgsKCXN1YnNjcmlwdCqhAQoGSWdub3JlEhYKEklHTk9SRV9VTlNQRUNJRklFRBAAEhgKFElHTk9SRV9JRl9aRVJPX1ZBTFVFEAESEQoNSUdOT1JFX0FMV0FZUxADIgQIAhACKgxJR05PUkVfRU1QVFkqDklHTk9SRV9ERUZBVUxUKhdJR05PUkVfSUZfREVGQVVMVF9WQUxVRSoVSUdOT1JFX0lGX1VOUE9QVUxBVEVEKm4KCktub3duUmVnZXgSGwoXS05PV05fUkVHRVhfVU5TUEVDSUZJRUQQABIgChxLTk9XTl9SRUdFWF9IVFRQX0hFQURFUl9OQU1FEAESIQodS05PV05fUkVHRVhfSFRUUF9IRUFERVJfVkFMVUUQAjpWCgdtZXNzYWdlEh8uZ29vZ2xlLnByb3RvYnVmLk1lc3NhZ2VPcHRpb25zGIcJIAEoCzIaLmJ1Zi52YWxpZGF0ZS5NZXNzYWdlUnVsZXNSB21lc3NhZ2U6TgoFb25lb2YSHS5nb29nbGUucHJvdG9idWYuT25lb2ZPcHRpb25zGIcJIAEoCzIYLmJ1Zi52YWxpZGF0ZS5PbmVvZlJ1bGVzUgVvbmVvZjpOCgVmaWVsZBIdLmdvb2dsZS5wcm90b2J1Zi5GaWVsZE9wdGlvbnMYhwkgASgLMhguYnVmLnZhbGlkYXRlLkZpZWxkUnVsZXNSBWZpZWxkOl0KCnByZWRlZmluZWQSHS5nb29nbGUucHJvdG9idWYuRmllbGRPcHRpb25zGIgJIAEoCzIdLmJ1Zi52YWxpZGF0ZS5QcmVkZWZpbmVkUnVsZXNSCnByZWRlZmluZWRCbgoSYnVpbGQuYnVmLnZhbGlkYXRlQg1WYWxpZGF0ZVByb3RvUAFaR2J1Zi5idWlsZC9nZW4vZ28vYnVmYnVpbGQvcHJvdG92YWxpZGF0ZS9wcm90b2NvbGJ1ZmZlcnMvZ28vYnVmL3ZhbGlkYXRl",[H,pe,Ie]);var Lt;(function(e){e[e.UNSPECIFIED=0]="UNSPECIFIED",e[e.IF_ZERO_VALUE=1]="IF_ZERO_VALUE",e[e.ALWAYS=3]="ALWAYS"})(Lt||(Lt={}));var wt;(function(e){e[e.UNSPECIFIED=0]="UNSPECIFIED",e[e.HTTP_HEADER_NAME=1]="HTTP_HEADER_NAME",e[e.HTTP_HEADER_VALUE=2]="HTTP_HEADER_VALUE"})(wt||(wt={}));var kt=b("ChVnb29nbGUvYXBpL2h0dHAucHJvdG8SCmdvb2dsZS5hcGkiVAoESHR0cBIjCgVydWxlcxgBIAMoCzIULmdvb2dsZS5hcGkuSHR0cFJ1bGUSJwofZnVsbHlfZGVjb2RlX3Jlc2VydmVkX2V4cGFuc2lvbhgCIAEoCCKBAgoISHR0cFJ1bGUSEAoIc2VsZWN0b3IYASABKAkSDQoDZ2V0GAIgASgJSAASDQoDcHV0GAMgASgJSAASDgoEcG9zdBgEIAEoCUgAEhAKBmRlbGV0ZRgFIAEoCUgAEg8KBXBhdGNoGAYgASgJSAASLwoGY3VzdG9tGAggASgLMh0uZ29vZ2xlLmFwaS5DdXN0b21IdHRwUGF0dGVybkgAEgwKBGJvZHkYByABKAkSFQoNcmVzcG9uc2VfYm9keRgMIAEoCRIxChNhZGRpdGlvbmFsX2JpbmRpbmdzGAsgAygLMhQuZ29vZ2xlLmFwaS5IdHRwUnVsZUIJCgdwYXR0ZXJuIi8KEUN1c3RvbUh0dHBQYXR0ZXJuEgwKBGtpbmQYASABKAkSDAoEcGF0aBgCIAEoCUJnCg5jb20uZ29vZ2xlLmFwaUIJSHR0cFByb3RvUAFaQWdvb2dsZS5nb2xhbmcub3JnL2dlbnByb3RvL2dvb2dsZWFwaXMvYXBpL2Fubm90YXRpb25zO2Fubm90YXRpb25zogIER0FQSWIGcHJvdG8z");var Ut=b("Chxnb29nbGUvYXBpL2Fubm90YXRpb25zLnByb3RvEgpnb29nbGUuYXBpOksKBGh0dHASHi5nb29nbGUucHJvdG9idWYuTWV0aG9kT3B0aW9ucxiwyrwiIAEoCzIULmdvb2dsZS5hcGkuSHR0cFJ1bGVSBGh0dHBCbgoOY29tLmdvb2dsZS5hcGlCEEFubm90YXRpb25zUHJvdG9QAVpBZ29vZ2xlLmdvbGFuZy5vcmcvZ2VucHJvdG8vZ29vZ2xlYXBpcy9hcGkvYW5ub3RhdGlvbnM7YW5ub3RhdGlvbnOiAgRHQVBJYgZwcm90bzM",[kt,H]);var vt=b("Ch1nb29nbGUvYXBpL2xhdW5jaF9zdGFnZS5wcm90bxIKZ29vZ2xlLmFwaSqMAQoLTGF1bmNoU3RhZ2USHAoYTEFVTkNIX1NUQUdFX1VOU1BFQ0lGSUVEEAASEQoNVU5JTVBMRU1FTlRFRBAGEg0KCVBSRUxBVU5DSBAHEhAKDEVBUkxZX0FDQ0VTUxABEgkKBUFMUEhBEAISCAoEQkVUQRADEgYKAkdBEAQSDgoKREVQUkVDQVRFRBAFQloKDmNvbS5nb29nbGUuYXBpQhBMYXVuY2hTdGFnZVByb3RvUAFaLWdvb2dsZS5nb2xhbmcub3JnL2dlbnByb3RvL2dvb2dsZWFwaXMvYXBpO2FwaaICBEdBUEliBnByb3RvMw"),Qt;(function(e){e[e.LAUNCH_STAGE_UNSPECIFIED=0]="LAUNCH_STAGE_UNSPECIFIED",e[e.UNIMPLEMENTED=6]="UNIMPLEMENTED",e[e.PRELAUNCH=7]="PRELAUNCH",e[e.EARLY_ACCESS=1]="EARLY_ACCESS",e[e.ALPHA=2]="ALPHA",e[e.BETA=3]="BETA",e[e.GA=4]="GA",e[e.DEPRECATED=5]="DEPRECATED"})(Qt||(Qt={}));var _t=b("Chdnb29nbGUvYXBpL2NsaWVudC5wcm90bxIKZ29vZ2xlLmFwaSK+AQoWQ29tbW9uTGFuZ3VhZ2VTZXR0aW5ncxIeChJyZWZlcmVuY2VfZG9jc191cmkYASABKAlCAhgBEjoKDGRlc3RpbmF0aW9ucxgCIAMoDjIkLmdvb2dsZS5hcGkuQ2xpZW50TGlicmFyeURlc3RpbmF0aW9uEkgKGnNlbGVjdGl2ZV9nYXBpY19nZW5lcmF0aW9uGAMgASgLMiQuZ29vZ2xlLmFwaS5TZWxlY3RpdmVHYXBpY0dlbmVyYXRpb24i+wMKFUNsaWVudExpYnJhcnlTZXR0aW5ncxIPCgd2ZXJzaW9uGAEgASgJEi0KDGxhdW5jaF9zdGFnZRgCIAEoDjIXLmdvb2dsZS5hcGkuTGF1bmNoU3RhZ2USGgoScmVzdF9udW1lcmljX2VudW1zGAMgASgIEi8KDWphdmFfc2V0dGluZ3MYFSABKAsyGC5nb29nbGUuYXBpLkphdmFTZXR0aW5ncxItCgxjcHBfc2V0dGluZ3MYFiABKAsyFy5nb29nbGUuYXBpLkNwcFNldHRpbmdzEi0KDHBocF9zZXR0aW5ncxgXIAEoCzIXLmdvb2dsZS5hcGkuUGhwU2V0dGluZ3MSMwoPcHl0aG9uX3NldHRpbmdzGBggASgLMhouZ29vZ2xlLmFwaS5QeXRob25TZXR0aW5ncxIvCg1ub2RlX3NldHRpbmdzGBkgASgLMhguZ29vZ2xlLmFwaS5Ob2RlU2V0dGluZ3MSMwoPZG90bmV0X3NldHRpbmdzGBogASgLMhouZ29vZ2xlLmFwaS5Eb3RuZXRTZXR0aW5ncxIvCg1ydWJ5X3NldHRpbmdzGBsgASgLMhguZ29vZ2xlLmFwaS5SdWJ5U2V0dGluZ3MSKwoLZ29fc2V0dGluZ3MYHCABKAsyFi5nb29nbGUuYXBpLkdvU2V0dGluZ3MiqAMKClB1Ymxpc2hpbmcSMwoPbWV0aG9kX3NldHRpbmdzGAIgAygLMhouZ29vZ2xlLmFwaS5NZXRob2RTZXR0aW5ncxIVCg1uZXdfaXNzdWVfdXJpGGUgASgJEhkKEWRvY3VtZW50YXRpb25fdXJpGGYgASgJEhYKDmFwaV9zaG9ydF9uYW1lGGcgASgJEhQKDGdpdGh1Yl9sYWJlbBhoIAEoCRIeChZjb2Rlb3duZXJfZ2l0aHViX3RlYW1zGGkgAygJEhYKDmRvY190YWdfcHJlZml4GGogASgJEjsKDG9yZ2FuaXphdGlvbhhrIAEoDjIlLmdvb2dsZS5hcGkuQ2xpZW50TGlicmFyeU9yZ2FuaXphdGlvbhI7ChBsaWJyYXJ5X3NldHRpbmdzGG0gAygLMiEuZ29vZ2xlLmFwaS5DbGllbnRMaWJyYXJ5U2V0dGluZ3MSKQohcHJvdG9fcmVmZXJlbmNlX2RvY3VtZW50YXRpb25fdXJpGG4gASgJEigKIHJlc3RfcmVmZXJlbmNlX2RvY3VtZW50YXRpb25fdXJpGG8gASgJIuMBCgxKYXZhU2V0dGluZ3MSFwoPbGlicmFyeV9wYWNrYWdlGAEgASgJEkwKE3NlcnZpY2VfY2xhc3NfbmFtZXMYAiADKAsyLy5nb29nbGUuYXBpLkphdmFTZXR0aW5ncy5TZXJ2aWNlQ2xhc3NOYW1lc0VudHJ5EjIKBmNvbW1vbhgDIAEoCzIiLmdvb2dsZS5hcGkuQ29tbW9uTGFuZ3VhZ2VTZXR0aW5ncxo4ChZTZXJ2aWNlQ2xhc3NOYW1lc0VudHJ5EgsKA2tleRgBIAEoCRINCgV2YWx1ZRgCIAEoCToCOAEiQQoLQ3BwU2V0dGluZ3MSMgoGY29tbW9uGAEgASgLMiIuZ29vZ2xlLmFwaS5Db21tb25MYW5ndWFnZVNldHRpbmdzIkEKC1BocFNldHRpbmdzEjIKBmNvbW1vbhgBIAEoCzIiLmdvb2dsZS5hcGkuQ29tbW9uTGFuZ3VhZ2VTZXR0aW5ncyKbAgoOUHl0aG9uU2V0dGluZ3MSMgoGY29tbW9uGAEgASgLMiIuZ29vZ2xlLmFwaS5Db21tb25MYW5ndWFnZVNldHRpbmdzEk4KFWV4cGVyaW1lbnRhbF9mZWF0dXJlcxgCIAEoCzIvLmdvb2dsZS5hcGkuUHl0aG9uU2V0dGluZ3MuRXhwZXJpbWVudGFsRmVhdHVyZXMahAEKFEV4cGVyaW1lbnRhbEZlYXR1cmVzEh0KFXJlc3RfYXN5bmNfaW9fZW5hYmxlZBgBIAEoCBInCh9wcm90b2J1Zl9weXRob25pY190eXBlc19lbmFibGVkGAIgASgIEiQKHHVudmVyc2lvbmVkX3BhY2thZ2VfZGlzYWJsZWQYAyABKAgiQgoMTm9kZVNldHRpbmdzEjIKBmNvbW1vbhgBIAEoCzIiLmdvb2dsZS5hcGkuQ29tbW9uTGFuZ3VhZ2VTZXR0aW5ncyKqAwoORG90bmV0U2V0dGluZ3MSMgoGY29tbW9uGAEgASgLMiIuZ29vZ2xlLmFwaS5Db21tb25MYW5ndWFnZVNldHRpbmdzEkkKEHJlbmFtZWRfc2VydmljZXMYAiADKAsyLy5nb29nbGUuYXBpLkRvdG5ldFNldHRpbmdzLlJlbmFtZWRTZXJ2aWNlc0VudHJ5EksKEXJlbmFtZWRfcmVzb3VyY2VzGAMgAygLMjAuZ29vZ2xlLmFwaS5Eb3RuZXRTZXR0aW5ncy5SZW5hbWVkUmVzb3VyY2VzRW50cnkSGQoRaWdub3JlZF9yZXNvdXJjZXMYBCADKAkSIAoYZm9yY2VkX25hbWVzcGFjZV9hbGlhc2VzGAUgAygJEh4KFmhhbmR3cml0dGVuX3NpZ25hdHVyZXMYBiADKAkaNgoUUmVuYW1lZFNlcnZpY2VzRW50cnkSCwoDa2V5GAEgASgJEg0KBXZhbHVlGAIgASgJOgI4ARo3ChVSZW5hbWVkUmVzb3VyY2VzRW50cnkSCwoDa2V5GAEgASgJEg0KBXZhbHVlGAIgASgJOgI4ASJCCgxSdWJ5U2V0dGluZ3MSMgoGY29tbW9uGAEgASgLMiIuZ29vZ2xlLmFwaS5Db21tb25MYW5ndWFnZVNldHRpbmdzIr8BCgpHb1NldHRpbmdzEjIKBmNvbW1vbhgBIAEoCzIiLmdvb2dsZS5hcGkuQ29tbW9uTGFuZ3VhZ2VTZXR0aW5ncxJFChByZW5hbWVkX3NlcnZpY2VzGAIgAygLMisuZ29vZ2xlLmFwaS5Hb1NldHRpbmdzLlJlbmFtZWRTZXJ2aWNlc0VudHJ5GjYKFFJlbmFtZWRTZXJ2aWNlc0VudHJ5EgsKA2tleRgBIAEoCRINCgV2YWx1ZRgCIAEoCToCOAEizwIKDk1ldGhvZFNldHRpbmdzEhAKCHNlbGVjdG9yGAEgASgJEjwKDGxvbmdfcnVubmluZxgCIAEoCzImLmdvb2dsZS5hcGkuTWV0aG9kU2V0dGluZ3MuTG9uZ1J1bm5pbmcSHQoVYXV0b19wb3B1bGF0ZWRfZmllbGRzGAMgAygJGs0BCgtMb25nUnVubmluZxI1ChJpbml0aWFsX3BvbGxfZGVsYXkYASABKAsyGS5nb29nbGUucHJvdG9idWYuRHVyYXRpb24SHQoVcG9sbF9kZWxheV9tdWx0aXBsaWVyGAIgASgCEjEKDm1heF9wb2xsX2RlbGF5GAMgASgLMhkuZ29vZ2xlLnByb3RvYnVmLkR1cmF0aW9uEjUKEnRvdGFsX3BvbGxfdGltZW91dBgEIAEoCzIZLmdvb2dsZS5wcm90b2J1Zi5EdXJhdGlvbiJRChhTZWxlY3RpdmVHYXBpY0dlbmVyYXRpb24SDwoHbWV0aG9kcxgBIAMoCRIkChxnZW5lcmF0ZV9vbWl0dGVkX2FzX2ludGVybmFsGAIgASgIKqMBChlDbGllbnRMaWJyYXJ5T3JnYW5pemF0aW9uEisKJ0NMSUVOVF9MSUJSQVJZX09SR0FOSVpBVElPTl9VTlNQRUNJRklFRBAAEgkKBUNMT1VEEAESBwoDQURTEAISCgoGUEhPVE9TEAMSDwoLU1RSRUVUX1ZJRVcQBBIMCghTSE9QUElORxAFEgcKA0dFTxAGEhEKDUdFTkVSQVRJVkVfQUkQBypnChhDbGllbnRMaWJyYXJ5RGVzdGluYXRpb24SKgomQ0xJRU5UX0xJQlJBUllfREVTVElOQVRJT05fVU5TUEVDSUZJRUQQABIKCgZHSVRIVUIQChITCg9QQUNLQUdFX01BTkFHRVIQFDpKChBtZXRob2Rfc2lnbmF0dXJlEh4uZ29vZ2xlLnByb3RvYnVmLk1ldGhvZE9wdGlvbnMYmwggAygJUg9tZXRob2RTaWduYXR1cmU6QwoMZGVmYXVsdF9ob3N0Eh8uZ29vZ2xlLnByb3RvYnVmLlNlcnZpY2VPcHRpb25zGJkIIAEoCVILZGVmYXVsdEhvc3Q6QwoMb2F1dGhfc2NvcGVzEh8uZ29vZ2xlLnByb3RvYnVmLlNlcnZpY2VPcHRpb25zGJoIIAEoCVILb2F1dGhTY29wZXM6RAoLYXBpX3ZlcnNpb24SHy5nb29nbGUucHJvdG9idWYuU2VydmljZU9wdGlvbnMYwbqr+gEgASgJUgphcGlWZXJzaW9uQmkKDmNvbS5nb29nbGUuYXBpQgtDbGllbnRQcm90b1ABWkFnb29nbGUuZ29sYW5nLm9yZy9nZW5wcm90by9nb29nbGVhcGlzL2FwaS9hbm5vdGF0aW9uczthbm5vdGF0aW9uc6ICBEdBUEliBnByb3RvMw",[vt,H,pe]);var Dt;(function(e){e[e.CLIENT_LIBRARY_ORGANIZATION_UNSPECIFIED=0]="CLIENT_LIBRARY_ORGANIZATION_UNSPECIFIED",e[e.CLOUD=1]="CLOUD",e[e.ADS=2]="ADS",e[e.PHOTOS=3]="PHOTOS",e[e.STREET_VIEW=4]="STREET_VIEW",e[e.SHOPPING=5]="SHOPPING",e[e.GEO=6]="GEO",e[e.GENERATIVE_AI=7]="GENERATIVE_AI"})(Dt||(Dt={}));var Tt;(function(e){e[e.CLIENT_LIBRARY_DESTINATION_UNSPECIFIED=0]="CLIENT_LIBRARY_DESTINATION_UNSPECIFIED",e[e.GITHUB=10]="GITHUB",e[e.PACKAGE_MANAGER=20]="PACKAGE_MANAGER"})(Tt||(Tt={}));var Pt=b("Ciptb2NoYWJ1Z2FwaXMvYWRhcHQvZ3JhcGgvc2lnbmFsX2RhdGEucHJvdG8SGG1vY2hhYnVnYXBpcy5hZGFwdC5ncmFwaCKmCgoKU2lnbmFsRGF0YRL3BQoIZmlsZW5hbWUYASABKAlC3wW6SNsFugGvAQobZmlsZW5hbWUubm9fcGF0aF9zZXBhcmF0b3JzEmNGaWxlbmFtZSBjYW5ub3QgY29udGFpbiBwYXRoIHNlcGFyYXRvcnMgKCcvJyBvciAnXCcpLiBVc2Ugb25seSB0aGUgZmlsZW5hbWUgd2l0aG91dCBkaXJlY3RvcnkgcGF0aC4aKyF0aGlzLmNvbnRhaW5zKCcvJykgJiYgIXRoaXMuY29udGFpbnMoJ1xcJym6AbsBCh5maWxlbmFtZS5ub19jb250cm9sX2NoYXJhY3RlcnMSOUZpbGVuYW1lIGNhbm5vdCBjb250YWluIGNvbnRyb2wgY2hhcmFjdGVycyBvciBudWxsIGJ5dGVzLhpeIXRoaXMuY29udGFpbnMoJ1x4MDAnKSAmJiAhdGhpcy5jb250YWlucygnXG4nKSAmJiAhdGhpcy5jb250YWlucygnXHInKSAmJiAhdGhpcy5jb250YWlucygnXHQnKboBbQonZmlsZW5hbWUubm9fbGVhZGluZ190cmFpbGluZ193aGl0ZXNwYWNlEi1GaWxlbmFtZSBjYW5ub3Qgc3RhcnQgb3IgZW5kIHdpdGggd2hpdGVzcGFjZS4aE3RoaXMgPT0gdGhpcy50cmltKCm6AdMBChxmaWxlbmFtZS5ub193aW5kb3dzX3Jlc2VydmVkEmpGaWxlbmFtZSBjYW5ub3QgYmUgYSBXaW5kb3dzIHJlc2VydmVkIG5hbWUgKENPTiwgUFJOLCBBVVgsIE5VTCwgQ09NMS05LCBMUFQxLTkpIHdpdGggb3Igd2l0aG91dCBleHRlbnNpb24uGkchdGhpcy5tYXRjaGVzKCdeKD9pKShDT058UFJOfEFVWHxOVUx8Q09NWzEtOV18TFBUWzEtOV0pKD86XFwuW14uXSopPyQnKXIgEAEY/wEyGV5bXi88PjoifD8qXHgwMC1ceDFGXFxdKyRIAIgBARKCBAoJbWltZV90eXBlGAIgASgJQu4DukjqA7oByQEKFm1pbWVfdHlwZS5ub193aWxkY2FyZHMSmQFNSU1FIHR5cGUgd2lsZGNhcmRzIGFyZSBub3QgYWxsb3dlZCBpbiBTaWduYWxEYXRhLiBVc2UgYSBjb25jcmV0ZSBNSU1FIHR5cGUgbGlrZSAnaW1hZ2UvcG5nJyBvciAnYXBwbGljYXRpb24vcGRmJywgbm90IHdpbGRjYXJkcyBsaWtlICdpbWFnZS8qJyBvciAnKi8qJy4aEyF0aGlzLmNvbnRhaW5zKCcqJym6Ab8BChdtaW1lX3R5cGUubm9fcGFyYW1ldGVycxKOAU1JTUUgdHlwZSBwYXJhbWV0ZXJzIGFyZSBub3QgYWxsb3dlZC4gVXNlICd0ZXh0L3BsYWluJyBpbnN0ZWFkIG9mICd0ZXh0L3BsYWluOyBjaGFyc2V0PXV0Zi04Jy4gVVRGLTggZW5jb2RpbmcgaXMgYXNzdW1lZCBmb3IgYWxsIHRleHQgZm9ybWF0cy4aEyF0aGlzLmNvbnRhaW5zKCc7JylyWBADGP8BMlFeW2EtekEtWjAtOV1bYS16QS1aMC05ISMkJlwtXl8uK117MCwxMjZ9L1thLXpBLVowLTldW2EtekEtWjAtOSEjJCZcLV5fLitdezAsMTI2fSQSDAoEZGF0YRgDIAEoDEILCglfZmlsZW5hbWViBnByb3RvMw",[ye]);var nn=b("CjNtb2NoYWJ1Z2FwaXMvYWRhcHQvYXV0b21hdGlvbnMvdjEvYXV0b21hdGlvbnMucHJvdG8SIW1vY2hhYnVnYXBpcy5hZGFwdC5hdXRvbWF0aW9ucy52MSIvChVJbmhlcml0U2Vzc2lvblJlcXVlc3QSFgoCaWQYASABKAlCCrpIB3IFEAEY9AMiZQoWSW5oZXJpdFNlc3Npb25SZXNwb25zZRINCgV0b2tlbhgBIAEoCRIwCgdleHBpcmVzGAIgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEgAiAEBQgoKCF9leHBpcmVzIq8BChFSZWFkT3V0cHV0UmVxdWVzdBIWCgJpZBgBIAEoCUIKukgHcgUQARj0AxIaCglwYWdlX3NpemUYAiABKA1CB7pIBCoCGGQSKQoGdmVydGV4GAMgASgJQhS6SBFyDzINXlswLTlhLXpdezR9JEgAiAEBEiEKCm5ld2VyX3RoYW4YBCABKAlCCLpIBXIDsAEBSAGIAQFCCQoHX3ZlcnRleEINCgtfbmV3ZXJfdGhhbiLLAQoSUmVhZE91dHB1dFJlc3BvbnNlEjsKB3Nlc3Npb24YASABKAsyKi5tb2NoYWJ1Z2FwaXMuYWRhcHQuYXV0b21hdGlvbnMudjEuU2Vzc2lvbhI6CgdvdXRwdXRzGAIgAygLMikubW9jaGFidWdhcGlzLmFkYXB0LmF1dG9tYXRpb25zLnYxLk91dHB1dBInChBuZXh0X3BhZ2VfY3Vyc29yGAMgASgJQgi6SAVyA7ABAUgAiAEBQhMKEV9uZXh0X3BhZ2VfY3Vyc29yIncKD1JlYWRVcmxzUmVxdWVzdBIWCgJpZBgBIAEoCUIKukgHcgUQARj0AxIaCglwYWdlX3NpemUYAiABKA1CB7pIBCoCGGQSIQoKbmV3ZXJfdGhhbhgDIAEoCUIIukgFcgOwAQFIAIgBAUINCgtfbmV3ZXJfdGhhbiLDAQoQUmVhZFVybHNSZXNwb25zZRI7CgdzZXNzaW9uGAEgASgLMioubW9jaGFidWdhcGlzLmFkYXB0LmF1dG9tYXRpb25zLnYxLlNlc3Npb24SNAoEdXJscxgCIAMoCzImLm1vY2hhYnVnYXBpcy5hZGFwdC5hdXRvbWF0aW9ucy52MS5VcmwSJwoQbmV4dF9wYWdlX2N1cnNvchgDIAEoCUIIukgFcgOwAQFIAIgBAUITChFfbmV4dF9wYWdlX2N1cnNvciLYAgoTU3RhcnRTZXNzaW9uUmVxdWVzdBIWCgJpZBgBIAEoCUIKukgHcgUQARj0AxI7Cgt0cmFuc21pdHRlchgCIAEoCUIhukgechwQARhkMhZeW2EtekEtWjAtOV8tXXsxLDEwMH0kSACIAQEShQEKB3NpZ25hbHMYAyADKAsyQy5tb2NoYWJ1Z2FwaXMuYWRhcHQuYXV0b21hdGlvbnMudjEuU3RhcnRTZXNzaW9uUmVxdWVzdC5TaWduYWxzRW50cnlCL7pILJoBKSIiciAQARhkMhpeW18kYS16QS1aXVtfJGEtekEtWjAtOV0qJCoDyAEBGlQKDFNpZ25hbHNFbnRyeRILCgNrZXkYASABKAkSMwoFdmFsdWUYAiABKAsyJC5tb2NoYWJ1Z2FwaXMuYWRhcHQuZ3JhcGguU2lnbmFsRGF0YToCOAFCDgoMX3RyYW5zbWl0dGVyImMKFFN0YXJ0U2Vzc2lvblJlc3BvbnNlEg0KBXRva2VuGAEgASgJEjAKB2V4cGlyZXMYAiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wSACIAQFCCgoIX2V4cGlyZXMiLAoSU3RvcFNlc3Npb25SZXF1ZXN0EhYKAmlkGAEgASgJQgq6SAdyBRABGPQDIhUKE1N0b3BTZXNzaW9uUmVzcG9uc2UiKwoRR2V0U2Vzc2lvblJlcXVlc3QSFgoCaWQYASABKAlCCrpIB3IFEAEY9AMiWQoSR2V0U2Vzc2lvblJlc3BvbnNlEkMKB3Nlc3Npb24YASABKAsyKi5tb2NoYWJ1Z2FwaXMuYWRhcHQuYXV0b21hdGlvbnMudjEuU2Vzc2lvbkIGukgDyAEBIukBCgZPdXRwdXQSDgoGdmVydGV4GAEgASgJEgwKBGZvcmsYAiABKAkSQQoEZGF0YRgDIAMoCzIzLm1vY2hhYnVnYXBpcy5hZGFwdC5hdXRvbWF0aW9ucy52MS5PdXRwdXQuRGF0YUVudHJ5EisKB2NyZWF0ZWQYBCABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wGlEKCURhdGFFbnRyeRILCgNrZXkYASABKAkSMwoFdmFsdWUYAiABKAsyJC5tb2NoYWJ1Z2FwaXMuYWRhcHQuZ3JhcGguU2lnbmFsRGF0YToCOAEiegoDVXJsEgsKA3VybBgBIAEoCRIMCgRmb3JrGAIgASgJEg4KBnZlcnRleBgDIAEoCRIMCgRkb25lGAQgASgIEisKB2NyZWF0ZWQYBSABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEg0KBXRva2VuGAYgASgJIlIKB1Nlc3Npb24SDAoEZm9yaxgBIAEoCRI5CgZzdGF0dXMYAiABKA4yKS5tb2NoYWJ1Z2FwaXMuYWRhcHQuYXV0b21hdGlvbnMudjEuU3RhdHVzIuYBChBXZWJzb2NrZXRNZXNzYWdlEhQKAmlkGAEgASgJQgi6SAVyA7ABARI7CgZvdXRwdXQYAiABKAsyKS5tb2NoYWJ1Z2FwaXMuYWRhcHQuYXV0b21hdGlvbnMudjEuT3V0cHV0SAASNQoDdXJsGAMgASgLMiYubW9jaGFidWdhcGlzLmFkYXB0LmF1dG9tYXRpb25zLnYxLlVybEgAEj0KB3Nlc3Npb24YBCABKAsyKi5tb2NoYWJ1Z2FwaXMuYWRhcHQuYXV0b21hdGlvbnMudjEuU2Vzc2lvbkgAQgkKB21lc3NhZ2UqyAEKBlN0YXR1cxIWChJTVEFUVVNfVU5TUEVDSUZJRUQQABISCg5TVEFUVVNfUlVOTklORxABEhIKDlNUQVRVU19TVE9QUEVEEAISEwoPU1RBVFVTX1NUT1BQSU5HEAMSFAoQU1RBVFVTX0NPTVBMRVRFRBAEEhIKDlNUQVRVU19FWFBJUkVEEAUSEgoOU1RBVFVTX0VSUk9SRUQQBhIVChFTVEFUVVNfREVMRUdBVElORxAHEhQKEFNUQVRVU19ERUxFR0FURUQQCDKaCQoRQXV0b21hdGlvblNlcnZpY2USrgEKDFN0YXJ0U2Vzc2lvbhI2Lm1vY2hhYnVnYXBpcy5hZGFwdC5hdXRvbWF0aW9ucy52MS5TdGFydFNlc3Npb25SZXF1ZXN0GjcubW9jaGFidWdhcGlzLmFkYXB0LmF1dG9tYXRpb25zLnYxLlN0YXJ0U2Vzc2lvblJlc3BvbnNlIi2C0+STAic6ASoiIi92MS9hdXRvbWF0aW9ucy97aWR9L3Nlc3Npb24vc3RhcnQSogEKC1N0b3BTZXNzaW9uEjUubW9jaGFidWdhcGlzLmFkYXB0LmF1dG9tYXRpb25zLnYxLlN0b3BTZXNzaW9uUmVxdWVzdBo2Lm1vY2hhYnVnYXBpcy5hZGFwdC5hdXRvbWF0aW9ucy52MS5TdG9wU2Vzc2lvblJlc3BvbnNlIiSC0+STAh4qHC92MS9hdXRvbWF0aW9ucy97aWR9L3Nlc3Npb24StgEKDkluaGVyaXRTZXNzaW9uEjgubW9jaGFidWdhcGlzLmFkYXB0LmF1dG9tYXRpb25zLnYxLkluaGVyaXRTZXNzaW9uUmVxdWVzdBo5Lm1vY2hhYnVnYXBpcy5hZGFwdC5hdXRvbWF0aW9ucy52MS5Jbmhlcml0U2Vzc2lvblJlc3BvbnNlIi+C0+STAik6ASoiJC92MS9hdXRvbWF0aW9ucy97aWR9L3Nlc3Npb24vaW5oZXJpdBKfAQoKR2V0U2Vzc2lvbhI0Lm1vY2hhYnVnYXBpcy5hZGFwdC5hdXRvbWF0aW9ucy52MS5HZXRTZXNzaW9uUmVxdWVzdBo1Lm1vY2hhYnVnYXBpcy5hZGFwdC5hdXRvbWF0aW9ucy52MS5HZXRTZXNzaW9uUmVzcG9uc2UiJILT5JMCHhIcL3YxL2F1dG9tYXRpb25zL3tpZH0vc2Vzc2lvbhKmAQoKUmVhZE91dHB1dBI0Lm1vY2hhYnVnYXBpcy5hZGFwdC5hdXRvbWF0aW9ucy52MS5SZWFkT3V0cHV0UmVxdWVzdBo1Lm1vY2hhYnVnYXBpcy5hZGFwdC5hdXRvbWF0aW9ucy52MS5SZWFkT3V0cHV0UmVzcG9uc2UiK4LT5JMCJRIjL3YxL2F1dG9tYXRpb25zL3tpZH0vc2Vzc2lvbi9vdXRwdXQSngEKCFJlYWRVcmxzEjIubW9jaGFidWdhcGlzLmFkYXB0LmF1dG9tYXRpb25zLnYxLlJlYWRVcmxzUmVxdWVzdBozLm1vY2hhYnVnYXBpcy5hZGFwdC5hdXRvbWF0aW9ucy52MS5SZWFkVXJsc1Jlc3BvbnNlIimC0+STAiMSIS92MS9hdXRvbWF0aW9ucy97aWR9L3Nlc3Npb24vdXJscxqJAcpBFmFkYXB0Lm1vY2hhYnVnYXBpcy5jb23SQW1odHRwczovL3d3dy5tb2NoYWJ1Z2FwaXMuY29tL2F1dGgvYWRhcHQuYXV0b21hdGlvbnMsaHR0cHM6Ly93d3cubW9jaGFidWdhcGlzLmNvbS9hdXRoL2FkYXB0LmF1dG9tYXRpb25zLnN0YXJ0YgZwcm90bzM",[ye,Ut,_t,Ie,Pt]);var Ot=C(nn,13),jt=C(nn,14),$t=C(nn,15),R;(function(e){e[e.UNSPECIFIED=0]="UNSPECIFIED",e[e.RUNNING=1]="RUNNING",e[e.STOPPED=2]="STOPPED",e[e.STOPPING=3]="STOPPING",e[e.COMPLETED=4]="COMPLETED",e[e.EXPIRED=5]="EXPIRED",e[e.ERRORED=6]="ERRORED",e[e.DELEGATING=7]="DELEGATING",e[e.DELEGATED=8]="DELEGATED"})(R||(R={}));var h;(function(e){e.DISCONNECTED="disconnected",e.CONNECTING="connecting",e.CONNECTED="connected",e.CLOSING="closing"})(h||(h={}));var V;(function(e){e[e.NORMAL=1e3]="NORMAL",e[e.GOING_AWAY=1001]="GOING_AWAY",e[e.PROTOCOL_ERROR=1002]="PROTOCOL_ERROR",e[e.UNSUPPORTED_DATA=1003]="UNSUPPORTED_DATA",e[e.ABNORMAL=1006]="ABNORMAL",e[e.POLICY_VIOLATION=1008]="POLICY_VIOLATION",e[e.SERVER_RESTART=1012]="SERVER_RESTART",e[e.TRY_AGAIN_LATER=1013]="TRY_AGAIN_LATER",e[e.BAD_GATEWAY=1014]="BAD_GATEWAY",e[e.TLS_HANDSHAKE=1015]="TLS_HANDSHAKE"})(V||(V={}));var tn=class{constructor(n){this.debug=n}log(n,t,o){if(!this.debug&&n==="debug")return;let i=`${`[PubSub ${new Date().toISOString()}]`} ${t}`;o!==void 0?console[n](i,o):console[n](i)}},on=class{constructor(n){this.logger=n,this.ackedMessages=new Map,this.MESSAGE_TTL=6e4,this.cleanupTimer=null}start(){this.cleanupTimer=setInterval(()=>this.cleanup(),3e4)}stop(){this.cleanupTimer&&(clearInterval(this.cleanupTimer),this.cleanupTimer=null),this.ackedMessages.clear()}isProcessed(n){return this.ackedMessages.has(n)}markProcessed(n){this.ackedMessages.set(n,Date.now())}cleanup(){let t=Date.now()-this.MESSAGE_TTL,o=0;for(let[s,a]of this.ackedMessages.entries())a<t&&(this.ackedMessages.delete(s),o++);o>0&&this.logger.log("debug",`Cleaned up ${o} old ACKed messages`)}},sn=class{constructor(n){this.logger=n,this.attempts=0,this.timer=null,this.FAST_INITIAL_DELAY=50,this.FAST_ATTEMPTS_THRESHOLD=10,this.SLOW_INITIAL_DELAY=1e3,this.MAX_DELAY=3e4,this.MAX_ATTEMPTS=-1}reset(){this.attempts=0,this.cancel()}cancel(){this.timer&&(clearTimeout(this.timer),this.timer=null)}scheduleReconnect(n,t=!1){if(this.MAX_ATTEMPTS!==-1&&this.attempts>=this.MAX_ATTEMPTS)return this.logger.log("error","Max reconnection attempts reached"),!1;this.attempts++;let o;if(t)o=0,this.logger.log("info","Scheduling immediate reconnect (server restart)");else if(this.attempts<=this.FAST_ATTEMPTS_THRESHOLD)o=this.FAST_INITIAL_DELAY*Math.pow(2,this.attempts-1);else{let s=this.attempts-this.FAST_ATTEMPTS_THRESHOLD;o=this.SLOW_INITIAL_DELAY*Math.pow(2,s-1)}return t||(o=Math.min(o,this.MAX_DELAY)),t||this.logger.log("info",`Scheduling reconnect attempt ${this.attempts} in ${o}ms`),this.timer=setTimeout(()=>{this.timer=null,n()},o),!0}},an=class{constructor(n){this.logger=n,this.ws=null,this.closePromise=null,this.closeResolve=null}connect(n,t,o,s,a){if(this.ws)throw new Error("WebSocket already exists");this.logger.log("info",`Connecting to: ${n}`),this.closePromise=new Promise(i=>{this.closeResolve=i}),this.ws=new ee(n),this.ws.binaryType="arraybuffer",this.ws.onopen=()=>{this.logger.log("info","\u2713 WebSocket connected"),t()},this.ws.onmessage=i=>{i.data instanceof ArrayBuffer?o(i.data):i.data instanceof Blob?i.data.arrayBuffer().then(o).catch(c=>{this.logger.log("error","Failed to convert Blob to ArrayBuffer:",c)}):this.logger.log("warn","Received non-binary message, ignoring")},this.ws.onerror=i=>{this.logger.log("error","WebSocket error:",i),a(i)},this.ws.onclose=i=>{this.logger.log("info",`WebSocket closed: ${i.code} - ${i.reason}`),s(i.code,i.reason),this.ws=null,this.closeResolve(),this.closeResolve=null,this.closePromise=null}}sendAck(n){if(!this.isConnected())return this.logger.log("warn",`Cannot send ACK (not connected): ${n}`),!1;try{let t=new Uint8Array(qe(n));return this.ws.send(t),this.logger.log("debug",`Sent ACK: ${n}`),!0}catch(t){return this.logger.log("error",`Failed to send ACK for ${n}:`,t),!1}}async close(n=V.NORMAL,t="Client disconnecting"){this.ws&&((this.ws.readyState===ee.OPEN||this.ws.readyState===ee.CONNECTING)&&this.ws.close(n,t),await this.closePromise)}isConnected(){return this.ws!==null&&this.ws.readyState===ee.OPEN}},Ze=class{constructor(n,t){this.logger=n,this.handlers=t,this.sessionEnded=!1}process(n){try{let t=N($t,new Uint8Array(n));switch(this.logger.log("debug",`Processing message: ${t.id}`),t.message.case){case"output":this.processOutput(t.message.value);break;case"session":this.processSession(t.message.value);break;case"url":this.processUrl(t.message.value);break;default:this.logger.log("warn",`Unknown message type: ${t.message.case}`)}return{messageId:t.id,sessionEnded:this.sessionEnded}}catch(t){return this.logger.log("error","Failed to process message:",t),{messageId:null,sessionEnded:this.sessionEnded}}}hasSessionEnded(){return this.sessionEnded}processOutput(n){if(this.handlers.onOutput)try{let t={vertex:n.vertex,fork:n.fork,data:n.data};n.created&&(t.created=xt(n.created)),this.handlers.onOutput(t)}catch(t){this.logger.log("error","Error in output handler:",t)}}processSession(n){switch(n.status){case R.STOPPED:case R.COMPLETED:case R.ERRORED:case R.EXPIRED:this.sessionEnded=!0,this.logger.log("info",`Session ended with status: ${R[n.status]}`);break}if(this.handlers.onSession)try{this.handlers.onSession(Oe(jt,n))}catch(t){this.logger.log("error","Error in session handler:",t)}}processUrl(n){if(this.handlers.onUrl)try{this.handlers.onUrl(Oe(Ot,n))}catch(t){this.logger.log("error","Error in URL handler:",t)}}},Ve=class{constructor(n=!1){this.state=h.DISCONNECTED,this.sessionInfo=null,this.messageProcessor=null,this.shouldReconnect=!0,this.sessionComplete=!1,this.logger=new tn(n),this.ackTracker=new on(this.logger),this.reconnectManager=new sn(this.logger),this.wsManager=new an(this.logger)}async subscribe(n){if(this.logger.log("debug","Subscribe called",{automation:n.id,hasToken:!!n.sessionToken}),!n.sessionToken||!n.id)throw new Error("Session token and automation are required");if(this.isSameSession(n)){this.logger.log("debug","Already connected to same session, updating handlers"),this.updateHandlers(n);return}if(this.state===h.CONNECTING)throw new Error("Already connecting, please wait");this.state===h.CONNECTED&&await this.unsubscribe(),this.sessionInfo={token:n.sessionToken,id:n.id};let t={};n.onOutput&&(t.onOutput=n.onOutput),n.onSession&&(t.onSession=n.onSession),n.onUrl&&(t.onUrl=n.onUrl),this.messageProcessor=new Ze(this.logger,t),this.shouldReconnect=!0,this.sessionComplete=!1,this.reconnectManager.reset(),this.ackTracker.start(),await this.connect()}async unsubscribe(){this.state===h.DISCONNECTED||this.state===h.CLOSING||(this.logger.log("info","Unsubscribing..."),this.state=h.CLOSING,this.shouldReconnect=!1,this.reconnectManager.cancel(),await this.wsManager.close(),this.ackTracker.stop(),this.sessionInfo=null,this.messageProcessor=null,this.state=h.DISCONNECTED,this.logger.log("info","Unsubscribed successfully"))}isConnected(){return this.state===h.CONNECTED}getConnectionState(){return this.state}getSessionInfo(){if(!this.sessionInfo)throw new Error("No active session");return this.sessionInfo}async connect(){if(!this.sessionInfo)throw new Error("No session configuration");this.state=h.CONNECTING;let t=`${qt().wsBaseUrl}/${this.sessionInfo.id}/ws?token=${encodeURIComponent(this.sessionInfo.token)}`;try{this.wsManager.connect(t,()=>this.handleOpen(),o=>this.handleMessage(o),(o,s)=>this.handleClose(o,s),o=>this.handleError(o))}catch(o){throw this.state=h.DISCONNECTED,o}}handleOpen(){this.state=h.CONNECTED,this.reconnectManager.reset()}handleMessage(n){if(!this.messageProcessor){this.logger.log("error","No message processor configured");return}let t=this.messageProcessor.process(n);t.messageId&&(t.sessionEnded&&!this.sessionComplete&&(this.logger.log("info","Session has ended (detected from message)"),this.sessionComplete=!0),this.ackTracker.isProcessed(t.messageId)?this.logger.log("debug",`Duplicate message: ${t.messageId}`):this.ackTracker.markProcessed(t.messageId),t.sessionEnded||this.wsManager.sendAck(t.messageId))}handleClose(n,t){this.state=h.DISCONNECTED;let o=this.analyzeCloseCode(n,t);o.shouldReconnect&&this.shouldReconnect&&!this.sessionComplete?this.scheduleReconnect(o.immediate):this.cleanup().catch(s=>{this.logger.log("error","Error during cleanup:",s)})}handleError(n){this.logger.log("error","WebSocket error:",n)}analyzeCloseCode(n,t){switch(n){case V.NORMAL:return this.logger.log("info","Normal closure"),this.sessionComplete=!0,{shouldReconnect:!1,immediate:!1};case V.GOING_AWAY:return this.logger.log("warn","Server going away"),{shouldReconnect:!0,immediate:!1};case V.SERVER_RESTART:return this.logger.log("warn","Server restarting - will reconnect immediately"),{shouldReconnect:!0,immediate:!0};case V.TRY_AGAIN_LATER:return this.logger.log("warn","Service temporarily unavailable, will retry"),{shouldReconnect:!0,immediate:!1};case V.PROTOCOL_ERROR:case V.UNSUPPORTED_DATA:case V.POLICY_VIOLATION:return this.logger.log("error",`Critical error (${n}): ${t}`),{shouldReconnect:!1,immediate:!1};case V.ABNORMAL:return this.logger.log("warn","Connection lost (abnormal closure)"),{shouldReconnect:!0,immediate:!1};default:return this.logger.log("warn",`Unknown close code ${n}: ${t}`),{shouldReconnect:!0,immediate:!1}}}scheduleReconnect(n=!1){this.reconnectManager.scheduleReconnect(()=>{this.shouldReconnect&&this.state===h.DISCONNECTED&&!this.sessionComplete&&this.connect().catch(o=>{this.logger.log("error","Reconnection failed:",o),this.scheduleReconnect(!1)})},n)||this.cleanup().catch(o=>{this.logger.log("error","Error during cleanup:",o)})}async cleanup(){this.shouldReconnect=!1,this.reconnectManager.cancel(),this.ackTracker.stop(),await this.wsManager.close(),this.sessionInfo=null,this.messageProcessor=null,this.state=h.DISCONNECTED}isSameSession(n){return!this.sessionInfo||this.state!==h.CONNECTED?!1:this.sessionInfo.token===n.sessionToken&&this.sessionInfo.id===n.id}updateHandlers(n){if(!this.messageProcessor)return;let t={};n.onOutput&&(t.onOutput=n.onOutput),n.onSession&&(t.onSession=n.onSession),n.onUrl&&(t.onUrl=n.onUrl),this.messageProcessor=new Ze(this.logger,t)}};var ys={baseUrl:"https://adapt-dev.mochabugapis.com/v1/automations",wsBaseUrl:"wss://adapt-dev.mochabugapis.com/v1/automations"},fe={...ys};function qt(){return{...fe}}var X={maxAttempts:5,initialDelay:50,maxDelay:5e3,retryableStatusCodes:[429,502,503,504]};function eo(e){return new Promise(n=>setTimeout(n,e))}async function dn(e,n){let t;for(let o=1;o<=X.maxAttempts;o++)try{let s=await fetch(e,n);if(s.ok)return s;if(X.retryableStatusCodes.includes(s.status)&&(t=new ne(s),o<X.maxAttempts)){let a=Math.min(X.initialDelay*Math.pow(2,o-1),X.maxDelay);console.warn(`Request failed with ${s.status}, retrying in ${a}ms (attempt ${o}/${X.maxAttempts})`),await eo(a);continue}throw new ne(s)}catch(s){if(s instanceof ne)throw s;if(o<X.maxAttempts){let a=Math.min(X.initialDelay*Math.pow(2,o-1),X.maxDelay);console.warn(`Network error, retrying in ${a}ms (attempt ${o}/${X.maxAttempts})`,s),await eo(a);continue}throw s}throw t||new Error("All retry attempts failed")}async function no(e,n){let t=new Headers({"Content-Type":"application/json","Response-Type":"application/json"});return n&&t.set("Authorization",`Bearer ${n}`),await(await dn(`${fe.baseUrl}/${e.id}/session/start`,{method:"POST",body:JSON.stringify(e),headers:t})).json()}async function to(e,n){return await(await dn(`${fe.baseUrl}/${e}/session/inherit`,{method:"POST",body:JSON.stringify({id:e}),headers:{"Content-Type":"application/json","Response-Type":"application/json",Authorization:`Bearer ${n}`}})).json()}async function oo(e,n){await dn(`${fe.baseUrl}/${e}/session`,{method:"DELETE",headers:{Authorization:`Bearer ${n}`}})}var ne=class extends Error{constructor(n){super(`HTTP Error: ${n.status} ${n.statusText}`),this.name="RestClientError",this.status=n.status,this.statusText=n.statusText,this.response=n}};var Zs=`
|
|
3
|
+
.mb-adapt {
|
|
4
|
+
width: 100%;
|
|
5
|
+
height: 100%;
|
|
6
|
+
--mb-adapt-border-radius: 8px;
|
|
7
|
+
--mb-adapt-backdrop-color: rgba(0, 0, 0, 0.5);
|
|
8
|
+
--mb-adapt-dialog-bg: transparent;
|
|
9
|
+
--mb-adapt-backdrop-z: 999;
|
|
10
|
+
--mb-adapt-dialog-z: 1000;
|
|
11
|
+
--mb-adapt-dialog-width: 80%;
|
|
12
|
+
--mb-adapt-dialog-height: 80%;
|
|
13
|
+
--mb-adapt-drag-handle-width: 6px;
|
|
14
|
+
--mb-adapt-drag-handle-color: #d1d5db;
|
|
15
|
+
--mb-adapt-drag-handle-hover: #6b7280;
|
|
16
|
+
--mb-adapt-banner-height: 40px;
|
|
17
|
+
--mb-adapt-banner-bg: #f9fafb;
|
|
18
|
+
--mb-adapt-banner-border: #e5e7eb;
|
|
19
|
+
--mb-adapt-button-color: #374151;
|
|
20
|
+
--mb-adapt-button-hover-bg: #e5e7eb;
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
.mb-adapt__wrapper {
|
|
24
|
+
position: relative;
|
|
25
|
+
display: flex;
|
|
26
|
+
width: 100%;
|
|
27
|
+
height: 100%;
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
.mb-adapt__frame {
|
|
31
|
+
position: relative;
|
|
32
|
+
min-width: 0;
|
|
33
|
+
overflow: hidden;
|
|
34
|
+
transition: width 0.15s ease-out;
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
.mb-adapt__iframe {
|
|
38
|
+
width: 100%;
|
|
39
|
+
height: 100%;
|
|
40
|
+
border: 0;
|
|
41
|
+
display: block;
|
|
42
|
+
border-radius: var(--mb-adapt-border-radius);
|
|
43
|
+
pointer-events: auto;
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
.mb-adapt__drag-handle {
|
|
47
|
+
position: absolute;
|
|
48
|
+
top: 0;
|
|
49
|
+
bottom: 0;
|
|
50
|
+
width: var(--mb-adapt-drag-handle-width);
|
|
51
|
+
background-color: var(--mb-adapt-drag-handle-color);
|
|
52
|
+
cursor: ew-resize;
|
|
53
|
+
z-index: 10;
|
|
54
|
+
transition: background-color 0.2s, left 0.15s ease-out;
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
.mb-adapt__drag-handle:hover {
|
|
58
|
+
background-color: var(--mb-adapt-drag-handle-hover);
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
.mb-adapt__drag-overlay {
|
|
62
|
+
position: absolute;
|
|
63
|
+
inset: 0;
|
|
64
|
+
z-index: 9999;
|
|
65
|
+
cursor: ew-resize;
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
.mb-adapt__iframe-overlay {
|
|
69
|
+
position: absolute;
|
|
70
|
+
inset: 0;
|
|
71
|
+
z-index: 5;
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
.mb-adapt__dialog-backdrop {
|
|
75
|
+
position: fixed;
|
|
76
|
+
inset: 0;
|
|
77
|
+
background-color: var(--mb-adapt-backdrop-color);
|
|
78
|
+
z-index: var(--mb-adapt-backdrop-z);
|
|
79
|
+
display: none;
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
.mb-adapt__dialog-backdrop--visible {
|
|
83
|
+
display: block;
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
.mb-adapt__dialog {
|
|
87
|
+
position: fixed;
|
|
88
|
+
top: 50%;
|
|
89
|
+
left: 50%;
|
|
90
|
+
transform: translate(-50%, -50%);
|
|
91
|
+
width: var(--mb-adapt-dialog-width);
|
|
92
|
+
height: var(--mb-adapt-dialog-height);
|
|
93
|
+
background-color: var(--mb-adapt-dialog-bg);
|
|
94
|
+
border-radius: var(--mb-adapt-border-radius);
|
|
95
|
+
z-index: var(--mb-adapt-dialog-z);
|
|
96
|
+
overflow: hidden;
|
|
97
|
+
flex-direction: column;
|
|
98
|
+
display: none;
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
.mb-adapt__dialog--visible {
|
|
102
|
+
display: flex;
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
.mb-adapt__dialog-banner {
|
|
106
|
+
height: var(--mb-adapt-banner-height);
|
|
107
|
+
background-color: var(--mb-adapt-banner-bg);
|
|
108
|
+
border-bottom: 1px solid var(--mb-adapt-banner-border);
|
|
109
|
+
display: flex;
|
|
110
|
+
align-items: center;
|
|
111
|
+
justify-content: flex-end;
|
|
112
|
+
padding: 0 8px;
|
|
113
|
+
flex-shrink: 0;
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
.mb-adapt__dialog-close {
|
|
117
|
+
background: none;
|
|
118
|
+
border: none;
|
|
119
|
+
color: var(--mb-adapt-button-color);
|
|
120
|
+
cursor: pointer;
|
|
121
|
+
font-size: 20px;
|
|
122
|
+
width: 32px;
|
|
123
|
+
height: 32px;
|
|
124
|
+
display: flex;
|
|
125
|
+
align-items: center;
|
|
126
|
+
justify-content: center;
|
|
127
|
+
border-radius: 4px;
|
|
128
|
+
transition: background-color 0.2s;
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
.mb-adapt__dialog-close:hover {
|
|
132
|
+
background-color: var(--mb-adapt-button-hover-bg);
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
.mb-adapt__expand-button {
|
|
136
|
+
position: absolute;
|
|
137
|
+
top: 50%;
|
|
138
|
+
transform: translateY(-50%);
|
|
139
|
+
background: linear-gradient(180deg, rgba(255,255,255,0.98) 0%, rgba(248,250,252,0.98) 100%);
|
|
140
|
+
border: none;
|
|
141
|
+
color: #64748b;
|
|
142
|
+
cursor: pointer;
|
|
143
|
+
width: 14px;
|
|
144
|
+
height: 48px;
|
|
145
|
+
display: none;
|
|
146
|
+
align-items: center;
|
|
147
|
+
justify-content: center;
|
|
148
|
+
z-index: 100;
|
|
149
|
+
transition: all 0.2s ease-out;
|
|
150
|
+
font-size: 14px;
|
|
151
|
+
line-height: 1;
|
|
152
|
+
padding: 0;
|
|
153
|
+
box-shadow:
|
|
154
|
+
0 2px 8px rgba(0, 0, 0, 0.12),
|
|
155
|
+
0 1px 3px rgba(0, 0, 0, 0.08),
|
|
156
|
+
inset 0 1px 0 rgba(255, 255, 255, 0.8);
|
|
157
|
+
border-radius: 4px;
|
|
158
|
+
backdrop-filter: blur(8px);
|
|
159
|
+
-webkit-backdrop-filter: blur(8px);
|
|
160
|
+
}
|
|
161
|
+
|
|
162
|
+
.mb-adapt__expand-button:hover {
|
|
163
|
+
background: linear-gradient(180deg, rgba(255,255,255,1) 0%, rgba(241,245,249,1) 100%);
|
|
164
|
+
color: #475569;
|
|
165
|
+
transform: translateY(-50%) scale(1.02);
|
|
166
|
+
box-shadow:
|
|
167
|
+
0 4px 12px rgba(0, 0, 0, 0.15),
|
|
168
|
+
0 2px 4px rgba(0, 0, 0, 0.1),
|
|
169
|
+
inset 0 1px 0 rgba(255, 255, 255, 1);
|
|
170
|
+
}
|
|
171
|
+
|
|
172
|
+
.mb-adapt__expand-button:active {
|
|
173
|
+
transform: translateY(-50%) scale(0.98);
|
|
174
|
+
box-shadow:
|
|
175
|
+
0 1px 4px rgba(0, 0, 0, 0.1),
|
|
176
|
+
0 1px 2px rgba(0, 0, 0, 0.06);
|
|
177
|
+
}
|
|
178
|
+
|
|
179
|
+
.mb-adapt__expand-button--visible {
|
|
180
|
+
display: flex !important;
|
|
181
|
+
}
|
|
182
|
+
|
|
183
|
+
.mb-adapt__expand-button--left {
|
|
184
|
+
left: 0;
|
|
185
|
+
border-top-left-radius: 0;
|
|
186
|
+
border-bottom-left-radius: 0;
|
|
187
|
+
box-shadow:
|
|
188
|
+
2px 2px 8px rgba(0, 0, 0, 0.12),
|
|
189
|
+
1px 1px 3px rgba(0, 0, 0, 0.08),
|
|
190
|
+
inset 0 1px 0 rgba(255, 255, 255, 0.8);
|
|
191
|
+
}
|
|
192
|
+
|
|
193
|
+
.mb-adapt__expand-button--left:hover {
|
|
194
|
+
box-shadow:
|
|
195
|
+
3px 4px 12px rgba(0, 0, 0, 0.15),
|
|
196
|
+
2px 2px 4px rgba(0, 0, 0, 0.1),
|
|
197
|
+
inset 0 1px 0 rgba(255, 255, 255, 1);
|
|
198
|
+
}
|
|
199
|
+
|
|
200
|
+
.mb-adapt__expand-button--right {
|
|
201
|
+
right: 0;
|
|
202
|
+
border-top-right-radius: 0;
|
|
203
|
+
border-bottom-right-radius: 0;
|
|
204
|
+
box-shadow:
|
|
205
|
+
-2px 2px 8px rgba(0, 0, 0, 0.12),
|
|
206
|
+
-1px 1px 3px rgba(0, 0, 0, 0.08),
|
|
207
|
+
inset 0 1px 0 rgba(255, 255, 255, 0.8);
|
|
208
|
+
}
|
|
209
|
+
|
|
210
|
+
.mb-adapt__expand-button--right:hover {
|
|
211
|
+
box-shadow:
|
|
212
|
+
-3px 4px 12px rgba(0, 0, 0, 0.15),
|
|
213
|
+
-2px 2px 4px rgba(0, 0, 0, 0.1),
|
|
214
|
+
inset 0 1px 0 rgba(255, 255, 255, 1);
|
|
215
|
+
}
|
|
216
|
+
|
|
217
|
+
.mb-adapt__expand-button--dialog {
|
|
218
|
+
left: 50%;
|
|
219
|
+
top: 0;
|
|
220
|
+
transform: translateX(-50%);
|
|
221
|
+
width: 56px;
|
|
222
|
+
height: 20px;
|
|
223
|
+
font-size: 16px;
|
|
224
|
+
line-height: 20px;
|
|
225
|
+
vertical-align: middle;
|
|
226
|
+
text-align: center;
|
|
227
|
+
border-radius: 6px;
|
|
228
|
+
border-top-left-radius: 0;
|
|
229
|
+
border-top-right-radius: 0;
|
|
230
|
+
box-shadow:
|
|
231
|
+
0 3px 8px rgba(0, 0, 0, 0.12),
|
|
232
|
+
0 1px 3px rgba(0, 0, 0, 0.08),
|
|
233
|
+
inset 0 1px 0 rgba(255, 255, 255, 0.8);
|
|
234
|
+
}
|
|
235
|
+
|
|
236
|
+
.mb-adapt__expand-button--dialog:hover {
|
|
237
|
+
transform: translateX(-50%) scale(1.02);
|
|
238
|
+
box-shadow:
|
|
239
|
+
0 5px 12px rgba(0, 0, 0, 0.15),
|
|
240
|
+
0 2px 4px rgba(0, 0, 0, 0.1),
|
|
241
|
+
inset 0 1px 0 rgba(255, 255, 255, 1);
|
|
242
|
+
}
|
|
243
|
+
|
|
244
|
+
.mb-adapt__expand-button--dialog:active {
|
|
245
|
+
transform: translateX(-50%) scale(0.98);
|
|
246
|
+
}
|
|
247
|
+
|
|
248
|
+
.mb-adapt__drag-handle--disabled {
|
|
249
|
+
pointer-events: none;
|
|
250
|
+
opacity: 0.3;
|
|
251
|
+
}
|
|
252
|
+
|
|
253
|
+
.mb-adapt__main-container {
|
|
254
|
+
position: relative;
|
|
255
|
+
width: 100%;
|
|
256
|
+
height: 100%;
|
|
257
|
+
overflow: visible;
|
|
258
|
+
}
|
|
259
|
+
|
|
260
|
+
/* Responsive dialog - full screen on small viewports */
|
|
261
|
+
@media (max-width: 600px) {
|
|
262
|
+
.mb-adapt__dialog {
|
|
263
|
+
width: 100%;
|
|
264
|
+
height: 100%;
|
|
265
|
+
border-radius: 0;
|
|
266
|
+
top: 0;
|
|
267
|
+
left: 0;
|
|
268
|
+
transform: none;
|
|
269
|
+
}
|
|
270
|
+
}
|
|
271
|
+
`,cn=class e{constructor(n){this.rootElement=null;this.mainUrl=null;this.forkQueue=[];this.currentFork=null;this.sessionToken=null;this.isDragging=!1;this.wrapperElement=null;this.mainFrameElement=null;this.forkFrameElement=null;this.mainIframe=null;this.forkIframe=null;this.dragHandleElement=null;this.mainExpandButton=null;this.forkExpandButton=null;this.mainContainer=null;this.dialogBackdrop=null;this.dialogElement=null;this.dialogExpandButton=null;this.mouseMoveHandler=null;this.mouseUpHandler=null;this.resizeObserver=null;this.destroyed=!1;this.options={...n,forkDisplayMode:n.forkDisplayMode??"side-by-side"},this.splitPercentage=n.sideBySideSplit??50;let t=document.getElementById(n.container);if(!t)throw new Error(`Container with id '${n.container}' not found`);this.container=t,this.pubsub=new Ve(!1),this.injectDefaultStyles(),this.createRootElement(),this.setupDragListeners(),this.setupResizeObserver(),this.init()}static{this.COLLAPSE_THRESHOLD=15}static{this.RESPONSIVE_BREAKPOINT=600}setupResizeObserver(){this.rootElement&&(this.resizeObserver=new ResizeObserver(()=>{this.options.forkDisplayMode==="side-by-side"&&this.currentFork&&this.updateSideBySideVisibility()}),this.resizeObserver.observe(this.rootElement))}setupDragListeners(){let n=this.splitPercentage,t=!1,o=a=>{if(!this.isDragging||!this.rootElement)return;let i=this.rootElement.getBoundingClientRect();if(i.width===0)return;n=(a.clientX-i.left)/i.width*100;let r=n,l=100-n;r<e.COLLAPSE_THRESHOLD?t||(t=!0,this.splitPercentage=0,this.updateSideBySideVisibility()):l<e.COLLAPSE_THRESHOLD?t||(t=!0,this.splitPercentage=100,this.updateSideBySideVisibility()):(t=!1,this.splitPercentage=Math.max(e.COLLAPSE_THRESHOLD,Math.min(100-e.COLLAPSE_THRESHOLD,n)),this.updateSideBySideWidths())},s=()=>{this.isDragging&&(this.isDragging=!1,t=!1,document.getElementById("mb-adapt-drag-overlay")?.remove(),this.rootElement?.querySelectorAll(".mb-adapt__iframe-overlay").forEach(a=>a.remove()),this.mainFrameElement&&(this.mainFrameElement.style.transition=""),this.forkFrameElement&&(this.forkFrameElement.style.transition=""),this.dragHandleElement&&(this.dragHandleElement.style.transition=""),this.splitPercentage!==0&&this.splitPercentage!==100&&n>=e.COLLAPSE_THRESHOLD&&100-n>=e.COLLAPSE_THRESHOLD&&(this.splitPercentage=n),n=this.splitPercentage)};this.mouseMoveHandler=o,this.mouseUpHandler=s,document.addEventListener("mousemove",this.mouseMoveHandler),document.addEventListener("mouseup",this.mouseUpHandler)}injectDefaultStyles(){if(document.getElementById("mb-adapt-styles"))return;let n=document.createElement("style");n.id="mb-adapt-styles",n.textContent=Zs,document.head.appendChild(n)}createRootElement(){this.rootElement=document.createElement("div"),this.rootElement.className=this.options.classNames?.root||"mb-adapt",this.options.styles&&Object.assign(this.rootElement.style,this.options.styles),this.container.appendChild(this.rootElement)}parseInheritToken(){let n=this.options.inheritFrom;return n?"hash"in n?this.parseFromHash(n.hash):this.parseFromParam(n.param):null}parseFromHash(n){let t=window.location.hash.slice(1);if(!t)return null;let o=new URLSearchParams(t),s=o.get(n);if(!s)return null;o.delete(n);let a=o.toString(),i=window.location.pathname+window.location.search+(a?"#"+a:"");return history.replaceState(null,"",i),decodeURIComponent(s)}parseFromParam(n){let t=new URLSearchParams(window.location.search),o=t.get(n);if(!o)return null;t.delete(n);let s=t.toString(),a=window.location.pathname+(s?"?"+s:"")+window.location.hash;return history.replaceState(null,"",a),decodeURIComponent(o)}async init(){if(this.options.sessionToken)this.sessionToken=this.options.sessionToken;else{let t=this.parseInheritToken(),o=t||this.options.inheritToken;if(this.options.inheritFrom&&!t){let a="hash"in this.options.inheritFrom?`hash key '${this.options.inheritFrom.hash}'`:`param '${this.options.inheritFrom.param}'`;console.error(`[AdaptWebClient] No inherit token found in URL ${a}`);return}let s;if(o)s=await to(this.options.id,o);else{let a={id:this.options.id};this.options.transmitter&&(a.transmitter=this.options.transmitter),this.options.signals&&(a.signals=this.options.signals),s=await no(a,this.options.authToken)}this.sessionToken=s.token}let n={id:this.options.id,sessionToken:this.sessionToken,onUrl:t=>this.onUrl(t),onSession:t=>{t.status==="STATUS_COMPLETED"&&!t.fork&&this.handleSessionComplete(),this.options.onSession&&this.options.onSession(t.status||"STATUS_UNSPECIFIED",t.fork)}};this.options.onOutput&&(n.onOutput=this.options.onOutput),await this.pubsub.subscribe(n)}async destroy(){this.destroyed=!0,this.sessionToken&&oo(this.options.id,this.sessionToken),await this.pubsub.unsubscribe(),this.mouseMoveHandler&&document.removeEventListener("mousemove",this.mouseMoveHandler),this.mouseUpHandler&&document.removeEventListener("mouseup",this.mouseUpHandler),this.resizeObserver&&this.resizeObserver.disconnect(),this.rootElement?.parentNode?.removeChild(this.rootElement),this.mainUrl=null,this.mainToken=void 0,this.forkQueue=[],this.currentFork=null,this.sessionToken=null,this.rootElement=null,this.wrapperElement=null,this.mainFrameElement=null,this.forkFrameElement=null,this.mainIframe=null,this.forkIframe=null,this.dragHandleElement=null,this.mainExpandButton=null,this.forkExpandButton=null,this.mainContainer=null,this.dialogBackdrop=null,this.dialogElement=null,this.dialogExpandButton=null,this.mouseMoveHandler=null,this.mouseUpHandler=null,this.resizeObserver=null}onUrl(n){if(this.destroyed)return;let t=n.fork||"";if(n.done){this.handleDoneMessage(t);return}n.url&&(t?this.handleForkUrl(n.url,n.token,t):this.handleMainUrl(n.url,n.token))}handleSessionComplete(){this.currentFork=null,this.forkQueue=[],this.options.forkDisplayMode==="side-by-side"?this.updateSideBySideVisibility():this.options.forkDisplayMode==="dialog"&&this.updateDialogVisibility()}handleDoneMessage(n){n&&(this.forkQueue=this.forkQueue.filter(t=>t.fork!==n),this.currentFork?.fork===n&&(this.currentFork=null,this.forkQueue.length>0&&this.activateNextFork()))}handleMainUrl(n,t){this.mainUrl=n,this.mainToken=t,this.updateMainIframe()}handleForkUrl(n,t,o){let s=(o.match(/\//g)||[]).length,a={url:n,token:t,fork:o,depth:s,time:Date.now()};this.mainUrl||(this.mainUrl=n,this.mainToken=t,this.updateMainIframe()),this.forkQueue.push(a),this.currentFork||this.activateNextFork()}activateNextFork(){this.forkQueue.length!==0&&(this.forkQueue.sort((n,t)=>n.depth!==t.depth?t.depth-n.depth:t.time-n.time),this.currentFork=this.forkQueue.shift(),this.updateForkIframe(),this.options.forkDisplayMode==="dialog"?this.updateDialogVisibility():this.updateSideBySideVisibility())}updateMainIframe(){if(!(!this.rootElement||!this.mainUrl))if(this.options.forkDisplayMode==="dialog"){this.mainContainer||this.createDialogStructure();let n=this.getIframeSrc(this.mainUrl,this.mainToken);if(!this.mainIframe||this.mainIframe.src!==n){this.mainIframe=this.createIframe(this.mainUrl,this.mainToken);let t=this.mainContainer.querySelector(".mb-adapt__iframe");t&&t.remove(),this.mainContainer.insertBefore(this.mainIframe,this.mainContainer.firstChild)}}else{this.wrapperElement||this.createSideBySideStructure();let n=this.getIframeSrc(this.mainUrl,this.mainToken);(!this.mainIframe||this.mainIframe.src!==n)&&(this.mainIframe=this.createIframe(this.mainUrl,this.mainToken),this.mainFrameElement.innerHTML="",this.mainFrameElement.appendChild(this.mainIframe)),this.updateSideBySideVisibility()}}updateForkIframe(){if(!this.currentFork)return;let n=this.getIframeSrc(this.currentFork.url,this.currentFork.token);if(this.options.forkDisplayMode==="dialog"){if(this.mainContainer||this.createDialogStructure(),!this.forkIframe||this.forkIframe.src!==n){this.forkIframe=this.createIframe(this.currentFork.url,this.currentFork.token),this.forkIframe.style.borderRadius="0";let t=this.dialogElement.children[1];t.innerHTML="",t.appendChild(this.forkIframe)}}else this.wrapperElement||this.createSideBySideStructure(),(!this.forkIframe||this.forkIframe.src!==n)&&(this.forkIframe=this.createIframe(this.currentFork.url,this.currentFork.token),this.forkFrameElement.innerHTML="",this.forkFrameElement.appendChild(this.forkIframe))}createSideBySideStructure(){this.wrapperElement||(this.rootElement.innerHTML="",this.wrapperElement=document.createElement("div"),this.wrapperElement.className=this.options.classNames?.wrapper||"mb-adapt__wrapper",this.mainFrameElement=document.createElement("div"),this.mainFrameElement.className=this.options.classNames?.frameMain||`${this.options.classNames?.frame||"mb-adapt__frame"} mb-adapt__frame--main`,this.forkFrameElement=document.createElement("div"),this.forkFrameElement.className=this.options.classNames?.frameFork||`${this.options.classNames?.frame||"mb-adapt__frame"} mb-adapt__frame--fork`,this.dragHandleElement=document.createElement("div"),this.dragHandleElement.className=this.options.classNames?.dragHandle||"mb-adapt__drag-handle",this.dragHandleElement.style.transform="translateX(-50%)",this.dragHandleElement.addEventListener("mousedown",n=>{n.preventDefault(),this.isDragging=!0,this.mainFrameElement&&(this.mainFrameElement.style.transition="none"),this.forkFrameElement&&(this.forkFrameElement.style.transition="none"),this.dragHandleElement&&(this.dragHandleElement.style.transition="none");let t=document.createElement("div");t.className="mb-adapt__drag-overlay",t.id="mb-adapt-drag-overlay",this.rootElement.appendChild(t),[this.mainFrameElement,this.forkFrameElement].forEach(o=>{if(o){let s=document.createElement("div");s.className="mb-adapt__iframe-overlay",o.appendChild(s)}})}),this.mainExpandButton=document.createElement("button"),this.mainExpandButton.className=this.options.classNames?.expandButton||"mb-adapt__expand-button",this.mainExpandButton.classList.add("mb-adapt__expand-button--left"),this.mainExpandButton.innerHTML="\u203A",this.mainExpandButton.setAttribute("aria-label","Expand main frame"),this.mainExpandButton.setAttribute("title","Expand main frame"),this.mainExpandButton.addEventListener("click",()=>{this.splitPercentage=50,this.updateSideBySideVisibility()}),this.forkExpandButton=document.createElement("button"),this.forkExpandButton.className=this.options.classNames?.expandButton||"mb-adapt__expand-button",this.forkExpandButton.classList.add("mb-adapt__expand-button--right"),this.forkExpandButton.innerHTML="\u2039",this.forkExpandButton.setAttribute("aria-label","Expand fork frame"),this.forkExpandButton.setAttribute("title","Expand fork frame"),this.forkExpandButton.addEventListener("click",()=>{this.splitPercentage=50,this.updateSideBySideVisibility()}),this.wrapperElement.appendChild(this.mainFrameElement),this.wrapperElement.appendChild(this.forkFrameElement),this.wrapperElement.appendChild(this.dragHandleElement),this.wrapperElement.appendChild(this.mainExpandButton),this.wrapperElement.appendChild(this.forkExpandButton),this.rootElement.appendChild(this.wrapperElement))}isResponsiveMode(){return this.rootElement?this.rootElement.offsetWidth<e.RESPONSIVE_BREAKPOINT:!1}updateSideBySideVisibility(){if(!this.mainFrameElement||!this.forkFrameElement||!this.dragHandleElement)return;if(!this.currentFork){this.mainFrameElement.style.width="100%",this.mainFrameElement.style.display="block",this.forkFrameElement.style.display="none",this.dragHandleElement.style.display="none",this.mainExpandButton.classList.remove("mb-adapt__expand-button--visible"),this.forkExpandButton.classList.remove("mb-adapt__expand-button--visible");return}if(this.isResponsiveMode()){this.mainFrameElement.style.width="0%",this.mainFrameElement.style.display="none",this.forkFrameElement.style.width="100%",this.forkFrameElement.style.display="block",this.dragHandleElement.style.display="none",this.mainExpandButton.classList.add("mb-adapt__expand-button--visible"),this.forkExpandButton.classList.remove("mb-adapt__expand-button--visible");return}let n=this.splitPercentage,t=100-this.splitPercentage,o=n<e.COLLAPSE_THRESHOLD,s=t<e.COLLAPSE_THRESHOLD;this.mainFrameElement.style.width=o?"0%":`${n}%`,this.mainFrameElement.style.display=o?"none":"block",this.forkFrameElement.style.width=s?"0%":`${t}%`,this.forkFrameElement.style.display=s?"none":"block",this.dragHandleElement.style.left=`${this.splitPercentage}%`,this.dragHandleElement.style.display="block",o||s?this.dragHandleElement.classList.add("mb-adapt__drag-handle--disabled"):this.dragHandleElement.classList.remove("mb-adapt__drag-handle--disabled"),o?this.mainExpandButton.classList.add("mb-adapt__expand-button--visible"):this.mainExpandButton.classList.remove("mb-adapt__expand-button--visible"),s?this.forkExpandButton.classList.add("mb-adapt__expand-button--visible"):this.forkExpandButton.classList.remove("mb-adapt__expand-button--visible")}updateSideBySideWidths(){if(!this.mainFrameElement||!this.forkFrameElement||!this.dragHandleElement)return;let n=this.splitPercentage,t=100-this.splitPercentage;this.mainFrameElement.style.width=`${n}%`,this.forkFrameElement.style.width=`${t}%`,this.dragHandleElement.style.left=`${this.splitPercentage}%`}createDialogStructure(){if(this.mainContainer)return;this.rootElement.innerHTML="",this.mainContainer=document.createElement("div"),this.mainContainer.className="mb-adapt__main-container",this.dialogExpandButton=document.createElement("button"),this.dialogExpandButton.className=this.options.classNames?.expandButton||"mb-adapt__expand-button",this.dialogExpandButton.classList.add("mb-adapt__expand-button--dialog"),this.dialogExpandButton.innerHTML="\u2304",this.dialogExpandButton.setAttribute("aria-label","Open fork dialog"),this.dialogExpandButton.setAttribute("title","Open fork dialog"),this.dialogExpandButton.addEventListener("click",()=>{this.activateNextFork()}),this.dialogBackdrop=document.createElement("div"),this.dialogBackdrop.className=this.options.classNames?.dialogBackdrop||"mb-adapt__dialog-backdrop",this.options.dialogBackdropClose&&this.dialogBackdrop.addEventListener("click",()=>{this.currentFork&&this.forkQueue.unshift(this.currentFork),this.currentFork=null,this.updateDialogVisibility()}),this.dialogElement=document.createElement("div"),this.dialogElement.className=this.options.classNames?.dialog||"mb-adapt__dialog";let n=document.createElement("div");n.className=this.options.classNames?.dialogBanner||"mb-adapt__dialog-banner";let t=document.createElement("button");t.className=this.options.classNames?.dialogClose||"mb-adapt__dialog-close",t.innerHTML="\xD7",t.setAttribute("aria-label","Close dialog"),t.setAttribute("title","Close dialog"),t.addEventListener("click",()=>{this.currentFork&&this.forkQueue.unshift(this.currentFork),this.currentFork=null,this.updateDialogVisibility()}),n.appendChild(t),this.dialogElement.appendChild(n);let o=document.createElement("div");o.style.flex="1",o.style.overflow="hidden",this.dialogElement.appendChild(o),this.mainContainer.appendChild(this.dialogExpandButton),this.rootElement.appendChild(this.mainContainer),this.rootElement.appendChild(this.dialogBackdrop),this.rootElement.appendChild(this.dialogElement)}updateDialogVisibility(){if(!this.dialogExpandButton||!this.dialogBackdrop||!this.dialogElement)return;let n=this.forkQueue.length>0,t=this.currentFork!==null;!t&&n?this.dialogExpandButton.classList.add("mb-adapt__expand-button--visible"):this.dialogExpandButton.classList.remove("mb-adapt__expand-button--visible"),t?(this.dialogBackdrop.classList.add("mb-adapt__dialog-backdrop--visible"),this.dialogElement.classList.add("mb-adapt__dialog--visible")):(this.dialogBackdrop.classList.remove("mb-adapt__dialog-backdrop--visible"),this.dialogElement.classList.remove("mb-adapt__dialog--visible"))}getIframeSrc(n,t){return`${n}${t?"#"+t:""}`}createIframe(n,t){let o=document.createElement("iframe");return o.className=this.options.classNames?.iframe||"mb-adapt__iframe",o.src=this.getIframeSrc(n,t),o.setAttribute("sandbox","allow-downloads allow-same-origin allow-scripts allow-popups allow-forms allow-modals"),o.setAttribute("allow","geolocation; accelerometer; midi; microphone; camera; magnetometer; gyroscope; fullscreen; payment;"),o}};return ro(Vs);})();
|