0 txs
0 calls
constructor
constructor(address _globalAccessManager)
functions
accessManagerToIssuer
viewfunction accessManagerToIssuer(address) view returns (address)
allAccessManagers
viewfunction allAccessManagers(uint256) view returns (address)
authority
viewfunction authority() view returns (address)
defaultRequiredTier
viewfunction defaultRequiredTier() view returns (uint8)
enforceSubscriptionsByDefault
viewfunction enforceSubscriptionsByDefault() view returns (bool)
getAccessManager
viewfunction getAccessManager(address issuer) view returns (address accessManager)
getAccessManagerCount
viewfunction getAccessManagerCount() view returns (uint256 count)
getAllAccessManagers
viewfunction getAllAccessManagers() view returns (address[] accessManagers)
getIssuer
viewfunction getIssuer(address accessManager) view returns (address issuer)
getSubscriptionConfig
viewfunction getSubscriptionConfig() view returns (address manager, uint8 tier, bool enforced)
hasAccessManager
viewfunction hasAccessManager(address issuer) view returns (bool exists)
isConsumingScheduledOp
viewfunction isConsumingScheduledOp() view returns (bytes4)
issuerToAccessManager
viewfunction issuerToAccessManager(address) view returns (address)
subscriptionManager
viewfunction subscriptionManager() view returns (address)
createAccessManager
nonpayablefunction createAccessManager(address issuer, string issuerName) returns (address accessManager)
createAccessManagerWithSubscription
nonpayablefunction createAccessManagerWithSubscription(address issuer, string issuerName, uint8 requiredTier, bool enforceSubscription) returns (address accessManager)
setAuthority
nonpayablefunction setAuthority(address newAuthority)
setDefaultSubscriptionSettings
nonpayablefunction setDefaultSubscriptionSettings(uint8 _requiredTier, bool _enforced)
setSubscriptionManager
nonpayablefunction setSubscriptionManager(address _subscriptionManager)
updateAllAccessManagerSubscriptions
nonpayablefunction updateAllAccessManagerSubscriptions(address newSubscriptionManager)
events
AccessManagerCreated
event AccessManagerCreated(address indexed issuer, address indexed accessManager, string issuerName)
AuthorityUpdated
event AuthorityUpdated(address authority)
DefaultSubscriptionSettingsUpdated
event DefaultSubscriptionSettingsUpdated(uint8 requiredTier, bool enforced)
SubscriptionManagerUpdated
event SubscriptionManagerUpdated(address indexed oldManager, address indexed newManager)
errors
AccessManagedInvalidAuthority
error AccessManagedInvalidAuthority(address authority)
AccessManagedRequiredDelay
error AccessManagedRequiredDelay(address caller, uint32 delay)
AccessManagedUnauthorized
error AccessManagedUnauthorized(address caller)
creation bytecode
0x60803460a757601f614d6738819003918201601f19168301916001600160401b0383118484101760ab5780849260209460405283398101031260a757516001600160a01b0381169081900360a7575f80546001600160a01b031916821790556040519081527f2f658b440c35314f52658ea8a740e05b284cdc84dc9ae01e891f21b8933e7cad90602090a16004805461ffff60a01b19169055604051614ca790816100c08239f35b5f80fd5b634e487b7160e01b5f52604160045260245ffdfe60806040526004361015610011575f80fd5b5f5f3560e01c80630c67d034146109905780634392a9d0146109725780635e9e1e8e1461094c5780635f0e19d71461090957806360003140146108ca5780637710c862146108215780637a9e5e4b146107775780638914a9cb146107335780638fb36037146106ee57806393d13f7714610626578063b5ec6ea314610602578063b8e1ef8a1461015e578063bf158fd2146105d9578063bf7e214f146105b2578063c05b358514610545578063c9bf9ab214610417578063cd5a82d11461019f578063d8c8197e1461015e578063f050b245146101395763fef03da3146100f6575f80fd5b34610136576020366003190112610136576020906001600160a01b0361011a610ba6565b16815260028252604060018060a01b0391205416604051908152f35b80fd5b5034610136576020366003190112610136576020906001600160a01b0361011a610ba6565b5034610136576020366003190112610136576020906001600160a01b03610183610ba6565b16815260018252604060018060a01b0391205416604051908152f35b5034610136576080366003190112610136576101b9610ba6565b60243567ffffffffffffffff81116103f7576101d9903690600401610bbc565b906044359160ff8316928381036104135760643594851515860361040f576102013633610e28565b6001600160a01b038116946102509060029061021e881515610c16565b610229861515610c5b565b878a52600160205260408a2054610249906001600160a01b031615610ca7565b1115610de7565b60018060a01b0387541660405191613c548084019084821067ffffffffffffffff8311176103fb578761028c93869593899361101e8839610d24565b039087f080156103c8576004546001600160a01b039182169691168061033a575b858852600160209081526040808a2080546001600160a01b03199081166001600160a01b038c1617909155898b5260028352908a208054909116881790558780887f1ca5d0fd70ad38af00193d3124fcb7bea7a1eca99ae3843e58019e89d0ceb22c898961031a85610d7d565b61032f60405192839289845289840191610d04565b0390a3604051908152f35b908791873b156103f7576040519063c05b358560e01b825260048201528281602481838c5af19081156103ec5783916103d7575b5050863b156103d35760405162ad911960e11b815260ff939093166004840152151560248301528160448183895af180156103c8576103af575b80806102ad565b6103ba868092610d5b565b6103c4575f6103a8565b8480fd5b6040513d88823e3d90fd5b5080fd5b816103e191610d5b565b6103d357815f61036e565b6040513d85823e3d90fd5b8280fd5b634e487b7160e01b8b52604160045260248bfd5b8680fd5b8580fd5b503461013657602036600319011261013657610431610ba6565b61043b3633610e28565b6001600160a01b031680156105005781805b6003548110156104c45761046081610bea565b905460039190911b1c6001600160a01b0316803b156103f75782809160246040518094819363c05b358560e01b83528960048401525af19081156103ec5783916104af575b505060010161044d565b816104b991610d5b565b6103d357815f6104a5565b5050600480546001600160a01b03191682179055817f259ac012affed7bd376664c4b7abec05c7bd18c35f8e0f725930c384af8dbf388180a380f35b60405162461bcd60e51b815260206004820152601c60248201527f496e76616c696420737562736372697074696f6e206d616e61676572000000006044820152606490fd5b50346101365760203660031901126101365761055f610ba6565b6105693633610e28565b600480546001600160a01b039283166001600160a01b0319821681179092559091167f259ac012affed7bd376664c4b7abec05c7bd18c35f8e0f725930c384af8dbf388380a380f35b5034610136578060031936011261013657546040516001600160a01b039091168152602090f35b50346101365780600319360112610136576004546040516001600160a01b039091168152602090f35b5034610136578060031936011261013657602060ff60045460a01c16604051908152f35b503461013657806003193601126101365760405180602060035491828152018091600385527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b90855b8181106106cf5750505082610685910383610d5b565b604051928392602084019060208552518091526040840192915b8181106106ad575050500390f35b82516001600160a01b031684528594506020938401939092019160010161069f565b82546001600160a01b031684526020909301926001928301920161066f565b5034610136578060031936011261013657805460a01c60ff161561072b57506020638fb3603760e01b5b6040516001600160e01b03199091168152f35b602090610718565b5034610136576020366003190112610136576004359060035482101561013657602061075e83610bea565b905460405160039290921b1c6001600160a01b03168152f35b503461013657602036600319011261013657610791610ba6565b8154906001600160a01b038216330361080f57803b156107f4576001600160a01b03166001600160a01b031991909116811782556040519081527f2f658b440c35314f52658ea8a740e05b284cdc84dc9ae01e891f21b8933e7cad90602090a180f35b6361798f2f60e11b83526001600160a01b0316600452602482fd5b62d1953b60e31b835233600452602483fd5b50346101365760403660031901126101365760043560ff8116908181036103f757602435908115158083036103c45761088160027fa7118f1df003fdc6161dbfe26f3a091fc908596139e89f021f3ae7c600aef535956102493633610e28565b6004805461ffff60a01b191660a084901b60ff60a01b161760a89290921b60ff60a81b169190911790556040805160ff929092168252911515602082015290819081010390a180f35b5034610136578060031936011261013657606060045460ff6040519160018060a01b0381168352818160a01c16602084015260a81c1615156040820152f35b5034610136576020366003190112610136576020906001600160a01b0361092e610ba6565b16815260018252604060018060a01b03912054161515604051908152f35b5034610136578060031936011261013657602060ff60045460a81c166040519015158152f35b50346101365780600319360112610136576020600354604051908152f35b5034610b8e576040366003190112610b8e576109aa610ba6565b60243567ffffffffffffffff8111610b8e576109ca903690600401610bbc565b91906109d63633610e28565b6001600160a01b038216916109ec831515610c16565b6109f7841515610c5b565b5f83815260016020526040902054610a18906001600160a01b031615610ca7565b5f5460405191613c54916001600160a01b031682840167ffffffffffffffff811185821017610b925785610a54938992879661101e8839610d24565b03905ff08015610b83576004546001600160a01b0391821694911680610ae2575b5082855260016020908152604080872080546001600160a01b03199081166001600160a01b03891617909155868852600283529620805490961684179095558392917f1ca5d0fd70ad38af00193d3124fcb7bea7a1eca99ae3843e58019e89d0ceb22c9161031a85610d7d565b843b15610b8e576040519063c05b358560e01b825260048201525f8160248183895af18015610b8357610b6e575b5060045485853b156101365760405162ad911960e11b815260ff60a084901c8116600483015260a89390931c909216151560248301528160448183895af180156103c85715610a7557610b64868092610d5b565b6103c4575f610a75565b610b7b9195505f90610d5b565b5f935f610b10565b6040513d5f823e3d90fd5b5f80fd5b634e487b7160e01b5f52604160045260245ffd5b600435906001600160a01b0382168203610b8e57565b9181601f84011215610b8e5782359167ffffffffffffffff8311610b8e5760208381860195010111610b8e57565b600354811015610c025760035f5260205f2001905f90565b634e487b7160e01b5f52603260045260245ffd5b15610c1d57565b60405162461bcd60e51b8152602060048201526016602482015275496e76616c696420697373756572206164647265737360501b6044820152606490fd5b15610c6257565b60405162461bcd60e51b815260206004820152601b60248201527f497373756572206e616d652063616e6e6f7420626520656d70747900000000006044820152606490fd5b15610cae57565b60405162461bcd60e51b815260206004820152602860248201527f416363657373206d616e6167657220616c72656164792065786973747320666f604482015267391034b9b9bab2b960c11b6064820152608490fd5b908060209392818452848401375f828201840152601f01601f1916010190565b9291604092610d4b9296959660018060a01b03168552606060208601526060850191610d04565b6001600160a01b03909416910152565b90601f8019910116810190811067ffffffffffffffff821117610b9257604052565b60035468010000000000000000811015610b925760018101600355600354811015610c025760035f527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b0180546001600160a01b0319166001600160a01b03909216919091179055565b15610dee57565b60405162461bcd60e51b8152602060048201526012602482015271125b9d985b1a59081d1a595c881b195d995b60721b6044820152606490fd5b5f805490926001600160a01b038216929160048210610b8e575f5f905f8060405196602088019063b700961360e01b825260018060a01b03169788602482015230604482015263ffffffff60e01b833516606482015260648152610e8d608482610d5b565b5190895afa3d15611008573d9067ffffffffffffffff8211610b925760405191610ec1601f8201601f191660200184610d5b565b82523d5f602084013e5b610f8f575b5015610edf575b505050505050565b63ffffffff1615610f7d5760ff60a01b1916600160a01b175f55823b15610b8e576020925f9283604051809681958294634a63ebf760e11b845260048401526040602484015260448301908082528085848401378181018301859052601f01601f1916010103925af18015610b8357610f6a575b50805460ff60a01b191690555f8080808080610ed7565b610f7691505f90610d5b565b5f5f610f53565b8262d1953b60e31b5f5260045260245ffd5b80519092909160408310610fd15750508160409181010312610b8e576040610fb960208301611010565b91015163ffffffff81168103610b8e57905b5f610ed0565b916020819492941015610fe6575b5050610fcb565b8192509060209181010312610b8e5760206110019101611010565b5f80610fdf565b606090610ecb565b51908115158203610b8e5756fe60a06040523461053d57613c548038038061001981610541565b928339810160608282031261053d5761003182610566565b60208301519092906001600160401b03811161053d57810182601f8201121561053d578051906001600160401b03821161039957610078601f8301601f1916602001610541565b9282845260208401946020848401011161053d575f6020846100a5958260409601895e8601015201610566565b6001600160a01b03841693841561052a575f8581525f516020613bf45f395f51905f52602052604090205465ffffffffffff161580156104065765ffffffffffff6100ef4261057a565b1665ffffffffffff81116103f2576040805190810191806001600160401b038411838510176103995760409384529082525f60208084018281528b83525f516020613bf45f395f51905f529091529381209251835494516001600160a01b031990951665ffffffffffff919091161760309490941b600160301b600160a01b03169390931790915587925f516020613c145f395f51905f52916060915b65ffffffffffff604051928684521660208301526040820152a38251156103ad5760805281516001600160401b03811161039957600454600181811c9116801561038f575b602082101461037b57601f8111610318575b506020601f82116001146102a35791815f516020613c345f395f51905f529594926040945f91610298575b508160011b915f199060031b1c1916176004555b60018060a01b031660018060a01b0319600654161760065561ffff60a01b19600554166005558151928391602083525180918160208501528484015e5f828201840152601f01601f19168101030190a260405161364a90816105aa8239608051818181611adf0152818161242701526126490152f35b90508301515f61020e565b601f1982169060045f52805f20915f5b81811061030057509260409492600192825f516020613c345f395f51905f52999896106102e8575b5050811b01600455610222565b8501515f1960f88460031b161c191690555f806102db565b9192602060018192868a0151815501940192016102b3565b60045f527f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b601f830160051c81019160208410610371575b601f0160051c01905b81811061036657506101e3565b5f8155600101610359565b9091508190610350565b634e487b7160e01b5f52602260045260245ffd5b90607f16906101d1565b634e487b7160e01b5f52604160045260245ffd5b60405162461bcd60e51b815260206004820152601b60248201527f497373756572206e616d652063616e6e6f7420626520656d70747900000000006044820152606490fd5b634e487b7160e01b5f52601160045260245ffd5b5f8681525f516020613bf45f395f51905f5260205260409020546104294261057a565b63ffffffff8260301c169165ffffffffffff808260701c1692168211155f146105185750505b63ffffffff811680156105115763ffffffff81116103f2575b65ffffffffffff63ffffffff61047d4261057a565b92169116019165ffffffffffff83116103f2575f8881525f516020613bf45f395f51905f52602090815260408083208054600160301b600160a01b0319169187901b6dffffffffffff0000000000000000169590921b67ffffffff00000000169490941760301b600160301b600160a01b03169390931790925587925f516020613c145f395f51905f52916060919061018c565b505f610468565b63ffffffff9060501c1691505061044f565b630409d6d160e11b5f525f60045260245ffd5b5f80fd5b6040519190601f01601f191682016001600160401b0381118382101761039957604052565b51906001600160a01b038216820361053d57565b65ffffffffffff81116105925765ffffffffffff1690565b6306dfcc6560e41b5f52603060045260245260445ffdfe60806040526004361015610011575f80fd5b5f5f3560e01c8063015b223214611ef057806308d6122d14611e0f5780630976e0c114611df35780630b0a93ba14611dae5780630c427fde14611d9357806312be872714611d70578063167bd39514611ce557806318ff183c14611c53578063198596b514611c375780631cff79cd14611b0e5780631d14384814611ac9578063247b674c146118ec57806325c471a0146115e35780632e9868f8146115b35780633078f1141461155857806330cae187146114ba5780633adc277a1461148b5780633ca7c02a146114695780634136a33c1461143657806344443a771461051e5780634665096d14611418578063476c7ee7146113ea5780634c1da1e2146113b85780635296295214611300578063530dd456146112ac5780636272364414610e4c57806366ef7931146112905780636d5115bd1461123057806374f07da91461120757806375b238fc1461051e5780637c6fb967146111e3578063810838b214610f3e57806382aefa241461051e578063853551b814610e845780638cd45ccc14610e685780638e91336c14610e4c578063905e6f0e14610d6d57806394c7d7ee14610ca7578063a166aa8914610c65578063a64d95ce14610b59578063abd9bd2a14610b34578063ac9650d81461099d578063aced514e14610977578063b700961314610932578063b7d2b162146108ff578063bf158fd2146108d6578063c05b35851461083a578063cc1b6c811461081c578063d1f856ee146107d2578063d22b598914610703578063d6bb62c614610584578063d9ec4e7214610556578063db1c13d81461053a578063e15fd71c1461051e578063f01b571a14610502578063f801a698146102df5763fe0776f51461028d575f80fd5b346102dc5760403660031901126102dc576102a6612037565b6102ae611ff1565b90336001600160a01b038316036102cd57906102c991613018565b5080f35b635f159e6360e01b8352600483fd5b80fd5b50346102dc5760603660031901126102dc576102f9611fdb565b906024356001600160401b0381116104fe57610319903690600401612063565b919060443565ffffffffffff81168091036104fa5761033a84838733612b75565b905061035663ffffffff61034d426135c5565b92168092612a1e565b901580156104df575b6104a6579065ffffffffffff809216908180821191180218169061038584828733612524565b93848452600260205265ffffffffffff6040852054168015159081610495575b5061048157604095849361047287947f82a2da5dee54ea8021c6545b4444620291e07ee83be6dd57edb175062715f3b494868b99526002602052600163ffffffff8a8a205460301c160163ffffffff81169989898c9b52600260205281812065ffffffffffff881665ffffffffffff198254161790558981526002602052209069ffffffff00000000000082549160301b169069ffffffff00000000000019161790558a51948594855233602086015260018060a01b03168b850152608060608501526080840191612504565b0390a382519182526020820152f35b63813e945960e01b84526004859052602484fd5b61049f9150612ed6565b155f6103a5565b606484876104b48887612bbc565b6381c6f24b60e01b8352336004526001600160a01b039091166024526001600160e01b031916604452fd5b50811515801561035f575065ffffffffffff8116821061035f565b8280fd5b5080fd5b50346102dc57806003193601126102dc57602060405160068152f35b50346102dc57806003193601126102dc57602090604051908152f35b50346102dc57806003193601126102dc57602060405160048152f35b50346102dc5760203660031901126102dc57602061057a610575611fdb565b612798565b6040519015158152f35b50346102dc576105ac906105973661221b565b6105a48183949793612bbc565b928685612524565b91828452600260205265ffffffffffff604085205416155f146105dd5763060a299b60e41b84526004839052602484fd5b6001600160a01b03169033820361064f575b505060209250808252600283526040822065ffffffffffff1981541690558082526002835263ffffffff604083205460301c1680917fbd9ac67a6e2f6463b80927326310338bcbb4bdb7936ce1365ea3e01067e7b9f76040519480a38152f35b6106583361261c565b509460018060a01b03169485855284602052604085209163ffffffff60e01b16918286526020526106c0336106bb6001600160401b036040892054166001600160401b03165f5260016020526001600160401b03600160405f20015460401c1690565b612761565b50901590816106fa575b50156105ef57608492508460405192630ff89d4760e21b8452336004850152602484015260448301526064820152fd5b9050155f6106ca565b50346102dc5760403660031901126102dc5761071d611fdb565b7fa56b76017453f399ec2327ba00375dbfb1fd070ff854341ad6191e6a2e2de19c6107466120f7565b9161074f612ad6565b60018060a01b03169182845283602052610779816001600160701b03600160408820015416613532565b9190848652856020526001600160701b036001604088200191166001600160701b03198254161790556107cc6040519283928390929165ffffffffffff60209163ffffffff604085019616845216910152565b0390a280f35b50346102dc5760403660031901126102dc576107fd6107ef612037565b6107f7611ff1565b90612761565b60408051921515835263ffffffff9091166020830152819081015b0390f35b50346102dc57806003193601126102dc576020604051620697808152f35b50346102dc5760203660031901126102dc57610854611fdb565b61086461085f612a50565b61226d565b600580546001600160a01b031981166001600160a01b03909316928317909155816108ba575b6001600160a01b03167f259ac012affed7bd376664c4b7abec05c7bd18c35f8e0f725930c384af8dbf388380a380f35b600161ff0160a01b031981168217600160a81b1760055561088a565b50346102dc57806003193601126102dc576005546040516001600160a01b039091168152602090f35b50346102dc5760403660031901126102dc576102c961091c612037565b610924611ff1565b9061092d612ad6565b613018565b50346102dc5760603660031901126102dc5761094c611fdb565b610954611ff1565b604435916001600160e01b031983168303610973576107fd9350612573565b8380fd5b50346102dc57806003193601126102dc57602060ff60055460a81c166040519015158152f35b50346102dc5760203660031901126102dc576004356001600160401b0381116104fe576109ce903690600401612007565b9060206040516109de8282612142565b84815281810191601f1981013684376109f685612314565b93610a046040519586612142565b858552610a1086612314565b90610a2283870192601f19018361232b565b36819003601e190191885b88811015610ad9578060051b83013584811215610ad5578301908135916001600160401b038311610ad15786018b83360382136102dc5780610ab5928a610aa16001978c8f6040519483869484860198893784019083820190898252519283915e010185815203601f198101835282612142565b5190305af4610aae612cd2565b90306134d4565b610abf828b612347565b52610aca818a612347565b5001610a2d565b8b80fd5b8a80fd5b6040805186815289518188018190528c92600582901b830181019186918a9085015b828710610b085785850386f35b909192938280610b24600193603f198a820301865288516120d3565b9601920196019592919092610afb565b50346102dc576020610b51610b483661221b565b92919091612524565b604051908152f35b50346102dc5760403660031901126102dc57610b73612037565b6001600160401b03610b836120f7565b91610b8c612ad6565b16906001600160401b038214610c51577ffeb69018ee8b8fd50ea86348f1267d07673379f72cffdeccec63853ee8ce8b48908284526001602052610be3816001600160701b03600160408820015460801c16613532565b84865260016020818152604080892090920180546dffffffffffffffffffffffffffff60801b191660809590951b6dffffffffffffffffffffffffffff60801b1694909417909355805163ffffffff909416845265ffffffffffff90911691830191909152819081016107cc565b63061c6a4360e21b83526004829052602483fd5b50346102dc5760203660031901126102dc57602061057a610c84611fdb565b6001600160a01b03165f9081526020819052604090206001015460701c60ff1690565b50346102dc57610cb636612090565b91604051638fb3603760e01b8152602081600481335afa908115610d62578591610d1b575b506001600160e01b03191663704c9fc960e01b01610d085791610d03916102c9933390612524565b612bd2565b630641fee960e31b845233600452602484fd5b90506020813d602011610d5a575b81610d3660209383612142565b81010312610d5657516001600160e01b031981168103610d56575f610cdb565b8480fd5b3d9150610d29565b6040513d87823e3d90fd5b50346102dc5760203660031901126102dc57610d87611fdb565b610d8f612a50565b8015610e3d575b15610de457600680546001600160a01b039283166001600160a01b0319821681179092559091167f489b90224771d92b9610e08294ad8b064c4989349274712123f82bd0049518448380a380f35b60405162461bcd60e51b815260206004820152602b60248201527f4e6f7420617574686f72697a656420746f2073657420676c6f62616c2061636360448201526a32b9b99036b0b730b3b2b960a91b6064820152608490fd5b50610e4781612f72565b610d96565b50346102dc57806003193601126102dc57602060405160028152f35b50346102dc57806003193601126102dc57602060405160018152f35b50346102dc5760403660031901126102dc57610e9e612037565b602435906001600160401b0382116104fa57610ec66001600160401b03923690600401612063565b929091610ed1612ad6565b169182158015610f2e575b610f1a57907f1256f5b5ecb89caec12db449738f2fbcd1ba5806cf38f35413f4e5c15bf6a450916107cc604051928392602084526020840191612504565b63061c6a4360e21b84526004839052602484fd5b506001600160401b038314610edc565b50346102dc5760203660031901126102dc576004356001600160401b0381116104fe57610f6f903690600401612063565b90610f7933612f0a565b501561118f57811561114a57610f8d612177565b916001600160401b03811161113657610fa760045461210a565b601f81116110ce575b5083601f82116001146110375761101892827fd46837aaa3fb6de3d9b5f985c50e71265eadb5513838b57286a2ff3ef6f3b82a959361102693889161102c575b508160011b905f198360031b1c1916176004555b6040519485946040865260408601906120d3565b918483036020860152612504565b0390a180f35b90508201355f610ff0565b600485525f5160206135f55f395f51905f5290601f198316865b8181106110b6575092611026926110189592827fd46837aaa3fb6de3d9b5f985c50e71265eadb5513838b57286a2ff3ef6f3b82a98961061109d575b5050600181811b01600455611004565b8301355f19600384901b60f8161c191690555f8061108d565b91926020600181928689013581550194019201611051565b60048552601f820160051c5f5160206135f55f395f51905f52019060208310611121575b601f0160051c5f5160206135f55f395f51905f5201905b8181106111165750610fb0565b858155600101611109565b5f5160206135f55f395f51905f5291506110f2565b634e487b7160e01b84526041600452602484fd5b60405162461bcd60e51b815260206004820152601b60248201527f497373756572206e616d652063616e6e6f7420626520656d70747900000000006044820152606490fd5b60405162461bcd60e51b815260206004820152602660248201527f4163636573734d616e616765723a206163636f756e74206973206d697373696e6044820152656720726f6c6560d01b6064820152608490fd5b50346102dc57806003193601126102dc57602060ff60055460a01c16604051908152f35b50346102dc57806003193601126102dc576006546040516001600160a01b039091168152602090f35b50346102dc5760403660031901126102dc5761124a611fdb565b6024359063ffffffff60e01b82168092036104fa576001600160a01b0316825260208281526040808420928452918152918190205490516001600160401b039091168152f35b50346102dc57806003193601126102dc57602060405160038152f35b50346102dc5760203660031901126102dc5760206112ef6112cb612037565b6001600160401b03165f5260016020526001600160401b03600160405f2001541690565b6001600160401b0360405191168152f35b50346102dc5760403660031901126102dc5761131a612037565b6001600160401b0361132a61204d565b91611333612ad6565b1690811580156113a8575b610c51576001600160401b0390828452600160205260016040852001805467ffffffffffffffff60401b8360401b169067ffffffffffffffff60401b191617905516907f7a8059630b897b5de4c08ade69f8b90c3ead1f8596d62d10b6c4d14a0afb4ae28380a380f35b506001600160401b03821461133e565b50346102dc5760203660031901126102dc5760206113dc6113d7611fdb565b6124dd565b63ffffffff60405191168152f35b50346102dc57806003193601126102dc57604060ff6114076123f9565b835191151582529091166020820152f35b50346102dc57806003193601126102dc57602060405162093a808152f35b50346102dc5760203660031901126102dc5763ffffffff6040602092600435815260028452205460301c16604051908152f35b50346102dc57806003193601126102dc5760206040516001600160401b038152f35b50346102dc5760203660031901126102dc5760206114aa6004356123c2565b65ffffffffffff60405191168152f35b50346102dc5760403660031901126102dc576114d4612037565b6001600160401b036114e461204d565b916114ed612ad6565b169081158015611548575b610c51576001600160401b0390828452600160205260016040852001828216831982541617905516907f1fd6dd7631312dfac2205b52913f99de03b4d7e381d5d27d3dbfe0713e6e63408380a380f35b506001600160401b0382146114f8565b50346102dc5760403660031901126102dc57608063ffffffff65ffffffffffff81611592611584612037565b61158c611ff1565b9061236f565b93929590918560405197168752166020860152166040840152166060820152f35b50346102dc57806003193601126102dc576108186115cf612177565b6040519182916020835260208301906120d3565b50346102dc5760603660031901126102dc576115fd612037565b611605611ff1565b906044359163ffffffff831680930361097357611620612ad6565b6001600160401b03611631836122c8565b9216916001600160401b0383146118d8578285526001602090815260408087206001600160a01b0385165f908152925290205465ffffffffffff16159081156117765761168e9063ffffffff611686426135c5565b911690612a1e565b604051604081018181106001600160401b03821117611762577ff98448b987f1428e0e230e1f3c6e2ce15b5693eaf31827fbd0b1ec4b424ae7cf94926117436060959365ffffffffffff9360405283831681526001600160701b03602082018b81528a8d52600160205260408d2060018060a01b0389165f52602052858060405f209451161686198454161783555116600160301b600160a01b0382549160301b1690600160301b600160a01b031916179055565b60408051988952911660208801528601526001600160a01b031693a380f35b634e487b7160e01b88526041600452602488fd5b5082855260016020526040852060018060a01b0383165f526020526117aa6001600160701b0360405f205460301c16612e99565b50508463ffffffff82168181115f1461188f570363ffffffff811161187b579165ffffffffffff7ff98448b987f1428e0e230e1f3c6e2ce15b5693eaf31827fbd0b1ec4b424ae7cf949261187667ffffffff0000000061181b63ffffffff6060985b16611816426135c5565b612a1e565b9260201b1665ffffffffffff60401b8360401b16178917888b52600160205260408b2060018060a01b0387165f5260205260405f2090600160301b600160a01b0382549160301b1690600160301b600160a01b031916179055565b611743565b634e487b7160e01b87526011600452602487fd5b50509160609165ffffffffffff7ff98448b987f1428e0e230e1f3c6e2ce15b5693eaf31827fbd0b1ec4b424ae7cf9461187667ffffffff0000000061181b63ffffffff8c61180c565b63061c6a4360e21b85526004839052602485fd5b50346102dc57806003193601126102dc576101006040519161190e8284612142565b600783526020830191601f1901368337825115611ab55760018252825160011015611ab55760026040840152825160021015611ab55760036060840152825160031015611ab55760046080840152825160041015611ab557600560a0840152825160051015611ab557600660c0840152825160061015611ab557600760e08401528251906119b461199e83612314565b926119ac6040519485612142565b808452612314565b906119c76020840192601f19018361232b565b805b8551811015611a0d57806119f16001600160401b036119ea6001948a612347565b5116612d01565b6119fb8287612347565b52611a068186612347565b50016119c9565b509084918460405194859460408601906040875251809152606086019290845b818110611a9357505050848203602086015251908181526020810160208360051b8301019493915b838310611a625786860387f35b919395509193602080611a81600193601f1986820301875289516120d3565b97019301930190928695949293611a55565b82516001600160401b0316855288975060209485019490920191600101611a2d565b634e487b7160e01b81526032600452602490fd5b50346102dc57806003193601126102dc576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b50611b1836612090565b91611b2583838333612b75565b93901580611c29575b611c1b57611b3e81848433612524565b63ffffffff86951615801590611c02575b611bf0575b5060035492611b6c611b668383612bbc565b84612c9f565b60035585611b79836122f9565b91611b876040519384612142565b838352602083019336818301116104fa5780602092863783010152344710611bd9579480611bc79392602097519034855af1611bc1612cd2565b916134d4565b5060035563ffffffff60405191168152f35b63cf47918160e01b86524760045234602452604486fd5b611bfb919450612bd2565b925f611b54565b5065ffffffffffff611c13826123c2565b161515611b4f565b906104b48592606494612bbc565b5063ffffffff841615611b2e565b50346102dc57806003193601126102dc57602060405160078152f35b5034611ce1576040366003190112611ce157611c6d611fdb565b611c75611ff1565b90611c7e612ad6565b6001600160a01b031690813b15611ce157604051637a9e5e4b60e01b81526001600160a01b039091166004820152905f908290602490829084905af18015611cd657611cc8575080f35b611cd491505f90612142565b005b6040513d5f823e3d90fd5b5f80fd5b34611ce1576040366003190112611ce157611cfe611fdb565b7f90d4e7bb7e5d933792b3562e1741306f8be94837e1348dacef9b6f1df56eb1386020611d29611fcc565b92611d32612ad6565b6001600160a01b03165f818152808352604090819020600101805460ff60701b1916951515607081901b60ff60701b169690961790555193845292a2005b34611ce1576020366003190112611ce15760206113dc611d8e612037565b6122c8565b34611ce1575f366003190112611ce157602060405160058152f35b34611ce1576020366003190112611ce15760206112ef611dcc612037565b6001600160401b03165f5260016020526001600160401b03600160405f20015460401c1690565b34611ce1575f366003190112611ce1576020604051610e108152f35b34611ce1576060366003190112611ce157611e28611fdb565b6024356001600160401b038111611ce157611e47903690600401612007565b9190604435906001600160401b038216809203611ce157611e69939293612ad6565b6001600160a01b03909316925f5b83811015611cd4578060051b8201359063ffffffff60e01b8216809203611ce15783867f9ea6790c7dadfd01c9f8b9762b3682607af2c7e79e05a9f9fdf5580dde9491516020600195835f525f825260405f20815f52825260405f20856001600160401b0319825416179055604051908152a301611e77565b34611ce1576040366003190112611ce15760043560ff8116808203611ce157611f17611fcc565b611f2261085f612a50565b60028211611f92577f83133a43611fe5eb4c9da213142f8dae8742f80929638d8da01df9075762eeb6926060926005549215159160ff60a81b8360a81b169060ff60a01b9060a01b1661ffff60a01b198516171760055560ff6040519360a01c16835260208301526040820152a1005b60405162461bcd60e51b8152602060048201526012602482015271125b9d985b1a59081d1a595c881b195d995b60721b6044820152606490fd5b602435908115158203611ce157565b600435906001600160a01b0382168203611ce157565b602435906001600160a01b0382168203611ce157565b9181601f84011215611ce1578235916001600160401b038311611ce1576020808501948460051b010111611ce157565b600435906001600160401b0382168203611ce157565b602435906001600160401b0382168203611ce157565b9181601f84011215611ce1578235916001600160401b038311611ce15760208381860195010111611ce157565b906040600319830112611ce1576004356001600160a01b0381168103611ce15791602435906001600160401b038211611ce1576120cf91600401612063565b9091565b805180835260209291819084018484015e5f828201840152601f01601f1916010190565b6024359063ffffffff82168203611ce157565b90600182811c92168015612138575b602083101461212457565b634e487b7160e01b5f52602260045260245ffd5b91607f1691612119565b90601f801991011681019081106001600160401b0382111761216357604052565b634e487b7160e01b5f52604160045260245ffd5b604051905f826004549161218a8361210a565b80835292600181169081156121fc57506001146121b0575b6121ae92500383612142565b565b5060045f90815290915f5160206135f55f395f51905f525b8183106121e05750509060206121ae928201016121a2565b60209193508060019154838589010152019101909184926121c8565b602092506121ae94915060ff191682840152151560051b8201016121a2565b6060600319820112611ce1576004356001600160a01b0381168103611ce157916024356001600160a01b0381168103611ce15791604435906001600160401b038211611ce1576120cf91600401612063565b1561227457565b60405162461bcd60e51b815260206004820152602660248201527f4e6f7420617574686f72697a656420746f206d616e61676520737562736372696044820152657074696f6e7360d01b6064820152608490fd5b6001600160401b03165f5260016020526122f46001600160701b03600160405f20015460801c16612e99565b505090565b6001600160401b03811161216357601f01601f191660200190565b6001600160401b0381116121635760051b60200190565b5f5b82811061233957505050565b60608282015260200161232d565b805182101561235b5760209160051b010190565b634e487b7160e01b5f52603260045260245ffd5b6001600160401b03165f9081526001602090815260408083206001600160a01b039094168352929052205465ffffffffffff916123b8603083901c6001600160701b0316612e99565b9490931693909291565b5f52600260205265ffffffffffff60405f2054166123df81612ed6565b156123e957505f90565b90565b51908115158203611ce157565b6005549060ff8260a81c161580156124cc575b6124c457604051637e5863ed60e01b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000008116600483015260a084901c60ff1660248301819052919360209185916044918391165afa928315611cd6575f93612488575b5082156124835790565b505f90565b9092506020813d6020116124bc575b816124a460209383612142565b81010312611ce1576124b5906123ec565b915f612479565b3d9150612497565b600191505f90565b506001600160a01b0382161561240c565b60018060a01b03165f525f6020526122f46001600160701b03600160405f20015416612e99565b908060209392818452848401375f828201840152601f01601f1916010190565b604080516001600160a01b0392831660208201908152929093169083015260608083015292909161256d91839161255f916080840191612504565b03601f198101835282612142565b51902090565b6001600160a01b0382165f9081526020819052604090206001015491929160701c60ff16156125a5575050505f905f90565b6001600160a01b03811630036125c957506125c39060035492612c9f565b14905f90565b906126029260018060a01b03165f525f60205260405f209063ffffffff60e01b165f526020526001600160401b0360405f205416612761565b9190156126155763ffffffff8216159190565b5f91508190565b90612627825f612f47565b9290801561275a576005549060ff8260a81c16158015612749575b61274257507f0000000000000000000000000000000000000000000000000000000000000000916001600160a01b0380841691161461270857604051637e5863ed60e01b81526001600160a01b03909216600483015260a081901c60ff16602483015260209082908180604481015b03916001600160a01b03165afa908115611cd6575f916126d057509190565b90506020813d602011612700575b816126eb60209383612142565b81010312611ce1576126fc906123ec565b9190565b3d91506126de565b604051637e5863ed60e01b81526001600160a01b03909216600483015260a081901c60ff16602483015260209082908180604481016126b1565b9150509190565b506001600160a01b03821615612642565b50505f9190565b8161262791939293612f47565b9190826040910312611ce1576020612785836123ec565b92015163ffffffff81168103611ce15790565b604080516368fc2b7760e11b81525f60048201526001600160a01b03831660248201819052929181604481305afa908115611cd6575f916129fe575b50612977576040516368fc2b7760e11b815260026004820152826024820152604081604481305afa908115611cd6575f916129de575b50612977576040516368fc2b7760e11b815260036004820152826024820152604081604481305afa908115611cd6575f916129be575b50612977576040516368fc2b7760e11b8152600480820152826024820152604081604481305afa908115611cd6575f9161299e575b50612977576040516368fc2b7760e11b815260056004820152826024820152604081604481305afa908115611cd6575f9161297e575b5061297757604080516368fc2b7760e11b8152600660048201526001600160a01b0392909216602483015281604481305afa908115611cd6575f91612957575b5061295157604051906368fc2b7760e11b8252600760048301526024820152604081604481305afa908115611cd6575f91612924575090565b612946915060403d60401161294a575b61293e8183612142565b81019061276e565b5090565b503d612934565b50600190565b612970915060403d60401161294a5761293e8183612142565b505f6128eb565b5050600190565b612997915060403d60401161294a5761293e8183612142565b505f6128ab565b6129b7915060403d60401161294a5761293e8183612142565b505f612875565b6129d7915060403d60401161294a5761293e8183612142565b505f612840565b6129f7915060403d60401161294a5761293e8183612142565b505f61280a565b612a17915060403d60401161294a5761293e8183612142565b505f6127d4565b9065ffffffffffff8091169116019065ffffffffffff8211612a3c57565b634e487b7160e01b5f52601160045260245ffd5b612a5933612f0a565b50612ad1576006546001600160a01b031680612a7457505f90565b604080516368fc2b7760e11b8152600160048201523360248201529182908180604481015b03915afa5f9181612aaf575b506123e957505f90565b612ac991925060403d60401161294a5761293e8183612142565b50905f612aa5565b600190565b612ae036336130c7565b9015612ae95750565b63ffffffff16612b1e576001600160401b03612b04366131ae565b50905063f07e038f60e01b5f52336004521660245260445ffd5b612b726040516020810190338252306040820152606080820152612b6a81602060808201368152365f838301375f823683010152601f19601f360116010103601f198101835282612142565b519020612bd2565b50565b909291906001600160a01b0384163003612b93576120cf9350613173565b9192906004841015612ba957505050505f905f90565b6120cf93612bb691612bbc565b91612573565b90600411611ce157356001600160e01b03191690565b5f81815260026020526040902054909190603081901c63ffffffff169065ffffffffffff1680612c0f578363060a299b60e41b5f5260045260245ffd5b65ffffffffffff612c1f426135c5565b16811115612c3a5783630c65b5bd60e11b5f5260045260245ffd5b612c479093919293612ed6565b612c8d578190805f52600260205260405f2065ffffffffffff1981541690557f76a2a46953689d4861a5d3f6ed883ad7e6af674a21f8e162707159fc9dde614d5f80a390565b631e2975b960e21b5f5260045260245ffd5b604080516001600160a01b03909216602083019081526001600160e01b031990931682820152815261256d606082612142565b3d15612cfc573d90612ce3826122f9565b91612cf16040519384612142565b82523d5f602084013e565b606090565b6001600160401b031660018114612e745760028114612e4d5760038114612e1f5760048114612df25760058114612dc05760068114612d9657600714612d6657604051612d4f604082612142565b60078152662aa725a727aba760c91b602082015290565b604051612d74604082612142565b601281527121a7a6a82624a0a721a2afa7a32324a1a2a960711b602082015290565b50604051612da5604082612142565b600b81526a2aa72222a92ba924aa22a960a91b602082015290565b50604051612dcf604082612142565b60138152721050d0d49151125510551253d397d051d15395606a1b602082015290565b50604051612e01604082612142565b600e81526d1514905394d1915497d051d1539560921b602082015290565b50604051612e2e604082612142565b600f81526e14131050d15351539517d051d15395608a1b602082015290565b50604051612e5c604082612142565b600881526720aa2a22a9aa27a960c11b602082015290565b50604051612e83604082612142565b600681526524a9a9aaa2a960d11b602082015290565b612ea2426135c5565b63ffffffff82169165ffffffffffff604082901c811692168211612eca575090915f91508190565b60201c63ffffffff1692565b65ffffffffffff62093a8091160165ffffffffffff8111612a3c5765ffffffffffff80612f02426135c5565b169116111590565b90612f1c65ffffffffffff925f61236f565b505092168015159081612f2e57509190565b905065ffffffffffff612f40426135c5565b1610159190565b6001600160401b0381811603612f605750506001905f90565b65ffffffffffff9291612f1c9161236f565b6006546001600160a01b0316612483576001600160a01b0316801561248357604080516368fc2b7760e11b8152600160048201523360248201529081604481855afa5f9181612ff6575b50612fec575b50604080516368fc2b7760e11b815260066004820152336024820152918290818060448101612a99565b612951575f612fc2565b61301091925060403d60401161294a5761293e8183612142565b50905f612fbc565b6001600160401b0316906001600160401b0382146130b457815f52600160205260405f2060018060a01b0382165f5260205265ffffffffffff60405f205416156130ae57815f52600160205260405f2060018060a01b0382165f526020525f604081205560018060a01b0316907ff229baa593af28c41b1d16b748cd7688f0c83aaf92d4be41c44005defe84c1665f80a3600190565b50505f90565b5063061c6a4360e21b5f5260045260245ffd5b9060048110613123576001600160a01b0382163014613152576130ea905f613356565b9290911580613134575b61312b5761310191612761565b90156131235763ffffffff808093169116908180821191180218169081159190565b50505f905f90565b5050505f905f90565b50305f9081526020819052604090206001015460701c60ff166130f4565b9050600411611ce1576003546125c35f356001600160e01b03191630612c9f565b91906004821061312b576001600160a01b038316301461319757906130ea91613356565b6131a19250612bbc565b6125c36003549130612c9f565b5f906004811061334c5780600411611ce1575f356001600160e01b031916906310a6aa3760e31b8214801561333c575b801561332c575b801561331c575b801561330c575b6133005763063fc60f60e21b821480156132f0575b80156132e0575b6132b05763012e238d60e51b821480156132a0575b61324f575030825281602052604082209082526020526001600160401b036040822054169181929190565b90506024116102dc57806102dc57506004356001600160401b0381168103611ce157613299906001600160401b03165f5260016020526001600160401b03600160405f2001541690565b6001915f90565b50635be958b160e11b8214613224565b915050602411611ce1576004356001600160a01b03811690819003611ce1576132d8906124dd565b6001915f9190565b506308d6122d60e01b821461320f565b5063167bd39560e01b8214613208565b5050506001905f905f90565b5063d22b598960e01b82146131f3565b50635326cae760e11b82146131ec565b5063294b14a960e11b82146131e5565b506330cae18760e01b82146131de565b50505f905f905f90565b6004821061334c576001600160e01b03196133718383612bbc565b16916310a6aa3760e31b831480156134c4575b80156134b4575b80156134a4575b8015613494575b6133005763063fc60f60e21b83148015613484575b8015613474575b61344d5763012e238d60e51b8314801561343d575b6133f7575050305f525f60205260405f20905f526020526001600160401b0360405f205416905f91905f90565b909150602411611ce157600401356001600160401b0381168103611ce157613299906001600160401b03165f5260016020526001600160401b03600160405f2001541690565b50635be958b160e11b83146133ca565b909150602411611ce1576004013560018060a01b038116809103611ce1576132d8906124dd565b506308d6122d60e01b83146133b5565b5063167bd39560e01b83146133ae565b5063d22b598960e01b8314613399565b50635326cae760e11b8314613392565b5063294b14a960e11b831461338b565b506330cae18760e01b8314613384565b906134f857508051156134e957805190602001fd5b63d6bda27560e01b5f5260045ffd5b81511580613529575b613509575090565b639996b31560e01b5f9081526001600160a01b0391909116600452602490fd5b50803b15613501565b61354363ffffffff91939293612e99565b505092168063ffffffff84168181115f146135ab570363ffffffff8111612a3c5761359163ffffffff8067ffffffff00000000935b16806206978011816206978018021816611816426135c5565b9360201b1665ffffffffffff60401b8460401b1617179190565b505067ffffffff0000000061359163ffffffff805f613578565b65ffffffffffff81116135dd5765ffffffffffff1690565b6306dfcc6560e41b5f52603060045260245260445ffdfe8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19ba26469706673582212205eb4a8253b213bf1fe1d77f8179253daab3f4e0909c26315c1dd927c35055dea64736f6c634300081c0033a6eef7e35abe7026729641147f7915573c7e97b47efa546f5f6e3230263bcb49f98448b987f1428e0e230e1f3c6e2ce15b5693eaf31827fbd0b1ec4b424ae7cf25b96d63d47a5ee7320c4023ef2ba7c434dd0a2f6a349c669b0ba43bfa997565a26469706673582212206858250bf391c1f34fa44e4d65ea2b094ee255a0fcd0c82f80e670fd93c4642464736f6c634300081c0033000000000000000000000000d2cc3486caad797d39999cd4b216260ed39abd42