[ { "inputs": [ { "internalType": "string", "name": "uri", "type": "string" } ], "stateMutability": "nonpayable", "type": "constructor" }, { "inputs": [ { "internalType": "address", "name": "sender", "type": "address" }, { "internalType": "uint256", "name": "balance", "type": "uint256" }, { "internalType": "uint256", "name": "needed", "type": "uint256" }, { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "ERC1155InsufficientBalance", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "approver", "type": "address" } ], "name": "ERC1155InvalidApprover", "type": "error" }, { "inputs": [ { "internalType": "uint256", "name": "idsLength", "type": "uint256" }, { "internalType": "uint256", "name": "valuesLength", "type": "uint256" } ], "name": "ERC1155InvalidArrayLength", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "operator", "type": "address" } ], "name": "ERC1155InvalidOperator", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "receiver", "type": "address" } ], "name": "ERC1155InvalidReceiver", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "sender", "type": "address" } ], "name": "ERC1155InvalidSender", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "operator", "type": "address" }, { "internalType": "address", "name": "owner", "type": "address" } ], "name": "ERC1155MissingApprovalForAll", "type": "error" }, { "inputs": [], "name": "LicenseRegistry__EmptyLicenseUrl", "type": "error" }, { "inputs": [], "name": "LicenseRegistry__FrameworkNotFound", "type": "error" }, { "inputs": [], "name": "LicenseRegistry__InvalidParamVerifierType", "type": "error" }, { "inputs": [], "name": "LicenseRegistry__LicensorDoesntHaveThisPolicy", "type": "error" }, { "inputs": [], "name": "LicenseRegistry__LinkParentParamFailed", "type": "error" }, { "inputs": [], "name": "LicenseRegistry__MintParamFailed", "type": "error" }, { "inputs": [], "name": "LicenseRegistry__NotLicensee", "type": "error" }, { "inputs": [], "name": "LicenseRegistry__ParamVerifierLengthMismatch", "type": "error" }, { "inputs": [], "name": "LicenseRegistry__ParentIdEqualThanChild", "type": "error" }, { "inputs": [], "name": "LicenseRegistry__PolicyAlreadySetForIpId", "type": "error" }, { "inputs": [], "name": "LicenseRegistry__PolicyNotFound", "type": "error" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "account", "type": "address" }, { "indexed": true, "internalType": "address", "name": "operator", "type": "address" }, { "indexed": false, "internalType": "bool", "name": "approved", "type": "bool" } ], "name": "ApprovalForAll", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "caller", "type": "address" }, { "indexed": true, "internalType": "address", "name": "ipId", "type": "address" }, { "indexed": true, "internalType": "address", "name": "parentIpId", "type": "address" } ], "name": "IpIdLinkedToParent", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "creator", "type": "address" }, { "indexed": true, "internalType": "uint256", "name": "frameworkId", "type": "uint256" }, { "components": [ { "internalType": "contract IParamVerifier[]", "name": "mintingParamVerifiers", "type": "address[]" }, { "internalType": "bytes[]", "name": "mintingParamDefaultValues", "type": "bytes[]" }, { "internalType": "contract IParamVerifier[]", "name": "activationParamVerifiers", "type": "address[]" }, { "internalType": "bytes[]", "name": "activationParamDefaultValues", "type": "bytes[]" }, { "internalType": "bool", "name": "defaultNeedsActivation", "type": "bool" }, { "internalType": "contract IParamVerifier[]", "name": "linkParentParamVerifiers", "type": "address[]" }, { "internalType": "bytes[]", "name": "linkParentParamDefaultValues", "type": "bytes[]" }, { "internalType": "string", "name": "licenseUrl", "type": "string" } ], "indexed": false, "internalType": "struct Licensing.FrameworkCreationParams", "name": "frameworkCreationParams", "type": "tuple" } ], "name": "LicenseFrameworkCreated", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "creator", "type": "address" }, { "indexed": true, "internalType": "address", "name": "receiver", "type": "address" }, { "indexed": true, "internalType": "uint256", "name": "licenseId", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "amount", "type": "uint256" }, { "components": [ { "internalType": "uint256", "name": "policyId", "type": "uint256" }, { "internalType": "address[]", "name": "licensorIpIds", "type": "address[]" } ], "indexed": false, "internalType": "struct Licensing.License", "name": "licenseData", "type": "tuple" } ], "name": "LicenseMinted", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "caller", "type": "address" }, { "indexed": true, "internalType": "address", "name": "ipId", "type": "address" }, { "indexed": true, "internalType": "uint256", "name": "policyId", "type": "uint256" } ], "name": "PolicyAddedToIpId", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "creator", "type": "address" }, { "indexed": true, "internalType": "uint256", "name": "policyId", "type": "uint256" }, { "components": [ { "internalType": "uint256", "name": "frameworkId", "type": "uint256" }, { "internalType": "bytes[]", "name": "mintingParamValues", "type": "bytes[]" }, { "internalType": "bytes[]", "name": "activationParamValues", "type": "bytes[]" }, { "internalType": "bool", "name": "needsActivation", "type": "bool" }, { "internalType": "bytes[]", "name": "linkParentParamValues", "type": "bytes[]" } ], "indexed": false, "internalType": "struct Licensing.Policy", "name": "policy", "type": "tuple" } ], "name": "PolicyCreated", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "operator", "type": "address" }, { "indexed": true, "internalType": "address", "name": "from", "type": "address" }, { "indexed": true, "internalType": "address", "name": "to", "type": "address" }, { "indexed": false, "internalType": "uint256[]", "name": "ids", "type": "uint256[]" }, { "indexed": false, "internalType": "uint256[]", "name": "values", "type": "uint256[]" } ], "name": "TransferBatch", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "operator", "type": "address" }, { "indexed": true, "internalType": "address", "name": "from", "type": "address" }, { "indexed": true, "internalType": "address", "name": "to", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "id", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "TransferSingle", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "string", "name": "value", "type": "string" }, { "indexed": true, "internalType": "uint256", "name": "id", "type": "uint256" } ], "name": "URI", "type": "event" }, { "inputs": [ { "components": [ { "internalType": "contract IParamVerifier[]", "name": "mintingParamVerifiers", "type": "address[]" }, { "internalType": "bytes[]", "name": "mintingParamDefaultValues", "type": "bytes[]" }, { "internalType": "contract IParamVerifier[]", "name": "activationParamVerifiers", "type": "address[]" }, { "internalType": "bytes[]", "name": "activationParamDefaultValues", "type": "bytes[]" }, { "internalType": "bool", "name": "defaultNeedsActivation", "type": "bool" }, { "internalType": "contract IParamVerifier[]", "name": "linkParentParamVerifiers", "type": "address[]" }, { "internalType": "bytes[]", "name": "linkParentParamDefaultValues", "type": "bytes[]" }, { "internalType": "string", "name": "licenseUrl", "type": "string" } ], "internalType": "struct Licensing.FrameworkCreationParams", "name": "fwCreation", "type": "tuple" } ], "name": "addLicenseFramework", "outputs": [ { "internalType": "uint256", "name": "frameworkId", "type": "uint256" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "components": [ { "internalType": "uint256", "name": "frameworkId", "type": "uint256" }, { "internalType": "bytes[]", "name": "mintingParamValues", "type": "bytes[]" }, { "internalType": "bytes[]", "name": "activationParamValues", "type": "bytes[]" }, { "internalType": "bool", "name": "needsActivation", "type": "bool" }, { "internalType": "bytes[]", "name": "linkParentParamValues", "type": "bytes[]" } ], "internalType": "struct Licensing.Policy", "name": "pol", "type": "tuple" } ], "name": "addPolicy", "outputs": [ { "internalType": "uint256", "name": "policyId", "type": "uint256" }, { "internalType": "bool", "name": "isNew", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "ipId", "type": "address" }, { "internalType": "uint256", "name": "polId", "type": "uint256" } ], "name": "addPolicyToIp", "outputs": [ { "internalType": "uint256", "name": "indexOnIpId", "type": "uint256" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "ipId", "type": "address" }, { "components": [ { "internalType": "uint256", "name": "frameworkId", "type": "uint256" }, { "internalType": "bytes[]", "name": "mintingParamValues", "type": "bytes[]" }, { "internalType": "bytes[]", "name": "activationParamValues", "type": "bytes[]" }, { "internalType": "bool", "name": "needsActivation", "type": "bool" }, { "internalType": "bytes[]", "name": "linkParentParamValues", "type": "bytes[]" } ], "internalType": "struct Licensing.Policy", "name": "pol", "type": "tuple" } ], "name": "addPolicyToIp", "outputs": [ { "internalType": "uint256", "name": "policyId", "type": "uint256" }, { "internalType": "bool", "name": "isNew", "type": "bool" }, { "internalType": "uint256", "name": "indexOnIpId", "type": "uint256" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" }, { "internalType": "uint256", "name": "id", "type": "uint256" } ], "name": "balanceOf", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address[]", "name": "accounts", "type": "address[]" }, { "internalType": "uint256[]", "name": "ids", "type": "uint256[]" } ], "name": "balanceOfBatch", "outputs": [ { "internalType": "uint256[]", "name": "", "type": "uint256[]" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "frameworkId", "type": "uint256" } ], "name": "framework", "outputs": [ { "components": [ { "components": [ { "internalType": "contract IParamVerifier", "name": "verifier", "type": "address" }, { "internalType": "bytes", "name": "defaultValue", "type": "bytes" } ], "internalType": "struct Licensing.Parameter[]", "name": "mintingParams", "type": "tuple[]" }, { "components": [ { "internalType": "contract IParamVerifier", "name": "verifier", "type": "address" }, { "internalType": "bytes", "name": "defaultValue", "type": "bytes" } ], "internalType": "struct Licensing.Parameter[]", "name": "activationParams", "type": "tuple[]" }, { "internalType": "bool", "name": "defaultNeedsActivation", "type": "bool" }, { "components": [ { "internalType": "contract IParamVerifier", "name": "verifier", "type": "address" }, { "internalType": "bytes", "name": "defaultValue", "type": "bytes" } ], "internalType": "struct Licensing.Parameter[]", "name": "linkParentParams", "type": "tuple[]" }, { "internalType": "string", "name": "licenseUrl", "type": "string" } ], "internalType": "struct Licensing.Framework", "name": "fw", "type": "tuple" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" }, { "internalType": "address", "name": "operator", "type": "address" } ], "name": "isApprovedForAll", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "licenseId", "type": "uint256" }, { "internalType": "address", "name": "holder", "type": "address" } ], "name": "isLicensee", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "parentIpId", "type": "address" }, { "internalType": "address", "name": "childIpId", "type": "address" } ], "name": "isParent", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "policyId", "type": "uint256" } ], "name": "isPolicyDefined", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "ipId", "type": "address" }, { "internalType": "uint256", "name": "policyId", "type": "uint256" } ], "name": "isPolicyIdSetForIp", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "licenseId", "type": "uint256" }, { "internalType": "address", "name": "childIpId", "type": "address" }, { "internalType": "address", "name": "holder", "type": "address" } ], "name": "linkIpToParent", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "components": [ { "internalType": "uint256", "name": "policyId", "type": "uint256" }, { "internalType": "address[]", "name": "licensorIpIds", "type": "address[]" } ], "internalType": "struct Licensing.License", "name": "licenseData", "type": "tuple" }, { "internalType": "uint256", "name": "amount", "type": "uint256" }, { "internalType": "address", "name": "receiver", "type": "address" } ], "name": "mintLicense", "outputs": [ { "internalType": "uint256", "name": "licenseId", "type": "uint256" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "ipId", "type": "address" } ], "name": "parentIpIds", "outputs": [ { "internalType": "address[]", "name": "", "type": "address[]" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "policyId", "type": "uint256" } ], "name": "policy", "outputs": [ { "components": [ { "internalType": "uint256", "name": "frameworkId", "type": "uint256" }, { "internalType": "bytes[]", "name": "mintingParamValues", "type": "bytes[]" }, { "internalType": "bytes[]", "name": "activationParamValues", "type": "bytes[]" }, { "internalType": "bool", "name": "needsActivation", "type": "bool" }, { "internalType": "bytes[]", "name": "linkParentParamValues", "type": "bytes[]" } ], "internalType": "struct Licensing.Policy", "name": "pol", "type": "tuple" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "ipId", "type": "address" }, { "internalType": "uint256", "name": "index", "type": "uint256" } ], "name": "policyForIpAtIndex", "outputs": [ { "components": [ { "internalType": "uint256", "name": "frameworkId", "type": "uint256" }, { "internalType": "bytes[]", "name": "mintingParamValues", "type": "bytes[]" }, { "internalType": "bytes[]", "name": "activationParamValues", "type": "bytes[]" }, { "internalType": "bool", "name": "needsActivation", "type": "bool" }, { "internalType": "bytes[]", "name": "linkParentParamValues", "type": "bytes[]" } ], "internalType": "struct Licensing.Policy", "name": "", "type": "tuple" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "ipId", "type": "address" }, { "internalType": "uint256", "name": "index", "type": "uint256" } ], "name": "policyIdForIpAtIndex", "outputs": [ { "internalType": "uint256", "name": "policyId", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "ipId", "type": "address" } ], "name": "policyIdsForIp", "outputs": [ { "internalType": "uint256[]", "name": "policyIds", "type": "uint256[]" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "from", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256[]", "name": "ids", "type": "uint256[]" }, { "internalType": "uint256[]", "name": "values", "type": "uint256[]" }, { "internalType": "bytes", "name": "data", "type": "bytes" } ], "name": "safeBatchTransferFrom", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "from", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "id", "type": "uint256" }, { "internalType": "uint256", "name": "value", "type": "uint256" }, { "internalType": "bytes", "name": "data", "type": "bytes" } ], "name": "safeTransferFrom", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "operator", "type": "address" }, { "internalType": "bool", "name": "approved", "type": "bool" } ], "name": "setApprovalForAll", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bytes4", "name": "interfaceId", "type": "bytes4" } ], "name": "supportsInterface", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "totalFrameworks", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "ipId", "type": "address" } ], "name": "totalParentsForIpId", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "totalPolicies", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "ipId", "type": "address" } ], "name": "totalPoliciesForIp", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "name": "uri", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" } ]
60806040523480156200001157600080fd5b506040516200487a3803806200487a833981016040819052620000349162000070565b80620000408162000048565b5050620002a2565b6002620000568282620001d6565b5050565b634e487b7160e01b600052604160045260246000fd5b600060208083850312156200008457600080fd5b82516001600160401b03808211156200009c57600080fd5b818501915085601f830112620000b157600080fd5b815181811115620000c657620000c66200005a565b604051601f8201601f19908116603f01168101908382118183101715620000f157620000f16200005a565b8160405282815288868487010111156200010a57600080fd5b600093505b828410156200012e57848401860151818501870152928501926200010f565b600086848301015280965050505050505092915050565b600181811c908216806200015a57607f821691505b6020821081036200017b57634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115620001d1576000816000526020600020601f850160051c81016020861015620001ac5750805b601f850160051c820191505b81811015620001cd57828155600101620001b8565b5050505b505050565b81516001600160401b03811115620001f257620001f26200005a565b6200020a8162000203845462000145565b8462000181565b602080601f831160018114620002425760008415620002295750858301515b600019600386901b1c1916600185901b178555620001cd565b600085815260208120601f198616915b82811015620002735788860151825594840194600190910190840162000252565b5085821015620002925787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6145c880620002b26000396000f3fe608060405234801561001057600080fd5b50600436106101c35760003560e01c80637305424f116100f9578063a22cb46511610097578063d18f8ba011610071578063d18f8ba01461042a578063e985e9c51461043d578063f059d78e14610486578063f242432a1461048e57600080fd5b8063a22cb465146103dc578063b68c0da8146103ef578063ca0f8b071461041757600080fd5b806396d31616116100d357806396d3161614610375578063972fefb91461038857806399a7776e1461039b578063a21a9913146103ae57600080fd5b80637305424f1461033c57806387100fe01461034f57806390f667721461036257600080fd5b80633d3cc1bf116101665780634e23932f116101405780634e23932f146102df5780634f9484f6146102f2578063522568e6146102fa57806352f326971461031a57600080fd5b80633d3cc1bf1461028c57806344523fdf146102ac5780634e1273f4146102bf57600080fd5b80631ade6f7e116101a25780631ade6f7e146102315780632a5c2ce7146102465780632eb2c2d6146102595780633cea51201461026c57600080fd5b8062fdd58e146101c857806301ffc9a7146101ee5780630e89341c14610211575b600080fd5b6101db6101d6366004613166565b6104a1565b6040519081526020015b60405180910390f35b6102016101fc3660046131c0565b6104d6565b60405190151581526020016101e5565b61022461021f3660046131dd565b6105b9565b6040516101e5919061323c565b61024461023f36600461324f565b61064d565b005b6101db610254366004613291565b610aff565b61024461026736600461343a565b610b2d565b61027f61027a3660046131dd565b610bf8565b6040516101e59190613542565b61029f61029a366004613291565b610f2e565b6040516101e591906135b9565b61027f6102ba366004613166565b610f5f565b6102d26102cd366004613613565b611288565b6040516101e59190613711565b6102016102ed366004613724565b61136e565b6004546101db565b61030d6103083660046131dd565b611383565b6040516101e591906137c9565b6102016103283660046131dd565b600090815260066020526040902054151590565b6101db61034a366004613166565b6117e1565b6101db61035d36600461384a565b611837565b6101db610370366004613886565b611a5b565b6101db610383366004613291565b611e8c565b6102d2610396366004613291565b611eba565b6101db6103a9366004613166565b611eeb565b6103c16103bc366004613a23565b611f1a565b604080519384529115156020840152908201526060016101e5565b6102446103ea366004613a69565b611f4a565b6104026103fd366004613a97565b611f59565b604080519283529015156020830152016101e5565b610201610425366004613166565b612095565b610201610438366004613acc565b6120c4565b61020161044b366004613acc565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205460ff1690565b6007546101db565b61024461049c366004613afa565b6120f3565b60008181526020818152604080832073ffffffffffffffffffffffffffffffffffffffff861684529091529020545b92915050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167fd9b67a2600000000000000000000000000000000000000000000000000000000148061056957507fffffffff0000000000000000000000000000000000000000000000000000000082167f0e89341c00000000000000000000000000000000000000000000000000000000145b806104d057507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316146104d0565b6060600280546105c890613b63565b80601f01602080910402602001604051908101604052809291908181526020018280546105f490613b63565b80156106415780601f1061061657610100808354040283529160200191610641565b820191906000526020600020905b81548152906001019060200180831161062457829003601f168201915b50505050509050919050565b828161065981836104a1565b600003610692576040517f784b513600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000858152600b602090815260408083208151808301835281548152600182018054845181870281018701909552808552919492938584019390929083018282801561071457602002820191906000526020600020905b815473ffffffffffffffffffffffffffffffffffffffff1681526001909101906020018083116106e9575b50505091909252505050602081015190915060005b815181101561073a57600101610729565b50600061074a8360000151610bf8565b905060006003600083600001518152602001908152602001600020600301805480602002602001604051908101604052809291908181526020016000905b8282101561086e5760008481526020908190206040805180820190915260028502909101805473ffffffffffffffffffffffffffffffffffffffff16825260018101805492939192918401916107dd90613b63565b80601f016020809104026020016040519081016040528092919081815260200182805461080990613b63565b80156108565780601f1061082b57610100808354040283529160200191610856565b820191906000526020600020905b81548152906001019060200180831161083957829003601f168201915b50505050508152505081526020019060010190610788565b50505050608083015190915060005b82518110156109c857600083828151811061089a5761089a613bb6565b6020026020010151905060008383815181106108b8576108b8613bb6565b6020026020010151516000146108e7578383815181106108da576108da613bb6565b60200260200101516108ed565b81602001515b82516040517f20bef03a00000000000000000000000000000000000000000000000000000000815291925073ffffffffffffffffffffffffffffffffffffffff16906320bef03a90610945908e908590600401613be5565b6020604051808303816000875af1158015610964573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109889190613c14565b6109be576040517fc9846cf100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b505060010161087d565b506109d38984611f1a565b50505060005b8451811015610ae65760008582815181106109f6576109f6613bb6565b602002602001015190508a73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610a65576040517f6b7a4bb600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8b166000908152600960205260409020610a9490826121b1565b5060405173ffffffffffffffffffffffffffffffffffffffff80831691908d169033907fa6a963dc705ab615e7601d6d84254e6af208a18f46d4220d1672bf38e498045290600090a4506001016109d9565b50610af3888b60016121d3565b50505050505050505050565b73ffffffffffffffffffffffffffffffffffffffff811660009081526008602052604081206104d090612269565b3373ffffffffffffffffffffffffffffffffffffffff86168114801590610b87575073ffffffffffffffffffffffffffffffffffffffff80871660009081526001602090815260408083209385168352929052205460ff16155b15610be3576040517fe237d92200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8083166004830152871660248201526044015b60405180910390fd5b610bf08686868686612273565b505050505050565b610c2c6040518060a00160405280600081526020016060815260200160608152602001600015158152602001606081525090565b600660008381526020019081526020016000206040518060a00160405290816000820154815260200160018201805480602002602001604051908101604052809291908181526020016000905b82821015610d25578382906000526020600020018054610c9890613b63565b80601f0160208091040260200160405190810160405280929190818152602001828054610cc490613b63565b8015610d115780601f10610ce657610100808354040283529160200191610d11565b820191906000526020600020905b815481529060010190602001808311610cf457829003601f168201915b505050505081526020019060010190610c79565b50505050815260200160028201805480602002602001604051908101604052809291908181526020016000905b82821015610dfe578382906000526020600020018054610d7190613b63565b80601f0160208091040260200160405190810160405280929190818152602001828054610d9d90613b63565b8015610dea5780601f10610dbf57610100808354040283529160200191610dea565b820191906000526020600020905b815481529060010190602001808311610dcd57829003601f168201915b505050505081526020019060010190610d52565b50505090825250600382015460ff161515602080830191909152600483018054604080518285028101850182528281529401939260009084015b82821015610ee4578382906000526020600020018054610e5790613b63565b80601f0160208091040260200160405190810160405280929190818152602001828054610e8390613b63565b8015610ed05780601f10610ea557610100808354040283529160200191610ed0565b820191906000526020600020905b815481529060010190602001808311610eb357829003601f168201915b505050505081526020019060010190610e38565b505050915250508051909150600003610f29576040517f91d3a01500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b919050565b73ffffffffffffffffffffffffffffffffffffffff811660009081526009602052604090206060906104d090612320565b610f936040518060a00160405280600081526020016060815260200160608152602001600015158152602001606081525090565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260086020526040812060069190610fc6908561232d565b81526020019081526020016000206040518060a00160405290816000820154815260200160018201805480602002602001604051908101604052809291908181526020016000905b828210156110ba57838290600052602060002001805461102d90613b63565b80601f016020809104026020016040519081016040528092919081815260200182805461105990613b63565b80156110a65780601f1061107b576101008083540402835291602001916110a6565b820191906000526020600020905b81548152906001019060200180831161108957829003601f168201915b50505050508152602001906001019061100e565b50505050815260200160028201805480602002602001604051908101604052809291908181526020016000905b8282101561119357838290600052602060002001805461110690613b63565b80601f016020809104026020016040519081016040528092919081815260200182805461113290613b63565b801561117f5780601f106111545761010080835404028352916020019161117f565b820191906000526020600020905b81548152906001019060200180831161116257829003601f168201915b5050505050815260200190600101906110e7565b50505090825250600382015460ff161515602080830191909152600483018054604080518285028101850182528281529401939260009084015b828210156112795783829060005260206000200180546111ec90613b63565b80601f016020809104026020016040519081016040528092919081815260200182805461121890613b63565b80156112655780601f1061123a57610100808354040283529160200191611265565b820191906000526020600020905b81548152906001019060200180831161124857829003601f168201915b5050505050815260200190600101906111cd565b50505091525090949350505050565b606081518351146112d257815183516040517f5b05999100000000000000000000000000000000000000000000000000000000815260048101929092526024820152604401610bda565b6000835167ffffffffffffffff8111156112ee576112ee6132ae565b604051908082528060200260200182016040528015611317578160200160208202803683370190505b50905060005b845181101561136657602080820286010151611341906020808402870101516104a1565b82828151811061135357611353613bb6565b602090810291909101015260010161131d565b509392505050565b60008061137b83856104a1565b119392505050565b6113b76040518060a00160405280606081526020016060815260200160001515815260200160608152602001606081525090565b60008281526003602090815260408083208151815460c09481028201850190935260a08101838152909491938593919285929185015b828210156114d35760008481526020908190206040805180820190915260028502909101805473ffffffffffffffffffffffffffffffffffffffff168252600181018054929391929184019161144290613b63565b80601f016020809104026020016040519081016040528092919081815260200182805461146e90613b63565b80156114bb5780601f10611490576101008083540402835291602001916114bb565b820191906000526020600020905b81548152906001019060200180831161149e57829003601f168201915b505050505081525050815260200190600101906113ed565b50505050815260200160018201805480602002602001604051908101604052809291908181526020016000905b828210156115e65760008481526020908190206040805180820190915260028502909101805473ffffffffffffffffffffffffffffffffffffffff168252600181018054929391929184019161155590613b63565b80601f016020809104026020016040519081016040528092919081815260200182805461158190613b63565b80156115ce5780601f106115a3576101008083540402835291602001916115ce565b820191906000526020600020905b8154815290600101906020018083116115b157829003601f168201915b50505050508152505081526020019060010190611500565b50505090825250600282015460ff161515602080830191909152600383018054604080518285028101850182528281529401939260009084015b828210156117065760008481526020908190206040805180820190915260028502909101805473ffffffffffffffffffffffffffffffffffffffff168252600181018054929391929184019161167590613b63565b80601f01602080910402602001604051908101604052809291908181526020018280546116a190613b63565b80156116ee5780601f106116c3576101008083540402835291602001916116ee565b820191906000526020600020905b8154815290600101906020018083116116d157829003601f168201915b50505050508152505081526020019060010190611620565b50505050815260200160048201805461171e90613b63565b80601f016020809104026020016040519081016040528092919081815260200182805461174a90613b63565b80156117975780601f1061176c57610100808354040283529160200191611797565b820191906000526020600020905b81548152906001019060200180831161177a57829003601f168201915b5050505050815250509050806080015151600003610f29576040517f872daf8c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600081815260066020526040812054611826576040517f91d3a01500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6118308383612339565b9392505050565b600061184660e0830183613c31565b159050806118ac57506040805160208101909152600081526118ac9061186f60e0850185613c31565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092939250506124009050565b156118e3576040517fa327329a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6004600081546118f290613ccc565b9091555061190360e0830183613c31565b6004805460009081526003602052604090200191611922919083613d57565b5061193360a0830160808401613e53565b6004805460009081526003602052604080822060020180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016941515949094179093559054815290812061199e9161198c8580613e70565b6119996020880188613e70565b612425565b600454600090815260036020526040908190206119d1916001906119c490860186613e70565b6119996060880188613e70565b6004546000908152600360205260409020611a029060026119f560a0860186613e70565b61199960c0880188613e70565b6004543373ffffffffffffffffffffffffffffffffffffffff167fd6b08a0ea483e1bc05efde241a27235c57b9306419b3bc74ff42034cff2bfff684604051611a4b919061406d565b60405180910390a3505060045490565b60008335815b611a6e6020870187613e70565b9050811015611b1c576000611a866020880188613e70565b83818110611a9657611a96613bb6565b9050602002016020810190611aab9190613291565b73ffffffffffffffffffffffffffffffffffffffff81166000908152600860205260409020909150611add9084612632565b611b13576040517f13f79ef300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50600101611a61565b506000611b2882610bf8565b8051600090815260036020908152604080832080548251818502810185019093528083529495509293909291849084015b82821015611c3f5760008481526020908190206040805180820190915260028502909101805473ffffffffffffffffffffffffffffffffffffffff1682526001810180549293919291840191611bae90613b63565b80601f0160208091040260200160405190810160405280929190818152602001828054611bda90613b63565b8015611c275780601f10611bfc57610100808354040283529160200191611c27565b820191906000526020600020905b815481529060010190602001808311611c0a57829003601f168201915b50505050508152505081526020019060010190611b59565b50505050602083015190915060005b8251811015611d9b576000838281518110611c6b57611c6b613bb6565b602002602001015190506000838381518110611c8957611c89613bb6565b602002602001015151600014611cb857838381518110611cab57611cab613bb6565b6020026020010151611cbe565b81602001515b82516040517f2603ac4f00000000000000000000000000000000000000000000000000000000815291925073ffffffffffffffffffffffffffffffffffffffff1690632603ac4f90611d18908c908e9086906004016141a7565b6020604051808303816000875af1158015611d37573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d5b9190613c14565b611d91576040517ff850e49c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5050600101611c4e565b50600080611dcc8a604051602001611db39190614246565b604051602081830303815290604052600a600c5461264a565b915091508196508015611e6457600c8790556000878152600b602052604090208a90611df88282614259565b905050868873ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f51cd3433f3efda6c9fdd1e362c6be7592bf299739eb12ee8a7eca726a11a8c538c8e604051611e5b929190614336565b60405180910390a45b611e7f88888b604051806020016040528060008152506126a1565b5050505050509392505050565b73ffffffffffffffffffffffffffffffffffffffff811660009081526009602052604081206104d090612269565b73ffffffffffffffffffffffffffffffffffffffff811660009081526008602052604090206060906104d090612320565b73ffffffffffffffffffffffffffffffffffffffff82166000908152600860205260408120611830908361232d565b6000806000806000611f2b86611f59565b915091508181611f3b8985612339565b94509450945050509250925092565b611f55338383612724565b5050565b600080600080611f8c85604051602001611f739190613542565b604051602081830303815290604052600560075461264a565b91509150801561208b5760078290556000828152600660209081526040909120865181558187015180518893611fc992600185019291019061307f565b5060408201518051611fe591600284019160209091019061307f565b5060608201516003820180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169115159190911790556080820151805161203791600484019160209091019061307f565b50905050813373ffffffffffffffffffffffffffffffffffffffff167f5aa1e8ada13efcae1b8f08761dbfd5c1ebef5c8110652913fe0ddd951c3fc3b8876040516120829190613542565b60405180910390a35b9094909350915050565b73ffffffffffffffffffffffffffffffffffffffff821660009081526008602052604081206118309083612632565b73ffffffffffffffffffffffffffffffffffffffff81166000908152600960205260408120611830908461280c565b3373ffffffffffffffffffffffffffffffffffffffff8616811480159061214d575073ffffffffffffffffffffffffffffffffffffffff80871660009081526001602090815260408083209385168352929052205460ff16155b156121a4576040517fe237d92200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff808316600483015287166024820152604401610bda565b610bf0868686868661283b565b60006118308373ffffffffffffffffffffffffffffffffffffffff8416612916565b73ffffffffffffffffffffffffffffffffffffffff8316612223576040517f01a8351400000000000000000000000000000000000000000000000000000000815260006004820152602401610bda565b604080516001808252602082018590528183019081526060820184905260a0820190925260006080820181815291929161226291879185908590612965565b5050505050565b60006104d0825490565b73ffffffffffffffffffffffffffffffffffffffff84166122c3576040517f57f447ce00000000000000000000000000000000000000000000000000000000815260006004820152602401610bda565b73ffffffffffffffffffffffffffffffffffffffff8516612313576040517f01a8351400000000000000000000000000000000000000000000000000000000815260006004820152602401610bda565b6122628585858585612965565b60606000611830836129c5565b60006118308383612a20565b73ffffffffffffffffffffffffffffffffffffffff821660009081526008602052604081206123688184612a4a565b61239e576040517fee9ad94800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b604051839073ffffffffffffffffffffffffffffffffffffffff86169033907fdc591cb919b0a29ab9d48583e711bb4789ba6b5c057571e199c136aedf97268090600090a460016123ee82612269565b6123f8919061434f565b949350505050565b6000815183511480156118305750508051602091820120825192909101919091201490565b82811461245e576040517fcf57719d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008086600281111561247357612473614362565b0361247f5750856124f7565b600186600281111561249357612493614362565b036124a25750600186016124f7565b60028660028111156124b6576124b6614362565b036124c55750600386016124f7565b6040517f3b10dafd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60005b848110156126285781604051806040016040528088888581811061252057612520613bb6565b90506020020160208101906125359190613291565b73ffffffffffffffffffffffffffffffffffffffff16815260200186868581811061256257612562613bb6565b90506020028101906125749190613c31565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920182905250939094525050835460018082018655948252602091829020845160029092020180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff9092169190911781559083015192939092908301915061261d9082614391565b5050506001016124fa565b5050505050505050565b60008181526001830160205260408120541515611830565b8251602080850191909120600081815291849052604082205491908215612675575060009050612699565b61268084600161448d565b6000918252602086905260409091208190559150600190505b935093915050565b73ffffffffffffffffffffffffffffffffffffffff84166126f1576040517f57f447ce00000000000000000000000000000000000000000000000000000000815260006004820152602401610bda565b60408051600180825260208201869052818301908152606082018590526080820190925290610bf0600087848487612965565b73ffffffffffffffffffffffffffffffffffffffff8216612774576040517fced3e10000000000000000000000000000000000000000000000000000000000815260006004820152602401610bda565b73ffffffffffffffffffffffffffffffffffffffff83811660008181526001602090815260408083209487168084529482529182902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff811660009081526001830160205260408120541515611830565b73ffffffffffffffffffffffffffffffffffffffff841661288b576040517f57f447ce00000000000000000000000000000000000000000000000000000000815260006004820152602401610bda565b73ffffffffffffffffffffffffffffffffffffffff85166128db576040517f01a8351400000000000000000000000000000000000000000000000000000000815260006004820152602401610bda565b6040805160018082526020820186905281830190815260608201859052608082019092529061290d8787848487612965565b50505050505050565b600081815260018301602052604081205461295d575081546001818101845560008481526020808220909301849055845484825282860190935260409020919091556104d0565b5060006104d0565b61297185858585612a56565b73ffffffffffffffffffffffffffffffffffffffff84161561226257825133906001036129b757602084810151908401516129b0838989858589612d38565b5050610bf0565b610bf0818787878787612f0c565b60608160000180548060200260200160405190810160405280929190818152602001828054801561064157602002820191906000526020600020905b815481526020019060010190808311612a015750505050509050919050565b6000826000018281548110612a3757612a37613bb6565b9060005260206000200154905092915050565b60006118308383612916565b8051825114612a9e57815181516040517f5b05999100000000000000000000000000000000000000000000000000000000815260048101929092526024820152604401610bda565b3360005b8351811015612c0b5760208181028581018201519085019091015173ffffffffffffffffffffffffffffffffffffffff881615612ba25760008281526020818152604080832073ffffffffffffffffffffffffffffffffffffffff8c16845290915290205481811015612b6e576040517f03dee4c500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8a166004820152602481018290526044810183905260648101849052608401610bda565b60008381526020818152604080832073ffffffffffffffffffffffffffffffffffffffff8d16845290915290209082900390555b73ffffffffffffffffffffffffffffffffffffffff871615612c015760008281526020818152604080832073ffffffffffffffffffffffffffffffffffffffff8b16845290915281208054839290612bfb90849061448d565b90915550505b5050600101612aa2565b508251600103612cb357602083015160009060208401519091508573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f628585604051612ca4929190918252602082015260400190565b60405180910390a45050612262565b8373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8686604051612d299291906144a0565b60405180910390a45050505050565b73ffffffffffffffffffffffffffffffffffffffff84163b15610bf0576040517ff23a6e6100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85169063f23a6e6190612daf90899089908890889088906004016144c5565b6020604051808303816000875af1925050508015612dea575060408051601f3d908101601f19168201909252612de79181019061450a565b60015b612e79573d808015612e18576040519150601f19603f3d011682016040523d82523d6000602084013e612e1d565b606091505b508051600003612e71576040517f57f447ce00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff86166004820152602401610bda565b805181602001fd5b7fffffffff0000000000000000000000000000000000000000000000000000000081167ff23a6e61000000000000000000000000000000000000000000000000000000001461290d576040517f57f447ce00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff86166004820152602401610bda565b73ffffffffffffffffffffffffffffffffffffffff84163b15610bf0576040517fbc197c8100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85169063bc197c8190612f839089908990889088908890600401614527565b6020604051808303816000875af1925050508015612fbe575060408051601f3d908101601f19168201909252612fbb9181019061450a565b60015b612fec573d808015612e18576040519150601f19603f3d011682016040523d82523d6000602084013e612e1d565b7fffffffff0000000000000000000000000000000000000000000000000000000081167fbc197c81000000000000000000000000000000000000000000000000000000001461290d576040517f57f447ce00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff86166004820152602401610bda565b8280548282559060005260206000209081019282156130c5579160200282015b828111156130c557825182906130b59082614391565b509160200191906001019061309f565b506130d19291506130d5565b5090565b808211156130d15760006130e982826130f2565b506001016130d5565b5080546130fe90613b63565b6000825580601f1061310e575050565b601f01602090049060005260206000209081019061312c919061312f565b50565b5b808211156130d15760008155600101613130565b73ffffffffffffffffffffffffffffffffffffffff8116811461312c57600080fd5b6000806040838503121561317957600080fd5b823561318481613144565b946020939093013593505050565b7fffffffff000000000000000000000000000000000000000000000000000000008116811461312c57600080fd5b6000602082840312156131d257600080fd5b813561183081613192565b6000602082840312156131ef57600080fd5b5035919050565b6000815180845260005b8181101561321c57602081850181015186830182015201613200565b506000602082860101526020601f19601f83011685010191505092915050565b60208152600061183060208301846131f6565b60008060006060848603121561326457600080fd5b83359250602084013561327681613144565b9150604084013561328681613144565b809150509250925092565b6000602082840312156132a357600080fd5b813561183081613144565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60405160a0810167ffffffffffffffff81118282101715613300576133006132ae565b60405290565b604051601f8201601f1916810167ffffffffffffffff8111828210171561332f5761332f6132ae565b604052919050565b600067ffffffffffffffff821115613351576133516132ae565b5060051b60200190565b600082601f83011261336c57600080fd5b8135602061338161337c83613337565b613306565b8083825260208201915060208460051b8701019350868411156133a357600080fd5b602086015b848110156133bf57803583529183019183016133a8565b509695505050505050565b600082601f8301126133db57600080fd5b813567ffffffffffffffff8111156133f5576133f56132ae565b6134086020601f19601f84011601613306565b81815284602083860101111561341d57600080fd5b816020850160208301376000918101602001919091529392505050565b600080600080600060a0868803121561345257600080fd5b853561345d81613144565b9450602086013561346d81613144565b9350604086013567ffffffffffffffff8082111561348a57600080fd5b61349689838a0161335b565b945060608801359150808211156134ac57600080fd5b6134b889838a0161335b565b935060808801359150808211156134ce57600080fd5b506134db888289016133ca565b9150509295509295909350565b60008282518085526020808601955060208260051b8401016020860160005b8481101561353557601f198684030189526135238383516131f6565b98840198925090830190600101613507565b5090979650505050505050565b60208152815160208201526000602083015160a0604084015261356860c08401826134e8565b90506040840151601f198085840301606086015261358683836134e8565b925060608601511515608086015260808601519150808584030160a0860152506135b082826134e8565b95945050505050565b6020808252825182820181905260009190848201906040850190845b8181101561360757835173ffffffffffffffffffffffffffffffffffffffff16835292840192918401916001016135d5565b50909695505050505050565b6000806040838503121561362657600080fd5b823567ffffffffffffffff8082111561363e57600080fd5b818501915085601f83011261365257600080fd5b8135602061366261337c83613337565b82815260059290921b8401810191818101908984111561368157600080fd5b948201945b838610156136a857853561369981613144565b82529482019490820190613686565b965050860135925050808211156136be57600080fd5b506136cb8582860161335b565b9150509250929050565b60008151808452602080850194506020840160005b83811015613706578151875295820195908201906001016136ea565b509495945050505050565b60208152600061183060208301846136d5565b6000806040838503121561373757600080fd5b82359150602083013561374981613144565b809150509250929050565b600082825180855260208086019550808260051b84010181860160005b8481101561353557858303601f190189528151805173ffffffffffffffffffffffffffffffffffffffff16845284015160408585018190526137b5818601836131f6565b9a86019a9450505090830190600101613771565b602081526000825160a060208401526137e560c0840182613754565b90506020840151601f19808584030160408601526138038383613754565b9250604086015115156060860152606086015191508085840301608086015261382c8383613754565b925060808601519150808584030160a0860152506135b082826131f6565b60006020828403121561385c57600080fd5b813567ffffffffffffffff81111561387357600080fd5b8201610100818503121561183057600080fd5b60008060006060848603121561389b57600080fd5b833567ffffffffffffffff8111156138b257600080fd5b8401604081870312156138c457600080fd5b925060208401359150604084013561328681613144565b600082601f8301126138ec57600080fd5b813560206138fc61337c83613337565b82815260059290921b8401810191818101908684111561391b57600080fd5b8286015b848110156133bf57803567ffffffffffffffff81111561393f5760008081fd5b61394d8986838b01016133ca565b84525091830191830161391f565b801515811461312c57600080fd5b8035610f298161395b565b600060a0828403121561398657600080fd5b61398e6132dd565b905081358152602082013567ffffffffffffffff808211156139af57600080fd5b6139bb858386016138db565b602084015260408401359150808211156139d457600080fd5b6139e0858386016138db565b60408401526139f160608501613969565b60608401526080840135915080821115613a0a57600080fd5b50613a17848285016138db565b60808301525092915050565b60008060408385031215613a3657600080fd5b8235613a4181613144565b9150602083013567ffffffffffffffff811115613a5d57600080fd5b6136cb85828601613974565b60008060408385031215613a7c57600080fd5b8235613a8781613144565b915060208301356137498161395b565b600060208284031215613aa957600080fd5b813567ffffffffffffffff811115613ac057600080fd5b6123f884828501613974565b60008060408385031215613adf57600080fd5b8235613aea81613144565b9150602083013561374981613144565b600080600080600060a08688031215613b1257600080fd5b8535613b1d81613144565b94506020860135613b2d81613144565b93506040860135925060608601359150608086013567ffffffffffffffff811115613b5757600080fd5b6134db888289016133ca565b600181811c90821680613b7757607f821691505b602082108103613bb0577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b73ffffffffffffffffffffffffffffffffffffffff831681526040602082015260006123f860408301846131f6565b600060208284031215613c2657600080fd5b81516118308161395b565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112613c6657600080fd5b83018035915067ffffffffffffffff821115613c8157600080fd5b602001915036819003821315613c9657600080fd5b9250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203613cfd57613cfd613c9d565b5060010190565b5b81811015611f555760008155600101613d05565b601f821115613d5257806000526020600020601f840160051c81016020851015613d405750805b612262601f850160051c830182613d04565b505050565b67ffffffffffffffff831115613d6f57613d6f6132ae565b613d8383613d7d8354613b63565b83613d19565b6000601f841160018114613dd55760008515613d9f5750838201355b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600387901b1c1916600186901b178355612262565b600083815260209020601f19861690835b82811015613e065786850135825560209485019460019092019101613de6565b5086821015613e41577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60f88860031b161c19848701351681555b505060018560011b0183555050505050565b600060208284031215613e6557600080fd5b81356118308161395b565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112613ea557600080fd5b83018035915067ffffffffffffffff821115613ec057600080fd5b6020019150600581901b3603821315613c9657600080fd5b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112613f0d57600080fd5b830160208101925035905067ffffffffffffffff811115613f2d57600080fd5b8060051b3603821315613c9657600080fd5b8183526000602080850194508260005b85811015613706578135613f6281613144565b73ffffffffffffffffffffffffffffffffffffffff1687529582019590820190600101613f4f565b818352818160208501375060006020828401015260006020601f19601f840116840101905092915050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112613fea57600080fd5b830160208101925035905067ffffffffffffffff81111561400a57600080fd5b803603821315613c9657600080fd5b6000838385526020808601955060208560051b8301018460005b8781101561353557601f1985840301895261404e8288613fb5565b614059858284613f8a565b9a86019a9450505090830190600101614033565b60208152600061407d8384613ed8565b61010080602086015261409561012086018385613f3f565b92506140a46020870187613ed8565b9250601f19808786030160408801526140be858584614019565b94506140cd6040890189613ed8565b94509150808786030160608801526140e6858584613f3f565b94506140f56060890189613ed8565b945091508087860301608088015261410e858584614019565b945061411c60808901613969565b80151560a0890152935061413360a0890189613ed8565b94509150808786030160c088015261414c858584613f3f565b945061415b60c0890189613ed8565b94509150808786030160e0880152614174858584614019565b945061418360e0890189613fb5565b945091508087860301838801525061419c848483613f8a565b979650505050505050565b73ffffffffffffffffffffffffffffffffffffffff841681528260208201526060604082015260006135b060608301846131f6565b6000604083018235845260206141f56020850185613ed8565b604060208801529283905291600090606087015b8183101561419c57843561421c81613144565b73ffffffffffffffffffffffffffffffffffffffff16815293830193600192909201918301614209565b60208152600061183060208301846141dc565b8135815560018082016020808501357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe186360301811261429857600080fd5b8501803567ffffffffffffffff8111156142b157600080fd5b6020820191508060051b36038213156142c957600080fd5b680100000000000000008111156142e2576142e26132ae565b83548185558082101561430857846000526020600020614306828201848301613d04565b505b50600093845260208420935b8181101561262857823561432781613144565b85820155918301918501614314565b8281526040602082015260006123f860408301846141dc565b818103818111156104d0576104d0613c9d565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b815167ffffffffffffffff8111156143ab576143ab6132ae565b6143bf816143b98454613b63565b84613d19565b602080601f83116001811461441257600084156143dc5750858301515b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600386901b1c1916600185901b178555610bf0565b600085815260208120601f198616915b8281101561444157888601518255948401946001909101908401614422565b508582101561447d57878501517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600388901b60f8161c191681555b5050505050600190811b01905550565b808201808211156104d0576104d0613c9d565b6040815260006144b360408301856136d5565b82810360208401526135b081856136d5565b600073ffffffffffffffffffffffffffffffffffffffff808816835280871660208401525084604083015283606083015260a0608083015261419c60a08301846131f6565b60006020828403121561451c57600080fd5b815161183081613192565b600073ffffffffffffffffffffffffffffffffffffffff808816835280871660208401525060a0604083015261456060a08301866136d5565b828103606084015261457281866136d5565b9050828103608084015261458681856131f6565b9897505050505050505056fea2646970667358221220fc5db1658d4f9ed472b573c2db8a15f0af206d57da2fa558de27ca76aa345f2f64736f6c634300081700330000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000001d68747470733a2f2f6578616d706c652e636f6d2f7b69647d2e6a736f6e000000