{
  "_format": "hh-sol-artifact-1",
  "contractName": "MetahubV2Mock",
  "sourceName": "contracts/mocks/metahub/MetahubV2Mock.sol",
  "abi": [
    {
      "inputs": [],
      "name": "CallerIsNotERC20RewardDistributor",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "CallerIsNotListingManager",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "CallerIsNotRentingManager",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "CallerIsNotWarperManager",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "bytes4",
          "name": "keyProvided",
          "type": "bytes4"
        }
      ],
      "name": "ContractDoesNotExist",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "bytes4",
          "name": "keyProvided",
          "type": "bytes4"
        },
        {
          "internalType": "bytes4",
          "name": "keyRequired",
          "type": "bytes4"
        }
      ],
      "name": "ContractKeyMismatch",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "bytes4",
          "name": "keyProvided",
          "type": "bytes4"
        },
        {
          "internalType": "address",
          "name": "addressProvided",
          "type": "address"
        }
      ],
      "name": "ContractNotAuthorized",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "InvalidContractEntityInterface",
      "type": "error"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "address",
          "name": "previousAdmin",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "newAdmin",
          "type": "address"
        }
      ],
      "name": "AdminChanged",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "beacon",
          "type": "address"
        }
      ],
      "name": "BeaconUpgraded",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "bytes4",
          "name": "contractKey",
          "type": "bytes4"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "contractAddress",
          "type": "address"
        }
      ],
      "name": "ContractRegistered",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint8",
          "name": "version",
          "type": "uint8"
        }
      ],
      "name": "Initialized",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "enum IPaymentManager.EarningType",
          "name": "earningType",
          "type": "uint8"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "paymentToken",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        }
      ],
      "name": "ProtocolEarned",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "address",
          "name": "oldCollector",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "newCollector",
          "type": "address"
        }
      ],
      "name": "ProtocolExternalFeesCollectorChanged",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "uint256",
          "name": "universeId",
          "type": "uint256"
        },
        {
          "indexed": true,
          "internalType": "enum IPaymentManager.EarningType",
          "name": "earningType",
          "type": "uint8"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "paymentToken",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        }
      ],
      "name": "UniverseEarned",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "implementation",
          "type": "address"
        }
      ],
      "name": "Upgraded",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "user",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "enum IPaymentManager.EarningType",
          "name": "earningType",
          "type": "uint8"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "paymentToken",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        }
      ],
      "name": "UserEarned",
      "type": "event"
    },
    {
      "inputs": [
        {
          "internalType": "bytes4",
          "name": "assetClass",
          "type": "bytes4"
        }
      ],
      "name": "assetClassController",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "account",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "token",
          "type": "address"
        }
      ],
      "name": "balance",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "account",
          "type": "address"
        }
      ],
      "name": "balances",
      "outputs": [
        {
          "components": [
            {
              "internalType": "address",
              "name": "token",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "amount",
              "type": "uint256"
            }
          ],
          "internalType": "struct Accounts.Balance[]",
          "name": "",
          "type": "tuple[]"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "baseToken",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "baseTokenDecimals",
      "outputs": [
        {
          "internalType": "uint8",
          "name": "",
          "type": "uint8"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "newProtocolExternalFeesCollector",
          "type": "address"
        }
      ],
      "name": "changeProtocolExternalFeesCollector",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "components": [
            {
              "components": [
                {
                  "internalType": "bytes4",
                  "name": "class",
                  "type": "bytes4"
                },
                {
                  "internalType": "bytes",
                  "name": "data",
                  "type": "bytes"
                }
              ],
              "internalType": "struct Assets.AssetId",
              "name": "id",
              "type": "tuple"
            },
            {
              "internalType": "uint256",
              "name": "value",
              "type": "uint256"
            }
          ],
          "internalType": "struct Assets.Asset",
          "name": "asset",
          "type": "tuple"
        },
        {
          "internalType": "address",
          "name": "from",
          "type": "address"
        }
      ],
      "name": "depositAsset",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes4",
          "name": "contractKey",
          "type": "bytes4"
        }
      ],
      "name": "getContract",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "components": [
            {
              "components": [
                {
                  "components": [
                    {
                      "internalType": "bytes4",
                      "name": "class",
                      "type": "bytes4"
                    },
                    {
                      "internalType": "bytes",
                      "name": "data",
                      "type": "bytes"
                    }
                  ],
                  "internalType": "struct Assets.AssetId",
                  "name": "id",
                  "type": "tuple"
                },
                {
                  "internalType": "uint256",
                  "name": "value",
                  "type": "uint256"
                }
              ],
              "internalType": "struct Assets.Asset[]",
              "name": "assets",
              "type": "tuple[]"
            },
            {
              "internalType": "address",
              "name": "lister",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "beneficiary",
              "type": "address"
            },
            {
              "internalType": "uint32",
              "name": "maxLockPeriod",
              "type": "uint32"
            },
            {
              "internalType": "uint32",
              "name": "lockedTill",
              "type": "uint32"
            },
            {
              "internalType": "address",
              "name": "configurator",
              "type": "address"
            },
            {
              "internalType": "bool",
              "name": "immediatePayout",
              "type": "bool"
            },
            {
              "internalType": "bool",
              "name": "enabled",
              "type": "bool"
            },
            {
              "internalType": "bool",
              "name": "paused",
              "type": "bool"
            }
          ],
          "internalType": "struct Listings.Listing",
          "name": "listing",
          "type": "tuple"
        },
        {
          "components": [
            {
              "components": [
                {
                  "components": [
                    {
                      "internalType": "bytes4",
                      "name": "class",
                      "type": "bytes4"
                    },
                    {
                      "internalType": "bytes",
                      "name": "data",
                      "type": "bytes"
                    }
                  ],
                  "internalType": "struct Assets.AssetId",
                  "name": "id",
                  "type": "tuple"
                },
                {
                  "internalType": "uint256",
                  "name": "value",
                  "type": "uint256"
                }
              ],
              "internalType": "struct Assets.Asset[]",
              "name": "warpedAssets",
              "type": "tuple[]"
            },
            {
              "internalType": "uint256",
              "name": "universeId",
              "type": "uint256"
            },
            {
              "internalType": "bytes32",
              "name": "collectionId",
              "type": "bytes32"
            },
            {
              "internalType": "uint256",
              "name": "listingId",
              "type": "uint256"
            },
            {
              "internalType": "address",
              "name": "renter",
              "type": "address"
            },
            {
              "internalType": "uint32",
              "name": "startTime",
              "type": "uint32"
            },
            {
              "internalType": "uint32",
              "name": "endTime",
              "type": "uint32"
            },
            {
              "components": [
                {
                  "components": [
                    {
                      "internalType": "bytes4",
                      "name": "strategyId",
                      "type": "bytes4"
                    },
                    {
                      "internalType": "bytes",
                      "name": "strategyData",
                      "type": "bytes"
                    }
                  ],
                  "internalType": "struct IListingTermsRegistry.ListingTerms",
                  "name": "listingTerms",
                  "type": "tuple"
                },
                {
                  "components": [
                    {
                      "internalType": "bytes4",
                      "name": "strategyId",
                      "type": "bytes4"
                    },
                    {
                      "internalType": "bytes",
                      "name": "strategyData",
                      "type": "bytes"
                    }
                  ],
                  "internalType": "struct ITaxTermsRegistry.TaxTerms",
                  "name": "universeTaxTerms",
                  "type": "tuple"
                },
                {
                  "components": [
                    {
                      "internalType": "bytes4",
                      "name": "strategyId",
                      "type": "bytes4"
                    },
                    {
                      "internalType": "bytes",
                      "name": "strategyData",
                      "type": "bytes"
                    }
                  ],
                  "internalType": "struct ITaxTermsRegistry.TaxTerms",
                  "name": "protocolTaxTerms",
                  "type": "tuple"
                },
                {
                  "components": [
                    {
                      "internalType": "address",
                      "name": "paymentToken",
                      "type": "address"
                    },
                    {
                      "internalType": "uint256",
                      "name": "paymentTokenQuote",
                      "type": "uint256"
                    }
                  ],
                  "internalType": "struct ITokenQuote.PaymentTokenData",
                  "name": "paymentTokenData",
                  "type": "tuple"
                }
              ],
              "internalType": "struct Rentings.AgreementTerms",
              "name": "agreementTerms",
              "type": "tuple"
            }
          ],
          "internalType": "struct Rentings.Agreement",
          "name": "agreement",
          "type": "tuple"
        },
        {
          "components": [
            {
              "internalType": "address",
              "name": "token",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "totalReward",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "listerRewardFee",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "renterRewardFee",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "universeRewardFee",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "protocolRewardFee",
              "type": "uint256"
            }
          ],
          "internalType": "struct ERC20RewardDistributionHelper.RentalExternalERC20RewardFees",
          "name": "rentalExternalERC20RewardFees",
          "type": "tuple"
        }
      ],
      "name": "handleExternalERC20Reward",
      "outputs": [
        {
          "components": [
            {
              "components": [
                {
                  "internalType": "enum IPaymentManager.EarningType",
                  "name": "earningType",
                  "type": "uint8"
                },
                {
                  "internalType": "bool",
                  "name": "isLister",
                  "type": "bool"
                },
                {
                  "internalType": "address",
                  "name": "account",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "value",
                  "type": "uint256"
                },
                {
                  "internalType": "address",
                  "name": "token",
                  "type": "address"
                }
              ],
              "internalType": "struct Accounts.UserEarning[]",
              "name": "userEarnings",
              "type": "tuple[]"
            },
            {
              "components": [
                {
                  "internalType": "enum IPaymentManager.EarningType",
                  "name": "earningType",
                  "type": "uint8"
                },
                {
                  "internalType": "uint256",
                  "name": "universeId",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "value",
                  "type": "uint256"
                },
                {
                  "internalType": "address",
                  "name": "token",
                  "type": "address"
                }
              ],
              "internalType": "struct Accounts.UniverseEarning",
              "name": "universeEarning",
              "type": "tuple"
            },
            {
              "components": [
                {
                  "internalType": "enum IPaymentManager.EarningType",
                  "name": "earningType",
                  "type": "uint8"
                },
                {
                  "internalType": "uint256",
                  "name": "value",
                  "type": "uint256"
                },
                {
                  "internalType": "address",
                  "name": "token",
                  "type": "address"
                }
              ],
              "internalType": "struct Accounts.ProtocolEarning",
              "name": "protocolEarning",
              "type": "tuple"
            }
          ],
          "internalType": "struct Accounts.RentalEarnings",
          "name": "rentalExternalRewardEarnings",
          "type": "tuple"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "components": [
            {
              "internalType": "uint256",
              "name": "listingId",
              "type": "uint256"
            },
            {
              "internalType": "address",
              "name": "warper",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "renter",
              "type": "address"
            },
            {
              "internalType": "uint32",
              "name": "rentalPeriod",
              "type": "uint32"
            },
            {
              "internalType": "address",
              "name": "paymentToken",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "listingTermsId",
              "type": "uint256"
            },
            {
              "components": [
                {
                  "internalType": "bytes4",
                  "name": "strategyId",
                  "type": "bytes4"
                },
                {
                  "internalType": "bytes",
                  "name": "strategyData",
                  "type": "bytes"
                }
              ],
              "internalType": "struct IListingTermsRegistry.ListingTerms",
              "name": "selectedConfiguratorListingTerms",
              "type": "tuple"
            }
          ],
          "internalType": "struct Rentings.Params",
          "name": "rentingParams",
          "type": "tuple"
        },
        {
          "components": [
            {
              "internalType": "uint256",
              "name": "total",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "protocolFee",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "listerBaseFee",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "listerPremium",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "universeBaseFee",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "universePremium",
              "type": "uint256"
            },
            {
              "components": [
                {
                  "internalType": "bytes4",
                  "name": "strategyId",
                  "type": "bytes4"
                },
                {
                  "internalType": "bytes",
                  "name": "strategyData",
                  "type": "bytes"
                }
              ],
              "internalType": "struct IListingTermsRegistry.ListingTerms",
              "name": "listingTerms",
              "type": "tuple"
            },
            {
              "components": [
                {
                  "internalType": "bytes4",
                  "name": "strategyId",
                  "type": "bytes4"
                },
                {
                  "internalType": "bytes",
                  "name": "strategyData",
                  "type": "bytes"
                }
              ],
              "internalType": "struct ITaxTermsRegistry.TaxTerms",
              "name": "universeTaxTerms",
              "type": "tuple"
            },
            {
              "components": [
                {
                  "internalType": "bytes4",
                  "name": "strategyId",
                  "type": "bytes4"
                },
                {
                  "internalType": "bytes",
                  "name": "strategyData",
                  "type": "bytes"
                }
              ],
              "internalType": "struct ITaxTermsRegistry.TaxTerms",
              "name": "protocolTaxTerms",
              "type": "tuple"
            }
          ],
          "internalType": "struct Rentings.RentalFees",
          "name": "fees",
          "type": "tuple"
        },
        {
          "internalType": "address",
          "name": "payer",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "maxPaymentAmount",
          "type": "uint256"
        },
        {
          "internalType": "bytes",
          "name": "tokenQuote",
          "type": "bytes"
        },
        {
          "internalType": "bytes",
          "name": "tokenQuoteSignature",
          "type": "bytes"
        }
      ],
      "name": "handleRentalPayment",
      "outputs": [
        {
          "components": [
            {
              "components": [
                {
                  "internalType": "enum IPaymentManager.EarningType",
                  "name": "earningType",
                  "type": "uint8"
                },
                {
                  "internalType": "bool",
                  "name": "isLister",
                  "type": "bool"
                },
                {
                  "internalType": "address",
                  "name": "account",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "value",
                  "type": "uint256"
                },
                {
                  "internalType": "address",
                  "name": "token",
                  "type": "address"
                }
              ],
              "internalType": "struct Accounts.UserEarning[]",
              "name": "userEarnings",
              "type": "tuple[]"
            },
            {
              "components": [
                {
                  "internalType": "enum IPaymentManager.EarningType",
                  "name": "earningType",
                  "type": "uint8"
                },
                {
                  "internalType": "uint256",
                  "name": "universeId",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "value",
                  "type": "uint256"
                },
                {
                  "internalType": "address",
                  "name": "token",
                  "type": "address"
                }
              ],
              "internalType": "struct Accounts.UniverseEarning",
              "name": "universeEarning",
              "type": "tuple"
            },
            {
              "components": [
                {
                  "internalType": "enum IPaymentManager.EarningType",
                  "name": "earningType",
                  "type": "uint8"
                },
                {
                  "internalType": "uint256",
                  "name": "value",
                  "type": "uint256"
                },
                {
                  "internalType": "address",
                  "name": "token",
                  "type": "address"
                }
              ],
              "internalType": "struct Accounts.ProtocolEarning",
              "name": "protocolEarning",
              "type": "tuple"
            }
          ],
          "internalType": "struct Accounts.RentalEarnings",
          "name": "rentalFixedEarnings",
          "type": "tuple"
        },
        {
          "components": [
            {
              "internalType": "address",
              "name": "paymentToken",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "paymentTokenQuote",
              "type": "uint256"
            }
          ],
          "internalType": "struct ITokenQuote.PaymentTokenData",
          "name": "paymentTokenData",
          "type": "tuple"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "components": [
            {
              "internalType": "contract IACL",
              "name": "acl",
              "type": "address"
            },
            {
              "internalType": "contract IERC20Upgradeable",
              "name": "baseToken",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "protocolExternalFeesCollector",
              "type": "address"
            },
            {
              "internalType": "contract IAssetClassRegistry",
              "name": "assetClassRegistry",
              "type": "address"
            }
          ],
          "internalType": "struct Metahub.MetahubInitParams",
          "name": "params",
          "type": "tuple"
        }
      ],
      "name": "initialize",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "token",
          "type": "address"
        }
      ],
      "name": "protocolBalance",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "protocolBalances",
      "outputs": [
        {
          "components": [
            {
              "internalType": "address",
              "name": "token",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "amount",
              "type": "uint256"
            }
          ],
          "internalType": "struct Accounts.Balance[]",
          "name": "",
          "type": "tuple[]"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "protocolExternalFeesCollector",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "proxiableUUID",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes4",
          "name": "assetClass",
          "type": "bytes4"
        },
        {
          "internalType": "address",
          "name": "original",
          "type": "address"
        }
      ],
      "name": "registerAsset",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes4",
          "name": "contractKey",
          "type": "bytes4"
        },
        {
          "internalType": "address",
          "name": "contractAddress",
          "type": "address"
        }
      ],
      "name": "registerContract",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "supportedAssetCount",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "offset",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "limit",
          "type": "uint256"
        }
      ],
      "name": "supportedAssets",
      "outputs": [
        {
          "internalType": "address[]",
          "name": "",
          "type": "address[]"
        },
        {
          "components": [
            {
              "internalType": "contract IAssetController",
              "name": "controller",
              "type": "address"
            },
            {
              "internalType": "bytes4",
              "name": "assetClass",
              "type": "bytes4"
            },
            {
              "internalType": "contract IAssetVault",
              "name": "vault",
              "type": "address"
            }
          ],
          "internalType": "struct Assets.AssetConfig[]",
          "name": "",
          "type": "tuple[]"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "universeId",
          "type": "uint256"
        },
        {
          "internalType": "address",
          "name": "token",
          "type": "address"
        }
      ],
      "name": "universeBalance",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "universeId",
          "type": "uint256"
        }
      ],
      "name": "universeBalances",
      "outputs": [
        {
          "components": [
            {
              "internalType": "address",
              "name": "token",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "amount",
              "type": "uint256"
            }
          ],
          "internalType": "struct Accounts.Balance[]",
          "name": "",
          "type": "tuple[]"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "newImplementation",
          "type": "address"
        }
      ],
      "name": "upgradeTo",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "newImplementation",
          "type": "address"
        },
        {
          "internalType": "bytes",
          "name": "data",
          "type": "bytes"
        }
      ],
      "name": "upgradeToAndCall",
      "outputs": [],
      "stateMutability": "payable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "version",
      "outputs": [
        {
          "internalType": "string",
          "name": "",
          "type": "string"
        }
      ],
      "stateMutability": "pure",
      "type": "function"
    },
    {
      "inputs": [
        {
          "components": [
            {
              "components": [
                {
                  "internalType": "bytes4",
                  "name": "class",
                  "type": "bytes4"
                },
                {
                  "internalType": "bytes",
                  "name": "data",
                  "type": "bytes"
                }
              ],
              "internalType": "struct Assets.AssetId",
              "name": "id",
              "type": "tuple"
            },
            {
              "internalType": "uint256",
              "name": "value",
              "type": "uint256"
            }
          ],
          "internalType": "struct Assets.Asset",
          "name": "asset",
          "type": "tuple"
        }
      ],
      "name": "withdrawAsset",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "token",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        },
        {
          "internalType": "address",
          "name": "to",
          "type": "address"
        }
      ],
      "name": "withdrawFunds",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "token",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        },
        {
          "internalType": "address",
          "name": "to",
          "type": "address"
        }
      ],
      "name": "withdrawProtocolFunds",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "universeId",
          "type": "uint256"
        },
        {
          "internalType": "address",
          "name": "token",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        },
        {
          "internalType": "address",
          "name": "to",
          "type": "address"
        }
      ],
      "name": "withdrawUniverseFunds",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    }
  ],
  "bytecode": "0x60a0604052306080523480156200001557600080fd5b506200002062000026565b620000e8565b600054610100900460ff1615620000935760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff9081161015620000e6576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b608051613f266200012060003960008181610a0801528181610a4801528181610b7501528181610bb50152610c440152613f266000f3fe6080604052600436106101b75760003560e01c80636e32d3d3116100ec578063b203bb991161008a578063c55dae6311610064578063c55dae63146104fa578063c7b0156014610518578063e2b188c714610538578063e3dedd6b1461056557600080fd5b8063b203bb991461048c578063b8b81b5d146104ac578063c242a471146104cc57600080fd5b806382aa1c88116100c657806382aa1c881461041057806397e4769014610437578063a5c5ad1114610457578063a75ea55d1461046c57600080fd5b80636e32d3d3146103a257806372994135146103c257806378a2c9cd146103f057600080fd5b80634bd22a1b1161015957806354fd4d501161013357806354fd4d501461031c578063553b01091461034d5780635a22b88f1461036257806361b25b911461038257600080fd5b80634bd22a1b146102c65780634f1ef286146102f457806352d1902d1461030757600080fd5b8063344d175b11610195578063344d175b146102345780633659cfe61461025457806347c6b45e146102745780634b6561d11461029457600080fd5b80630415cc15146101bc57806320ffc53d146101de57806327e235e3146101fe575b600080fd5b3480156101c857600080fd5b506101dc6101d73660046121d0565b610585565b005b3480156101ea57600080fd5b506101dc6101f9366004612223565b61086f565b34801561020a57600080fd5b5061021e61021936600461225c565b610950565b60405161022b9190612279565b60405180910390f35b34801561024057600080fd5b506101dc61024f366004612223565b61097a565b34801561026057600080fd5b506101dc61026f36600461225c565b6109fe565b34801561028057600080fd5b506101dc61028f3660046122d9565b610add565b3480156102a057600080fd5b50609a546001600160a01b03165b6040516001600160a01b03909116815260200161022b565b3480156102d257600080fd5b506102e66102e136600461225c565b610b5e565b60405190815260200161022b565b6101dc6103023660046124b2565b610b6b565b34801561031357600080fd5b506102e6610c37565b34801561032857600080fd5b5060408051808201825260028152612b1960f11b6020820152905161022b9190612559565b34801561035957600080fd5b506102e6610cea565b34801561036e57600080fd5b506101dc61037d36600461257e565b610cfb565b34801561038e57600080fd5b5061021e61039d3660046125ba565b610dc2565b3480156103ae57600080fd5b506102ae6103bd3660046125d3565b610ddc565b3480156103ce57600080fd5b506103e26103dd3660046125f0565b610de9565b60405161022b929190612612565b3480156103fc57600080fd5b506102e661040b3660046126c2565b610e80565b34801561041c57600080fd5b50610425610e9f565b60405160ff909116815260200161022b565b34801561044357600080fd5b506101dc61045236600461225c565b610ea9565b34801561046357600080fd5b5061021e610f7f565b34801561047857600080fd5b506101dc6104873660046122d9565b610f8b565b34801561049857600080fd5b506102e66104a73660046126e7565b611043565b3480156104b857600080fd5b506101dc6104c7366004612705565b611065565b3480156104d857600080fd5b506104ec6104e73660046127b1565b6110fb565b60405161022b9291906129bd565b34801561050657600080fd5b506099546001600160a01b03166102ae565b34801561052457600080fd5b506101dc6105333660046129f2565b611321565b34801561054457600080fd5b50610558610553366004612dc3565b611439565b60405161022b9190612ef1565b34801561057157600080fd5b506102ae6105803660046125d3565b61152b565b600054610100900460ff16158080156105a55750600054600160ff909116105b806105bf5750303b1580156105bf575060005460ff166001145b6106275760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b6000805460ff19166001179055801561064a576000805461ff0019166101001790555b610652611536565b61065f602083018361225c565b609880546001600160a01b0319166001600160a01b039290921691909117905560408051808201825290819061069a9085016020860161225c565b6001600160a01b031681526020016106b8606085016040860161225c565b6001600160a01b039081169091528151609980546001600160a01b0319908116928416929092179055602090920151609a80549093169116179055610703608083016060840161225c565b609b80546001600160a01b0319166001600160a01b039283161790556098546040805163ec21896d60e01b8152905161079b93929092169163ec21896d916004808201926020929091908290030181865afa158015610766573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061078a9190612f04565b6098546001600160a01b03166115a3565b6108246107ae608084016060850161225c565b6001600160a01b031663ec21896d6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156107eb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061080f9190612f04565b61081f608085016060860161225c565b6115a3565b801561086b576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498906020015b60405180910390a15b5050565b6108987fa9bb56dd0bf7501666e4d616edd892185cdc45d735a001a809bd3db50c9004b8611617565b6001600160a01b0316336001600160a01b0316146108c95760405163ccad962160e01b815260040160405180910390fd5b604051635fbd140f60e01b8152609b60048201526001600160e01b0319831660248201526001600160a01b038216604482015273__$48805a21cd2d79ca776bf2c16e4893ad10$__90635fbd140f906064015b60006040518083038186803b15801561093457600080fd5b505af4158015610948573d6000803e3d6000fd5b505050505050565b6001600160a01b038116600090815260a3602052604090206060906109749061164a565b92915050565b6098546001600160a01b03166001600160a01b03166312d9a6ad6000336040516001600160e01b031960e085901b16815260048101929092526001600160a01b0316602482015260440160006040518083038186803b1580156109dc57600080fd5b505afa1580156109f0573d6000803e3d6000fd5b5050505061086b82826115a3565b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163003610a465760405162461bcd60e51b815260040161061e90612f21565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316610a8f600080516020613eaa833981519152546001600160a01b031690565b6001600160a01b031614610ab55760405162461bcd60e51b815260040161061e90612f6d565b610abe8161172f565b60408051600080825260208201909252610ada918391906117a5565b50565b33600090815260a360205260409081902090516334e3db7f60e21b815273__$f64f2ddc230f4d0d284eef95d6ec5afa1e$__9163d38f6dfc91610b299190879087908790600401612fb9565b60006040518083038186803b158015610b4157600080fd5b505af4158015610b55573d6000803e3d6000fd5b50505050505050565b6000610974609f83611915565b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163003610bb35760405162461bcd60e51b815260040161061e90612f21565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316610bfc600080516020613eaa833981519152546001600160a01b031690565b6001600160a01b031614610c225760405162461bcd60e51b815260040161061e90612f6d565b610c2b8261172f565b61086b828260016117a5565b6000306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610cd75760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c0000000000000000606482015260840161061e565b50600080516020613eaa83398151915290565b6000610cf6609b61192b565b905090565b610d247fd48e4fbd6adafe3cfb07fbd2d23fc8730687d90505f487670937f44787ab385a611617565b6001600160a01b0316336001600160a01b031614610d55576040516331683c7f60e11b815260040160405180910390fd5b60405163221efb0360e11b815273__$48805a21cd2d79ca776bf2c16e4893ad10$__9063443df60690610d8f90609b9085906004016130c9565b60006040518083038186803b158015610da757600080fd5b505af4158015610dbb573d6000803e3d6000fd5b5050505050565b600081815260a2602052604090206060906109749061164a565b6000610974609b83611939565b6040516376946fcf60e01b8152609b60048201526024810183905260448101829052606090819073__$48805a21cd2d79ca776bf2c16e4893ad10$__906376946fcf90606401600060405180830381865af4158015610e4c573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610e749190810190613191565b915091505b9250929050565b600082815260a260205260408120610e989083611915565b9392505050565b6000610cf66119b9565b6098546001600160a01b03166001600160a01b03166312d9a6ad6000336040516001600160e01b031960e085901b16815260048101929092526001600160a01b0316602482015260440160006040518083038186803b158015610f0b57600080fd5b505afa158015610f1f573d6000803e3d6000fd5b5050609a80546001600160a01b031981166001600160a01b038681169182179093556040805193909216808452602084019190915293507f09d77888d1122ffb279fb3d7805b2e51f877769941c981c9583b9dde616f7efd925001610862565b6060610cf6609f61164a565b6098546001600160a01b03166001600160a01b03166312d9a6ad6000336040516001600160e01b031960e085901b16815260048101929092526001600160a01b0316602482015260440160006040518083038186803b158015610fed57600080fd5b505afa158015611001573d6000803e3d6000fd5b50506040516334e3db7f60e21b815273__$f64f2ddc230f4d0d284eef95d6ec5afa1e$__925063d38f6dfc9150610b2990609f90879087908790600401612fb9565b6001600160a01b038216600090815260a360205260408120610e989083611915565b61108e7fd48e4fbd6adafe3cfb07fbd2d23fc8730687d90505f487670937f44787ab385a611617565b6001600160a01b0316336001600160a01b0316146110bf576040516331683c7f60e11b815260040160405180910390fd5b604051631daa22cf60e11b815273__$48805a21cd2d79ca776bf2c16e4893ad10$__90633b54459e9061091c90609b908690869060040161324b565b6111036120ac565b60408051808201909152600080825260208201526111407f9b4d0cb4e76b932bf6c979cd152d23fb4da2bb167c72cceed92f670a5328c4c3611617565b6001600160a01b0316336001600160a01b03161461117157604051630fd6440760e01b815260040160405180910390fd5b61117961211b565b6099546001600160a01b031661119560a08d0160808e0161225c565b6001600160a01b031614611251576111cc7f5e694b91d38e1170456b92da3190b84658a79619900abc1cb4332fd62ab25ee4611617565b6001600160a01b031663ce9adde38c8c8a8a8a8a6040518763ffffffff1660e01b815260040161120196959493929190613325565b6000604051808303816000875af1158015611220573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261124891908101906134e0565b92509050611283565b61125a8a6135e7565b6099546001600160a01b0316835290506112726119b9565b61127d90600a6137ac565b60208301525b60405163f83565c160e01b815273__$f64f2ddc230f4d0d284eef95d6ec5afa1e$__9063f83565c1906112c390609f908f9086908f908f9060040161386a565b600060405180830381865af41580156112e0573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261130891908101906139fa565b925061131383611a27565b509850989650505050505050565b8361134b7f80e923a5a548bf8cd1c0d5679e7fb52a28d9fd42e9642a412b581817718d9aa4611617565b6001600160a01b0316637dc330dc82336040516001600160e01b031960e085901b16815260048101929092526001600160a01b0316602482015260440160006040518083038186803b1580156113a057600080fd5b505afa1580156113b4573d6000803e3d6000fd5b505050600086815260a260205260409081902090516334e3db7f60e21b815273__$f64f2ddc230f4d0d284eef95d6ec5afa1e$__925063d38f6dfc9161140291889088908890600401612fb9565b60006040518083038186803b15801561141a57600080fd5b505af415801561142e573d6000803e3d6000fd5b505050505050505050565b6114416120ac565b61146a7fc812c4753531186b178644ec70482dbb7a11384b640929d30f5ed326dcc237bf611617565b6001600160a01b0316336001600160a01b03161461149b5760405163348da9e760e01b815260040160405180910390fd5b6040516320d3d29960e01b815273__$f64f2ddc230f4d0d284eef95d6ec5afa1e$__906320d3d299906114db90609f908890889088903390600401613c99565b600060405180830381865af41580156114f8573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261152091908101906139fa565b9050610e9881611a27565b600061097482611617565b600054610100900460ff166115a15760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b606482015260840161061e565b565b6115ad8282611bec565b6001600160e01b0319821660008181526097602090815260409182902080546001600160a01b0319166001600160a01b0386169081179091558251938452908301527f829f418d36673ca2fd64b53bef8ccf5524c4e01d13d292ddb11a4dac74ab22ea9101610862565b60008161162381611d1f565b50506001600160e01b0319166000908152609760205260409020546001600160a01b031690565b6060600061165783611d6b565b90506000816001600160401b038111156116735761167361231b565b6040519080825280602002602001820160405280156116b857816020015b60408051808201909152600080825260208201528152602001906001900390816116915790505b50905060005b82811015611727576000806116d38784611d76565b915091506040518060400160405280836001600160a01b031681526020018281525084848151811061170757611707613dc4565b60200260200101819052505050808061171f90613dda565b9150506116be565b509392505050565b6098546001600160a01b03166001600160a01b03166312d9a6ad6000336040516001600160e01b031960e085901b16815260048101929092526001600160a01b0316602482015260440160006040518083038186803b15801561179157600080fd5b505afa158015610dbb573d6000803e3d6000fd5b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff16156117dd576117d883611d92565b505050565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015611837575060408051601f3d908101601f1916820190925261183491810190613df3565b60015b61189a5760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b606482015260840161061e565b600080516020613eaa83398151915281146119095760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b606482015260840161061e565b506117d8838383611e2e565b6000806119228484611e59565b95945050505050565b600061097482600101611e71565b8154604051630b42144760e41b81526001600160e01b0319831660048201526000916001600160a01b03169063b4214470906024016040805180830381865afa15801561198a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119ae9190613e0c565b602001519392505050565b6099546040805163313ce56760e01b815290516000926001600160a01b03169163313ce5679160048083019260209291908290030181865afa158015611a03573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cf69190613e4d565b60005b815151811015611aeb57600082600001518281518110611a4c57611a4c613dc4565b602002602001015190508060600151600003611a685750611ad9565b80608001516001600160a01b031681600001516006811115611a8c57611a8c612883565b82604001516001600160a01b03167fbf41aad4c3074058a613f4e88cea850e86e57d902b608bb02fb715b64929a40f8460600151604051611acf91815260200190565b60405180910390a4505b80611ae381613dda565b915050611a2a565b5060208101516040015115611b6e576020810151606081015190516001600160a01b03909116906006811115611b2357611b23612883565b8260200151602001517fba84758cdc92f6209ddb58b123ab7b0a05fcc33f85d5c4af3c6f4639545829c4846020015160400151604051611b6591815260200190565b60405180910390a45b60408101516020015115610ada578060400151604001516001600160a01b03168160400151600001516006811115611ba857611ba8612883565b7f8706acb6136091b8d5eb6f99d134c8bfd3f2cce3ac941753fd5be2757f165c63836040015160200151604051611be191815260200190565b60405180910390a350565b6040516301ffc9a760e01b815263ec21896d60e01b60048201526001600160a01b038216906301ffc9a790602401602060405180830381865afa158015611c37573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c5b9190613e70565b611c785760405163324ce8f560e01b815260040160405180910390fd5b6000816001600160a01b031663ec21896d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611cb8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611cdc9190612f04565b90506001600160e01b0319838116908216146117d857604051633f7810d760e21b81526001600160e01b031980851660048301528216602482015260440161061e565b6001600160e01b031981166000908152609760205260409020546001600160a01b0316610ada576040516303d5484160e11b81526001600160e01b03198216600482015260240161061e565b600061097482611e7b565b6000808080611d858686611e86565b9097909650945050505050565b6001600160a01b0381163b611dff5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b606482015260840161061e565b600080516020613eaa83398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b611e3783611eb1565b600082511180611e445750805b156117d857611e538383611ef1565b50505050565b6000808080611d85866001600160a01b038716611fdc565b6000610974825490565b600061097482611e71565b60008080611e94858561201e565b600081815260029690960160205260409095205494959350505050565b611eba81611d92565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b60606001600160a01b0383163b611f595760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b606482015260840161061e565b600080846001600160a01b031684604051611f749190613e8d565b600060405180830381855af49150503d8060008114611faf576040519150601f19603f3d011682016040523d82523d6000602084013e611fb4565b606091505b50915091506119228282604051806060016040528060278152602001613eca6027913961202a565b600081815260028301602052604081205481908061200b57611ffe8585612063565b925060009150610e799050565b600192509050610e79565b509250929050565b6000610e988383612082565b60608315612039575081610e98565b8251156120495782518084602001fd5b8160405162461bcd60e51b815260040161061e9190612559565b6000610e98838360008181526001830160205260408120541515610e98565b600082600001828154811061209957612099613dc4565b9060005260206000200154905092915050565b6040518060600160405280606081526020016120f360408051608081019091528060008152602001600081526020016000815260200160006001600160a01b031681525090565b815260408051606081018252600080825260208281018290529282015291015290565b905290565b604051806101200160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001612178604051806040016040528060006001600160e01b0319168152602001606081525090565b81526020016121a4604051806040016040528060006001600160e01b0319168152602001606081525090565b8152602001612116604051806040016040528060006001600160e01b0319168152602001606081525090565b6000608082840312156121e257600080fd5b50919050565b6001600160e01b031981168114610ada57600080fd5b6001600160a01b0381168114610ada57600080fd5b803561221e816121fe565b919050565b6000806040838503121561223657600080fd5b8235612241816121e8565b91506020830135612251816121fe565b809150509250929050565b60006020828403121561226e57600080fd5b8135610e98816121fe565b602080825282518282018190526000919060409081850190868401855b828110156122cc576122bc84835180516001600160a01b03168252602090810151910152565b9284019290850190600101612296565b5091979650505050505050565b6000806000606084860312156122ee57600080fd5b83356122f9816121fe565b9250602084013591506040840135612310816121fe565b809150509250925092565b634e487b7160e01b600052604160045260246000fd5b604080519081016001600160401b03811182821017156123535761235361231b565b60405290565b604051608081016001600160401b03811182821017156123535761235361231b565b60405161010081016001600160401b03811182821017156123535761235361231b565b60405161012081016001600160401b03811182821017156123535761235361231b565b604051606081016001600160401b03811182821017156123535761235361231b565b60405160a081016001600160401b03811182821017156123535761235361231b565b604051601f8201601f191681016001600160401b038111828210171561242d5761242d61231b565b604052919050565b60006001600160401b0382111561244e5761244e61231b565b50601f01601f191660200190565b600082601f83011261246d57600080fd5b813561248061247b82612435565b612405565b81815284602083860101111561249557600080fd5b816020850160208301376000918101602001919091529392505050565b600080604083850312156124c557600080fd5b82356124d0816121fe565b915060208301356001600160401b038111156124eb57600080fd5b6124f78582860161245c565b9150509250929050565b60005b8381101561251c578181015183820152602001612504565b83811115611e535750506000910152565b60008151808452612545816020860160208601612501565b601f01601f19169290920160200192915050565b602081526000610e98602083018461252d565b6000604082840312156121e257600080fd5b60006020828403121561259057600080fd5b81356001600160401b038111156125a657600080fd5b6125b28482850161256c565b949350505050565b6000602082840312156125cc57600080fd5b5035919050565b6000602082840312156125e557600080fd5b8135610e98816121e8565b6000806040838503121561260357600080fd5b50508035926020909101359150565b6040808252835182820181905260009190606090818501906020808901865b838110156126565781516001600160a01b031685529382019390820190600101612631565b5050868303818801528751808452888201938201925060005b818110156126b357845180516001600160a01b039081168652848201516001600160e01b03191685870152908801511687850152938201939285019260010161266f565b50919998505050505050505050565b600080604083850312156126d557600080fd5b823591506020830135612251816121fe565b600080604083850312156126fa57600080fd5b8235612241816121fe565b6000806040838503121561271857600080fd5b82356001600160401b0381111561272e57600080fd5b61273a8582860161256c565b9250506020830135612251816121fe565b600060e082840312156121e257600080fd5b600061012082840312156121e257600080fd5b60008083601f84011261278257600080fd5b5081356001600160401b0381111561279957600080fd5b602083019150836020828501011115610e7957600080fd5b60008060008060008060008060c0898b0312156127cd57600080fd5b88356001600160401b03808211156127e457600080fd5b6127f08c838d0161274b565b995060208b013591508082111561280657600080fd5b6128128c838d0161275d565b985061282060408c01612213565b975060608b0135965060808b013591508082111561283d57600080fd5b6128498c838d01612770565b909650945060a08b013591508082111561286257600080fd5b5061286f8b828c01612770565b999c989b5096995094979396929594505050565b634e487b7160e01b600052602160045260246000fd5b600781106128b757634e487b7160e01b600052602160045260246000fd5b9052565b6128c6828251612899565b60208181015190830152604080820151908301526060908101516001600160a01b0316910152565b6128f9828251612899565b602081810151908301526040908101516001600160a01b0316910152565b80516101008084528151908401819052600091610120850191602091820190845b8181101561299657825161294d868251612899565b808501511515868601526040808201516001600160a01b039081169188019190915260608083015190880152608091820151169086015260a09094019391830191600101612938565b505050808401516129a9828701826128bb565b5050604083015161172760a08601826128ee565b6060815260006129d06060830185612917565b9050610e98602083018480516001600160a01b03168252602090810151910152565b60008060008060808587031215612a0857600080fd5b843593506020850135612a1a816121fe565b9250604085013591506060850135612a31816121fe565b939692955090935050565b60006001600160401b03821115612a5557612a5561231b565b5060051b60200190565b600060408284031215612a7157600080fd5b612a79612331565b90508135612a86816121e8565b815260208201356001600160401b03811115612aa157600080fd5b612aad8482850161245c565b60208301525092915050565b600082601f830112612aca57600080fd5b81356020612ada61247b83612a3c565b82815260059290921b84018101918181019086841115612af957600080fd5b8286015b84811015612b775780356001600160401b0380821115612b1d5760008081fd5b908801906040828b03601f1901811315612b375760008081fd5b612b3f612331565b8784013583811115612b515760008081fd5b612b5f8d8a83880101612a5f565b82525092013586830152508352918301918301612afd565b509695505050505050565b803563ffffffff8116811461221e57600080fd5b8015158114610ada57600080fd5b803561221e81612b96565b600081830360a0811215612bc257600080fd5b612bca612359565b915082356001600160401b0380821115612be357600080fd5b612bef86838701612a5f565b84526020850135915080821115612c0557600080fd5b612c1186838701612a5f565b60208501526040850135915080821115612c2a57600080fd5b50612c3785828601612a5f565b6040840152506040605f1982011215612c4f57600080fd5b50612c58612331565b6060830135612c66816121fe565b80825250608083013560208201528060608301525092915050565b60006101008284031215612c9457600080fd5b612c9c61237b565b905081356001600160401b0380821115612cb557600080fd5b612cc185838601612ab9565b8352602084013560208401526040840135604084015260608401356060840152612ced60808501612213565b6080840152612cfe60a08501612b82565b60a0840152612d0f60c08501612b82565b60c084015260e0840135915080821115612d2857600080fd5b50612d3584828501612baf565b60e08301525092915050565b600060c08284031215612d5357600080fd5b60405160c081018181106001600160401b0382111715612d7557612d7561231b565b6040529050808235612d86816121fe565b808252506020830135602082015260408301356040820152606083013560608201526080830135608082015260a083013560a08201525092915050565b6000806000610100808587031215612dda57600080fd5b84356001600160401b0380821115612df157600080fd5b908601906101208289031215612e0657600080fd5b612e0e61239e565b823582811115612e1d57600080fd5b612e298a828601612ab9565b825250612e3860208401612213565b6020820152612e4960408401612213565b6040820152612e5a60608401612b82565b6060820152612e6b60808401612b82565b6080820152612e7c60a08401612213565b60a0820152612e8d60c08401612ba4565b60c0820152612e9e60e08401612ba4565b60e0820152612eae848401612ba4565b84820152809650506020870135925080831115612eca57600080fd5b5050612ed886828701612c81565b925050612ee88560408601612d41565b90509250925092565b602081526000610e986020830184612917565b600060208284031215612f1657600080fd5b8151610e98816121e8565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b19195b1959d85d1958d85b1b60a21b606082015260800190565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b6163746976652070726f787960a01b606082015260800190565b9384526001600160a01b039283166020850152604084019190915216606082015260800190565b60008235603e19833603018112612ff657600080fd5b90910192915050565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b60008135613035816121e8565b6001600160e01b0319168352602082013536839003601e1901811261305957600080fd5b820180356001600160401b0381111561307157600080fd5b80360384131561308057600080fd5b60406020860152611922604086018260208501612fff565b60006130a48283612fe0565b604084526130b56040850182613028565b602093840135949093019390935250919050565b8281526040602082015260006125b26040830184613098565b600082601f8301126130f357600080fd5b8151602061310361247b83612a3c565b8281526060928302850182019282820191908785111561312257600080fd5b8387015b858110156131845781818a03121561313e5760008081fd5b6131466123c1565b8151613151816121fe565b815281860151613160816121e8565b81870152604082810151613173816121fe565b908201528452928401928101613126565b5090979650505050505050565b600080604083850312156131a457600080fd5b82516001600160401b03808211156131bb57600080fd5b818501915085601f8301126131cf57600080fd5b815160206131df61247b83612a3c565b82815260059290921b840181019181810190898411156131fe57600080fd5b948201945b83861015613225578551613216816121fe565b82529482019490820190613203565b9188015191965090935050508082111561323e57600080fd5b506124f7858286016130e2565b8381526060602082015260006132646060830185613098565b905060018060a01b0383166040830152949350505050565b6000610120823584526020830135602085015260408301356040850152606083013560608501526080830135608085015260a083013560a08501526132c460c0840184612fe0565b8160c08601526132d682860182613028565b9150506132e660e0840184612fe0565b84820360e08601526132f88282613028565b91505061010061330a81850185612fe0565b8583038287015261331b8382613028565b9695505050505050565b608081528635608082015260006020880135613340816121fe565b6001600160a01b0390811660a084015260408901359061335f826121fe565b1660c083015261337160608901612b82565b63ffffffff1660e083015261338860808901612213565b6001600160a01b031661010083015260a08801356101208301526133af60c0890189612fe0565b60e06101408401526133c5610160840182613028565b905082810360208401526133d9818961327c565b905082810360408401526133ee818789612fff565b90508281036060840152613403818587612fff565b9998505050505050505050565b60006040828403121561342257600080fd5b61342a612331565b90508151613437816121e8565b815260208201516001600160401b0381111561345257600080fd5b8201601f8101841361346357600080fd5b805161347161247b82612435565b81815285602083850101111561348657600080fd5b613497826020830160208601612501565b602084015250909392505050565b6000604082840312156134b757600080fd5b6134bf612331565b905081516134cc816121fe565b808252506020820151602082015292915050565b600080606083850312156134f357600080fd5b82516001600160401b038082111561350a57600080fd5b90840190610120828703121561351f57600080fd5b61352761239e565b825181526020830151602082015260408301516040820152606083015160608201526080830151608082015260a083015160a082015260c08301518281111561356f57600080fd5b61357b88828601613410565b60c08301525060e08301518281111561359357600080fd5b61359f88828601613410565b60e08301525061010080840151838111156135b957600080fd5b6135c589828701613410565b8284015250508094505050506135de84602085016134a5565b90509250929050565b600061012082360312156135fa57600080fd5b61360261239e565b823581526020830135602082015260408301356040820152606083013560608201526080830135608082015260a083013560a082015260c08301356001600160401b038082111561365257600080fd5b61365e36838701612a5f565b60c084015260e085013591508082111561367757600080fd5b61368336838701612a5f565b60e08401526101009150818501358181111561369e57600080fd5b6136aa36828801612a5f565b8385015250505080915050919050565b634e487b7160e01b600052601160045260246000fd5b600181815b808511156120165781600019048211156136f1576136f16136ba565b808516156136fe57918102915b93841c93908002906136d5565b60008261371a57506001610974565b8161372757506000610974565b816001811461373d576002811461374757613763565b6001915050610974565b60ff841115613758576137586136ba565b50506001821b610974565b5060208310610133831016604e8410600b8410161715613786575081810a610974565b61379083836136d0565b80600019048211156137a4576137a46136ba565b029392505050565b6000610e9860ff84168361370b565b63ffffffff60e01b815116825260006020820151604060208501526125b2604085018261252d565b6000610120825184526020830151602085015260408301516040850152606083015160608501526080830151608085015260a083015160a085015260c08301518160c0860152613835828601826137bb565b91505060e083015184820360e086015261384f82826137bb565b915050610100808401518583038287015261331b83826137bb565b85815260a06020820152843560a08201526000602086013561388b816121fe565b6001600160a01b0390811660c08401526040870135906138aa826121fe565b1660e08301526138bc60608701612b82565b63ffffffff166101008301526138d460808701612213565b6001600160a01b031661012083015260a08601356101408301526138fb60c0870187612fe0565b60e0610160840152613911610180840182613028565b9050828103604084015261392581876137e3565b91505061393d60608301856001600160a01b03169052565b8260808301529695505050505050565b80516007811061221e57600080fd5b60006080828403121561396e57600080fd5b613976612359565b90506139818261394d565b8152602082015160208201526040820151604082015260608201516139a5816121fe565b606082015292915050565b6000606082840312156139c257600080fd5b6139ca6123c1565b90506139d58261394d565b81526020820151602082015260408201516139ef816121fe565b604082015292915050565b60006020808385031215613a0d57600080fd5b82516001600160401b0380821115613a2457600080fd5b908401906101008287031215613a3957600080fd5b613a416123c1565b825182811115613a5057600080fd5b83019150601f82018713613a6357600080fd5b8151613a7161247b82612a3c565b81815260a0918202840186019186820191908a841115613a9057600080fd5b948701945b83861015613b105780868c031215613aad5760008081fd5b613ab56123e3565b613abe8761394d565b815288870151613acd81612b96565b818a0152604087810151613ae0816121fe565b9082015260608781015190820152608080880151613afd816121fe565b9082015283529485019491870191613a95565b818552613b1f8b89890161395c565b88860152613b2f8b8289016139b0565b604086015250929998505050505050505050565b600081518084526020808501808196508360051b8101915082860160005b858110156122cc578284038952815160408151818752613b83828801826137bb565b92880151968801969096525098850198935090840190600101613b61565b6000815160a08452613bb660a08501826137bb565b905060208301518482036020860152613bcf82826137bb565b91505060408301518482036040860152613be982826137bb565b9150506060830151611727606086018280516001600160a01b03168252602090810151910152565b60006101008251818552613c2782860182613b43565b91505060208301516020850152604083015160408501526060830151606085015260018060a01b03608084015116608085015263ffffffff60a08401511660a085015260c0830151613c8160c086018263ffffffff169052565b5060e083015184820360e08601526119228282613ba1565b600061014087835280602084015286516101208083860152613cbf610260860183613b43565b925060208901519150613cde6101608601836001600160a01b03169052565b6040898101516001600160a01b0390811661018088015260608b015163ffffffff9081166101a089015260808c0151166101c088015260a08b0151166101e087015260c08a0151151561020087015260e08a015115156102208701526101008a0151801515610240880152868503918701919091529150613d5f8389613c11565b9350613da9606086018880516001600160a01b031682526020808201519083015260408082015190830152606080820151908301526080808201519083015260a090810151910152565b6001600160a01b038616858201525050509695505050505050565b634e487b7160e01b600052603260045260246000fd5b600060018201613dec57613dec6136ba565b5060010190565b600060208284031215613e0557600080fd5b5051919050565b600060408284031215613e1e57600080fd5b613e26612331565b8251613e31816121fe565b81526020830151613e41816121fe565b60208201529392505050565b600060208284031215613e5f57600080fd5b815160ff81168114610e9857600080fd5b600060208284031215613e8257600080fd5b8151610e9881612b96565b60008251613e9f818460208701612501565b919091019291505056fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220a0bc614d091b9aa04596139e7bc62e9315db5a208570d02a4f4a05d10592fcee64736f6c634300080d0033",
  "deployedBytecode": "0x6080604052600436106101b75760003560e01c80636e32d3d3116100ec578063b203bb991161008a578063c55dae6311610064578063c55dae63146104fa578063c7b0156014610518578063e2b188c714610538578063e3dedd6b1461056557600080fd5b8063b203bb991461048c578063b8b81b5d146104ac578063c242a471146104cc57600080fd5b806382aa1c88116100c657806382aa1c881461041057806397e4769014610437578063a5c5ad1114610457578063a75ea55d1461046c57600080fd5b80636e32d3d3146103a257806372994135146103c257806378a2c9cd146103f057600080fd5b80634bd22a1b1161015957806354fd4d501161013357806354fd4d501461031c578063553b01091461034d5780635a22b88f1461036257806361b25b911461038257600080fd5b80634bd22a1b146102c65780634f1ef286146102f457806352d1902d1461030757600080fd5b8063344d175b11610195578063344d175b146102345780633659cfe61461025457806347c6b45e146102745780634b6561d11461029457600080fd5b80630415cc15146101bc57806320ffc53d146101de57806327e235e3146101fe575b600080fd5b3480156101c857600080fd5b506101dc6101d73660046121d0565b610585565b005b3480156101ea57600080fd5b506101dc6101f9366004612223565b61086f565b34801561020a57600080fd5b5061021e61021936600461225c565b610950565b60405161022b9190612279565b60405180910390f35b34801561024057600080fd5b506101dc61024f366004612223565b61097a565b34801561026057600080fd5b506101dc61026f36600461225c565b6109fe565b34801561028057600080fd5b506101dc61028f3660046122d9565b610add565b3480156102a057600080fd5b50609a546001600160a01b03165b6040516001600160a01b03909116815260200161022b565b3480156102d257600080fd5b506102e66102e136600461225c565b610b5e565b60405190815260200161022b565b6101dc6103023660046124b2565b610b6b565b34801561031357600080fd5b506102e6610c37565b34801561032857600080fd5b5060408051808201825260028152612b1960f11b6020820152905161022b9190612559565b34801561035957600080fd5b506102e6610cea565b34801561036e57600080fd5b506101dc61037d36600461257e565b610cfb565b34801561038e57600080fd5b5061021e61039d3660046125ba565b610dc2565b3480156103ae57600080fd5b506102ae6103bd3660046125d3565b610ddc565b3480156103ce57600080fd5b506103e26103dd3660046125f0565b610de9565b60405161022b929190612612565b3480156103fc57600080fd5b506102e661040b3660046126c2565b610e80565b34801561041c57600080fd5b50610425610e9f565b60405160ff909116815260200161022b565b34801561044357600080fd5b506101dc61045236600461225c565b610ea9565b34801561046357600080fd5b5061021e610f7f565b34801561047857600080fd5b506101dc6104873660046122d9565b610f8b565b34801561049857600080fd5b506102e66104a73660046126e7565b611043565b3480156104b857600080fd5b506101dc6104c7366004612705565b611065565b3480156104d857600080fd5b506104ec6104e73660046127b1565b6110fb565b60405161022b9291906129bd565b34801561050657600080fd5b506099546001600160a01b03166102ae565b34801561052457600080fd5b506101dc6105333660046129f2565b611321565b34801561054457600080fd5b50610558610553366004612dc3565b611439565b60405161022b9190612ef1565b34801561057157600080fd5b506102ae6105803660046125d3565b61152b565b600054610100900460ff16158080156105a55750600054600160ff909116105b806105bf5750303b1580156105bf575060005460ff166001145b6106275760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b6000805460ff19166001179055801561064a576000805461ff0019166101001790555b610652611536565b61065f602083018361225c565b609880546001600160a01b0319166001600160a01b039290921691909117905560408051808201825290819061069a9085016020860161225c565b6001600160a01b031681526020016106b8606085016040860161225c565b6001600160a01b039081169091528151609980546001600160a01b0319908116928416929092179055602090920151609a80549093169116179055610703608083016060840161225c565b609b80546001600160a01b0319166001600160a01b039283161790556098546040805163ec21896d60e01b8152905161079b93929092169163ec21896d916004808201926020929091908290030181865afa158015610766573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061078a9190612f04565b6098546001600160a01b03166115a3565b6108246107ae608084016060850161225c565b6001600160a01b031663ec21896d6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156107eb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061080f9190612f04565b61081f608085016060860161225c565b6115a3565b801561086b576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498906020015b60405180910390a15b5050565b6108987fa9bb56dd0bf7501666e4d616edd892185cdc45d735a001a809bd3db50c9004b8611617565b6001600160a01b0316336001600160a01b0316146108c95760405163ccad962160e01b815260040160405180910390fd5b604051635fbd140f60e01b8152609b60048201526001600160e01b0319831660248201526001600160a01b038216604482015273__$48805a21cd2d79ca776bf2c16e4893ad10$__90635fbd140f906064015b60006040518083038186803b15801561093457600080fd5b505af4158015610948573d6000803e3d6000fd5b505050505050565b6001600160a01b038116600090815260a3602052604090206060906109749061164a565b92915050565b6098546001600160a01b03166001600160a01b03166312d9a6ad6000336040516001600160e01b031960e085901b16815260048101929092526001600160a01b0316602482015260440160006040518083038186803b1580156109dc57600080fd5b505afa1580156109f0573d6000803e3d6000fd5b5050505061086b82826115a3565b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163003610a465760405162461bcd60e51b815260040161061e90612f21565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316610a8f600080516020613eaa833981519152546001600160a01b031690565b6001600160a01b031614610ab55760405162461bcd60e51b815260040161061e90612f6d565b610abe8161172f565b60408051600080825260208201909252610ada918391906117a5565b50565b33600090815260a360205260409081902090516334e3db7f60e21b815273__$f64f2ddc230f4d0d284eef95d6ec5afa1e$__9163d38f6dfc91610b299190879087908790600401612fb9565b60006040518083038186803b158015610b4157600080fd5b505af4158015610b55573d6000803e3d6000fd5b50505050505050565b6000610974609f83611915565b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163003610bb35760405162461bcd60e51b815260040161061e90612f21565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316610bfc600080516020613eaa833981519152546001600160a01b031690565b6001600160a01b031614610c225760405162461bcd60e51b815260040161061e90612f6d565b610c2b8261172f565b61086b828260016117a5565b6000306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610cd75760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c0000000000000000606482015260840161061e565b50600080516020613eaa83398151915290565b6000610cf6609b61192b565b905090565b610d247fd48e4fbd6adafe3cfb07fbd2d23fc8730687d90505f487670937f44787ab385a611617565b6001600160a01b0316336001600160a01b031614610d55576040516331683c7f60e11b815260040160405180910390fd5b60405163221efb0360e11b815273__$48805a21cd2d79ca776bf2c16e4893ad10$__9063443df60690610d8f90609b9085906004016130c9565b60006040518083038186803b158015610da757600080fd5b505af4158015610dbb573d6000803e3d6000fd5b5050505050565b600081815260a2602052604090206060906109749061164a565b6000610974609b83611939565b6040516376946fcf60e01b8152609b60048201526024810183905260448101829052606090819073__$48805a21cd2d79ca776bf2c16e4893ad10$__906376946fcf90606401600060405180830381865af4158015610e4c573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610e749190810190613191565b915091505b9250929050565b600082815260a260205260408120610e989083611915565b9392505050565b6000610cf66119b9565b6098546001600160a01b03166001600160a01b03166312d9a6ad6000336040516001600160e01b031960e085901b16815260048101929092526001600160a01b0316602482015260440160006040518083038186803b158015610f0b57600080fd5b505afa158015610f1f573d6000803e3d6000fd5b5050609a80546001600160a01b031981166001600160a01b038681169182179093556040805193909216808452602084019190915293507f09d77888d1122ffb279fb3d7805b2e51f877769941c981c9583b9dde616f7efd925001610862565b6060610cf6609f61164a565b6098546001600160a01b03166001600160a01b03166312d9a6ad6000336040516001600160e01b031960e085901b16815260048101929092526001600160a01b0316602482015260440160006040518083038186803b158015610fed57600080fd5b505afa158015611001573d6000803e3d6000fd5b50506040516334e3db7f60e21b815273__$f64f2ddc230f4d0d284eef95d6ec5afa1e$__925063d38f6dfc9150610b2990609f90879087908790600401612fb9565b6001600160a01b038216600090815260a360205260408120610e989083611915565b61108e7fd48e4fbd6adafe3cfb07fbd2d23fc8730687d90505f487670937f44787ab385a611617565b6001600160a01b0316336001600160a01b0316146110bf576040516331683c7f60e11b815260040160405180910390fd5b604051631daa22cf60e11b815273__$48805a21cd2d79ca776bf2c16e4893ad10$__90633b54459e9061091c90609b908690869060040161324b565b6111036120ac565b60408051808201909152600080825260208201526111407f9b4d0cb4e76b932bf6c979cd152d23fb4da2bb167c72cceed92f670a5328c4c3611617565b6001600160a01b0316336001600160a01b03161461117157604051630fd6440760e01b815260040160405180910390fd5b61117961211b565b6099546001600160a01b031661119560a08d0160808e0161225c565b6001600160a01b031614611251576111cc7f5e694b91d38e1170456b92da3190b84658a79619900abc1cb4332fd62ab25ee4611617565b6001600160a01b031663ce9adde38c8c8a8a8a8a6040518763ffffffff1660e01b815260040161120196959493929190613325565b6000604051808303816000875af1158015611220573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261124891908101906134e0565b92509050611283565b61125a8a6135e7565b6099546001600160a01b0316835290506112726119b9565b61127d90600a6137ac565b60208301525b60405163f83565c160e01b815273__$f64f2ddc230f4d0d284eef95d6ec5afa1e$__9063f83565c1906112c390609f908f9086908f908f9060040161386a565b600060405180830381865af41580156112e0573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261130891908101906139fa565b925061131383611a27565b509850989650505050505050565b8361134b7f80e923a5a548bf8cd1c0d5679e7fb52a28d9fd42e9642a412b581817718d9aa4611617565b6001600160a01b0316637dc330dc82336040516001600160e01b031960e085901b16815260048101929092526001600160a01b0316602482015260440160006040518083038186803b1580156113a057600080fd5b505afa1580156113b4573d6000803e3d6000fd5b505050600086815260a260205260409081902090516334e3db7f60e21b815273__$f64f2ddc230f4d0d284eef95d6ec5afa1e$__925063d38f6dfc9161140291889088908890600401612fb9565b60006040518083038186803b15801561141a57600080fd5b505af415801561142e573d6000803e3d6000fd5b505050505050505050565b6114416120ac565b61146a7fc812c4753531186b178644ec70482dbb7a11384b640929d30f5ed326dcc237bf611617565b6001600160a01b0316336001600160a01b03161461149b5760405163348da9e760e01b815260040160405180910390fd5b6040516320d3d29960e01b815273__$f64f2ddc230f4d0d284eef95d6ec5afa1e$__906320d3d299906114db90609f908890889088903390600401613c99565b600060405180830381865af41580156114f8573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261152091908101906139fa565b9050610e9881611a27565b600061097482611617565b600054610100900460ff166115a15760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b606482015260840161061e565b565b6115ad8282611bec565b6001600160e01b0319821660008181526097602090815260409182902080546001600160a01b0319166001600160a01b0386169081179091558251938452908301527f829f418d36673ca2fd64b53bef8ccf5524c4e01d13d292ddb11a4dac74ab22ea9101610862565b60008161162381611d1f565b50506001600160e01b0319166000908152609760205260409020546001600160a01b031690565b6060600061165783611d6b565b90506000816001600160401b038111156116735761167361231b565b6040519080825280602002602001820160405280156116b857816020015b60408051808201909152600080825260208201528152602001906001900390816116915790505b50905060005b82811015611727576000806116d38784611d76565b915091506040518060400160405280836001600160a01b031681526020018281525084848151811061170757611707613dc4565b60200260200101819052505050808061171f90613dda565b9150506116be565b509392505050565b6098546001600160a01b03166001600160a01b03166312d9a6ad6000336040516001600160e01b031960e085901b16815260048101929092526001600160a01b0316602482015260440160006040518083038186803b15801561179157600080fd5b505afa158015610dbb573d6000803e3d6000fd5b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff16156117dd576117d883611d92565b505050565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015611837575060408051601f3d908101601f1916820190925261183491810190613df3565b60015b61189a5760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b606482015260840161061e565b600080516020613eaa83398151915281146119095760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b606482015260840161061e565b506117d8838383611e2e565b6000806119228484611e59565b95945050505050565b600061097482600101611e71565b8154604051630b42144760e41b81526001600160e01b0319831660048201526000916001600160a01b03169063b4214470906024016040805180830381865afa15801561198a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119ae9190613e0c565b602001519392505050565b6099546040805163313ce56760e01b815290516000926001600160a01b03169163313ce5679160048083019260209291908290030181865afa158015611a03573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cf69190613e4d565b60005b815151811015611aeb57600082600001518281518110611a4c57611a4c613dc4565b602002602001015190508060600151600003611a685750611ad9565b80608001516001600160a01b031681600001516006811115611a8c57611a8c612883565b82604001516001600160a01b03167fbf41aad4c3074058a613f4e88cea850e86e57d902b608bb02fb715b64929a40f8460600151604051611acf91815260200190565b60405180910390a4505b80611ae381613dda565b915050611a2a565b5060208101516040015115611b6e576020810151606081015190516001600160a01b03909116906006811115611b2357611b23612883565b8260200151602001517fba84758cdc92f6209ddb58b123ab7b0a05fcc33f85d5c4af3c6f4639545829c4846020015160400151604051611b6591815260200190565b60405180910390a45b60408101516020015115610ada578060400151604001516001600160a01b03168160400151600001516006811115611ba857611ba8612883565b7f8706acb6136091b8d5eb6f99d134c8bfd3f2cce3ac941753fd5be2757f165c63836040015160200151604051611be191815260200190565b60405180910390a350565b6040516301ffc9a760e01b815263ec21896d60e01b60048201526001600160a01b038216906301ffc9a790602401602060405180830381865afa158015611c37573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c5b9190613e70565b611c785760405163324ce8f560e01b815260040160405180910390fd5b6000816001600160a01b031663ec21896d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611cb8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611cdc9190612f04565b90506001600160e01b0319838116908216146117d857604051633f7810d760e21b81526001600160e01b031980851660048301528216602482015260440161061e565b6001600160e01b031981166000908152609760205260409020546001600160a01b0316610ada576040516303d5484160e11b81526001600160e01b03198216600482015260240161061e565b600061097482611e7b565b6000808080611d858686611e86565b9097909650945050505050565b6001600160a01b0381163b611dff5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b606482015260840161061e565b600080516020613eaa83398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b611e3783611eb1565b600082511180611e445750805b156117d857611e538383611ef1565b50505050565b6000808080611d85866001600160a01b038716611fdc565b6000610974825490565b600061097482611e71565b60008080611e94858561201e565b600081815260029690960160205260409095205494959350505050565b611eba81611d92565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b60606001600160a01b0383163b611f595760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b606482015260840161061e565b600080846001600160a01b031684604051611f749190613e8d565b600060405180830381855af49150503d8060008114611faf576040519150601f19603f3d011682016040523d82523d6000602084013e611fb4565b606091505b50915091506119228282604051806060016040528060278152602001613eca6027913961202a565b600081815260028301602052604081205481908061200b57611ffe8585612063565b925060009150610e799050565b600192509050610e79565b509250929050565b6000610e988383612082565b60608315612039575081610e98565b8251156120495782518084602001fd5b8160405162461bcd60e51b815260040161061e9190612559565b6000610e98838360008181526001830160205260408120541515610e98565b600082600001828154811061209957612099613dc4565b9060005260206000200154905092915050565b6040518060600160405280606081526020016120f360408051608081019091528060008152602001600081526020016000815260200160006001600160a01b031681525090565b815260408051606081018252600080825260208281018290529282015291015290565b905290565b604051806101200160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001612178604051806040016040528060006001600160e01b0319168152602001606081525090565b81526020016121a4604051806040016040528060006001600160e01b0319168152602001606081525090565b8152602001612116604051806040016040528060006001600160e01b0319168152602001606081525090565b6000608082840312156121e257600080fd5b50919050565b6001600160e01b031981168114610ada57600080fd5b6001600160a01b0381168114610ada57600080fd5b803561221e816121fe565b919050565b6000806040838503121561223657600080fd5b8235612241816121e8565b91506020830135612251816121fe565b809150509250929050565b60006020828403121561226e57600080fd5b8135610e98816121fe565b602080825282518282018190526000919060409081850190868401855b828110156122cc576122bc84835180516001600160a01b03168252602090810151910152565b9284019290850190600101612296565b5091979650505050505050565b6000806000606084860312156122ee57600080fd5b83356122f9816121fe565b9250602084013591506040840135612310816121fe565b809150509250925092565b634e487b7160e01b600052604160045260246000fd5b604080519081016001600160401b03811182821017156123535761235361231b565b60405290565b604051608081016001600160401b03811182821017156123535761235361231b565b60405161010081016001600160401b03811182821017156123535761235361231b565b60405161012081016001600160401b03811182821017156123535761235361231b565b604051606081016001600160401b03811182821017156123535761235361231b565b60405160a081016001600160401b03811182821017156123535761235361231b565b604051601f8201601f191681016001600160401b038111828210171561242d5761242d61231b565b604052919050565b60006001600160401b0382111561244e5761244e61231b565b50601f01601f191660200190565b600082601f83011261246d57600080fd5b813561248061247b82612435565b612405565b81815284602083860101111561249557600080fd5b816020850160208301376000918101602001919091529392505050565b600080604083850312156124c557600080fd5b82356124d0816121fe565b915060208301356001600160401b038111156124eb57600080fd5b6124f78582860161245c565b9150509250929050565b60005b8381101561251c578181015183820152602001612504565b83811115611e535750506000910152565b60008151808452612545816020860160208601612501565b601f01601f19169290920160200192915050565b602081526000610e98602083018461252d565b6000604082840312156121e257600080fd5b60006020828403121561259057600080fd5b81356001600160401b038111156125a657600080fd5b6125b28482850161256c565b949350505050565b6000602082840312156125cc57600080fd5b5035919050565b6000602082840312156125e557600080fd5b8135610e98816121e8565b6000806040838503121561260357600080fd5b50508035926020909101359150565b6040808252835182820181905260009190606090818501906020808901865b838110156126565781516001600160a01b031685529382019390820190600101612631565b5050868303818801528751808452888201938201925060005b818110156126b357845180516001600160a01b039081168652848201516001600160e01b03191685870152908801511687850152938201939285019260010161266f565b50919998505050505050505050565b600080604083850312156126d557600080fd5b823591506020830135612251816121fe565b600080604083850312156126fa57600080fd5b8235612241816121fe565b6000806040838503121561271857600080fd5b82356001600160401b0381111561272e57600080fd5b61273a8582860161256c565b9250506020830135612251816121fe565b600060e082840312156121e257600080fd5b600061012082840312156121e257600080fd5b60008083601f84011261278257600080fd5b5081356001600160401b0381111561279957600080fd5b602083019150836020828501011115610e7957600080fd5b60008060008060008060008060c0898b0312156127cd57600080fd5b88356001600160401b03808211156127e457600080fd5b6127f08c838d0161274b565b995060208b013591508082111561280657600080fd5b6128128c838d0161275d565b985061282060408c01612213565b975060608b0135965060808b013591508082111561283d57600080fd5b6128498c838d01612770565b909650945060a08b013591508082111561286257600080fd5b5061286f8b828c01612770565b999c989b5096995094979396929594505050565b634e487b7160e01b600052602160045260246000fd5b600781106128b757634e487b7160e01b600052602160045260246000fd5b9052565b6128c6828251612899565b60208181015190830152604080820151908301526060908101516001600160a01b0316910152565b6128f9828251612899565b602081810151908301526040908101516001600160a01b0316910152565b80516101008084528151908401819052600091610120850191602091820190845b8181101561299657825161294d868251612899565b808501511515868601526040808201516001600160a01b039081169188019190915260608083015190880152608091820151169086015260a09094019391830191600101612938565b505050808401516129a9828701826128bb565b5050604083015161172760a08601826128ee565b6060815260006129d06060830185612917565b9050610e98602083018480516001600160a01b03168252602090810151910152565b60008060008060808587031215612a0857600080fd5b843593506020850135612a1a816121fe565b9250604085013591506060850135612a31816121fe565b939692955090935050565b60006001600160401b03821115612a5557612a5561231b565b5060051b60200190565b600060408284031215612a7157600080fd5b612a79612331565b90508135612a86816121e8565b815260208201356001600160401b03811115612aa157600080fd5b612aad8482850161245c565b60208301525092915050565b600082601f830112612aca57600080fd5b81356020612ada61247b83612a3c565b82815260059290921b84018101918181019086841115612af957600080fd5b8286015b84811015612b775780356001600160401b0380821115612b1d5760008081fd5b908801906040828b03601f1901811315612b375760008081fd5b612b3f612331565b8784013583811115612b515760008081fd5b612b5f8d8a83880101612a5f565b82525092013586830152508352918301918301612afd565b509695505050505050565b803563ffffffff8116811461221e57600080fd5b8015158114610ada57600080fd5b803561221e81612b96565b600081830360a0811215612bc257600080fd5b612bca612359565b915082356001600160401b0380821115612be357600080fd5b612bef86838701612a5f565b84526020850135915080821115612c0557600080fd5b612c1186838701612a5f565b60208501526040850135915080821115612c2a57600080fd5b50612c3785828601612a5f565b6040840152506040605f1982011215612c4f57600080fd5b50612c58612331565b6060830135612c66816121fe565b80825250608083013560208201528060608301525092915050565b60006101008284031215612c9457600080fd5b612c9c61237b565b905081356001600160401b0380821115612cb557600080fd5b612cc185838601612ab9565b8352602084013560208401526040840135604084015260608401356060840152612ced60808501612213565b6080840152612cfe60a08501612b82565b60a0840152612d0f60c08501612b82565b60c084015260e0840135915080821115612d2857600080fd5b50612d3584828501612baf565b60e08301525092915050565b600060c08284031215612d5357600080fd5b60405160c081018181106001600160401b0382111715612d7557612d7561231b565b6040529050808235612d86816121fe565b808252506020830135602082015260408301356040820152606083013560608201526080830135608082015260a083013560a08201525092915050565b6000806000610100808587031215612dda57600080fd5b84356001600160401b0380821115612df157600080fd5b908601906101208289031215612e0657600080fd5b612e0e61239e565b823582811115612e1d57600080fd5b612e298a828601612ab9565b825250612e3860208401612213565b6020820152612e4960408401612213565b6040820152612e5a60608401612b82565b6060820152612e6b60808401612b82565b6080820152612e7c60a08401612213565b60a0820152612e8d60c08401612ba4565b60c0820152612e9e60e08401612ba4565b60e0820152612eae848401612ba4565b84820152809650506020870135925080831115612eca57600080fd5b5050612ed886828701612c81565b925050612ee88560408601612d41565b90509250925092565b602081526000610e986020830184612917565b600060208284031215612f1657600080fd5b8151610e98816121e8565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b19195b1959d85d1958d85b1b60a21b606082015260800190565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b6163746976652070726f787960a01b606082015260800190565b9384526001600160a01b039283166020850152604084019190915216606082015260800190565b60008235603e19833603018112612ff657600080fd5b90910192915050565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b60008135613035816121e8565b6001600160e01b0319168352602082013536839003601e1901811261305957600080fd5b820180356001600160401b0381111561307157600080fd5b80360384131561308057600080fd5b60406020860152611922604086018260208501612fff565b60006130a48283612fe0565b604084526130b56040850182613028565b602093840135949093019390935250919050565b8281526040602082015260006125b26040830184613098565b600082601f8301126130f357600080fd5b8151602061310361247b83612a3c565b8281526060928302850182019282820191908785111561312257600080fd5b8387015b858110156131845781818a03121561313e5760008081fd5b6131466123c1565b8151613151816121fe565b815281860151613160816121e8565b81870152604082810151613173816121fe565b908201528452928401928101613126565b5090979650505050505050565b600080604083850312156131a457600080fd5b82516001600160401b03808211156131bb57600080fd5b818501915085601f8301126131cf57600080fd5b815160206131df61247b83612a3c565b82815260059290921b840181019181810190898411156131fe57600080fd5b948201945b83861015613225578551613216816121fe565b82529482019490820190613203565b9188015191965090935050508082111561323e57600080fd5b506124f7858286016130e2565b8381526060602082015260006132646060830185613098565b905060018060a01b0383166040830152949350505050565b6000610120823584526020830135602085015260408301356040850152606083013560608501526080830135608085015260a083013560a08501526132c460c0840184612fe0565b8160c08601526132d682860182613028565b9150506132e660e0840184612fe0565b84820360e08601526132f88282613028565b91505061010061330a81850185612fe0565b8583038287015261331b8382613028565b9695505050505050565b608081528635608082015260006020880135613340816121fe565b6001600160a01b0390811660a084015260408901359061335f826121fe565b1660c083015261337160608901612b82565b63ffffffff1660e083015261338860808901612213565b6001600160a01b031661010083015260a08801356101208301526133af60c0890189612fe0565b60e06101408401526133c5610160840182613028565b905082810360208401526133d9818961327c565b905082810360408401526133ee818789612fff565b90508281036060840152613403818587612fff565b9998505050505050505050565b60006040828403121561342257600080fd5b61342a612331565b90508151613437816121e8565b815260208201516001600160401b0381111561345257600080fd5b8201601f8101841361346357600080fd5b805161347161247b82612435565b81815285602083850101111561348657600080fd5b613497826020830160208601612501565b602084015250909392505050565b6000604082840312156134b757600080fd5b6134bf612331565b905081516134cc816121fe565b808252506020820151602082015292915050565b600080606083850312156134f357600080fd5b82516001600160401b038082111561350a57600080fd5b90840190610120828703121561351f57600080fd5b61352761239e565b825181526020830151602082015260408301516040820152606083015160608201526080830151608082015260a083015160a082015260c08301518281111561356f57600080fd5b61357b88828601613410565b60c08301525060e08301518281111561359357600080fd5b61359f88828601613410565b60e08301525061010080840151838111156135b957600080fd5b6135c589828701613410565b8284015250508094505050506135de84602085016134a5565b90509250929050565b600061012082360312156135fa57600080fd5b61360261239e565b823581526020830135602082015260408301356040820152606083013560608201526080830135608082015260a083013560a082015260c08301356001600160401b038082111561365257600080fd5b61365e36838701612a5f565b60c084015260e085013591508082111561367757600080fd5b61368336838701612a5f565b60e08401526101009150818501358181111561369e57600080fd5b6136aa36828801612a5f565b8385015250505080915050919050565b634e487b7160e01b600052601160045260246000fd5b600181815b808511156120165781600019048211156136f1576136f16136ba565b808516156136fe57918102915b93841c93908002906136d5565b60008261371a57506001610974565b8161372757506000610974565b816001811461373d576002811461374757613763565b6001915050610974565b60ff841115613758576137586136ba565b50506001821b610974565b5060208310610133831016604e8410600b8410161715613786575081810a610974565b61379083836136d0565b80600019048211156137a4576137a46136ba565b029392505050565b6000610e9860ff84168361370b565b63ffffffff60e01b815116825260006020820151604060208501526125b2604085018261252d565b6000610120825184526020830151602085015260408301516040850152606083015160608501526080830151608085015260a083015160a085015260c08301518160c0860152613835828601826137bb565b91505060e083015184820360e086015261384f82826137bb565b915050610100808401518583038287015261331b83826137bb565b85815260a06020820152843560a08201526000602086013561388b816121fe565b6001600160a01b0390811660c08401526040870135906138aa826121fe565b1660e08301526138bc60608701612b82565b63ffffffff166101008301526138d460808701612213565b6001600160a01b031661012083015260a08601356101408301526138fb60c0870187612fe0565b60e0610160840152613911610180840182613028565b9050828103604084015261392581876137e3565b91505061393d60608301856001600160a01b03169052565b8260808301529695505050505050565b80516007811061221e57600080fd5b60006080828403121561396e57600080fd5b613976612359565b90506139818261394d565b8152602082015160208201526040820151604082015260608201516139a5816121fe565b606082015292915050565b6000606082840312156139c257600080fd5b6139ca6123c1565b90506139d58261394d565b81526020820151602082015260408201516139ef816121fe565b604082015292915050565b60006020808385031215613a0d57600080fd5b82516001600160401b0380821115613a2457600080fd5b908401906101008287031215613a3957600080fd5b613a416123c1565b825182811115613a5057600080fd5b83019150601f82018713613a6357600080fd5b8151613a7161247b82612a3c565b81815260a0918202840186019186820191908a841115613a9057600080fd5b948701945b83861015613b105780868c031215613aad5760008081fd5b613ab56123e3565b613abe8761394d565b815288870151613acd81612b96565b818a0152604087810151613ae0816121fe565b9082015260608781015190820152608080880151613afd816121fe565b9082015283529485019491870191613a95565b818552613b1f8b89890161395c565b88860152613b2f8b8289016139b0565b604086015250929998505050505050505050565b600081518084526020808501808196508360051b8101915082860160005b858110156122cc578284038952815160408151818752613b83828801826137bb565b92880151968801969096525098850198935090840190600101613b61565b6000815160a08452613bb660a08501826137bb565b905060208301518482036020860152613bcf82826137bb565b91505060408301518482036040860152613be982826137bb565b9150506060830151611727606086018280516001600160a01b03168252602090810151910152565b60006101008251818552613c2782860182613b43565b91505060208301516020850152604083015160408501526060830151606085015260018060a01b03608084015116608085015263ffffffff60a08401511660a085015260c0830151613c8160c086018263ffffffff169052565b5060e083015184820360e08601526119228282613ba1565b600061014087835280602084015286516101208083860152613cbf610260860183613b43565b925060208901519150613cde6101608601836001600160a01b03169052565b6040898101516001600160a01b0390811661018088015260608b015163ffffffff9081166101a089015260808c0151166101c088015260a08b0151166101e087015260c08a0151151561020087015260e08a015115156102208701526101008a0151801515610240880152868503918701919091529150613d5f8389613c11565b9350613da9606086018880516001600160a01b031682526020808201519083015260408082015190830152606080820151908301526080808201519083015260a090810151910152565b6001600160a01b038616858201525050509695505050505050565b634e487b7160e01b600052603260045260246000fd5b600060018201613dec57613dec6136ba565b5060010190565b600060208284031215613e0557600080fd5b5051919050565b600060408284031215613e1e57600080fd5b613e26612331565b8251613e31816121fe565b81526020830151613e41816121fe565b60208201529392505050565b600060208284031215613e5f57600080fd5b815160ff81168114610e9857600080fd5b600060208284031215613e8257600080fd5b8151610e9881612b96565b60008251613e9f818460208701612501565b919091019291505056fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220a0bc614d091b9aa04596139e7bc62e9315db5a208570d02a4f4a05d10592fcee64736f6c634300080d0033",
  "linkReferences": {
    "contracts/accounting/Accounts.sol": {
      "Accounts": [
        {
          "length": 20,
          "start": 3100
        },
        {
          "length": 20,
          "start": 4402
        },
        {
          "length": 20,
          "start": 5042
        },
        {
          "length": 20,
          "start": 5365
        },
        {
          "length": 20,
          "start": 5578
        }
      ]
    },
    "contracts/asset/Assets.sol": {
      "Assets": [
        {
          "length": 20,
          "start": 2590
        },
        {
          "length": 20,
          "start": 3716
        },
        {
          "length": 20,
          "start": 3890
        },
        {
          "length": 20,
          "start": 4590
        }
      ]
    }
  },
  "deployedLinkReferences": {
    "contracts/accounting/Accounts.sol": {
      "Accounts": [
        {
          "length": 20,
          "start": 2812
        },
        {
          "length": 20,
          "start": 4114
        },
        {
          "length": 20,
          "start": 4754
        },
        {
          "length": 20,
          "start": 5077
        },
        {
          "length": 20,
          "start": 5290
        }
      ]
    },
    "contracts/asset/Assets.sol": {
      "Assets": [
        {
          "length": 20,
          "start": 2302
        },
        {
          "length": 20,
          "start": 3428
        },
        {
          "length": 20,
          "start": 3602
        },
        {
          "length": 20,
          "start": 4302
        }
      ]
    }
  }
}
