diff --git a/packages/schema/bind/src/bindings/python/plugin/index.ts b/packages/schema/bind/src/bindings/python/plugin/index.ts index 82326bb86d..e1b2b80465 100644 --- a/packages/schema/bind/src/bindings/python/plugin/index.ts +++ b/packages/schema/bind/src/bindings/python/plugin/index.ts @@ -40,6 +40,11 @@ const sort = (obj: Record) => export const generateBinding: GenerateBindingFn = ( options: BindOptions ): BindOutput => { + const escapedAbi = JSON.stringify( + sort((options.abi as unknown) as Record) + ).replace(/\n/g, "\\n"); + const formattedAbi = JSON.stringify(JSON.parse(escapedAbi), null, 2); + // Apply Abi transforms const abi = applyTransforms(options.abi); @@ -55,9 +60,7 @@ export const generateBinding: GenerateBindingFn = ( name: options.projectName, type: "plugin", version: latestWrapManifestVersion, - abi: Buffer.from( - JSON.stringify(sort((options.abi as unknown) as Record)) - ).toString("base64"), + abi: formattedAbi, }; output.entries = renderTemplates(templatePath(""), { ...abi, manifest }, {}); diff --git a/packages/schema/bind/src/bindings/python/plugin/templates/wrap_info-py.mustache b/packages/schema/bind/src/bindings/python/plugin/templates/wrap_info-py.mustache index 27c2b77ff3..a8f991aa58 100644 --- a/packages/schema/bind/src/bindings/python/plugin/templates/wrap_info-py.mustache +++ b/packages/schema/bind/src/bindings/python/plugin/templates/wrap_info-py.mustache @@ -3,12 +3,13 @@ from __future__ import annotations import json -from base64 import b64decode from polywrap_manifest import WrapManifest {{#manifest}} -abi = json.loads(b64decode("{{abi}}").decode("utf-8")) +abi = json.loads(""" +{{abi}} +""") manifest = WrapManifest.parse_obj({ "name": "{{name}}", diff --git a/packages/test-cases/cases/bind/sanity/output/plugin-py/wrap_info.py b/packages/test-cases/cases/bind/sanity/output/plugin-py/wrap_info.py index 8087dc6628..7bf75c8e64 100644 --- a/packages/test-cases/cases/bind/sanity/output/plugin-py/wrap_info.py +++ b/packages/test-cases/cases/bind/sanity/output/plugin-py/wrap_info.py @@ -3,11 +3,2435 @@ from __future__ import annotations import json -from base64 import b64decode from polywrap_manifest import WrapManifest -abi = json.loads(b64decode("eyJlbnVtVHlwZXMiOlt7ImNvbnN0YW50cyI6WyJTVFJJTkciLCJCWVRFUyJdLCJraW5kIjo4LCJtZW1iZXJzIjpbeyJuYW1lIjoiU1RSSU5HIiwidmFsdWUiOjB9LHsibmFtZSI6IkJZVEVTIiwidmFsdWUiOjF9XSwidHlwZSI6IkN1c3RvbUVudW0ifSx7ImNvbnN0YW50cyI6WyJmb3IiLCJpbiJdLCJraW5kIjo4LCJtZW1iZXJzIjpbeyJuYW1lIjoiZm9yIiwidmFsdWUiOjB9LHsibmFtZSI6ImluIiwidmFsdWUiOjF9XSwidHlwZSI6IndoaWxlIn1dLCJlbnZUeXBlIjp7ImtpbmQiOjY1NTM2LCJwcm9wZXJ0aWVzIjpbeyJraW5kIjozNCwibmFtZSI6InByb3AiLCJyZXF1aXJlZCI6dHJ1ZSwic2NhbGFyIjp7ImtpbmQiOjQsIm5hbWUiOiJwcm9wIiwicmVxdWlyZWQiOnRydWUsInR5cGUiOiJTdHJpbmcifSwidHlwZSI6IlN0cmluZyJ9LHsia2luZCI6MzQsIm5hbWUiOiJvcHRQcm9wIiwic2NhbGFyIjp7ImtpbmQiOjQsIm5hbWUiOiJvcHRQcm9wIiwidHlwZSI6IlN0cmluZyJ9LCJ0eXBlIjoiU3RyaW5nIn0seyJraW5kIjozNCwibWFwIjp7ImtleSI6eyJraW5kIjo0LCJuYW1lIjoib3B0TWFwIiwicmVxdWlyZWQiOnRydWUsInR5cGUiOiJTdHJpbmcifSwia2luZCI6MjYyMTQ2LCJuYW1lIjoib3B0TWFwIiwic2NhbGFyIjp7ImtpbmQiOjQsIm5hbWUiOiJvcHRNYXAiLCJ0eXBlIjoiSW50In0sInR5cGUiOiJNYXA8U3RyaW5nLCBJbnQ+IiwidmFsdWUiOnsia2luZCI6NCwibmFtZSI6Im9wdE1hcCIsInR5cGUiOiJJbnQifX0sIm5hbWUiOiJvcHRNYXAiLCJ0eXBlIjoiTWFwPFN0cmluZywgSW50PiJ9XSwidHlwZSI6IkVudiJ9LCJpbXBvcnRlZEVudW1UeXBlcyI6W3siY29uc3RhbnRzIjpbIlNUUklORyIsIkJZVEVTIl0sImtpbmQiOjUyMCwibWVtYmVycyI6W3sibmFtZSI6IlNUUklORyIsInZhbHVlIjowfSx7Im5hbWUiOiJCWVRFUyIsInZhbHVlIjoxfV0sIm5hbWVzcGFjZSI6IlRlc3RJbXBvcnQiLCJuYXRpdmVUeXBlIjoiRW51bSIsInR5cGUiOiJUZXN0SW1wb3J0X0VudW0iLCJ1cmkiOiJ0ZXN0aW1wb3J0LnVyaS5ldGgifSx7ImNvbnN0YW50cyI6WyJTVFJJTkciLCJCWVRFUyJdLCJraW5kIjo1MjAsIm1lbWJlcnMiOlt7Im5hbWUiOiJTVFJJTkciLCJ2YWx1ZSI6MH0seyJuYW1lIjoiQllURVMiLCJ2YWx1ZSI6MX1dLCJuYW1lc3BhY2UiOiJUZXN0SW1wb3J0IiwibmF0aXZlVHlwZSI6IkVudW0iLCJ0eXBlIjoiVGVzdEltcG9ydF9FbnVtX1JldHVybiIsInVyaSI6InRlc3RpbXBvcnQudXJpLmV0aCJ9XSwiaW1wb3J0ZWRFbnZUeXBlcyI6W3sia2luZCI6NTI0Mjg4LCJuYW1lc3BhY2UiOiJUZXN0SW1wb3J0IiwibmF0aXZlVHlwZSI6IkVudiIsInByb3BlcnRpZXMiOlt7ImtpbmQiOjM0LCJuYW1lIjoib2JqZWN0Iiwib2JqZWN0Ijp7ImtpbmQiOjgxOTIsIm5hbWUiOiJvYmplY3QiLCJyZXF1aXJlZCI6dHJ1ZSwidHlwZSI6IlRlc3RJbXBvcnRfQW5vdGhlck9iamVjdCJ9LCJyZXF1aXJlZCI6dHJ1ZSwidHlwZSI6IlRlc3RJbXBvcnRfQW5vdGhlck9iamVjdCJ9LHsia2luZCI6MzQsIm5hbWUiOiJvcHRPYmplY3QiLCJvYmplY3QiOnsia2luZCI6ODE5MiwibmFtZSI6Im9wdE9iamVjdCIsInR5cGUiOiJUZXN0SW1wb3J0X0Fub3RoZXJPYmplY3QifSwidHlwZSI6IlRlc3RJbXBvcnRfQW5vdGhlck9iamVjdCJ9LHsiYXJyYXkiOnsiaXRlbSI6eyJraW5kIjo4MTkyLCJuYW1lIjoib2JqZWN0QXJyYXkiLCJyZXF1aXJlZCI6dHJ1ZSwidHlwZSI6IlRlc3RJbXBvcnRfQW5vdGhlck9iamVjdCJ9LCJraW5kIjoxOCwibmFtZSI6Im9iamVjdEFycmF5Iiwib2JqZWN0Ijp7ImtpbmQiOjgxOTIsIm5hbWUiOiJvYmplY3RBcnJheSIsInJlcXVpcmVkIjp0cnVlLCJ0eXBlIjoiVGVzdEltcG9ydF9Bbm90aGVyT2JqZWN0In0sInJlcXVpcmVkIjp0cnVlLCJ0eXBlIjoiW1Rlc3RJbXBvcnRfQW5vdGhlck9iamVjdF0ifSwia2luZCI6MzQsIm5hbWUiOiJvYmplY3RBcnJheSIsInJlcXVpcmVkIjp0cnVlLCJ0eXBlIjoiW1Rlc3RJbXBvcnRfQW5vdGhlck9iamVjdF0ifSx7ImFycmF5Ijp7Iml0ZW0iOnsia2luZCI6ODE5MiwibmFtZSI6Im9wdE9iamVjdEFycmF5IiwidHlwZSI6IlRlc3RJbXBvcnRfQW5vdGhlck9iamVjdCJ9LCJraW5kIjoxOCwibmFtZSI6Im9wdE9iamVjdEFycmF5Iiwib2JqZWN0Ijp7ImtpbmQiOjgxOTIsIm5hbWUiOiJvcHRPYmplY3RBcnJheSIsInR5cGUiOiJUZXN0SW1wb3J0X0Fub3RoZXJPYmplY3QifSwidHlwZSI6IltUZXN0SW1wb3J0X0Fub3RoZXJPYmplY3RdIn0sImtpbmQiOjM0LCJuYW1lIjoib3B0T2JqZWN0QXJyYXkiLCJ0eXBlIjoiW1Rlc3RJbXBvcnRfQW5vdGhlck9iamVjdF0ifSx7ImVudW0iOnsia2luZCI6MTYzODQsIm5hbWUiOiJlbiIsInJlcXVpcmVkIjp0cnVlLCJ0eXBlIjoiVGVzdEltcG9ydF9FbnVtIn0sImtpbmQiOjM0LCJuYW1lIjoiZW4iLCJyZXF1aXJlZCI6dHJ1ZSwidHlwZSI6IlRlc3RJbXBvcnRfRW51bSJ9LHsiZW51bSI6eyJraW5kIjoxNjM4NCwibmFtZSI6Im9wdEVudW0iLCJ0eXBlIjoiVGVzdEltcG9ydF9FbnVtIn0sImtpbmQiOjM0LCJuYW1lIjoib3B0RW51bSIsInR5cGUiOiJUZXN0SW1wb3J0X0VudW0ifSx7ImFycmF5Ijp7ImVudW0iOnsia2luZCI6MTYzODQsIm5hbWUiOiJlbnVtQXJyYXkiLCJyZXF1aXJlZCI6dHJ1ZSwidHlwZSI6IlRlc3RJbXBvcnRfRW51bSJ9LCJpdGVtIjp7ImtpbmQiOjE2Mzg0LCJuYW1lIjoiZW51bUFycmF5IiwicmVxdWlyZWQiOnRydWUsInR5cGUiOiJUZXN0SW1wb3J0X0VudW0ifSwia2luZCI6MTgsIm5hbWUiOiJlbnVtQXJyYXkiLCJyZXF1aXJlZCI6dHJ1ZSwidHlwZSI6IltUZXN0SW1wb3J0X0VudW1dIn0sImtpbmQiOjM0LCJuYW1lIjoiZW51bUFycmF5IiwicmVxdWlyZWQiOnRydWUsInR5cGUiOiJbVGVzdEltcG9ydF9FbnVtXSJ9LHsiYXJyYXkiOnsiZW51bSI6eyJraW5kIjoxNjM4NCwibmFtZSI6Im9wdEVudW1BcnJheSIsInR5cGUiOiJUZXN0SW1wb3J0X0VudW0ifSwiaXRlbSI6eyJraW5kIjoxNjM4NCwibmFtZSI6Im9wdEVudW1BcnJheSIsInR5cGUiOiJUZXN0SW1wb3J0X0VudW0ifSwia2luZCI6MTgsIm5hbWUiOiJvcHRFbnVtQXJyYXkiLCJ0eXBlIjoiW1Rlc3RJbXBvcnRfRW51bV0ifSwia2luZCI6MzQsIm5hbWUiOiJvcHRFbnVtQXJyYXkiLCJ0eXBlIjoiW1Rlc3RJbXBvcnRfRW51bV0ifV0sInR5cGUiOiJUZXN0SW1wb3J0X0VudiIsInVyaSI6InRlc3RpbXBvcnQudXJpLmV0aCJ9XSwiaW1wb3J0ZWRNb2R1bGVUeXBlcyI6W3siaXNJbnRlcmZhY2UiOnRydWUsImtpbmQiOjI1NiwibWV0aG9kcyI6W3siYXJndW1lbnRzIjpbeyJraW5kIjozNCwibmFtZSI6InN0ciIsInJlcXVpcmVkIjp0cnVlLCJzY2FsYXIiOnsia2luZCI6NCwibmFtZSI6InN0ciIsInJlcXVpcmVkIjp0cnVlLCJ0eXBlIjoiU3RyaW5nIn0sInR5cGUiOiJTdHJpbmcifSx7ImtpbmQiOjM0LCJuYW1lIjoib3B0U3RyIiwic2NhbGFyIjp7ImtpbmQiOjQsIm5hbWUiOiJvcHRTdHIiLCJ0eXBlIjoiU3RyaW5nIn0sInR5cGUiOiJTdHJpbmcifSx7ImtpbmQiOjM0LCJuYW1lIjoidSIsInJlcXVpcmVkIjp0cnVlLCJzY2FsYXIiOnsia2luZCI6NCwibmFtZSI6InUiLCJyZXF1aXJlZCI6dHJ1ZSwidHlwZSI6IlVJbnQifSwidHlwZSI6IlVJbnQifSx7ImtpbmQiOjM0LCJuYW1lIjoib3B0VSIsInNjYWxhciI6eyJraW5kIjo0LCJuYW1lIjoib3B0VSIsInR5cGUiOiJVSW50In0sInR5cGUiOiJVSW50In0seyJhcnJheSI6eyJhcnJheSI6eyJpdGVtIjp7ImtpbmQiOjQsIm5hbWUiOiJ1QXJyYXlBcnJheSIsInR5cGUiOiJVSW50In0sImtpbmQiOjE4LCJuYW1lIjoidUFycmF5QXJyYXkiLCJzY2FsYXIiOnsia2luZCI6NCwibmFtZSI6InVBcnJheUFycmF5IiwidHlwZSI6IlVJbnQifSwidHlwZSI6IltVSW50XSJ9LCJpdGVtIjp7Iml0ZW0iOnsia2luZCI6NCwibmFtZSI6InVBcnJheUFycmF5IiwidHlwZSI6IlVJbnQifSwia2luZCI6MTgsIm5hbWUiOiJ1QXJyYXlBcnJheSIsInNjYWxhciI6eyJraW5kIjo0LCJuYW1lIjoidUFycmF5QXJyYXkiLCJ0eXBlIjoiVUludCJ9LCJ0eXBlIjoiW1VJbnRdIn0sImtpbmQiOjE4LCJuYW1lIjoidUFycmF5QXJyYXkiLCJyZXF1aXJlZCI6dHJ1ZSwidHlwZSI6IltbVUludF1dIn0sImtpbmQiOjM0LCJuYW1lIjoidUFycmF5QXJyYXkiLCJyZXF1aXJlZCI6dHJ1ZSwidHlwZSI6IltbVUludF1dIn0seyJraW5kIjozNCwibmFtZSI6Im9iamVjdCIsIm9iamVjdCI6eyJraW5kIjo4MTkyLCJuYW1lIjoib2JqZWN0IiwicmVxdWlyZWQiOnRydWUsInR5cGUiOiJUZXN0SW1wb3J0X09iamVjdCJ9LCJyZXF1aXJlZCI6dHJ1ZSwidHlwZSI6IlRlc3RJbXBvcnRfT2JqZWN0In0seyJraW5kIjozNCwibmFtZSI6Im9wdE9iamVjdCIsIm9iamVjdCI6eyJraW5kIjo4MTkyLCJuYW1lIjoib3B0T2JqZWN0IiwidHlwZSI6IlRlc3RJbXBvcnRfT2JqZWN0In0sInR5cGUiOiJUZXN0SW1wb3J0X09iamVjdCJ9LHsiYXJyYXkiOnsiaXRlbSI6eyJraW5kIjo4MTkyLCJuYW1lIjoib2JqZWN0QXJyYXkiLCJyZXF1aXJlZCI6dHJ1ZSwidHlwZSI6IlRlc3RJbXBvcnRfT2JqZWN0In0sImtpbmQiOjE4LCJuYW1lIjoib2JqZWN0QXJyYXkiLCJvYmplY3QiOnsia2luZCI6ODE5MiwibmFtZSI6Im9iamVjdEFycmF5IiwicmVxdWlyZWQiOnRydWUsInR5cGUiOiJUZXN0SW1wb3J0X09iamVjdCJ9LCJyZXF1aXJlZCI6dHJ1ZSwidHlwZSI6IltUZXN0SW1wb3J0X09iamVjdF0ifSwia2luZCI6MzQsIm5hbWUiOiJvYmplY3RBcnJheSIsInJlcXVpcmVkIjp0cnVlLCJ0eXBlIjoiW1Rlc3RJbXBvcnRfT2JqZWN0XSJ9LHsiYXJyYXkiOnsiaXRlbSI6eyJraW5kIjo4MTkyLCJuYW1lIjoib3B0T2JqZWN0QXJyYXkiLCJ0eXBlIjoiVGVzdEltcG9ydF9PYmplY3QifSwia2luZCI6MTgsIm5hbWUiOiJvcHRPYmplY3RBcnJheSIsIm9iamVjdCI6eyJraW5kIjo4MTkyLCJuYW1lIjoib3B0T2JqZWN0QXJyYXkiLCJ0eXBlIjoiVGVzdEltcG9ydF9PYmplY3QifSwidHlwZSI6IltUZXN0SW1wb3J0X09iamVjdF0ifSwia2luZCI6MzQsIm5hbWUiOiJvcHRPYmplY3RBcnJheSIsInR5cGUiOiJbVGVzdEltcG9ydF9PYmplY3RdIn0seyJlbnVtIjp7ImtpbmQiOjE2Mzg0LCJuYW1lIjoiZW4iLCJyZXF1aXJlZCI6dHJ1ZSwidHlwZSI6IlRlc3RJbXBvcnRfRW51bSJ9LCJraW5kIjozNCwibmFtZSI6ImVuIiwicmVxdWlyZWQiOnRydWUsInR5cGUiOiJUZXN0SW1wb3J0X0VudW0ifSx7ImVudW0iOnsia2luZCI6MTYzODQsIm5hbWUiOiJvcHRFbnVtIiwidHlwZSI6IlRlc3RJbXBvcnRfRW51bSJ9LCJraW5kIjozNCwibmFtZSI6Im9wdEVudW0iLCJ0eXBlIjoiVGVzdEltcG9ydF9FbnVtIn0seyJhcnJheSI6eyJlbnVtIjp7ImtpbmQiOjE2Mzg0LCJuYW1lIjoiZW51bUFycmF5IiwicmVxdWlyZWQiOnRydWUsInR5cGUiOiJUZXN0SW1wb3J0X0VudW0ifSwiaXRlbSI6eyJraW5kIjoxNjM4NCwibmFtZSI6ImVudW1BcnJheSIsInJlcXVpcmVkIjp0cnVlLCJ0eXBlIjoiVGVzdEltcG9ydF9FbnVtIn0sImtpbmQiOjE4LCJuYW1lIjoiZW51bUFycmF5IiwicmVxdWlyZWQiOnRydWUsInR5cGUiOiJbVGVzdEltcG9ydF9FbnVtXSJ9LCJraW5kIjozNCwibmFtZSI6ImVudW1BcnJheSIsInJlcXVpcmVkIjp0cnVlLCJ0eXBlIjoiW1Rlc3RJbXBvcnRfRW51bV0ifSx7ImFycmF5Ijp7ImVudW0iOnsia2luZCI6MTYzODQsIm5hbWUiOiJvcHRFbnVtQXJyYXkiLCJ0eXBlIjoiVGVzdEltcG9ydF9FbnVtIn0sIml0ZW0iOnsia2luZCI6MTYzODQsIm5hbWUiOiJvcHRFbnVtQXJyYXkiLCJ0eXBlIjoiVGVzdEltcG9ydF9FbnVtIn0sImtpbmQiOjE4LCJuYW1lIjoib3B0RW51bUFycmF5IiwidHlwZSI6IltUZXN0SW1wb3J0X0VudW1dIn0sImtpbmQiOjM0LCJuYW1lIjoib3B0RW51bUFycmF5IiwidHlwZSI6IltUZXN0SW1wb3J0X0VudW1dIn1dLCJlbnYiOnsicmVxdWlyZWQiOnRydWV9LCJraW5kIjo2NCwibmFtZSI6ImltcG9ydGVkTWV0aG9kIiwicmVxdWlyZWQiOnRydWUsInJldHVybiI6eyJraW5kIjozNCwibmFtZSI6ImltcG9ydGVkTWV0aG9kIiwib2JqZWN0Ijp7ImtpbmQiOjgxOTIsIm5hbWUiOiJpbXBvcnRlZE1ldGhvZCIsInR5cGUiOiJUZXN0SW1wb3J0X09iamVjdCJ9LCJ0eXBlIjoiVGVzdEltcG9ydF9PYmplY3QifSwidHlwZSI6Ik1ldGhvZCJ9LHsiYXJndW1lbnRzIjpbeyJhcnJheSI6eyJpdGVtIjp7ImtpbmQiOjQsIm5hbWUiOiJhcmciLCJyZXF1aXJlZCI6dHJ1ZSwidHlwZSI6IlN0cmluZyJ9LCJraW5kIjoxOCwibmFtZSI6ImFyZyIsInJlcXVpcmVkIjp0cnVlLCJzY2FsYXIiOnsia2luZCI6NCwibmFtZSI6ImFyZyIsInJlcXVpcmVkIjp0cnVlLCJ0eXBlIjoiU3RyaW5nIn0sInR5cGUiOiJbU3RyaW5nXSJ9LCJraW5kIjozNCwibmFtZSI6ImFyZyIsInJlcXVpcmVkIjp0cnVlLCJ0eXBlIjoiW1N0cmluZ10ifV0sImtpbmQiOjY0LCJuYW1lIjoiYW5vdGhlck1ldGhvZCIsInJlcXVpcmVkIjp0cnVlLCJyZXR1cm4iOnsia2luZCI6MzQsIm5hbWUiOiJhbm90aGVyTWV0aG9kIiwicmVxdWlyZWQiOnRydWUsInNjYWxhciI6eyJraW5kIjo0LCJuYW1lIjoiYW5vdGhlck1ldGhvZCIsInJlcXVpcmVkIjp0cnVlLCJ0eXBlIjoiSW50MzIifSwidHlwZSI6IkludDMyIn0sInR5cGUiOiJNZXRob2QifSx7ImFyZ3VtZW50cyI6W3sia2luZCI6MzQsIm5hbWUiOiJhcmciLCJyZXF1aXJlZCI6dHJ1ZSwic2NhbGFyIjp7ImtpbmQiOjQsIm5hbWUiOiJhcmciLCJyZXF1aXJlZCI6dHJ1ZSwidHlwZSI6IlN0cmluZyJ9LCJ0eXBlIjoiU3RyaW5nIn1dLCJraW5kIjo2NCwibmFtZSI6InJldHVybnNBcnJheU9mRW51bXMiLCJyZXF1aXJlZCI6dHJ1ZSwicmV0dXJuIjp7ImFycmF5Ijp7ImVudW0iOnsia2luZCI6MTYzODQsIm5hbWUiOiJyZXR1cm5zQXJyYXlPZkVudW1zIiwidHlwZSI6IlRlc3RJbXBvcnRfRW51bV9SZXR1cm4ifSwiaXRlbSI6eyJraW5kIjoxNjM4NCwibmFtZSI6InJldHVybnNBcnJheU9mRW51bXMiLCJ0eXBlIjoiVGVzdEltcG9ydF9FbnVtX1JldHVybiJ9LCJraW5kIjoxOCwibmFtZSI6InJldHVybnNBcnJheU9mRW51bXMiLCJyZXF1aXJlZCI6dHJ1ZSwidHlwZSI6IltUZXN0SW1wb3J0X0VudW1fUmV0dXJuXSJ9LCJraW5kIjozNCwibmFtZSI6InJldHVybnNBcnJheU9mRW51bXMiLCJyZXF1aXJlZCI6dHJ1ZSwidHlwZSI6IltUZXN0SW1wb3J0X0VudW1fUmV0dXJuXSJ9LCJ0eXBlIjoiTWV0aG9kIn1dLCJuYW1lc3BhY2UiOiJUZXN0SW1wb3J0IiwibmF0aXZlVHlwZSI6Ik1vZHVsZSIsInR5cGUiOiJUZXN0SW1wb3J0X01vZHVsZSIsInVyaSI6InRlc3RpbXBvcnQudXJpLmV0aCJ9XSwiaW1wb3J0ZWRPYmplY3RUeXBlcyI6W3sia2luZCI6MTAyNSwibmFtZXNwYWNlIjoiVGVzdEltcG9ydCIsIm5hdGl2ZVR5cGUiOiJPYmplY3QiLCJwcm9wZXJ0aWVzIjpbeyJraW5kIjozNCwibmFtZSI6Im9iamVjdCIsIm9iamVjdCI6eyJraW5kIjo4MTkyLCJuYW1lIjoib2JqZWN0IiwicmVxdWlyZWQiOnRydWUsInR5cGUiOiJUZXN0SW1wb3J0X0Fub3RoZXJPYmplY3QifSwicmVxdWlyZWQiOnRydWUsInR5cGUiOiJUZXN0SW1wb3J0X0Fub3RoZXJPYmplY3QifSx7ImtpbmQiOjM0LCJuYW1lIjoib3B0T2JqZWN0Iiwib2JqZWN0Ijp7ImtpbmQiOjgxOTIsIm5hbWUiOiJvcHRPYmplY3QiLCJ0eXBlIjoiVGVzdEltcG9ydF9Bbm90aGVyT2JqZWN0In0sInR5cGUiOiJUZXN0SW1wb3J0X0Fub3RoZXJPYmplY3QifSx7ImFycmF5Ijp7Iml0ZW0iOnsia2luZCI6ODE5MiwibmFtZSI6Im9iamVjdEFycmF5IiwicmVxdWlyZWQiOnRydWUsInR5cGUiOiJUZXN0SW1wb3J0X0Fub3RoZXJPYmplY3QifSwia2luZCI6MTgsIm5hbWUiOiJvYmplY3RBcnJheSIsIm9iamVjdCI6eyJraW5kIjo4MTkyLCJuYW1lIjoib2JqZWN0QXJyYXkiLCJyZXF1aXJlZCI6dHJ1ZSwidHlwZSI6IlRlc3RJbXBvcnRfQW5vdGhlck9iamVjdCJ9LCJyZXF1aXJlZCI6dHJ1ZSwidHlwZSI6IltUZXN0SW1wb3J0X0Fub3RoZXJPYmplY3RdIn0sImtpbmQiOjM0LCJuYW1lIjoib2JqZWN0QXJyYXkiLCJyZXF1aXJlZCI6dHJ1ZSwidHlwZSI6IltUZXN0SW1wb3J0X0Fub3RoZXJPYmplY3RdIn0seyJhcnJheSI6eyJpdGVtIjp7ImtpbmQiOjgxOTIsIm5hbWUiOiJvcHRPYmplY3RBcnJheSIsInR5cGUiOiJUZXN0SW1wb3J0X0Fub3RoZXJPYmplY3QifSwia2luZCI6MTgsIm5hbWUiOiJvcHRPYmplY3RBcnJheSIsIm9iamVjdCI6eyJraW5kIjo4MTkyLCJuYW1lIjoib3B0T2JqZWN0QXJyYXkiLCJ0eXBlIjoiVGVzdEltcG9ydF9Bbm90aGVyT2JqZWN0In0sInR5cGUiOiJbVGVzdEltcG9ydF9Bbm90aGVyT2JqZWN0XSJ9LCJraW5kIjozNCwibmFtZSI6Im9wdE9iamVjdEFycmF5IiwidHlwZSI6IltUZXN0SW1wb3J0X0Fub3RoZXJPYmplY3RdIn0seyJlbnVtIjp7ImtpbmQiOjE2Mzg0LCJuYW1lIjoiZW4iLCJyZXF1aXJlZCI6dHJ1ZSwidHlwZSI6IlRlc3RJbXBvcnRfRW51bSJ9LCJraW5kIjozNCwibmFtZSI6ImVuIiwicmVxdWlyZWQiOnRydWUsInR5cGUiOiJUZXN0SW1wb3J0X0VudW0ifSx7ImVudW0iOnsia2luZCI6MTYzODQsIm5hbWUiOiJvcHRFbnVtIiwidHlwZSI6IlRlc3RJbXBvcnRfRW51bSJ9LCJraW5kIjozNCwibmFtZSI6Im9wdEVudW0iLCJ0eXBlIjoiVGVzdEltcG9ydF9FbnVtIn0seyJhcnJheSI6eyJlbnVtIjp7ImtpbmQiOjE2Mzg0LCJuYW1lIjoiZW51bUFycmF5IiwicmVxdWlyZWQiOnRydWUsInR5cGUiOiJUZXN0SW1wb3J0X0VudW0ifSwiaXRlbSI6eyJraW5kIjoxNjM4NCwibmFtZSI6ImVudW1BcnJheSIsInJlcXVpcmVkIjp0cnVlLCJ0eXBlIjoiVGVzdEltcG9ydF9FbnVtIn0sImtpbmQiOjE4LCJuYW1lIjoiZW51bUFycmF5IiwicmVxdWlyZWQiOnRydWUsInR5cGUiOiJbVGVzdEltcG9ydF9FbnVtXSJ9LCJraW5kIjozNCwibmFtZSI6ImVudW1BcnJheSIsInJlcXVpcmVkIjp0cnVlLCJ0eXBlIjoiW1Rlc3RJbXBvcnRfRW51bV0ifSx7ImFycmF5Ijp7ImVudW0iOnsia2luZCI6MTYzODQsIm5hbWUiOiJvcHRFbnVtQXJyYXkiLCJ0eXBlIjoiVGVzdEltcG9ydF9FbnVtIn0sIml0ZW0iOnsia2luZCI6MTYzODQsIm5hbWUiOiJvcHRFbnVtQXJyYXkiLCJ0eXBlIjoiVGVzdEltcG9ydF9FbnVtIn0sImtpbmQiOjE4LCJuYW1lIjoib3B0RW51bUFycmF5IiwidHlwZSI6IltUZXN0SW1wb3J0X0VudW1dIn0sImtpbmQiOjM0LCJuYW1lIjoib3B0RW51bUFycmF5IiwidHlwZSI6IltUZXN0SW1wb3J0X0VudW1dIn1dLCJ0eXBlIjoiVGVzdEltcG9ydF9PYmplY3QiLCJ1cmkiOiJ0ZXN0aW1wb3J0LnVyaS5ldGgifSx7ImtpbmQiOjEwMjUsIm5hbWVzcGFjZSI6IlRlc3RJbXBvcnQiLCJuYXRpdmVUeXBlIjoiQW5vdGhlck9iamVjdCIsInByb3BlcnRpZXMiOlt7ImtpbmQiOjM0LCJuYW1lIjoicHJvcCIsInJlcXVpcmVkIjp0cnVlLCJzY2FsYXIiOnsia2luZCI6NCwibmFtZSI6InByb3AiLCJyZXF1aXJlZCI6dHJ1ZSwidHlwZSI6IlN0cmluZyJ9LCJ0eXBlIjoiU3RyaW5nIn1dLCJ0eXBlIjoiVGVzdEltcG9ydF9Bbm90aGVyT2JqZWN0IiwidXJpIjoidGVzdGltcG9ydC51cmkuZXRoIn1dLCJpbnRlcmZhY2VUeXBlcyI6W3siY2FwYWJpbGl0aWVzIjp7ImdldEltcGxlbWVudGF0aW9ucyI6eyJlbmFibGVkIjp0cnVlfX0sImtpbmQiOjMyNzY4LCJuYW1lc3BhY2UiOiJUZXN0SW1wb3J0IiwibmF0aXZlVHlwZSI6IkludGVyZmFjZSIsInR5cGUiOiJUZXN0SW1wb3J0IiwidXJpIjoidGVzdGltcG9ydC51cmkuZXRoIn1dLCJtb2R1bGVUeXBlIjp7ImltcG9ydHMiOlt7InR5cGUiOiJUZXN0SW1wb3J0X01vZHVsZSJ9LHsidHlwZSI6IlRlc3RJbXBvcnRfT2JqZWN0In0seyJ0eXBlIjoiVGVzdEltcG9ydF9Bbm90aGVyT2JqZWN0In0seyJ0eXBlIjoiVGVzdEltcG9ydF9FbnVtIn0seyJ0eXBlIjoiVGVzdEltcG9ydF9FbnVtX1JldHVybiJ9XSwia2luZCI6MTI4LCJtZXRob2RzIjpbeyJhcmd1bWVudHMiOlt7ImtpbmQiOjM0LCJuYW1lIjoic3RyIiwicmVxdWlyZWQiOnRydWUsInNjYWxhciI6eyJraW5kIjo0LCJuYW1lIjoic3RyIiwicmVxdWlyZWQiOnRydWUsInR5cGUiOiJTdHJpbmcifSwidHlwZSI6IlN0cmluZyJ9LHsia2luZCI6MzQsIm5hbWUiOiJvcHRTdHIiLCJzY2FsYXIiOnsia2luZCI6NCwibmFtZSI6Im9wdFN0ciIsInR5cGUiOiJTdHJpbmcifSwidHlwZSI6IlN0cmluZyJ9LHsiZW51bSI6eyJraW5kIjoxNjM4NCwibmFtZSI6ImVuIiwicmVxdWlyZWQiOnRydWUsInR5cGUiOiJDdXN0b21FbnVtIn0sImtpbmQiOjM0LCJuYW1lIjoiZW4iLCJyZXF1aXJlZCI6dHJ1ZSwidHlwZSI6IkN1c3RvbUVudW0ifSx7ImVudW0iOnsia2luZCI6MTYzODQsIm5hbWUiOiJvcHRFbnVtIiwidHlwZSI6IkN1c3RvbUVudW0ifSwia2luZCI6MzQsIm5hbWUiOiJvcHRFbnVtIiwidHlwZSI6IkN1c3RvbUVudW0ifSx7ImFycmF5Ijp7ImVudW0iOnsia2luZCI6MTYzODQsIm5hbWUiOiJlbnVtQXJyYXkiLCJyZXF1aXJlZCI6dHJ1ZSwidHlwZSI6IkN1c3RvbUVudW0ifSwiaXRlbSI6eyJraW5kIjoxNjM4NCwibmFtZSI6ImVudW1BcnJheSIsInJlcXVpcmVkIjp0cnVlLCJ0eXBlIjoiQ3VzdG9tRW51bSJ9LCJraW5kIjoxOCwibmFtZSI6ImVudW1BcnJheSIsInJlcXVpcmVkIjp0cnVlLCJ0eXBlIjoiW0N1c3RvbUVudW1dIn0sImtpbmQiOjM0LCJuYW1lIjoiZW51bUFycmF5IiwicmVxdWlyZWQiOnRydWUsInR5cGUiOiJbQ3VzdG9tRW51bV0ifSx7ImFycmF5Ijp7ImVudW0iOnsia2luZCI6MTYzODQsIm5hbWUiOiJvcHRFbnVtQXJyYXkiLCJ0eXBlIjoiQ3VzdG9tRW51bSJ9LCJpdGVtIjp7ImtpbmQiOjE2Mzg0LCJuYW1lIjoib3B0RW51bUFycmF5IiwidHlwZSI6IkN1c3RvbUVudW0ifSwia2luZCI6MTgsIm5hbWUiOiJvcHRFbnVtQXJyYXkiLCJ0eXBlIjoiW0N1c3RvbUVudW1dIn0sImtpbmQiOjM0LCJuYW1lIjoib3B0RW51bUFycmF5IiwidHlwZSI6IltDdXN0b21FbnVtXSJ9LHsia2luZCI6MzQsIm1hcCI6eyJrZXkiOnsia2luZCI6NCwibmFtZSI6Im1hcCIsInJlcXVpcmVkIjp0cnVlLCJ0eXBlIjoiU3RyaW5nIn0sImtpbmQiOjI2MjE0NiwibmFtZSI6Im1hcCIsInJlcXVpcmVkIjp0cnVlLCJzY2FsYXIiOnsia2luZCI6NCwibmFtZSI6Im1hcCIsInJlcXVpcmVkIjp0cnVlLCJ0eXBlIjoiSW50In0sInR5cGUiOiJNYXA8U3RyaW5nLCBJbnQ+IiwidmFsdWUiOnsia2luZCI6NCwibmFtZSI6Im1hcCIsInJlcXVpcmVkIjp0cnVlLCJ0eXBlIjoiSW50In19LCJuYW1lIjoibWFwIiwicmVxdWlyZWQiOnRydWUsInR5cGUiOiJNYXA8U3RyaW5nLCBJbnQ+In0seyJraW5kIjozNCwibWFwIjp7ImFycmF5Ijp7Iml0ZW0iOnsia2luZCI6NCwibmFtZSI6Im1hcE9mQXJyIiwicmVxdWlyZWQiOnRydWUsInR5cGUiOiJJbnQifSwia2luZCI6MTgsIm5hbWUiOiJtYXBPZkFyciIsInJlcXVpcmVkIjp0cnVlLCJzY2FsYXIiOnsia2luZCI6NCwibmFtZSI6Im1hcE9mQXJyIiwicmVxdWlyZWQiOnRydWUsInR5cGUiOiJJbnQifSwidHlwZSI6IltJbnRdIn0sImtleSI6eyJraW5kIjo0LCJuYW1lIjoibWFwT2ZBcnIiLCJyZXF1aXJlZCI6dHJ1ZSwidHlwZSI6IlN0cmluZyJ9LCJraW5kIjoyNjIxNDYsIm5hbWUiOiJtYXBPZkFyciIsInJlcXVpcmVkIjp0cnVlLCJ0eXBlIjoiTWFwPFN0cmluZywgW0ludF0+IiwidmFsdWUiOnsiaXRlbSI6eyJraW5kIjo0LCJuYW1lIjoibWFwT2ZBcnIiLCJyZXF1aXJlZCI6dHJ1ZSwidHlwZSI6IkludCJ9LCJraW5kIjoxOCwibmFtZSI6Im1hcE9mQXJyIiwicmVxdWlyZWQiOnRydWUsInNjYWxhciI6eyJraW5kIjo0LCJuYW1lIjoibWFwT2ZBcnIiLCJyZXF1aXJlZCI6dHJ1ZSwidHlwZSI6IkludCJ9LCJ0eXBlIjoiW0ludF0ifX0sIm5hbWUiOiJtYXBPZkFyciIsInJlcXVpcmVkIjp0cnVlLCJ0eXBlIjoiTWFwPFN0cmluZywgW0ludF0+In0seyJraW5kIjozNCwibWFwIjp7ImtleSI6eyJraW5kIjo0LCJuYW1lIjoibWFwT2ZNYXAiLCJyZXF1aXJlZCI6dHJ1ZSwidHlwZSI6IlN0cmluZyJ9LCJraW5kIjoyNjIxNDYsIm1hcCI6eyJrZXkiOnsia2luZCI6NCwibmFtZSI6Im1hcE9mTWFwIiwicmVxdWlyZWQiOnRydWUsInR5cGUiOiJTdHJpbmcifSwia2luZCI6MjYyMTQ2LCJuYW1lIjoibWFwT2ZNYXAiLCJyZXF1aXJlZCI6dHJ1ZSwic2NhbGFyIjp7ImtpbmQiOjQsIm5hbWUiOiJtYXBPZk1hcCIsInJlcXVpcmVkIjp0cnVlLCJ0eXBlIjoiSW50In0sInR5cGUiOiJNYXA8U3RyaW5nLCBJbnQ+IiwidmFsdWUiOnsia2luZCI6NCwibmFtZSI6Im1hcE9mTWFwIiwicmVxdWlyZWQiOnRydWUsInR5cGUiOiJJbnQifX0sIm5hbWUiOiJtYXBPZk1hcCIsInJlcXVpcmVkIjp0cnVlLCJ0eXBlIjoiTWFwPFN0cmluZywgTWFwPFN0cmluZywgSW50Pj4iLCJ2YWx1ZSI6eyJrZXkiOnsia2luZCI6NCwibmFtZSI6Im1hcE9mTWFwIiwicmVxdWlyZWQiOnRydWUsInR5cGUiOiJTdHJpbmcifSwia2luZCI6MjYyMTQ2LCJuYW1lIjoibWFwT2ZNYXAiLCJyZXF1aXJlZCI6dHJ1ZSwic2NhbGFyIjp7ImtpbmQiOjQsIm5hbWUiOiJtYXBPZk1hcCIsInJlcXVpcmVkIjp0cnVlLCJ0eXBlIjoiSW50In0sInR5cGUiOiJNYXA8U3RyaW5nLCBJbnQ+IiwidmFsdWUiOnsia2luZCI6NCwibmFtZSI6Im1hcE9mTWFwIiwicmVxdWlyZWQiOnRydWUsInR5cGUiOiJJbnQifX19LCJuYW1lIjoibWFwT2ZNYXAiLCJyZXF1aXJlZCI6dHJ1ZSwidHlwZSI6Ik1hcDxTdHJpbmcsIE1hcDxTdHJpbmcsIEludD4+In0seyJraW5kIjozNCwibWFwIjp7ImtleSI6eyJraW5kIjo0LCJuYW1lIjoibWFwT2ZPYmoiLCJyZXF1aXJlZCI6dHJ1ZSwidHlwZSI6IlN0cmluZyJ9LCJraW5kIjoyNjIxNDYsIm5hbWUiOiJtYXBPZk9iaiIsIm9iamVjdCI6eyJraW5kIjo4MTkyLCJuYW1lIjoibWFwT2ZPYmoiLCJyZXF1aXJlZCI6dHJ1ZSwidHlwZSI6IkFub3RoZXJUeXBlIn0sInJlcXVpcmVkIjp0cnVlLCJ0eXBlIjoiTWFwPFN0cmluZywgQW5vdGhlclR5cGU+IiwidmFsdWUiOnsia2luZCI6ODE5MiwibmFtZSI6Im1hcE9mT2JqIiwicmVxdWlyZWQiOnRydWUsInR5cGUiOiJBbm90aGVyVHlwZSJ9fSwibmFtZSI6Im1hcE9mT2JqIiwicmVxdWlyZWQiOnRydWUsInR5cGUiOiJNYXA8U3RyaW5nLCBBbm90aGVyVHlwZT4ifSx7ImtpbmQiOjM0LCJtYXAiOnsiYXJyYXkiOnsiaXRlbSI6eyJraW5kIjo4MTkyLCJuYW1lIjoibWFwT2ZBcnJPZk9iaiIsInJlcXVpcmVkIjp0cnVlLCJ0eXBlIjoiQW5vdGhlclR5cGUifSwia2luZCI6MTgsIm5hbWUiOiJtYXBPZkFyck9mT2JqIiwib2JqZWN0Ijp7ImtpbmQiOjgxOTIsIm5hbWUiOiJtYXBPZkFyck9mT2JqIiwicmVxdWlyZWQiOnRydWUsInR5cGUiOiJBbm90aGVyVHlwZSJ9LCJyZXF1aXJlZCI6dHJ1ZSwidHlwZSI6IltBbm90aGVyVHlwZV0ifSwia2V5Ijp7ImtpbmQiOjQsIm5hbWUiOiJtYXBPZkFyck9mT2JqIiwicmVxdWlyZWQiOnRydWUsInR5cGUiOiJTdHJpbmcifSwia2luZCI6MjYyMTQ2LCJuYW1lIjoibWFwT2ZBcnJPZk9iaiIsInJlcXVpcmVkIjp0cnVlLCJ0eXBlIjoiTWFwPFN0cmluZywgW0Fub3RoZXJUeXBlXT4iLCJ2YWx1ZSI6eyJpdGVtIjp7ImtpbmQiOjgxOTIsIm5hbWUiOiJtYXBPZkFyck9mT2JqIiwicmVxdWlyZWQiOnRydWUsInR5cGUiOiJBbm90aGVyVHlwZSJ9LCJraW5kIjoxOCwibmFtZSI6Im1hcE9mQXJyT2ZPYmoiLCJvYmplY3QiOnsia2luZCI6ODE5MiwibmFtZSI6Im1hcE9mQXJyT2ZPYmoiLCJyZXF1aXJlZCI6dHJ1ZSwidHlwZSI6IkFub3RoZXJUeXBlIn0sInJlcXVpcmVkIjp0cnVlLCJ0eXBlIjoiW0Fub3RoZXJUeXBlXSJ9fSwibmFtZSI6Im1hcE9mQXJyT2ZPYmoiLCJyZXF1aXJlZCI6dHJ1ZSwidHlwZSI6Ik1hcDxTdHJpbmcsIFtBbm90aGVyVHlwZV0+In1dLCJraW5kIjo2NCwibmFtZSI6Im1vZHVsZU1ldGhvZCIsInJlcXVpcmVkIjp0cnVlLCJyZXR1cm4iOnsia2luZCI6MzQsIm5hbWUiOiJtb2R1bGVNZXRob2QiLCJyZXF1aXJlZCI6dHJ1ZSwic2NhbGFyIjp7ImtpbmQiOjQsIm5hbWUiOiJtb2R1bGVNZXRob2QiLCJyZXF1aXJlZCI6dHJ1ZSwidHlwZSI6IkludCJ9LCJ0eXBlIjoiSW50In0sInR5cGUiOiJNZXRob2QifSx7ImFyZ3VtZW50cyI6W3sia2luZCI6MzQsIm5hbWUiOiJvYmplY3QiLCJvYmplY3QiOnsia2luZCI6ODE5MiwibmFtZSI6Im9iamVjdCIsInJlcXVpcmVkIjp0cnVlLCJ0eXBlIjoiQW5vdGhlclR5cGUifSwicmVxdWlyZWQiOnRydWUsInR5cGUiOiJBbm90aGVyVHlwZSJ9LHsia2luZCI6MzQsIm5hbWUiOiJvcHRPYmplY3QiLCJvYmplY3QiOnsia2luZCI6ODE5MiwibmFtZSI6Im9wdE9iamVjdCIsInR5cGUiOiJBbm90aGVyVHlwZSJ9LCJ0eXBlIjoiQW5vdGhlclR5cGUifSx7ImFycmF5Ijp7Iml0ZW0iOnsia2luZCI6ODE5MiwibmFtZSI6Im9iamVjdEFycmF5IiwicmVxdWlyZWQiOnRydWUsInR5cGUiOiJBbm90aGVyVHlwZSJ9LCJraW5kIjoxOCwibmFtZSI6Im9iamVjdEFycmF5Iiwib2JqZWN0Ijp7ImtpbmQiOjgxOTIsIm5hbWUiOiJvYmplY3RBcnJheSIsInJlcXVpcmVkIjp0cnVlLCJ0eXBlIjoiQW5vdGhlclR5cGUifSwicmVxdWlyZWQiOnRydWUsInR5cGUiOiJbQW5vdGhlclR5cGVdIn0sImtpbmQiOjM0LCJuYW1lIjoib2JqZWN0QXJyYXkiLCJyZXF1aXJlZCI6dHJ1ZSwidHlwZSI6IltBbm90aGVyVHlwZV0ifSx7ImFycmF5Ijp7Iml0ZW0iOnsia2luZCI6ODE5MiwibmFtZSI6Im9wdE9iamVjdEFycmF5IiwidHlwZSI6IkFub3RoZXJUeXBlIn0sImtpbmQiOjE4LCJuYW1lIjoib3B0T2JqZWN0QXJyYXkiLCJvYmplY3QiOnsia2luZCI6ODE5MiwibmFtZSI6Im9wdE9iamVjdEFycmF5IiwidHlwZSI6IkFub3RoZXJUeXBlIn0sInR5cGUiOiJbQW5vdGhlclR5cGVdIn0sImtpbmQiOjM0LCJuYW1lIjoib3B0T2JqZWN0QXJyYXkiLCJ0eXBlIjoiW0Fub3RoZXJUeXBlXSJ9XSwiZW52Ijp7InJlcXVpcmVkIjp0cnVlfSwia2luZCI6NjQsIm5hbWUiOiJvYmplY3RNZXRob2QiLCJyZXF1aXJlZCI6dHJ1ZSwicmV0dXJuIjp7ImtpbmQiOjM0LCJuYW1lIjoib2JqZWN0TWV0aG9kIiwib2JqZWN0Ijp7ImtpbmQiOjgxOTIsIm5hbWUiOiJvYmplY3RNZXRob2QiLCJ0eXBlIjoiQW5vdGhlclR5cGUifSwidHlwZSI6IkFub3RoZXJUeXBlIn0sInR5cGUiOiJNZXRob2QifSx7ImFyZ3VtZW50cyI6W3sia2luZCI6MzQsIm5hbWUiOiJvYmplY3QiLCJvYmplY3QiOnsia2luZCI6ODE5MiwibmFtZSI6Im9iamVjdCIsInJlcXVpcmVkIjp0cnVlLCJ0eXBlIjoiQW5vdGhlclR5cGUifSwicmVxdWlyZWQiOnRydWUsInR5cGUiOiJBbm90aGVyVHlwZSJ9LHsia2luZCI6MzQsIm5hbWUiOiJvcHRPYmplY3QiLCJvYmplY3QiOnsia2luZCI6ODE5MiwibmFtZSI6Im9wdE9iamVjdCIsInR5cGUiOiJBbm90aGVyVHlwZSJ9LCJ0eXBlIjoiQW5vdGhlclR5cGUifSx7ImFycmF5Ijp7Iml0ZW0iOnsia2luZCI6ODE5MiwibmFtZSI6Im9iamVjdEFycmF5IiwicmVxdWlyZWQiOnRydWUsInR5cGUiOiJBbm90aGVyVHlwZSJ9LCJraW5kIjoxOCwibmFtZSI6Im9iamVjdEFycmF5Iiwib2JqZWN0Ijp7ImtpbmQiOjgxOTIsIm5hbWUiOiJvYmplY3RBcnJheSIsInJlcXVpcmVkIjp0cnVlLCJ0eXBlIjoiQW5vdGhlclR5cGUifSwicmVxdWlyZWQiOnRydWUsInR5cGUiOiJbQW5vdGhlclR5cGVdIn0sImtpbmQiOjM0LCJuYW1lIjoib2JqZWN0QXJyYXkiLCJyZXF1aXJlZCI6dHJ1ZSwidHlwZSI6IltBbm90aGVyVHlwZV0ifSx7ImFycmF5Ijp7Iml0ZW0iOnsia2luZCI6ODE5MiwibmFtZSI6Im9wdE9iamVjdEFycmF5IiwidHlwZSI6IkFub3RoZXJUeXBlIn0sImtpbmQiOjE4LCJuYW1lIjoib3B0T2JqZWN0QXJyYXkiLCJvYmplY3QiOnsia2luZCI6ODE5MiwibmFtZSI6Im9wdE9iamVjdEFycmF5IiwidHlwZSI6IkFub3RoZXJUeXBlIn0sInR5cGUiOiJbQW5vdGhlclR5cGVdIn0sImtpbmQiOjM0LCJuYW1lIjoib3B0T2JqZWN0QXJyYXkiLCJ0eXBlIjoiW0Fub3RoZXJUeXBlXSJ9XSwiZW52Ijp7InJlcXVpcmVkIjpmYWxzZX0sImtpbmQiOjY0LCJuYW1lIjoib3B0aW9uYWxFbnZNZXRob2QiLCJyZXF1aXJlZCI6dHJ1ZSwicmV0dXJuIjp7ImtpbmQiOjM0LCJuYW1lIjoib3B0aW9uYWxFbnZNZXRob2QiLCJvYmplY3QiOnsia2luZCI6ODE5MiwibmFtZSI6Im9wdGlvbmFsRW52TWV0aG9kIiwidHlwZSI6IkFub3RoZXJUeXBlIn0sInR5cGUiOiJBbm90aGVyVHlwZSJ9LCJ0eXBlIjoiTWV0aG9kIn0seyJhcmd1bWVudHMiOlt7ImtpbmQiOjM0LCJuYW1lIjoiaWYiLCJvYmplY3QiOnsia2luZCI6ODE5MiwibmFtZSI6ImlmIiwicmVxdWlyZWQiOnRydWUsInR5cGUiOiJlbHNlIn0sInJlcXVpcmVkIjp0cnVlLCJ0eXBlIjoiZWxzZSJ9XSwia2luZCI6NjQsIm5hbWUiOiJpZiIsInJlcXVpcmVkIjp0cnVlLCJyZXR1cm4iOnsia2luZCI6MzQsIm5hbWUiOiJpZiIsIm9iamVjdCI6eyJraW5kIjo4MTkyLCJuYW1lIjoiaWYiLCJyZXF1aXJlZCI6dHJ1ZSwidHlwZSI6ImVsc2UifSwicmVxdWlyZWQiOnRydWUsInR5cGUiOiJlbHNlIn0sInR5cGUiOiJNZXRob2QifV0sInR5cGUiOiJNb2R1bGUifSwib2JqZWN0VHlwZXMiOlt7ImtpbmQiOjEsInByb3BlcnRpZXMiOlt7ImtpbmQiOjM0LCJuYW1lIjoic3RyIiwicmVxdWlyZWQiOnRydWUsInNjYWxhciI6eyJraW5kIjo0LCJuYW1lIjoic3RyIiwicmVxdWlyZWQiOnRydWUsInR5cGUiOiJTdHJpbmcifSwidHlwZSI6IlN0cmluZyJ9LHsia2luZCI6MzQsIm5hbWUiOiJvcHRTdHIiLCJzY2FsYXIiOnsia2luZCI6NCwibmFtZSI6Im9wdFN0ciIsInR5cGUiOiJTdHJpbmcifSwidHlwZSI6IlN0cmluZyJ9LHsia2luZCI6MzQsIm5hbWUiOiJ1IiwicmVxdWlyZWQiOnRydWUsInNjYWxhciI6eyJraW5kIjo0LCJuYW1lIjoidSIsInJlcXVpcmVkIjp0cnVlLCJ0eXBlIjoiVUludCJ9LCJ0eXBlIjoiVUludCJ9LHsia2luZCI6MzQsIm5hbWUiOiJvcHRVIiwic2NhbGFyIjp7ImtpbmQiOjQsIm5hbWUiOiJvcHRVIiwidHlwZSI6IlVJbnQifSwidHlwZSI6IlVJbnQifSx7ImtpbmQiOjM0LCJuYW1lIjoidTgiLCJyZXF1aXJlZCI6dHJ1ZSwic2NhbGFyIjp7ImtpbmQiOjQsIm5hbWUiOiJ1OCIsInJlcXVpcmVkIjp0cnVlLCJ0eXBlIjoiVUludDgifSwidHlwZSI6IlVJbnQ4In0seyJraW5kIjozNCwibmFtZSI6InUxNiIsInJlcXVpcmVkIjp0cnVlLCJzY2FsYXIiOnsia2luZCI6NCwibmFtZSI6InUxNiIsInJlcXVpcmVkIjp0cnVlLCJ0eXBlIjoiVUludDE2In0sInR5cGUiOiJVSW50MTYifSx7ImtpbmQiOjM0LCJuYW1lIjoidTMyIiwicmVxdWlyZWQiOnRydWUsInNjYWxhciI6eyJraW5kIjo0LCJuYW1lIjoidTMyIiwicmVxdWlyZWQiOnRydWUsInR5cGUiOiJVSW50MzIifSwidHlwZSI6IlVJbnQzMiJ9LHsia2luZCI6MzQsIm5hbWUiOiJpIiwicmVxdWlyZWQiOnRydWUsInNjYWxhciI6eyJraW5kIjo0LCJuYW1lIjoiaSIsInJlcXVpcmVkIjp0cnVlLCJ0eXBlIjoiSW50In0sInR5cGUiOiJJbnQifSx7ImtpbmQiOjM0LCJuYW1lIjoiaTgiLCJyZXF1aXJlZCI6dHJ1ZSwic2NhbGFyIjp7ImtpbmQiOjQsIm5hbWUiOiJpOCIsInJlcXVpcmVkIjp0cnVlLCJ0eXBlIjoiSW50OCJ9LCJ0eXBlIjoiSW50OCJ9LHsia2luZCI6MzQsIm5hbWUiOiJpMTYiLCJyZXF1aXJlZCI6dHJ1ZSwic2NhbGFyIjp7ImtpbmQiOjQsIm5hbWUiOiJpMTYiLCJyZXF1aXJlZCI6dHJ1ZSwidHlwZSI6IkludDE2In0sInR5cGUiOiJJbnQxNiJ9LHsia2luZCI6MzQsIm5hbWUiOiJpMzIiLCJyZXF1aXJlZCI6dHJ1ZSwic2NhbGFyIjp7ImtpbmQiOjQsIm5hbWUiOiJpMzIiLCJyZXF1aXJlZCI6dHJ1ZSwidHlwZSI6IkludDMyIn0sInR5cGUiOiJJbnQzMiJ9LHsia2luZCI6MzQsIm5hbWUiOiJiaWdpbnQiLCJyZXF1aXJlZCI6dHJ1ZSwic2NhbGFyIjp7ImtpbmQiOjQsIm5hbWUiOiJiaWdpbnQiLCJyZXF1aXJlZCI6dHJ1ZSwidHlwZSI6IkJpZ0ludCJ9LCJ0eXBlIjoiQmlnSW50In0seyJraW5kIjozNCwibmFtZSI6Im9wdEJpZ2ludCIsInNjYWxhciI6eyJraW5kIjo0LCJuYW1lIjoib3B0QmlnaW50IiwidHlwZSI6IkJpZ0ludCJ9LCJ0eXBlIjoiQmlnSW50In0seyJraW5kIjozNCwibmFtZSI6ImJpZ251bWJlciIsInJlcXVpcmVkIjp0cnVlLCJzY2FsYXIiOnsia2luZCI6NCwibmFtZSI6ImJpZ251bWJlciIsInJlcXVpcmVkIjp0cnVlLCJ0eXBlIjoiQmlnTnVtYmVyIn0sInR5cGUiOiJCaWdOdW1iZXIifSx7ImtpbmQiOjM0LCJuYW1lIjoib3B0QmlnbnVtYmVyIiwic2NhbGFyIjp7ImtpbmQiOjQsIm5hbWUiOiJvcHRCaWdudW1iZXIiLCJ0eXBlIjoiQmlnTnVtYmVyIn0sInR5cGUiOiJCaWdOdW1iZXIifSx7ImtpbmQiOjM0LCJuYW1lIjoianNvbiIsInJlcXVpcmVkIjp0cnVlLCJzY2FsYXIiOnsia2luZCI6NCwibmFtZSI6Impzb24iLCJyZXF1aXJlZCI6dHJ1ZSwidHlwZSI6IkpTT04ifSwidHlwZSI6IkpTT04ifSx7ImtpbmQiOjM0LCJuYW1lIjoib3B0SnNvbiIsInNjYWxhciI6eyJraW5kIjo0LCJuYW1lIjoib3B0SnNvbiIsInR5cGUiOiJKU09OIn0sInR5cGUiOiJKU09OIn0seyJraW5kIjozNCwibmFtZSI6ImJ5dGVzIiwicmVxdWlyZWQiOnRydWUsInNjYWxhciI6eyJraW5kIjo0LCJuYW1lIjoiYnl0ZXMiLCJyZXF1aXJlZCI6dHJ1ZSwidHlwZSI6IkJ5dGVzIn0sInR5cGUiOiJCeXRlcyJ9LHsia2luZCI6MzQsIm5hbWUiOiJvcHRCeXRlcyIsInNjYWxhciI6eyJraW5kIjo0LCJuYW1lIjoib3B0Qnl0ZXMiLCJ0eXBlIjoiQnl0ZXMifSwidHlwZSI6IkJ5dGVzIn0seyJraW5kIjozNCwibmFtZSI6ImJvb2xlYW4iLCJyZXF1aXJlZCI6dHJ1ZSwic2NhbGFyIjp7ImtpbmQiOjQsIm5hbWUiOiJib29sZWFuIiwicmVxdWlyZWQiOnRydWUsInR5cGUiOiJCb29sZWFuIn0sInR5cGUiOiJCb29sZWFuIn0seyJraW5kIjozNCwibmFtZSI6Im9wdEJvb2xlYW4iLCJzY2FsYXIiOnsia2luZCI6NCwibmFtZSI6Im9wdEJvb2xlYW4iLCJ0eXBlIjoiQm9vbGVhbiJ9LCJ0eXBlIjoiQm9vbGVhbiJ9LHsiYXJyYXkiOnsiaXRlbSI6eyJraW5kIjo0LCJuYW1lIjoidV9hcnJheSIsInJlcXVpcmVkIjp0cnVlLCJ0eXBlIjoiVUludCJ9LCJraW5kIjoxOCwibmFtZSI6InVfYXJyYXkiLCJyZXF1aXJlZCI6dHJ1ZSwic2NhbGFyIjp7ImtpbmQiOjQsIm5hbWUiOiJ1X2FycmF5IiwicmVxdWlyZWQiOnRydWUsInR5cGUiOiJVSW50In0sInR5cGUiOiJbVUludF0ifSwia2luZCI6MzQsIm5hbWUiOiJ1X2FycmF5IiwicmVxdWlyZWQiOnRydWUsInR5cGUiOiJbVUludF0ifSx7ImFycmF5Ijp7Iml0ZW0iOnsia2luZCI6NCwibmFtZSI6InVPcHRfYXJyYXkiLCJyZXF1aXJlZCI6dHJ1ZSwidHlwZSI6IlVJbnQifSwia2luZCI6MTgsIm5hbWUiOiJ1T3B0X2FycmF5Iiwic2NhbGFyIjp7ImtpbmQiOjQsIm5hbWUiOiJ1T3B0X2FycmF5IiwicmVxdWlyZWQiOnRydWUsInR5cGUiOiJVSW50In0sInR5cGUiOiJbVUludF0ifSwia2luZCI6MzQsIm5hbWUiOiJ1T3B0X2FycmF5IiwidHlwZSI6IltVSW50XSJ9LHsiYXJyYXkiOnsiaXRlbSI6eyJraW5kIjo0LCJuYW1lIjoiX29wdF91T3B0QXJyYXkiLCJ0eXBlIjoiVUludCJ9LCJraW5kIjoxOCwibmFtZSI6Il9vcHRfdU9wdEFycmF5Iiwic2NhbGFyIjp7ImtpbmQiOjQsIm5hbWUiOiJfb3B0X3VPcHRBcnJheSIsInR5cGUiOiJVSW50In0sInR5cGUiOiJbVUludF0ifSwia2luZCI6MzQsIm5hbWUiOiJfb3B0X3VPcHRBcnJheSIsInR5cGUiOiJbVUludF0ifSx7ImFycmF5Ijp7Iml0ZW0iOnsia2luZCI6NCwibmFtZSI6Im9wdFN0ck9wdEFycmF5IiwidHlwZSI6IlN0cmluZyJ9LCJraW5kIjoxOCwibmFtZSI6Im9wdFN0ck9wdEFycmF5Iiwic2NhbGFyIjp7ImtpbmQiOjQsIm5hbWUiOiJvcHRTdHJPcHRBcnJheSIsInR5cGUiOiJTdHJpbmcifSwidHlwZSI6IltTdHJpbmddIn0sImtpbmQiOjM0LCJuYW1lIjoib3B0U3RyT3B0QXJyYXkiLCJ0eXBlIjoiW1N0cmluZ10ifSx7ImFycmF5Ijp7ImFycmF5Ijp7Iml0ZW0iOnsia2luZCI6NCwibmFtZSI6InVBcnJheUFycmF5IiwicmVxdWlyZWQiOnRydWUsInR5cGUiOiJVSW50In0sImtpbmQiOjE4LCJuYW1lIjoidUFycmF5QXJyYXkiLCJyZXF1aXJlZCI6dHJ1ZSwic2NhbGFyIjp7ImtpbmQiOjQsIm5hbWUiOiJ1QXJyYXlBcnJheSIsInJlcXVpcmVkIjp0cnVlLCJ0eXBlIjoiVUludCJ9LCJ0eXBlIjoiW1VJbnRdIn0sIml0ZW0iOnsiaXRlbSI6eyJraW5kIjo0LCJuYW1lIjoidUFycmF5QXJyYXkiLCJyZXF1aXJlZCI6dHJ1ZSwidHlwZSI6IlVJbnQifSwia2luZCI6MTgsIm5hbWUiOiJ1QXJyYXlBcnJheSIsInJlcXVpcmVkIjp0cnVlLCJzY2FsYXIiOnsia2luZCI6NCwibmFtZSI6InVBcnJheUFycmF5IiwicmVxdWlyZWQiOnRydWUsInR5cGUiOiJVSW50In0sInR5cGUiOiJbVUludF0ifSwia2luZCI6MTgsIm5hbWUiOiJ1QXJyYXlBcnJheSIsInJlcXVpcmVkIjp0cnVlLCJ0eXBlIjoiW1tVSW50XV0ifSwia2luZCI6MzQsIm5hbWUiOiJ1QXJyYXlBcnJheSIsInJlcXVpcmVkIjp0cnVlLCJ0eXBlIjoiW1tVSW50XV0ifSx7ImFycmF5Ijp7ImFycmF5Ijp7Iml0ZW0iOnsia2luZCI6NCwibmFtZSI6InVPcHRBcnJheU9wdEFycmF5IiwidHlwZSI6IlVJbnQzMiJ9LCJraW5kIjoxOCwibmFtZSI6InVPcHRBcnJheU9wdEFycmF5Iiwic2NhbGFyIjp7ImtpbmQiOjQsIm5hbWUiOiJ1T3B0QXJyYXlPcHRBcnJheSIsInR5cGUiOiJVSW50MzIifSwidHlwZSI6IltVSW50MzJdIn0sIml0ZW0iOnsiaXRlbSI6eyJraW5kIjo0LCJuYW1lIjoidU9wdEFycmF5T3B0QXJyYXkiLCJ0eXBlIjoiVUludDMyIn0sImtpbmQiOjE4LCJuYW1lIjoidU9wdEFycmF5T3B0QXJyYXkiLCJzY2FsYXIiOnsia2luZCI6NCwibmFtZSI6InVPcHRBcnJheU9wdEFycmF5IiwidHlwZSI6IlVJbnQzMiJ9LCJ0eXBlIjoiW1VJbnQzMl0ifSwia2luZCI6MTgsIm5hbWUiOiJ1T3B0QXJyYXlPcHRBcnJheSIsInJlcXVpcmVkIjp0cnVlLCJ0eXBlIjoiW1tVSW50MzJdXSJ9LCJraW5kIjozNCwibmFtZSI6InVPcHRBcnJheU9wdEFycmF5IiwicmVxdWlyZWQiOnRydWUsInR5cGUiOiJbW1VJbnQzMl1dIn0seyJhcnJheSI6eyJhcnJheSI6eyJhcnJheSI6eyJpdGVtIjp7ImtpbmQiOjQsIm5hbWUiOiJ1QXJyYXlPcHRBcnJheUFycmF5IiwicmVxdWlyZWQiOnRydWUsInR5cGUiOiJVSW50MzIifSwia2luZCI6MTgsIm5hbWUiOiJ1QXJyYXlPcHRBcnJheUFycmF5IiwicmVxdWlyZWQiOnRydWUsInNjYWxhciI6eyJraW5kIjo0LCJuYW1lIjoidUFycmF5T3B0QXJyYXlBcnJheSIsInJlcXVpcmVkIjp0cnVlLCJ0eXBlIjoiVUludDMyIn0sInR5cGUiOiJbVUludDMyXSJ9LCJpdGVtIjp7Iml0ZW0iOnsia2luZCI6NCwibmFtZSI6InVBcnJheU9wdEFycmF5QXJyYXkiLCJyZXF1aXJlZCI6dHJ1ZSwidHlwZSI6IlVJbnQzMiJ9LCJraW5kIjoxOCwibmFtZSI6InVBcnJheU9wdEFycmF5QXJyYXkiLCJyZXF1aXJlZCI6dHJ1ZSwic2NhbGFyIjp7ImtpbmQiOjQsIm5hbWUiOiJ1QXJyYXlPcHRBcnJheUFycmF5IiwicmVxdWlyZWQiOnRydWUsInR5cGUiOiJVSW50MzIifSwidHlwZSI6IltVSW50MzJdIn0sImtpbmQiOjE4LCJuYW1lIjoidUFycmF5T3B0QXJyYXlBcnJheSIsInR5cGUiOiJbW1VJbnQzMl1dIn0sIml0ZW0iOnsiYXJyYXkiOnsiaXRlbSI6eyJraW5kIjo0LCJuYW1lIjoidUFycmF5T3B0QXJyYXlBcnJheSIsInJlcXVpcmVkIjp0cnVlLCJ0eXBlIjoiVUludDMyIn0sImtpbmQiOjE4LCJuYW1lIjoidUFycmF5T3B0QXJyYXlBcnJheSIsInJlcXVpcmVkIjp0cnVlLCJzY2FsYXIiOnsia2luZCI6NCwibmFtZSI6InVBcnJheU9wdEFycmF5QXJyYXkiLCJyZXF1aXJlZCI6dHJ1ZSwidHlwZSI6IlVJbnQzMiJ9LCJ0eXBlIjoiW1VJbnQzMl0ifSwiaXRlbSI6eyJpdGVtIjp7ImtpbmQiOjQsIm5hbWUiOiJ1QXJyYXlPcHRBcnJheUFycmF5IiwicmVxdWlyZWQiOnRydWUsInR5cGUiOiJVSW50MzIifSwia2luZCI6MTgsIm5hbWUiOiJ1QXJyYXlPcHRBcnJheUFycmF5IiwicmVxdWlyZWQiOnRydWUsInNjYWxhciI6eyJraW5kIjo0LCJuYW1lIjoidUFycmF5T3B0QXJyYXlBcnJheSIsInJlcXVpcmVkIjp0cnVlLCJ0eXBlIjoiVUludDMyIn0sInR5cGUiOiJbVUludDMyXSJ9LCJraW5kIjoxOCwibmFtZSI6InVBcnJheU9wdEFycmF5QXJyYXkiLCJ0eXBlIjoiW1tVSW50MzJdXSJ9LCJraW5kIjoxOCwibmFtZSI6InVBcnJheU9wdEFycmF5QXJyYXkiLCJyZXF1aXJlZCI6dHJ1ZSwidHlwZSI6IltbW1VJbnQzMl1dXSJ9LCJraW5kIjozNCwibmFtZSI6InVBcnJheU9wdEFycmF5QXJyYXkiLCJyZXF1aXJlZCI6dHJ1ZSwidHlwZSI6IltbW1VJbnQzMl1dXSJ9LHsiYXJyYXkiOnsiYXJyYXkiOnsiYXJyYXkiOnsiYXJyYXkiOnsiaXRlbSI6eyJraW5kIjo0LCJuYW1lIjoiY3JhenlBcnJheSIsInJlcXVpcmVkIjp0cnVlLCJ0eXBlIjoiVUludDMyIn0sImtpbmQiOjE4LCJuYW1lIjoiY3JhenlBcnJheSIsInNjYWxhciI6eyJraW5kIjo0LCJuYW1lIjoiY3JhenlBcnJheSIsInJlcXVpcmVkIjp0cnVlLCJ0eXBlIjoiVUludDMyIn0sInR5cGUiOiJbVUludDMyXSJ9LCJpdGVtIjp7Iml0ZW0iOnsia2luZCI6NCwibmFtZSI6ImNyYXp5QXJyYXkiLCJyZXF1aXJlZCI6dHJ1ZSwidHlwZSI6IlVJbnQzMiJ9LCJraW5kIjoxOCwibmFtZSI6ImNyYXp5QXJyYXkiLCJzY2FsYXIiOnsia2luZCI6NCwibmFtZSI6ImNyYXp5QXJyYXkiLCJyZXF1aXJlZCI6dHJ1ZSwidHlwZSI6IlVJbnQzMiJ9LCJ0eXBlIjoiW1VJbnQzMl0ifSwia2luZCI6MTgsIm5hbWUiOiJjcmF6eUFycmF5IiwicmVxdWlyZWQiOnRydWUsInR5cGUiOiJbW1VJbnQzMl1dIn0sIml0ZW0iOnsiYXJyYXkiOnsiaXRlbSI6eyJraW5kIjo0LCJuYW1lIjoiY3JhenlBcnJheSIsInJlcXVpcmVkIjp0cnVlLCJ0eXBlIjoiVUludDMyIn0sImtpbmQiOjE4LCJuYW1lIjoiY3JhenlBcnJheSIsInNjYWxhciI6eyJraW5kIjo0LCJuYW1lIjoiY3JhenlBcnJheSIsInJlcXVpcmVkIjp0cnVlLCJ0eXBlIjoiVUludDMyIn0sInR5cGUiOiJbVUludDMyXSJ9LCJpdGVtIjp7Iml0ZW0iOnsia2luZCI6NCwibmFtZSI6ImNyYXp5QXJyYXkiLCJyZXF1aXJlZCI6dHJ1ZSwidHlwZSI6IlVJbnQzMiJ9LCJraW5kIjoxOCwibmFtZSI6ImNyYXp5QXJyYXkiLCJzY2FsYXIiOnsia2luZCI6NCwibmFtZSI6ImNyYXp5QXJyYXkiLCJyZXF1aXJlZCI6dHJ1ZSwidHlwZSI6IlVJbnQzMiJ9LCJ0eXBlIjoiW1VJbnQzMl0ifSwia2luZCI6MTgsIm5hbWUiOiJjcmF6eUFycmF5IiwicmVxdWlyZWQiOnRydWUsInR5cGUiOiJbW1VJbnQzMl1dIn0sImtpbmQiOjE4LCJuYW1lIjoiY3JhenlBcnJheSIsInR5cGUiOiJbW1tVSW50MzJdXV0ifSwiaXRlbSI6eyJhcnJheSI6eyJhcnJheSI6eyJpdGVtIjp7ImtpbmQiOjQsIm5hbWUiOiJjcmF6eUFycmF5IiwicmVxdWlyZWQiOnRydWUsInR5cGUiOiJVSW50MzIifSwia2luZCI6MTgsIm5hbWUiOiJjcmF6eUFycmF5Iiwic2NhbGFyIjp7ImtpbmQiOjQsIm5hbWUiOiJjcmF6eUFycmF5IiwicmVxdWlyZWQiOnRydWUsInR5cGUiOiJVSW50MzIifSwidHlwZSI6IltVSW50MzJdIn0sIml0ZW0iOnsiaXRlbSI6eyJraW5kIjo0LCJuYW1lIjoiY3JhenlBcnJheSIsInJlcXVpcmVkIjp0cnVlLCJ0eXBlIjoiVUludDMyIn0sImtpbmQiOjE4LCJuYW1lIjoiY3JhenlBcnJheSIsInNjYWxhciI6eyJraW5kIjo0LCJuYW1lIjoiY3JhenlBcnJheSIsInJlcXVpcmVkIjp0cnVlLCJ0eXBlIjoiVUludDMyIn0sInR5cGUiOiJbVUludDMyXSJ9LCJraW5kIjoxOCwibmFtZSI6ImNyYXp5QXJyYXkiLCJyZXF1aXJlZCI6dHJ1ZSwidHlwZSI6IltbVUludDMyXV0ifSwiaXRlbSI6eyJhcnJheSI6eyJpdGVtIjp7ImtpbmQiOjQsIm5hbWUiOiJjcmF6eUFycmF5IiwicmVxdWlyZWQiOnRydWUsInR5cGUiOiJVSW50MzIifSwia2luZCI6MTgsIm5hbWUiOiJjcmF6eUFycmF5Iiwic2NhbGFyIjp7ImtpbmQiOjQsIm5hbWUiOiJjcmF6eUFycmF5IiwicmVxdWlyZWQiOnRydWUsInR5cGUiOiJVSW50MzIifSwidHlwZSI6IltVSW50MzJdIn0sIml0ZW0iOnsiaXRlbSI6eyJraW5kIjo0LCJuYW1lIjoiY3JhenlBcnJheSIsInJlcXVpcmVkIjp0cnVlLCJ0eXBlIjoiVUludDMyIn0sImtpbmQiOjE4LCJuYW1lIjoiY3JhenlBcnJheSIsInNjYWxhciI6eyJraW5kIjo0LCJuYW1lIjoiY3JhenlBcnJheSIsInJlcXVpcmVkIjp0cnVlLCJ0eXBlIjoiVUludDMyIn0sInR5cGUiOiJbVUludDMyXSJ9LCJraW5kIjoxOCwibmFtZSI6ImNyYXp5QXJyYXkiLCJyZXF1aXJlZCI6dHJ1ZSwidHlwZSI6IltbVUludDMyXV0ifSwia2luZCI6MTgsIm5hbWUiOiJjcmF6eUFycmF5IiwidHlwZSI6IltbW1VJbnQzMl1dXSJ9LCJraW5kIjoxOCwibmFtZSI6ImNyYXp5QXJyYXkiLCJ0eXBlIjoiW1tbW1VJbnQzMl1dXV0ifSwia2luZCI6MzQsIm5hbWUiOiJjcmF6eUFycmF5IiwidHlwZSI6IltbW1tVSW50MzJdXV1dIn0seyJraW5kIjozNCwibmFtZSI6Im9iamVjdCIsIm9iamVjdCI6eyJraW5kIjo4MTkyLCJuYW1lIjoib2JqZWN0IiwicmVxdWlyZWQiOnRydWUsInR5cGUiOiJBbm90aGVyVHlwZSJ9LCJyZXF1aXJlZCI6dHJ1ZSwidHlwZSI6IkFub3RoZXJUeXBlIn0seyJraW5kIjozNCwibmFtZSI6Im9wdE9iamVjdCIsIm9iamVjdCI6eyJraW5kIjo4MTkyLCJuYW1lIjoib3B0T2JqZWN0IiwidHlwZSI6IkFub3RoZXJUeXBlIn0sInR5cGUiOiJBbm90aGVyVHlwZSJ9LHsiYXJyYXkiOnsiaXRlbSI6eyJraW5kIjo4MTkyLCJuYW1lIjoib2JqZWN0QXJyYXkiLCJyZXF1aXJlZCI6dHJ1ZSwidHlwZSI6IkFub3RoZXJUeXBlIn0sImtpbmQiOjE4LCJuYW1lIjoib2JqZWN0QXJyYXkiLCJvYmplY3QiOnsia2luZCI6ODE5MiwibmFtZSI6Im9iamVjdEFycmF5IiwicmVxdWlyZWQiOnRydWUsInR5cGUiOiJBbm90aGVyVHlwZSJ9LCJyZXF1aXJlZCI6dHJ1ZSwidHlwZSI6IltBbm90aGVyVHlwZV0ifSwia2luZCI6MzQsIm5hbWUiOiJvYmplY3RBcnJheSIsInJlcXVpcmVkIjp0cnVlLCJ0eXBlIjoiW0Fub3RoZXJUeXBlXSJ9LHsiYXJyYXkiOnsiaXRlbSI6eyJraW5kIjo4MTkyLCJuYW1lIjoib3B0T2JqZWN0QXJyYXkiLCJ0eXBlIjoiQW5vdGhlclR5cGUifSwia2luZCI6MTgsIm5hbWUiOiJvcHRPYmplY3RBcnJheSIsIm9iamVjdCI6eyJraW5kIjo4MTkyLCJuYW1lIjoib3B0T2JqZWN0QXJyYXkiLCJ0eXBlIjoiQW5vdGhlclR5cGUifSwidHlwZSI6IltBbm90aGVyVHlwZV0ifSwia2luZCI6MzQsIm5hbWUiOiJvcHRPYmplY3RBcnJheSIsInR5cGUiOiJbQW5vdGhlclR5cGVdIn0seyJlbnVtIjp7ImtpbmQiOjE2Mzg0LCJuYW1lIjoiZW4iLCJyZXF1aXJlZCI6dHJ1ZSwidHlwZSI6IkN1c3RvbUVudW0ifSwia2luZCI6MzQsIm5hbWUiOiJlbiIsInJlcXVpcmVkIjp0cnVlLCJ0eXBlIjoiQ3VzdG9tRW51bSJ9LHsiZW51bSI6eyJraW5kIjoxNjM4NCwibmFtZSI6Im9wdEVudW0iLCJ0eXBlIjoiQ3VzdG9tRW51bSJ9LCJraW5kIjozNCwibmFtZSI6Im9wdEVudW0iLCJ0eXBlIjoiQ3VzdG9tRW51bSJ9LHsiYXJyYXkiOnsiZW51bSI6eyJraW5kIjoxNjM4NCwibmFtZSI6ImVudW1BcnJheSIsInJlcXVpcmVkIjp0cnVlLCJ0eXBlIjoiQ3VzdG9tRW51bSJ9LCJpdGVtIjp7ImtpbmQiOjE2Mzg0LCJuYW1lIjoiZW51bUFycmF5IiwicmVxdWlyZWQiOnRydWUsInR5cGUiOiJDdXN0b21FbnVtIn0sImtpbmQiOjE4LCJuYW1lIjoiZW51bUFycmF5IiwicmVxdWlyZWQiOnRydWUsInR5cGUiOiJbQ3VzdG9tRW51bV0ifSwia2luZCI6MzQsIm5hbWUiOiJlbnVtQXJyYXkiLCJyZXF1aXJlZCI6dHJ1ZSwidHlwZSI6IltDdXN0b21FbnVtXSJ9LHsiYXJyYXkiOnsiZW51bSI6eyJraW5kIjoxNjM4NCwibmFtZSI6Im9wdEVudW1BcnJheSIsInR5cGUiOiJDdXN0b21FbnVtIn0sIml0ZW0iOnsia2luZCI6MTYzODQsIm5hbWUiOiJvcHRFbnVtQXJyYXkiLCJ0eXBlIjoiQ3VzdG9tRW51bSJ9LCJraW5kIjoxOCwibmFtZSI6Im9wdEVudW1BcnJheSIsInR5cGUiOiJbQ3VzdG9tRW51bV0ifSwia2luZCI6MzQsIm5hbWUiOiJvcHRFbnVtQXJyYXkiLCJ0eXBlIjoiW0N1c3RvbUVudW1dIn0seyJraW5kIjozNCwibWFwIjp7ImtleSI6eyJraW5kIjo0LCJuYW1lIjoibWFwIiwicmVxdWlyZWQiOnRydWUsInR5cGUiOiJTdHJpbmcifSwia2luZCI6MjYyMTQ2LCJuYW1lIjoibWFwIiwicmVxdWlyZWQiOnRydWUsInNjYWxhciI6eyJraW5kIjo0LCJuYW1lIjoibWFwIiwicmVxdWlyZWQiOnRydWUsInR5cGUiOiJJbnQifSwidHlwZSI6Ik1hcDxTdHJpbmcsIEludD4iLCJ2YWx1ZSI6eyJraW5kIjo0LCJuYW1lIjoibWFwIiwicmVxdWlyZWQiOnRydWUsInR5cGUiOiJJbnQifX0sIm5hbWUiOiJtYXAiLCJyZXF1aXJlZCI6dHJ1ZSwidHlwZSI6Ik1hcDxTdHJpbmcsIEludD4ifSx7ImtpbmQiOjM0LCJtYXAiOnsiYXJyYXkiOnsiaXRlbSI6eyJraW5kIjo0LCJuYW1lIjoibWFwT2ZBcnIiLCJyZXF1aXJlZCI6dHJ1ZSwidHlwZSI6IkludCJ9LCJraW5kIjoxOCwibmFtZSI6Im1hcE9mQXJyIiwicmVxdWlyZWQiOnRydWUsInNjYWxhciI6eyJraW5kIjo0LCJuYW1lIjoibWFwT2ZBcnIiLCJyZXF1aXJlZCI6dHJ1ZSwidHlwZSI6IkludCJ9LCJ0eXBlIjoiW0ludF0ifSwia2V5Ijp7ImtpbmQiOjQsIm5hbWUiOiJtYXBPZkFyciIsInJlcXVpcmVkIjp0cnVlLCJ0eXBlIjoiU3RyaW5nIn0sImtpbmQiOjI2MjE0NiwibmFtZSI6Im1hcE9mQXJyIiwicmVxdWlyZWQiOnRydWUsInR5cGUiOiJNYXA8U3RyaW5nLCBbSW50XT4iLCJ2YWx1ZSI6eyJpdGVtIjp7ImtpbmQiOjQsIm5hbWUiOiJtYXBPZkFyciIsInJlcXVpcmVkIjp0cnVlLCJ0eXBlIjoiSW50In0sImtpbmQiOjE4LCJuYW1lIjoibWFwT2ZBcnIiLCJyZXF1aXJlZCI6dHJ1ZSwic2NhbGFyIjp7ImtpbmQiOjQsIm5hbWUiOiJtYXBPZkFyciIsInJlcXVpcmVkIjp0cnVlLCJ0eXBlIjoiSW50In0sInR5cGUiOiJbSW50XSJ9fSwibmFtZSI6Im1hcE9mQXJyIiwicmVxdWlyZWQiOnRydWUsInR5cGUiOiJNYXA8U3RyaW5nLCBbSW50XT4ifSx7ImtpbmQiOjM0LCJtYXAiOnsia2V5Ijp7ImtpbmQiOjQsIm5hbWUiOiJtYXBPZk9iaiIsInJlcXVpcmVkIjp0cnVlLCJ0eXBlIjoiU3RyaW5nIn0sImtpbmQiOjI2MjE0NiwibmFtZSI6Im1hcE9mT2JqIiwib2JqZWN0Ijp7ImtpbmQiOjgxOTIsIm5hbWUiOiJtYXBPZk9iaiIsInJlcXVpcmVkIjp0cnVlLCJ0eXBlIjoiQW5vdGhlclR5cGUifSwicmVxdWlyZWQiOnRydWUsInR5cGUiOiJNYXA8U3RyaW5nLCBBbm90aGVyVHlwZT4iLCJ2YWx1ZSI6eyJraW5kIjo4MTkyLCJuYW1lIjoibWFwT2ZPYmoiLCJyZXF1aXJlZCI6dHJ1ZSwidHlwZSI6IkFub3RoZXJUeXBlIn19LCJuYW1lIjoibWFwT2ZPYmoiLCJyZXF1aXJlZCI6dHJ1ZSwidHlwZSI6Ik1hcDxTdHJpbmcsIEFub3RoZXJUeXBlPiJ9LHsia2luZCI6MzQsIm1hcCI6eyJhcnJheSI6eyJpdGVtIjp7ImtpbmQiOjgxOTIsIm5hbWUiOiJtYXBPZkFyck9mT2JqIiwicmVxdWlyZWQiOnRydWUsInR5cGUiOiJBbm90aGVyVHlwZSJ9LCJraW5kIjoxOCwibmFtZSI6Im1hcE9mQXJyT2ZPYmoiLCJvYmplY3QiOnsia2luZCI6ODE5MiwibmFtZSI6Im1hcE9mQXJyT2ZPYmoiLCJyZXF1aXJlZCI6dHJ1ZSwidHlwZSI6IkFub3RoZXJUeXBlIn0sInJlcXVpcmVkIjp0cnVlLCJ0eXBlIjoiW0Fub3RoZXJUeXBlXSJ9LCJrZXkiOnsia2luZCI6NCwibmFtZSI6Im1hcE9mQXJyT2ZPYmoiLCJyZXF1aXJlZCI6dHJ1ZSwidHlwZSI6IlN0cmluZyJ9LCJraW5kIjoyNjIxNDYsIm5hbWUiOiJtYXBPZkFyck9mT2JqIiwicmVxdWlyZWQiOnRydWUsInR5cGUiOiJNYXA8U3RyaW5nLCBbQW5vdGhlclR5cGVdPiIsInZhbHVlIjp7Iml0ZW0iOnsia2luZCI6ODE5MiwibmFtZSI6Im1hcE9mQXJyT2ZPYmoiLCJyZXF1aXJlZCI6dHJ1ZSwidHlwZSI6IkFub3RoZXJUeXBlIn0sImtpbmQiOjE4LCJuYW1lIjoibWFwT2ZBcnJPZk9iaiIsIm9iamVjdCI6eyJraW5kIjo4MTkyLCJuYW1lIjoibWFwT2ZBcnJPZk9iaiIsInJlcXVpcmVkIjp0cnVlLCJ0eXBlIjoiQW5vdGhlclR5cGUifSwicmVxdWlyZWQiOnRydWUsInR5cGUiOiJbQW5vdGhlclR5cGVdIn19LCJuYW1lIjoibWFwT2ZBcnJPZk9iaiIsInJlcXVpcmVkIjp0cnVlLCJ0eXBlIjoiTWFwPFN0cmluZywgW0Fub3RoZXJUeXBlXT4ifSx7ImtpbmQiOjM0LCJtYXAiOnsia2V5Ijp7ImtpbmQiOjQsIm5hbWUiOiJtYXBDdXN0b21WYWx1ZSIsInJlcXVpcmVkIjp0cnVlLCJ0eXBlIjoiU3RyaW5nIn0sImtpbmQiOjI2MjE0NiwibmFtZSI6Im1hcEN1c3RvbVZhbHVlIiwib2JqZWN0Ijp7ImtpbmQiOjgxOTIsIm5hbWUiOiJtYXBDdXN0b21WYWx1ZSIsInR5cGUiOiJDdXN0b21NYXBWYWx1ZSJ9LCJyZXF1aXJlZCI6dHJ1ZSwidHlwZSI6Ik1hcDxTdHJpbmcsIEN1c3RvbU1hcFZhbHVlPiIsInZhbHVlIjp7ImtpbmQiOjgxOTIsIm5hbWUiOiJtYXBDdXN0b21WYWx1ZSIsInR5cGUiOiJDdXN0b21NYXBWYWx1ZSJ9fSwibmFtZSI6Im1hcEN1c3RvbVZhbHVlIiwicmVxdWlyZWQiOnRydWUsInR5cGUiOiJNYXA8U3RyaW5nLCBDdXN0b21NYXBWYWx1ZT4ifV0sInR5cGUiOiJDdXN0b21UeXBlIn0seyJraW5kIjoxLCJwcm9wZXJ0aWVzIjpbeyJraW5kIjozNCwibmFtZSI6InByb3AiLCJzY2FsYXIiOnsia2luZCI6NCwibmFtZSI6InByb3AiLCJ0eXBlIjoiU3RyaW5nIn0sInR5cGUiOiJTdHJpbmcifSx7ImtpbmQiOjM0LCJuYW1lIjoiY2lyY3VsYXIiLCJvYmplY3QiOnsia2luZCI6ODE5MiwibmFtZSI6ImNpcmN1bGFyIiwidHlwZSI6IkN1c3RvbVR5cGUifSwidHlwZSI6IkN1c3RvbVR5cGUifSx7ImtpbmQiOjM0LCJuYW1lIjoiY29uc3QiLCJzY2FsYXIiOnsia2luZCI6NCwibmFtZSI6ImNvbnN0IiwidHlwZSI6IlN0cmluZyJ9LCJ0eXBlIjoiU3RyaW5nIn1dLCJ0eXBlIjoiQW5vdGhlclR5cGUifSx7ImtpbmQiOjEsInByb3BlcnRpZXMiOlt7ImtpbmQiOjM0LCJuYW1lIjoiZm9vIiwicmVxdWlyZWQiOnRydWUsInNjYWxhciI6eyJraW5kIjo0LCJuYW1lIjoiZm9vIiwicmVxdWlyZWQiOnRydWUsInR5cGUiOiJTdHJpbmcifSwidHlwZSI6IlN0cmluZyJ9XSwidHlwZSI6IkN1c3RvbU1hcFZhbHVlIn0seyJraW5kIjoxLCJwcm9wZXJ0aWVzIjpbeyJraW5kIjozNCwibmFtZSI6ImVsc2UiLCJyZXF1aXJlZCI6dHJ1ZSwic2NhbGFyIjp7ImtpbmQiOjQsIm5hbWUiOiJlbHNlIiwicmVxdWlyZWQiOnRydWUsInR5cGUiOiJTdHJpbmcifSwidHlwZSI6IlN0cmluZyJ9XSwidHlwZSI6ImVsc2UifV0sInZlcnNpb24iOiIwLjEifQ==").decode("utf-8")) +abi = json.loads(""" +{ + "enumTypes": [ + { + "constants": [ + "STRING", + "BYTES" + ], + "kind": 8, + "type": "CustomEnum" + }, + { + "constants": [ + "for", + "in" + ], + "kind": 8, + "type": "while" + } + ], + "envType": { + "kind": 65536, + "properties": [ + { + "kind": 34, + "name": "prop", + "required": true, + "scalar": { + "kind": 4, + "name": "prop", + "required": true, + "type": "String" + }, + "type": "String" + }, + { + "kind": 34, + "name": "optProp", + "scalar": { + "kind": 4, + "name": "optProp", + "type": "String" + }, + "type": "String" + }, + { + "kind": 34, + "map": { + "key": { + "kind": 4, + "name": "optMap", + "required": true, + "type": "String" + }, + "kind": 262146, + "name": "optMap", + "scalar": { + "kind": 4, + "name": "optMap", + "type": "Int" + }, + "type": "Map", + "value": { + "kind": 4, + "name": "optMap", + "type": "Int" + } + }, + "name": "optMap", + "type": "Map" + } + ], + "type": "Env" + }, + "importedEnumTypes": [ + { + "constants": [ + "STRING", + "BYTES" + ], + "kind": 520, + "namespace": "TestImport", + "nativeType": "Enum", + "type": "TestImport_Enum", + "uri": "testimport.uri.eth" + }, + { + "constants": [ + "STRING", + "BYTES" + ], + "kind": 520, + "namespace": "TestImport", + "nativeType": "Enum", + "type": "TestImport_Enum_Return", + "uri": "testimport.uri.eth" + } + ], + "importedEnvTypes": [ + { + "kind": 524288, + "namespace": "TestImport", + "nativeType": "Env", + "properties": [ + { + "kind": 34, + "name": "object", + "object": { + "kind": 8192, + "name": "object", + "required": true, + "type": "TestImport_AnotherObject" + }, + "required": true, + "type": "TestImport_AnotherObject" + }, + { + "kind": 34, + "name": "optObject", + "object": { + "kind": 8192, + "name": "optObject", + "type": "TestImport_AnotherObject" + }, + "type": "TestImport_AnotherObject" + }, + { + "array": { + "item": { + "kind": 8192, + "name": "objectArray", + "required": true, + "type": "TestImport_AnotherObject" + }, + "kind": 18, + "name": "objectArray", + "object": { + "kind": 8192, + "name": "objectArray", + "required": true, + "type": "TestImport_AnotherObject" + }, + "required": true, + "type": "[TestImport_AnotherObject]" + }, + "kind": 34, + "name": "objectArray", + "required": true, + "type": "[TestImport_AnotherObject]" + }, + { + "array": { + "item": { + "kind": 8192, + "name": "optObjectArray", + "type": "TestImport_AnotherObject" + }, + "kind": 18, + "name": "optObjectArray", + "object": { + "kind": 8192, + "name": "optObjectArray", + "type": "TestImport_AnotherObject" + }, + "type": "[TestImport_AnotherObject]" + }, + "kind": 34, + "name": "optObjectArray", + "type": "[TestImport_AnotherObject]" + }, + { + "enum": { + "kind": 16384, + "name": "en", + "required": true, + "type": "TestImport_Enum" + }, + "kind": 34, + "name": "en", + "required": true, + "type": "TestImport_Enum" + }, + { + "enum": { + "kind": 16384, + "name": "optEnum", + "type": "TestImport_Enum" + }, + "kind": 34, + "name": "optEnum", + "type": "TestImport_Enum" + }, + { + "array": { + "enum": { + "kind": 16384, + "name": "enumArray", + "required": true, + "type": "TestImport_Enum" + }, + "item": { + "kind": 16384, + "name": "enumArray", + "required": true, + "type": "TestImport_Enum" + }, + "kind": 18, + "name": "enumArray", + "required": true, + "type": "[TestImport_Enum]" + }, + "kind": 34, + "name": "enumArray", + "required": true, + "type": "[TestImport_Enum]" + }, + { + "array": { + "enum": { + "kind": 16384, + "name": "optEnumArray", + "type": "TestImport_Enum" + }, + "item": { + "kind": 16384, + "name": "optEnumArray", + "type": "TestImport_Enum" + }, + "kind": 18, + "name": "optEnumArray", + "type": "[TestImport_Enum]" + }, + "kind": 34, + "name": "optEnumArray", + "type": "[TestImport_Enum]" + } + ], + "type": "TestImport_Env", + "uri": "testimport.uri.eth" + } + ], + "importedModuleTypes": [ + { + "isInterface": true, + "kind": 256, + "methods": [ + { + "arguments": [ + { + "kind": 34, + "name": "str", + "required": true, + "scalar": { + "kind": 4, + "name": "str", + "required": true, + "type": "String" + }, + "type": "String" + }, + { + "kind": 34, + "name": "optStr", + "scalar": { + "kind": 4, + "name": "optStr", + "type": "String" + }, + "type": "String" + }, + { + "kind": 34, + "name": "u", + "required": true, + "scalar": { + "kind": 4, + "name": "u", + "required": true, + "type": "UInt" + }, + "type": "UInt" + }, + { + "kind": 34, + "name": "optU", + "scalar": { + "kind": 4, + "name": "optU", + "type": "UInt" + }, + "type": "UInt" + }, + { + "array": { + "array": { + "item": { + "kind": 4, + "name": "uArrayArray", + "type": "UInt" + }, + "kind": 18, + "name": "uArrayArray", + "scalar": { + "kind": 4, + "name": "uArrayArray", + "type": "UInt" + }, + "type": "[UInt]" + }, + "item": { + "item": { + "kind": 4, + "name": "uArrayArray", + "type": "UInt" + }, + "kind": 18, + "name": "uArrayArray", + "scalar": { + "kind": 4, + "name": "uArrayArray", + "type": "UInt" + }, + "type": "[UInt]" + }, + "kind": 18, + "name": "uArrayArray", + "required": true, + "type": "[[UInt]]" + }, + "kind": 34, + "name": "uArrayArray", + "required": true, + "type": "[[UInt]]" + }, + { + "kind": 34, + "name": "object", + "object": { + "kind": 8192, + "name": "object", + "required": true, + "type": "TestImport_Object" + }, + "required": true, + "type": "TestImport_Object" + }, + { + "kind": 34, + "name": "optObject", + "object": { + "kind": 8192, + "name": "optObject", + "type": "TestImport_Object" + }, + "type": "TestImport_Object" + }, + { + "array": { + "item": { + "kind": 8192, + "name": "objectArray", + "required": true, + "type": "TestImport_Object" + }, + "kind": 18, + "name": "objectArray", + "object": { + "kind": 8192, + "name": "objectArray", + "required": true, + "type": "TestImport_Object" + }, + "required": true, + "type": "[TestImport_Object]" + }, + "kind": 34, + "name": "objectArray", + "required": true, + "type": "[TestImport_Object]" + }, + { + "array": { + "item": { + "kind": 8192, + "name": "optObjectArray", + "type": "TestImport_Object" + }, + "kind": 18, + "name": "optObjectArray", + "object": { + "kind": 8192, + "name": "optObjectArray", + "type": "TestImport_Object" + }, + "type": "[TestImport_Object]" + }, + "kind": 34, + "name": "optObjectArray", + "type": "[TestImport_Object]" + }, + { + "enum": { + "kind": 16384, + "name": "en", + "required": true, + "type": "TestImport_Enum" + }, + "kind": 34, + "name": "en", + "required": true, + "type": "TestImport_Enum" + }, + { + "enum": { + "kind": 16384, + "name": "optEnum", + "type": "TestImport_Enum" + }, + "kind": 34, + "name": "optEnum", + "type": "TestImport_Enum" + }, + { + "array": { + "enum": { + "kind": 16384, + "name": "enumArray", + "required": true, + "type": "TestImport_Enum" + }, + "item": { + "kind": 16384, + "name": "enumArray", + "required": true, + "type": "TestImport_Enum" + }, + "kind": 18, + "name": "enumArray", + "required": true, + "type": "[TestImport_Enum]" + }, + "kind": 34, + "name": "enumArray", + "required": true, + "type": "[TestImport_Enum]" + }, + { + "array": { + "enum": { + "kind": 16384, + "name": "optEnumArray", + "type": "TestImport_Enum" + }, + "item": { + "kind": 16384, + "name": "optEnumArray", + "type": "TestImport_Enum" + }, + "kind": 18, + "name": "optEnumArray", + "type": "[TestImport_Enum]" + }, + "kind": 34, + "name": "optEnumArray", + "type": "[TestImport_Enum]" + } + ], + "env": { + "required": true + }, + "kind": 64, + "name": "importedMethod", + "required": true, + "return": { + "kind": 34, + "name": "importedMethod", + "object": { + "kind": 8192, + "name": "importedMethod", + "type": "TestImport_Object" + }, + "type": "TestImport_Object" + }, + "type": "Method" + }, + { + "arguments": [ + { + "array": { + "item": { + "kind": 4, + "name": "arg", + "required": true, + "type": "String" + }, + "kind": 18, + "name": "arg", + "required": true, + "scalar": { + "kind": 4, + "name": "arg", + "required": true, + "type": "String" + }, + "type": "[String]" + }, + "kind": 34, + "name": "arg", + "required": true, + "type": "[String]" + } + ], + "kind": 64, + "name": "anotherMethod", + "required": true, + "return": { + "kind": 34, + "name": "anotherMethod", + "required": true, + "scalar": { + "kind": 4, + "name": "anotherMethod", + "required": true, + "type": "Int32" + }, + "type": "Int32" + }, + "type": "Method" + }, + { + "arguments": [ + { + "kind": 34, + "name": "arg", + "required": true, + "scalar": { + "kind": 4, + "name": "arg", + "required": true, + "type": "String" + }, + "type": "String" + } + ], + "kind": 64, + "name": "returnsArrayOfEnums", + "required": true, + "return": { + "array": { + "enum": { + "kind": 16384, + "name": "returnsArrayOfEnums", + "type": "TestImport_Enum_Return" + }, + "item": { + "kind": 16384, + "name": "returnsArrayOfEnums", + "type": "TestImport_Enum_Return" + }, + "kind": 18, + "name": "returnsArrayOfEnums", + "required": true, + "type": "[TestImport_Enum_Return]" + }, + "kind": 34, + "name": "returnsArrayOfEnums", + "required": true, + "type": "[TestImport_Enum_Return]" + }, + "type": "Method" + } + ], + "namespace": "TestImport", + "nativeType": "Module", + "type": "TestImport_Module", + "uri": "testimport.uri.eth" + } + ], + "importedObjectTypes": [ + { + "kind": 1025, + "namespace": "TestImport", + "nativeType": "Object", + "properties": [ + { + "kind": 34, + "name": "object", + "object": { + "kind": 8192, + "name": "object", + "required": true, + "type": "TestImport_AnotherObject" + }, + "required": true, + "type": "TestImport_AnotherObject" + }, + { + "kind": 34, + "name": "optObject", + "object": { + "kind": 8192, + "name": "optObject", + "type": "TestImport_AnotherObject" + }, + "type": "TestImport_AnotherObject" + }, + { + "array": { + "item": { + "kind": 8192, + "name": "objectArray", + "required": true, + "type": "TestImport_AnotherObject" + }, + "kind": 18, + "name": "objectArray", + "object": { + "kind": 8192, + "name": "objectArray", + "required": true, + "type": "TestImport_AnotherObject" + }, + "required": true, + "type": "[TestImport_AnotherObject]" + }, + "kind": 34, + "name": "objectArray", + "required": true, + "type": "[TestImport_AnotherObject]" + }, + { + "array": { + "item": { + "kind": 8192, + "name": "optObjectArray", + "type": "TestImport_AnotherObject" + }, + "kind": 18, + "name": "optObjectArray", + "object": { + "kind": 8192, + "name": "optObjectArray", + "type": "TestImport_AnotherObject" + }, + "type": "[TestImport_AnotherObject]" + }, + "kind": 34, + "name": "optObjectArray", + "type": "[TestImport_AnotherObject]" + }, + { + "enum": { + "kind": 16384, + "name": "en", + "required": true, + "type": "TestImport_Enum" + }, + "kind": 34, + "name": "en", + "required": true, + "type": "TestImport_Enum" + }, + { + "enum": { + "kind": 16384, + "name": "optEnum", + "type": "TestImport_Enum" + }, + "kind": 34, + "name": "optEnum", + "type": "TestImport_Enum" + }, + { + "array": { + "enum": { + "kind": 16384, + "name": "enumArray", + "required": true, + "type": "TestImport_Enum" + }, + "item": { + "kind": 16384, + "name": "enumArray", + "required": true, + "type": "TestImport_Enum" + }, + "kind": 18, + "name": "enumArray", + "required": true, + "type": "[TestImport_Enum]" + }, + "kind": 34, + "name": "enumArray", + "required": true, + "type": "[TestImport_Enum]" + }, + { + "array": { + "enum": { + "kind": 16384, + "name": "optEnumArray", + "type": "TestImport_Enum" + }, + "item": { + "kind": 16384, + "name": "optEnumArray", + "type": "TestImport_Enum" + }, + "kind": 18, + "name": "optEnumArray", + "type": "[TestImport_Enum]" + }, + "kind": 34, + "name": "optEnumArray", + "type": "[TestImport_Enum]" + } + ], + "type": "TestImport_Object", + "uri": "testimport.uri.eth" + }, + { + "kind": 1025, + "namespace": "TestImport", + "nativeType": "AnotherObject", + "properties": [ + { + "kind": 34, + "name": "prop", + "required": true, + "scalar": { + "kind": 4, + "name": "prop", + "required": true, + "type": "String" + }, + "type": "String" + } + ], + "type": "TestImport_AnotherObject", + "uri": "testimport.uri.eth" + } + ], + "interfaceTypes": [ + { + "capabilities": { + "getImplementations": { + "enabled": true + } + }, + "kind": 32768, + "namespace": "TestImport", + "nativeType": "Interface", + "type": "TestImport", + "uri": "testimport.uri.eth" + } + ], + "moduleType": { + "imports": [ + { + "type": "TestImport_Module" + }, + { + "type": "TestImport_Object" + }, + { + "type": "TestImport_AnotherObject" + }, + { + "type": "TestImport_Enum" + }, + { + "type": "TestImport_Enum_Return" + } + ], + "kind": 128, + "methods": [ + { + "arguments": [ + { + "kind": 34, + "name": "str", + "required": true, + "scalar": { + "kind": 4, + "name": "str", + "required": true, + "type": "String" + }, + "type": "String" + }, + { + "kind": 34, + "name": "optStr", + "scalar": { + "kind": 4, + "name": "optStr", + "type": "String" + }, + "type": "String" + }, + { + "enum": { + "kind": 16384, + "name": "en", + "required": true, + "type": "CustomEnum" + }, + "kind": 34, + "name": "en", + "required": true, + "type": "CustomEnum" + }, + { + "enum": { + "kind": 16384, + "name": "optEnum", + "type": "CustomEnum" + }, + "kind": 34, + "name": "optEnum", + "type": "CustomEnum" + }, + { + "array": { + "enum": { + "kind": 16384, + "name": "enumArray", + "required": true, + "type": "CustomEnum" + }, + "item": { + "kind": 16384, + "name": "enumArray", + "required": true, + "type": "CustomEnum" + }, + "kind": 18, + "name": "enumArray", + "required": true, + "type": "[CustomEnum]" + }, + "kind": 34, + "name": "enumArray", + "required": true, + "type": "[CustomEnum]" + }, + { + "array": { + "enum": { + "kind": 16384, + "name": "optEnumArray", + "type": "CustomEnum" + }, + "item": { + "kind": 16384, + "name": "optEnumArray", + "type": "CustomEnum" + }, + "kind": 18, + "name": "optEnumArray", + "type": "[CustomEnum]" + }, + "kind": 34, + "name": "optEnumArray", + "type": "[CustomEnum]" + }, + { + "kind": 34, + "map": { + "key": { + "kind": 4, + "name": "map", + "required": true, + "type": "String" + }, + "kind": 262146, + "name": "map", + "required": true, + "scalar": { + "kind": 4, + "name": "map", + "required": true, + "type": "Int" + }, + "type": "Map", + "value": { + "kind": 4, + "name": "map", + "required": true, + "type": "Int" + } + }, + "name": "map", + "required": true, + "type": "Map" + }, + { + "kind": 34, + "map": { + "array": { + "item": { + "kind": 4, + "name": "mapOfArr", + "required": true, + "type": "Int" + }, + "kind": 18, + "name": "mapOfArr", + "required": true, + "scalar": { + "kind": 4, + "name": "mapOfArr", + "required": true, + "type": "Int" + }, + "type": "[Int]" + }, + "key": { + "kind": 4, + "name": "mapOfArr", + "required": true, + "type": "String" + }, + "kind": 262146, + "name": "mapOfArr", + "required": true, + "type": "Map", + "value": { + "item": { + "kind": 4, + "name": "mapOfArr", + "required": true, + "type": "Int" + }, + "kind": 18, + "name": "mapOfArr", + "required": true, + "scalar": { + "kind": 4, + "name": "mapOfArr", + "required": true, + "type": "Int" + }, + "type": "[Int]" + } + }, + "name": "mapOfArr", + "required": true, + "type": "Map" + }, + { + "kind": 34, + "map": { + "key": { + "kind": 4, + "name": "mapOfMap", + "required": true, + "type": "String" + }, + "kind": 262146, + "map": { + "key": { + "kind": 4, + "name": "mapOfMap", + "required": true, + "type": "String" + }, + "kind": 262146, + "name": "mapOfMap", + "required": true, + "scalar": { + "kind": 4, + "name": "mapOfMap", + "required": true, + "type": "Int" + }, + "type": "Map", + "value": { + "kind": 4, + "name": "mapOfMap", + "required": true, + "type": "Int" + } + }, + "name": "mapOfMap", + "required": true, + "type": "Map>", + "value": { + "key": { + "kind": 4, + "name": "mapOfMap", + "required": true, + "type": "String" + }, + "kind": 262146, + "name": "mapOfMap", + "required": true, + "scalar": { + "kind": 4, + "name": "mapOfMap", + "required": true, + "type": "Int" + }, + "type": "Map", + "value": { + "kind": 4, + "name": "mapOfMap", + "required": true, + "type": "Int" + } + } + }, + "name": "mapOfMap", + "required": true, + "type": "Map>" + }, + { + "kind": 34, + "map": { + "key": { + "kind": 4, + "name": "mapOfObj", + "required": true, + "type": "String" + }, + "kind": 262146, + "name": "mapOfObj", + "object": { + "kind": 8192, + "name": "mapOfObj", + "required": true, + "type": "AnotherType" + }, + "required": true, + "type": "Map", + "value": { + "kind": 8192, + "name": "mapOfObj", + "required": true, + "type": "AnotherType" + } + }, + "name": "mapOfObj", + "required": true, + "type": "Map" + }, + { + "kind": 34, + "map": { + "array": { + "item": { + "kind": 8192, + "name": "mapOfArrOfObj", + "required": true, + "type": "AnotherType" + }, + "kind": 18, + "name": "mapOfArrOfObj", + "object": { + "kind": 8192, + "name": "mapOfArrOfObj", + "required": true, + "type": "AnotherType" + }, + "required": true, + "type": "[AnotherType]" + }, + "key": { + "kind": 4, + "name": "mapOfArrOfObj", + "required": true, + "type": "String" + }, + "kind": 262146, + "name": "mapOfArrOfObj", + "required": true, + "type": "Map", + "value": { + "item": { + "kind": 8192, + "name": "mapOfArrOfObj", + "required": true, + "type": "AnotherType" + }, + "kind": 18, + "name": "mapOfArrOfObj", + "object": { + "kind": 8192, + "name": "mapOfArrOfObj", + "required": true, + "type": "AnotherType" + }, + "required": true, + "type": "[AnotherType]" + } + }, + "name": "mapOfArrOfObj", + "required": true, + "type": "Map" + } + ], + "kind": 64, + "name": "moduleMethod", + "required": true, + "return": { + "kind": 34, + "name": "moduleMethod", + "required": true, + "scalar": { + "kind": 4, + "name": "moduleMethod", + "required": true, + "type": "Int" + }, + "type": "Int" + }, + "type": "Method" + }, + { + "arguments": [ + { + "kind": 34, + "name": "object", + "object": { + "kind": 8192, + "name": "object", + "required": true, + "type": "AnotherType" + }, + "required": true, + "type": "AnotherType" + }, + { + "kind": 34, + "name": "optObject", + "object": { + "kind": 8192, + "name": "optObject", + "type": "AnotherType" + }, + "type": "AnotherType" + }, + { + "array": { + "item": { + "kind": 8192, + "name": "objectArray", + "required": true, + "type": "AnotherType" + }, + "kind": 18, + "name": "objectArray", + "object": { + "kind": 8192, + "name": "objectArray", + "required": true, + "type": "AnotherType" + }, + "required": true, + "type": "[AnotherType]" + }, + "kind": 34, + "name": "objectArray", + "required": true, + "type": "[AnotherType]" + }, + { + "array": { + "item": { + "kind": 8192, + "name": "optObjectArray", + "type": "AnotherType" + }, + "kind": 18, + "name": "optObjectArray", + "object": { + "kind": 8192, + "name": "optObjectArray", + "type": "AnotherType" + }, + "type": "[AnotherType]" + }, + "kind": 34, + "name": "optObjectArray", + "type": "[AnotherType]" + } + ], + "env": { + "required": true + }, + "kind": 64, + "name": "objectMethod", + "required": true, + "return": { + "kind": 34, + "name": "objectMethod", + "object": { + "kind": 8192, + "name": "objectMethod", + "type": "AnotherType" + }, + "type": "AnotherType" + }, + "type": "Method" + }, + { + "arguments": [ + { + "kind": 34, + "name": "object", + "object": { + "kind": 8192, + "name": "object", + "required": true, + "type": "AnotherType" + }, + "required": true, + "type": "AnotherType" + }, + { + "kind": 34, + "name": "optObject", + "object": { + "kind": 8192, + "name": "optObject", + "type": "AnotherType" + }, + "type": "AnotherType" + }, + { + "array": { + "item": { + "kind": 8192, + "name": "objectArray", + "required": true, + "type": "AnotherType" + }, + "kind": 18, + "name": "objectArray", + "object": { + "kind": 8192, + "name": "objectArray", + "required": true, + "type": "AnotherType" + }, + "required": true, + "type": "[AnotherType]" + }, + "kind": 34, + "name": "objectArray", + "required": true, + "type": "[AnotherType]" + }, + { + "array": { + "item": { + "kind": 8192, + "name": "optObjectArray", + "type": "AnotherType" + }, + "kind": 18, + "name": "optObjectArray", + "object": { + "kind": 8192, + "name": "optObjectArray", + "type": "AnotherType" + }, + "type": "[AnotherType]" + }, + "kind": 34, + "name": "optObjectArray", + "type": "[AnotherType]" + } + ], + "env": { + "required": false + }, + "kind": 64, + "name": "optionalEnvMethod", + "required": true, + "return": { + "kind": 34, + "name": "optionalEnvMethod", + "object": { + "kind": 8192, + "name": "optionalEnvMethod", + "type": "AnotherType" + }, + "type": "AnotherType" + }, + "type": "Method" + }, + { + "arguments": [ + { + "kind": 34, + "name": "if", + "object": { + "kind": 8192, + "name": "if", + "required": true, + "type": "else" + }, + "required": true, + "type": "else" + } + ], + "kind": 64, + "name": "if", + "required": true, + "return": { + "kind": 34, + "name": "if", + "object": { + "kind": 8192, + "name": "if", + "required": true, + "type": "else" + }, + "required": true, + "type": "else" + }, + "type": "Method" + } + ], + "type": "Module" + }, + "objectTypes": [ + { + "kind": 1, + "properties": [ + { + "kind": 34, + "name": "str", + "required": true, + "scalar": { + "kind": 4, + "name": "str", + "required": true, + "type": "String" + }, + "type": "String" + }, + { + "kind": 34, + "name": "optStr", + "scalar": { + "kind": 4, + "name": "optStr", + "type": "String" + }, + "type": "String" + }, + { + "kind": 34, + "name": "u", + "required": true, + "scalar": { + "kind": 4, + "name": "u", + "required": true, + "type": "UInt" + }, + "type": "UInt" + }, + { + "kind": 34, + "name": "optU", + "scalar": { + "kind": 4, + "name": "optU", + "type": "UInt" + }, + "type": "UInt" + }, + { + "kind": 34, + "name": "u8", + "required": true, + "scalar": { + "kind": 4, + "name": "u8", + "required": true, + "type": "UInt8" + }, + "type": "UInt8" + }, + { + "kind": 34, + "name": "u16", + "required": true, + "scalar": { + "kind": 4, + "name": "u16", + "required": true, + "type": "UInt16" + }, + "type": "UInt16" + }, + { + "kind": 34, + "name": "u32", + "required": true, + "scalar": { + "kind": 4, + "name": "u32", + "required": true, + "type": "UInt32" + }, + "type": "UInt32" + }, + { + "kind": 34, + "name": "i", + "required": true, + "scalar": { + "kind": 4, + "name": "i", + "required": true, + "type": "Int" + }, + "type": "Int" + }, + { + "kind": 34, + "name": "i8", + "required": true, + "scalar": { + "kind": 4, + "name": "i8", + "required": true, + "type": "Int8" + }, + "type": "Int8" + }, + { + "kind": 34, + "name": "i16", + "required": true, + "scalar": { + "kind": 4, + "name": "i16", + "required": true, + "type": "Int16" + }, + "type": "Int16" + }, + { + "kind": 34, + "name": "i32", + "required": true, + "scalar": { + "kind": 4, + "name": "i32", + "required": true, + "type": "Int32" + }, + "type": "Int32" + }, + { + "kind": 34, + "name": "bigint", + "required": true, + "scalar": { + "kind": 4, + "name": "bigint", + "required": true, + "type": "BigInt" + }, + "type": "BigInt" + }, + { + "kind": 34, + "name": "optBigint", + "scalar": { + "kind": 4, + "name": "optBigint", + "type": "BigInt" + }, + "type": "BigInt" + }, + { + "kind": 34, + "name": "bignumber", + "required": true, + "scalar": { + "kind": 4, + "name": "bignumber", + "required": true, + "type": "BigNumber" + }, + "type": "BigNumber" + }, + { + "kind": 34, + "name": "optBignumber", + "scalar": { + "kind": 4, + "name": "optBignumber", + "type": "BigNumber" + }, + "type": "BigNumber" + }, + { + "kind": 34, + "name": "json", + "required": true, + "scalar": { + "kind": 4, + "name": "json", + "required": true, + "type": "JSON" + }, + "type": "JSON" + }, + { + "kind": 34, + "name": "optJson", + "scalar": { + "kind": 4, + "name": "optJson", + "type": "JSON" + }, + "type": "JSON" + }, + { + "kind": 34, + "name": "bytes", + "required": true, + "scalar": { + "kind": 4, + "name": "bytes", + "required": true, + "type": "Bytes" + }, + "type": "Bytes" + }, + { + "kind": 34, + "name": "optBytes", + "scalar": { + "kind": 4, + "name": "optBytes", + "type": "Bytes" + }, + "type": "Bytes" + }, + { + "kind": 34, + "name": "boolean", + "required": true, + "scalar": { + "kind": 4, + "name": "boolean", + "required": true, + "type": "Boolean" + }, + "type": "Boolean" + }, + { + "kind": 34, + "name": "optBoolean", + "scalar": { + "kind": 4, + "name": "optBoolean", + "type": "Boolean" + }, + "type": "Boolean" + }, + { + "array": { + "item": { + "kind": 4, + "name": "u_array", + "required": true, + "type": "UInt" + }, + "kind": 18, + "name": "u_array", + "required": true, + "scalar": { + "kind": 4, + "name": "u_array", + "required": true, + "type": "UInt" + }, + "type": "[UInt]" + }, + "kind": 34, + "name": "u_array", + "required": true, + "type": "[UInt]" + }, + { + "array": { + "item": { + "kind": 4, + "name": "uOpt_array", + "required": true, + "type": "UInt" + }, + "kind": 18, + "name": "uOpt_array", + "scalar": { + "kind": 4, + "name": "uOpt_array", + "required": true, + "type": "UInt" + }, + "type": "[UInt]" + }, + "kind": 34, + "name": "uOpt_array", + "type": "[UInt]" + }, + { + "array": { + "item": { + "kind": 4, + "name": "_opt_uOptArray", + "type": "UInt" + }, + "kind": 18, + "name": "_opt_uOptArray", + "scalar": { + "kind": 4, + "name": "_opt_uOptArray", + "type": "UInt" + }, + "type": "[UInt]" + }, + "kind": 34, + "name": "_opt_uOptArray", + "type": "[UInt]" + }, + { + "array": { + "item": { + "kind": 4, + "name": "optStrOptArray", + "type": "String" + }, + "kind": 18, + "name": "optStrOptArray", + "scalar": { + "kind": 4, + "name": "optStrOptArray", + "type": "String" + }, + "type": "[String]" + }, + "kind": 34, + "name": "optStrOptArray", + "type": "[String]" + }, + { + "array": { + "array": { + "item": { + "kind": 4, + "name": "uArrayArray", + "required": true, + "type": "UInt" + }, + "kind": 18, + "name": "uArrayArray", + "required": true, + "scalar": { + "kind": 4, + "name": "uArrayArray", + "required": true, + "type": "UInt" + }, + "type": "[UInt]" + }, + "item": { + "item": { + "kind": 4, + "name": "uArrayArray", + "required": true, + "type": "UInt" + }, + "kind": 18, + "name": "uArrayArray", + "required": true, + "scalar": { + "kind": 4, + "name": "uArrayArray", + "required": true, + "type": "UInt" + }, + "type": "[UInt]" + }, + "kind": 18, + "name": "uArrayArray", + "required": true, + "type": "[[UInt]]" + }, + "kind": 34, + "name": "uArrayArray", + "required": true, + "type": "[[UInt]]" + }, + { + "array": { + "array": { + "item": { + "kind": 4, + "name": "uOptArrayOptArray", + "type": "UInt32" + }, + "kind": 18, + "name": "uOptArrayOptArray", + "scalar": { + "kind": 4, + "name": "uOptArrayOptArray", + "type": "UInt32" + }, + "type": "[UInt32]" + }, + "item": { + "item": { + "kind": 4, + "name": "uOptArrayOptArray", + "type": "UInt32" + }, + "kind": 18, + "name": "uOptArrayOptArray", + "scalar": { + "kind": 4, + "name": "uOptArrayOptArray", + "type": "UInt32" + }, + "type": "[UInt32]" + }, + "kind": 18, + "name": "uOptArrayOptArray", + "required": true, + "type": "[[UInt32]]" + }, + "kind": 34, + "name": "uOptArrayOptArray", + "required": true, + "type": "[[UInt32]]" + }, + { + "array": { + "array": { + "array": { + "item": { + "kind": 4, + "name": "uArrayOptArrayArray", + "required": true, + "type": "UInt32" + }, + "kind": 18, + "name": "uArrayOptArrayArray", + "required": true, + "scalar": { + "kind": 4, + "name": "uArrayOptArrayArray", + "required": true, + "type": "UInt32" + }, + "type": "[UInt32]" + }, + "item": { + "item": { + "kind": 4, + "name": "uArrayOptArrayArray", + "required": true, + "type": "UInt32" + }, + "kind": 18, + "name": "uArrayOptArrayArray", + "required": true, + "scalar": { + "kind": 4, + "name": "uArrayOptArrayArray", + "required": true, + "type": "UInt32" + }, + "type": "[UInt32]" + }, + "kind": 18, + "name": "uArrayOptArrayArray", + "type": "[[UInt32]]" + }, + "item": { + "array": { + "item": { + "kind": 4, + "name": "uArrayOptArrayArray", + "required": true, + "type": "UInt32" + }, + "kind": 18, + "name": "uArrayOptArrayArray", + "required": true, + "scalar": { + "kind": 4, + "name": "uArrayOptArrayArray", + "required": true, + "type": "UInt32" + }, + "type": "[UInt32]" + }, + "item": { + "item": { + "kind": 4, + "name": "uArrayOptArrayArray", + "required": true, + "type": "UInt32" + }, + "kind": 18, + "name": "uArrayOptArrayArray", + "required": true, + "scalar": { + "kind": 4, + "name": "uArrayOptArrayArray", + "required": true, + "type": "UInt32" + }, + "type": "[UInt32]" + }, + "kind": 18, + "name": "uArrayOptArrayArray", + "type": "[[UInt32]]" + }, + "kind": 18, + "name": "uArrayOptArrayArray", + "required": true, + "type": "[[[UInt32]]]" + }, + "kind": 34, + "name": "uArrayOptArrayArray", + "required": true, + "type": "[[[UInt32]]]" + }, + { + "array": { + "array": { + "array": { + "array": { + "item": { + "kind": 4, + "name": "crazyArray", + "required": true, + "type": "UInt32" + }, + "kind": 18, + "name": "crazyArray", + "scalar": { + "kind": 4, + "name": "crazyArray", + "required": true, + "type": "UInt32" + }, + "type": "[UInt32]" + }, + "item": { + "item": { + "kind": 4, + "name": "crazyArray", + "required": true, + "type": "UInt32" + }, + "kind": 18, + "name": "crazyArray", + "scalar": { + "kind": 4, + "name": "crazyArray", + "required": true, + "type": "UInt32" + }, + "type": "[UInt32]" + }, + "kind": 18, + "name": "crazyArray", + "required": true, + "type": "[[UInt32]]" + }, + "item": { + "array": { + "item": { + "kind": 4, + "name": "crazyArray", + "required": true, + "type": "UInt32" + }, + "kind": 18, + "name": "crazyArray", + "scalar": { + "kind": 4, + "name": "crazyArray", + "required": true, + "type": "UInt32" + }, + "type": "[UInt32]" + }, + "item": { + "item": { + "kind": 4, + "name": "crazyArray", + "required": true, + "type": "UInt32" + }, + "kind": 18, + "name": "crazyArray", + "scalar": { + "kind": 4, + "name": "crazyArray", + "required": true, + "type": "UInt32" + }, + "type": "[UInt32]" + }, + "kind": 18, + "name": "crazyArray", + "required": true, + "type": "[[UInt32]]" + }, + "kind": 18, + "name": "crazyArray", + "type": "[[[UInt32]]]" + }, + "item": { + "array": { + "array": { + "item": { + "kind": 4, + "name": "crazyArray", + "required": true, + "type": "UInt32" + }, + "kind": 18, + "name": "crazyArray", + "scalar": { + "kind": 4, + "name": "crazyArray", + "required": true, + "type": "UInt32" + }, + "type": "[UInt32]" + }, + "item": { + "item": { + "kind": 4, + "name": "crazyArray", + "required": true, + "type": "UInt32" + }, + "kind": 18, + "name": "crazyArray", + "scalar": { + "kind": 4, + "name": "crazyArray", + "required": true, + "type": "UInt32" + }, + "type": "[UInt32]" + }, + "kind": 18, + "name": "crazyArray", + "required": true, + "type": "[[UInt32]]" + }, + "item": { + "array": { + "item": { + "kind": 4, + "name": "crazyArray", + "required": true, + "type": "UInt32" + }, + "kind": 18, + "name": "crazyArray", + "scalar": { + "kind": 4, + "name": "crazyArray", + "required": true, + "type": "UInt32" + }, + "type": "[UInt32]" + }, + "item": { + "item": { + "kind": 4, + "name": "crazyArray", + "required": true, + "type": "UInt32" + }, + "kind": 18, + "name": "crazyArray", + "scalar": { + "kind": 4, + "name": "crazyArray", + "required": true, + "type": "UInt32" + }, + "type": "[UInt32]" + }, + "kind": 18, + "name": "crazyArray", + "required": true, + "type": "[[UInt32]]" + }, + "kind": 18, + "name": "crazyArray", + "type": "[[[UInt32]]]" + }, + "kind": 18, + "name": "crazyArray", + "type": "[[[[UInt32]]]]" + }, + "kind": 34, + "name": "crazyArray", + "type": "[[[[UInt32]]]]" + }, + { + "kind": 34, + "name": "object", + "object": { + "kind": 8192, + "name": "object", + "required": true, + "type": "AnotherType" + }, + "required": true, + "type": "AnotherType" + }, + { + "kind": 34, + "name": "optObject", + "object": { + "kind": 8192, + "name": "optObject", + "type": "AnotherType" + }, + "type": "AnotherType" + }, + { + "array": { + "item": { + "kind": 8192, + "name": "objectArray", + "required": true, + "type": "AnotherType" + }, + "kind": 18, + "name": "objectArray", + "object": { + "kind": 8192, + "name": "objectArray", + "required": true, + "type": "AnotherType" + }, + "required": true, + "type": "[AnotherType]" + }, + "kind": 34, + "name": "objectArray", + "required": true, + "type": "[AnotherType]" + }, + { + "array": { + "item": { + "kind": 8192, + "name": "optObjectArray", + "type": "AnotherType" + }, + "kind": 18, + "name": "optObjectArray", + "object": { + "kind": 8192, + "name": "optObjectArray", + "type": "AnotherType" + }, + "type": "[AnotherType]" + }, + "kind": 34, + "name": "optObjectArray", + "type": "[AnotherType]" + }, + { + "enum": { + "kind": 16384, + "name": "en", + "required": true, + "type": "CustomEnum" + }, + "kind": 34, + "name": "en", + "required": true, + "type": "CustomEnum" + }, + { + "enum": { + "kind": 16384, + "name": "optEnum", + "type": "CustomEnum" + }, + "kind": 34, + "name": "optEnum", + "type": "CustomEnum" + }, + { + "array": { + "enum": { + "kind": 16384, + "name": "enumArray", + "required": true, + "type": "CustomEnum" + }, + "item": { + "kind": 16384, + "name": "enumArray", + "required": true, + "type": "CustomEnum" + }, + "kind": 18, + "name": "enumArray", + "required": true, + "type": "[CustomEnum]" + }, + "kind": 34, + "name": "enumArray", + "required": true, + "type": "[CustomEnum]" + }, + { + "array": { + "enum": { + "kind": 16384, + "name": "optEnumArray", + "type": "CustomEnum" + }, + "item": { + "kind": 16384, + "name": "optEnumArray", + "type": "CustomEnum" + }, + "kind": 18, + "name": "optEnumArray", + "type": "[CustomEnum]" + }, + "kind": 34, + "name": "optEnumArray", + "type": "[CustomEnum]" + }, + { + "kind": 34, + "map": { + "key": { + "kind": 4, + "name": "map", + "required": true, + "type": "String" + }, + "kind": 262146, + "name": "map", + "required": true, + "scalar": { + "kind": 4, + "name": "map", + "required": true, + "type": "Int" + }, + "type": "Map", + "value": { + "kind": 4, + "name": "map", + "required": true, + "type": "Int" + } + }, + "name": "map", + "required": true, + "type": "Map" + }, + { + "kind": 34, + "map": { + "array": { + "item": { + "kind": 4, + "name": "mapOfArr", + "required": true, + "type": "Int" + }, + "kind": 18, + "name": "mapOfArr", + "required": true, + "scalar": { + "kind": 4, + "name": "mapOfArr", + "required": true, + "type": "Int" + }, + "type": "[Int]" + }, + "key": { + "kind": 4, + "name": "mapOfArr", + "required": true, + "type": "String" + }, + "kind": 262146, + "name": "mapOfArr", + "required": true, + "type": "Map", + "value": { + "item": { + "kind": 4, + "name": "mapOfArr", + "required": true, + "type": "Int" + }, + "kind": 18, + "name": "mapOfArr", + "required": true, + "scalar": { + "kind": 4, + "name": "mapOfArr", + "required": true, + "type": "Int" + }, + "type": "[Int]" + } + }, + "name": "mapOfArr", + "required": true, + "type": "Map" + }, + { + "kind": 34, + "map": { + "key": { + "kind": 4, + "name": "mapOfObj", + "required": true, + "type": "String" + }, + "kind": 262146, + "name": "mapOfObj", + "object": { + "kind": 8192, + "name": "mapOfObj", + "required": true, + "type": "AnotherType" + }, + "required": true, + "type": "Map", + "value": { + "kind": 8192, + "name": "mapOfObj", + "required": true, + "type": "AnotherType" + } + }, + "name": "mapOfObj", + "required": true, + "type": "Map" + }, + { + "kind": 34, + "map": { + "array": { + "item": { + "kind": 8192, + "name": "mapOfArrOfObj", + "required": true, + "type": "AnotherType" + }, + "kind": 18, + "name": "mapOfArrOfObj", + "object": { + "kind": 8192, + "name": "mapOfArrOfObj", + "required": true, + "type": "AnotherType" + }, + "required": true, + "type": "[AnotherType]" + }, + "key": { + "kind": 4, + "name": "mapOfArrOfObj", + "required": true, + "type": "String" + }, + "kind": 262146, + "name": "mapOfArrOfObj", + "required": true, + "type": "Map", + "value": { + "item": { + "kind": 8192, + "name": "mapOfArrOfObj", + "required": true, + "type": "AnotherType" + }, + "kind": 18, + "name": "mapOfArrOfObj", + "object": { + "kind": 8192, + "name": "mapOfArrOfObj", + "required": true, + "type": "AnotherType" + }, + "required": true, + "type": "[AnotherType]" + } + }, + "name": "mapOfArrOfObj", + "required": true, + "type": "Map" + }, + { + "kind": 34, + "map": { + "key": { + "kind": 4, + "name": "mapCustomValue", + "required": true, + "type": "String" + }, + "kind": 262146, + "name": "mapCustomValue", + "object": { + "kind": 8192, + "name": "mapCustomValue", + "type": "CustomMapValue" + }, + "required": true, + "type": "Map", + "value": { + "kind": 8192, + "name": "mapCustomValue", + "type": "CustomMapValue" + } + }, + "name": "mapCustomValue", + "required": true, + "type": "Map" + } + ], + "type": "CustomType" + }, + { + "kind": 1, + "properties": [ + { + "kind": 34, + "name": "prop", + "scalar": { + "kind": 4, + "name": "prop", + "type": "String" + }, + "type": "String" + }, + { + "kind": 34, + "name": "circular", + "object": { + "kind": 8192, + "name": "circular", + "type": "CustomType" + }, + "type": "CustomType" + }, + { + "kind": 34, + "name": "const", + "scalar": { + "kind": 4, + "name": "const", + "type": "String" + }, + "type": "String" + } + ], + "type": "AnotherType" + }, + { + "kind": 1, + "properties": [ + { + "kind": 34, + "name": "foo", + "required": true, + "scalar": { + "kind": 4, + "name": "foo", + "required": true, + "type": "String" + }, + "type": "String" + } + ], + "type": "CustomMapValue" + }, + { + "kind": 1, + "properties": [ + { + "kind": 34, + "name": "else", + "required": true, + "scalar": { + "kind": 4, + "name": "else", + "required": true, + "type": "String" + }, + "type": "String" + } + ], + "type": "else" + } + ], + "version": "0.1" +} +""") manifest = WrapManifest.parse_obj({ "name": "Test", diff --git a/packages/test-cases/cases/cli/codegen/plugin/008-python/expected/wrap/wrap_info.py b/packages/test-cases/cases/cli/codegen/plugin/008-python/expected/wrap/wrap_info.py index d7878758c5..58eeee72d0 100644 --- a/packages/test-cases/cases/cli/codegen/plugin/008-python/expected/wrap/wrap_info.py +++ b/packages/test-cases/cases/cli/codegen/plugin/008-python/expected/wrap/wrap_info.py @@ -3,11 +3,52 @@ from __future__ import annotations import json -from base64 import b64decode from polywrap_manifest import WrapManifest -abi = json.loads(b64decode("eyJtb2R1bGVUeXBlIjp7ImtpbmQiOjEyOCwibWV0aG9kcyI6W3siYXJndW1lbnRzIjpbeyJraW5kIjozNCwibmFtZSI6ImRhdGEiLCJyZXF1aXJlZCI6dHJ1ZSwic2NhbGFyIjp7ImtpbmQiOjQsIm5hbWUiOiJkYXRhIiwicmVxdWlyZWQiOnRydWUsInR5cGUiOiJTdHJpbmcifSwidHlwZSI6IlN0cmluZyJ9XSwia2luZCI6NjQsIm5hbWUiOiJzYW1wbGVNZXRob2QiLCJyZXF1aXJlZCI6dHJ1ZSwicmV0dXJuIjp7ImtpbmQiOjM0LCJuYW1lIjoic2FtcGxlTWV0aG9kIiwicmVxdWlyZWQiOnRydWUsInNjYWxhciI6eyJraW5kIjo0LCJuYW1lIjoic2FtcGxlTWV0aG9kIiwicmVxdWlyZWQiOnRydWUsInR5cGUiOiJTdHJpbmcifSwidHlwZSI6IlN0cmluZyJ9LCJ0eXBlIjoiTWV0aG9kIn1dLCJ0eXBlIjoiTW9kdWxlIn0sInZlcnNpb24iOiIwLjEifQ==").decode("utf-8")) +abi = json.loads(""" +{ + "moduleType": { + "kind": 128, + "methods": [ + { + "arguments": [ + { + "kind": 34, + "name": "data", + "required": true, + "scalar": { + "kind": 4, + "name": "data", + "required": true, + "type": "String" + }, + "type": "String" + } + ], + "kind": 64, + "name": "sampleMethod", + "required": true, + "return": { + "kind": 34, + "name": "sampleMethod", + "required": true, + "scalar": { + "kind": 4, + "name": "sampleMethod", + "required": true, + "type": "String" + }, + "type": "String" + }, + "type": "Method" + } + ], + "type": "Module" + }, + "version": "0.1" +} +""") manifest = WrapManifest.parse_obj({ "name": "Sample",