namillum
Version:
Bubble Protocol SDK
983 lines • 97 kB
JSON
{
"contractName": "Agent",
"abi": [
{
"constant": true,
"inputs": [],
"name": "ADD_PROTECTED_TOKEN_ROLE",
"outputs": [
{
"name": "",
"type": "bytes32"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [
{
"name": "_interfaceId",
"type": "bytes4"
}
],
"name": "supportsInterface",
"outputs": [
{
"name": "",
"type": "bool"
}
],
"payable": false,
"stateMutability": "pure",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "hasInitialized",
"outputs": [
{
"name": "",
"type": "bool"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "ERC1271_INTERFACE_ID",
"outputs": [
{
"name": "",
"type": "bytes4"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"name": "_operator",
"type": "address"
},
{
"name": "_from",
"type": "address"
},
{
"name": "_tokenId",
"type": "uint256"
},
{
"name": "_data",
"type": "bytes"
}
],
"name": "onERC721Received",
"outputs": [
{
"name": "",
"type": "bytes4"
}
],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": true,
"inputs": [
{
"name": "_hash",
"type": "bytes32"
},
{
"name": "_signature",
"type": "bytes"
}
],
"name": "isValidSignature",
"outputs": [
{
"name": "",
"type": "bytes4"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "ERC1271_RETURN_INVALID_SIGNATURE",
"outputs": [
{
"name": "",
"type": "bytes4"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "TRANSFER_ROLE",
"outputs": [
{
"name": "",
"type": "bytes32"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [
{
"name": "_data",
"type": "bytes"
},
{
"name": "_signature",
"type": "bytes"
}
],
"name": "isValidSignature",
"outputs": [
{
"name": "",
"type": "bytes4"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "getProtectedTokensLength",
"outputs": [
{
"name": "",
"type": "uint256"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [
{
"name": "_script",
"type": "bytes"
}
],
"name": "getEVMScriptExecutor",
"outputs": [
{
"name": "",
"type": "address"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "getRecoveryVault",
"outputs": [
{
"name": "",
"type": "address"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "RUN_SCRIPT_ROLE",
"outputs": [
{
"name": "",
"type": "bytes32"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "SAFE_EXECUTE_ROLE",
"outputs": [
{
"name": "",
"type": "bytes32"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "REMOVE_PROTECTED_TOKEN_ROLE",
"outputs": [
{
"name": "",
"type": "bytes32"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"name": "_token",
"type": "address"
},
{
"name": "_value",
"type": "uint256"
}
],
"name": "deposit",
"outputs": [],
"payable": true,
"stateMutability": "payable",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "isDepositable",
"outputs": [
{
"name": "",
"type": "bool"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"name": "_hash",
"type": "bytes32"
}
],
"name": "presignHash",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "DESIGNATE_SIGNER_ROLE",
"outputs": [
{
"name": "",
"type": "bytes32"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"name": "_token",
"type": "address"
}
],
"name": "removeProtectedToken",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "EXECUTE_ROLE",
"outputs": [
{
"name": "",
"type": "bytes32"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"name": "_token",
"type": "address"
}
],
"name": "addProtectedToken",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": true,
"inputs": [
{
"name": "",
"type": "address"
}
],
"name": "allowRecoverability",
"outputs": [
{
"name": "",
"type": "bool"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "appId",
"outputs": [
{
"name": "",
"type": "bytes32"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": false,
"inputs": [],
"name": "initialize",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": true,
"inputs": [
{
"name": "",
"type": "uint256"
}
],
"name": "protectedTokens",
"outputs": [
{
"name": "",
"type": "address"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "getInitializationBlock",
"outputs": [
{
"name": "",
"type": "uint256"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "ERC1271_RETURN_VALID_SIGNATURE",
"outputs": [
{
"name": "",
"type": "bytes4"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"name": "_token",
"type": "address"
}
],
"name": "transferToVault",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": true,
"inputs": [
{
"name": "_sender",
"type": "address"
},
{
"name": "_role",
"type": "bytes32"
},
{
"name": "_params",
"type": "uint256[]"
}
],
"name": "canPerform",
"outputs": [
{
"name": "",
"type": "bool"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "getEVMScriptRegistry",
"outputs": [
{
"name": "",
"type": "address"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"name": "_designatedSigner",
"type": "address"
}
],
"name": "setDesignatedSigner",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "designatedSigner",
"outputs": [
{
"name": "",
"type": "address"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"name": "_target",
"type": "address"
},
{
"name": "_data",
"type": "bytes"
}
],
"name": "safeExecute",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "PROTECTED_TOKENS_CAP",
"outputs": [
{
"name": "",
"type": "uint256"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "ADD_PRESIGNED_HASH_ROLE",
"outputs": [
{
"name": "",
"type": "bytes32"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [
{
"name": "",
"type": "bytes32"
}
],
"name": "isPresigned",
"outputs": [
{
"name": "",
"type": "bool"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"name": "_target",
"type": "address"
},
{
"name": "_ethValue",
"type": "uint256"
},
{
"name": "_data",
"type": "bytes"
}
],
"name": "execute",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"name": "_token",
"type": "address"
},
{
"name": "_to",
"type": "address"
},
{
"name": "_value",
"type": "uint256"
}
],
"name": "transfer",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": true,
"inputs": [
{
"name": "_sender",
"type": "address"
},
{
"name": "_evmScript",
"type": "bytes"
}
],
"name": "canForward",
"outputs": [
{
"name": "",
"type": "bool"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "kernel",
"outputs": [
{
"name": "",
"type": "address"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"name": "_evmScript",
"type": "bytes"
}
],
"name": "forward",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "isPetrified",
"outputs": [
{
"name": "",
"type": "bool"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [
{
"name": "_token",
"type": "address"
}
],
"name": "balance",
"outputs": [
{
"name": "",
"type": "uint256"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "isForwarder",
"outputs": [
{
"name": "",
"type": "bool"
}
],
"payable": false,
"stateMutability": "pure",
"type": "function"
},
{
"payable": true,
"stateMutability": "payable",
"type": "fallback"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"name": "sender",
"type": "address"
},
{
"indexed": true,
"name": "target",
"type": "address"
},
{
"indexed": false,
"name": "data",
"type": "bytes"
}
],
"name": "SafeExecute",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"name": "sender",
"type": "address"
},
{
"indexed": true,
"name": "target",
"type": "address"
},
{
"indexed": false,
"name": "ethValue",
"type": "uint256"
},
{
"indexed": false,
"name": "data",
"type": "bytes"
}
],
"name": "Execute",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"name": "token",
"type": "address"
}
],
"name": "AddProtectedToken",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"name": "token",
"type": "address"
}
],
"name": "RemoveProtectedToken",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"name": "sender",
"type": "address"
},
{
"indexed": true,
"name": "hash",
"type": "bytes32"
}
],
"name": "PresignHash",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"name": "sender",
"type": "address"
},
{
"indexed": true,
"name": "oldSigner",
"type": "address"
},
{
"indexed": true,
"name": "newSigner",
"type": "address"
}
],
"name": "SetDesignatedSigner",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"name": "token",
"type": "address"
},
{
"indexed": true,
"name": "operator",
"type": "address"
},
{
"indexed": true,
"name": "from",
"type": "address"
},
{
"indexed": false,
"name": "tokenId",
"type": "uint256"
},
{
"indexed": false,
"name": "data",
"type": "bytes"
}
],
"name": "ReceiveERC721",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"name": "token",
"type": "address"
},
{
"indexed": true,
"name": "to",
"type": "address"
},
{
"indexed": false,
"name": "amount",
"type": "uint256"
}
],
"name": "VaultTransfer",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"name": "token",
"type": "address"
},
{
"indexed": true,
"name": "sender",
"type": "address"
},
{
"indexed": false,
"name": "amount",
"type": "uint256"
}
],
"name": "VaultDeposit",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"name": "executor",
"type": "address"
},
{
"indexed": false,
"name": "script",
"type": "bytes"
},
{
"indexed": false,
"name": "input",
"type": "bytes"
},
{
"indexed": false,
"name": "returnData",
"type": "bytes"
}
],
"name": "ScriptResult",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"name": "vault",
"type": "address"
},
{
"indexed": true,
"name": "token",
"type": "address"
},
{
"indexed": false,
"name": "amount",
"type": "uint256"
}
],
"name": "RecoverToVault",
"type": "event"
}
],
"bytecode": "0x6080604052620000176401000000006200001d810204565b6200023b565b6200003064010000000062000125810204565b60408051808201909152601881527f494e49545f414c52454144595f494e495449414c495a45440000000000000000602082015290156200010c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015620000d0578181015183820152602001620000b6565b50505050905090810190601f168015620000fe5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b506200012360001964010000000062000154810204565b565b60006200014f60008051602062004d37833981519152640100000000620035046200023382021704565b905090565b6200016764010000000062000125810204565b60408051808201909152601881527f494e49545f414c52454144595f494e495449414c495a454400000000000000006020820152901562000206576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252838181518152602001915080519060200190808383600083811015620000d0578181015183820152602001620000b6565b506200023060008051602062004d3783398151915282640100000000620047e26200023782021704565b50565b5490565b9055565b614aec806200024b6000396000f3006080604052600436106102235763ffffffff7c01000000000000000000000000000000000000000000000000000000006000350416627bb00381146103af57806301ffc9a7146103d65780630803fac01461042457806311a5e40914610439578063150b7a02146104835780631626ba7e146104c95780631ce3018114610527578063206b60f91461053c57806320c13b0b1461055157806326f06d24146105e85780632914b9bd146105fd57806332f0a3b51461067f578063368c3c34146106945780633e4eb756146106a957806342b2d066146106be57806347e7ef24146106d357806348a0c8dd146106f75780634c7ec0b01461070c57806354842f1414610724578063578eb50b146107395780635fa5e4e6146107675780636298e9021461077c5780637e7db6e1146107aa57806380afdea8146107d85780638129fc1c146107ed578063851a3790146108025780638b3dd7491461081a5780639890cdca1461082f5780639d4941d814610844578063a1658fad14610872578063a479e508146108e6578063a83e52b4146108fb578063aae2505114610929578063ab23c3451461093e578063b03bdb0414610978578063b06c42441461098d578063b4fa653c146109a2578063b61d27f6146109ba578063beabacc8146109f8578063c0774df314610a2f578063d4aae0c414610aa3578063d948d46814610ab8578063de4796ed14610b11578063e3d670d714610b26578063fd64eccb14610b54575b61022b610b69565b60408051808201909152601481527f494e49545f4e4f545f494e495449414c495a45440000000000000000000000006020820152901515610304576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b838110156102c95781810151838201526020016102b1565b50505050905090810190601f1680156102f65780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060408051808201909152601381527f5641554c545f444154415f4e4f4e5f5a45524f00000000000000000000000000602082015236156103a1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382528381815181526020019150805190602001908083836000838110156102c95781810151838201526020016102b1565b506103ad600034610b93565b005b3480156103bb57600080fd5b506103c4610eb2565b60408051918252519081900360200190f35b3480156103e257600080fd5b506104107fffffffff0000000000000000000000000000000000000000000000000000000060043516610ed6565b604080519115158252519081900360200190f35b34801561043057600080fd5b50610410610b69565b34801561044557600080fd5b5061044e610fbd565b604080517fffffffff000000000000000000000000000000000000000000000000000000009092168252519081900360200190f35b34801561048f57600080fd5b5061044e73ffffffffffffffffffffffffffffffffffffffff60048035821691602480359091169160443591606435908101910135610fe1565b3480156104d557600080fd5b5060408051602060046024803582810135601f810185900485028601850190965285855261044e9583359536956044949193909101919081908401838280828437509497506110ab9650505050505050565b34801561053357600080fd5b5061044e611137565b34801561054857600080fd5b506103c461113c565b34801561055d57600080fd5b506040805160206004803580820135601f810184900484028501840190955284845261044e94369492936024939284019190819084018382808284375050604080516020601f89358b018035918201839004830284018301909452808352979a9998810197919650918201945092508291508401838280828437509497506111719650505050505050565b3480156105f457600080fd5b506103c46111e0565b34801561060957600080fd5b506040805160206004803580820135601f81018490048402850184019095528484526106569436949293602493928401919081908401838280828437509497506112909650505050505050565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b34801561068b57600080fd5b5061065661139c565b3480156106a057600080fd5b506103c461143a565b3480156106b557600080fd5b506103c461145e565b3480156106ca57600080fd5b506103c4611482565b6103ad73ffffffffffffffffffffffffffffffffffffffff600435166024356114a6565b34801561070357600080fd5b5061041061155a565b34801561071857600080fd5b506103ad60043561158a565b34801561073057600080fd5b506103c46116c3565b34801561074557600080fd5b506103ad73ffffffffffffffffffffffffffffffffffffffff600435166116e7565b34801561077357600080fd5b506103c461186f565b34801561078857600080fd5b506103ad73ffffffffffffffffffffffffffffffffffffffff60043516611893565b3480156107b657600080fd5b5061041073ffffffffffffffffffffffffffffffffffffffff60043516611b5e565b3480156107e457600080fd5b506103c4611b64565b3480156107f957600080fd5b506103ad611b8f565b34801561080e57600080fd5b50610656600435611c48565b34801561082657600080fd5b506103c4611c7d565b34801561083b57600080fd5b5061044e611ca8565b34801561085057600080fd5b506103ad73ffffffffffffffffffffffffffffffffffffffff60043516611ccc565b34801561087e57600080fd5b50604080516020600460443581810135838102808601850190965280855261041095833573ffffffffffffffffffffffffffffffffffffffff16956024803596369695606495939492019291829185019084908082843750949750611fee9650505050505050565b3480156108f257600080fd5b5061065661217e565b34801561090757600080fd5b506103ad73ffffffffffffffffffffffffffffffffffffffff60043516612240565b34801561093557600080fd5b50610656612445565b34801561094a57600080fd5b506103ad6004803573ffffffffffffffffffffffffffffffffffffffff169060248035908101910135612461565b34801561098457600080fd5b506103c4612ac8565b34801561099957600080fd5b506103c4612acd565b3480156109ae57600080fd5b50610410600435612af1565b3480156109c657600080fd5b506103ad6004803573ffffffffffffffffffffffffffffffffffffffff16906024803591604435918201910135612b06565b348015610a0457600080fd5b506103ad73ffffffffffffffffffffffffffffffffffffffff60043581169060243516604435612d1c565b348015610a3b57600080fd5b5060408051602060046024803582810135601f810185900485028601850190965285855261041095833573ffffffffffffffffffffffffffffffffffffffff169536956044949193909101919081908401838280828437509497506130c79650505050505050565b348015610aaf57600080fd5b50610656613104565b348015610ac457600080fd5b506040805160206004803580820135601f81018490048402850184019095528484526103ad94369492936024939284019190819084018382808284375094975061312f9650505050505050565b348015610b1d57600080fd5b50610410613209565b348015610b3257600080fd5b506103c473ffffffffffffffffffffffffffffffffffffffff6004351661323a565b348015610b6057600080fd5b5061041061328e565b600080610b74611c7d565b90508015801590610b8c575080610b89613293565b10155b91505b5090565b610b9b61155a565b60408051808201909152601581527f5641554c545f4e4f545f4445504f53495441424c4500000000000000000000006020820152901515610c38576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382528381815181526020019150805190602001908083836000838110156102c95781810151838201526020016102b1565b5060408051808201909152601881527f5641554c545f4445504f5349545f56414c55455f5a45524f0000000000000000602082015260008211610cd7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382528381815181526020019150805190602001908083836000838110156102c95781810151838201526020016102b1565b5073ffffffffffffffffffffffffffffffffffffffff82161515610d985760408051808201909152601481527f5641554c545f56414c55455f4d49534d415443480000000000000000000000006020820152348214610d92576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382528381815181526020019150805190602001908083836000838110156102c95781810151838201526020016102b1565b50610e61565b610dc073ffffffffffffffffffffffffffffffffffffffff831633308463ffffffff61329716565b6040805190810160405280602081526020017f5641554c545f544f4b454e5f5452414e534645525f46524f4d5f524556455254815250901515610e5f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382528381815181526020019150805190602001908083836000838110156102c95781810151838201526020016102b1565b505b604080518281529051339173ffffffffffffffffffffffffffffffffffffffff8516917f2790b90165fd3973ad7edde4eca71b4f8808dd4857a2a3a3e8ae5642a5cb196e9181900360200190a35050565b7f6eb2a499556bfa2872f5aa15812b956cc4a71b4d64eb3553f7073c7e41415aaa81565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167ffb855dc9000000000000000000000000000000000000000000000000000000001480610f6957507fffffffff0000000000000000000000000000000000000000000000000000000082167f150b7a0200000000000000000000000000000000000000000000000000000000145b80610fb557507fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a700000000000000000000000000000000000000000000000000000000145b90505b919050565b7ffb855dc90000000000000000000000000000000000000000000000000000000081565b60008473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fe0d2ab3bf6896c073bb33b920a9b60f3c8207b3cc3b7561c3101cb081a8f0883878787604051808481526020018060200182810382528484828181526020019250808284376040519201829003965090945050505050a4507f150b7a020000000000000000000000000000000000000000000000000000000095945050505050565b600082815260208190526040812054819060ff16156110d5576110ce6001613338565b9150611130565b60015473ffffffffffffffffffffffffffffffffffffffff1615156110fc57506000611124565b60015461112190859073ffffffffffffffffffffffffffffffffffffffff168561336d565b90505b61112d81613338565b91505b5092915050565b600081565b604080517f5452414e534645525f524f4c45000000000000000000000000000000000000008152905190819003600d01902081565b60006111d9836040518082805190602001908083835b602083106111a65780518252601f199092019160209182019101611187565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040518091039020836110ab565b9392505050565b60006111ea610b69565b60408051808201909152601481527f494e49545f4e4f545f494e495449414c495a45440000000000000000000000006020820152901515611287576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382528381815181526020019150805190602001908083836000838110156102c95781810151838201526020016102b1565b50506002545b90565b600061129a61217e565b73ffffffffffffffffffffffffffffffffffffffff166304bf2a7f836040518263ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561131e578181015183820152602001611306565b50505050905090810190601f16801561134b5780820380516001836020036101000a031916815260200191505b5092505050602060405180830381600087803b15801561136a57600080fd5b505af115801561137e573d6000803e3d6000fd5b505050506040513d602081101561139457600080fd5b505192915050565b60006113a6613104565b73ffffffffffffffffffffffffffffffffffffffff166332f0a3b56040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b15801561140957600080fd5b505af115801561141d573d6000803e3d6000fd5b505050506040513d602081101561143357600080fd5b5051905090565b7fb421f7ad7646747f3051c50c0b8e2377839296cd4973e27f63821d73e390338f81565b7f0a1ad7b87f5846153c6d5a1f761d71c7d0cfd122384f56066cd33239b793369481565b7f71eee93d500f6f065e38b27d242a756466a00a52a1dbcd6b4260f01a8640402a81565b6114ae610b69565b60408051808201909152601481527f494e49545f4e4f545f494e495449414c495a4544000000000000000000000000602082015290151561154b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382528381815181526020019150805190602001908083836000838110156102c95781810151838201526020016102b1565b506115568282610b93565b5050565b60006115857f665fd576fbbe6f247aff98f5c94a561e3f71ec2d3c988d56f12d342396c50cea613504565b905090565b7f0b29780bb523a130b3b01f231ef49ed2fa2781645591a0b0a44ca98f15a5994c6115b482613508565b6115bf338383611fee565b60408051808201909152600f81527f4150505f415554485f4641494c45440000000000000000000000000000000000602082015290151561165c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382528381815181526020019150805190602001908083836000838110156102c95781810151838201526020016102b1565b5060008381526020819052604080822080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600117905551849133917fb150212e573caa2a0216cf8f273ef996af143fd7b2d35abd92c8105536cac1609190a3505050565b7f23ce341656c3f14df6692eebd4757791e33662b7dcf9970c8308303da5472b7c81565b7f71eee93d500f6f065e38b27d242a756466a00a52a1dbcd6b4260f01a8640402a61171182613513565b61171c338383611fee565b60408051808201909152600f81527f4150505f415554485f4641494c4544000000000000000000000000000000000060208201529015156117b9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382528381815181526020019150805190602001908083836000838110156102c95781810151838201526020016102b1565b506117c383613534565b60408051808201909152601981527f4147454e545f544f4b454e5f4e4f545f50524f544543544544000000000000006020820152901515611860576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382528381815181526020019150805190602001908083836000838110156102c95781810151838201526020016102b1565b5061186a836135ac565b505050565b7fcebf517aa4440d1d125e0355aae64401211d0848a23c02cc5d29a14822580ba481565b7f6eb2a499556bfa2872f5aa15812b956cc4a71b4d64eb3553f7073c7e41415aaa6118bd82613513565b6118c8338383611fee565b60408051808201909152600f81527f4150505f415554485f4641494c454400000000000000000000000000000000006020820152901515611965576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382528381815181526020019150805190602001908083836000838110156102c95781810151838201526020016102b1565b5060025460408051808201909152601881527f4147454e545f544f4b454e535f4341505f524541434845440000000000000000602082015290600a11611a07576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382528381815181526020019150805190602001908083836000838110156102c95781810151838201526020016102b1565b50611a11836136d7565b60408051808201909152601581527f4147454e545f544f4b454e5f4e4f545f455243323000000000000000000000006020820152901515611aae576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382528381815181526020019150805190602001908083836000838110156102c95781810151838201526020016102b1565b50611ab883613534565b60408051808201909152601d81527f4147454e545f544f4b454e5f414c52454144595f50524f54454354454400000060208201529015611b54576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382528381815181526020019150805190602001908083836000838110156102c95781810151838201526020016102b1565b5061186a83613702565b50600090565b60006115857fd625496217aa6a3453eecb9c3489dc5a53e6c67b444329ea2b2cbc9ff547639b613504565b611b97611c7d565b60408051808201909152601881527f494e49545f414c52454144595f494e495449414c495a4544000000000000000060208201529015611c33576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382528381815181526020019150805190602001908083836000838110156102c95781810151838201526020016102b1565b50611c3c61379f565b611c46600161387c565b565b6002805482908110611c5657fe5b60009182526020909120015473ffffffffffffffffffffffffffffffffffffffff16905081565b60006115857febb05b386a8d34882b8711d156f463690983dc47815980fb82aeeff1aa43579e613504565b7f20c13b0b0000000000000000000000000000000000000000000000000000000081565b6000806000611cda84611b5e565b60408051808201909152601281527f5245434f5645525f444953414c4c4f57454400000000000000000000000000006020820152901515611d77576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382528381815181526020019150805190602001908083836000838110156102c95781810151838201526020016102b1565b50611d8061139c565b9250611d8b836138b3565b60408051808201909152601a81527f5245434f5645525f5641554c545f4e4f545f434f4e54524143540000000000006020820152901515611e28576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382528381815181526020019150805190602001908083836000838110156102c95781810151838201526020016102b1565b5073ffffffffffffffffffffffffffffffffffffffff84161515611e93576040513031925073ffffffffffffffffffffffffffffffffffffffff84169083156108fc029084906000818181858888f19350505050158015611e8d573d6000803e3d6000fd5b50611f83565b5082611ebb73ffffffffffffffffffffffffffffffffffffffff82163063ffffffff6138e616565b9150611ee473ffffffffffffffffffffffffffffffffffffffff8216848463ffffffff613a1f16565b60408051808201909152601d81527f5245434f5645525f544f4b454e5f5452414e534645525f4641494c45440000006020820152901515611f81576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382528381815181526020019150805190602001908083836000838110156102c95781810151838201526020016102b1565b505b8373ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f596caf56044b55fb8c4ca640089bbc2b63cae3e978b851f5745cbb7c5b288e02846040518082815260200191505060405180910390a350505050565b600080611ff9610b69565b15156120085760009150612176565b612010613104565b905073ffffffffffffffffffffffffffffffffffffffff811615156120385760009150612176565b8073ffffffffffffffffffffffffffffffffffffffff1663fdef910686308761206088613ab7565b6040517c010000000000000000000000000000000000000000000000000000000063ffffffff871602815273ffffffffffffffffffffffffffffffffffffffff808616600483019081529085166024830152604482018490526080606483019081528351608484015283519192909160a490910190602085019080838360005b838110156120f85781810151838201526020016120e0565b50505050905090810190601f1680156121255780820380516001836020036101000a031916815260200191505b5095505050505050602060405180830381600087803b15801561214757600080fd5b505af115801561215b573d6000803e3d6000fd5b505050506040513d602081101561217157600080fd5b505191505b509392505050565b600080612189613104565b604080517fbe00bbd80000000000000000000000000000000000000000000000000000000081527fd6f028ca0e8edb4a8c9757ca4fdccab25fa1e0317da1188108f7d2dee14902fb60048201527fddbcfd564f642ab5627cf68b9b7d374fb4f8a36e941a75d89c87998cef03bd616024820152905173ffffffffffffffffffffffffffffffffffffffff929092169163be00bbd8916044808201926020929091908290030181600087803b15801561136a57600080fd5b60007f23ce341656c3f14df6692eebd4757791e33662b7dcf9970c8308303da5472b7c61226c83613513565b612277338383611fee565b60408051808201909152600f81527f4150505f415554485f4641494c454400000000000000000000000000000000006020820152901515612314576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382528381815181526020019150805190602001908083836000838110156102c95781810151838201526020016102b1565b5060408051808201909152601881527f4147454e545f44455349474e415445445f544f5f53454c460000000000000000602082015273ffffffffffffffffffffffffffffffffffffffff85163014156123c9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382528381815181526020019150805190602001908083836000838110156102c95781810151838201526020016102b1565b506001805473ffffffffffffffffffffffffffffffffffffffff8681167fffffffffffffffffffffffff00000000000000000000000000000000000000008316811790935560405191169450849033907f3ecf54ed9acd859c5ee7f080794267b8f08b65d2446d816cef1efccd6d00d73590600090a450505050565b60015473ffffffffffffffffffffffffffffffffffffffff1681565b60006060806000806000806000807f0a1ad7b87f5846153c6d5a1f761d71c7d0cfd122384f56066cd33239b79336946001026124f58d6124d08e8e8080601f01602080910402602001604051908101604052809392919081815260200183838082843750613ac1945050505050565b7c01000000000000000000000000000000000000000000000000000000009004613ada565b612500338383611fee565b60408051808201909152600f81527f4150505f415554485f4641494c45440000000000000000000000000000000000602082015290151561259d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382528381815181526020019150805190602001908083836000838110156102c95781810151838201526020016102b1565b50600254604080518281526020808402820101909152909b508b80156125cd578160200160208202803883390190505b5099508a6040519080825280602002602001820160405280156125fa578160200160208202803883390190505b509850600097505b8a88101561274057600280548990811061261857fe5b6000918252602091829020015460408051808201909152601681527f4147454e545f5441524745545f50524f544543544544000000000000000000009281019290925273ffffffffffffffffffffffffffffffffffffffff90811698508f168814156126e0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382528381815181526020019150805190602001908083836000838110156102c95781810151838201526020016102b1565b50868a898151811015156126f057fe5b73ffffffffffffffffffffffffffffffffffffffff90921660209283029091019091015261271d8761323a565b898981518110151561272b57fe5b60209081029091010152600190970196612602565b8d73ffffffffffffffffffffffffffffffffffffffff168d8d604051808383808284378201915050925050506000604051808303816000865af191505095503d935060405194503d85016040523d6000863e8515612ac45760025460408051808201909152601f81527f4147454e545f50524f5445435445445f544f4b454e535f4d4f444946494544006020820152908c14612838576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382528381815181526020019150805190602001908083836000838110156102c95781810151838201526020016102b1565b50600092505b8a831015612a4257898381518110151561285457fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1660028481548110151561288357fe5b6000918252602091829020015460408051808201909152601f81527f4147454e545f50524f5445435445445f544f4b454e535f4d4f4449464945440092810192909252909173ffffffffffffffffffffffffffffffffffffffff90911614612947576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382528381815181526020019150805190602001908083836000838110156102c95781810151838201526020016102b1565b50888381518110151561295657fe5b9060200190602002015161299960028581548110151561297257fe5b60009182526020909120015473ffffffffffffffffffffffffffffffffffffffff1661323a565b60408051808201909152601f81527f4147454e545f50524f5445435445445f42414c414e43455f4c4f5745524544006020820152911115612a36576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382528381815181526020019150805190602001908083836000838110156102c95781810151838201526020016102b1565b5060019092019161283e565b8d73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f47f4287d5285559a03d8affeadc53ef3fca238a63c256c08a22bfd30fd5d33ce8f8f6040518080602001828103825284848281815260200192508082843760405192018290039550909350505050a38385f35b8385fd5b600a81565b7f0b29780bb523a130b3b01f231ef49ed2fa2781645591a0b0a44ca98f15a5994c81565b60006020819052908152604090205460ff1681565b60007fcebf517aa4440d1d125e0355aae64401211d0848a23c02cc5d29a14822580ba4600102612b8f8686612b6a87878080601f01602080910402602001604051908101604052809392919081815260200183838082843750613ac1945050505050565b7c01000000000000000000000000000000000000000000000000000000009004613afc565b612b9a338383611fee565b60408051808201909152600f81527f4150505f415554485f4641494c454400000000000000000000000000000000006020820152901515612c37576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382528381815181526020019150805190602001908083836000838110156102c95781810151838201526020016102b1565b508673ffffffffffffffffffffffffffffffffffffffff168686866040518083838082843782019150509250505060006040518083038185875af19250505092508215612d05578673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fc25cfed0b22da6a56f0e5ff784979a0b8623eddf2aee4acd33c2adefb09cbab6888888604051808481526020018060200182810382528484828181526020019250808284376040519201829003965090945050505050a35b6040513d6000823e838015612d18573d82f35b3d82fd5b604080517f5452414e534645525f524f4c45000000000000000000000000000000000000008152905190819003600d019020612d59848484613b27565b612d64338383611fee565b60408051808201909152600f81527f4150505f415554485f4641494c454400000000000000000000000000000000006020820152901515612e01576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382528381815181526020019150805190602001908083836000838110156102c95781810151838201526020016102b1565b5060408051808201909152601981527f5641554c545f5452414e534645525f56414c55455f5a45524f00000000000000602082015260008411612ea0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382528381815181526020019150805190602001908083836000838110156102c95781810151838201526020016102b1565b5073ffffffffffffffffffffffffffffffffffffffff85161515612f955760405173ffffffffffffffffffffffffffffffffffffffff85169084156108fc029085906000818181858888f193505050506040805190810160405280601381526020017f5641554c545f53454e445f524556455254454400000000000000000000000000815250901515612f8f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382528381815181526020019150805190602001908083836000838110156102c95781810151838201526020016102b1565b5061305b565b612fbc73ffffffffffffffffffffffffffffffffffffffff8616858563ffffffff613a1f16565b60408051808201909152601d81527f5641554c545f544f4b454e5f5452414e534645525f52455645525445440000006020820152901515613059576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382528381815181526020019150805190602001908083836000838110156102c95781810151838201526020016102b1565b505b8373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167f239e7f6cdac8fb35a788a46b431b54da87de90b82448a2c294be5e92a6e579af856040518082815260200191505060405180910390a35050505050565b60006111d9837fb421f7ad7646747f3051c50c0b8e2377839296cd4973e27f63821d73e390338f6130ff6130fa86613b60565b613c48565b611fee565b60006115857f4172f0f7d2289153072b0a6ca36959e0cbe2efc3afe50fc81636caa96338137b613504565b60608061313c33846130c7565b60408051808201909152601581527f4147454e545f43414e5f4e4f545f464f5257415244000000000000000000000060208201529015156131d9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382528381815181526020019150805190602001908083836000838110156102c95781810151838201526020016102b1565b50506040805160208082018352600080835283519081529081019092529150613203838383613c89565b50505050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff613234611c7d565b14905090565b600073ffffffffffffffffffffffffffffffffffffffff8216151561326157503031610fb8565b61328773ffffffffffffffffffffffffffffffffffffffff83163063ffffffff6138e616565b9050610fb8565b600190565b4390565b6040805173ffffffffffffffffffffffffffffffffffffffff85811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f23b872dd0000000000000000000000000000000000000000000000000000000017905260009061332e868261435f565b9695505050505050565b600081613346576000610fb5565b507f20c13b0b00000000000000000000000000000000000000000000000000000000919050565b600080600083516000141561338557600092506134fb565b83600081518110151561339457fe5b01602001517f0100000000000000000000000000000000000000000000000000000000000000908190048102049150600460ff8316106133d757600092506134fb565b8160ff1660048111156133e657fe5b905060018160048111156133f657fe5b141561340e576134078686866143ad565b92506134fb565b600281600481111561341c57fe5b14156134cf57604080517f19457468657265756d205369676e6564204d6573736167653a0a333200000000602080830191909152603c8083018a905283518084039091018152605c90920192839052815161340793918291908401908083835b6020831061349b5780518252601f19909201916020918201910161347c565b6001836020036101000a038019825116818451168082178552505050505050905001915050604051809103902086866143ad565b60038160048111156134dd57fe5b14156134f65761340785876134f187614475565b614581565b600092505b50509392505050565b5490565b6060610fb582613c48565b6060610fb58273ffffffffffffffffffffffffffffffffffffffff16613c48565b6000805b6002548110156135a1578273ffffffffffffffffffffffffffffffffffffffff1660028281548110151561356857fe5b60009182526020909120015473ffffffffffffffffffffffffffffffffffffffff16141561359957600191506135a6565b600101613538565b600091505b50919050565b600280547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81019081106135dc57fe5b60009182526020909120015473ffffffffffffffffffffffffffffffffffffffff166002613609836146e2565b8154811061361357fe5b600091825260209091200180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff929092169190911790556002805490613692907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8301614a87565b5060405173ffffffffffffffffffffffffffffffffffffffff8216907f3da25279c93c5b22b359bebff8b5ddbfd9b0506be8344b93c9a7dc999459fe0490600090a250565b60006136e2826138b3565b15156136f057506000610fb8565b6136f98261323a565b50600192915050565b6002805460018101825560009182527f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ace0180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff841690811790915560405190917ff70a5123a7f334e5dac1d9aa3a6aafbc316712bf2519ffe0d3aa4f7cba52767e91a250565b6137a7611c7d565b60408051808201909152601881527f494e49545f414c52454144595f494e495449414c495a4544000000000000000060208201529015613843576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382528381815181526020019150805190602001908083836000838110156102c95781810151838201526020016102b1565b50611c4661384f613293565b7febb05b386a8d34882b8711d156f463690983dc47815980fb82aeeff1aa43579e9063ffffffff6147e216565b6138ac7f665fd576fbbe6f247aff98f5c94a561e3f71ec2d3c988d56f12d342396c50cea8263ffffffff6147e216565b50565b5490565b60008073ffffffffffffffffffffffffffffffffffffffff831615156138dc57600091506135a6565b50506000903b1190565b6040805173ffffffffffffffffffffffffffffffffffffffff83166024808301919091528251808303909101815260449091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f70a0823100000000000000000000000000000000000000000000000000000000179052600090818061397386846147e6565b60408051808201909152601c81527f534146455f4552435f32305f42414c414e43455f52455645525445440000000060208201529193509150821515613a15576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382528381815181526020019150805190602001908083836000838110156102c95781810151838201526020016102b1565b5095945050505050565b6040805173ffffffffffffffffffffffffffffffffffffffff8416602482015260448082018490528251