UNPKG

@secure-ci/core

Version:

Smart contracts for the Secure Contract Interaction protocol

510 lines (509 loc) 37.3 kB
{ "_format": "hh-sol-artifact-1", "contractName": "SuperChainAccessControlDefaultAdminRules", "sourceName": "contracts/Op/SuperChainAccessControlDefaultAdminRules.sol", "abi": [ { "inputs": [ { "internalType": "address", "name": "_crossDomainMessanger", "type": "address" }, { "internalType": "uint48", "name": "initialDelay", "type": "uint48" }, { "internalType": "address", "name": "initialDefaultAdmin", "type": "address" } ], "stateMutability": "nonpayable", "type": "constructor" }, { "inputs": [], "name": "AccessControlBadConfirmation", "type": "error" }, { "inputs": [ { "internalType": "uint48", "name": "schedule", "type": "uint48" } ], "name": "AccessControlEnforcedDefaultAdminDelay", "type": "error" }, { "inputs": [], "name": "AccessControlEnforcedDefaultAdminRules", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "defaultAdmin", "type": "address" } ], "name": "AccessControlInvalidDefaultAdmin", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" }, { "internalType": "bytes32", "name": "neededRole", "type": "bytes32" } ], "name": "AccessControlUnauthorizedAccount", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "InvalidMessageSender", "type": "error" }, { "inputs": [ { "internalType": "uint8", "name": "bits", "type": "uint8" }, { "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "SafeCastOverflowedUintDowncast", "type": "error" }, { "anonymous": false, "inputs": [], "name": "DefaultAdminDelayChangeCanceled", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint48", "name": "newDelay", "type": "uint48" }, { "indexed": false, "internalType": "uint48", "name": "effectSchedule", "type": "uint48" } ], "name": "DefaultAdminDelayChangeScheduled", "type": "event" }, { "anonymous": false, "inputs": [], "name": "DefaultAdminTransferCanceled", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "newAdmin", "type": "address" }, { "indexed": false, "internalType": "uint48", "name": "acceptSchedule", "type": "uint48" } ], "name": "DefaultAdminTransferScheduled", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "indexed": true, "internalType": "bytes32", "name": "previousAdminRole", "type": "bytes32" }, { "indexed": true, "internalType": "bytes32", "name": "newAdminRole", "type": "bytes32" } ], "name": "RoleAdminChanged", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "indexed": true, "internalType": "address", "name": "account", "type": "address" }, { "indexed": true, "internalType": "address", "name": "sender", "type": "address" } ], "name": "RoleGranted", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "indexed": true, "internalType": "address", "name": "account", "type": "address" }, { "indexed": true, "internalType": "address", "name": "sender", "type": "address" } ], "name": "RoleRevoked", "type": "event" }, { "inputs": [], "name": "DEFAULT_ADMIN_ROLE", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "acceptDefaultAdminTransfer", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "newAdmin", "type": "address" } ], "name": "beginDefaultAdminTransfer", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "cancelDefaultAdminTransfer", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint48", "name": "newDelay", "type": "uint48" } ], "name": "changeDefaultAdminDelay", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "crossDomainMessanger", "outputs": [ { "internalType": "contract ICrossDomainMessanger", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "defaultAdmin", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "defaultAdminDelay", "outputs": [ { "internalType": "uint48", "name": "", "type": "uint48" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "defaultAdminDelayIncreaseWait", "outputs": [ { "internalType": "uint48", "name": "", "type": "uint48" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "role", "type": "bytes32" } ], "name": "getRoleAdmin", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "internalType": "address", "name": "account", "type": "address" } ], "name": "grantRole", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "internalType": "address", "name": "account", "type": "address" } ], "name": "hasRole", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "owner", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "pendingDefaultAdmin", "outputs": [ { "internalType": "address", "name": "newAdmin", "type": "address" }, { "internalType": "uint48", "name": "schedule", "type": "uint48" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "pendingDefaultAdminDelay", "outputs": [ { "internalType": "uint48", "name": "newDelay", "type": "uint48" }, { "internalType": "uint48", "name": "schedule", "type": "uint48" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "internalType": "address", "name": "account", "type": "address" } ], "name": "renounceRole", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "internalType": "address", "name": "account", "type": "address" } ], "name": "revokeRole", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "rollbackDefaultAdminDelay", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bytes4", "name": "interfaceId", "type": "bytes4" } ], "name": "supportsInterface", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" } ], "bytecode": "0x60a060405234801561001057600080fd5b50604051611c3f380380611c3f83398181016040528101906100329190610430565b8181600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036100a65760006040517fc22c802200000000000000000000000000000000000000000000000000000000815260040161009d9190610492565b60405180910390fd5b816001601a6101000a81548165ffffffffffff021916908365ffffffffffff1602179055506100de6000801b8261011d60201b60201c565b5050508273ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff16815250505050506104ad565b60008060001b83036101de57600073ffffffffffffffffffffffffffffffffffffffff1661014f6101f660201b60201c565b73ffffffffffffffffffffffffffffffffffffffff161461019c576040517f3fc3c27a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b81600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b6101ee838361022060201b60201c565b905092915050565b6000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000610232838361031d60201b60201c565b61031257600160008085815260200190815260200160002060000160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506102af61038760201b60201c565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a460019050610317565b600090505b92915050565b600080600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b600033905090565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006103bf82610394565b9050919050565b6103cf816103b4565b81146103da57600080fd5b50565b6000815190506103ec816103c6565b92915050565b600065ffffffffffff82169050919050565b61040d816103f2565b811461041857600080fd5b50565b60008151905061042a81610404565b92915050565b6000806000606084860312156104495761044861038f565b5b6000610457868287016103dd565b93505060206104688682870161041b565b9250506040610479868287016103dd565b9150509250925092565b61048c816103b4565b82525050565b60006020820190506104a76000830184610483565b92915050565b6080516117776104c860003960006103d901526117776000f3fe608060405234801561001057600080fd5b50600436106101215760003560e01c806384ef8ffc116100ad578063cc8463c811610071578063cc8463c8146102e5578063cefc142914610303578063cf6eefb71461030d578063d547741f1461032c578063d602b9fd1461034857610121565b806384ef8ffc1461023c5780638da5cb5b1461025a57806391d1485414610278578063a1eda53c146102a8578063a217fddf146102c757610121565b8063248a9ca3116100f4578063248a9ca31461019c5780632f2ff15d146101cc57806336568abe146101e8578063634e93da14610204578063649a5ec71461022057610121565b806301ffc9a714610126578063022d63fb14610156578063095f025e146101745780630aa6220b14610192575b600080fd5b610140600480360381019061013b91906112a5565b610352565b60405161014d91906112ed565b60405180910390f35b61015e6103cc565b60405161016b9190611329565b60405180910390f35b61017c6103d7565b60405161018991906113c3565b60405180910390f35b61019a6103fb565b005b6101b660048036038101906101b19190611414565b610413565b6040516101c39190611450565b60405180910390f35b6101e660048036038101906101e191906114a9565b610432565b005b61020260048036038101906101fd91906114a9565b61047c565b005b61021e600480360381019061021991906114e9565b610591565b005b61023a60048036038101906102359190611542565b6105ab565b005b6102446105c5565b604051610251919061157e565b60405180910390f35b6102626105ef565b60405161026f919061157e565b60405180910390f35b610292600480360381019061028d91906114a9565b6105fe565b60405161029f91906112ed565b60405180910390f35b6102b0610668565b6040516102be929190611599565b60405180910390f35b6102cf6106c8565b6040516102dc9190611450565b60405180910390f35b6102ed6106cf565b6040516102fa9190611329565b60405180910390f35b61030b61073d565b005b6103156107d3565b6040516103239291906115c2565b60405180910390f35b610346600480360381019061034191906114a9565b610816565b005b610350610860565b005b60007f31498786000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806103c557506103c482610878565b5b9050919050565b600062069780905090565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000801b610408816108f2565b610410610906565b50565b6000806000838152602001908152602001600020600101549050919050565b6000801b820361046e576040517f3fc3c27a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6104788282610913565b5050565b6000801b821480156104c057506104916105c5565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b15610583576000806104d06107d3565b91509150600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141580610516575061051481610935565b155b8061052757506105258161094a565b155b1561056957806040517f19ca5ebb0000000000000000000000000000000000000000000000000000000081526004016105609190611329565b60405180910390fd5b600160146101000a81549065ffffffffffff021916905550505b61058d828261095e565b5050565b6000801b61059e816108f2565b6105a7826109d9565b5050565b6000801b6105b8816108f2565b6105c182610a54565b5050565b6000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60006105f96105c5565b905090565b600080600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b6000806002601a9054906101000a900465ffffffffffff16905061068b81610935565b801561069d575061069b8161094a565b155b6106a9576000806106c0565b600260149054906101000a900465ffffffffffff16815b915091509091565b6000801b81565b6000806002601a9054906101000a900465ffffffffffff1690506106f281610935565b801561070357506107028161094a565b5b610721576001601a9054906101000a900465ffffffffffff16610737565b600260149054906101000a900465ffffffffffff165b91505090565b60006107476107d3565b5090508073ffffffffffffffffffffffffffffffffffffffff16610769610abb565b73ffffffffffffffffffffffffffffffffffffffff16146107c85761078c610abb565b6040517fc22c80220000000000000000000000000000000000000000000000000000000081526004016107bf919061157e565b60405180910390fd5b6107d0610ac3565b50565b600080600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600160149054906101000a900465ffffffffffff16915091509091565b6000801b8203610852576040517f3fc3c27a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61085c8282610b92565b5050565b6000801b61086d816108f2565b610875610bb4565b50565b60007f7965db0b000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806108eb57506108ea82610bc1565b5b9050919050565b610903816108fe610abb565b610c2b565b50565b610911600080610c7c565b565b61091c82610413565b610925816108f2565b61092f8383610d6c565b50505050565b6000808265ffffffffffff1614159050919050565b6000428265ffffffffffff16109050919050565b610966610abb565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16146109ca576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6109d48282610e39565b505050565b60006109e36106cf565b6109ec42610ebc565b6109f6919061161a565b9050610a028282610f16565b8173ffffffffffffffffffffffffffffffffffffffff167f3377dc44241e779dd06afab5b788a35ca5f3b778836e2990bdb26a2a4b2e5ed682604051610a489190611329565b60405180910390a25050565b6000610a5f82610fc9565b610a6842610ebc565b610a72919061161a565b9050610a7e8282610c7c565b7ff1038c18cf84a56e432fdbfaf746924b7ea511dfe03a6506a0ceba4888788d9b8282604051610aaf929190611599565b60405180910390a15050565b600033905090565b600080610ace6107d3565b91509150610adb81610935565b1580610aed5750610aeb8161094a565b155b15610b2f57806040517f19ca5ebb000000000000000000000000000000000000000000000000000000008152600401610b269190611329565b60405180910390fd5b610b436000801b610b3e6105c5565b610e39565b50610b516000801b83610d6c565b50600160006101000a81549073ffffffffffffffffffffffffffffffffffffffff0219169055600160146101000a81549065ffffffffffff02191690555050565b610b9b82610413565b610ba4816108f2565b610bae8383610e39565b50505050565b610bbf600080610f16565b565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b610c3582826105fe565b610c785780826040517fe2517d3f000000000000000000000000000000000000000000000000000000008152600401610c6f929190611654565b60405180910390fd5b5050565b60006002601a9054906101000a900465ffffffffffff169050610c9e81610935565b15610d1d57610cac8161094a565b15610cef57600260149054906101000a900465ffffffffffff166001601a6101000a81548165ffffffffffff021916908365ffffffffffff160217905550610d1c565b7f2b1fa2edafe6f7b9e97c1a9e0c3660e645beb2dcaa2d45bdbf9beaf5472e1ec560405160405180910390a15b5b82600260146101000a81548165ffffffffffff021916908365ffffffffffff160217905550816002601a6101000a81548165ffffffffffff021916908365ffffffffffff160217905550505050565b60008060001b8303610e2757600073ffffffffffffffffffffffffffffffffffffffff16610d986105c5565b73ffffffffffffffffffffffffffffffffffffffff1614610de5576040517f3fc3c27a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b81600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b610e318383611028565b905092915050565b60008060001b83148015610e7f5750610e506105c5565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b15610eaa57600260006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690555b610eb48383611119565b905092915050565b600065ffffffffffff8016821115610f0e576030826040517f6dfcc650000000000000000000000000000000000000000000000000000000008152600401610f059291906116de565b60405180910390fd5b819050919050565b6000610f206107d3565b91505082600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081600160146101000a81548165ffffffffffff021916908365ffffffffffff160217905550610f9281610935565b15610fc4577f8886ebfc4259abdbc16601dd8fb5678e54878f47b3c34836cfc51154a960510960405160405180910390a15b505050565b600080610fd46106cf565b90508065ffffffffffff168365ffffffffffff1611610ffe578281610ff99190611707565b611020565b61101f8365ffffffffffff166110126103cc565b65ffffffffffff1661120b565b5b915050919050565b600061103483836105fe565b61110e57600160008085815260200190815260200160002060000160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506110ab610abb565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a460019050611113565b600090505b92915050565b600061112583836105fe565b1561120057600080600085815260200190815260200160002060000160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555061119d610abb565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16847ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b60405160405180910390a460019050611205565b600090505b92915050565b600061121a8284108484611222565b905092915050565b600061122d8461123c565b82841802821890509392505050565b60008115159050919050565b600080fd5b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b6112828161124d565b811461128d57600080fd5b50565b60008135905061129f81611279565b92915050565b6000602082840312156112bb576112ba611248565b5b60006112c984828501611290565b91505092915050565b60008115159050919050565b6112e7816112d2565b82525050565b600060208201905061130260008301846112de565b92915050565b600065ffffffffffff82169050919050565b61132381611308565b82525050565b600060208201905061133e600083018461131a565b92915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600061138961138461137f84611344565b611364565b611344565b9050919050565b600061139b8261136e565b9050919050565b60006113ad82611390565b9050919050565b6113bd816113a2565b82525050565b60006020820190506113d860008301846113b4565b92915050565b6000819050919050565b6113f1816113de565b81146113fc57600080fd5b50565b60008135905061140e816113e8565b92915050565b60006020828403121561142a57611429611248565b5b6000611438848285016113ff565b91505092915050565b61144a816113de565b82525050565b60006020820190506114656000830184611441565b92915050565b600061147682611344565b9050919050565b6114868161146b565b811461149157600080fd5b50565b6000813590506114a38161147d565b92915050565b600080604083850312156114c0576114bf611248565b5b60006114ce858286016113ff565b92505060206114df85828601611494565b9150509250929050565b6000602082840312156114ff576114fe611248565b5b600061150d84828501611494565b91505092915050565b61151f81611308565b811461152a57600080fd5b50565b60008135905061153c81611516565b92915050565b60006020828403121561155857611557611248565b5b60006115668482850161152d565b91505092915050565b6115788161146b565b82525050565b6000602082019050611593600083018461156f565b92915050565b60006040820190506115ae600083018561131a565b6115bb602083018461131a565b9392505050565b60006040820190506115d7600083018561156f565b6115e4602083018461131a565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061162582611308565b915061163083611308565b9250828201905065ffffffffffff81111561164e5761164d6115eb565b5b92915050565b6000604082019050611669600083018561156f565b6116766020830184611441565b9392505050565b6000819050919050565b600060ff82169050919050565b60006116af6116aa6116a58461167d565b611364565b611687565b9050919050565b6116bf81611694565b82525050565b6000819050919050565b6116d8816116c5565b82525050565b60006040820190506116f360008301856116b6565b61170060208301846116cf565b9392505050565b600061171282611308565b915061171d83611308565b9250828203905065ffffffffffff81111561173b5761173a6115eb565b5b9291505056fea2646970667358221220d08dc27d37232bd451d6a0db84bf9e7c89d75fd4721f17fc992d67d97c2d740a64736f6c634300081c0033", "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106101215760003560e01c806384ef8ffc116100ad578063cc8463c811610071578063cc8463c8146102e5578063cefc142914610303578063cf6eefb71461030d578063d547741f1461032c578063d602b9fd1461034857610121565b806384ef8ffc1461023c5780638da5cb5b1461025a57806391d1485414610278578063a1eda53c146102a8578063a217fddf146102c757610121565b8063248a9ca3116100f4578063248a9ca31461019c5780632f2ff15d146101cc57806336568abe146101e8578063634e93da14610204578063649a5ec71461022057610121565b806301ffc9a714610126578063022d63fb14610156578063095f025e146101745780630aa6220b14610192575b600080fd5b610140600480360381019061013b91906112a5565b610352565b60405161014d91906112ed565b60405180910390f35b61015e6103cc565b60405161016b9190611329565b60405180910390f35b61017c6103d7565b60405161018991906113c3565b60405180910390f35b61019a6103fb565b005b6101b660048036038101906101b19190611414565b610413565b6040516101c39190611450565b60405180910390f35b6101e660048036038101906101e191906114a9565b610432565b005b61020260048036038101906101fd91906114a9565b61047c565b005b61021e600480360381019061021991906114e9565b610591565b005b61023a60048036038101906102359190611542565b6105ab565b005b6102446105c5565b604051610251919061157e565b60405180910390f35b6102626105ef565b60405161026f919061157e565b60405180910390f35b610292600480360381019061028d91906114a9565b6105fe565b60405161029f91906112ed565b60405180910390f35b6102b0610668565b6040516102be929190611599565b60405180910390f35b6102cf6106c8565b6040516102dc9190611450565b60405180910390f35b6102ed6106cf565b6040516102fa9190611329565b60405180910390f35b61030b61073d565b005b6103156107d3565b6040516103239291906115c2565b60405180910390f35b610346600480360381019061034191906114a9565b610816565b005b610350610860565b005b60007f31498786000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806103c557506103c482610878565b5b9050919050565b600062069780905090565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000801b610408816108f2565b610410610906565b50565b6000806000838152602001908152602001600020600101549050919050565b6000801b820361046e576040517f3fc3c27a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6104788282610913565b5050565b6000801b821480156104c057506104916105c5565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b15610583576000806104d06107d3565b91509150600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141580610516575061051481610935565b155b8061052757506105258161094a565b155b1561056957806040517f19ca5ebb0000000000000000000000000000000000000000000000000000000081526004016105609190611329565b60405180910390fd5b600160146101000a81549065ffffffffffff021916905550505b61058d828261095e565b5050565b6000801b61059e816108f2565b6105a7826109d9565b5050565b6000801b6105b8816108f2565b6105c182610a54565b5050565b6000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60006105f96105c5565b905090565b600080600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b6000806002601a9054906101000a900465ffffffffffff16905061068b81610935565b801561069d575061069b8161094a565b155b6106a9576000806106c0565b600260149054906101000a900465ffffffffffff16815b915091509091565b6000801b81565b6000806002601a9054906101000a900465ffffffffffff1690506106f281610935565b801561070357506107028161094a565b5b610721576001601a9054906101000a900465ffffffffffff16610737565b600260149054906101000a900465ffffffffffff165b91505090565b60006107476107d3565b5090508073ffffffffffffffffffffffffffffffffffffffff16610769610abb565b73ffffffffffffffffffffffffffffffffffffffff16146107c85761078c610abb565b6040517fc22c80220000000000000000000000000000000000000000000000000000000081526004016107bf919061157e565b60405180910390fd5b6107d0610ac3565b50565b600080600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600160149054906101000a900465ffffffffffff16915091509091565b6000801b8203610852576040517f3fc3c27a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61085c8282610b92565b5050565b6000801b61086d816108f2565b610875610bb4565b50565b60007f7965db0b000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806108eb57506108ea82610bc1565b5b9050919050565b610903816108fe610abb565b610c2b565b50565b610911600080610c7c565b565b61091c82610413565b610925816108f2565b61092f8383610d6c565b50505050565b6000808265ffffffffffff1614159050919050565b6000428265ffffffffffff16109050919050565b610966610abb565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16146109ca576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6109d48282610e39565b505050565b60006109e36106cf565b6109ec42610ebc565b6109f6919061161a565b9050610a028282610f16565b8173ffffffffffffffffffffffffffffffffffffffff167f3377dc44241e779dd06afab5b788a35ca5f3b778836e2990bdb26a2a4b2e5ed682604051610a489190611329565b60405180910390a25050565b6000610a5f82610fc9565b610a6842610ebc565b610a72919061161a565b9050610a7e8282610c7c565b7ff1038c18cf84a56e432fdbfaf746924b7ea511dfe03a6506a0ceba4888788d9b8282604051610aaf929190611599565b60405180910390a15050565b600033905090565b600080610ace6107d3565b91509150610adb81610935565b1580610aed5750610aeb8161094a565b155b15610b2f57806040517f19ca5ebb000000000000000000000000000000000000000000000000000000008152600401610b269190611329565b60405180910390fd5b610b436000801b610b3e6105c5565b610e39565b50610b516000801b83610d6c565b50600160006101000a81549073ffffffffffffffffffffffffffffffffffffffff0219169055600160146101000a81549065ffffffffffff02191690555050565b610b9b82610413565b610ba4816108f2565b610bae8383610e39565b50505050565b610bbf600080610f16565b565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b610c3582826105fe565b610c785780826040517fe2517d3f000000000000000000000000000000000000000000000000000000008152600401610c6f929190611654565b60405180910390fd5b5050565b60006002601a9054906101000a900465ffffffffffff169050610c9e81610935565b15610d1d57610cac8161094a565b15610cef57600260149054906101000a900465ffffffffffff166001601a6101000a81548165ffffffffffff021916908365ffffffffffff160217905550610d1c565b7f2b1fa2edafe6f7b9e97c1a9e0c3660e645beb2dcaa2d45bdbf9beaf5472e1ec560405160405180910390a15b5b82600260146101000a81548165ffffffffffff021916908365ffffffffffff160217905550816002601a6101000a81548165ffffffffffff021916908365ffffffffffff160217905550505050565b60008060001b8303610e2757600073ffffffffffffffffffffffffffffffffffffffff16610d986105c5565b73ffffffffffffffffffffffffffffffffffffffff1614610de5576040517f3fc3c27a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b81600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b610e318383611028565b905092915050565b60008060001b83148015610e7f5750610e506105c5565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b15610eaa57600260006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690555b610eb48383611119565b905092915050565b600065ffffffffffff8016821115610f0e576030826040517f6dfcc650000000000000000000000000000000000000000000000000000000008152600401610f059291906116de565b60405180910390fd5b819050919050565b6000610f206107d3565b91505082600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081600160146101000a81548165ffffffffffff021916908365ffffffffffff160217905550610f9281610935565b15610fc4577f8886ebfc4259abdbc16601dd8fb5678e54878f47b3c34836cfc51154a960510960405160405180910390a15b505050565b600080610fd46106cf565b90508065ffffffffffff168365ffffffffffff1611610ffe578281610ff99190611707565b611020565b61101f8365ffffffffffff166110126103cc565b65ffffffffffff1661120b565b5b915050919050565b600061103483836105fe565b61110e57600160008085815260200190815260200160002060000160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506110ab610abb565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a460019050611113565b600090505b92915050565b600061112583836105fe565b1561120057600080600085815260200190815260200160002060000160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555061119d610abb565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16847ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b60405160405180910390a460019050611205565b600090505b92915050565b600061121a8284108484611222565b905092915050565b600061122d8461123c565b82841802821890509392505050565b60008115159050919050565b600080fd5b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b6112828161124d565b811461128d57600080fd5b50565b60008135905061129f81611279565b92915050565b6000602082840312156112bb576112ba611248565b5b60006112c984828501611290565b91505092915050565b60008115159050919050565b6112e7816112d2565b82525050565b600060208201905061130260008301846112de565b92915050565b600065ffffffffffff82169050919050565b61132381611308565b82525050565b600060208201905061133e600083018461131a565b92915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600061138961138461137f84611344565b611364565b611344565b9050919050565b600061139b8261136e565b9050919050565b60006113ad82611390565b9050919050565b6113bd816113a2565b82525050565b60006020820190506113d860008301846113b4565b92915050565b6000819050919050565b6113f1816113de565b81146113fc57600080fd5b50565b60008135905061140e816113e8565b92915050565b60006020828403121561142a57611429611248565b5b6000611438848285016113ff565b91505092915050565b61144a816113de565b82525050565b60006020820190506114656000830184611441565b92915050565b600061147682611344565b9050919050565b6114868161146b565b811461149157600080fd5b50565b6000813590506114a38161147d565b92915050565b600080604083850312156114c0576114bf611248565b5b60006114ce858286016113ff565b92505060206114df85828601611494565b9150509250929050565b6000602082840312156114ff576114fe611248565b5b600061150d84828501611494565b91505092915050565b61151f81611308565b811461152a57600080fd5b50565b60008135905061153c81611516565b92915050565b60006020828403121561155857611557611248565b5b60006115668482850161152d565b91505092915050565b6115788161146b565b82525050565b6000602082019050611593600083018461156f565b92915050565b60006040820190506115ae600083018561131a565b6115bb602083018461131a565b9392505050565b60006040820190506115d7600083018561156f565b6115e4602083018461131a565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061162582611308565b915061163083611308565b9250828201905065ffffffffffff81111561164e5761164d6115eb565b5b92915050565b6000604082019050611669600083018561156f565b6116766020830184611441565b9392505050565b6000819050919050565b600060ff82169050919050565b60006116af6116aa6116a58461167d565b611364565b611687565b9050919050565b6116bf81611694565b82525050565b6000819050919050565b6116d8816116c5565b82525050565b60006040820190506116f360008301856116b6565b61170060208301846116cf565b9392505050565b600061171282611308565b915061171d83611308565b9250828203905065ffffffffffff81111561173b5761173a6115eb565b5b9291505056fea2646970667358221220d08dc27d37232bd451d6a0db84bf9e7c89d75fd4721f17fc992d67d97c2d740a64736f6c634300081c0033", "linkReferences": {}, "deployedLinkReferences": {} }