{
  "_format": "hh-sol-artifact-1",
  "contractName": "RiskOracle",
  "sourceName": "contracts/RiskSteward/RiskOracle.sol",
  "abi": [
    {
      "inputs": [],
      "stateMutability": "nonpayable",
      "type": "constructor"
    },
    {
      "inputs": [],
      "name": "ArrayLengthMismatch",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "InvalidUpdateId",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "InvalidUpdateTypeString",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "NoUpdateFound",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "RenounceOwnershipNotAllowed",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "SenderAlreadyAuthorized",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "SenderNotAuthorized",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "sender",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "calledContract",
          "type": "address"
        },
        {
          "internalType": "string",
          "name": "methodSignature",
          "type": "string"
        }
      ],
      "name": "Unauthorized",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "UpdateTypeAlreadyExists",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "UpdateTypeNotActive",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "UpdateTypeNotFound",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "UpdateTypeStatusUnchanged",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "ZeroAddressNotAllowed",
      "type": "error"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "sender",
          "type": "address"
        }
      ],
      "name": "AuthorizedSenderAdded",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "sender",
          "type": "address"
        }
      ],
      "name": "AuthorizedSenderRemoved",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint8",
          "name": "version",
          "type": "uint8"
        }
      ],
      "name": "Initialized",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "address",
          "name": "oldAccessControlManager",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "newAccessControlManager",
          "type": "address"
        }
      ],
      "name": "NewAccessControlManager",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "previousOwner",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "newOwner",
          "type": "address"
        }
      ],
      "name": "OwnershipTransferStarted",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "previousOwner",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "newOwner",
          "type": "address"
        }
      ],
      "name": "OwnershipTransferred",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "string",
          "name": "referenceId",
          "type": "string"
        },
        {
          "indexed": true,
          "internalType": "uint256",
          "name": "updateId",
          "type": "uint256"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "market",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "string",
          "name": "updateType",
          "type": "string"
        },
        {
          "indexed": false,
          "internalType": "bytes",
          "name": "newValue",
          "type": "bytes"
        },
        {
          "indexed": false,
          "internalType": "bytes",
          "name": "previousValue",
          "type": "bytes"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "timestamp",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "publisher",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "bytes",
          "name": "additionalData",
          "type": "bytes"
        }
      ],
      "name": "UpdatePublished",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "string",
          "name": "updateType",
          "type": "string"
        },
        {
          "indexed": false,
          "internalType": "bool",
          "name": "previousActive",
          "type": "bool"
        },
        {
          "indexed": false,
          "internalType": "bool",
          "name": "active",
          "type": "bool"
        }
      ],
      "name": "UpdateTypeActiveStatusChanged",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "string",
          "name": "updateType",
          "type": "string"
        }
      ],
      "name": "UpdateTypeAdded",
      "type": "event"
    },
    {
      "inputs": [],
      "name": "acceptOwnership",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "accessControlManager",
      "outputs": [
        {
          "internalType": "contract IAccessControlManagerV8",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "name": "activeUpdateTypes",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "sender",
          "type": "address"
        }
      ],
      "name": "addAuthorizedSender",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "string",
          "name": "newUpdateType",
          "type": "string"
        }
      ],
      "name": "addUpdateType",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "name": "allUpdateTypes",
      "outputs": [
        {
          "internalType": "string",
          "name": "",
          "type": "string"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "allUpdateTypesLength",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "name": "authorizedSenders",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "string",
          "name": "updateType",
          "type": "string"
        }
      ],
      "name": "getActiveUpdateTypes",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "getAllUpdateTypes",
      "outputs": [
        {
          "internalType": "string[]",
          "name": "",
          "type": "string[]"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "string",
          "name": "updateType",
          "type": "string"
        },
        {
          "internalType": "address",
          "name": "market",
          "type": "address"
        }
      ],
      "name": "getLatestUpdateByTypeAndMarket",
      "outputs": [
        {
          "components": [
            {
              "internalType": "string",
              "name": "referenceId",
              "type": "string"
            },
            {
              "internalType": "uint256",
              "name": "updateId",
              "type": "uint256"
            },
            {
              "internalType": "address",
              "name": "market",
              "type": "address"
            },
            {
              "internalType": "string",
              "name": "updateType",
              "type": "string"
            },
            {
              "internalType": "bytes32",
              "name": "updateTypeKey",
              "type": "bytes32"
            },
            {
              "internalType": "bytes",
              "name": "newValue",
              "type": "bytes"
            },
            {
              "internalType": "bytes",
              "name": "previousValue",
              "type": "bytes"
            },
            {
              "internalType": "uint256",
              "name": "timestamp",
              "type": "uint256"
            },
            {
              "internalType": "address",
              "name": "publisher",
              "type": "address"
            },
            {
              "internalType": "uint96",
              "name": "poolId",
              "type": "uint96"
            },
            {
              "internalType": "uint32",
              "name": "destLzEid",
              "type": "uint32"
            },
            {
              "internalType": "bytes",
              "name": "additionalData",
              "type": "bytes"
            }
          ],
          "internalType": "struct RiskParameterUpdate",
          "name": "",
          "type": "tuple"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "string",
          "name": "updateType",
          "type": "string"
        },
        {
          "internalType": "address",
          "name": "market",
          "type": "address"
        }
      ],
      "name": "getLatestUpdateIdByTypeAndMarket",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "updateId",
          "type": "uint256"
        }
      ],
      "name": "getUpdateById",
      "outputs": [
        {
          "components": [
            {
              "internalType": "string",
              "name": "referenceId",
              "type": "string"
            },
            {
              "internalType": "uint256",
              "name": "updateId",
              "type": "uint256"
            },
            {
              "internalType": "address",
              "name": "market",
              "type": "address"
            },
            {
              "internalType": "string",
              "name": "updateType",
              "type": "string"
            },
            {
              "internalType": "bytes32",
              "name": "updateTypeKey",
              "type": "bytes32"
            },
            {
              "internalType": "bytes",
              "name": "newValue",
              "type": "bytes"
            },
            {
              "internalType": "bytes",
              "name": "previousValue",
              "type": "bytes"
            },
            {
              "internalType": "uint256",
              "name": "timestamp",
              "type": "uint256"
            },
            {
              "internalType": "address",
              "name": "publisher",
              "type": "address"
            },
            {
              "internalType": "uint96",
              "name": "poolId",
              "type": "uint96"
            },
            {
              "internalType": "uint32",
              "name": "destLzEid",
              "type": "uint32"
            },
            {
              "internalType": "bytes",
              "name": "additionalData",
              "type": "bytes"
            }
          ],
          "internalType": "struct RiskParameterUpdate",
          "name": "",
          "type": "tuple"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "accessControlManager_",
          "type": "address"
        }
      ],
      "name": "initialize",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "updateTypeKey",
          "type": "bytes32"
        },
        {
          "internalType": "address",
          "name": "market",
          "type": "address"
        }
      ],
      "name": "latestUpdateIdByMarketAndType",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "updateId",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "owner",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "pendingOwner",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "string[]",
          "name": "referenceIds",
          "type": "string[]"
        },
        {
          "internalType": "bytes[]",
          "name": "newValues",
          "type": "bytes[]"
        },
        {
          "internalType": "string[]",
          "name": "updateTypes",
          "type": "string[]"
        },
        {
          "internalType": "address[]",
          "name": "markets",
          "type": "address[]"
        },
        {
          "internalType": "uint96[]",
          "name": "poolIds",
          "type": "uint96[]"
        },
        {
          "internalType": "uint32[]",
          "name": "dstEid",
          "type": "uint32[]"
        },
        {
          "internalType": "bytes[]",
          "name": "additionalData",
          "type": "bytes[]"
        }
      ],
      "name": "publishBulkRiskParameterUpdates",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "string",
          "name": "referenceId",
          "type": "string"
        },
        {
          "internalType": "bytes",
          "name": "newValue",
          "type": "bytes"
        },
        {
          "internalType": "string",
          "name": "updateType",
          "type": "string"
        },
        {
          "internalType": "address",
          "name": "market",
          "type": "address"
        },
        {
          "internalType": "uint96",
          "name": "poolId",
          "type": "uint96"
        },
        {
          "internalType": "uint32",
          "name": "dstEid",
          "type": "uint32"
        },
        {
          "internalType": "bytes",
          "name": "additionalData",
          "type": "bytes"
        }
      ],
      "name": "publishRiskParameterUpdate",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "sender",
          "type": "address"
        }
      ],
      "name": "removeAuthorizedSender",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "renounceOwnership",
      "outputs": [],
      "stateMutability": "pure",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "accessControlManager_",
          "type": "address"
        }
      ],
      "name": "setAccessControlManager",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "string",
          "name": "updateType",
          "type": "string"
        },
        {
          "internalType": "bool",
          "name": "active",
          "type": "bool"
        }
      ],
      "name": "setUpdateTypeActive",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "newOwner",
          "type": "address"
        }
      ],
      "name": "transferOwnership",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "updateCounter",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "name": "updatesById",
      "outputs": [
        {
          "internalType": "string",
          "name": "referenceId",
          "type": "string"
        },
        {
          "internalType": "uint256",
          "name": "updateId",
          "type": "uint256"
        },
        {
          "internalType": "address",
          "name": "market",
          "type": "address"
        },
        {
          "internalType": "string",
          "name": "updateType",
          "type": "string"
        },
        {
          "internalType": "bytes32",
          "name": "updateTypeKey",
          "type": "bytes32"
        },
        {
          "internalType": "bytes",
          "name": "newValue",
          "type": "bytes"
        },
        {
          "internalType": "bytes",
          "name": "previousValue",
          "type": "bytes"
        },
        {
          "internalType": "uint256",
          "name": "timestamp",
          "type": "uint256"
        },
        {
          "internalType": "address",
          "name": "publisher",
          "type": "address"
        },
        {
          "internalType": "uint96",
          "name": "poolId",
          "type": "uint96"
        },
        {
          "internalType": "uint32",
          "name": "destLzEid",
          "type": "uint32"
        },
        {
          "internalType": "bytes",
          "name": "additionalData",
          "type": "bytes"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    }
  ],
  "bytecode": "0x6080604052348015600f57600080fd5b506016601a565b60d8565b600054610100900460ff161560855760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff908116101560d6576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6134c6806100e76000396000f3fe608060405234801561001057600080fd5b50600436106101ae5760003560e01c8063986576fa116100ee578063c6b8ab4211610097578063ec1930b011610071578063ec1930b01461044b578063f2fde38b1461045e578063f660fe6914610471578063fa7229ee1461048457600080fd5b8063c6b8ab42146103fa578063cbd579671461041a578063e30c39781461042d57600080fd5b8063c030ce7b116100c8578063c030ce7b146103bf578063c4d66de8146103d4578063c4e1a280146103e757600080fd5b8063986576fa1461034b578063b39b55be14610376578063b4a0bdf3146103a157600080fd5b8063592d37331161015b57806377abc9bd1161013557806377abc9bd146102de57806379ba5097146102f157806387d7f21f146102f95780638da5cb5b1461030c57600080fd5b8063592d3733146102ab5780636f324967146102b3578063715018a6146102d657600080fd5b806334496b5a1161018c57806334496b5a1461021757806337759b9a1461026057806343b62b261461028057600080fd5b80630e32cb86146101b3578063157b1225146101c85780631687fe8e14610200575b600080fd5b6101c66101c13660046126fc565b610497565b005b6101eb6101d636600461271e565b60cb6020526000908152604090205460ff1681565b60405190151581526020015b60405180910390f35b61020960c95481565b6040519081526020016101f7565b610209610225366004612843565b8151602092830120600090815260ce8352604080822073ffffffffffffffffffffffffffffffffffffffff9390931682529190925290205490565b61027361026e36600461271e565b6104ab565b6040516101f791906128ff565b61020961028e366004612a68565b60ce60209081526000928352604080842090915290825290205481565b60ca54610209565b6101eb6102c13660046126fc565b60cd6020526000908152604090205460ff1681565b6101c6610933565b6101c66102ec366004612a8b565b610965565b6101c6610ac7565b6101c6610307366004612af8565b610b7e565b60335473ffffffffffffffffffffffffffffffffffffffff165b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101f7565b6101eb610359366004612a8b565b8051602091820120600090815260cb909152604090205460ff1690565b61038961038436600461271e565b610bdf565b6040516101f79c9b9a99989796959493929190612bd7565b60975473ffffffffffffffffffffffffffffffffffffffff16610326565b6103c7610f3d565b6040516101f79190612cc1565b6101c66103e23660046126fc565b611016565b6101c66103f5366004612f29565b61118d565b61040d61040836600461271e565b611335565b6040516101f79190613035565b6101c66104283660046126fc565b6113e1565b60655473ffffffffffffffffffffffffffffffffffffffff16610326565b6101c6610459366004613056565b6114d4565b6101c661046c3660046126fc565b611618565b61027361047f366004612843565b6116c8565b6101c66104923660046126fc565b611b82565b61049f611c82565b6104a881611d05565b50565b6105526040518061018001604052806060815260200160008152602001600073ffffffffffffffffffffffffffffffffffffffff1681526020016060815260200160008019168152602001606081526020016060815260200160008152602001600073ffffffffffffffffffffffffffffffffffffffff16815260200160006bffffffffffffffffffffffff168152602001600063ffffffff168152602001606081525090565b811580610560575060c95482115b15610597576040517fac6c0d0100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600082815260cc602052604090819020815161018081019092528054829082906105c0906130a8565b80601f01602080910402602001604051908101604052809291908181526020018280546105ec906130a8565b80156106395780601f1061060e57610100808354040283529160200191610639565b820191906000526020600020905b81548152906001019060200180831161061c57829003601f168201915b505050918352505060018201546020820152600282015473ffffffffffffffffffffffffffffffffffffffff166040820152600382018054606090920191610680906130a8565b80601f01602080910402602001604051908101604052809291908181526020018280546106ac906130a8565b80156106f95780601f106106ce576101008083540402835291602001916106f9565b820191906000526020600020905b8154815290600101906020018083116106dc57829003601f168201915b505050505081526020016004820154815260200160058201805461071c906130a8565b80601f0160208091040260200160405190810160405280929190818152602001828054610748906130a8565b80156107955780601f1061076a57610100808354040283529160200191610795565b820191906000526020600020905b81548152906001019060200180831161077857829003601f168201915b505050505081526020016006820180546107ae906130a8565b80601f01602080910402602001604051908101604052809291908181526020018280546107da906130a8565b80156108275780601f106107fc57610100808354040283529160200191610827565b820191906000526020600020905b81548152906001019060200180831161080a57829003601f168201915b505050918352505060078201546020820152600882015473ffffffffffffffffffffffffffffffffffffffff811660408301527401000000000000000000000000000000000000000090046bffffffffffffffffffffffff166060820152600982015463ffffffff166080820152600a8201805460a0909201916108aa906130a8565b80601f01602080910402602001604051908101604052809291908181526020018280546108d6906130a8565b80156109235780601f106108f857610100808354040283529160200191610923565b820191906000526020600020905b81548152906001019060200180831161090657829003601f168201915b5050505050815250509050919050565b6040517f96c553eb00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6109a36040518060400160405280601581526020017f6164645570646174655479706528737472696e67290000000000000000000000815250611e27565b805115806109b2575060408151115b156109e9576040517f920af76c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b805160208201206109f981611f00565b15610a30576040517f40df35ca00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600081815260cb60205260408120805460ff1916600190811790915560ca805491820181559091527f42d72674974f694b5f5159593243114d38a5c39c89d6b62fee061ff523240ee101610a84838261314c565b5081604051610a939190613266565b604051908190038120907f07d686af6e6b7a2e3d03f5c81f05bba6a5b3686aca218f92f96b84c7d59aabaf90600090a25050565b606554339073ffffffffffffffffffffffffffffffffffffffff168114610b75576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602960248201527f4f776e61626c6532537465703a2063616c6c6572206973206e6f74207468652060448201527f6e6577206f776e6572000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b6104a881611f64565b33600090815260cd602052604090205460ff16610bc7576040517f79d1e58f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610bd687878787878787611f95565b50505050505050565b60cc60205260009081526040902080548190610bfa906130a8565b80601f0160208091040260200160405190810160405280929190818152602001828054610c26906130a8565b8015610c735780601f10610c4857610100808354040283529160200191610c73565b820191906000526020600020905b815481529060010190602001808311610c5657829003601f168201915b50505050600183015460028401546003850180549495929473ffffffffffffffffffffffffffffffffffffffff909216935090610caf906130a8565b80601f0160208091040260200160405190810160405280929190818152602001828054610cdb906130a8565b8015610d285780601f10610cfd57610100808354040283529160200191610d28565b820191906000526020600020905b815481529060010190602001808311610d0b57829003601f168201915b505050505090806004015490806005018054610d43906130a8565b80601f0160208091040260200160405190810160405280929190818152602001828054610d6f906130a8565b8015610dbc5780601f10610d9157610100808354040283529160200191610dbc565b820191906000526020600020905b815481529060010190602001808311610d9f57829003601f168201915b505050505090806006018054610dd1906130a8565b80601f0160208091040260200160405190810160405280929190818152602001828054610dfd906130a8565b8015610e4a5780601f10610e1f57610100808354040283529160200191610e4a565b820191906000526020600020905b815481529060010190602001808311610e2d57829003601f168201915b50505050600783015460088401546009850154600a860180549596939573ffffffffffffffffffffffffffffffffffffffff84169550740100000000000000000000000000000000000000009093046bffffffffffffffffffffffff169363ffffffff90921692610eba906130a8565b80601f0160208091040260200160405190810160405280929190818152602001828054610ee6906130a8565b8015610f335780601f10610f0857610100808354040283529160200191610f33565b820191906000526020600020905b815481529060010190602001808311610f1657829003601f168201915b505050505090508c565b606060ca805480602002602001604051908101604052809291908181526020016000905b8282101561100d578382906000526020600020018054610f80906130a8565b80601f0160208091040260200160405190810160405280929190818152602001828054610fac906130a8565b8015610ff95780601f10610fce57610100808354040283529160200191610ff9565b820191906000526020600020905b815481529060010190602001808311610fdc57829003601f168201915b505050505081526020019060010190610f61565b50505050905090565b600054610100900460ff16158080156110365750600054600160ff909116105b806110505750303b158015611050575060005460ff166001145b6110dc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a65640000000000000000000000000000000000006064820152608401610b6c565b6000805460ff19166001179055801561111c57600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b61112582612391565b801561118957600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498906020015b60405180910390a15b5050565b33600090815260cd602052604090205460ff166111d6576040517f79d1e58f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b86518015806111e6575086518114155b806111f2575085518114155b806111fe575084518114155b8061120a575083518114155b80611216575082518114155b80611222575081518114155b15611259576040517fa24a13a600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60005b8181101561132a5761132289828151811061127957611279613282565b602002602001015189838151811061129357611293613282565b60200260200101518984815181106112ad576112ad613282565b60200260200101518985815181106112c7576112c7613282565b60200260200101518986815181106112e1576112e1613282565b60200260200101518987815181106112fb576112fb613282565b602002602001015189888151811061131557611315613282565b6020026020010151611f95565b60010161125c565b505050505050505050565b60ca818154811061134557600080fd5b906000526020600020016000915090508054611360906130a8565b80601f016020809104026020016040519081016040528092919081815260200182805461138c906130a8565b80156113d95780601f106113ae576101008083540402835291602001916113d9565b820191906000526020600020905b8154815290600101906020018083116113bc57829003601f168201915b505050505081565b61141f6040518060400160405280601f81526020017f72656d6f7665417574686f72697a656453656e64657228616464726573732900815250611e27565b73ffffffffffffffffffffffffffffffffffffffff8116600090815260cd602052604090205460ff1661147e576040517f79d1e58f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8116600081815260cd6020526040808220805460ff19169055517f98f9958a855d78eae670154a7d047d26968849962c3204c2b12c2228634f4ff89190a250565b6115126040518060400160405280602081526020017f7365745570646174655479706541637469766528737472696e672c626f6f6c29815250611e27565b8151602083012061152281611f00565b611558576040517f6ebb186d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600081815260cb602052604090205460ff16821515811515036115a7576040517f6ebba15200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600082815260cb602052604090819020805460ff1916851515179055516115cf908590613266565b6040805191829003822083151583528515156020840152917f33843b38d9deffbe0817aebcd9e744876dbf296fb42cabaca9b24160ab70811e910160405180910390a250505050565b611620611c82565b6065805473ffffffffffffffffffffffffffffffffffffffff83167fffffffffffffffffffffffff0000000000000000000000000000000000000000909116811790915561168360335473ffffffffffffffffffffffffffffffffffffffff1690565b73ffffffffffffffffffffffffffffffffffffffff167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a350565b61176f6040518061018001604052806060815260200160008152602001600073ffffffffffffffffffffffffffffffffffffffff1681526020016060815260200160008019168152602001606081526020016060815260200160008152602001600073ffffffffffffffffffffffffffffffffffffffff16815260200160006bffffffffffffffffffffffff168152602001600063ffffffff168152602001606081525090565b8251602080850191909120600081815260ce8352604080822073ffffffffffffffffffffffffffffffffffffffff871683529093529182205490918190036117e3576040517f1ca36fe200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600081815260cc6020526040908190208151610180810190925280548290829061180c906130a8565b80601f0160208091040260200160405190810160405280929190818152602001828054611838906130a8565b80156118855780601f1061185a57610100808354040283529160200191611885565b820191906000526020600020905b81548152906001019060200180831161186857829003601f168201915b505050918352505060018201546020820152600282015473ffffffffffffffffffffffffffffffffffffffff1660408201526003820180546060909201916118cc906130a8565b80601f01602080910402602001604051908101604052809291908181526020018280546118f8906130a8565b80156119455780601f1061191a57610100808354040283529160200191611945565b820191906000526020600020905b81548152906001019060200180831161192857829003601f168201915b5050505050815260200160048201548152602001600582018054611968906130a8565b80601f0160208091040260200160405190810160405280929190818152602001828054611994906130a8565b80156119e15780601f106119b6576101008083540402835291602001916119e1565b820191906000526020600020905b8154815290600101906020018083116119c457829003601f168201915b505050505081526020016006820180546119fa906130a8565b80601f0160208091040260200160405190810160405280929190818152602001828054611a26906130a8565b8015611a735780601f10611a4857610100808354040283529160200191611a73565b820191906000526020600020905b815481529060010190602001808311611a5657829003601f168201915b505050918352505060078201546020820152600882015473ffffffffffffffffffffffffffffffffffffffff811660408301527401000000000000000000000000000000000000000090046bffffffffffffffffffffffff166060820152600982015463ffffffff166080820152600a8201805460a090920191611af6906130a8565b80601f0160208091040260200160405190810160405280929190818152602001828054611b22906130a8565b8015611b6f5780601f10611b4457610100808354040283529160200191611b6f565b820191906000526020600020905b815481529060010190602001808311611b5257829003601f168201915b5050505050815250509250505092915050565b611bc06040518060400160405280601c81526020017f616464417574686f72697a656453656e64657228616464726573732900000000815250611e27565b611bc981612439565b73ffffffffffffffffffffffffffffffffffffffff8116600090815260cd602052604090205460ff1615611c29576040517f16fc747100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8116600081815260cd6020526040808220805460ff19166001179055517fd06d2241a59677d082959f22e5a5212c57a9e890949a9d0f2426efd49f8c5d7f9190a250565b60335473ffffffffffffffffffffffffffffffffffffffff163314611d03576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610b6c565b565b73ffffffffffffffffffffffffffffffffffffffff8116611da8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f696e76616c696420616365737320636f6e74726f6c206d616e6167657220616460448201527f64726573730000000000000000000000000000000000000000000000000000006064820152608401610b6c565b6097805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff000000000000000000000000000000000000000083168117909355604080519190921680825260208201939093527f66fd58e82f7b31a2a5c30e0888f3093efe4e111b00cd2b0c31fe014601293aa09101611180565b6097546040517f18c5e8ab00000000000000000000000000000000000000000000000000000000815260009173ffffffffffffffffffffffffffffffffffffffff16906318c5e8ab90611e8090339086906004016132b1565b602060405180830381865afa158015611e9d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ec191906132e0565b905080611189573330836040517f4a3fa293000000000000000000000000000000000000000000000000000000008152600401610b6c939291906132fd565b60ca54600090815b81811015611f5a578360ca8281548110611f2457611f24613282565b90600052602060002001604051611f3b919061333f565b604051809103902003611f52575060019392505050565b600101611f08565b5060009392505050565b606580547fffffffffffffffffffffffff00000000000000000000000000000000000000001690556104a881612486565b611f9e84612439565b8451602080870191909120600081815260cb90925260409091205460ff16611ff2576040517f686d1d3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600060c960008154612003906133b5565b9182905550600083815260ce6020908152604080832073ffffffffffffffffffffffffffffffffffffffff8b16845282528083205480845260cc909252822060050180549394509092612055906130a8565b80601f0160208091040260200160405190810160405280929190818152602001828054612081906130a8565b80156120ce5780601f106120a3576101008083540402835291602001916120ce565b820191906000526020600020905b8154815290600101906020018083116120b157829003601f168201915b5050505050905060006040518061018001604052808d81526020018581526020018a73ffffffffffffffffffffffffffffffffffffffff1681526020018b81526020018681526020018c81526020018381526020014281526020013373ffffffffffffffffffffffffffffffffffffffff168152602001896bffffffffffffffffffffffff1681526020018863ffffffff1681526020018781525090508060cc60008681526020019081526020016000206000820151816000019081612194919061314c565b506020820151600182015560408201516002820180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff909216919091179055606082015160038201906121fe908261314c565b506080820151600482015560a0820151600582019061221d908261314c565b5060c08201516006820190612232908261314c565b5060e082015160078201556101008201516101208301516bffffffffffffffffffffffff16740100000000000000000000000000000000000000000273ffffffffffffffffffffffffffffffffffffffff90911617600882015561014082015160098201805463ffffffff9092167fffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000909216919091179055610160820151600a8201906122df908261314c565b505050600085815260ce6020908152604080832073ffffffffffffffffffffffffffffffffffffffff8d1684529091529081902085905551612322908b90613266565b60405180910390208973ffffffffffffffffffffffffffffffffffffffff16857ffc790d5ce2687ea5b75f51b2fff6d34792504386d9c73160bb6bdc6ea25f5b698f8f8742338e60405161237b96959493929190613414565b60405180910390a4505050505050505050505050565b600054610100900460ff16612428576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610b6c565b6124306124fd565b6104a88161259c565b73ffffffffffffffffffffffffffffffffffffffff81166104a8576040517f8579befe00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6033805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600054610100900460ff16612594576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610b6c565b611d03612633565b600054610100900460ff1661049f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610b6c565b600054610100900460ff166126ca576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610b6c565b611d0333611f64565b803573ffffffffffffffffffffffffffffffffffffffff811681146126f757600080fd5b919050565b60006020828403121561270e57600080fd5b612717826126d3565b9392505050565b60006020828403121561273057600080fd5b5035919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff811182821017156127ad576127ad612737565b604052919050565b600082601f8301126127c657600080fd5b813567ffffffffffffffff8111156127e0576127e0612737565b61281160207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f84011601612766565b81815284602083860101111561282657600080fd5b816020850160208301376000918101602001919091529392505050565b6000806040838503121561285657600080fd5b823567ffffffffffffffff81111561286d57600080fd5b612879858286016127b5565b925050612888602084016126d3565b90509250929050565b60005b838110156128ac578181015183820152602001612894565b50506000910152565b600081518084526128cd816020860160208601612891565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b602081526000825161018080602085015261291e6101a08501836128b5565b9150602085015160408501526040850151612951606086018273ffffffffffffffffffffffffffffffffffffffff169052565b5060608501517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08086850301608087015261298c84836128b5565b9350608087015160a087015260a08701519150808685030160c08701526129b384836128b5565b935060c08701519150808685030160e08701526129d084836128b5565b60e0880151610100888101919091528801519094509150610120612a0b8188018473ffffffffffffffffffffffffffffffffffffffff169052565b8701519150610140612a2c878201846bffffffffffffffffffffffff169052565b8701519150610160612a458782018463ffffffff169052565b870151868503909101838701529050612a5e83826128b5565b9695505050505050565b60008060408385031215612a7b57600080fd5b82359150612888602084016126d3565b600060208284031215612a9d57600080fd5b813567ffffffffffffffff811115612ab457600080fd5b612ac0848285016127b5565b949350505050565b80356bffffffffffffffffffffffff811681146126f757600080fd5b803563ffffffff811681146126f757600080fd5b600080600080600080600060e0888a031215612b1357600080fd5b873567ffffffffffffffff80821115612b2b57600080fd5b612b378b838c016127b5565b985060208a0135915080821115612b4d57600080fd5b612b598b838c016127b5565b975060408a0135915080821115612b6f57600080fd5b612b7b8b838c016127b5565b9650612b8960608b016126d3565b9550612b9760808b01612ac8565b9450612ba560a08b01612ae4565b935060c08a0135915080821115612bbb57600080fd5b50612bc88a828b016127b5565b91505092959891949750929550565b61018081526000612bec61018083018f6128b5565b8d602084015273ffffffffffffffffffffffffffffffffffffffff8d1660408401528281036060840152612c20818d6128b5565b90508a608084015282810360a0840152612c3a818b6128b5565b905082810360c0840152612c4e818a6128b5565b90508760e0840152612c7961010084018873ffffffffffffffffffffffffffffffffffffffff169052565b6bffffffffffffffffffffffff861661012084015263ffffffff8516610140840152828103610160840152612cae81856128b5565b9f9e505050505050505050505050505050565b600060208083016020845280855180835260408601915060408160051b87010192506020870160005b82811015612d36577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0888603018452612d248583516128b5565b94509285019290850190600101612cea565b5092979650505050505050565b600067ffffffffffffffff821115612d5d57612d5d612737565b5060051b60200190565b600082601f830112612d7857600080fd5b81356020612d8d612d8883612d43565b612766565b82815260059290921b84018101918181019086841115612dac57600080fd5b8286015b84811015612dec57803567ffffffffffffffff811115612dd05760008081fd5b612dde8986838b01016127b5565b845250918301918301612db0565b509695505050505050565b600082601f830112612e0857600080fd5b81356020612e18612d8883612d43565b8083825260208201915060208460051b870101935086841115612e3a57600080fd5b602086015b84811015612dec57612e50816126d3565b8352918301918301612e3f565b600082601f830112612e6e57600080fd5b81356020612e7e612d8883612d43565b8083825260208201915060208460051b870101935086841115612ea057600080fd5b602086015b84811015612dec57612eb681612ac8565b8352918301918301612ea5565b600082601f830112612ed457600080fd5b81356020612ee4612d8883612d43565b8083825260208201915060208460051b870101935086841115612f0657600080fd5b602086015b84811015612dec57612f1c81612ae4565b8352918301918301612f0b565b600080600080600080600060e0888a031215612f4457600080fd5b873567ffffffffffffffff80821115612f5c57600080fd5b612f688b838c01612d67565b985060208a0135915080821115612f7e57600080fd5b612f8a8b838c01612d67565b975060408a0135915080821115612fa057600080fd5b612fac8b838c01612d67565b965060608a0135915080821115612fc257600080fd5b612fce8b838c01612df7565b955060808a0135915080821115612fe457600080fd5b612ff08b838c01612e5d565b945060a08a013591508082111561300657600080fd5b6130128b838c01612ec3565b935060c08a013591508082111561302857600080fd5b50612bc88a828b01612d67565b60208152600061271760208301846128b5565b80151581146104a857600080fd5b6000806040838503121561306957600080fd5b823567ffffffffffffffff81111561308057600080fd5b61308c858286016127b5565b925050602083013561309d81613048565b809150509250929050565b600181811c908216806130bc57607f821691505b6020821081036130f5577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b601f821115613147576000816000526020600020601f850160051c810160208610156131245750805b601f850160051c820191505b8181101561314357828155600101613130565b5050505b505050565b815167ffffffffffffffff81111561316657613166612737565b61317a8161317484546130a8565b846130fb565b602080601f8311600181146131cd57600084156131975750858301515b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600386901b1c1916600185901b178555613143565b6000858152602081207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08616915b8281101561321a578886015182559484019460019091019084016131fb565b508582101561325657878501517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600388901b60f8161c191681555b5050505050600190811b01905550565b60008251613278818460208701612891565b9190910192915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b73ffffffffffffffffffffffffffffffffffffffff83168152604060208201526000612ac060408301846128b5565b6000602082840312156132f257600080fd5b815161271781613048565b600073ffffffffffffffffffffffffffffffffffffffff80861683528085166020840152506060604083015261333660608301846128b5565b95945050505050565b600080835461334d816130a8565b60018281168015613365576001811461337a576133a9565b60ff19841687528215158302870194506133a9565b8760005260208060002060005b858110156133a05781548a820152908401908201613387565b50505082870194505b50929695505050505050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361340d577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b5060010190565b60c08152600061342760c08301896128b5565b828103602084015261343981896128b5565b9050828103604084015261344d81886128b5565b905085606084015273ffffffffffffffffffffffffffffffffffffffff8516608084015282810360a084015261348381856128b5565b999850505050505050505056fea2646970667358221220ab3c73c9545274b34c177b50f087e9e09e75c42db31fdae89acc635fe89583a864736f6c63430008190033",
  "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106101ae5760003560e01c8063986576fa116100ee578063c6b8ab4211610097578063ec1930b011610071578063ec1930b01461044b578063f2fde38b1461045e578063f660fe6914610471578063fa7229ee1461048457600080fd5b8063c6b8ab42146103fa578063cbd579671461041a578063e30c39781461042d57600080fd5b8063c030ce7b116100c8578063c030ce7b146103bf578063c4d66de8146103d4578063c4e1a280146103e757600080fd5b8063986576fa1461034b578063b39b55be14610376578063b4a0bdf3146103a157600080fd5b8063592d37331161015b57806377abc9bd1161013557806377abc9bd146102de57806379ba5097146102f157806387d7f21f146102f95780638da5cb5b1461030c57600080fd5b8063592d3733146102ab5780636f324967146102b3578063715018a6146102d657600080fd5b806334496b5a1161018c57806334496b5a1461021757806337759b9a1461026057806343b62b261461028057600080fd5b80630e32cb86146101b3578063157b1225146101c85780631687fe8e14610200575b600080fd5b6101c66101c13660046126fc565b610497565b005b6101eb6101d636600461271e565b60cb6020526000908152604090205460ff1681565b60405190151581526020015b60405180910390f35b61020960c95481565b6040519081526020016101f7565b610209610225366004612843565b8151602092830120600090815260ce8352604080822073ffffffffffffffffffffffffffffffffffffffff9390931682529190925290205490565b61027361026e36600461271e565b6104ab565b6040516101f791906128ff565b61020961028e366004612a68565b60ce60209081526000928352604080842090915290825290205481565b60ca54610209565b6101eb6102c13660046126fc565b60cd6020526000908152604090205460ff1681565b6101c6610933565b6101c66102ec366004612a8b565b610965565b6101c6610ac7565b6101c6610307366004612af8565b610b7e565b60335473ffffffffffffffffffffffffffffffffffffffff165b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101f7565b6101eb610359366004612a8b565b8051602091820120600090815260cb909152604090205460ff1690565b61038961038436600461271e565b610bdf565b6040516101f79c9b9a99989796959493929190612bd7565b60975473ffffffffffffffffffffffffffffffffffffffff16610326565b6103c7610f3d565b6040516101f79190612cc1565b6101c66103e23660046126fc565b611016565b6101c66103f5366004612f29565b61118d565b61040d61040836600461271e565b611335565b6040516101f79190613035565b6101c66104283660046126fc565b6113e1565b60655473ffffffffffffffffffffffffffffffffffffffff16610326565b6101c6610459366004613056565b6114d4565b6101c661046c3660046126fc565b611618565b61027361047f366004612843565b6116c8565b6101c66104923660046126fc565b611b82565b61049f611c82565b6104a881611d05565b50565b6105526040518061018001604052806060815260200160008152602001600073ffffffffffffffffffffffffffffffffffffffff1681526020016060815260200160008019168152602001606081526020016060815260200160008152602001600073ffffffffffffffffffffffffffffffffffffffff16815260200160006bffffffffffffffffffffffff168152602001600063ffffffff168152602001606081525090565b811580610560575060c95482115b15610597576040517fac6c0d0100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600082815260cc602052604090819020815161018081019092528054829082906105c0906130a8565b80601f01602080910402602001604051908101604052809291908181526020018280546105ec906130a8565b80156106395780601f1061060e57610100808354040283529160200191610639565b820191906000526020600020905b81548152906001019060200180831161061c57829003601f168201915b505050918352505060018201546020820152600282015473ffffffffffffffffffffffffffffffffffffffff166040820152600382018054606090920191610680906130a8565b80601f01602080910402602001604051908101604052809291908181526020018280546106ac906130a8565b80156106f95780601f106106ce576101008083540402835291602001916106f9565b820191906000526020600020905b8154815290600101906020018083116106dc57829003601f168201915b505050505081526020016004820154815260200160058201805461071c906130a8565b80601f0160208091040260200160405190810160405280929190818152602001828054610748906130a8565b80156107955780601f1061076a57610100808354040283529160200191610795565b820191906000526020600020905b81548152906001019060200180831161077857829003601f168201915b505050505081526020016006820180546107ae906130a8565b80601f01602080910402602001604051908101604052809291908181526020018280546107da906130a8565b80156108275780601f106107fc57610100808354040283529160200191610827565b820191906000526020600020905b81548152906001019060200180831161080a57829003601f168201915b505050918352505060078201546020820152600882015473ffffffffffffffffffffffffffffffffffffffff811660408301527401000000000000000000000000000000000000000090046bffffffffffffffffffffffff166060820152600982015463ffffffff166080820152600a8201805460a0909201916108aa906130a8565b80601f01602080910402602001604051908101604052809291908181526020018280546108d6906130a8565b80156109235780601f106108f857610100808354040283529160200191610923565b820191906000526020600020905b81548152906001019060200180831161090657829003601f168201915b5050505050815250509050919050565b6040517f96c553eb00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6109a36040518060400160405280601581526020017f6164645570646174655479706528737472696e67290000000000000000000000815250611e27565b805115806109b2575060408151115b156109e9576040517f920af76c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b805160208201206109f981611f00565b15610a30576040517f40df35ca00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600081815260cb60205260408120805460ff1916600190811790915560ca805491820181559091527f42d72674974f694b5f5159593243114d38a5c39c89d6b62fee061ff523240ee101610a84838261314c565b5081604051610a939190613266565b604051908190038120907f07d686af6e6b7a2e3d03f5c81f05bba6a5b3686aca218f92f96b84c7d59aabaf90600090a25050565b606554339073ffffffffffffffffffffffffffffffffffffffff168114610b75576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602960248201527f4f776e61626c6532537465703a2063616c6c6572206973206e6f74207468652060448201527f6e6577206f776e6572000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b6104a881611f64565b33600090815260cd602052604090205460ff16610bc7576040517f79d1e58f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610bd687878787878787611f95565b50505050505050565b60cc60205260009081526040902080548190610bfa906130a8565b80601f0160208091040260200160405190810160405280929190818152602001828054610c26906130a8565b8015610c735780601f10610c4857610100808354040283529160200191610c73565b820191906000526020600020905b815481529060010190602001808311610c5657829003601f168201915b50505050600183015460028401546003850180549495929473ffffffffffffffffffffffffffffffffffffffff909216935090610caf906130a8565b80601f0160208091040260200160405190810160405280929190818152602001828054610cdb906130a8565b8015610d285780601f10610cfd57610100808354040283529160200191610d28565b820191906000526020600020905b815481529060010190602001808311610d0b57829003601f168201915b505050505090806004015490806005018054610d43906130a8565b80601f0160208091040260200160405190810160405280929190818152602001828054610d6f906130a8565b8015610dbc5780601f10610d9157610100808354040283529160200191610dbc565b820191906000526020600020905b815481529060010190602001808311610d9f57829003601f168201915b505050505090806006018054610dd1906130a8565b80601f0160208091040260200160405190810160405280929190818152602001828054610dfd906130a8565b8015610e4a5780601f10610e1f57610100808354040283529160200191610e4a565b820191906000526020600020905b815481529060010190602001808311610e2d57829003601f168201915b50505050600783015460088401546009850154600a860180549596939573ffffffffffffffffffffffffffffffffffffffff84169550740100000000000000000000000000000000000000009093046bffffffffffffffffffffffff169363ffffffff90921692610eba906130a8565b80601f0160208091040260200160405190810160405280929190818152602001828054610ee6906130a8565b8015610f335780601f10610f0857610100808354040283529160200191610f33565b820191906000526020600020905b815481529060010190602001808311610f1657829003601f168201915b505050505090508c565b606060ca805480602002602001604051908101604052809291908181526020016000905b8282101561100d578382906000526020600020018054610f80906130a8565b80601f0160208091040260200160405190810160405280929190818152602001828054610fac906130a8565b8015610ff95780601f10610fce57610100808354040283529160200191610ff9565b820191906000526020600020905b815481529060010190602001808311610fdc57829003601f168201915b505050505081526020019060010190610f61565b50505050905090565b600054610100900460ff16158080156110365750600054600160ff909116105b806110505750303b158015611050575060005460ff166001145b6110dc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a65640000000000000000000000000000000000006064820152608401610b6c565b6000805460ff19166001179055801561111c57600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b61112582612391565b801561118957600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498906020015b60405180910390a15b5050565b33600090815260cd602052604090205460ff166111d6576040517f79d1e58f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b86518015806111e6575086518114155b806111f2575085518114155b806111fe575084518114155b8061120a575083518114155b80611216575082518114155b80611222575081518114155b15611259576040517fa24a13a600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60005b8181101561132a5761132289828151811061127957611279613282565b602002602001015189838151811061129357611293613282565b60200260200101518984815181106112ad576112ad613282565b60200260200101518985815181106112c7576112c7613282565b60200260200101518986815181106112e1576112e1613282565b60200260200101518987815181106112fb576112fb613282565b602002602001015189888151811061131557611315613282565b6020026020010151611f95565b60010161125c565b505050505050505050565b60ca818154811061134557600080fd5b906000526020600020016000915090508054611360906130a8565b80601f016020809104026020016040519081016040528092919081815260200182805461138c906130a8565b80156113d95780601f106113ae576101008083540402835291602001916113d9565b820191906000526020600020905b8154815290600101906020018083116113bc57829003601f168201915b505050505081565b61141f6040518060400160405280601f81526020017f72656d6f7665417574686f72697a656453656e64657228616464726573732900815250611e27565b73ffffffffffffffffffffffffffffffffffffffff8116600090815260cd602052604090205460ff1661147e576040517f79d1e58f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8116600081815260cd6020526040808220805460ff19169055517f98f9958a855d78eae670154a7d047d26968849962c3204c2b12c2228634f4ff89190a250565b6115126040518060400160405280602081526020017f7365745570646174655479706541637469766528737472696e672c626f6f6c29815250611e27565b8151602083012061152281611f00565b611558576040517f6ebb186d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600081815260cb602052604090205460ff16821515811515036115a7576040517f6ebba15200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600082815260cb602052604090819020805460ff1916851515179055516115cf908590613266565b6040805191829003822083151583528515156020840152917f33843b38d9deffbe0817aebcd9e744876dbf296fb42cabaca9b24160ab70811e910160405180910390a250505050565b611620611c82565b6065805473ffffffffffffffffffffffffffffffffffffffff83167fffffffffffffffffffffffff0000000000000000000000000000000000000000909116811790915561168360335473ffffffffffffffffffffffffffffffffffffffff1690565b73ffffffffffffffffffffffffffffffffffffffff167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a350565b61176f6040518061018001604052806060815260200160008152602001600073ffffffffffffffffffffffffffffffffffffffff1681526020016060815260200160008019168152602001606081526020016060815260200160008152602001600073ffffffffffffffffffffffffffffffffffffffff16815260200160006bffffffffffffffffffffffff168152602001600063ffffffff168152602001606081525090565b8251602080850191909120600081815260ce8352604080822073ffffffffffffffffffffffffffffffffffffffff871683529093529182205490918190036117e3576040517f1ca36fe200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600081815260cc6020526040908190208151610180810190925280548290829061180c906130a8565b80601f0160208091040260200160405190810160405280929190818152602001828054611838906130a8565b80156118855780601f1061185a57610100808354040283529160200191611885565b820191906000526020600020905b81548152906001019060200180831161186857829003601f168201915b505050918352505060018201546020820152600282015473ffffffffffffffffffffffffffffffffffffffff1660408201526003820180546060909201916118cc906130a8565b80601f01602080910402602001604051908101604052809291908181526020018280546118f8906130a8565b80156119455780601f1061191a57610100808354040283529160200191611945565b820191906000526020600020905b81548152906001019060200180831161192857829003601f168201915b5050505050815260200160048201548152602001600582018054611968906130a8565b80601f0160208091040260200160405190810160405280929190818152602001828054611994906130a8565b80156119e15780601f106119b6576101008083540402835291602001916119e1565b820191906000526020600020905b8154815290600101906020018083116119c457829003601f168201915b505050505081526020016006820180546119fa906130a8565b80601f0160208091040260200160405190810160405280929190818152602001828054611a26906130a8565b8015611a735780601f10611a4857610100808354040283529160200191611a73565b820191906000526020600020905b815481529060010190602001808311611a5657829003601f168201915b505050918352505060078201546020820152600882015473ffffffffffffffffffffffffffffffffffffffff811660408301527401000000000000000000000000000000000000000090046bffffffffffffffffffffffff166060820152600982015463ffffffff166080820152600a8201805460a090920191611af6906130a8565b80601f0160208091040260200160405190810160405280929190818152602001828054611b22906130a8565b8015611b6f5780601f10611b4457610100808354040283529160200191611b6f565b820191906000526020600020905b815481529060010190602001808311611b5257829003601f168201915b5050505050815250509250505092915050565b611bc06040518060400160405280601c81526020017f616464417574686f72697a656453656e64657228616464726573732900000000815250611e27565b611bc981612439565b73ffffffffffffffffffffffffffffffffffffffff8116600090815260cd602052604090205460ff1615611c29576040517f16fc747100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8116600081815260cd6020526040808220805460ff19166001179055517fd06d2241a59677d082959f22e5a5212c57a9e890949a9d0f2426efd49f8c5d7f9190a250565b60335473ffffffffffffffffffffffffffffffffffffffff163314611d03576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610b6c565b565b73ffffffffffffffffffffffffffffffffffffffff8116611da8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f696e76616c696420616365737320636f6e74726f6c206d616e6167657220616460448201527f64726573730000000000000000000000000000000000000000000000000000006064820152608401610b6c565b6097805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff000000000000000000000000000000000000000083168117909355604080519190921680825260208201939093527f66fd58e82f7b31a2a5c30e0888f3093efe4e111b00cd2b0c31fe014601293aa09101611180565b6097546040517f18c5e8ab00000000000000000000000000000000000000000000000000000000815260009173ffffffffffffffffffffffffffffffffffffffff16906318c5e8ab90611e8090339086906004016132b1565b602060405180830381865afa158015611e9d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ec191906132e0565b905080611189573330836040517f4a3fa293000000000000000000000000000000000000000000000000000000008152600401610b6c939291906132fd565b60ca54600090815b81811015611f5a578360ca8281548110611f2457611f24613282565b90600052602060002001604051611f3b919061333f565b604051809103902003611f52575060019392505050565b600101611f08565b5060009392505050565b606580547fffffffffffffffffffffffff00000000000000000000000000000000000000001690556104a881612486565b611f9e84612439565b8451602080870191909120600081815260cb90925260409091205460ff16611ff2576040517f686d1d3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600060c960008154612003906133b5565b9182905550600083815260ce6020908152604080832073ffffffffffffffffffffffffffffffffffffffff8b16845282528083205480845260cc909252822060050180549394509092612055906130a8565b80601f0160208091040260200160405190810160405280929190818152602001828054612081906130a8565b80156120ce5780601f106120a3576101008083540402835291602001916120ce565b820191906000526020600020905b8154815290600101906020018083116120b157829003601f168201915b5050505050905060006040518061018001604052808d81526020018581526020018a73ffffffffffffffffffffffffffffffffffffffff1681526020018b81526020018681526020018c81526020018381526020014281526020013373ffffffffffffffffffffffffffffffffffffffff168152602001896bffffffffffffffffffffffff1681526020018863ffffffff1681526020018781525090508060cc60008681526020019081526020016000206000820151816000019081612194919061314c565b506020820151600182015560408201516002820180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff909216919091179055606082015160038201906121fe908261314c565b506080820151600482015560a0820151600582019061221d908261314c565b5060c08201516006820190612232908261314c565b5060e082015160078201556101008201516101208301516bffffffffffffffffffffffff16740100000000000000000000000000000000000000000273ffffffffffffffffffffffffffffffffffffffff90911617600882015561014082015160098201805463ffffffff9092167fffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000909216919091179055610160820151600a8201906122df908261314c565b505050600085815260ce6020908152604080832073ffffffffffffffffffffffffffffffffffffffff8d1684529091529081902085905551612322908b90613266565b60405180910390208973ffffffffffffffffffffffffffffffffffffffff16857ffc790d5ce2687ea5b75f51b2fff6d34792504386d9c73160bb6bdc6ea25f5b698f8f8742338e60405161237b96959493929190613414565b60405180910390a4505050505050505050505050565b600054610100900460ff16612428576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610b6c565b6124306124fd565b6104a88161259c565b73ffffffffffffffffffffffffffffffffffffffff81166104a8576040517f8579befe00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6033805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600054610100900460ff16612594576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610b6c565b611d03612633565b600054610100900460ff1661049f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610b6c565b600054610100900460ff166126ca576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610b6c565b611d0333611f64565b803573ffffffffffffffffffffffffffffffffffffffff811681146126f757600080fd5b919050565b60006020828403121561270e57600080fd5b612717826126d3565b9392505050565b60006020828403121561273057600080fd5b5035919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff811182821017156127ad576127ad612737565b604052919050565b600082601f8301126127c657600080fd5b813567ffffffffffffffff8111156127e0576127e0612737565b61281160207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f84011601612766565b81815284602083860101111561282657600080fd5b816020850160208301376000918101602001919091529392505050565b6000806040838503121561285657600080fd5b823567ffffffffffffffff81111561286d57600080fd5b612879858286016127b5565b925050612888602084016126d3565b90509250929050565b60005b838110156128ac578181015183820152602001612894565b50506000910152565b600081518084526128cd816020860160208601612891565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b602081526000825161018080602085015261291e6101a08501836128b5565b9150602085015160408501526040850151612951606086018273ffffffffffffffffffffffffffffffffffffffff169052565b5060608501517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08086850301608087015261298c84836128b5565b9350608087015160a087015260a08701519150808685030160c08701526129b384836128b5565b935060c08701519150808685030160e08701526129d084836128b5565b60e0880151610100888101919091528801519094509150610120612a0b8188018473ffffffffffffffffffffffffffffffffffffffff169052565b8701519150610140612a2c878201846bffffffffffffffffffffffff169052565b8701519150610160612a458782018463ffffffff169052565b870151868503909101838701529050612a5e83826128b5565b9695505050505050565b60008060408385031215612a7b57600080fd5b82359150612888602084016126d3565b600060208284031215612a9d57600080fd5b813567ffffffffffffffff811115612ab457600080fd5b612ac0848285016127b5565b949350505050565b80356bffffffffffffffffffffffff811681146126f757600080fd5b803563ffffffff811681146126f757600080fd5b600080600080600080600060e0888a031215612b1357600080fd5b873567ffffffffffffffff80821115612b2b57600080fd5b612b378b838c016127b5565b985060208a0135915080821115612b4d57600080fd5b612b598b838c016127b5565b975060408a0135915080821115612b6f57600080fd5b612b7b8b838c016127b5565b9650612b8960608b016126d3565b9550612b9760808b01612ac8565b9450612ba560a08b01612ae4565b935060c08a0135915080821115612bbb57600080fd5b50612bc88a828b016127b5565b91505092959891949750929550565b61018081526000612bec61018083018f6128b5565b8d602084015273ffffffffffffffffffffffffffffffffffffffff8d1660408401528281036060840152612c20818d6128b5565b90508a608084015282810360a0840152612c3a818b6128b5565b905082810360c0840152612c4e818a6128b5565b90508760e0840152612c7961010084018873ffffffffffffffffffffffffffffffffffffffff169052565b6bffffffffffffffffffffffff861661012084015263ffffffff8516610140840152828103610160840152612cae81856128b5565b9f9e505050505050505050505050505050565b600060208083016020845280855180835260408601915060408160051b87010192506020870160005b82811015612d36577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0888603018452612d248583516128b5565b94509285019290850190600101612cea565b5092979650505050505050565b600067ffffffffffffffff821115612d5d57612d5d612737565b5060051b60200190565b600082601f830112612d7857600080fd5b81356020612d8d612d8883612d43565b612766565b82815260059290921b84018101918181019086841115612dac57600080fd5b8286015b84811015612dec57803567ffffffffffffffff811115612dd05760008081fd5b612dde8986838b01016127b5565b845250918301918301612db0565b509695505050505050565b600082601f830112612e0857600080fd5b81356020612e18612d8883612d43565b8083825260208201915060208460051b870101935086841115612e3a57600080fd5b602086015b84811015612dec57612e50816126d3565b8352918301918301612e3f565b600082601f830112612e6e57600080fd5b81356020612e7e612d8883612d43565b8083825260208201915060208460051b870101935086841115612ea057600080fd5b602086015b84811015612dec57612eb681612ac8565b8352918301918301612ea5565b600082601f830112612ed457600080fd5b81356020612ee4612d8883612d43565b8083825260208201915060208460051b870101935086841115612f0657600080fd5b602086015b84811015612dec57612f1c81612ae4565b8352918301918301612f0b565b600080600080600080600060e0888a031215612f4457600080fd5b873567ffffffffffffffff80821115612f5c57600080fd5b612f688b838c01612d67565b985060208a0135915080821115612f7e57600080fd5b612f8a8b838c01612d67565b975060408a0135915080821115612fa057600080fd5b612fac8b838c01612d67565b965060608a0135915080821115612fc257600080fd5b612fce8b838c01612df7565b955060808a0135915080821115612fe457600080fd5b612ff08b838c01612e5d565b945060a08a013591508082111561300657600080fd5b6130128b838c01612ec3565b935060c08a013591508082111561302857600080fd5b50612bc88a828b01612d67565b60208152600061271760208301846128b5565b80151581146104a857600080fd5b6000806040838503121561306957600080fd5b823567ffffffffffffffff81111561308057600080fd5b61308c858286016127b5565b925050602083013561309d81613048565b809150509250929050565b600181811c908216806130bc57607f821691505b6020821081036130f5577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b601f821115613147576000816000526020600020601f850160051c810160208610156131245750805b601f850160051c820191505b8181101561314357828155600101613130565b5050505b505050565b815167ffffffffffffffff81111561316657613166612737565b61317a8161317484546130a8565b846130fb565b602080601f8311600181146131cd57600084156131975750858301515b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600386901b1c1916600185901b178555613143565b6000858152602081207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08616915b8281101561321a578886015182559484019460019091019084016131fb565b508582101561325657878501517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600388901b60f8161c191681555b5050505050600190811b01905550565b60008251613278818460208701612891565b9190910192915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b73ffffffffffffffffffffffffffffffffffffffff83168152604060208201526000612ac060408301846128b5565b6000602082840312156132f257600080fd5b815161271781613048565b600073ffffffffffffffffffffffffffffffffffffffff80861683528085166020840152506060604083015261333660608301846128b5565b95945050505050565b600080835461334d816130a8565b60018281168015613365576001811461337a576133a9565b60ff19841687528215158302870194506133a9565b8760005260208060002060005b858110156133a05781548a820152908401908201613387565b50505082870194505b50929695505050505050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361340d577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b5060010190565b60c08152600061342760c08301896128b5565b828103602084015261343981896128b5565b9050828103604084015261344d81886128b5565b905085606084015273ffffffffffffffffffffffffffffffffffffffff8516608084015282810360a084015261348381856128b5565b999850505050505050505056fea2646970667358221220ab3c73c9545274b34c177b50f087e9e09e75c42db31fdae89acc635fe89583a864736f6c63430008190033",
  "linkReferences": {},
  "deployedLinkReferences": {}
}
