{
  "contractName": "Package",
  "abi": [
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "previousOwner",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "newOwner",
          "type": "address"
        }
      ],
      "name": "OwnershipTransferred",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint64[3]",
          "name": "semanticVersion",
          "type": "uint64[3]"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "contractAddress",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "bytes",
          "name": "contentURI",
          "type": "bytes"
        }
      ],
      "name": "VersionAdded",
      "type": "event"
    },
    {
      "inputs": [
        {
          "internalType": "uint64[3]",
          "name": "semanticVersion",
          "type": "uint64[3]"
        },
        {
          "internalType": "address",
          "name": "contractAddress",
          "type": "address"
        },
        {
          "internalType": "bytes",
          "name": "contentURI",
          "type": "bytes"
        }
      ],
      "name": "addVersion",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint64[3]",
          "name": "semanticVersion",
          "type": "uint64[3]"
        }
      ],
      "name": "getContract",
      "outputs": [
        {
          "internalType": "address",
          "name": "contractAddress",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "getLatest",
      "outputs": [
        {
          "internalType": "uint64[3]",
          "name": "semanticVersion",
          "type": "uint64[3]"
        },
        {
          "internalType": "address",
          "name": "contractAddress",
          "type": "address"
        },
        {
          "internalType": "bytes",
          "name": "contentURI",
          "type": "bytes"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint64",
          "name": "major",
          "type": "uint64"
        }
      ],
      "name": "getLatestByMajor",
      "outputs": [
        {
          "internalType": "uint64[3]",
          "name": "semanticVersion",
          "type": "uint64[3]"
        },
        {
          "internalType": "address",
          "name": "contractAddress",
          "type": "address"
        },
        {
          "internalType": "bytes",
          "name": "contentURI",
          "type": "bytes"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint64[3]",
          "name": "semanticVersion",
          "type": "uint64[3]"
        }
      ],
      "name": "getVersion",
      "outputs": [
        {
          "internalType": "address",
          "name": "contractAddress",
          "type": "address"
        },
        {
          "internalType": "bytes",
          "name": "contentURI",
          "type": "bytes"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint64[3]",
          "name": "semanticVersion",
          "type": "uint64[3]"
        }
      ],
      "name": "hasVersion",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "isOwner",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "owner",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "renounceOwnership",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "newOwner",
          "type": "address"
        }
      ],
      "name": "transferOwnership",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    }
  ],
  "bytecode": "0x608060405234801561001057600080fd5b50600080546001600160a01b03191633178082556040516001600160a01b039190911691907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3610e6a806100696000396000f3fe608060405234801561001057600080fd5b506004361061009e5760003560e01c8063c356d5b011610066578063c356d5b014610191578063c36af46014610271578063d6ef25d514610279578063e30329e914610362578063f2fde38b146104455761009e565b80631df40eaa146100a357806335ce401614610111578063715018a6146101775780638da5cb5b146101815780638f32d59b14610189575b600080fd5b6100f5600480360360608110156100b957600080fd5b810190808060600190600380602002604051908101604052809291908260036020028082843760009201919091525091945061046b9350505050565b604080516001600160a01b039092168252519081900360200190f35b6101636004803603606081101561012757600080fd5b810190808060600190600380602002604051908101604052809291908260036020028082843760009201919091525091945061049f9350505050565b604080519115158252519081900360200190f35b61017f6104d5565b005b6100f5610530565b610163610540565b6101b7600480360360208110156101a757600080fd5b50356001600160401b0316610551565b6040518084606080838360005b838110156101dc5781810151838201526020016101c4565b50505050905001836001600160a01b03166001600160a01b0316815260200180602001828103825283818151815260200191508051906020019080838360005b8381101561023457818101518382015260200161021c565b50505050905090810190601f1680156102615780820380516001836020036101000a031916815260200191505b5094505050505060405180910390f35b6101b7610691565b61017f600480360360a081101561028f57600080fd5b810190808060600190600380602002604051908101604052809291908260036020028082843760009201919091525091946001600160a01b03843516949093909250604081019150602001356401000000008111156102ed57600080fd5b8201836020820111156102ff57600080fd5b8035906020019184600183028401116401000000008311171561032157600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295506106bf945050505050565b6103b46004803603606081101561037857600080fd5b8101908080606001906003806020026040519081016040528092919082600360200280828437600092019190915250919450610a9b9350505050565b60405180836001600160a01b03166001600160a01b0316815260200180602001828103825283818151815260200191508051906020019080838360005b838110156104095781810151838201526020016103f1565b50505050905090810190601f1680156104365780820380516001836020036101000a031916815260200191505b50935050505060405180910390f35b61017f6004803603602081101561045b57600080fd5b50356001600160a01b0316610b6c565b6000806001600061047b85610b89565b81526020810191909152604001600020600101546001600160a01b03169392505050565b600080600160006104af85610b89565b81526020810191909152604001600020600101546001600160a01b031615159392505050565b6104dd610540565b6104e657600080fd5b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b03165b90565b6000546001600160a01b0316331490565b610559610c8a565b6001600160401b03821660009081526002602081815260408084205484526001918290528084209182015481516060808201938490529484936001600160a01b039093169290840191908490600390828a855b82829054906101000a90046001600160401b03166001600160401b0316815260200190600801906020826007010492830192600103820291508084116105ac575050855460408051602060026001851615610100026000190190941693909304601f810184900484028201840190925281815296995087955093508501915083905082801561067c5780601f106106515761010080835404028352916020019161067c565b820191906000526020600020905b81548152906001019060200180831161065f57829003601f168201915b50505050509050935093509350509193909250565b610699610c8a565b6003546000906060906106b4906001600160401b0316610551565b925092509250909192565b6106c7610540565b6106d057600080fd5b6001600160a01b03821661072b576040805162461bcd60e51b815260206004820152601c60248201527f436f6e7472616374206164647265737320697320726571756972656400000000604482015290519081900360640190fd5b6107348361049f565b156107705760405162461bcd60e51b815260040180806020018281038252602e815260200180610e07602e913960400191505060405180910390fd5b61077983610bd9565b156107cb576040805162461bcd60e51b815260206004820152601860248201527f56657273696f6e206d757374206265206e6f6e207a65726f0000000000000000604482015290519081900360640190fd5b60006107d684610b89565b604080516060810182528681526001600160a01b03861660208083019190915281830186905260008481526001909152919091208151929350909161081e9082906003610ca8565b506020828101516001830180546001600160a01b0319166001600160a01b039092169190911790556040830151805161085d9260028501920190610d4d565b505084516003549091506001600160401b03908116908216111561089e5784516003805467ffffffffffffffff19166001600160401b039092169190911790555b6020808601516040808801516001600160401b0385166000908152600285528281205481526001909452818420825160608101938490529394919390926109349284916003918390855b82829054906101000a90046001600160401b03166001600160401b0316815260200190600801906020826007010492830192600103820291508084116108e85790505050505050610bd9565b80610953575080546001600160401b03600160401b9091048116908416115b80610990575080546001600160401b03848116600160401b90920416148015610990575080546001600160401b03600160801b9091048116908316115b156109b1576001600160401b03841660009081526002602052604090208590555b7fc5b9b96b4952fc60f5a916010c882de0324dd4fdfaa999f9ad6947f55d8427628888886040518084600360200280838360005b838110156109fd5781810151838201526020016109e5565b50505050905001836001600160a01b03166001600160a01b0316815260200180602001828103825283818151815260200191508051906020019080838360005b83811015610a55578181015183820152602001610a3d565b50505050905090810190601f168015610a825780820380516001836020036101000a031916815260200191505b5094505050505060405180910390a15050505050505050565b60006060600060016000610aae86610b89565b81526020808201929092526040908101600020600180820154600280840180548651601f600019968316156101000296909601909116929092049384018790048702820187019095528281529295506001600160a01b031693839190830182828015610b5b5780601f10610b3057610100808354040283529160200191610b5b565b820191906000526020600020905b815481529060010190602001808311610b3e57829003601f168201915b505050505090509250925050915091565b610b74610540565b610b7d57600080fd5b610b8681610c1c565b50565b805160208083015160409384015184516001600160c01b031960c095861b81168286015292851b83166028820152931b166030830152825160188184030181526038909201909252805191012090565b80516000906001600160401b0316158015610bff575060208201516001600160401b0316155b8015610c16575060408201516001600160401b0316155b92915050565b6001600160a01b038116610c2f57600080fd5b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b60405180606001604052806003906020820280368337509192915050565b600183019183908215610d3d5791602002820160005b83821115610d0857835183826101000a8154816001600160401b0302191690836001600160401b031602179055509260200192600801602081600701049283019260010302610cbe565b8015610d3b5782816101000a8154906001600160401b030219169055600801602081600701049283019260010302610d08565b505b50610d49929150610dc7565b5090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10610d8e57805160ff1916838001178555610dbb565b82800160010185558215610dbb579182015b82811115610dbb578251825591602001919060010190610da0565b50610d49929150610dec565b61053d91905b80821115610d4957805467ffffffffffffffff19168155600101610dcd565b61053d91905b80821115610d495760008155600101610df256fe476976656e2076657273696f6e20697320616c7265616479207265676973746572656420696e207061636b616765a2646970667358221220a4e59852b4268d203beb8293bc818efbcc13d72b49f248882437f2e881d3b10664736f6c634300060a0033",
  "deployedBytecode": "0x608060405234801561001057600080fd5b506004361061009e5760003560e01c8063c356d5b011610066578063c356d5b014610191578063c36af46014610271578063d6ef25d514610279578063e30329e914610362578063f2fde38b146104455761009e565b80631df40eaa146100a357806335ce401614610111578063715018a6146101775780638da5cb5b146101815780638f32d59b14610189575b600080fd5b6100f5600480360360608110156100b957600080fd5b810190808060600190600380602002604051908101604052809291908260036020028082843760009201919091525091945061046b9350505050565b604080516001600160a01b039092168252519081900360200190f35b6101636004803603606081101561012757600080fd5b810190808060600190600380602002604051908101604052809291908260036020028082843760009201919091525091945061049f9350505050565b604080519115158252519081900360200190f35b61017f6104d5565b005b6100f5610530565b610163610540565b6101b7600480360360208110156101a757600080fd5b50356001600160401b0316610551565b6040518084606080838360005b838110156101dc5781810151838201526020016101c4565b50505050905001836001600160a01b03166001600160a01b0316815260200180602001828103825283818151815260200191508051906020019080838360005b8381101561023457818101518382015260200161021c565b50505050905090810190601f1680156102615780820380516001836020036101000a031916815260200191505b5094505050505060405180910390f35b6101b7610691565b61017f600480360360a081101561028f57600080fd5b810190808060600190600380602002604051908101604052809291908260036020028082843760009201919091525091946001600160a01b03843516949093909250604081019150602001356401000000008111156102ed57600080fd5b8201836020820111156102ff57600080fd5b8035906020019184600183028401116401000000008311171561032157600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295506106bf945050505050565b6103b46004803603606081101561037857600080fd5b8101908080606001906003806020026040519081016040528092919082600360200280828437600092019190915250919450610a9b9350505050565b60405180836001600160a01b03166001600160a01b0316815260200180602001828103825283818151815260200191508051906020019080838360005b838110156104095781810151838201526020016103f1565b50505050905090810190601f1680156104365780820380516001836020036101000a031916815260200191505b50935050505060405180910390f35b61017f6004803603602081101561045b57600080fd5b50356001600160a01b0316610b6c565b6000806001600061047b85610b89565b81526020810191909152604001600020600101546001600160a01b03169392505050565b600080600160006104af85610b89565b81526020810191909152604001600020600101546001600160a01b031615159392505050565b6104dd610540565b6104e657600080fd5b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b03165b90565b6000546001600160a01b0316331490565b610559610c8a565b6001600160401b03821660009081526002602081815260408084205484526001918290528084209182015481516060808201938490529484936001600160a01b039093169290840191908490600390828a855b82829054906101000a90046001600160401b03166001600160401b0316815260200190600801906020826007010492830192600103820291508084116105ac575050855460408051602060026001851615610100026000190190941693909304601f810184900484028201840190925281815296995087955093508501915083905082801561067c5780601f106106515761010080835404028352916020019161067c565b820191906000526020600020905b81548152906001019060200180831161065f57829003601f168201915b50505050509050935093509350509193909250565b610699610c8a565b6003546000906060906106b4906001600160401b0316610551565b925092509250909192565b6106c7610540565b6106d057600080fd5b6001600160a01b03821661072b576040805162461bcd60e51b815260206004820152601c60248201527f436f6e7472616374206164647265737320697320726571756972656400000000604482015290519081900360640190fd5b6107348361049f565b156107705760405162461bcd60e51b815260040180806020018281038252602e815260200180610e07602e913960400191505060405180910390fd5b61077983610bd9565b156107cb576040805162461bcd60e51b815260206004820152601860248201527f56657273696f6e206d757374206265206e6f6e207a65726f0000000000000000604482015290519081900360640190fd5b60006107d684610b89565b604080516060810182528681526001600160a01b03861660208083019190915281830186905260008481526001909152919091208151929350909161081e9082906003610ca8565b506020828101516001830180546001600160a01b0319166001600160a01b039092169190911790556040830151805161085d9260028501920190610d4d565b505084516003549091506001600160401b03908116908216111561089e5784516003805467ffffffffffffffff19166001600160401b039092169190911790555b6020808601516040808801516001600160401b0385166000908152600285528281205481526001909452818420825160608101938490529394919390926109349284916003918390855b82829054906101000a90046001600160401b03166001600160401b0316815260200190600801906020826007010492830192600103820291508084116108e85790505050505050610bd9565b80610953575080546001600160401b03600160401b9091048116908416115b80610990575080546001600160401b03848116600160401b90920416148015610990575080546001600160401b03600160801b9091048116908316115b156109b1576001600160401b03841660009081526002602052604090208590555b7fc5b9b96b4952fc60f5a916010c882de0324dd4fdfaa999f9ad6947f55d8427628888886040518084600360200280838360005b838110156109fd5781810151838201526020016109e5565b50505050905001836001600160a01b03166001600160a01b0316815260200180602001828103825283818151815260200191508051906020019080838360005b83811015610a55578181015183820152602001610a3d565b50505050905090810190601f168015610a825780820380516001836020036101000a031916815260200191505b5094505050505060405180910390a15050505050505050565b60006060600060016000610aae86610b89565b81526020808201929092526040908101600020600180820154600280840180548651601f600019968316156101000296909601909116929092049384018790048702820187019095528281529295506001600160a01b031693839190830182828015610b5b5780601f10610b3057610100808354040283529160200191610b5b565b820191906000526020600020905b815481529060010190602001808311610b3e57829003601f168201915b505050505090509250925050915091565b610b74610540565b610b7d57600080fd5b610b8681610c1c565b50565b805160208083015160409384015184516001600160c01b031960c095861b81168286015292851b83166028820152931b166030830152825160188184030181526038909201909252805191012090565b80516000906001600160401b0316158015610bff575060208201516001600160401b0316155b8015610c16575060408201516001600160401b0316155b92915050565b6001600160a01b038116610c2f57600080fd5b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b60405180606001604052806003906020820280368337509192915050565b600183019183908215610d3d5791602002820160005b83821115610d0857835183826101000a8154816001600160401b0302191690836001600160401b031602179055509260200192600801602081600701049283019260010302610cbe565b8015610d3b5782816101000a8154906001600160401b030219169055600801602081600701049283019260010302610d08565b505b50610d49929150610dc7565b5090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10610d8e57805160ff1916838001178555610dbb565b82800160010185558215610dbb579182015b82811115610dbb578251825591602001919060010190610da0565b50610d49929150610dec565b61053d91905b80821115610d4957805467ffffffffffffffff19168155600101610dcd565b61053d91905b80821115610d495760008155600101610df256fe476976656e2076657273696f6e20697320616c7265616479207265676973746572656420696e207061636b616765a2646970667358221220a4e59852b4268d203beb8293bc818efbcc13d72b49f248882437f2e881d3b10664736f6c634300060a0033"
}