W3MyMDEyMTIyMV0KCllPU0hJRlVKSSBIaWRlYWtpICgxNCk6CiAgICAgIG5pbmZvZDogVXNlIHVuc2lnbmVkIGludCBmb3IgZGlnZXN0LgogICAgICBuaW5mb2Q6IG5hbm9zbGVlcCgzKSBuZWVkcyA8dGltZS5oPi4KICAgICAgbmluZm9kOiBUb28gbWFueSBhcmd1bWVudHMgZm9yIHN5c2xvZygzKS9mcHJpbnRmKDMpIHZpYSBERUJVRygpLgogICAgICBuaW5mb2Q6IEZpeCBzZXZlcmFsIHdhcm5pbmdzIG9uIHVudW5zZWQgdmFyaWFibGVzLgogICAgICBwaW5nNjogUHJpbnQgdW5rbm93biBJQ01QIHR5cGUuCiAgICAgIHBpbmc2OiBGaXggZmxvd2xhYmVsIHN3aXRjaCAoLUYgb3B0aW9uKS4KICAgICAgYXJwaW5nOiBGaXggc3lzZnMgZGVjaW1hbC9oZXhhZGVjaW1hbCBwYXJzZXIgZm9yIGxpYnN5c2ZzIHN1cHBvcnQuCiAgICAgIHBpbmc2OiBVc2UgR05VIFRMUyBieSBkZWZhdWx0LgogICAgICBuaW5mb2Q6IEZpeCBtZW1vcnkgbGVha2FnZSBpbiBlcnJvciBwYXRoLgogICAgICBuaW5mb2Q6IEZpeCBvZmYtYnktb25lIGVycm9yIHRvIGNoZWNrIHBvc3NpYmxlIHByb2dyYW1taW5nIGVycm9yIChhZ2FpbikuCiAgICAgIG5pbmZvZDogRG8gbm90IGV4cG9zZSBmcmVlZCBidWZmZXIgdG8gY2FsbGVyLgogICAgICBwaW5nNjogRW5zdXJlIHRvIGluaXRpYWxpemUgbXNnaGRyLgogICAgICBuaW5mb2Q6IFN1cHBvcnQgR05VIFRMUy4KICAgICAgbmluZm9kOiBBbGxvdyBwcmludGluZyB1c2FnZSB3aXRob3V0IHBlcm1pc3Npb24gZXJyb3JzLgoKCltzMjAxMjEyMDddCgpZT1NISUZVSkkgSGlkZWFraSAoMik6CiAgICAgIFJFTE5PVEVTOiBUeXBvcy4KICAgICAgcGluZyxwaW5nNjogQ2hlY2sgb3V0Z29pbmcgZGV2aWNlIG9ubHkgaWYgc3BlY2lmaWVkLgoKCltzMjAxMjEyMDVdCgpKYW4gU3luYWNlayAoMSk6CiAgICAgIHBpbmcsdHJhY2VwYXRoIGRvYzogRml4IG1pc3NpbmcgZW5kIHRhZ3MuCgpZT1NISUZVSkkgSGlkZWFraSAoMzUpOgogICAgICB0cmFjZXBhdGg2OiBwYWNrZXQgbGVuZ3RoIG9wdGlvbiAoLWwpIGRpZCBub3QgaGF2ZSBhbnkgZWZmZWN0LgogICAgICB0cmFjZXBhdGgsdHJhY2VwYXRoNjogRml4IHBrdGxlbiBtZXNzYWdlLgogICAgICB0cmFjZXBhdGgsdHJhY2VwYXRoNjogVXNlIGNhbGxvYygzKSBpbnN0ZWFkIG9mIHVzaW5nIHN0YWNrLgogICAgICB0cmFjZXBhdGg2OiBJZ25vcmUgZmFtaWxpZXMgb3RoZXIgdGhhbiBJUHY0IGFuZCBJUHY2LgogICAgICBwaW5nNjogSW1wcm92ZSByYW5kb21uZXNzIG9mIE5JIE5vbmNlLgogICAgICB0cmFjZXBhdGgsdHJhY2VwYXRoNiBkb2M6IEZpeCBkZWZhdWx0IHBrdGxlbi4KICAgICAgcGluZyxyZGlzYzogT3B0aW1pemUgY2hlY2tzdW1taW5nLgogICAgICBtYWtlZmlsZTogU3RhdGljIGxpbmsgc3VwcG9ydCBmb3IgY3J5cHRvLCByZXNvbHYsIGNhcCBhbmQgc3lzZnMuCiAgICAgIGRvYzogQWpkdXN0IHNwYWNlcyBhcm91bmQgc3FhcmUgYnJhY2tldHMuCiAgICAgIHBpbmcscmRpc2M6IFVzZSBtYWNybyB0byBnZXQgb2RkIGJ5dGUgd2hlbiBjaGVja3N1bW1pbmcuCiAgICAgIHBpbmc2OiBEbyBub3QgdHJ5IHRvIGZyZWUgbWVtb3J5IHBvaW50ZWQgYnkgdW5pbml0aWFsaXplZCB2YXJpYWJsZSBvbiBlcnJvciBwYXRoLgogICAgICBhcnBpbmc6IEFsbG93IGJ1aWxkaW5nIHdpdGhvdXQgZGVmYXVsdCBpbnRlcmZhY2UuCiAgICAgIGFycGluZzogTm8gZGVmYXVsdCBpbnRlcmZhY2UgYnkgZGVmYXVsdC4KICAgICAgYXJwaW5nOiBBbGxvdyBwcmludGluZyB1c2FnZSB3aXRob3V0IHBlcm1pc3Npb24gZXJyb3JzLgogICAgICBwaW5nLHBpbmc2OiBBbGxvdyBwcmludGluZyB1c2FnZSB3aXRob3V0IHBlcm1pc3Npb24gZXJyb3JzLgogICAgICBwaW5nLHBpbmc2OiBGaXggY2FwX3QgbGVha2FnZS4KICAgICAgYXJwaW5nLHBpbmcscGluZzY6IERvIG5vdCBpZGVvbG9naWNhbGx5IGNoZWNrIHJldHVybiB2YWx1ZSBmcm9tIGNhcF9mcmVlLGNhcF97c2V0LGdldH1fZmxhZygpLgogICAgICBhcnBpbmc6IEZpeCBzeXNmc19jbGFzcyBsZWFrYWdlIG9uIGVycm9yIHBhdGguCiAgICAgIGFycGluZzogU29tZSBjb21tZW50cyBmb3IgbmV3IGZ1bmN0aW9ucyBmb3IgZmluZGluZyBkZXZpY2VzIHN1cHBvcnQuCiAgICAgIGFycGluZzogVHlwbyBpbiB0eXBlIGRlY2xhcmF0aW9uLgogICAgICBtYWtlZmlsZTogVXNlIGNhbGwgZnVuY3Rpb24gZm9yIGV4dGVybmFsIGxpYnJhcmllcy4KICAgICAgbWFrZWZpbGU6IEFkZCBtb3JlIGNvbW1lbnRzLgogICAgICBhcnBpbmc6IEVuc3VyZSB0byBmYWlsIGlmIG5vIGFwcHJvcHJpYXRlIGRldmljZSBmb3VuZCB3aXRoIHN5c2ZzLgogICAgICBhcnBpbmc6IEVuZm9yY2UgdXNlciB0byBzcGVjaWZ5IGRldmljZSAoLUkpIGlmIG11bHRpcGxlIGRldmljZXMgZm91bmQuCiAgICAgIE1ha2VmaWxlOiBwYXJhbWV0ZXJpemUgb3B0aW9ucyBmb3IgbGlua2luZyBsaWJyYXJpZXMuCiAgICAgIE1ha2VmaWxlOiBVc2Ugc2hlbGwgZnVuY3Rpb24gaW5zdGVhZCBpZiBiYWNrcXVvdGVzLgogICAgICBNYWtlZmlsZTogRW5zdXJlIHRvIGhhdmUgc2FtZSBkYXRlIHdoZW4gbWFraW5nIHNuYXBzaG90LgogICAgICBzcGVjOiBNYWludGFpbmVyIGRvZXMgbm90IHVzZSBpcHNlYy5zcGVjLgogICAgICBzcGVjOiBwYXJ0aWFsbHkgc3luYyB3aXRoIGZlZG9yYS4KICAgICAgTWFrZWZpbGU6IEJ1bXAgZGF0ZSBpbiBpcHV0aWxzLnNwZWMgYXMgd2VsbC4KICAgICAgc3BlYzogQWRkIGV4bXBsZSBsaW5lcyBmb3Igc3VpZC1yb290IGluc3RhbGxhdGlvbgogICAgICBzcGVjOiBTb3J0IGNoYW5nZWxvZy4KICAgICAgcGluZzogRXhpdCBvbiBTT19CSU5EVE9ERVZJQ0UgZmFpbHVyZS4KICAgICAgcGluZzogV2FybiBpZiBrZXJuZWwgaGFzIHNlbGVjdGVkIHNvdXJjZSBhZGRyZXNzIGZyb20gb3RoZXIgaW50ZXJmYWNlLgogICAgICBwaW5nOiBDbGFyaWZ5IGRpZmZlcmVuY2UgYmV0d2VlbiAtSSBkZXZpY2UgYW5kIC1JIGFkZHIuCgoKW3MyMDEyMTEyNl0KCllPU0hJRlVKSSBIaWRlYWtpICg1KToKICAgICAgdHJhY2VwYXRoOiBSZXBhaXIgdHJhY2VwYXRoIHdpdGhvdXQgLXAgb3B0aW9uLgogICAgICB0cmFjZXBhdGgsdHJhY2VwYXRoNjogLXAgb3B0aW9uIGluIHVzYWdlLgogICAgICBwaW5nLHBpbmc2OiBVc2UgTUFYX0RVUF9DSEsgZGlyZWN0bHksIG5vdCB1c2luZyBteF9kdXBfY2hrIHZhcmlhYmxlLgogICAgICBwaW5nLHBpbmc2OiBBYnN0cmFjdCByZWNlaXZlZCBiaXRtYXAgbWFjcm9zL2RlZmluaXRpb25zLgogICAgICBwaW5nLHBpbmc2OiBVc2UgX191NjQgb3IgX191MzIgZm9yIGJpdG1hcC4KCgpbczIwMTIxMTI1XQoKWU9TSElGVUpJIEhpZGVha2kgKDMwKToKICAgICAgcGluZzY6IFVzZSBJTjZfSVNfQUREUl9VTlNQRUNJRklFRCgpIGluc3RlYWQgb2Ygb3VyIG93biBoZWxwZXIgZnVuY3Rpb24uCiAgICAgIHBpbmc2IGRvYzogRXhwbGljaXRseSBkZXNjcmliZSBwaW5nNiBpcyBJUHY2IHZlcnNpb24gaWYgcGluZy4KICAgICAgcGluZzY6IERlcHJlY2F0ZSBzb3VyY2Ugcm91dGluZyBieSBkZWZhdWx0IChSRkM1MDk1KS4KICAgICAgcGluZzY6IFVzZSBSRkMzNTQyIGZ1bmN0aW9ucyBhbmQgZGVmaW5pdGlvbiBmb3Igc291cmNlIHJvdXRpbmcuCiAgICAgIHBpbmc2OiBJbnRyb2R1Y2UgbmlxdWVyeV9pc19lbmFibGVkKCkgZm9yIHJlYWRhYmlsaXR5LgogICAgICBhcnBpbmcgZG9jOiBpbnRlcmZhY2UgaXMgb3B0aW9uYWwgKC1JIG9wdGlvbikuCiAgICAgIHBpbmc6IEVsaW1pbmF0ZSBkaXJ0eSBoYWNrIHRvIGNvcGUgd2l0aCBhbmNpZW50IGVnY3MgYnVnLgogICAgICBNYWtlZmlsZTogRml4IG1pc3NpbmcgcmlnaHQgcGFyZW50aGVzIGluIGNvbW1lbnQuCiAgICAgIGFycGluZzogRml4IGJ1aWxkIGZhaWx1cmUgd2l0aCBVU0VfU1lTRlM9eWVzIGFuZC9vciBXSVRIT1VUX0lGQUREUlM9eWVzCiAgICAgIGFycGluZzogVW5pZnkgc291cmNlIGZpbGVzLgogICAgICBhcnBpbmc6IFJlb3JkZXIgZnVuY3Rpb25zIGFuZCBjb21tZW50IG91dCB1bnN1ZWQgY29kZS4KICAgICAgYXJwaW5nLHBpbmcscGluZzYsdHJhY2VwYXRoLHRyYWNlcm91dGU2IE1ha2VmaWxlOiBTdXBwb3J0IHN0YXRpYyBsaW5rIG9mIGxpYmlkbiBieSBVU0VfSUROPXN0YXRpYy4KICAgICAgTWFrZWZpbGU6IE1pbmltaXplIHN0YXRpY2FsbHkgbGlua2VkIGxpYnJhcmllcy4KICAgICAgcGluZzY6IERvIG5vdCBjbGVhciBzZXEgY2hlY2sgYXJyYXkgdHdpY2UgZm9yIE5JLgogICAgICBwaW5nNjogVXNlIE1ENV9ESUdFU1RfTEVOR1RIIGluc3RlYWQgb2YgbWFnaWMgdmFsdWUgMTYuCiAgICAgIHBpbmc2OiBJbnRyb2R1Y2UgaGVscGVyIGZ1bmN0aW9ucyBmb3Igbm9uY2UgaW4gTkkuCiAgICAgIHBpbmc2OiBJbnRyb2R1Y2UgTklfTk9OQ0VfU0laRSBtYWNybyBpbnN0ZWFkIG9mIG1hZ2ljIHZhbHVlIDguCiAgICAgIHBpbmc2OiBFbnN1cmUgdG8gY2FsbCBzcmFuZCgpIHRvIGdldCBzb21lIHJhbmRvbW5lc3MgaW4gTkkgTm9uY2UuCiAgICAgIHBpbmc2OiBHZW5lcmF0ZSBkaWZmZXJlbnQgTkkgTm9uY2UgaW4gZWFjaCBOSSBRdWVyeSAoTWVtb3J5IHZlcnNpb24pLgogICAgICBwaW5nNjogR2VuZXJhdGUgZGlmZmVyZW50IE5JIE5vbmNlIGluIGVhY2ggTkkgUXVlcnkgKE1ENSB2ZXJzaW9uKS4KICAgICAgcGluZzY6IENhY2hlIE5JIE5vbmNlLgogICAgICBwaW5nNjogUHJpbnQgJ3NlcXVlbmNlIG51bWJlcicgZW1iZWRkZWQgaW4gTkkgTm9uY2UuCiAgICAgIG5pbmZvZDogRG8gbm95IHRyeSB0byBtZW1jcHkgdG8gc2VsZi4KICAgICAgbmluZm9kIE1ha2VmaWxlOiBNb3JlIHByZWNpc2UgZGVwZW5kZW5jaWVzLgogICAgICBuaW5mb2Q6IERpc2NhcmQgbXVsdGljYXQgcGFja2V0IG91dHNpZGUgbGlua2xvY2FsIHNjb3BlLgogICAgICBuaW5mb2Q6IEFwcGx5IGRlZmF1bHQgcG9saWN5IHRvIHJlZnVzZSBxdWVyaWVzIGZyb20gZ2xvYmFsIGFkZHJlc3Nlcy4KICAgICAgbmluZm9kOiBOb3JtYWxpemUgdGltZXNwZWMgZm9yIGRlbGF5LgogICAgICBuaW5mb2Q6IEZpeCBkb3VibGUtZnJlZSB3aXRob3V0IHB0aHJlYWRzLgogICAgICBuaW5mb2Q6IERvIG5vdCBtaXggb3V0cHV0IGZyb20gbXVsdGlwbGUgdGhyZWFkcy4KICAgICAgbmluZm9kOiBFbXBsb3kgaW50ZXJuYWwgYnVmZmVyIGluIHN0ZGVycmxvZygpIGZvciBjb21tb24gY2FzZS4KCgpbczIwMTIxMTIxXQoKSmFuIFN5bmFjZWsgKDIpOgogICAgICBwaW5nLHBpbmc2OiBBZGQgbmV3bGluZSB0byBlcnJvciBtZXNzYWdlLgogICAgICBwaW5nOiBEb24ndCBmcmVlIGFuIHVuaW50aWFsaXplZCB2YWx1ZS4KCllPU0hJRlVKSSBIaWRlYWtpICgzMSk6CiAgICAgIGFycGluZyxjbG9ja2RpZmYscGluZyxyYXJwZCxyZGlzYyx0cmFjZXJvdXRlNiBkb2M6IHMvQ0FQX05FVF9SQVdJTy9DQVBfTkVUX1JBVy8uCiAgICAgIHBpbmcscGluZzY6IERvIG5vdCBhc3N1bWUgcmFkaXggcG9pbnQgaXMgZGVub3RlZCBieSAnLicgKC1pIG9wdGlvbikuCiAgICAgIGFycGluZyxwaW5nLHBpbmc2LHJkaXNjLHRyYWNlcm91dGU2OiBGaXggdmVyc2lvbiBzdHJpbmcuCiAgICAgIG1ha2VmaWxlOiBHaXZlIC1mbm8tc3RyaWN0LWFsaWFzaW5nIHRvIGNvbXBpbGVyIGJ5IGRlZmF1bHQuCiAgICAgIHBpbmc2OiBVc2UgU0NPUEVfREVMSU1JVEVSLgogICAgICBNYWtlZmlsZTogUmVtb3ZlIC1sbSBmcm9tIEFERExJQi4KICAgICAgcmRpc2Nfc3J2LE1ha2VmaWxlOiBGaXggYnVpbGQuCiAgICAgIHJkaXNjX3NydixNYWtlZmlsZTogQnVpbGQgcmRpc2Nfc3J2IHdpdGggbWFrZSBhbGwuCiAgICAgIGFycGluZzogc2V0X2RldmljZV9icm9hZGNhc3QoKSBkb2VzIG5vdCBuZWVkIHRvIHN0b3JlIHJldHVybiB2YWx1ZSBvZiBzdWItZnVuY3Rpb25zLgogICAgICBhcnBpbmcsTWFrZWZpbGU6IE1ha2UgZGVmYXVsdCBpbnRlcmZhY2UgY29uZmlndXJhYmxlLgogICAgICBhcnBpbmc6IERvIG5vdCBhbGxvdyBlbXB0eSBkZXZpY2UgbmFtZSAoLUkgb3B0aW9uKS4KICAgICAgYXJwaW5nOiBJbnRyb2R1Y2UgY2hlY2tfaWZmbGFncygpIGhlbHBlciBmdW5jdGlvbi4KICAgICAgYXJwaW5nOiBJbnRyb2R1Y2UgZGV2aWNlIHN0cnVjdHVyZSB0byBob2xkIG91dHB1dCBkZXZpY2UgaW5mb3JtYXRpb24uCiAgICAgIGFycGluZzogQUxsb3cgbm8gZGVmYXVsdCBpbnRlcmZhY2UgYW5kIHNlbGVjdCBvbmUgYnkgZ2V0aWZhZGRycygpLgogICAgICBhcnBpbmc6IEludHJvZHVjZSAybmQgKGxlZ2FjeSkgbWV0aG9kIHRvIHNlbGVjdCBpbnRlcmZhY2UgYnkgaW9jdGxzLgogICAgICBhcnBpbmcsTWFrZWZpbGU6IEFsbG93IGJ1aWxkIHdpdGhvdXQgZ2V0aWZhZGRycygpIHdpdGggV0lUSE9VVF9JRkFERFJTPXllcy4KICAgICAgTWFrZWZpbGU6IFVzZSAkPCBpbnN0ZWFkIG9mICReIHRvIGNvbXBsaWxlIEMgc291cmNlIGNvZGUuCiAgICAgIHBpbmcscGluZzY6IFJlb3JkZXIgY29tbWFuZC1saW5lIG9wdGlvbnMgaW4gYWxwaGFiZXRpY2FsIG9yZGVyLgogICAgICBwaW5nNjogU2hvdyBzdWJvcHRpb25zIGZvciBOb2RlIEluZm9ybWF0aW9uIFF1ZXJpZXMgaWYgLU4gc3Vib3B0aW9uIGlzIGludmFsaWQuCiAgICAgIHBpbmcscGluZzYgZG9jOiBSZWFkYWJpbGl0eSBmb3IgVE9TICgtUSkgb3B0aW9uLgogICAgICByZGlzYzogTWlzc2luZyBuZXcgbGluZSBhZnRlciB1c2FnZS4KICAgICAgcmRpc2M6IE1ha2UgcmRpc2Mgd2l0aCByZXNwb25kZXIgc3VwcG9ydCBpZiBjb25maWd1cmVkLgogICAgICBNYWtlZmlsZTogZGlzdGNsZWFuIGRlcGVuZHMgb24gY2xlYW4uCiAgICAgIE1ha2VmaWxlOiBEZWZhdWx0IHRvIC1PMy4KICAgICAgTWFrZWZpbGU6IE1pbmltaXplIG9wdGlvbnMgdG8gZ2NjLgogICAgICBNYWtlZmlsZTogQWRkIHJ1bGUgdG8gYnVpbGQgYXNzZW1ibHkgZmlsZXMuCiAgICAgIGFycGluZyxNYWtlZmlsZTogM3JkIGxlZ2FjeSBpbXBsZW1lbnRhdGlvbiB0byBjaGVjayBuZXR3b3JrIGRldmljZXMuCiAgICAgIGFycGluZzogTGVzcyBpZmRlZnMuCiAgICAgIHJkaXNjIGRvYzogRG9jdW1lbnQgLXIsIC1wIGFuZCAtVCBvcHRpb25zLgogICAgICBwaW5nNjogTkkgU3ViamVjZXQgYWRkcmVzcyBkaWQgbm90IHdvcmsgKC1OIHN1YmplY3Qte2lwdjYsaXB2NF0gc3Vib3B0aW9ucykuCiAgICAgIHBpbmc2OiBFbnN1cmUgdG8gZGV0ZWN0IHN1YmplY3QgdHlwZSBjb25mbGljdHMuCgoKW3MyMDEyMTExNF0KCkphbiBTeW5hY2VrICgyKToKICAgICAgY2xvY2tkaWZmOiByZW1vdmUgdW51c2VkIHZhcmlhYmxlCiAgICAgIHBpbmc6IFdyYXAgU09fQklORFRPREVWSUNFIHdpdGggdGhlIGNvcnJlY3QgY2FwYWJpbGl0eS4KCllPU0hJRlVKSSBIaWRlYWtpICgxMyk6CiAgICAgIHBpbmc6IElQX01VTFRJQ0FTVF9JRiBkb2VzIG5vdCBuZWVkIENBUF9ORVRfUkFXLgogICAgICBwaW5nNjogQ2hlY2sgcmFuZ2VzIG9mIGZsb3dsYWJlbCAoLUYgb3B0aW9uKSBhbmQgdGNsYXNzICgtUSBvcHRpb24pIGFyZ3VtZW50cy4KICAgICAgcGluZzY6IEFjY2VwdCAweC1ub3RhdGlvbiBmb3IgZmxvd2xhYmVsICgtRiBvcHRpb24pIGFuZCB0Y2xhc3MgKC1RIG9wdGlvbikgYXJndW1lbnRzLgogICAgICBwaW5nLHBpbmc2OiBNYW51YWwgdXBkYXRlIHJlZ2FyZGluZyAtRiwgLVEgYW5kIC1OIG9wdGlvbi4KICAgICAgYXJwaW5nLHBpbmcscGluZzY6IERlZmVyIGV4aXR0aW5nIHRvIGFsbG93IHVzZXJzIHRvIHNlZSB1c2FnZS4KICAgICAgYXJwaW5nLHBpbmcscGluZzYsbmluZm9kOiBDaGFuZ2UgZXVpZCB0byB1aWQgKG5vbi1yb290KSBldmVuIGlmIGNhcGFiaWxpeSBpcyBlbmFibGVkLgogICAgICBuaW5mb2Q6IEFkZCBjb25maWd1cmUuCiAgICAgIG5pbmZvZDogbGliY2FwIHN1cHBvcnQgdG8gZHJvcCBjYXBhYmlsaXRpZXMuCiAgICAgIG5pbmZvZDogQWRkIHJ1biBhcyB1c2VyICgtdSB1c2VyKSBvcHRpb24uCiAgICAgIG5pbmZvZDogRml4IHVzYWdlIG1lc3NhZ2UuCiAgICAgIGFycGluZyxjbG9ja2RpZmYscmFycGQscmRpc2MsdGZ0cGQ6IENoYW5nZSBSRkMgc291cmNlIHRvIHRvb2xzLmlldGYub3JnLgogICAgICBuaW5mb2Q6IEFkZCBuaW5mb2QoOCkgbWFucGFnZS4KICAgICAgbWFrZWZpbGU6IEFkZCBuaW5mb2QsIGRpc3RjbGVhbiB0YXJnZXRzLgoKCltzMjAxMjExMTJdCgpTZXJnZXkgRmlvbm92ICgxKToKICAgICAgcGluZyxwaW5nNjogRmFsbGJhY2sgdG8gbnVtZXJpYyBhZGRyZXNzZXMgd2hpbGUgZXhpdGluZwoKWU9TSElGVUpJIEhpZGVha2kgKDE4KToKICAgICAgcGluZyxwaW5nNjogUmV3b3JrIGNhcGFiaWxpdHkgc3VwcG9ydCBhbmQgTWFrZSBzdXJlIC1tIGFuZCAtSSBvcHRpb25zIHdvcmsuCiAgICAgIHBpbmcsdHJhY2VwYXRoOiBTcGVsbGluZyBmaXhlcyBpbiBtYW5wYWdlcy4KICAgICAgcGluZyxwaW5nNjogRml4IGludGVnZXIgb3ZlcmZsb3cgd2l0aCBsYXJnZSBpbnRlcnZhbCB2YWx1ZSAoLWkgb3B0aW9uKS4KICAgICAgY2xvY2tkaWZmOiBNYWtlIGl0IHdvcmsgd2l0aCBsYXJnZSBwaWQuCiAgICAgIHBpbmcscGluZzY6IE1ha2UgaW5fcHJfYWRkciB2b2xhdGlsZS4KICAgICAgYXJwaW5nOiBEbyBub3QgcXVpdCB0b28gZWFybHkgd2l0aCBsYXJnZSBkZWFkbGluZSB2YWx1ZSAoLXcgb3B0aW9uKS4KICAgICAgYXJwaW5nOiBNYWludGFpbiBtaW5pbXVtIGNhcGFiaWxpdGllcyBmb3IgU09fQklORFRPREVWSUNFKC1JIG9wdGlvbikuCiAgICAgIHBpbmc6IEZpeCByZWNvcmRlZCByb3V0ZSBjb21wYXJpc29uLgogICAgICBhcnBpbmc6IFVzZSBnZXRpZmFkZHJzKCkgdG8gZ2V0IGJyb2FkY2FzdCBhZGRyZXNzLgogICAgICBwaW5nNjogRml4IHR5cG8gaW4gZXJyb3IgbWVzc2FnZS4KICAgICAgcGluZzY6IEdlbmVyYXRlIE5JIEdyb3VwIEFkZHJlc3MgYW5kIFN1YmplY3QgTmFtZSBhdCBvbmNlLgogICAgICBwaW5nLHBpbmc2OiBVbm1hc2sgc2lnbmFscyBvbiBzdGFydC11cC4KICAgICAgYXJwaW5nOiBCdWlsZCB3aXRoIFVTRV9DQVA9bm8uCiAgICAgIGFycGluZyxwaW5nLHBpbmc2LHRyYWNlcGF0aCx0cmFjZXBhdGg2LHRyYWNlcm91dGU2OiBFeHBlcmltZW50YWwgSUROIHN1cHBvcnQuCiAgICAgIHBpbmc2OiBJRE4gc3VwcG9ydCBmb3IgdGhlIFN1YmplY3QgTmFtZSBpbiBOSSBRdWVyeS4KICAgICAgdHJhY2VwYXRoLHRyYWNlcGF0aDY6IEludHJvZHVjZSAtcCBvcHRpb24gZm9yIHBvcnQuCiAgICAgIHBpbmc2OiBBZGQgbWlzc2luZyBkZWZpbml0aW9ucy9kZWNsYXJhdGlvbnMgZm9yIGZsb3dsYWJlbCBtYW5hZ2VtZW50ICgtRiBvcHRpb24pLgogICAgICBtYWtlZmlsZTogRG8gbm90IGluY2x1ZGUgbWVyZ2UgY29tbWl0cyBpbiBSRUxOT1RFUy4KCgpbczIwMTIxMTA2XQoKWU9TSElGVUpJIEhpZGVha2kgKDUpOgogICAgICBuaW5mb2Q6IEF0dGF0Y2ggY29uZmlndXJlIGFuZCByZW5ldyBjb25maWcuaC5pbi4KICAgICAgbWFrZWZpbGU6IGNsZWFuLXVwCiAgICAgIHRyYWNlcGF0aDY6IFByaW50IHJlYXNvbiBvbiBnZXRhZHJpbmZvKCkgZmFpbHVyZS4KICAgICAgcGluZyxwaW5nNjogRml4IGhhbmcgd2l0aCAtZiBvcHRpb24uCiAgICAgIHBpbmc6IE1ha2Ugc3VyZSB0byBwcmludCBDIGlmIGNoZWNrc3VtIGZhaWxlZCB3aXRoIC1mIG9wdGlvbi4KCgpbczIwMTIxMDExXQoKSmFuIFN5bmFjZWsgKDIpOgogICAgICBwaW5nLHBpbmc2OiBEZWZlciB0aGUgZHJvcHBpbmcgaWYgdGhlICItbSIgaXMgc3BlY2lmaWVkIGFuZCBjb3JyZWN0IGNhcGFiaWxpdHkgaXMgc2V0LgogICAgICBwaW5nOiBGaXggdHlwbyBpbiBlY2hvIHJlcGx5CgpPbGUgQmpvcm4gSGVzc2VuICgxKToKICAgICAgcGluZzogcmVwb3J0IG91dHN0YW5kaW5nIHBhY2tldHMgYmVmb3JlIHNlbmRpbmcgbmV4dCBwYWNrZXQKCllPU0hJRlVKSSBIaWRlYWtpICgzMik6CiAgICAgIHBpbmcscGluZzY6IEFkZCAtRCB0byBzeW5vcHNpcy4KICAgICAgcGluZzogTW9yZSBpY21wIGNvZGUgZGVzY3JpcHRpb25zLgogICAgICBwaW5nLHBpbmc2OiBIaWRlIGlwZy9ld21hIGluZm8gd2l0aG91dCBwYWNrZXRzIHJlY2VpdmVkLgogICAgICBwaW5nNjogUmVtb3ZlIHVudXNlZCB2YXJpYWJsZS4KICAgICAgcGluZzY6IEhlbHAgZm9yIC1OIHN1Ym9wdGlvbnMuCiAgICAgIHRyYWNlcGF0aCx0cmFjZXBhdGg2OiBVc2UgYXJndW1lbnQgdHlwZSBvZiBpbnQgZm9yIGZpZWxkIHdpZHRoIHNwZWNpZmllci4KICAgICAgY2xvY2tkaWZmOiBDYWxsIG5pY2UoKSBiZWZvcmUgY2hhbmdpbmcgZWZmZWN0aXZlIHVpZC4KICAgICAgcmRpc2M6IFVzZSBmcHV0cygpIGluc3RlYWQgb2YgZnByaW50ZigpIHRvIHNodXQgdXAgZ2NjIHdhcm5pbmcuCiAgICAgIHJhcnBkOiBDaGVjayByZXR1cm4gdmFsdWUgb2YgY2hkaXIoKS4KICAgICAgbWFrZWZpbGU6IEludHJvZHVjZSBuZXcgdmFyaWFibGUgZm9yIGNhcGFiaWxpdHkgc3VwcG9ydC4KICAgICAgcGluZyxwaW5nNjogQ2hlY2sgcmV0dXJuIHZhbHVlIG9mIHdyaXRlKDIpIGZvciBzdGRvdXQuCiAgICAgIHBpbmc2LHRyYWNlcGF0aCx0cmFjZXBhdGg2OiBEbyBub3QgZGVyZWZlcmVuY2UgdHlwZS1wdW5uZWQgcG9pbnRlciBkaXJlY3RseS4KICAgICAgTWFrZWZpbGU6IGhvc3QgY2hhbmdlZCBmcm9tIHRha29zIHRvIHBsZWlhZGVzLgogICAgICBwaW5nNjogUHJvdmlkZSBlbm91Z2ggYnVmZmVyIGZvciBkbl9jb21wKCkgYW5kIG1ha2UgTkkgUXVlcnkgd2l0aCBOYW1lIHN1YmplY3Qgd29yay4KICAgICAgcGluZzY6IENvbnNvbGlkYXRlIGVycm9yIHBhdGggb2YgbmlxdWVyeV9vcHRpb25fc3ViamVjdF9uYW1lX2hhbmRsZXIoKS4KICAgICAgbmluZm9kOiBOb2RlIEluZm9ybWF0aW9uIFF1ZXJ5IChSRkM0NjIwKSBkYWVtb24gZnJvbSBVU0FHSSBQcm9qZWN0LgogICAgICBuaW5mb2Q6IHN0cnVjdCBpbjZfcGt0aW5mbyByZXF1aXJlcyAtRF9HTlVfU09VUkNFLgogICAgICBuaW5mb2Q6IFVzZSAlenUgZm9ybWF0IHN0cmluZyBmb3Igc2l6ZV90IHZhcmlhYmxlLgogICAgICBuaW5mb2Q6IEFkZCBtaXNzaW5nIGVudHJ5IGZvciBFTkFCTEVfU1VQVFlQRVMgaW4gY29uZmlnLmguaW4uCiAgICAgIG5pbmZvZDogU3VwcG9ydCBuZXdlciBlbnZpcm9ubWVudCBzdXBwb3J0aW5nIFJGQzM1NDIuCiAgICAgIG5pbmZvZDogRml4IGZvcm1hdCBzdHJpbmcgZm9yIHN0cmluZyByZXR1cm5lZCBmcm9tIHN0cmVycm9yKDMpLgogICAgICBuaW5mb2Q6IENoZWNrIHJldHVybiB2YWx1ZSBvZiBmc2NhbmYoMykuCiAgICAgIG5pbmZvZDogRml4IG9mZi1ieS1vbmUgZXJyb3IgdG8gY2hlY2sgcG9zc2libGUgcHJvZ3JhbW1pbmcgZXJyb3IuCiAgICAgIG5pbmZvZDogQWRkIGRhdGFyb290ZGlyLgogICAgICBuaW5mb2Q6IFVzZSBfX2Z1bmNfXyBpbnN0ZWFkIG9mIF9fRlVOQ1RJT05fXy4KICAgICAgbmluZm9kOiBJbnRyb2R1Y2UgQVJSQVlfU0laRSBtYWNybyBmb3IgY291bnRpbmcgbnVtYmVyIG9mIGVsZW1lbnRzIGluIGFuIGFycmF5LgogICAgICBuaW5mb2Q6IERlbGV0ZSBuaW5mb2Quc2ggYnkgbWFrZSBkaXN0Y2xlYW4sIG5vdCBieSBtYWtlIGNsZWFuLgogICAgICBwaW5nNjogRG8gbm90IHRyeSB0byB1c2UgcmVzdWx0IGJ1ZmZlciB3aGVuIGRuX2NvbXAoMykgZmFpbGVkLgogICAgICBwaW5nLHBpbmc2OiBpZmRlZiBndWFyZCBmb3IgaW5saW5lIGZ1bmN0aW9uIGZvciBjYXBhYmlsaXR5IHN1cHBvcnQgYW5kIGZpeCBidWlsZCB3aXRoIFVTRV9DQVA9bm8uCiAgICAgIG1ha2VmaWxlOiBEbyBub3QgdXNlICItbGxpYiIgZGVwZW5kZW5jeS4KICAgICAgYXJwaW5nOiBidWlsZCB3aXRob3V0IHN5c2ZzIHN1cHBvcnQgKFVTRV9TWVNGUz1ubykuCgrDgW5nZWwgR29uesOhbGV6ICgxKToKICAgICAgaXB1dGlsczogQWRkIGNhcGFiaWxpdHkgZHJvcHBpbmcKCgpbczIwMTAxMDA2XQoKQ2hyaXMgQ2FwdXRvICgxKToKICAgICAgcGluZyxwaW5nNjogYXZvaWQgZ2V0aG9zdGJ5YWRkciBkdXJpbmcgcGluZyBmbG9vZC4KClBhdWwgTWFydGluICgxKToKICAgICAgYXJwaW5nOiBTZXQgY29ycmVjdCBicm9hZGNhc3QgYWRkcmVzcy4KCllPU0hJRlVKSSBIaWRlYWtpICg0KToKICAgICAgdHJhY2VwYXRoOiBGaXggc29tZSBzbWFsbCB0eXBvcyBpbiB0cmFjZXBhdGguc2dtbC4KICAgICAgcGluZzogRml4IHJlc291cmNlIGNvbnN1bXB0aW9uIHRyaWdnZXJlZCBieSBzcGVjaWFsbHkgY3JhZnRlZCBJQ01QIEVjaG8gUmVwbHkgKENWRS0yMDEwLTI1MjkpCiAgICAgIE1ha2VmaWxlOiBtaWdyYXRlIG1haW4gbWFjaGluZSBmcm9tIGJlYXRyaWNlIHRvIHRha29zLgogICAgICBNYWtlZmlsZTogVXNlIG5ld2VyIGdpdCBzdWJjb21tYW5kIHN0eWxlIGluc3RlYWQgb2YgZ2l0LXN1YmNvbW1hbmQuCgoKW3MyMDEwMDQxOF0KCllPU0hJRlVKSSBIaWRlYWtpICgyOCk6CiAgICAgIHBpbmc2OiBVc2UgSVBWNl9UQ0xBU1MgdG8gc2V0IG91dGdvaW5nIHRyYWZmaWMgY2xhc3MgaWYgYXZhaWxhYmxlLgogICAgICBwaW5nOiBNYWtlIGJ1aWxkX2VjaG8oKSwgZ2F0aGVyX3N0YXRpc3RpY3MoKSBtb3JlIGdlbmVyaWMuCiAgICAgIHBpbmc2OiBFeHBlcmltZW50YWwgc3VwcG9ydCBmb3IgTm9kZSBJbmZvcm1hdGlvbiBRdWVyaWVzIChSRkM0NjIwKS4KICAgICAgcGluZzogc2ltcGxpZnkgdXNhZ2UgaGludC4KICAgICAgcGluZzogUmVuYW1lIGNvbnN0YW50IG5hbWVzCiAgICAgIEV4dGVuZCAtTiBvcHRpb24gZm9yIE5JIFF1ZXJ5IG9wdGlvbnMuCiAgICAgIHBpbmc2OiBNYWtlIGxlbmd0aC1jaGVjayBxdHlwZS1zcGVjaWZpYy4KICAgICAgcGluZzY6IFJlbW92ZSB0b28gbWFueSBzcGFjZXMgYmV0d2VlbiBuYW1lcy4KICAgICAgcGluZzY6IHBpbmc2X25pcXVlcnkuaCBuZWVkcyBhc20vYnl0ZW9yZGVyLmguCiAgICAgIHBpbmc2OiBTdXBwb3J0IFF0eXBlcyBmb3IgSVB2Ni9JUHY0IEFkZHJlc3Nlcy4KICAgICAgcGluZzY6IFNwbGl0IHByX25pcXVlcnlfcmVwbHkoKS4KICAgICAgcGluZzY6IEhhbmRsZSBJQ01QdjYgY29kZSBpbiBOSSBSZXBseS4KICAgICAgcGluZzY6IEFkZCBzdWJqZWN0LWlwdjYgYW5kIHN1YmplY3QtaXB2NCBOSSBzdWItb3B0aW9uIGZvciBzdWJqZWN0IGFkZHJlc3MuCiAgICAgIHBpbmc2OiBTdXBwb3J0IHN1YmplY3QgbmFtZS4KICAgICAgcGluZzY6IEZyZWUgb2xkIG1lbW9yeSB3aGVuIHJlYXNzaWduIHBvaW50ZXJzLgogICAgICBwaW5nNjogQWx3YXlzIGVuYWJsZSBJUHY2IE5vZGUgSW5mb3JtYXRpb24gUXVlcmllcy4KICAgICAgbWFrZWZpbGU6IERvIG5vdCBhbHdheXMgbGluayBsaWJyZXNvbHYgYW5kIGxpYmNyeXB0by4KICAgICAgcGluZyx0cmFjZXJvdXRlNixjbG9ja2RpZmY6IEVubGFyZ2UgaG9zdG5hbWUgYnVmZmVyLgogICAgICBwaW5nNjogZG8gbm90IGFsbG93IHRvbyBsYXJnZSBwYWNrZXQgc2l6ZSBieSAtcyBvcHRpb24uCiAgICAgIHBpbmc6IG5lZWRsZXNzIHNwYWNlIHdoZW4gcHJpbnRpbmcgdXNhZ2UuCiAgICAgIHJkaXNjOiBGaXggdHlwbyBpbiBlcnJvciBtZXNzYWdlLgogICAgICByZGlzYzogQWxsb3cgbXVsdGlwbGUgYWRkcmVzc2VzIG9uIG9uZSBpbnRlcmZhY2UuCiAgICAgIGFycGluZzogU3VwcG9ydCBsaW5rLWxheWVyIHR5cGUgd2l0aCBsYXJnZXIgbGluay1sYXllciBhZGRyZXNzLgogICAgICB0cmFjZXBhdGg2OiByZXNvbHZlIHRhcmdldCBldmVuIGlmIC1uIG9wdGlvbiBpcyBzdXBwbGllZC4KICAgICAgdHJhY2VwYXRoLHRyYWNlcGF0aDY6IHN5bmMgdHJhY2VwYXRoIGFuZCB0cmFjZXBhdGg2LgogICAgICB0cmFjZXBhdGg2OiBNYWtlIGl0IG1vcmUgcHJvdG9jb2wgaW5kZXBlbmRlbnQuCgoKW3MyMDEwMDIxNF0KCkphbWFsIEhhZGkgU2FsaW0gKDIpOgogICAgICBwaW5nOiBwaW5nIGJ5IG1hcmsKICAgICAgcGluZzogcGluZyBieSBtYXJrIGRvYyB1cGRhdGUKCkphbWllIExlIFR1YWwgKDEpOgogICAgICBwaW5nOiBzZXQgdW4uZWNoby5pZCB0byBuZXR3b3JrIGJ5dGUgb3JkZXIKCllPU0hJRlVKSSBIaWRlYWtpICgxMSk6CiAgICAgIFtQSU5HNixUUkFDRVJPVVRFNl06IElnbm9yZSBlcnJvciBpbiBzZXR0aW5nIElQVjZfQ0hFQ0tTVU0gc29ja2V0IG9wdGlvbiBmb3IgSUNNUHY2IHNvY2tldC4KICAgICAgW1BJTkc2XTogVXNlIGlmX25hbWV0b2luZGV4KCkgdG8gY29udmVydCBpZm5hbWUgdG8gaWZpbmRleC4KICAgICAgW1BJTkc2XTogQWxsb3cgdG8gc3BlY2lmeSBzb3VyY2UgYWRkcmVzcyB3aXRoIGludGVyZmFjZSBpbiBhIHNpbmdsZSAtSSBvcHRpb24uCiAgICAgIHBpbmc2OiBUcnkgdXNpbmcgSVBWNl9QS1RJTkZPIHN0aWNreSBvcHRpb24gdG8gc3BlY2lmeSBvdXRnb2luZyBpbnRlcmZhY2UuCiAgICAgIHJkaXNjOiBVc2UgRk9QRU5fTUFYIGlmIE9QRU5fTUFYIGlzIHVuZGVmaW5lZC4KICAgICAgcGluZzY6IEZpeCBzb3VyY2Ugcm91dGluZyB3aXRoIHNvdXJjZSBpbnRlcmZhY2Ugc2V0LgogICAgICBwaW5nLHBpbmc2OiBEb24ndCBwcmludCBleHRyYSAnLCAnIGluIGZpbmlzaCgpLgogICAgICB0cmFjZXBhdGg6IEZpeCBkb2N1bWVudGF0aW9uIHR5cG8uCiAgICAgIFVzZSBzeXNjb25mKF9TQ19PUEVOX01BWCkgaW5zdGVhZCBvZiBPUEVOX01BWC4KICAgICAgcGluZyxwaW5nNjogQWRkIC1EIG9wdGlvbiB0byBwcmludCB0aW1lc3RhbXAuCgoKW3MyMDA3MTEyN10KCkpvaG4gSGVmZm5lciAoNik6CiAgICAgIFtpcHV0aWxzXSB0cmFjZXBhdGg6IEFkZCBsZW5ndGggZmxhZyB0byBzZXQgaW5pdGlhbCBNVFUuCiAgICAgIFtpcHV0aWxzXSB0cmFjZXBhdGg6IEFkZCBkb2N1bWVudGF0aW9uIGZvciB0aGUgLWwgZmxhZy4KICAgICAgW2lwdXRpbHNdIHRyYWNlcGF0aDogVXNlIFBNVFVESVNDX1BST0JFIG1vZGUgaWYgaXQgZXhpc3RzLgogICAgICBbaXB1dGlsc10gdHJhY2VwYXRoOiBEb2N1bWVudCAtbiBmbGFnLgogICAgICBbaXB1dGlsc10gdHJhY2VwYXRoOiBGaXggYXN5bW0gbWVzc2FnZXMuCiAgICAgIFtpcHV0aWxzXSB0cmFjZXBhdGg6IFJlLXByb2JlIGF0IHNhbWUgVFRMIGFmdGVyIE1UVSByZWR1Y3Rpb24uCgpZT1NISUZVSkkgSGlkZWFraSAoOCk6CiAgICAgIFtET0NdOiBEZWxldGUgZHVwbGljYXRlZCBsaW5lcyBpbiBSRUxOT1RFUy4KICAgICAgRml4IHdoaXRlIHNwYWNlIGVycm9ycy4KICAgICAgW0NMT0NLRElGRixQSU5HLFJESVNDLFRSQUNFUk9VVEU2XTogU3VwcG9ydCB1Q2xpYmMuCiAgICAgIFtSQVJQRF06IEZpeGVkIHNldmVyYWwgc2lnbmVkbmVzcyBpc3N1ZXMgZm9yIGNoYXIgc3RyaW5ncy4KICAgICAgW1BJTkddOiBVc2UgaW5ldF9wdG9uKCkgaW5zdGVhZCBvZiBzc2NhbigpLgogICAgICBbUElORzZdOiBVc2UgSU42X0lTX0FERFJfeHh4KCkgbWFjcm8uCiAgICAgIFtNQUtFRklMRV06IENoYW5nZSBhdXRob3JpemVkIGhvc3QgdG8gcHVzaCBzbmFwc2hvdHMuCiAgICAgIFtNQUtFRklMRV06IFVzZSBnaXQtYXJjaGl2ZSBpbnN0ZWFkIG9mIGdpdC10YXItdHJlZS4KCgpbczIwMDcwMjAyXQoKTWlrZSBGcnlzaW5nZXIgKDIpOgogICAgICBVc2Ugc29ja2xlbl90IGluIGFsbCB0aGUgcmlnaHQgcGxhY2VzLgogICAgICBbSVBHXTogaGFuZGxlIHBrdGdlbiBzZXR1cCBpbiBuZXdlciBrZXJuZWxzLgoKTWl0c3VydSBDaGluZW4gKDIpOgogICAgICBbQ0xPQ0tESUZGXTogRml4IGNvbXBpbGF0aW9uIGVycm9ycyBhYm91dCBsYWJlbHMgYXQgZW5kIG9mIGNvbXBvdW5kIHN0YXRlbWVudHMuCiAgICAgIFtQSU5HNl06IFVzZSBnZXRhZGRyaW5mbygpIGZvciB0aGUgbmFtZSByZXNvbHV0aW9uIG9mIGludGVybWVkaWF0ZSBub2Rlcy4KCllPU0hJRlVKSSBIaWRlYWtpICg5KToKICAgICAgW01BS0VGSUxFXSBSZW1vdmUgdW51c2VkIC1JLi4vaW5jbHVkZQogICAgICBbVFJBQ0VQQVRIXSBQcmludCB1c2FnZSBpZiB3ZSBtZXQgaW5jb3JyZWN0IG9wdGlvbi4KICAgICAgW1BJTkc2XTogRml4IGNvbXBpbGF0aW9uIGVycm9yIHdpdGggZ2xpYmMtMi40IGFuZCBsYXRlci4KICAgICAgW1BJTkc2XTogVXNlIGdldGFkZHJpbmZvKCkgdG8gYWxsb3cgc2NvcGVkIGFkZHJlc3NlcwogICAgICBbUElORzZdOiBFbnN1cmUgbm90IHRvIHJldmVyc2UtbG9va3VwIGlmIHRhcmdldCBpcyBudW1lcmljIGFkZHJlc3MuCgoKW3MyMDA2MDUxMl0KCllPU0hJRlVKSSBIaWRlYWtpOgogICAgICBbQlVJTERdIEJ1aWxkIHdpdGggc3RhbmRhcmQgaGVhZGVycy4KICAgICAgW0FSUElORyxQSU5HNl0gQnVpbGQgZml4IGZvciBzb21lIG9sZCBzeXN0ZW1zLgoKCltzMjAwNjA0MjVdCgpZT1NISUZVSkkgSGlkZWFraToKICAgICAgW1RSQUNFUk9VVEU2XSBGaXggSUNNUHY2IHR5cGUgcHJpbnRpbmcgd2l0aCAtdiBvcHRpb24KICAgICAgW1RSQUNFUk9VVEU2XSBNYXJrIElDTVB2NiBtZXNzYWdlcyBhcyBrbm93bgogICAgICBbRE9DXSBNYWludGFpbmVyIC8gQ29udGFjdCBjaGFuZ2UKICAgICAgW1BJTkc2LFRSQUNFUEFUSDYsVFJBQ0VST1VURTZdIERlZmluZSBTT0xfSVBWNixTT0xfSUNNUFY2IHdoZXJlIG5lZWRlZAogICAgICBbVFJBQ0VST1VURTZdIEZpeCBzb3VyY2UvZGVzdGluYXRpb24gYWRkcmVzcyB3aXRoIC12IG9wdGlvbgogICAgICBbUElORzYsVFJBQ0VQQVRINixUUkFDRVJPVVRFNl0gVXNlIG5ldyBSRkMzNTQyIGFkdmFuY2VkIEFQSSBpZiBhdmFpbGFibGUKICAgICAgW1JESVNDXSBVc2UgcHJvcGVyIHR5cGUgZm9yIGlzX2RpcmVjdGx5X2Nvbm5lY3RlZCgpCiAgICAgIFtQSU5HLFBJTkc2XSBVc2UgcHJvcGVyIHR5cGUgZm9yIHByaW50ZigpCiAgICAgIFtUUkFDRVJPVVRFNl0gRml4IGluZXRfcHRvbigpIGVycm9yIGhhbmRsaW5nCiAgICAgIFtUUkFDRVJPVVRFNl0gVXNlIG1pbmltdW0gZm9ybWF0IGlmIDAgaXMgc3BlY2lmaWVkIGZvciBkYXRhbGVuCiAgICAgIFtUUkFDRVJPVVRFNl0gT3B0aW1pemUgZGF0YWxlbiBzYW5pdHkgY2hlY2tpbmcgY29kZQogICAgICBbVFJBQ0VQQVRINl0gVXNlIGdldGFkZHJpbmZvKCkgdG8gYWxsb3cgc2NvcGVkIGFkZHJlc3NlcwogICAgICBbUkRJU0NdIFVzZSBzdHJlcnJvcihlcnJubykgaW5zdGVhZCBvZiBzeXNfZXJybGlzdFtlcnJub10KICAgICAgW1BJTkcsUElORzZdIEF2b2lkIHVzaW5nIF9fY29uc3RhbnRfaHRvbnMoKSBpZiBpdCBpcyByZWFsbHkgbmVlZGVkCiAgICAgIFtUUkFDRVBBVEg2XSBGaXggZm9ybWF0IGZvciBzdWJzZWNvbmRzCiAgICAgIFtBUlBJTkcsQ0xPQ0tESUZGLFBJTkcsUElORzYsVFJBQ0VST1VURTZdIENoZWNrIHJldHVybiB2YWx1ZSBmcm9tIHNldHVpZCgpLgogICAgICBbUElORyxQSU5HNl0gZW5zdXJlIHRvIGluaXRpYWxpemUgbXNnLgogICAgICBbTUFLRUZJTEVdIE1ha2Ugc25hcHNob3QgdXNpbmcgZ2l0CgoKWzAyMDkyN10KKiBhcnBpbmcuc2dtbCwgc29tZSBvcHRpb25zIHdlcmUgZm9yZ290dGVuLgoqIHNlbmQgc2Vxbm8gaW4gbmV0d29yayBieXRlIG9yZGVyLiBNZS4KKiBNYWRzIE1hcnRpbiBK+HJnZW5zZW4gPG1takBzdXNlLmRlPiBSZWN1cnNpdmUgY2l0YXRpb246CiJPbiByZXF1ZXN0IG9mIE1hZHMgTWFydGluIEr4cmdlbnNlbiA8bW1qQHN1c2UuZGU+IEkndmUgYWRkZWQgbWFucGFnZXMKcHJlZ2VuZXJhdGVkIGZyb20gdGhlIERvY2Jvb2sgc291cmNlcy4gT25lIGNvdWxkIGFyZ3VlIGl0IGlzIHJlZHVuZGFudAp3aGVuIHRoZSBEb2Nib29rIHNvdXJjZXMgYXJlIGFsc28gdGhlcmUsIGJ1dCB0aGUgYXJndW1lbnQgb2Ygbm90IGhhdmluZwp0byBpbnN0YWxsIERvY2Jvb2sgb24gYSB2ZXJ5IHNtYWxsIHN5c3RlbSB0byBnZXQgdGhlIG1hbiBwYWdlcyB3YXMKY29udmludmluZyBlbm91Z2ggdG8gbWUuIFRvIHF1b3RlIE1hZHMgTWFydGluOiAiSG93IHdvdWxkIGEgc3lzdGVtCmJlIHdpdGhvdXQgYSBtYW4gcGFnZSBmb3IgcGluZz8iIAogIEFzIGEgY2hpbGlkaXNoIHJldmVuZ2UgZnJvbSBteSBzaWRlIGVuam95IHdpdGggY3lyaWxsaWMgZGF0ZSBpbiB0aGVzZQogIG1hbiBwYWdlcy4gOi0pCiogS2VuIENveCA8amtjQHJlZGhhdC5jb20+LiBCb2d1cyBkZWZpbml0aW9uIG9mIFNPQ0tfRFJHQU0mU09DS19TVFJFQU0gb24gbWlwcy4KKiBFcnJvciByZXR1cm5lZCBmcm9tIHJlY3Ztc2coKSByZXN1bHRlZCBpbiBhIGJvZ3VzIHByaW50b3V0IGluIHRyYWNlcm91dGU2LiBNZS4KKiBVc2UgSVBWNl9DSEVDS1NVTSBvbiBpY21wIHNvY2tldCBpbiB0cmFjZXJvdXRlNi4gTWUuCiogTm9haCBMLiBNZXllcmhhbnMgPGZyb2RvQG1vcmd1bC5uZXQ+IEZpeCB0byBkb2MuCiEqIE5vYWggTC4gTWV5ZXJoYW5zIDxmcm9kb0Btb3JndWwubmV0PiBXaGF0IGlzIHRoZSBwcm9ibGVtIHdpdGggImxvbmciIHRyaXB0aW1lPwohICBSZXBvcnRlciBkb2VzIG5vdCByZXNwb25kLiBfTWFsaWduYW50bHlfLgoqIFRob21hcyAnRGVudCcgTWlybGFjaGVyIDxkZW50QGNvc3kuc2JnLmFjLmF0PiBQaW5nIGRpZCBub3QgZXhpdCBzb21ldGltZXMhCiogQWRkIG9wdGlvbiAtVyB0byBvdmVycmlkZSBkZWZhdWx0IDEwIHNlY29uZCBsaW5nZXIgdGltZW91dC4gTWUuCiogTWFkcyBNYXJ0aW4gSvhyZ2Vuc2VuIDxtbWpAc3VzZS5kZT46IHBpbmcgc2hvdWxkIG5vdCBiaW5kIHRvIGF1dG9zZWxlY3RlZAogIHNvdXJjZSBhZGRyZXNzLCBpdCB1c2VkIHRvIHdvcmsgd2hlbiByb3V0aW5nIGNoYW5nZXMuIFJldHVybiBjbGFzc2ljCiAgYmVoYXZpb3VyLCBvcHRpb24gLUIgaXMgYWRkZWQgdG8gZW5mb3JjZSBiaW5kaW5nLgoqIFBla2thIFNhdm9sYSA8cGVra2FzQG5ldGNvcmUuZmk+IEZvcmdvdHRlbiBcbiBtZXNzaW5nIG91dHB1dCBvZiBwaW5nNi4KKiBOb2FoIEwuIE1leWVyaGFucyA8ZnJvZG9AbW9yZ3VsLm5ldD4gdHJhY2Vyb3V0ZTYgLXEgMSBkaWQgbm90IHdvcmsuCiogUGVra2EgU2F2b2xhIDxwZWtrYXNAbmV0Y29yZS5maT4gdmFyaW91cyBzaXplb2YoKSBjbGVhbnVwcyBpbiB0cmFjZXJvdXRlNi5jCiogIkRtaXRyeSBWLiBMZXZpbiIgPGxkdkBhbHQtbGludXgub3JnPiB3cm90ZToKICA+IHBpbmcgKGFzIHdlbGwgYXMgb3RoZXIgdXRpbGl0aWVzKSBtYXkgb3BlbiByYXcgc29ja2V0IHdpdGggZGVzY3JpcHRvciA8PTI7CiAgPiBJbiBjYXNlIG9mIHN1aWQtcm9vdCwgaXQgY2FuIGJlIHVzZWQgYnkgbWFsaWNpb3VzIHVzZXIgdG8gc2VuZCBkYXRhIHRvCiAgPiB0aGlzIHJhdyBzb2NrZXQuCiAgPiAKICA+IFllcywgbW9kZXJuIGdsaWJjIGFuZCBzb21lIGtlcm5lbHMgaGF2ZSB3b3JrYXJvdW5kIGZvciBpdCwgYnV0CiAgPiBJTUhPIGlwdXRpbHMgc2hvdWxkbid0IHJlbHkgb24gdGhpcyBmZWF0dXJlLgogIFRha2VuIGludG8gYWNjb3VudCwgYnV0IG5vIGNoYW5nZXMgbWFkZS4KKiAiVGlsbWFuIEhlaW5yaWNoIiA8dGlsSGVpbnJpY2hAd2ViLmRlPiBzYWlkIHNvbWUgc2NyaXB0cyBhcmUgYnJva2VuCiAgd2hlbiB3b3JkICJwYWNrZXQiIGRpc2FwcGVhcmVkIGZyb20gIjEwMCUgcGFja2V0IGxvc3MiLiBEZXNwaXRlIG9mCiAgdGhlIGluYXJndWFibGUgZmFjdCB0aGF0IHN1Y2ggc2NyaXB0cyBhcmUgdHJ1bHkgbWFkIGFuZCBkZXNlcnZlIGJyZWFraW5nCiAgKHNpZ2guLi4gZXhpdCBjb2RlcyBhcmUgdG9vIHNtYXJ0IGNvbmNlcHQgZm9yIHNjcmlwdCB3cml0ZXJzLCBJIGd1ZXNzKSwKICBJIGhhdmUgdG8gcmVjb2duaXplIHJlbW92aW5nIHRoaXMgd29yZCBjYXJyeWluZyB6ZXJvIGluZm9ybWF0aW9uCiAgd2FzIG5vdCBlbm91Z2ggbW90aXZhdGVkLiBSZXR1cm5lZC4KKiBwaW5nIHVzZWQgdG8gcmV0cnkgZm9yZXZlciB3aGVuIHNlZWluZyBFTk9CVUZTL0VOT01FTSB3aXRob3V0IGV4cGxpY2l0bHkKICBnaXZlbiBkZWFkbGluZS4gQmVpbmcgbG9naWNhbGx5IGNvcnJlY3QgaXQgaXMgYmFkIGluIHByYWN0aWNlIGYuZS4gd2hlbgogIHBpbmdpbmcgYnVnZ3kgZGV2aWNlIHdoaWNoIGxvY2tlZCB1cCB3aXRoIHNvbWUgcGFja2V0cyBpbiBxdWV1ZS4KICBTbywgcmV0cnkgZm9yIGEgZmluaXRlIHRpbWUuLi4gbGV0IGlzIGJlIGxpbmdlcnRpbWUuIEZhaXI/IE1lLgoqIFR3byAibWVzc2FnZXMiIGFyZSBzZW50IHRvIHJwbSBtYWludGFpbmVycyB0byBtYWtlIHRoZWlyIHdyb25nIHBhdGNoZXMKICBmYWlsZWQuCiogRml4IGZyb20gUkggaXB1dGlscy0yMDAwMTAwNy1kZWFkbGluZS5wYXRjaC4gSXQgd2FzIGxvc3QgaW4gdGhlIGxhdGVzdAogIHJwbXMgYnR3LgoqIERheCBLZWxzb24gPGRheEBndXJ1bGFicy5jb20+OiBhZGRlZCBfdW5zdXBwb3J0ZWRfIG9wdGlvbiB0byBjb21wcGlsZQogIHJkaXNjX3Nydi4KClswMjAxMjRdCiogTWljaGFsIEtvY2hhbm93aWN6IDxtaWNoYWxAbWljaGFsLndhdy5wbD4gdHlwb3MgaW4gdHJhY2VwYXRoLjgKKiBNaWNoYWVsIFdhcmRsZSA8bWljaGFlbC53YXJkbGVAYWRhY2VsLmNvbT46IHVuZG8gc2lsbHkgY2hhbmdlIG9mIHNzMDAwMzA1CiAgKHByaW50aW5nIHJ0dCBpbiBzb21lIGZ1bm55IHVuaXRzKS4gTWljaGFlbCBub3RpY2VkIHRoYXQgInNlYyIgaXMgbm90CiAgc3RhbmRhcmQgYWJicmV2aWF0aW9uIGZvciB0aW1lIHVuaXRzIChidWxsc2hpdCwgb2YgY291cnNlKSwgYnV0IHJlYWwgY29uY2VybgogIGlzIHRoYXQgaXQgaXMgbW9yZSBkaWZmaWN1bHQgdG8gaW50ZXJwcmV0IHdpdGggYSBuZWdsaWJpYmxlIGltcHJvdmVtZW50CiAgdG8gYXBwZWFyYW5jZS4gU28sIGRvIHRoaXMgYXMgZXhwZWN0ZWQ6IGluICJtcyIuCiogRG9jdW1lbnRhdGlvbi4gV293ISBJIGRpZCBpdC4gbWFuIHBhZ2VzIGFyZSBkaXNhc3NlbWJsZWQgdG8gZG9jYm9vaywKICBhdWRpdGVkIHdydCByZWFsIHN0YXRlLCBlZGl0ZWQuLi4gYW5kIHByb21pc2VkIHRvIGJlIG1haW50YWluZWQKICBpbiBzeW5jIHdpdGggdGhlIHN0YXRlIG9mIHV0aWxpdGllcy4KClswMTEyMDJdCiogVXR6IEJhY2hlciA8dXR6LmJhY2hlckBkZS5pYm0uY29tPiBCaXRvcHMgaW4gcGluZzYgd2VyZSB3cm9uZwogIG9uIGJpZ2VuZGlhbiBtYWNoaW5lcy4gV293LCBsdWNraWx5IEkgZm9yZ290IHRvIGFja25vd2xlZGdlIHRoYXQgcGF0Y2gKICBvZiAwMTA4MDUgd2hpY2ggaGFzIGdvdHRlbiByaWQgb2Yga2VybmVsIGJpdG9wcyBhbmQgZGlkIHRoaXMgc28gd3JvbmdseS4KKiBNaWNoYWVsIEJha3VuaW4gPGJha3VuaW5AbWFwaGlhc29mdC5vcmc+ICg6LSkpCiAgZm91bmQgbXVkIGluIHRmdHBkLmMsIGl0IHdpbGwgY3Jhc2ggd2hlbiBkaXJlY3Rvcnkgc3VwcGxpZWQgaW4gYXJndW1lbnQKICBpcyBsb25nZXIgfjUxMiBzeW1ib2xzLgoqIEFsZXhhbmRyIEQuIEthbmV2c2tpeSA8a2FkQGJsYWNrY2F0bGludXguY29tPjogYnVmZmVyIG92ZXJmbG93CiAgaW4gY2xvY2tkaWZmLiBWZXJ5IHN0dXBpZCBvbmUsIHRoZSBvdmVyZmxvd2VkIGJ1ZmZlciBldmVuIHdhcyBub3QgdXNlZC4gOi0pCiogQWxleGFuZHIgRC4gS2FuZXZza2l5IDxrYWRAYmxhY2tjYXRsaW51eC5jb20+OiBzaGl0ISBDb2RlIHJlY29nbml6aW5nCiAga2VybmVscyB3aXRoIGJyb2tlbiBJUF9SRUNWRVJSIGZvciByYXcgc29ja2V0cyBkZXBlbmRlZCBvbiByYWNlCiAgYW5kIGFjY3VzZWQgZXZlbiBnb29kIGtlcm5lbCBvZiBiZWluZyBidWdneS4gOi0pCgpbMDExMDAyXQoqIFN0ZXBhbiBLb2x0c292IDx5b3poQG14MS5ydT4sIHRyYWNlcGF0aC90cmFjZXB0aDYgc2VnZmF1bHRlZCB3aGVuCiAgdXNlZCB3aXRob3V0IGFkZHJlc3MuCiogQWxleGFuZHIgRC4gS2FuZXZza2l5IDxrYWRAYmxhY2tjYXRsaW51eC5jb20+OiBhcnBpbmcgcHJpbnRlZAogICJwZXJtaXNzaW9uIGRlbmllZCIgaW5zdGVhZCBvZiBzaG93aW5nIGhlbHAgcGFnZSB0byBub24tc3VwZXJ1c2VyLgoKWzAxMDgyNF0KKiBBbGV4YW5kciBELiBLYW5ldnNraXkgPGthZEBibGFja2NhdGxpbnV4LmNvbT46IHBpbmcgY29tcGlsZWQKICBmb3IgbGludXgtMi40IGZvcmdvdCB0byBzZW5kIHRoZSBzZWNvbmQgcGFja2V0LCB3aGVuIHVzZWQgd2l0aCBsaW51eC0yLjIKKiBDaHJpcyBFdmFucyA8Y2hyaXNAc2NhcnkuYmVhc3RzLm9yZz46IGJ1ZmZlciBvdmVyZmxvdyBpbiB0cmFjZXJvdXRlNi4KICBkYXRhbGVuIHdhcyBtZXNzZWQ6IGNvdW50aW5nIGhlYWRlciBpbiBoYWxmIG9mIHBsYWNlcy4KICBGdW5ueSwgbG9va2luZyBpbnRvIExCTCB0cmFjZXJvdXRlLCBpdCBpcyBldmVuIHdvcnNlIDotKQoqIEFsZXhhbmRyIEQuIEthbmV2c2tpeSA8a2FkQGJsYWNrY2F0bGludXguY29tPjogcmVsYXllZCBwYXRjaGVzCiAgYnkgU29sYXJfRGl6LiBPbmx5IG1pc3NpbmcgZGVzY3JpcHRpb24gb2Ygb3B0aW9uIC1xIGlzIGFjY2VwdGVkLgoqIDxpcGF0ZWxAd2lsbmV0b25saW5lLm5ldD4gcGluZzYgcHJpbnRlZCB3cm9uZyBtdHUuCiogQWxleGFuZHIgRC4gS2FuZXZza2l5IDxrYWRAYmxhY2tjYXRsaW51eC5jb20+OiAtV2Vycm9yIGlzIHJlbW92ZWQuCiAgTmV3ZXIgZ2NjIGFyZSBidWdneSBhbmQgZ2VuZXJhdGVzIHNvbWUgd3Jvbmcgd2FybmluZ3MgYWJvdXQKICB1bmluaXRhbGl6ZWQgdmFyaWFibGVzLCB3aGljaCBhcmUgZXZpZGVudGx5IGluaXRpYWxpemVkLgoKWzAxMDgwNV0KKiBTb21lIG5ld3MgZnJvbSBQZWtrYSBTYXZvbGEgPHBla2thc0BuZXRjb3JlLmZpPiBhcm91bmQgc2V0dGluZyB0b3MgYml0cy4KKiBhcnBpbmc6IGJyb2FkY2FzdC1vbmx5IG1vZGUgYnkgQXJkIHZhbiBCcmVlbWVuIDxhcmRAdGVsZWdyYWFmbmV0Lm5sPgoqIHBpbmc2L3RyYWNlcm91dGU2OiBwYXJzZSBJQ01QIGVycm9ycyB3aXRoIGV4dGVuc2lvbiBoZWFkZXJzIChtZSkKICB0cmFjZXJvdXRlNiB3b3JrcyB3aXRoIHNpemUgPiBtdHUgbm93LiBOaWNlLgoqIHBpbmc6IEVyaWsgUXVhbnN0cm9tIDxxdWFuc3Ryb0BjbGFyay5uZXQ+LiBTZXJpb3VzIHBhdGNoLgogIHBpbmcgaW50ZXJ2YWwgdGltZXIgd2FzIG5vdCB2ZXJ5IGJyb2tlbiwgYnV0IHZlcnkgdW5pbnRlbGxpZ2libGUuCiAgVGhvdWdoIEkgcmVtYWRlIHRoZSBjb2RlIHRvIHVzZSBsZWFreSBidWNrZXQgbG9naWMsIHdoaWNoCiAgaXMgdGhlIG1vc3QgdHJhbnNwYXJlbnQgb25lLiBBbnl3YXksIGNvbnRyaWJ1dGlvbiBieSBFcmljIGlzCiAgdGhlIG1vc3QgaW1wb3J0YW50IG9uZSBzaW5jZSB0aGUgcHJldmlvdXMgcmVsZWFzZS4KICBTaG9ydCB0aGVvcnkgb2Ygb3BlcmF0aW9uOiBvcHRpb24gLWkgKGludGVydmFsKSBzZXRzIHJhdGUgcj0xL2ludGVydmFsIHBwcywKICBvcHRpb24gLWwgKHByZWxvYWQpIHNldHMgYnVyc3Qgc2l6ZSBvZiBsIHBhY2tldHMuIFNvLCBwaW5nIHNlbmRzCiAgYXQgbW9zdCByKnQrbCBwYWNrZXRzIGZvciBhbiBhcmJpdHJhcnkgaW50ZXJ2YWwgdC4KICBEZWZhdWx0IHZhbHVlczogbD0xIGFuZCBmb3Igbm9uLWZsb29kIGNhc2U6IHI9MXBwcywgZm9yIGZsb29kIHI9aW5maW5pdHkuCiAgTmljZT8gRXhhY3QgYWxnb3JpdGhtIGlzOgoKICBMZXQgTih0KSBiZSBsL3I9bCppIGluaXRpYWxseSBhbmQgTih0KSBncm93IGNvbnRpbnVvdXNseSB3aXRoIHRpbWUgYXM6CgoJTih0K2RlbHRhKSA9IG1pbntsKmksIE4odCkgKyBkZWx0YX0KCiAgUGFja2V0IGNhbiBiZSB0cmFuc21pdHRlZCBvbmx5IGF0IHRoZSB0aW1lIHRfKiB3aGVuIDEvcj1pIDw9IE4odF8qKQogIGFuZCBpbiB0aGlzIGNhc2UgTih0KSBqdW1wczoKCglOKHRfKiArIDApID0gTih0XyogLSAwKSAtIGkuCgogIFdoZW4gaW50ZXJ2YWwgaXMgemVybywgYWxnbyBkZWdlbmVyYXRlcyBhbGxvd2luZyB0byBzZW5kIGFueSBhbW91bnQKICBvZiBtZXNzYWdlcy4gSW4gdGhpcyBjYXNlIHdlIG1vZGlmeSBpdCB1c2luZyBsIGFzIGxpbWl0IG9uIGFtb3VudAogIG9mIHVuYW5zd2VyZWQgcmVxdWVzdHMgYW5kIHdhaXRpbmcgZm9yIDEwbXNlYywgd2hlbiBzb21ldGhpbmcgaXMgbm90CiAgYW5zd2VyZWQuIE5vdGUgdGhhdCB0aGUgbGFzdCB0aGluZyAoMTBtc2VjKSBpcyBqdXN0IHRvIGJlIGNvbXBhdGlibGUgd2l0aAogIEJTRCBtYW51YWwgcGFnZXMuIEJTRCBwaW5nIGlzIHNpbXBseSBub3QgYWJsZSB0byBhdm9pZCBkZWxheSB0ZWNobmljYWxseSwKICB3ZSBhcmUgYWJsZSBub3cuCgogIEluIHJlc3VsdCB3ZSBnb3Qgc29tZSBuZXcgZmFjaWxpdGllczoKICAqICItZiAtbCAxMDAiIGJlY29tZXMgdmVyeSBhZ2dyZXNzaXZlLCBpbiBmYWN0IG9uIGdvb2QgbGluawogICAgaXQgaG9sZHMgcGVybWFuZW50bHkgMTAwIHBhY2tldHMgaW4gZmxpZ2h0LCB3aGljaCBpcyB2ZXJ5IGRpZmZlcmVudAogICAgb2YgZWFybGllciBiZXZhdmlvdXIgKG9uZSBwYWNrZXQgaW4gZmxpZ2h0KS4KICAqIC1mIGFuZCAtaSBhcmUgbm90IGluY29tcGF0aWJsZSBtb3JlLiBJbiBmYWN0LCAiLWYgLWkgMSIgaXMgZXF1aXZhbGVudAogICAgdG8gcGxhaW4gcGluZywgb25seSBvdXRwdXQgaXMgZGlmZmVyZW50IChkb3R0ZWQpLiBFc3NlbnRpYWxseSwKICAgIGNoYW5nZSBvZiBvdXRwdXQgZm9ybWF0IGlzIHRoZSBvbmx5IGVmZmVjdC4gInBpbmcgLWkgMCIgaXMgZmxvb2QKICAgIHByaW50aW5nIG91dHB1dCBpbiBub3JtYWwgZm9ybWF0LgoKICBNb3ZlZCBzb21lIHBhcnRzIG9mIGNvZGUgdG8gcGluZ19jb21tb24uYy4gQ29tbW9uIHBhcnQgaXMgbm90IGZ1bGx5CiAgdHJpdmlhbCBub3cuIDotKQoKKiBwaW5nOiBJYW4gTHluYWdoIDxpZ2xvb0BlYXJ0aC5saT4sIGxhcmdlciBhbmQgZHluYW1pYyBkdXAgZGV0ZWN0b3IuCiAgQWxzbywgSWFuIHN1Ym1pdHRlZCB0d28gbGFyZ2UgcGF0Y2hlcywgb25lIGZpeGluZyBmb3JtYXR0aW5nLCBhbm90aGVyCiAgZG9pbmcgc29tZXRoaW5nIHdpdGggc2lnbmVkbmVzcy9sb25nbmVzcy4gTm90IG5vdy4uLgogIExhdGVyIG5vdGU6IGZvdW5kIG5vdCB3b3JraW5nLiB4ICsgNyAvIDggOi0pLiBTb3JyeS4uLiBkdWJpb3VzLCB3aXRoZHJhd24uCiAgc2l6ZSBvZiB0YWJsZSBpbmNyZWFzZWQgdG8gbWF4aW1hbCB2YWx1ZSBpbnN0ZWFkICg4SyBvZiBtZW1vcnksCiAgbm90IGEgYmlnIGRlYWwpLgoqIHRmdHBkOiBhbiBvbGQgbWlzcHJpbnQuIGxlZnRAc2Jvci5zcGIuc3UgKElnb3IgQS4gTGVmdGVyb3YpCiogY2xvY2tkaWZmOiBkbyBub3QgZmFpbCwgaWYgcmV2ZXJzZWQgcmVzb2x1dGlvbiBmYWlsZWQuCiAgVG9tbXkgTGFjcm9peCA8dG9tbXlsQHplcm9rbm93bGVkZ2UuY29tPgoqIHBpbmc6IGF1ZGlibGUgcGluZyBieSBQYXRyaWsgU2NoaWx0IDxwYXRyaWtAYm5jLmNoPgogIFBhdHJpY2sncyBvcHRpb24gcmVuYW1lZCB0byAtYSB0byBhbGlnbiB0byBmcmVlYnNkLgoqIHBpbmc6IHJlYWN0IHRvIGRldmljZSBxdWV1ZSBvdmVyZmxvd3MgdXNpbmcgSVBfUkVDVkVSUi4gbWUuCiogcGluZzogb3B0aW9uIC1TIGFsbG93cyB0byBjaGFuZ2Ugc25kYnVmIAoqIHJhcnBkIGlzIG1vdmVkIGZyb20gc2VwYXJhdGUgcGFja2FnZSBoZXJlIChwZW9wbGUgYXNrZWQpCiogcGluZzY6IGtlcm5lbCBzdHlsZSBiaXRvcHMgYXJlIG5vdCB1c2VkIG1vcmUuCiogT3B0aW9uIC1BIHRvIGFkYXB0IHRvIG5ldHdvcmsgcnR0LgoqIFVzZSBCUEYsIHdoZW4gbXVsdGlwbGUgcGluZ3MgYXJlIGRldGVjdGVkLgoKWzAwMTExMF0KKiBwaW5nIGlzIGFibGUgdG8gc2VsZWN0IFRPUy4gQnkgUGVra2EgU2F2b2xhIDxwZWtrYXNAbmV0Y29yZS5maT4KKiB0cmFjZXBhdGgqIEROUyBuYW1lcy4gQnkgUGF3ZWwgS3Jhd2N6eWsgPGtyYXZpZXR6QGNldGkuY29tLnBsPiBhbmQKICBBcmthZGl1c3ogTWlza2lld2ljeiA8bWlzaWVrQHBsZC5vcmcucGw+CiogcGluZzYgaXMgZXhwZWN0ZWQgdG8gYmUgY29tcGlsZWQgd2l0aCBsaW51eC0yLjIuCgpbMDAxMDExXQoqIFJIIGJ1Z2lkIzE2Njc3OiBzZWdmYXVsdCwgd2hlbiBwaW5nIGlzIHVzZWQgYnkgcm9vdCBhbmQgc2l6ZQogIGlzIGxhcmdlIGVub3VnaC4gRml4IGlzIHRvIGFsbG93IG92ZXJzaXplIGJ5IHJvb3QgKGl0IGlzIG5lY2Vzc2FyeQogIHRvIGNoZWNrIGtlcm5lbCBzaWRlKSwgYnV0IGNsYW1wIGl0IGF0IHNvbWUgc2FmZSB2YWx1ZS4KClswMDEwMTBdCiogTW9yZSBidWcgZml4ZXMgZnJvbSBDaHJpcyBFdmFucyA8Y2hyaXNAZmVycmV0LmxtaC5veC5hYy51az4KICAtIGRvIG5vdCB0cnVzdCBoX2xlbmd0aCByZXR1cm5lZCBieSBzeXN0ZW0gcmVzb2x2ZXIuCiAgICBUaGlzIHZhbHVlIGlzIG1lYW5pbmdsZXNzIGluIGFueSBjYXNlLgogIC0gcGluZzogYnVmZmVyIG92ZXJmbG93IGluIGZpbGwoKSEhISBEaXNncmFjZWZ1bCBidWcuCgoqIHBpbmc6IGFsbG93IG5vdC1wcml2aWxlZGdlZCB1c2VycyB0byB1c2UgYnJvYWRjYXN0cy4gSXQgd2FzIHBhcmFub2lhLgogIE11bHRpY2FzdHMgd2VyZSBhbGxvd2VkLiA4KQoqIHBpbmc6IGJ1dCBmb3JjZSBicm9hZGNhc3RzJm11bHRpY2FzdHMgbm90IHRvIGZyYWdtZW50LiBCU0QgZG9lcwogIG5vdCBhbGxvdyB0byBkbyB0aGlzIHRvIGFueW9uZSwgd2Ugc3RpbGwgYWxsb3cgdGhpcyBmb3Igc3VwZXJ1c2VyLgoqIE9wdGlvbiAtTSB0byBjb250cm9sIHBhdGggbXR1IGRpc2NvdmVyeS4KClswMDEwMDddCiogQnkgUGVra2EgU2F2b2xhIDxwZWtrYXNAbmV0Y29yZS5maT4KICAtIFNJT0NHU1RBTVAvU09fVElNRVNUQU1QIGFyZSBzZW5zaXRpdmUgdG8gYnVnIGluIGtlcm5lbC4KICAgIFdoZW4gZ2V0X2Zhc3RfdGltZSAhPSBnZXR0aW1lb2ZkYXkgKGYuZS4gdGltZXN0YW1wbGVzcyB4ODYpLAogICAgcmV0dXJuZWQgc3RhbXAgY2FuIGJlIG91dCBvZiBzeW5jIHdpdGggZ2V0dGltZW9mZGF5LgogICAgV29ya2Fyb3VuZCBpcyBub3QgdG8gdXNlIFNJT0NHU1RBTVAvU09fVElNRVNUQU1QIG9uIHN1Y2ggc3lzdGVtcy4KICAtIGZpeGVzIGluIG1hbiBwYWdlcwogIC0gY29tcGlsZXMgdW5kZXIgcmgtNy4wCiogQ2hyaXMgRXZhbnMgPGNocmlzQGZlcnJldC5sbWgub3guYWMudWs+CiAgLSBwaW5nOiBwb3NzaWJsZSBidWZmZXIgb3ZlcmZsb3cgaW4gcHJfYWRkcigpLgoKWzAwMDkyOF0KKiBTb3JyeS4gSSBoYXZlIGxvc3QgYWxsIHRoZSBDVlMgd2l0aCBjaGFuZ2VzIG1hZGUgc2luY2UgMDAwNDE4LgogIElmIHNvbWVvbmUgc2VudCBtZSBhIHBhdGNoIGFmdGVyIHRoaXMgZGF0ZSwgcGxlYXNlLCByZXN1Ym1pdC4KICBSZXN0b3JlZCBmcm9tIHRoZSBsYXN0IGJhY2t1cCBhbmQgbWFpbGJveGVzOgoKKiBwaW5nKiwgU09fVElNRVNUQU1QIHN1cHBvcnQuCiogcGluZyosIGFsbG93IHplcm8gZGF0YSBsZW5ndGggKHJlcG9ydGVkIGJ5IERhbWphbiBMYW5nbyA8ZGFtamFuLmxhbmdvQGhlcm1lcy5zaT4pCiogaXB1dGlscyBtYW4gYW5kIGhlbHAgdXBkYXRlcy4gUGVra2EgU2F2b2xhIDxQZWtrYS5TYXZvbGFAbmV0Y29yZS5maT4KKiBwaW5nLjgsIGZpeCB0byBwaW5nIG1hbiBwYWdlLiBCeSBEYWRpZCBFaXNuZXIgPGNyYWRsZUBnbHVlLnVtZC5lZHU+CiogcGluZyBwcmludHMgYWRkcmVzc2VzIGluIG51bWVyaWMsIGlmIGRlc3RpbmF0aW9uIGlzIG51bWVyaWMuCiAgUHJvcG9zZWQgYnkgVGltIFdhdWdoIDx0d2F1Z2hAbWVtZS5zdXJyZXkucmVkaGF0LmNvbT4KCk5ldzoKKiBwaW5nOiBzdHJuY3B5IGJ1ZyA8dHlwb0BpbmZlcm5vLnR1c2N1bHVtLmVkdT4KKiBhcnBpbmc6IGltcHJvdmVtZW50cyBieSBDaGFybGVzIEhvd2VzIDxjcm9vdEBtaWNyby1sb2dpc3RpY3MuY29tPgoJLSBhIGZlYXR1cmUgdG8gYXJwaW5nOiBxdWl0IGFzIHNvb24gYXMgYSByZXBseSBpcyByZWNlaXZlZC4KCS0gZGVmYXVsdCB0byBldGgwLgoJLSBzcGVsbGluZwoKWzAwMDQxOF0KKiBsbHNxcnQoKSB3YXMgYnVnZ3kgYWdhaW4hCiAgICAgICAobm90aWNlZCBieSBTYW0gRmFyaW4gPHNmYXJpbkByYXRvbC5maT4pCgpbMDAwNDA0XQoqIHRyYWNlcGF0aCosICJOVVJEVW5ldC1ndyIgYnVnIHdvcmthcm91bmQuCgkobm90aWNlZCBieSBWaXRhbHkgRS5MYXZyb3YgPGx2ZUBhYW5ldC5ydT4pCiogdHJhY2VwYXRoKiwgaGFuZGxlIGNhc2Ugb2Ygcm91dGVycyBpbml0aWFsaXppbmcgcnR0IHRvIDEyOC4KCVZpdGFseSBFLkxhdnJvdiA8bHZlQGFhbmV0LnJ1PgoqIHNoYWRvd2VkIGljbXBfc29jayBpbiBwaW5nNi4gSmFtZXMgTW9ycmlzIDxqbW9ycmlzQEBpbnRlcmNvZGUuY29tLmF1PgoqIEJ1ZyBpbiBwaW5nIC1mLCBpbnRyb2R1Y2VkIHdpdGggU09fUkNWVElNRU8uIG1lLgoqIGxsc3FydCgpIChwaW5nLCBwaW5nNikgd2FzIHdyb25nIHlldC4gbWUuCgpbMDAwMzEwXQoqIFByaW50IG1lYW4gZGV2aWF0aW9uIG9mIFJUVCBpbiBwaW5nL3Bpbmc2LgoqIFVzZSBTSU9DR1NUQU1QIGluIHBpbmcvcGluZzYuIE9sZCBiZWhhdmlvdXIgY2FsY3VsYXRpbmcKICB0cnVlIHVzZXItdG8tdXNlciBsYXRlbmN5IGlzIHJlc3RvcmVkIHdpdGggb3B0aW9uIC1VLgogIFJlYXNvbiBmb3IgdGhpcyBzdHVwaWQgY2hhbmdlIGlzIG1haW5seSBwb2xpdGljYWw7IHBlb3BsZQogIHdvbmRlciB3aHkgZnJlZWJzZCBoYXMgdHdpY2UgbGVzcyBsYXRlbmN5IG9uIGxvb3BiYWNrLgogIElmIHRvIGZvbGxvdyBhbG9uZyB0aGlzIGxpbmUsIHdlIGhhdmUgdG8gcHJpbnQgcnR0IGVxdWFsIHRvIDAuIDgpCiAgWyBMQVRFUiBOT1RFOiBhY3R1YWxseSwgdGhlIGNoYW5nZSBpcyBfcmlnaHRfIHdpdGhvdXQgYW55IGRvdWJ0cy4KICAgIFBpbmcgaGFzIGFub3RoZXIgYnVnOiBuYW1lcmVzb2x2ZXIgaXMgYmxvY2tpbmcsIHNvIHRoYXQKICAgIHdoZW4gaXQgZGllcyBub3QgcmVzcG9uZCwgcGluZyBzaG93cyBldmVubHkgaW5jcmVhc2luZyBieSAxIHNlYwogICAgUlRULiBJdCBpcyB2ZXJ5IGNvbmZ1c2luZyAobG9vayB0aHJvdWdoIGxpbnV4LWtlcm5lbCBtYWlsbGlzdHMKICAgIHRvIGNvdW50IG51bWJlciBvZiBwZW9wbGUsIHdobyB3ZXJlIGNoZWF0ZWQgYnkgbWlzY29uZmlndXJlZCBkbnMpLiBdCiogVXNlIFNPX1JDVlRJTUVPIGluc3RlYWQgb2YgcG9sbCgpIHdpdGggcGluZy9waW5nNiAtZi4KKiBBZGRlZCAtViBvcHRpb24gdG8gYXJwaW5nL3BpbmcvcGluZzYvdHJhY2Vyb3V0ZTYvcmRpc2MKICB0byBwcmludCBzbmFwc2hvdCBudW1iZXIuCgpbMDAwMzA1XQoqIHJkaXNjOiB1Z2x5IGJ1ZyBpbiBnZXR0aW5nIGludGVyZmFjZSBsaXN0LiBtZS4KKiBwaW5nL3Bpbmc2OiBwaW5nIC1pIE4sIE4+PTMgZGlkIG5vdCB3b3JrLiBKZWZmIEpvbnNvbiA8amJqQHJlZGhhdC5jb20+CiogcGluZy9waW5nNjogbWljcm9zZWNvbmQgcnR0IG1lYXN1cmVtZW50cy4gbWUuCgpbMDAwMTIwXQoqIHBpbmcvcGluZzY6IG5vbi16ZXJvIGV4aXQgY29kZSBldmVuIHdpdGhvdXQgLXcuCgpbOTkxMDI0XQoqIE9wdGlvbiAiLWkiIHRvIHBpbmcvcGluZzYgdGFrZXMgZnJhY3Rpb25hbCB0aW1lIG5vdywgc28gdGhhdAogICJwaW5nIC1pIDAuMyB4eHgiIHBpbmdzIGVhY2ggMzAwIG1zZWMuIFRoZSBpZGVhIGlzIGJ5CiAgTWFyYyBCb3VjaGVyIDxtYXJjQG1ic2kuY2E+CiogYWxwaGEvZ2xpYmMtMi4xIGFsaWdubWVudCBwcm9ibGVtcyBpbiBwaW5nIGFyZSBmaXhlZCAoc3RydWN0IHRpbWV2YWwKICB3YXMgd3JvbmdseSBhbGlnbmVkKS4KCls5OTA5MTVdCiogcGluZy9waW5nNiB3b3JrZWQgb25seSB3aXRoIGtlcm5lbHMgMi4zLjE1KyBpbiA5OTA4MjQuCgpbOTkwODI0XQoqIHRmdHBkIGlzIGFkZGVkLiBJdCB1c2VzIE1TR19DT05GSVJNIHRvIGNvbmZpcm0gYXJwIGVudHJpZXMuCiogcGluZzY6IHdvcmthcm91bmQgZm9yIGJ1ZyBpbiBzb21lIGVnY3MgdmVyc2lvbnMuCgpbOTkwNjEwXQoqIHBpbmc6IG91dHB1dCBidWZmZXIgd2FzIHRvbyBzbWFsbCBmb3IgZnVsbCBzaXplZCBwaW5nLgoqIHBpbmc6IHNpbGx5IHJlc3RyaWN0aW9uIG9uIHBpbmcgc2l6ZSBpcyByZW1vdmVkLgoKWzk5MDUzMF0KKiBzaG9ydCBtYW4gcGFnZXMgKE9sZWcgTS4gU2h1bXNreSA8b21zQGNwLnRvbXNrLnN1PikKKiBwaW5nNjogZ2V0IGFuZCBwcmludCBob3AgbGltaXQgb2YgcmVwbHkgcGFja2V0cyAoTUUpCiogcmRpc2MgZGVsZXRlcyByb3V0ZXMgYmVmb3JlIGV4aXQgd2l0aCAtVEVSTQoqIHBpbmcvcGluZzY6IG9wdGlvbiAtdyBUSU1FT1VUIAoqIGFycGluZzogZXhpdCB3aXRoIGVycm9yLCBpZiByZWNlaXZlZCBubyByZXBsaWVzIGluIG5vcm1hbAogIChub3QgREFEIGFuZCBub3QgdW5zaWxpY2l0ZWQgQVJQKSBtb2RlLgoK