{
  "_format": "hh-sol-artifact-1",
  "contractName": "PriceFeedChainlink",
  "sourceName": "contracts/Oracles/PriceFeedChainlink.sol",
  "abi": [
    {
      "inputs": [],
      "stateMutability": "nonpayable",
      "type": "constructor"
    },
    {
      "inputs": [],
      "name": "AddressZero",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "InvalidAsset",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "InvalidPrice",
      "type": "error"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "asset",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "previousPriceMantissa",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "newPriceMantissa",
          "type": "uint256"
        }
      ],
      "name": "EmergencyPriceReset",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint8",
          "name": "version",
          "type": "uint8"
        }
      ],
      "name": "Initialized",
      "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": true,
          "internalType": "address",
          "name": "asset",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "previousPriceMantissa",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "newPriceMantissa",
          "type": "uint256"
        }
      ],
      "name": "PricePosted",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "asset",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "feed",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "maxStalePeriod",
          "type": "uint256"
        }
      ],
      "name": "TokenConfigAdded",
      "type": "event"
    },
    {
      "inputs": [],
      "name": "MAX_DIRECT_PRICE_DEVIATION_ADDRESS",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "NATIVE_ASSET",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "name": "directPrices",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "price",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "timestamp",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "asset",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "price",
          "type": "uint256"
        }
      ],
      "name": "emergencySetDirectPrice",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "asset",
          "type": "address"
        }
      ],
      "name": "fetchPrice",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "price",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "owner_",
          "type": "address"
        }
      ],
      "name": "initialize",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "owner",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "renounceOwnership",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "asset",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "price",
          "type": "uint256"
        }
      ],
      "name": "setDirectPrice",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "components": [
            {
              "internalType": "address",
              "name": "asset",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "feed",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "maxStalePeriod",
              "type": "uint256"
            }
          ],
          "internalType": "struct PriceFeedChainlink.TokenConfig",
          "name": "tokenConfig",
          "type": "tuple"
        }
      ],
      "name": "setTokenConfig",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "components": [
            {
              "internalType": "address",
              "name": "asset",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "feed",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "maxStalePeriod",
              "type": "uint256"
            }
          ],
          "internalType": "struct PriceFeedChainlink.TokenConfig[]",
          "name": "tokenConfigs_",
          "type": "tuple[]"
        }
      ],
      "name": "setTokenConfigs",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "name": "tokenConfigs",
      "outputs": [
        {
          "internalType": "address",
          "name": "asset",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "feed",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "maxStalePeriod",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "newOwner",
          "type": "address"
        }
      ],
      "name": "transferOwnership",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    }
  ],
  "bytecode": "0x608060405234801561001057600080fd5b5061001961001e565b6100dd565b600054610100900460ff161561008a5760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff908116146100db576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b61129c806100ec6000396000f3fe608060405234801561001057600080fd5b50600436106100df5760003560e01c80638da5cb5b1161008c578063c4d66de811610066578063c4d66de814610202578063f2fde38b14610215578063f32d08f814610228578063f7c993571461026457600080fd5b80638da5cb5b146101a1578063ace1798e146101c6578063bf53253b146101e757600080fd5b8063392787d2116100bd578063392787d214610173578063715018a6146101865780637cd33ca91461018e57600080fd5b80630431710e146100e457806309a8acb0146100f95780631b69dc5f1461010c575b600080fd5b6100f76100f2366004610f60565b61026c565b005b6100f7610107366004611010565b610306565b61014861011a36600461103a565b6066602052600090815260409020805460018201546002909201546001600160a01b03918216929091169083565b604080516001600160a01b039485168152939092166020840152908201526060015b60405180910390f35b6100f7610181366004611055565b6104a3565b6100f76104b7565b6100f761019c366004611010565b6104cb565b6033546001600160a01b03165b6040516001600160a01b03909116815260200161016a565b6101d96101d436600461103a565b6105e8565b60405190815260200161016a565b6101ae73eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee81565b6100f761021036600461103a565b610633565b6100f761022336600461103a565b61075d565b61024f61023636600461103a565b6065602052600090815260409020805460019091015482565b6040805192835260208301919091520161016a565b6101d9603281565b6102746107ea565b80516000036102ca5760405162461bcd60e51b815260206004820152601160248201527f6c656e6774682063616e2774206265203000000000000000000000000000000060448201526064015b60405180910390fd5b805160005b81811015610301576102f98382815181106102ec576102ec611071565b6020026020010151610844565b6001016102cf565b505050565b61030e6107ea565b6001600160a01b0380831660009081526066602052604090205483911661034857604051636448d6e960e11b815260040160405180910390fd5b816103655760405162bfc92160e01b815260040160405180910390fd5b6001600160a01b038316600090815260656020526040902054801561042b576000818411156103b55781610399818661109d565b6103a49060646110b0565b6103ae91906110c7565b90506103d8565b816103c0858261109d565b6103cb9060646110b0565b6103d591906110c7565b90505b60328111156104295760405162461bcd60e51b815260206004820152601860248201527f507269636520646576696174696f6e20746f6f2068696768000000000000000060448201526064016102c1565b505b6040805180820182528481524260208083019182526001600160a01b0388166000818152606583528590209351845591516001909301929092558251848152918201869052917fa0844d44570b5ec5ac55e9e7d1e7fc8149b4f33b4b61f3c8fc08bacce058faee91015b60405180910390a250505050565b6104ab6107ea565b6104b481610844565b50565b6104bf6107ea565b6104c9600061098a565b565b6104d36107ea565b6001600160a01b0380831660009081526066602052604090205483911661050d57604051636448d6e960e11b815260040160405180910390fd5b8161052a5760405162bfc92160e01b815260040160405180910390fd5b6001600160a01b0383166000818152606560208181526040808420805482518084018452898152428186019081529688905294845293518155935160019094019390935582518281529081018690529092917fa0844d44570b5ec5ac55e9e7d1e7fc8149b4f33b4b61f3c8fc08bacce058faee910160405180910390a260408051828152602081018590526001600160a01b038616917f7bdbfac2409e6b99c0579d49bd5f6cc16e70fbf225234591255882c198f57e789101610495565b6000806105f4836109e9565b9050801561060457809150610610565b61060d83610a7b565b91505b8161062d5760405162bfc92160e01b815260040160405180910390fd5b50919050565b600054610100900460ff16158080156106535750600054600160ff909116105b8061066d5750303b15801561066d575060005460ff166001145b6106df5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084016102c1565b6000805460ff191660011790558015610702576000805461ff0019166101001790555b61070a610b9e565b6107138261098a565b8015610759576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050565b6107656107ea565b6001600160a01b0381166107e15760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f646472657373000000000000000000000000000000000000000000000000000060648201526084016102c1565b6104b48161098a565b6033546001600160a01b031633146104c95760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016102c1565b80516001600160a01b03811661086d57604051639fabe1c160e01b815260040160405180910390fd5b60208201516001600160a01b03811661089957604051639fabe1c160e01b815260040160405180910390fd5b82604001516000036108ed5760405162461bcd60e51b815260206004820152601a60248201527f7374616c6520706572696f642063616e2774206265207a65726f00000000000060448201526064016102c1565b82516001600160a01b039081166000908152606660209081526040918290208651815490851673ffffffffffffffffffffffffffffffffffffffff19918216811783558389015160018401805491909716921682179095558388015160029092018290558351908152918201527f3cc8d9cb9370a23a8b9ffa75efa24cecb65c4693980e58260841adc474983c5f910160405180910390a2505050565b603380546001600160a01b0383811673ffffffffffffffffffffffffffffffffffffffff19831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b0380821660008181526066602090815260408083208151606081018352815487168152600180830154909716818501526002909101548183015293835260658252808320815180830190925280548252909401549084018190529092908390610a59904261109d565b90508260400151811115610a7257506000949350505050565b50519392505050565b6001600160a01b038082166000908152606660205260408120549091839116610ab757604051636448d6e960e11b815260040160405180910390fd5b6001600160a01b03808416600090815260666020908152604080832081516060810183528154861681526001820154909516928501839052600201549084015290610b0182610c11565b9050610b11818460400151610d37565b15610b22576000945050505061062d565b610b948160200151836001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015610b68573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b8c91906110e9565b60ff16610dc5565b9695505050505050565b600054610100900460ff16610c095760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b60648201526084016102c1565b6104c9610e26565b6040805160a081018252600080825260208201819052918101829052606081018290526080810191909152816001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015610c96575060408051601f3d908101601f19168201909252610c93918101906110e9565b60015b610c9f57919050565b60ff166080820152816001600160a01b031663feaf968c6040518163ffffffff1660e01b815260040160a060405180830381865afa925050508015610d01575060408051601f3d908101601f19168201909252610cfe91810190611126565b60015b610d0a57919050565b5069ffffffffffffffffffff9093168452506020830152604082015260016060820152919050565b919050565b60008260600151610d4a57506001610dbf565b825169ffffffffffffffffffff16600003610d6757506001610dbf565b60408301511580610d7b5750428360400151115b15610d8857506001610dbf565b6000836020015113610d9c57506001610dbf565b81836040015142610dad919061109d565b1115610dbb57506001610dbf565b5060005b92915050565b816012821115610df657610dda60128361109d565b610de590600a61125a565b610def90846110c7565b9050610dbf565b6012821015610dbf57610e0a82601261109d565b610e1590600a61125a565b610e1f90846110b0565b9392505050565b600054610100900460ff16610e915760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b60648201526084016102c1565b6104c93361098a565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715610ed957610ed9610e9a565b604052919050565b80356001600160a01b0381168114610d3257600080fd5b600060608284031215610f0a57600080fd5b6040516060810181811067ffffffffffffffff82111715610f2d57610f2d610e9a565b604052905080610f3c83610ee1565b8152610f4a60208401610ee1565b6020820152604083013560408201525092915050565b60006020808385031215610f7357600080fd5b823567ffffffffffffffff80821115610f8b57600080fd5b818501915085601f830112610f9f57600080fd5b813581811115610fb157610fb1610e9a565b610fbf848260051b01610eb0565b81815284810192506060918202840185019188831115610fde57600080fd5b938501935b8285101561100457610ff58986610ef8565b84529384019392850192610fe3565b50979650505050505050565b6000806040838503121561102357600080fd5b61102c83610ee1565b946020939093013593505050565b60006020828403121561104c57600080fd5b610e1f82610ee1565b60006060828403121561106757600080fd5b610e1f8383610ef8565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b81810381811115610dbf57610dbf611087565b8082028115828204841417610dbf57610dbf611087565b6000826110e457634e487b7160e01b600052601260045260246000fd5b500490565b6000602082840312156110fb57600080fd5b815160ff81168114610e1f57600080fd5b805169ffffffffffffffffffff81168114610d3257600080fd5b600080600080600060a0868803121561113e57600080fd5b6111478661110c565b945060208601519350604086015192506060860151915061116a6080870161110c565b90509295509295909350565b600181815b808511156111b157816000190482111561119757611197611087565b808516156111a457918102915b93841c939080029061117b565b509250929050565b6000826111c857506001610dbf565b816111d557506000610dbf565b81600181146111eb57600281146111f557611211565b6001915050610dbf565b60ff84111561120657611206611087565b50506001821b610dbf565b5060208310610133831016604e8410600b8410161715611234575081810a610dbf565b61123e8383611176565b806000190482111561125257611252611087565b029392505050565b6000610e1f83836111b956fea2646970667358221220778daa40900dc08f083487a660757f732e1245cf1f07b9e5678b1aac743606de64736f6c63430008130033",
  "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100df5760003560e01c80638da5cb5b1161008c578063c4d66de811610066578063c4d66de814610202578063f2fde38b14610215578063f32d08f814610228578063f7c993571461026457600080fd5b80638da5cb5b146101a1578063ace1798e146101c6578063bf53253b146101e757600080fd5b8063392787d2116100bd578063392787d214610173578063715018a6146101865780637cd33ca91461018e57600080fd5b80630431710e146100e457806309a8acb0146100f95780631b69dc5f1461010c575b600080fd5b6100f76100f2366004610f60565b61026c565b005b6100f7610107366004611010565b610306565b61014861011a36600461103a565b6066602052600090815260409020805460018201546002909201546001600160a01b03918216929091169083565b604080516001600160a01b039485168152939092166020840152908201526060015b60405180910390f35b6100f7610181366004611055565b6104a3565b6100f76104b7565b6100f761019c366004611010565b6104cb565b6033546001600160a01b03165b6040516001600160a01b03909116815260200161016a565b6101d96101d436600461103a565b6105e8565b60405190815260200161016a565b6101ae73eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee81565b6100f761021036600461103a565b610633565b6100f761022336600461103a565b61075d565b61024f61023636600461103a565b6065602052600090815260409020805460019091015482565b6040805192835260208301919091520161016a565b6101d9603281565b6102746107ea565b80516000036102ca5760405162461bcd60e51b815260206004820152601160248201527f6c656e6774682063616e2774206265203000000000000000000000000000000060448201526064015b60405180910390fd5b805160005b81811015610301576102f98382815181106102ec576102ec611071565b6020026020010151610844565b6001016102cf565b505050565b61030e6107ea565b6001600160a01b0380831660009081526066602052604090205483911661034857604051636448d6e960e11b815260040160405180910390fd5b816103655760405162bfc92160e01b815260040160405180910390fd5b6001600160a01b038316600090815260656020526040902054801561042b576000818411156103b55781610399818661109d565b6103a49060646110b0565b6103ae91906110c7565b90506103d8565b816103c0858261109d565b6103cb9060646110b0565b6103d591906110c7565b90505b60328111156104295760405162461bcd60e51b815260206004820152601860248201527f507269636520646576696174696f6e20746f6f2068696768000000000000000060448201526064016102c1565b505b6040805180820182528481524260208083019182526001600160a01b0388166000818152606583528590209351845591516001909301929092558251848152918201869052917fa0844d44570b5ec5ac55e9e7d1e7fc8149b4f33b4b61f3c8fc08bacce058faee91015b60405180910390a250505050565b6104ab6107ea565b6104b481610844565b50565b6104bf6107ea565b6104c9600061098a565b565b6104d36107ea565b6001600160a01b0380831660009081526066602052604090205483911661050d57604051636448d6e960e11b815260040160405180910390fd5b8161052a5760405162bfc92160e01b815260040160405180910390fd5b6001600160a01b0383166000818152606560208181526040808420805482518084018452898152428186019081529688905294845293518155935160019094019390935582518281529081018690529092917fa0844d44570b5ec5ac55e9e7d1e7fc8149b4f33b4b61f3c8fc08bacce058faee910160405180910390a260408051828152602081018590526001600160a01b038616917f7bdbfac2409e6b99c0579d49bd5f6cc16e70fbf225234591255882c198f57e789101610495565b6000806105f4836109e9565b9050801561060457809150610610565b61060d83610a7b565b91505b8161062d5760405162bfc92160e01b815260040160405180910390fd5b50919050565b600054610100900460ff16158080156106535750600054600160ff909116105b8061066d5750303b15801561066d575060005460ff166001145b6106df5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084016102c1565b6000805460ff191660011790558015610702576000805461ff0019166101001790555b61070a610b9e565b6107138261098a565b8015610759576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050565b6107656107ea565b6001600160a01b0381166107e15760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f646472657373000000000000000000000000000000000000000000000000000060648201526084016102c1565b6104b48161098a565b6033546001600160a01b031633146104c95760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016102c1565b80516001600160a01b03811661086d57604051639fabe1c160e01b815260040160405180910390fd5b60208201516001600160a01b03811661089957604051639fabe1c160e01b815260040160405180910390fd5b82604001516000036108ed5760405162461bcd60e51b815260206004820152601a60248201527f7374616c6520706572696f642063616e2774206265207a65726f00000000000060448201526064016102c1565b82516001600160a01b039081166000908152606660209081526040918290208651815490851673ffffffffffffffffffffffffffffffffffffffff19918216811783558389015160018401805491909716921682179095558388015160029092018290558351908152918201527f3cc8d9cb9370a23a8b9ffa75efa24cecb65c4693980e58260841adc474983c5f910160405180910390a2505050565b603380546001600160a01b0383811673ffffffffffffffffffffffffffffffffffffffff19831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b0380821660008181526066602090815260408083208151606081018352815487168152600180830154909716818501526002909101548183015293835260658252808320815180830190925280548252909401549084018190529092908390610a59904261109d565b90508260400151811115610a7257506000949350505050565b50519392505050565b6001600160a01b038082166000908152606660205260408120549091839116610ab757604051636448d6e960e11b815260040160405180910390fd5b6001600160a01b03808416600090815260666020908152604080832081516060810183528154861681526001820154909516928501839052600201549084015290610b0182610c11565b9050610b11818460400151610d37565b15610b22576000945050505061062d565b610b948160200151836001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015610b68573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b8c91906110e9565b60ff16610dc5565b9695505050505050565b600054610100900460ff16610c095760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b60648201526084016102c1565b6104c9610e26565b6040805160a081018252600080825260208201819052918101829052606081018290526080810191909152816001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015610c96575060408051601f3d908101601f19168201909252610c93918101906110e9565b60015b610c9f57919050565b60ff166080820152816001600160a01b031663feaf968c6040518163ffffffff1660e01b815260040160a060405180830381865afa925050508015610d01575060408051601f3d908101601f19168201909252610cfe91810190611126565b60015b610d0a57919050565b5069ffffffffffffffffffff9093168452506020830152604082015260016060820152919050565b919050565b60008260600151610d4a57506001610dbf565b825169ffffffffffffffffffff16600003610d6757506001610dbf565b60408301511580610d7b5750428360400151115b15610d8857506001610dbf565b6000836020015113610d9c57506001610dbf565b81836040015142610dad919061109d565b1115610dbb57506001610dbf565b5060005b92915050565b816012821115610df657610dda60128361109d565b610de590600a61125a565b610def90846110c7565b9050610dbf565b6012821015610dbf57610e0a82601261109d565b610e1590600a61125a565b610e1f90846110b0565b9392505050565b600054610100900460ff16610e915760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b60648201526084016102c1565b6104c93361098a565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715610ed957610ed9610e9a565b604052919050565b80356001600160a01b0381168114610d3257600080fd5b600060608284031215610f0a57600080fd5b6040516060810181811067ffffffffffffffff82111715610f2d57610f2d610e9a565b604052905080610f3c83610ee1565b8152610f4a60208401610ee1565b6020820152604083013560408201525092915050565b60006020808385031215610f7357600080fd5b823567ffffffffffffffff80821115610f8b57600080fd5b818501915085601f830112610f9f57600080fd5b813581811115610fb157610fb1610e9a565b610fbf848260051b01610eb0565b81815284810192506060918202840185019188831115610fde57600080fd5b938501935b8285101561100457610ff58986610ef8565b84529384019392850192610fe3565b50979650505050505050565b6000806040838503121561102357600080fd5b61102c83610ee1565b946020939093013593505050565b60006020828403121561104c57600080fd5b610e1f82610ee1565b60006060828403121561106757600080fd5b610e1f8383610ef8565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b81810381811115610dbf57610dbf611087565b8082028115828204841417610dbf57610dbf611087565b6000826110e457634e487b7160e01b600052601260045260246000fd5b500490565b6000602082840312156110fb57600080fd5b815160ff81168114610e1f57600080fd5b805169ffffffffffffffffffff81168114610d3257600080fd5b600080600080600060a0868803121561113e57600080fd5b6111478661110c565b945060208601519350604086015192506060860151915061116a6080870161110c565b90509295509295909350565b600181815b808511156111b157816000190482111561119757611197611087565b808516156111a457918102915b93841c939080029061117b565b509250929050565b6000826111c857506001610dbf565b816111d557506000610dbf565b81600181146111eb57600281146111f557611211565b6001915050610dbf565b60ff84111561120657611206611087565b50506001821b610dbf565b5060208310610133831016604e8410600b8410161715611234575081810a610dbf565b61123e8383611176565b806000190482111561125257611252611087565b029392505050565b6000610e1f83836111b956fea2646970667358221220778daa40900dc08f083487a660757f732e1245cf1f07b9e5678b1aac743606de64736f6c63430008130033",
  "linkReferences": {},
  "deployedLinkReferences": {}
}
