0 txs
204 calls
constructor
constructor(address _feed, bool _invert, address _admin, address _updater, address _gyroConfigManager, address _governanceRoleManager)
functions
DEFAULT_ADMIN_ROLE
viewfunction DEFAULT_ADMIN_ROLE() view returns (bytes32)
defaultAdmin
viewfunction defaultAdmin() view returns (address)
defaultAdminDelay
viewfunction defaultAdminDelay() view returns (uint48)
defaultAdminDelayIncreaseWait
viewfunction defaultAdminDelayIncreaseWait() view returns (uint48)
feed
viewfunction feed() view returns (address)
getRate
viewfunction getRate() view returns (uint256)
getRoleAdmin
viewfunction getRoleAdmin(bytes32 role) view returns (bytes32)
governanceRoleManager
viewfunction governanceRoleManager() view returns (address)
gyroConfigManager
viewfunction gyroConfigManager() view returns (address)
hasRole
viewfunction hasRole(bytes32 role, address account) view returns (bool)
invert
viewfunction invert() view returns (bool)
ourTokenIx
viewfunction ourTokenIx() view returns (uint8)
owner
viewfunction owner() view returns (address)
pendingDefaultAdmin
viewfunction pendingDefaultAdmin() view returns (address newAdmin, uint48 schedule)
pendingDefaultAdminDelay
viewfunction pendingDefaultAdminDelay() view returns (uint48 newDelay, uint48 schedule)
pool
viewfunction pool() view returns (address)
poolType
viewfunction poolType() view returns (uint8)
supportsInterface
viewfunction supportsInterface(bytes4 interfaceId) view returns (bool)
UPDATER_ROLE
viewfunction UPDATER_ROLE() view returns (bytes32)
value
viewfunction value() view returns (uint256)
acceptDefaultAdminTransfer
nonpayablefunction acceptDefaultAdminTransfer()
beginDefaultAdminTransfer
nonpayablefunction beginDefaultAdminTransfer(address newAdmin)
cancelDefaultAdminTransfer
nonpayablefunction cancelDefaultAdminTransfer()
changeDefaultAdminDelay
nonpayablefunction changeDefaultAdminDelay(uint48 newDelay)
grantRole
nonpayablefunction grantRole(bytes32 role, address account)
renounceRole
nonpayablefunction renounceRole(bytes32 role, address account)
revokeRole
nonpayablefunction revokeRole(bytes32 role, address account)
rollbackDefaultAdminDelay
nonpayablefunction rollbackDefaultAdminDelay()
setPool
nonpayablefunction setPool(address _pool, uint8 _poolType)
updateToEdge
nonpayablefunction updateToEdge()
events
DefaultAdminDelayChangeCanceled
event DefaultAdminDelayChangeCanceled()
DefaultAdminDelayChangeScheduled
event DefaultAdminDelayChangeScheduled(uint48 newDelay, uint48 effectSchedule)
DefaultAdminTransferCanceled
event DefaultAdminTransferCanceled()
DefaultAdminTransferScheduled
event DefaultAdminTransferScheduled(address indexed newAdmin, uint48 acceptSchedule)
PoolSet
event PoolSet(address indexed pool, uint8 poolType, uint8 ourTokenIx)
RoleAdminChanged
event RoleAdminChanged(bytes32 indexed role, bytes32 indexed previousAdminRole, bytes32 indexed newAdminRole)
RoleGranted
event RoleGranted(bytes32 indexed role, address indexed account, address indexed sender)
RoleRevoked
event RoleRevoked(bytes32 indexed role, address indexed account, address indexed sender)
ValueUpdated
event ValueUpdated(uint256 value, uint8 indexed why)
errors
AccessControlBadConfirmation
error AccessControlBadConfirmation()
AccessControlEnforcedDefaultAdminDelay
error AccessControlEnforcedDefaultAdminDelay(uint48 schedule)
AccessControlEnforcedDefaultAdminRules
error AccessControlEnforcedDefaultAdminRules()
AccessControlInvalidDefaultAdmin
error AccessControlInvalidDefaultAdmin(address defaultAdmin)
AccessControlUnauthorizedAccount
error AccessControlUnauthorizedAccount(address account, bytes32 neededRole)
SafeCastOverflowedUintDowncast
error SafeCastOverflowedUintDowncast(uint8 bits, uint256 value)
creation bytecode
0x61010060405234801562000011575f80fd5b506040516200529a3803806200529a8339818101604052810190620000379190620005fe565b8585858562015180825f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603620000b3575f6040517fc22c8022000000000000000000000000000000000000000000000000000000008152600401620000aa9190620006a7565b60405180910390fd5b816001601a6101000a81548165ffffffffffff021916908365ffffffffffff160217905550620000ec5f801b826200022560201b60201c565b5050505f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16146200015757620001557f555044415445525f524f4c450000000000000000000000000000000000000000826200022560201b60201c565b505b8373ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff168152505082151560a081151581525050620001a76200030060201b60201c565b600481905550505050508173ffffffffffffffffffffffffffffffffffffffff1660c08173ffffffffffffffffffffffffffffffffffffffff16815250508073ffffffffffffffffffffffffffffffffffffffff1660e08173ffffffffffffffffffffffffffffffffffffffff168152505050505050505062000805565b5f805f1b8303620002e6575f73ffffffffffffffffffffffffffffffffffffffff1662000257620003a160201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1614620002a5576040517f3fc3c27a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8160025f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b620002f88383620003c960201b60201c565b905092915050565b5f60805173ffffffffffffffffffffffffffffffffffffffff1663679aefce6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200034d573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620003739190620006fa565b905060a051156200039e576200039b81670de0b6b3a7640000620004c460201b90919060201c565b90505b90565b5f60025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b5f620003dc8383620004f560201b60201c565b620004ba5760015f808581526020019081526020015f205f015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550620004566200055860201b60201c565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a460019050620004be565b5f90505b92915050565b5f80670de0b6b3a764000084620004dc919062000757565b90508281620004ec9190620007ce565b91505092915050565b5f805f8481526020019081526020015f205f015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16905092915050565b5f33905090565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6200058e8262000563565b9050919050565b620005a08162000582565b8114620005ab575f80fd5b50565b5f81519050620005be8162000595565b92915050565b5f8115159050919050565b620005da81620005c4565b8114620005e5575f80fd5b50565b5f81519050620005f881620005cf565b92915050565b5f805f805f8060c087890312156200061b576200061a6200055f565b5b5f6200062a89828a01620005ae565b96505060206200063d89828a01620005e8565b95505060406200065089828a01620005ae565b94505060606200066389828a01620005ae565b93505060806200067689828a01620005ae565b92505060a06200068989828a01620005ae565b9150509295509295509295565b620006a18162000582565b82525050565b5f602082019050620006bc5f83018462000696565b92915050565b5f819050919050565b620006d681620006c2565b8114620006e1575f80fd5b50565b5f81519050620006f481620006cb565b92915050565b5f602082840312156200071257620007116200055f565b5b5f6200072184828501620006e4565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6200076382620006c2565b91506200077083620006c2565b92508282026200078081620006c2565b915082820484148315176200079a57620007996200072a565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f620007da82620006c2565b9150620007e783620006c2565b925082620007fa57620007f9620007a1565b5b828204905092915050565b60805160a05160c05160e051614a306200086a5f395f818161089f0152611cdc01525f81816105d80152818161179301528181611a7a01528181611b180152611bff01525f81816106210152612cb901525f81816107ee0152612c2a0152614a305ff3fe608060405234801561000f575f80fd5b50600436106101d8575f3560e01c8063679aefce11610102578063b1dd61b6116100a0578063cefc14291161006f578063cefc1429146104ed578063cf6eefb7146104f7578063d547741f14610516578063d602b9fd14610532576101d8565b8063b1dd61b614610489578063b71061d1146104a7578063c724120f146104c5578063cc8463c8146104cf576101d8565b80638da5cb5b116100dc5780638da5cb5b146103fe57806391d148541461041c578063a1eda53c1461044c578063a217fddf1461046b576101d8565b8063679aefce146103a457806384ef8ffc146103c25780638754260c146103e0576101d8565b80632c9dbd351161017a5780633fa4f245116101495780633fa4f2451461033057806347e633801461034e578063634e93da1461036c578063649a5ec714610388576101d8565b80632c9dbd35146102be5780632f2ff15d146102da57806336568abe146102f657806337a7b7d814610312576101d8565b80630f6b1fe1116101b65780630f6b1fe11461023457806316f0115b146102525780631855dc4414610270578063248a9ca31461028e576101d8565b806301ffc9a7146101dc578063022d63fb1461020c5780630aa6220b1461022a575b5f80fd5b6101f660048036038101906101f191906132e0565b61053c565b6040516102039190613325565b60405180910390f35b6102146105b5565b604051610221919061335e565b60405180910390f35b6102326105bf565b005b61023c6105d6565b60405161024991906133f1565b60405180910390f35b61025a6105fa565b604051610267919061342a565b60405180910390f35b61027861061f565b6040516102859190613325565b60405180910390f35b6102a860048036038101906102a39190613476565b610643565b6040516102b591906134b0565b60405180910390f35b6102d860048036038101906102d39190613516565b61065f565b005b6102f460048036038101906102ef9190613554565b610691565b005b610310600480360381019061030b9190613554565b6106da565b005b61031a6107ec565b60405161032791906135b2565b60405180910390f35b610338610810565b60405161034591906135e3565b60405180910390f35b610356610816565b60405161036391906134b0565b60405180910390f35b610386600480360381019061038191906135fc565b61083a565b005b6103a2600480360381019061039d9190613651565b610853565b005b6103ac61086c565b6040516103b991906135e3565b60405180910390f35b6103ca610875565b6040516103d7919061342a565b60405180910390f35b6103e861089d565b6040516103f5919061369c565b60405180910390f35b6104066108c1565b604051610413919061342a565b60405180910390f35b61043660048036038101906104319190613554565b6108cf565b6040516104439190613325565b60405180910390f35b610454610932565b6040516104629291906136b5565b60405180910390f35b610473610990565b60405161048091906134b0565b60405180910390f35b610491610996565b60405161049e919061374f565b60405180910390f35b6104af6109a9565b6040516104bc9190613783565b60405180910390f35b6104cd6109bc565b005b6104d7610b54565b6040516104e4919061335e565b60405180910390f35b6104f5610bc1565b005b6104ff610c56565b60405161050d92919061379c565b60405180910390f35b610530600480360381019061052b9190613554565b610c97565b005b61053a610ce0565b005b5f7f31498786000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806105ae57506105ad82610cf7565b5b9050919050565b5f62069780905090565b5f801b6105cb81610d70565b6105d3610d84565b50565b7f000000000000000000000000000000000000000000000000000000000000000081565b60035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b7f000000000000000000000000000000000000000000000000000000000000000081565b5f805f8381526020019081526020015f20600101549050919050565b5f801b61066b81610d70565b5f6106768484610d90565b905061068b848461068684611194565b611251565b50505050565b5f801b82036106cc576040517f3fc3c27a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6106d682826113ba565b5050565b5f801b8214801561071d57506106ee610875565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b156107de575f8061072c610c56565b915091505f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141580610771575061076f816113dc565b155b806107825750610780816113f0565b155b156107c457806040517f19ca5ebb0000000000000000000000000000000000000000000000000000000081526004016107bb919061335e565b60405180910390fd5b600160146101000a81549065ffffffffffff021916905550505b6107e88282611403565b5050565b7f000000000000000000000000000000000000000000000000000000000000000081565b60045481565b7f555044415445525f524f4c45000000000000000000000000000000000000000081565b5f801b61084681610d70565b61084f8261147e565b5050565b5f801b61085f81610d70565b610868826114f8565b5050565b5f600454905090565b5f60025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b7f000000000000000000000000000000000000000000000000000000000000000081565b5f6108ca610875565b905090565b5f805f8481526020019081526020015f205f015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16905092915050565b5f806002601a9054906101000a900465ffffffffffff169050610954816113dc565b80156109665750610964816113f0565b155b610971575f80610988565b600260149054906101000a900465ffffffffffff16815b915091509091565b5f801b81565b600360149054906101000a900460ff1681565b600360159054906101000a900460ff1681565b7f555044415445525f524f4c4500000000000000000000000000000000000000006109e681610d70565b5f73ffffffffffffffffffffffffffffffffffffffff1660035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1603610a75576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a6c9061381d565b60405180910390fd5b5f610ab060035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600360149054906101000a900460ff1661155e565b90505f610abf825f0151611788565b9050805f01518015610ad457505f8160200151145b610b0657610ae182611977565b610b05825f015160405180604001604052806001151581526020015f815250611a20565b5b5f80610b1184611d65565b91509150610b1f8282611f67565b825f01518015610b3257505f8360200151145b610b4d57610b3f846120d6565b610b4c845f015184611a20565b5b5050505050565b5f806002601a9054906101000a900465ffffffffffff169050610b76816113dc565b8015610b875750610b86816113f0565b5b610ba5576001601a9054906101000a900465ffffffffffff16610bbb565b600260149054906101000a900465ffffffffffff165b91505090565b5f610bca610c56565b5090508073ffffffffffffffffffffffffffffffffffffffff16610bec61215d565b73ffffffffffffffffffffffffffffffffffffffff1614610c4b57610c0f61215d565b6040517fc22c8022000000000000000000000000000000000000000000000000000000008152600401610c42919061342a565b60405180910390fd5b610c53612164565b50565b5f8060015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600160149054906101000a900465ffffffffffff16915091509091565b5f801b8203610cd2576040517f3fc3c27a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610cdc828261222f565b5050565b5f801b610cec81610d70565b610cf4612251565b50565b5f7f7965db0b000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480610d695750610d688261225d565b5b9050919050565b610d8181610d7c61215d565b6122c6565b50565b610d8e5f80612317565b565b60605f6001811115610da557610da46136dc565b5b826001811115610db857610db76136dc565b5b03610f88575f839050600267ffffffffffffffff811115610ddc57610ddb61383b565b5b604051908082528060200260200182016040528015610e0a5781602001602082028036833780820191505090505b5091508073ffffffffffffffffffffffffffffffffffffffff1663828a7c346040518163ffffffff1660e01b8152600401602060405180830381865afa158015610e56573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e7a919061387c565b825f81518110610e8d57610e8c6138a7565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250508073ffffffffffffffffffffffffffffffffffffffff166362ced0926040518163ffffffff1660e01b8152600401602060405180830381865afa158015610f10573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f34919061387c565b82600181518110610f4857610f476138a7565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250505061118e565b600180811115610f9b57610f9a6136dc565b5b826001811115610fae57610fad6136dc565b5b0361117e575f839050600267ffffffffffffffff811115610fd257610fd161383b565b5b6040519080825280602002602001820160405280156110005781602001602082028036833780820191505090505b5091508073ffffffffffffffffffffffffffffffffffffffff1663828a7c346040518163ffffffff1660e01b8152600401602060405180830381865afa15801561104c573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611070919061387c565b825f81518110611083576110826138a7565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250508073ffffffffffffffffffffffffffffffffffffffff166362ced0926040518163ffffffff1660e01b8152600401602060405180830381865afa158015611106573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061112a919061387c565b8260018151811061113e5761113d6138a7565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250505061118d565b5f61118c5761118b6138d4565b5b5b5b92915050565b5f805f90505b82518160ff161015611210573073ffffffffffffffffffffffffffffffffffffffff16838260ff16815181106111d3576111d26138a7565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff16036111ff578091505061124c565b806112099061392e565b905061119a565b506040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611243906139c6565b60405180910390fd5b919050565b5f73ffffffffffffffffffffffffffffffffffffffff1660035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146112e0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112d790613a2e565b60405180910390fd5b8260035f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081600360146101000a81548160ff02191690836001811115611345576113446136dc565b5b021790555080600360156101000a81548160ff021916908360ff1602179055508273ffffffffffffffffffffffffffffffffffffffff167fccd74cd713b8e75de035e0197901d2475669bcc87f55e343e3cbfb77cf224b4783836040516113ad929190613a4c565b60405180910390a2505050565b6113c382610643565b6113cc81610d70565b6113d68383612406565b50505050565b5f808265ffffffffffff1614159050919050565b5f428265ffffffffffff16109050919050565b61140b61215d565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161461146f576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61147982826124cf565b505050565b5f611487610b54565b6114904261254f565b61149a9190613a73565b90506114a682826125a8565b8173ffffffffffffffffffffffffffffffffffffffff167f3377dc44241e779dd06afab5b788a35ca5f3b778836e2990bdb26a2a4b2e5ed6826040516114ec919061335e565b60405180910390a25050565b5f61150282612659565b61150b4261254f565b6115159190613a73565b90506115218282612317565b7ff1038c18cf84a56e432fdbfaf746924b7ea511dfe03a6506a0ceba4888788d9b82826040516115529291906136b5565b60405180910390a15050565b6115666131b8565b5f8390505f8173ffffffffffffffffffffffffffffffffffffffff16638d928af86040518163ffffffff1660e01b8152600401602060405180830381865afa1580156115b4573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906115d8919061387c565b90505f8273ffffffffffffffffffffffffffffffffffffffff166338fff2d06040518163ffffffff1660e01b8152600401602060405180830381865afa158015611624573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906116489190613ac0565b905082845f019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250508484602001906001811115611699576116986136dc565b5b908160018111156116ad576116ac6136dc565b5b8152505081846040019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050808460600181815250508173ffffffffffffffffffffffffffffffffffffffff1663f94d4668826040518263ffffffff1660e01b815260040161172c91906134b0565b5f60405180830381865afa158015611746573d5f803e3d5ffd5b505050506040513d5f823e3d601f19601f8201168201806040525081019061176e9190613d33565b50856080018660a001829052829052505050505092915050565b61179061322b565b5f7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166379502c556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156117fa573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061181e9190613df6565b90505f61184b847f50524f544f434f4c5f535741505f4645455f50455243000000000000000000006126b7565b90508173ffffffffffffffffffffffffffffffffffffffff1663696eb375826040518263ffffffff1660e01b815260040161188691906134b0565b602060405180830381865afa1580156118a1573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906118c59190613e4b565b15611960576001835f0190151590811515815250508173ffffffffffffffffffffffffffffffffffffffff1663bd02d0f5826040518263ffffffff1660e01b815260040161191391906134b0565b602060405180830381865afa15801561192e573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906119529190613e76565b836020018181525050611970565b5f835f0190151590811515815250505b5050919050565b5f61198582608001516126e9565b90505f611a06828460a00151855f015173ffffffffffffffffffffffffffffffffffffffff1663876f303b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156119dd573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611a019190613e76565b612809565b9050611a118361291a565b611a1b8184612a80565b505050565b5f600167ffffffffffffffff811115611a3c57611a3b61383b565b5b604051908082528060200260200182016040528015611a7557816020015b611a62613245565b815260200190600190039081611a5a5790505b5090507f0000000000000000000000000000000000000000000000000000000000000000815f81518110611aac57611aab6138a7565b5b60200260200101515f019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250505f815f81518110611afd57611afc6138a7565b5b60200260200101516040018181525050815f015115611bfd577f0000000000000000000000000000000000000000000000000000000000000000506360b2cf7160e01b837f50524f544f434f4c5f535741505f4645455f50455243000000000000000000008460200151604051602401611b7993929190613ea1565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050815f81518110611be957611be86138a7565b5b602002602001015160200181905250611cda565b7f00000000000000000000000000000000000000000000000000000000000000005063ec1bf87560e01b837f50524f544f434f4c5f535741505f4645455f5045524300000000000000000000604051602401611c5a929190613ed6565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050815f81518110611cca57611cc96138a7565b5b6020026020010151602001819052505b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663b4662f14826040518263ffffffff1660e01b8152600401611d33919061409d565b5f604051808303815f87803b158015611d4a575f80fd5b505af1158015611d5c573d5f803e3d5ffd5b50505050505050565b5f805f6001811115611d7a57611d796136dc565b5b83602001516001811115611d9157611d906136dc565b5b03611e1e575f835f015173ffffffffffffffffffffffffffffffffffffffff16637be219a26040518163ffffffff1660e01b81526004016101c060405180830381865afa158015611de4573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611e08919061427d565b509050805f015181602001519250925050611f62565b600180811115611e3157611e306136dc565b5b83602001516001811115611e4857611e476136dc565b5b03611f4d575f835f015173ffffffffffffffffffffffffffffffffffffffff1663707dcd1e6040518163ffffffff1660e01b81526004016040805180830381865afa158015611e99573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611ebd919061436a565b9050611f00815f60028110611ed557611ed46138a7565b5b6020020151825f60028110611eed57611eec6138a7565b5b6020020151612bfa90919063ffffffff16565b611f4382600160028110611f1757611f166138a7565b5b602002015183600160028110611f3057611f2f6138a7565b5b6020020151612bfa90919063ffffffff16565b9250925050611f62565b5f611f5b57611f5a6138d4565b5b5f80915091505b915091565b5f611f70612c27565b90505f6001600360159054906101000a900460ff1660ff1614905080612032575f611fa48584612cfe90919063ffffffff16565b90505f611fba8585612cfe90919063ffffffff16565b9050816004541115611fd557611fd0825f612d2b565b61202b565b806004541015611fef57611fea816001612d2b565b61202a565b6040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612021906143df565b60405180910390fd5b5b50506120d0565b5f6120468584612bfa90919063ffffffff16565b90505f61205c8585612bfa90919063ffffffff16565b905081600454101561207757612072825f612d2b565b6120cd565b8060045411156120915761208c816001612d2b565b6120cc565b6040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120c3906143df565b60405180910390fd5b5b50505b50505050565b61215a815f015173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401612115919061342a565b602060405180830381865afa158015612130573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906121549190613e76565b82612d80565b50565b5f33905090565b5f8061216e610c56565b9150915061217b816113dc565b158061218d575061218b816113f0565b155b156121cf57806040517f19ca5ebb0000000000000000000000000000000000000000000000000000000081526004016121c6919061335e565b60405180910390fd5b6121e25f801b6121dd610875565b6124cf565b506121ef5f801b83612406565b5060015f6101000a81549073ffffffffffffffffffffffffffffffffffffffff0219169055600160146101000a81549065ffffffffffff02191690555050565b61223882610643565b61224181610d70565b61224b83836124cf565b50505050565b61225b5f806125a8565b565b5f7f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b6122d082826108cf565b6123135780826040517fe2517d3f00000000000000000000000000000000000000000000000000000000815260040161230a929190613ed6565b60405180910390fd5b5050565b5f6002601a9054906101000a900465ffffffffffff169050612338816113dc565b156123b757612346816113f0565b1561238957600260149054906101000a900465ffffffffffff166001601a6101000a81548165ffffffffffff021916908365ffffffffffff1602179055506123b6565b7f2b1fa2edafe6f7b9e97c1a9e0c3660e645beb2dcaa2d45bdbf9beaf5472e1ec560405160405180910390a15b5b82600260146101000a81548165ffffffffffff021916908365ffffffffffff160217905550816002601a6101000a81548165ffffffffffff021916908365ffffffffffff160217905550505050565b5f805f1b83036124bd575f73ffffffffffffffffffffffffffffffffffffffff1661242f610875565b73ffffffffffffffffffffffffffffffffffffffff161461247c576040517f3fc3c27a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8160025f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b6124c78383612eda565b905092915050565b5f805f1b8314801561251357506124e4610875565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b1561253d5760025f6101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690555b6125478383612fc3565b905092915050565b5f65ffffffffffff80168211156125a0576030826040517f6dfcc650000000000000000000000000000000000000000000000000000000008152600401612597929190614436565b60405180910390fd5b819050919050565b5f6125b1610c56565b9150508260015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081600160146101000a81548165ffffffffffff021916908365ffffffffffff160217905550612622816113dc565b15612654577f8886ebfc4259abdbc16601dd8fb5678e54878f47b3c34836cfc51154a960510960405160405180910390a15b505050565b5f80612663610b54565b90508065ffffffffffff168365ffffffffffff161161268d578281612688919061445d565b6126af565b6126ae8365ffffffffffff166126a16105b5565b65ffffffffffff166130ac565b5b915050919050565b5f81836040516020016126cb929190614496565b60405160208183030381529060405280519060200120905092915050565b6060815167ffffffffffffffff8111156127065761270561383b565b5b6040519080825280602002602001820160405280156127345781602001602082028036833780820191505090505b5090505f5b8251811015612803575f838281518110612756576127556138a7565b5b602002602001015190508073ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401612799919061342a565b602060405180830381865afa1580156127b4573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906127d89190613e76565b8383815181106127eb576127ea6138a7565b5b60200260200101818152505050806001019050612739565b50919050565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff90505f5b84518110156128c1575f84828151811061284c5761284b6138a7565b5b602002602001015111156128b6575f84828151811061286e5761286d6138a7565b5b6020026020010151868381518110612889576128886138a7565b5b60200260200101518561289c91906144bd565b6128a6919061452b565b9050828110156128b4578092505b505b80600101905061282f565b506002816128cf919061452b565b90505f8103612913576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161290a906145a5565b60405180910390fd5b9392505050565b5f5b816080015151811015612a7c575f82608001518281518110612941576129406138a7565b5b602002602001015190505f8173ffffffffffffffffffffffffffffffffffffffff1663dd62ed3e3086604001516040518363ffffffff1660e01b815260040161298b9291906145c3565b602060405180830381865afa1580156129a6573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906129ca9190613e76565b03612a70578073ffffffffffffffffffffffffffffffffffffffff1663095ea7b384604001517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b8152600401612a2e9291906145ea565b6020604051808303815f875af1158015612a4a573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612a6e9190613e4b565b505b5080600101905061291c565b5050565b5f81608001515167ffffffffffffffff811115612aa057612a9f61383b565b5b604051908082528060200260200182016040528015612ace5781602001602082028036833780820191505090505b5090505f5b826080015151811015612b2b577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff828281518110612b1457612b136138a7565b5b602002602001018181525050806001019050612ad3565b505f600384604051602001612b41929190614657565b6040516020818303038152906040529050826040015173ffffffffffffffffffffffffffffffffffffffff1663b95cac28846060015130306040518060800160405280612b918a608001516130c2565b81526020018881526020018781526020015f15158152506040518563ffffffff1660e01b8152600401612bc7949392919061486b565b5f604051808303815f87803b158015612bde575f80fd5b505af1158015612bf0573d5f803e3d5ffd5b5050505050505050565b5f808284612c0891906144bd565b9050670de0b6b3a764000081612c1e919061452b565b91505092915050565b5f7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663679aefce6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612c91573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612cb59190613e76565b90507f000000000000000000000000000000000000000000000000000000000000000015612cfb57612cf881670de0b6b3a7640000612cfe90919063ffffffff16565b90505b90565b5f80670de0b6b3a764000084612d1491906144bd565b90508281612d22919061452b565b91505092915050565b81600481905550806001811115612d4557612d446136dc565b5b7f40ce3c3e059a5994a81170ca3a882c3fb0dd4815695f91d7ccaca797ab97962983604051612d7491906135e3565b60405180910390a25050565b5f81608001515167ffffffffffffffff811115612da057612d9f61383b565b5b604051908082528060200260200182016040528015612dce5781602001602082028036833780820191505090505b5090505f5b826080015151811015612e0b575f828281518110612df457612df36138a7565b5b602002602001018181525050806001019050612dd3565b505f600184604051602001612e219291906148fb565b6040516020818303038152906040529050826040015173ffffffffffffffffffffffffffffffffffffffff16638bdb3913846060015130306040518060800160405280612e718a608001516130c2565b81526020018881526020018781526020015f15158152506040518563ffffffff1660e01b8152600401612ea794939291906149b0565b5f604051808303815f87803b158015612ebe575f80fd5b505af1158015612ed0573d5f803e3d5ffd5b5050505050505050565b5f612ee583836108cf565b612fb95760015f808581526020019081526020015f205f015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550612f5661215d565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a460019050612fbd565b5f90505b92915050565b5f612fce83836108cf565b156130a2575f805f8581526020019081526020015f205f015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555061303f61215d565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16847ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b60405160405180910390a4600190506130a6565b5f90505b92915050565b5f6130ba8284108484613194565b905092915050565b6060815167ffffffffffffffff8111156130df576130de61383b565b5b60405190808252806020026020018201604052801561310d5781602001602082028036833780820191505090505b5090505f5b825181101561318e5782818151811061312e5761312d6138a7565b5b6020026020010151828281518110613149576131486138a7565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050806001019050613112565b50919050565b5f61319e846131ad565b82841802821890509392505050565b5f8115159050919050565b6040518060c001604052805f73ffffffffffffffffffffffffffffffffffffffff1681526020015f60018111156131f2576131f16136dc565b5b81526020015f73ffffffffffffffffffffffffffffffffffffffff1681526020015f801916815260200160608152602001606081525090565b60405180604001604052805f151581526020015f81525090565b60405180606001604052805f73ffffffffffffffffffffffffffffffffffffffff168152602001606081526020015f81525090565b5f604051905090565b5f80fd5b5f80fd5b5f7fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b6132bf8161328b565b81146132c9575f80fd5b50565b5f813590506132da816132b6565b92915050565b5f602082840312156132f5576132f4613283565b5b5f613302848285016132cc565b91505092915050565b5f8115159050919050565b61331f8161330b565b82525050565b5f6020820190506133385f830184613316565b92915050565b5f65ffffffffffff82169050919050565b6133588161333e565b82525050565b5f6020820190506133715f83018461334f565b92915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f819050919050565b5f6133b96133b46133af84613377565b613396565b613377565b9050919050565b5f6133ca8261339f565b9050919050565b5f6133db826133c0565b9050919050565b6133eb816133d1565b82525050565b5f6020820190506134045f8301846133e2565b92915050565b5f61341482613377565b9050919050565b6134248161340a565b82525050565b5f60208201905061343d5f83018461341b565b92915050565b5f819050919050565b61345581613443565b811461345f575f80fd5b50565b5f813590506134708161344c565b92915050565b5f6020828403121561348b5761348a613283565b5b5f61349884828501613462565b91505092915050565b6134aa81613443565b82525050565b5f6020820190506134c35f8301846134a1565b92915050565b6134d28161340a565b81146134dc575f80fd5b50565b5f813590506134ed816134c9565b92915050565b600281106134ff575f80fd5b50565b5f81359050613510816134f3565b92915050565b5f806040838503121561352c5761352b613283565b5b5f613539858286016134df565b925050602061354a85828601613502565b9150509250929050565b5f806040838503121561356a57613569613283565b5b5f61357785828601613462565b9250506020613588858286016134df565b9150509250929050565b5f61359c826133c0565b9050919050565b6135ac81613592565b82525050565b5f6020820190506135c55f8301846135a3565b92915050565b5f819050919050565b6135dd816135cb565b82525050565b5f6020820190506135f65f8301846135d4565b92915050565b5f6020828403121561361157613610613283565b5b5f61361e848285016134df565b91505092915050565b6136308161333e565b811461363a575f80fd5b50565b5f8135905061364b81613627565b92915050565b5f6020828403121561366657613665613283565b5b5f6136738482850161363d565b91505092915050565b5f613686826133c0565b9050919050565b6136968161367c565b82525050565b5f6020820190506136af5f83018461368d565b92915050565b5f6040820190506136c85f83018561334f565b6136d5602083018461334f565b9392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b6002811061371a576137196136dc565b5b50565b5f81905061372a82613709565b919050565b5f6137398261371d565b9050919050565b6137498161372f565b82525050565b5f6020820190506137625f830184613740565b92915050565b5f60ff82169050919050565b61377d81613768565b82525050565b5f6020820190506137965f830184613774565b92915050565b5f6040820190506137af5f83018561341b565b6137bc602083018461334f565b9392505050565b5f82825260208201905092915050565b7f506f6f6c206e6f742073657400000000000000000000000000000000000000005f82015250565b5f613807600c836137c3565b9150613812826137d3565b602082019050919050565b5f6020820190508181035f830152613834816137fb565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b5f81519050613876816134c9565b92915050565b5f6020828403121561389157613890613283565b5b5f61389e84828501613868565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52600160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f61393882613768565b915060ff820361394b5761394a613901565b5b600182019050919050565b7f5261746570726f7669646572206e6f7420636f6e6669677572656420696e20705f8201527f6f6f6c2e00000000000000000000000000000000000000000000000000000000602082015250565b5f6139b06024836137c3565b91506139bb82613956565b604082019050919050565b5f6020820190508181035f8301526139dd816139a4565b9050919050565b7f506f6f6c20616c726561647920736574000000000000000000000000000000005f82015250565b5f613a186010836137c3565b9150613a23826139e4565b602082019050919050565b5f6020820190508181035f830152613a4581613a0c565b9050919050565b5f604082019050613a5f5f830185613740565b613a6c6020830184613774565b9392505050565b5f613a7d8261333e565b9150613a888361333e565b9250828201905065ffffffffffff811115613aa657613aa5613901565b5b92915050565b5f81519050613aba8161344c565b92915050565b5f60208284031215613ad557613ad4613283565b5b5f613ae284828501613aac565b91505092915050565b5f80fd5b5f601f19601f8301169050919050565b613b0882613aef565b810181811067ffffffffffffffff82111715613b2757613b2661383b565b5b80604052505050565b5f613b3961327a565b9050613b458282613aff565b919050565b5f67ffffffffffffffff821115613b6457613b6361383b565b5b602082029050602081019050919050565b5f80fd5b5f613b838261340a565b9050919050565b613b9381613b79565b8114613b9d575f80fd5b50565b5f81519050613bae81613b8a565b92915050565b5f613bc6613bc184613b4a565b613b30565b90508083825260208201905060208402830185811115613be957613be8613b75565b5b835b81811015613c125780613bfe8882613ba0565b845260208401935050602081019050613beb565b5050509392505050565b5f82601f830112613c3057613c2f613aeb565b5b8151613c40848260208601613bb4565b91505092915050565b5f67ffffffffffffffff821115613c6357613c6261383b565b5b602082029050602081019050919050565b613c7d816135cb565b8114613c87575f80fd5b50565b5f81519050613c9881613c74565b92915050565b5f613cb0613cab84613c49565b613b30565b90508083825260208201905060208402830185811115613cd357613cd2613b75565b5b835b81811015613cfc5780613ce88882613c8a565b845260208401935050602081019050613cd5565b5050509392505050565b5f82601f830112613d1a57613d19613aeb565b5b8151613d2a848260208601613c9e565b91505092915050565b5f805f60608486031215613d4a57613d49613283565b5b5f84015167ffffffffffffffff811115613d6757613d66613287565b5b613d7386828701613c1c565b935050602084015167ffffffffffffffff811115613d9457613d93613287565b5b613da086828701613d06565b9250506040613db186828701613c8a565b9150509250925092565b5f613dc58261340a565b9050919050565b613dd581613dbb565b8114613ddf575f80fd5b50565b5f81519050613df081613dcc565b92915050565b5f60208284031215613e0b57613e0a613283565b5b5f613e1884828501613de2565b91505092915050565b613e2a8161330b565b8114613e34575f80fd5b50565b5f81519050613e4581613e21565b92915050565b5f60208284031215613e6057613e5f613283565b5b5f613e6d84828501613e37565b91505092915050565b5f60208284031215613e8b57613e8a613283565b5b5f613e9884828501613c8a565b91505092915050565b5f606082019050613eb45f83018661341b565b613ec160208301856134a1565b613ece60408301846135d4565b949350505050565b5f604082019050613ee95f83018561341b565b613ef660208301846134a1565b9392505050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b613f2f8161340a565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f5b83811015613f6c578082015181840152602081019050613f51565b5f8484015250505050565b5f613f8182613f35565b613f8b8185613f3f565b9350613f9b818560208601613f4f565b613fa481613aef565b840191505092915050565b613fb8816135cb565b82525050565b5f606083015f830151613fd35f860182613f26565b5060208301518482036020860152613feb8282613f77565b91505060408301516140006040860182613faf565b508091505092915050565b5f6140168383613fbe565b905092915050565b5f602082019050919050565b5f61403482613efd565b61403e8185613f07565b93508360208202850161405085613f17565b805f5b8581101561408b578484038952815161406c858261400b565b94506140778361401e565b925060208a01995050600181019050614053565b50829750879550505050505092915050565b5f6020820190508181035f8301526140b5818461402a565b905092915050565b5f80fd5b5f819050919050565b6140d3816140c1565b81146140dd575f80fd5b50565b5f815190506140ee816140ca565b92915050565b5f60a08284031215614109576141086140bd565b5b61411360a0613b30565b90505f614122848285016140e0565b5f830152506020614135848285016140e0565b6020830152506040614149848285016140e0565b604083015250606061415d848285016140e0565b6060830152506080614171848285016140e0565b60808301525092915050565b5f60408284031215614192576141916140bd565b5b61419c6040613b30565b90505f6141ab848285016140e0565b5f8301525060206141be848285016140e0565b60208301525092915050565b5f61012082840312156141e0576141df6140bd565b5b6141ea60e0613b30565b90505f6141f98482850161417d565b5f83015250604061420c8482850161417d565b6020830152506080614220848285016140e0565b60408301525060a0614234848285016140e0565b60608301525060c0614248848285016140e0565b60808301525060e061425c848285016140e0565b60a083015250610100614271848285016140e0565b60c08301525092915050565b5f806101c0838503121561429457614293613283565b5b5f6142a1858286016140f4565b92505060a06142b2858286016141ca565b9150509250929050565b5f67ffffffffffffffff8211156142d6576142d561383b565b5b602082029050919050565b5f6142f36142ee846142bc565b613b30565b9050806020840283018581111561430d5761430c613b75565b5b835b8181101561433657806143228882613c8a565b84526020840193505060208101905061430f565b5050509392505050565b5f82601f83011261435457614353613aeb565b5b60026143618482856142e1565b91505092915050565b5f6040828403121561437f5761437e613283565b5b5f61438c84828501614340565b91505092915050565b7f506f6f6c206e6f74206f7574206f662072616e676500000000000000000000005f82015250565b5f6143c96015836137c3565b91506143d482614395565b602082019050919050565b5f6020820190508181035f8301526143f6816143bd565b9050919050565b5f819050919050565b5f61442061441b614416846143fd565b613396565b613768565b9050919050565b61443081614406565b82525050565b5f6040820190506144495f830185614427565b61445660208301846135d4565b9392505050565b5f6144678261333e565b91506144728361333e565b9250828203905065ffffffffffff8111156144905761448f613901565b5b92915050565b5f6040820190506144a95f8301856134a1565b6144b6602083018461341b565b9392505050565b5f6144c7826135cb565b91506144d2836135cb565b92508282026144e0816135cb565b915082820484148315176144f7576144f6613901565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f614535826135cb565b9150614540836135cb565b9250826145505761454f6144fe565b5b828204905092915050565b7f4e6f7420656e6f756768206173736574732e00000000000000000000000000005f82015250565b5f61458f6012836137c3565b915061459a8261455b565b602082019050919050565b5f6020820190508181035f8301526145bc81614583565b9050919050565b5f6040820190506145d65f83018561341b565b6145e3602083018461341b565b9392505050565b5f6040820190506145fd5f83018561341b565b61460a60208301846135d4565b9392505050565b60048110614622576146216136dc565b5b50565b5f81905061463282614611565b919050565b5f61464182614625565b9050919050565b61465181614637565b82525050565b5f60408201905061466a5f830185614648565b61467760208301846135d4565b9392505050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b5f6146b1826133c0565b9050919050565b6146c1816146a7565b82525050565b5f6146d283836146b8565b60208301905092915050565b5f602082019050919050565b5f6146f48261467e565b6146fe8185614688565b935061470983614698565b805f5b8381101561473957815161472088826146c7565b975061472b836146de565b92505060018101905061470c565b5085935050505092915050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b5f61477a8383613faf565b60208301905092915050565b5f602082019050919050565b5f61479c82614746565b6147a68185614750565b93506147b183614760565b805f5b838110156147e15781516147c8888261476f565b97506147d383614786565b9250506001810190506147b4565b5085935050505092915050565b6147f78161330b565b82525050565b5f608083015f8301518482035f86015261481782826146ea565b915050602083015184820360208601526148318282614792565b9150506040830151848203604086015261484b8282613f77565b915050606083015161486060608601826147ee565b508091505092915050565b5f60808201905061487e5f8301876134a1565b61488b602083018661341b565b614898604083018561341b565b81810360608301526148aa81846147fd565b905095945050505050565b600381106148c6576148c56136dc565b5b50565b5f8190506148d6826148b5565b919050565b5f6148e5826148c9565b9050919050565b6148f5816148db565b82525050565b5f60408201905061490e5f8301856148ec565b61491b60208301846135d4565b9392505050565b5f61492c82613377565b9050919050565b61493c81614922565b82525050565b5f608083015f8301518482035f86015261495c82826146ea565b915050602083015184820360208601526149768282614792565b915050604083015184820360408601526149908282613f77565b91505060608301516149a560608601826147ee565b508091505092915050565b5f6080820190506149c35f8301876134a1565b6149d0602083018661341b565b6149dd6040830185614933565b81810360608301526149ef8184614942565b90509594505050505056fea26469706673582212205e11f2c7bc3943cd7ba611c9f354f1bf766653fe1677c128e22d691ec69fa0a364736f6c634300081800330000000000000000000000007c82c32fd06ade48c0abd3ea6f2a2c950b4db9830000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d096c2ebe242801466e6f1ac2bf5228ce1fd445c0000000000000000000000008bc920001949589258557412a32f8d297a74f244000000000000000000000000cb5830e6dbad1430d6902a846f1b37d4cfe49b310000000000000000000000000b39c433f591f4faba2a3e5b2d55ba05dbdea392