ZGlmZiAtLWdpdCBhL01hYy9MaWIvdG9vbGJveC9BcHBsZVNjcmlwdF9TdWl0ZS5weSBiL01hYy9MaWIvc2NyaXB0aW5nL0FwcGxlU2NyaXB0X1N1aXRlLnB5CnNpbWlsYXJpdHkgaW5kZXggNjElCnJlbmFtZSBmcm9tIE1hYy9MaWIvdG9vbGJveC9BcHBsZVNjcmlwdF9TdWl0ZS5weQpyZW5hbWUgdG8gTWFjL0xpYi9zY3JpcHRpbmcvQXBwbGVTY3JpcHRfU3VpdGUucHkKaW5kZXggMmJmZjQ1MS4uZWE5ZjFmMSAxMDA2NDQKLS0tIGEvTWFjL0xpYi90b29sYm94L0FwcGxlU2NyaXB0X1N1aXRlLnB5CisrKyBiL01hYy9MaWIvc2NyaXB0aW5nL0FwcGxlU2NyaXB0X1N1aXRlLnB5CkBAIC0xLDcgKzEsNyBAQAogIiIiU3VpdGUgQXBwbGVTY3JpcHQgU3VpdGU6IEdvb2RpZXMgZm9yIEd1c3RhdgogTGV2ZWwgMSwgdmVyc2lvbiAxCiAKLUdlbmVyYXRlZCBmcm9tIGZsYXA6U3lzdGVlbW1hcDpFeHRlbnNpZXM6U2NyaXB0LWV4dHJhJ3M6RGlhbGVjdGVuOkVuZ2VscyBkaWFsZWN0CitHZW5lcmF0ZWQgZnJvbSBmbGFwOlN5c3RlbSBGb2xkZXI6RXh0ZW5zaW9uczpTY3JpcHRpbmcgQWRkaXRpb25zOkRpYWxlY3RzOkVuZ2xpc2ggRGlhbGVjdAogQUVURS9BRVVUIHJlc291cmNlIHZlcnNpb24gMS8wLCBsYW5ndWFnZSAwLCBzY3JpcHQgMAogIiIiCiAKQEAgLTEwLDI1ICsxMCw2IEBACiAKIF9jb2RlID0gJ2FzY3InCiAKLV9FbnVtX2NvbnMgPSB7Ci0JJ2Nhc2UnIDogJ2Nhc2UnLAkjIGNhc2UKLQknZGlhY3JpdGljYWxzJyA6ICdkaWFjJywJIyBkaWFjcml0aWNhbHMKLQknd2hpdGVfc3BhY2UnIDogJ3doaXQnLAkjIHdoaXRlIHNwYWNlCi0JJ2h5cGhlbnMnIDogJ2h5cGgnLAkjIGh5cGhlbnMKLQknZXhwYW5zaW9uJyA6ICdleHBhJywJIyBleHBhbnNpb24KLQkncHVuY3R1YXRpb24nIDogJ3B1bmMnLAkjIHB1bmN0dWF0aW9uCi0JJ2FwcGxpY2F0aW9uX3Jlc3BvbnNlcycgOiAncm10ZScsCSMgcmVtb3RlIGV2ZW50IHJlcGxpZXMKLX0KLQotX0VudW1fYm9vdiA9IHsKLQkndHJ1ZScgOiAndHJ1ZScsCSMgdGhlIHRydWUgYm9vbGVhbiB2YWx1ZQotCSdmYWxzZScgOiAnZmFscycsCSMgdGhlIGZhbHNlIGJvb2xlYW4gdmFsdWUKLX0KLQotX0VudW1fbWlzYyA9IHsKLQknY3VycmVudF9hcHBsaWNhdGlvbicgOiAnY3VyYScsCSMgdGhlIGN1cnJlbnQgYXBwbGljYXRpb24KLX0KLQogY2xhc3MgQXBwbGVTY3JpcHRfU3VpdGU6CiAKIAlkZWYgYWN0aXZhdGUoc2VsZiwgX25vX29iamVjdD1Ob25lLCBfYXR0cmlidXRlcz17fSwgKipfYXJndW1lbnRzKToKQEAgLTgwNywyNDUgKzc4OCw4MTMgQEAKIAkJCXJldHVybiBfYXJndW1lbnRzWyctLS0tJ10KIAogCi0jICAgIENsYXNzICcnICgndW5kZicpIC0tICd0aGUgdW5kZWZpbmVkIHZhbHVlJworY2xhc3MgX2VtcHR5X2FlX25hbWUoYWV0b29scy5Db21wb25lbnRJdGVtKToKKwkiIiIgLSB0aGUgdW5kZWZpbmVkIHZhbHVlIiIiCisJd2FudCA9ICd1bmRmJwogCi0jICAgIENsYXNzICd1cHBlciBjYXNlJyAoJ2Nhc2UnKSAtLSAnVGV4dCB3aXRoIGxvd2VyIGNhc2UgY29udmVydGVkIHRvIHVwcGVyIGNhc2UnCitjbGFzcyB1cHBlcl9jYXNlKGFldG9vbHMuQ29tcG9uZW50SXRlbSk6CisJIiIidXBwZXIgY2FzZSAtIFRleHQgd2l0aCBsb3dlciBjYXNlIGNvbnZlcnRlZCB0byB1cHBlciBjYXNlIiIiCisJd2FudCA9ICdjYXNlJwogCi0jICAgIENsYXNzICdtYWNoaW5lcycgKCdtYWNoJykgLS0gJ2V2ZXJ5IGNvbXB1dGVyJwotIyAgICAgICAgcHJvcGVydHkgJycgKCdjQCMhJykgJ3R5cGUnIC0tICcnIFswXQorY2xhc3MgbWFjaGluZXMoYWV0b29scy5Db21wb25lbnRJdGVtKToKKwkiIiJtYWNoaW5lcyAtIGV2ZXJ5IGNvbXB1dGVyIiIiCisJd2FudCA9ICdtYWNoJwogCi0jICAgIENsYXNzICdtYWNoaW5lJyAoJ21hY2gnKSAtLSAnQSBjb21wdXRlcicKK21hY2hpbmUgPSBtYWNoaW5lcwogCi0jICAgIENsYXNzICd6b25lcycgKCd6b25lJykgLS0gJ2V2ZXJ5IEFwcGxlVGFsayB6b25lJwotIyAgICAgICAgcHJvcGVydHkgJycgKCdjQCMhJykgJ3R5cGUnIC0tICcnIFswXQorY2xhc3Mgem9uZXMoYWV0b29scy5Db21wb25lbnRJdGVtKToKKwkiIiJ6b25lcyAtIGV2ZXJ5IEFwcGxlVGFsayB6b25lIiIiCisJd2FudCA9ICd6b25lJwogCi0jICAgIENsYXNzICd6b25lJyAoJ3pvbmUnKSAtLSAnQXBwbGVUYWxrIHpvbmUnCit6b25lID0gem9uZXMKIAotIyAgICBDbGFzcyAnc2Vjb25kcycgKCdzY25kJykgLS0gJ21vcmUgdGhhbiBvbmUgc2Vjb25kJworY2xhc3Mgc2Vjb25kcyhhZXRvb2xzLkNvbXBvbmVudEl0ZW0pOgorCSIiInNlY29uZHMgLSBtb3JlIHRoYW4gb25lIHNlY29uZCIiIgorCXdhbnQgPSAnc2NuZCcKIAotIyAgICBDbGFzcyAnaXRlbScgKCdjb2JqJykgLS0gJ0FuIGl0ZW0gb2YgYW55IHR5cGUnCi0jICAgICAgICBwcm9wZXJ0eSAnaWQnICgnSUQgICcpICdsb25nJyAtLSAndGhlIHVuaXF1ZSBpZCBudW1iZXIgb2YgdGhpcyBvYmplY3QnIFttdXRhYmxlXQorY2xhc3MgaXRlbShhZXRvb2xzLkNvbXBvbmVudEl0ZW0pOgorCSIiIml0ZW0gLSBBbiBpdGVtIG9mIGFueSB0eXBlIiIiCisJd2FudCA9ICdjb2JqJworY2xhc3MgaWQoYWV0b29scy5OUHJvcGVydHkpOgorCSIiImlkIC0gdGhlIHVuaXF1ZSBpZCBudW1iZXIgb2YgdGhpcyBvYmplY3QiIiIKKwl3aGljaCA9ICdJRCAgJworCXdhbnQgPSAnbG9uZycKIAotIyAgICBDbGFzcyAnaXRlbXMnICgnY29iaicpIC0tICdFdmVyeSBpdGVtJwotIyAgICAgICAgcHJvcGVydHkgJycgKCdjQCMhJykgJ3R5cGUnIC0tICcnIFswXQoraXRlbXMgPSBpdGVtCiAKLSMgICAgQ2xhc3MgJ3RleHQgaXRlbXMnICgnY2l0bScpIC0tICcnCi0jICAgICAgICBwcm9wZXJ0eSAnJyAoJ2NAIyEnKSAndHlwZScgLS0gJycgWzBdCitjbGFzcyB0ZXh0X2l0ZW1zKGFldG9vbHMuQ29tcG9uZW50SXRlbSk6CisJIiIidGV4dCBpdGVtcyAtICIiIgorCXdhbnQgPSAnY2l0bScKIAotIyAgICBDbGFzcyAndGV4dCBpdGVtJyAoJ2NpdG0nKSAtLSAnJwordGV4dF9pdGVtID0gdGV4dF9pdGVtcwogCi0jICAgIENsYXNzICdkYXRlJyAoJ2xkdCAnKSAtLSAnQWJzb2x1dGUgZGF0ZSBhbmQgdGltZSB2YWx1ZXMnCi0jICAgICAgICBwcm9wZXJ0eSAnd2Vla2RheScgKCd3a2R5JykgJ3drZHknIC0tICd0aGUgZGF5IG9mIGEgd2VlayBvZiBhIGRhdGUnIFtdCi0jICAgICAgICBwcm9wZXJ0eSAnbW9udGgnICgnbW50aCcpICdtbnRoJyAtLSAndGhlIG1vbnRoIG9mIGEgZGF0ZScgW10KLSMgICAgICAgIHByb3BlcnR5ICdkYXknICgnZGF5ICcpICdsb25nJyAtLSAndGhlIGRheSBvZiB0aGUgbW9udGggb2YgYSBkYXRlJyBbXQotIyAgICAgICAgcHJvcGVydHkgJ3llYXInICgneWVhcicpICdsb25nJyAtLSAndGhlIHllYXIgb2YgYSBkYXRlJyBbXQotIyAgICAgICAgcHJvcGVydHkgJ3RpbWUnICgndGltZScpICdsb25nJyAtLSAndGhlIHRpbWUgc2luY2UgbWlkbmlnaHQgb2YgYSBkYXRlJyBbXQotIyAgICAgICAgcHJvcGVydHkgJ2RhdGUgc3RyaW5nJyAoJ2RzdHInKSAnVEVYVCcgLS0gJ3RoZSBkYXRlIHBvcnRpb24gb2YgYSBkYXRlLXRpbWUgdmFsdWUgYXMgYSBzdHJpbmcnIFtdCi0jICAgICAgICBwcm9wZXJ0eSAndGltZSBzdHJpbmcnICgndHN0cicpICdURVhUJyAtLSAndGhlIHRpbWUgcG9ydGlvbiBvZiBhIGRhdGUtdGltZSB2YWx1ZSBhcyBhIHN0cmluZycgW10KK2NsYXNzIGRhdGUoYWV0b29scy5Db21wb25lbnRJdGVtKToKKwkiIiJkYXRlIC0gQWJzb2x1dGUgZGF0ZSBhbmQgdGltZSB2YWx1ZXMiIiIKKwl3YW50ID0gJ2xkdCAnCitjbGFzcyB3ZWVrZGF5KGFldG9vbHMuTlByb3BlcnR5KToKKwkiIiJ3ZWVrZGF5IC0gdGhlIGRheSBvZiBhIHdlZWsgb2YgYSBkYXRlIiIiCisJd2hpY2ggPSAnd2tkeScKKwl3YW50ID0gJ3drZHknCitjbGFzcyBtb250aChhZXRvb2xzLk5Qcm9wZXJ0eSk6CisJIiIibW9udGggLSB0aGUgbW9udGggb2YgYSBkYXRlIiIiCisJd2hpY2ggPSAnbW50aCcKKwl3YW50ID0gJ21udGgnCitjbGFzcyBkYXkoYWV0b29scy5OUHJvcGVydHkpOgorCSIiImRheSAtIHRoZSBkYXkgb2YgdGhlIG1vbnRoIG9mIGEgZGF0ZSIiIgorCXdoaWNoID0gJ2RheSAnCisJd2FudCA9ICdsb25nJworY2xhc3MgeWVhcihhZXRvb2xzLk5Qcm9wZXJ0eSk6CisJIiIieWVhciAtIHRoZSB5ZWFyIG9mIGEgZGF0ZSIiIgorCXdoaWNoID0gJ3llYXInCisJd2FudCA9ICdsb25nJworY2xhc3MgdGltZShhZXRvb2xzLk5Qcm9wZXJ0eSk6CisJIiIidGltZSAtIHRoZSB0aW1lIHNpbmNlIG1pZG5pZ2h0IG9mIGEgZGF0ZSIiIgorCXdoaWNoID0gJ3RpbWUnCisJd2FudCA9ICdsb25nJworY2xhc3MgZGF0ZV9zdHJpbmcoYWV0b29scy5OUHJvcGVydHkpOgorCSIiImRhdGUgc3RyaW5nIC0gdGhlIGRhdGUgcG9ydGlvbiBvZiBhIGRhdGUtdGltZSB2YWx1ZSBhcyBhIHN0cmluZyIiIgorCXdoaWNoID0gJ2RzdHInCisJd2FudCA9ICdURVhUJworY2xhc3MgdGltZV9zdHJpbmcoYWV0b29scy5OUHJvcGVydHkpOgorCSIiInRpbWUgc3RyaW5nIC0gdGhlIHRpbWUgcG9ydGlvbiBvZiBhIGRhdGUtdGltZSB2YWx1ZSBhcyBhIHN0cmluZyIiIgorCXdoaWNoID0gJ3RzdHInCisJd2FudCA9ICdURVhUJwogCi0jICAgIENsYXNzICdkYXRlcycgKCdsZHQgJykgLS0gJ2V2ZXJ5IGRhdGUnCi0jICAgICAgICBwcm9wZXJ0eSAnJyAoJ2NAIyEnKSAndHlwZScgLS0gJycgWzBdCitkYXRlcyA9IGRhdGUKIAotIyAgICBDbGFzcyAnbW9udGgnICgnbW50aCcpIC0tICdhIG1vbnRoJworY2xhc3MgbW9udGgoYWV0b29scy5Db21wb25lbnRJdGVtKToKKwkiIiJtb250aCAtIGEgbW9udGgiIiIKKwl3YW50ID0gJ21udGgnCiAKLSMgICAgQ2xhc3MgJ21vbnRocycgKCdtbnRoJykgLS0gJ2V2ZXJ5IG1vbnRoJwotIyAgICAgICAgcHJvcGVydHkgJycgKCdjQCMhJykgJ3R5cGUnIC0tICcnIFswXQorbW9udGhzID0gbW9udGgKIAotIyAgICBDbGFzcyAnSmFudWFyeScgKCdqYW4gJykgLS0gIkl0J3MgSnVuZSBpbiBKYW51YXJ5Li4uIgorY2xhc3MgSmFudWFyeShhZXRvb2xzLkNvbXBvbmVudEl0ZW0pOgorCSIiIkphbnVhcnkgLSBJdCdzIEp1bmUgaW4gSmFudWFyeS4uLiIiIgorCXdhbnQgPSAnamFuICcKIAotIyAgICBDbGFzcyAnRmVicnVhcnknICgnZmViICcpIC0tICd0aGUgbW9udGggb2YgRmVicnVhcnknCitjbGFzcyBGZWJydWFyeShhZXRvb2xzLkNvbXBvbmVudEl0ZW0pOgorCSIiIkZlYnJ1YXJ5IC0gdGhlIG1vbnRoIG9mIEZlYnJ1YXJ5IiIiCisJd2FudCA9ICdmZWIgJwogCi0jICAgIENsYXNzICdNYXJjaCcgKCdtYXIgJykgLS0gJ3RoZSBtb250aCBvZiBNYXJjaCcKK2NsYXNzIE1hcmNoKGFldG9vbHMuQ29tcG9uZW50SXRlbSk6CisJIiIiTWFyY2ggLSB0aGUgbW9udGggb2YgTWFyY2giIiIKKwl3YW50ID0gJ21hciAnCiAKLSMgICAgQ2xhc3MgJ0FwcmlsJyAoJ2FwciAnKSAtLSAndGhlIG1vbnRoIG9mIEFwcmlsJworY2xhc3MgQXByaWwoYWV0b29scy5Db21wb25lbnRJdGVtKToKKwkiIiJBcHJpbCAtIHRoZSBtb250aCBvZiBBcHJpbCIiIgorCXdhbnQgPSAnYXByICcKIAotIyAgICBDbGFzcyAnTWF5JyAoJ21heSAnKSAtLSAndGhlIHZlcnkgbWVycnkgbW9udGggb2YgTWF5JworY2xhc3MgTWF5KGFldG9vbHMuQ29tcG9uZW50SXRlbSk6CisJIiIiTWF5IC0gdGhlIHZlcnkgbWVycnkgbW9udGggb2YgTWF5IiIiCisJd2FudCA9ICdtYXkgJwogCi0jICAgIENsYXNzICdKdW5lJyAoJ2p1biAnKSAtLSAndGhlIG1vbnRoIG9mIEp1bmUnCitjbGFzcyBKdW5lKGFldG9vbHMuQ29tcG9uZW50SXRlbSk6CisJIiIiSnVuZSAtIHRoZSBtb250aCBvZiBKdW5lIiIiCisJd2FudCA9ICdqdW4gJwogCi0jICAgIENsYXNzICdKdWx5JyAoJ2p1bCAnKSAtLSAndGhlIG1vbnRoIG9mIEp1bHknCitjbGFzcyBKdWx5KGFldG9vbHMuQ29tcG9uZW50SXRlbSk6CisJIiIiSnVseSAtIHRoZSBtb250aCBvZiBKdWx5IiIiCisJd2FudCA9ICdqdWwgJwogCi0jICAgIENsYXNzICdBdWd1c3QnICgnYXVnICcpIC0tICd0aGUgbW9udGggb2YgQXVndXN0JworY2xhc3MgQXVndXN0KGFldG9vbHMuQ29tcG9uZW50SXRlbSk6CisJIiIiQXVndXN0IC0gdGhlIG1vbnRoIG9mIEF1Z3VzdCIiIgorCXdhbnQgPSAnYXVnICcKIAotIyAgICBDbGFzcyAnU2VwdGVtYmVyJyAoJ3NlcCAnKSAtLSAndGhlIG1vbnRoIG9mIFNlcHRlbWJlcicKK2NsYXNzIFNlcHRlbWJlcihhZXRvb2xzLkNvbXBvbmVudEl0ZW0pOgorCSIiIlNlcHRlbWJlciAtIHRoZSBtb250aCBvZiBTZXB0ZW1iZXIiIiIKKwl3YW50ID0gJ3NlcCAnCiAKLSMgICAgQ2xhc3MgJ09jdG9iZXInICgnb2N0ICcpIC0tICd0aGUgbW9udGggb2YgT2N0b2JlcicKK2NsYXNzIE9jdG9iZXIoYWV0b29scy5Db21wb25lbnRJdGVtKToKKwkiIiJPY3RvYmVyIC0gdGhlIG1vbnRoIG9mIE9jdG9iZXIiIiIKKwl3YW50ID0gJ29jdCAnCiAKLSMgICAgQ2xhc3MgJ05vdmVtYmVyJyAoJ25vdiAnKSAtLSAndGhlIG1vbnRoIG9mIE5vdmVtYmVyJworY2xhc3MgTm92ZW1iZXIoYWV0b29scy5Db21wb25lbnRJdGVtKToKKwkiIiJOb3ZlbWJlciAtIHRoZSBtb250aCBvZiBOb3ZlbWJlciIiIgorCXdhbnQgPSAnbm92ICcKIAotIyAgICBDbGFzcyAnRGVjZW1iZXInICgnZGVjICcpIC0tICd0aGUgbW9udGggb2YgRGVjZW1iZXInCitjbGFzcyBEZWNlbWJlcihhZXRvb2xzLkNvbXBvbmVudEl0ZW0pOgorCSIiIkRlY2VtYmVyIC0gdGhlIG1vbnRoIG9mIERlY2VtYmVyIiIiCisJd2FudCA9ICdkZWMgJwogCi0jICAgIENsYXNzICd3ZWVrZGF5JyAoJ3drZHknKSAtLSAnYSB3ZWVrZGF5JworY2xhc3Mgd2Vla2RheShhZXRvb2xzLkNvbXBvbmVudEl0ZW0pOgorCSIiIndlZWtkYXkgLSBhIHdlZWtkYXkiIiIKKwl3YW50ID0gJ3drZHknCiAKLSMgICAgQ2xhc3MgJ3dlZWtkYXlzJyAoJ3drZHknKSAtLSAnZXZlcnkgd2Vla2RheScKLSMgICAgICAgIHByb3BlcnR5ICcnICgnY0AjIScpICd0eXBlJyAtLSAnJyBbMF0KK3dlZWtkYXlzID0gd2Vla2RheQogCi0jICAgIENsYXNzICdTdW5kYXknICgnc3VuICcpIC0tICdTdW5kYXkgQmxvb2R5IFN1bmRheScKK2NsYXNzIFN1bmRheShhZXRvb2xzLkNvbXBvbmVudEl0ZW0pOgorCSIiIlN1bmRheSAtIFN1bmRheSBCbG9vZHkgU3VuZGF5IiIiCisJd2FudCA9ICdzdW4gJwogCi0jICAgIENsYXNzICdNb25kYXknICgnbW9uICcpIC0tICdCbHVlIE1vbmRheScKK2NsYXNzIE1vbmRheShhZXRvb2xzLkNvbXBvbmVudEl0ZW0pOgorCSIiIk1vbmRheSAtIEJsdWUgTW9uZGF5IiIiCisJd2FudCA9ICdtb24gJwogCi0jICAgIENsYXNzICdUdWVzZGF5JyAoJ3R1ZSAnKSAtLSAnUnVieSBUdWVzZGF5JworY2xhc3MgVHVlc2RheShhZXRvb2xzLkNvbXBvbmVudEl0ZW0pOgorCSIiIlR1ZXNkYXkgLSBSdWJ5IFR1ZXNkYXkiIiIKKwl3YW50ID0gJ3R1ZSAnCiAKLSMgICAgQ2xhc3MgJ1dlZG5lc2RheScgKCd3ZWQgJykgLS0gJ1dlZG5lc2RheSBXZWVrJworY2xhc3MgV2VkbmVzZGF5KGFldG9vbHMuQ29tcG9uZW50SXRlbSk6CisJIiIiV2VkbmVzZGF5IC0gV2VkbmVzZGF5IFdlZWsiIiIKKwl3YW50ID0gJ3dlZCAnCiAKLSMgICAgQ2xhc3MgJ1RodXJzZGF5JyAoJ3RodSAnKSAtLSAnVGh1cnNkYXkgQWZ0ZXJub29uJworY2xhc3MgVGh1cnNkYXkoYWV0b29scy5Db21wb25lbnRJdGVtKToKKwkiIiJUaHVyc2RheSAtIFRodXJzZGF5IEFmdGVybm9vbiIiIgorCXdhbnQgPSAndGh1ICcKIAotIyAgICBDbGFzcyAnRnJpZGF5JyAoJ2ZyaSAnKSAtLSAnRnJpZGF5JworY2xhc3MgRnJpZGF5KGFldG9vbHMuQ29tcG9uZW50SXRlbSk6CisJIiIiRnJpZGF5IC0gRnJpZGF5IiIiCisJd2FudCA9ICdmcmkgJwogCi0jICAgIENsYXNzICdTYXR1cmRheScgKCdzYXQgJykgLS0gIlNhdHVyZGF5IE5pZ2h0J3MgQWxyaWdodCBmb3IgRmlnaHRpbmciCitjbGFzcyBTYXR1cmRheShhZXRvb2xzLkNvbXBvbmVudEl0ZW0pOgorCSIiIlNhdHVyZGF5IC0gU2F0dXJkYXkgTmlnaHQncyBBbHJpZ2h0IGZvciBGaWdodGluZyIiIgorCXdhbnQgPSAnc2F0ICcKIAotIyAgICBDbGFzcyAnUkdCIGNvbG9yJyAoJ2NSR0InKSAtLSAnVGhyZWUgbnVtYmVycyBzcGVjaWZ5aW5nIHJlZCwgZ3JlZW4sIGJsdWUgY29sb3IgdmFsdWVzJworY2xhc3MgUkdCX2NvbG9yKGFldG9vbHMuQ29tcG9uZW50SXRlbSk6CisJIiIiUkdCIGNvbG9yIC0gVGhyZWUgbnVtYmVycyBzcGVjaWZ5aW5nIHJlZCwgZ3JlZW4sIGJsdWUgY29sb3IgdmFsdWVzIiIiCisJd2FudCA9ICdjUkdCJwogCi0jICAgIENsYXNzICdSR0IgY29sb3JzJyAoJ2NSR0InKSAtLSAnZXZlcnkgUkdCIGNvbG9yJwotIyAgICAgICAgcHJvcGVydHkgJycgKCdjQCMhJykgJ3R5cGUnIC0tICcnIFswXQorUkdCX2NvbG9ycyA9IFJHQl9jb2xvcgogCi0jICAgIENsYXNzICdpbnRlZ2VyJyAoJ2xvbmcnKSAtLSAnQW4gaW50ZWdyYWwgbnVtYmVyJworY2xhc3MgaW50ZWdlcihhZXRvb2xzLkNvbXBvbmVudEl0ZW0pOgorCSIiImludGVnZXIgLSBBbiBpbnRlZ3JhbCBudW1iZXIiIiIKKwl3YW50ID0gJ2xvbmcnCiAKLSMgICAgQ2xhc3MgJ2ludGVnZXJzJyAoJ2xvbmcnKSAtLSAnZXZlcnkgaW50ZWdlcicKLSMgICAgICAgIHByb3BlcnR5ICcnICgnY0AjIScpICd0eXBlJyAtLSAnJyBbMF0KK2ludGVnZXJzID0gaW50ZWdlcgogCi0jICAgIENsYXNzICdib29sZWFuJyAoJ2Jvb2wnKSAtLSAnQSB0cnVlIG9yIGZhbHNlIHZhbHVlJworY2xhc3MgYm9vbGVhbihhZXRvb2xzLkNvbXBvbmVudEl0ZW0pOgorCSIiImJvb2xlYW4gLSBBIHRydWUgb3IgZmFsc2UgdmFsdWUiIiIKKwl3YW50ID0gJ2Jvb2wnCiAKLSMgICAgQ2xhc3MgJ2Jvb2xlYW5zJyAoJ2Jvb2wnKSAtLSAnZXZlcnkgYm9vbGVhbicKLSMgICAgICAgIHByb3BlcnR5ICcnICgnY0AjIScpICd0eXBlJyAtLSAnJyBbMF0KK2Jvb2xlYW5zID0gYm9vbGVhbgogCi0jICAgIENsYXNzICdyZWFsJyAoJ2RvdWInKSAtLSAnQSByZWFsIG51bWJlcicKK2NsYXNzIHJlYWwoYWV0b29scy5Db21wb25lbnRJdGVtKToKKwkiIiJyZWFsIC0gQSByZWFsIG51bWJlciIiIgorCXdhbnQgPSAnZG91YicKIAotIyAgICBDbGFzcyAncmVhbHMnICgnZG91YicpIC0tICdldmVyeSByZWFsJwotIyAgICAgICAgcHJvcGVydHkgJycgKCdjQCMhJykgJ3R5cGUnIC0tICcnIFswXQorcmVhbHMgPSByZWFsCiAKLSMgICAgQ2xhc3MgJ2xpc3QnICgnbGlzdCcpIC0tICdBbiBvcmRlcmVkIGNvbGxlY3Rpb24gb2YgaXRlbXMnCi0jICAgICAgICBwcm9wZXJ0eSAnbGVuZ3RoJyAoJ2xlbmcnKSAnbG9uZycgLS0gJ3RoZSBsZW5ndGggb2YgYSBsaXN0JyBbXQorY2xhc3MgbGlzdChhZXRvb2xzLkNvbXBvbmVudEl0ZW0pOgorCSIiImxpc3QgLSBBbiBvcmRlcmVkIGNvbGxlY3Rpb24gb2YgaXRlbXMiIiIKKwl3YW50ID0gJ2xpc3QnCitjbGFzcyBsZW5ndGgoYWV0b29scy5OUHJvcGVydHkpOgorCSIiImxlbmd0aCAtIHRoZSBsZW5ndGggb2YgYSBsaXN0IiIiCisJd2hpY2ggPSAnbGVuZycKKwl3YW50ID0gJ2xvbmcnCiAKLSMgICAgQ2xhc3MgJ2xpc3RzJyAoJ2xpc3QnKSAtLSAnZXZlcnkgbGlzdCcKLSMgICAgICAgIHByb3BlcnR5ICcnICgnY0AjIScpICd0eXBlJyAtLSAnJyBbMF0KK2xpc3RzID0gbGlzdAogCi0jICAgIENsYXNzICdsaW5rZWQgbGlzdCcgKCdsbHN0JykgLS0gJ0FuIG9yZGVyZWQgY29sbGVjdGlvbiBvZiBpdGVtcycKLSMgICAgICAgIHByb3BlcnR5ICdsZW5ndGgnICgnbGVuZycpICdsb25nJyAtLSAndGhlIGxlbmd0aCBvZiBhIGxpc3QnIFtdCitjbGFzcyBsaW5rZWRfbGlzdChhZXRvb2xzLkNvbXBvbmVudEl0ZW0pOgorCSIiImxpbmtlZCBsaXN0IC0gQW4gb3JkZXJlZCBjb2xsZWN0aW9uIG9mIGl0ZW1zIiIiCisJd2FudCA9ICdsbHN0JworIyByZXBlYXRlZCBwcm9wZXJ0eSBsZW5ndGggdGhlIGxlbmd0aCBvZiBhIGxpc3QKIAotIyAgICBDbGFzcyAnbGlua2VkIGxpc3RzJyAoJ2xsc3QnKSAtLSAnZXZlcnkgbGlua2VkIGxpc3QnCi0jICAgICAgICBwcm9wZXJ0eSAnJyAoJ2NAIyEnKSAndHlwZScgLS0gJycgWzBdCitsaW5rZWRfbGlzdHMgPSBsaW5rZWRfbGlzdAogCi0jICAgIENsYXNzICd2ZWN0b3InICgndmVjdCcpIC0tICdBbiBvcmRlcmVkIGNvbGxlY3Rpb24gb2YgaXRlbXMnCi0jICAgICAgICBwcm9wZXJ0eSAnbGVuZ3RoJyAoJ2xlbmcnKSAnbG9uZycgLS0gJ3RoZSBsZW5ndGggb2YgYSBsaXN0JyBbXQorY2xhc3MgdmVjdG9yKGFldG9vbHMuQ29tcG9uZW50SXRlbSk6CisJIiIidmVjdG9yIC0gQW4gb3JkZXJlZCBjb2xsZWN0aW9uIG9mIGl0ZW1zIiIiCisJd2FudCA9ICd2ZWN0JworIyByZXBlYXRlZCBwcm9wZXJ0eSBsZW5ndGggdGhlIGxlbmd0aCBvZiBhIGxpc3QKIAotIyAgICBDbGFzcyAndmVjdG9ycycgKCd2ZWN0JykgLS0gJ2V2ZXJ5IHZlY3RvcicKLSMgICAgICAgIHByb3BlcnR5ICcnICgnY0AjIScpICd0eXBlJyAtLSAnJyBbMF0KK3ZlY3RvcnMgPSB2ZWN0b3IKIAotIyAgICBDbGFzcyAncmVjb3JkJyAoJ3JlY28nKSAtLSAnQSBzZXQgb2YgbGFiZWxlZCBpdGVtcycKK2NsYXNzIHJlY29yZChhZXRvb2xzLkNvbXBvbmVudEl0ZW0pOgorCSIiInJlY29yZCAtIEEgc2V0IG9mIGxhYmVsZWQgaXRlbXMiIiIKKwl3YW50ID0gJ3JlY28nCiAKLSMgICAgQ2xhc3MgJ3JlY29yZHMnICgncmVjbycpIC0tICdldmVyeSByZWNvcmQnCi0jICAgICAgICBwcm9wZXJ0eSAnJyAoJ2NAIyEnKSAndHlwZScgLS0gJycgWzBdCityZWNvcmRzID0gcmVjb3JkCiAKLSMgICAgQ2xhc3MgJ3NjcmlwdCcgKCdzY3B0JykgLS0gJ0FuIEFwcGxlU2NyaXB0IHNjcmlwdCcKLSMgICAgICAgIHByb3BlcnR5ICdwYXJlbnQnICgncGFyZScpICdzY3B0JyAtLSAndGhlIHBhcmVudCBvZiBhIHNjcmlwdCcgW10KK2NsYXNzIHNjcmlwdChhZXRvb2xzLkNvbXBvbmVudEl0ZW0pOgorCSIiInNjcmlwdCAtIEFuIEFwcGxlU2NyaXB0IHNjcmlwdCIiIgorCXdhbnQgPSAnc2NwdCcKK2NsYXNzIHBhcmVudChhZXRvb2xzLk5Qcm9wZXJ0eSk6CisJIiIicGFyZW50IC0gdGhlIHBhcmVudCBvZiBhIHNjcmlwdCIiIgorCXdoaWNoID0gJ3BhcmUnCisJd2FudCA9ICdzY3B0JwogCi0jICAgIENsYXNzICdzY3JpcHRzJyAoJ3NjcHQnKSAtLSAnZXZlcnkgc2NyaXB0JwotIyAgICAgICAgcHJvcGVydHkgJycgKCdjQCMhJykgJ3R5cGUnIC0tICcnIFswXQorc2NyaXB0cyA9IHNjcmlwdAogCi0jICAgIENsYXNzICdzdHJpbmcnICgnVEVYVCcpIC0tICdhIHNlcXVlbmNlIG9mIGNoYXJhY3RlcnMnCitjbGFzcyBzdHJpbmcoYWV0b29scy5Db21wb25lbnRJdGVtKToKKwkiIiJzdHJpbmcgLSBhIHNlcXVlbmNlIG9mIGNoYXJhY3RlcnMiIiIKKwl3YW50ID0gJ1RFWFQnCiAKLSMgICAgQ2xhc3MgJ3N0cmluZ3MnICgnVEVYVCcpIC0tICdldmVyeSBzdHJpbmcnCi0jICAgICAgICBwcm9wZXJ0eSAnJyAoJ2NAIyEnKSAndHlwZScgLS0gJycgWzBdCitzdHJpbmdzID0gc3RyaW5nCiAKLSMgICAgQ2xhc3MgJ3N0eWxlZCB0ZXh0JyAoJ1NUWFQnKSAtLSAnYSBzZXF1ZW5jZSBvZiBjaGFyYWN0ZXJzIHdpdGggc3R5bGUnCi0jICAgICAgICBwcm9wZXJ0eSAnJyAoJ2NAIyEnKSAndHlwZScgLS0gJycgWzBdCitjbGFzcyBzdHlsZWRfdGV4dChhZXRvb2xzLkNvbXBvbmVudEl0ZW0pOgorCSIiInN0eWxlZCB0ZXh0IC0gYSBzZXF1ZW5jZSBvZiBjaGFyYWN0ZXJzIHdpdGggc3R5bGUiIiIKKwl3YW50ID0gJ1NUWFQnCiAKLSMgICAgQ2xhc3MgJ251bWJlcicgKCdubWJyJykgLS0gJ2FuIGludGVnZXIgb3IgZmxvYXRpbmcgcG9pbnQgbnVtYmVyJworY2xhc3MgbnVtYmVyKGFldG9vbHMuQ29tcG9uZW50SXRlbSk6CisJIiIibnVtYmVyIC0gYW4gaW50ZWdlciBvciBmbG9hdGluZyBwb2ludCBudW1iZXIiIiIKKwl3YW50ID0gJ25tYnInCiAKLSMgICAgQ2xhc3MgJ251bWJlcnMnICgnbm1icicpIC0tICdldmVyeSBudW1iZXInCi0jICAgICAgICBwcm9wZXJ0eSAnJyAoJ2NAIyEnKSAndHlwZScgLS0gJycgWzBdCitudW1iZXJzID0gbnVtYmVyCiAKLSMgICAgQ2xhc3MgJ2NsYXNzJyAoJ3BjbHMnKSAtLSAndGhlIHR5cGUgb2YgYSB2YWx1ZScKLSMgICAgICAgIHByb3BlcnR5ICdpbmhlcml0cycgKCdjQCNeJykgJ3BjbHMnIC0tICdjbGFzc2VzIHRvIGluaGVyaXQgcHJvcGVydGllcyBmcm9tJyBbXQorY2xhc3MgX2NsYXNzKGFldG9vbHMuQ29tcG9uZW50SXRlbSk6CisJIiIiY2xhc3MgLSB0aGUgdHlwZSBvZiBhIHZhbHVlIiIiCisJd2FudCA9ICdwY2xzJworY2xhc3MgaW5oZXJpdHMoYWV0b29scy5OUHJvcGVydHkpOgorCSIiImluaGVyaXRzIC0gY2xhc3NlcyB0byBpbmhlcml0IHByb3BlcnRpZXMgZnJvbSIiIgorCXdoaWNoID0gJ2NAI14nCisJd2FudCA9ICdwY2xzJwogCi0jICAgIENsYXNzICdjbGFzc2VzJyAoJ3BjbHMnKSAtLSAnZXZlcnkgY2xhc3MnCi0jICAgICAgICBwcm9wZXJ0eSAnJyAoJ2NAIyEnKSAndHlwZScgLS0gJycgWzBdCitjbGFzc2VzID0gX2NsYXNzCiAKLSMgICAgQ2xhc3MgJ2V2ZW50JyAoJ2V2bnQnKSAtLSAnYW4gQXBwbGVFdmVudHMgZXZlbnQnCitjbGFzcyBldmVudChhZXRvb2xzLkNvbXBvbmVudEl0ZW0pOgorCSIiImV2ZW50IC0gYW4gQXBwbGVFdmVudHMgZXZlbnQiIiIKKwl3YW50ID0gJ2V2bnQnCiAKLSMgICAgQ2xhc3MgJ2V2ZW50cycgKCdldm50JykgLS0gJ2V2ZXJ5IGV2ZW50JwotIyAgICAgICAgcHJvcGVydHkgJycgKCdjQCMhJykgJ3R5cGUnIC0tICcnIFswXQorZXZlbnRzID0gZXZlbnQKIAotIyAgICBDbGFzcyAncHJvcGVydHknICgncHJvcCcpIC0tICdhbiBBcHBsZUV2ZW50cyBwcm9wZXJ0eScKK2NsYXNzIHByb3BlcnR5KGFldG9vbHMuQ29tcG9uZW50SXRlbSk6CisJIiIicHJvcGVydHkgLSBhbiBBcHBsZUV2ZW50cyBwcm9wZXJ0eSIiIgorCXdhbnQgPSAncHJvcCcKIAotIyAgICBDbGFzcyAncHJvcGVydGllcycgKCdwcm9wJykgLS0gJ2V2ZXJ5IHByb3BlcnR5JwotIyAgICAgICAgcHJvcGVydHkgJycgKCdjQCMhJykgJ3R5cGUnIC0tICcnIFswXQorcHJvcGVydGllcyA9IHByb3BlcnR5CiAKLSMgICAgQ2xhc3MgJ2NvbnN0YW50JyAoJ2VudW0nKSAtLSAnQSBjb25zdGFudCB2YWx1ZScKK2NsYXNzIGNvbnN0YW50KGFldG9vbHMuQ29tcG9uZW50SXRlbSk6CisJIiIiY29uc3RhbnQgLSBBIGNvbnN0YW50IHZhbHVlIiIiCisJd2FudCA9ICdlbnVtJwogCi0jICAgIENsYXNzICdjb25zdGFudHMnICgnZW51bScpIC0tICdldmVyeSBjb25zdGFudCcKLSMgICAgICAgIHByb3BlcnR5ICcnICgnY0AjIScpICd0eXBlJyAtLSAnJyBbMF0KK2NvbnN0YW50cyA9IGNvbnN0YW50CiAKLSMgICAgQ2xhc3MgJ3ByZXBvc2l0aW9uJyAoJ3ByZXAnKSAtLSAnYW4gQXBwbGVFdmVudHMgcHJlcG9zaXRpb24nCitjbGFzcyBwcmVwb3NpdGlvbihhZXRvb2xzLkNvbXBvbmVudEl0ZW0pOgorCSIiInByZXBvc2l0aW9uIC0gYW4gQXBwbGVFdmVudHMgcHJlcG9zaXRpb24iIiIKKwl3YW50ID0gJ3ByZXAnCiAKLSMgICAgQ2xhc3MgJ3ByZXBvc2l0aW9ucycgKCdwcmVwJykgLS0gJ2V2ZXJ5IHByZXBvc2l0aW9uJwotIyAgICAgICAgcHJvcGVydHkgJycgKCdjQCMhJykgJ3R5cGUnIC0tICcnIFswXQorcHJlcG9zaXRpb25zID0gcHJlcG9zaXRpb24KIAotIyAgICBDbGFzcyAna2V5JyAoJ2tleWYnKSAtLSAnYW4gQXBwbGVFdmVudHMga2V5IGZvcm0nCitjbGFzcyBrZXkoYWV0b29scy5Db21wb25lbnRJdGVtKToKKwkiIiJrZXkgLSBhbiBBcHBsZUV2ZW50cyBrZXkgZm9ybSIiIgorCXdhbnQgPSAna2V5ZicKIAotIyAgICBDbGFzcyAna2V5cycgKCdrZXlmJykgLS0gJ2V2ZXJ5IGtleScKLSMgICAgICAgIHByb3BlcnR5ICcnICgnY0AjIScpICd0eXBlJyAtLSAnJyBbMF0KK2tleXMgPSBrZXkKIAotIyAgICBDbGFzcyAncGljdHVyZScgKCdQSUNUJykgLS0gJ0EgcGljdHVyZScKK2NsYXNzIHBpY3R1cmUoYWV0b29scy5Db21wb25lbnRJdGVtKToKKwkiIiJwaWN0dXJlIC0gQSBwaWN0dXJlIiIiCisJd2FudCA9ICdQSUNUJwogCi0jICAgIENsYXNzICdwaWN0dXJlcycgKCdQSUNUJykgLS0gJ2V2ZXJ5IHBpY3R1cmUnCi0jICAgICAgICBwcm9wZXJ0eSAnJyAoJ2NAIyEnKSAndHlwZScgLS0gJycgWzBdCitwaWN0dXJlcyA9IHBpY3R1cmUKIAotIyAgICBDbGFzcyAncmVmZXJlbmNlJyAoJ29iaiAnKSAtLSAnQW4gQXBwbGVTY3JpcHQgcmVmZXJlbmNlJworY2xhc3MgcmVmZXJlbmNlKGFldG9vbHMuQ29tcG9uZW50SXRlbSk6CisJIiIicmVmZXJlbmNlIC0gQW4gQXBwbGVTY3JpcHQgcmVmZXJlbmNlIiIiCisJd2FudCA9ICdvYmogJwogCi0jICAgIENsYXNzICdyZWZlcmVuY2VzJyAoJ29iaiAnKSAtLSAnZXZlcnkgcmVmZXJlbmNlJwotIyAgICAgICAgcHJvcGVydHkgJycgKCdjQCMhJykgJ3R5cGUnIC0tICcnIFswXQorcmVmZXJlbmNlcyA9IHJlZmVyZW5jZQogCi0jICAgIENsYXNzICdkYXRhJyAoJ3JkYXQnKSAtLSAnQW4gQXBwbGVTY3JpcHQgcmF3IGRhdGEgb2JqZWN0JworY2xhc3MgZGF0YShhZXRvb2xzLkNvbXBvbmVudEl0ZW0pOgorCSIiImRhdGEgLSBBbiBBcHBsZVNjcmlwdCByYXcgZGF0YSBvYmplY3QiIiIKKwl3YW50ID0gJ3JkYXQnCiAKLSMgICAgQ2xhc3MgJ2hhbmRsZXInICgnaGFuZCcpIC0tICdBbiBBcHBsZVNjcmlwdCBoYW5kbGVyJworY2xhc3MgaGFuZGxlcihhZXRvb2xzLkNvbXBvbmVudEl0ZW0pOgorCSIiImhhbmRsZXIgLSBBbiBBcHBsZVNjcmlwdCBoYW5kbGVyIiIiCisJd2FudCA9ICdoYW5kJwogCi0jICAgIENsYXNzICdoYW5kbGVycycgKCdoYW5kJykgLS0gJ2V2ZXJ5IGhhbmRsZXInCi0jICAgICAgICBwcm9wZXJ0eSAnJyAoJ2NAIyEnKSAndHlwZScgLS0gJycgWzBdCitoYW5kbGVycyA9IGhhbmRsZXIKIAotIyAgICBDbGFzcyAnbGlzdCBvciByZWNvcmQnICgnbHIgICcpIC0tICdhIGxpc3Qgb3IgcmVjb3JkJworY2xhc3MgbGlzdF9vcl9yZWNvcmQoYWV0b29scy5Db21wb25lbnRJdGVtKToKKwkiIiJsaXN0IG9yIHJlY29yZCAtIGEgbGlzdCBvciByZWNvcmQiIiIKKwl3YW50ID0gJ2xyICAnCiAKLSMgICAgQ2xhc3MgJ2xpc3Qgb3Igc3RyaW5nJyAoJ2xzICAnKSAtLSAnYSBsaXN0IG9yIHN0cmluZycKK2NsYXNzIGxpc3Rfb3Jfc3RyaW5nKGFldG9vbHMuQ29tcG9uZW50SXRlbSk6CisJIiIibGlzdCBvciBzdHJpbmcgLSBhIGxpc3Qgb3Igc3RyaW5nIiIiCisJd2FudCA9ICdscyAgJworCitjbGFzcyBsaXN0XzJjX19yZWNvcmRfb3JfdGV4dChhZXRvb2xzLkNvbXBvbmVudEl0ZW0pOgorCSIiImxpc3QsIHJlY29yZCBvciB0ZXh0IC0gYSBsaXN0LCByZWNvcmQgb3IgdGV4dCIiIgorCXdhbnQgPSAnbHJzICcKKworY2xhc3MgbnVtYmVyX29yX2RhdGUoYWV0b29scy5Db21wb25lbnRJdGVtKToKKwkiIiJudW1iZXIgb3IgZGF0ZSAtIGEgbnVtYmVyIG9yIGRhdGUiIiIKKwl3YW50ID0gJ25kICAnCisKK2NsYXNzIG51bWJlcl8yY19fZGF0ZV9vcl90ZXh0KGFldG9vbHMuQ29tcG9uZW50SXRlbSk6CisJIiIibnVtYmVyLCBkYXRlIG9yIHRleHQgLSBhIG51bWJlciwgZGF0ZSBvciB0ZXh0IiIiCisJd2FudCA9ICduZHMgJworCitjbGFzcyBhbGlhcyhhZXRvb2xzLkNvbXBvbmVudEl0ZW0pOgorCSIiImFsaWFzIC0gYSByZWZlcmVuY2UgdG8gYW4gZXhpc3RpbmcgZmlsZSIiIgorCXdhbnQgPSAnYWxpcycKKworYWxpYXNlcyA9IGFsaWFzCisKK2NsYXNzIGFwcGxpY2F0aW9uKGFldG9vbHMuQ29tcG9uZW50SXRlbSk6CisJIiIiYXBwbGljYXRpb24gLSBzcGVjaWZpZXMgZ2xvYmFsIHByb3BlcnRpZXMgb2YgQXBwbGVTY3JpcHQiIiIKKwl3YW50ID0gJ2NhcHAnCitjbGFzcyByZXN1bHQoYWV0b29scy5OUHJvcGVydHkpOgorCSIiInJlc3VsdCAtIHRoZSBsYXN0IHJlc3VsdCBvZiBldmFsdWF0aW9uIiIiCisJd2hpY2ggPSAncnNsdCcKKwl3YW50ID0gJ2NvYmonCitjbGFzcyBzcGFjZShhZXRvb2xzLk5Qcm9wZXJ0eSk6CisJIiIic3BhY2UgLSBhIHNwYWNlIGNoYXJhY3RlciIiIgorCXdoaWNoID0gJ3NwYWMnCisJd2FudCA9ICdURVhUJworY2xhc3MgX3JldHVybihhZXRvb2xzLk5Qcm9wZXJ0eSk6CisJIiIicmV0dXJuIC0gYSByZXR1cm4gY2hhcmFjdGVyIiIiCisJd2hpY2ggPSAncmV0ICcKKwl3YW50ID0gJ1RFWFQnCitjbGFzcyB0YWIoYWV0b29scy5OUHJvcGVydHkpOgorCSIiInRhYiAtIGEgdGFiIGNoYXJhY3RlciIiIgorCXdoaWNoID0gJ3RhYiAnCisJd2FudCA9ICdURVhUJworY2xhc3MgbWludXRlcyhhZXRvb2xzLk5Qcm9wZXJ0eSk6CisJIiIibWludXRlcyAtIHRoZSBudW1iZXIgb2Ygc2Vjb25kcyBpbiBhIG1pbnV0ZSIiIgorCXdoaWNoID0gJ21pbiAnCisJd2FudCA9ICdURVhUJworY2xhc3MgaG91cnMoYWV0b29scy5OUHJvcGVydHkpOgorCSIiImhvdXJzIC0gdGhlIG51bWJlciBvZiBzZWNvbmRzIGluIGFuIGhvdXIiIiIKKwl3aGljaCA9ICdob3VyJworCXdhbnQgPSAnVEVYVCcKK2NsYXNzIGRheXMoYWV0b29scy5OUHJvcGVydHkpOgorCSIiImRheXMgLSB0aGUgbnVtYmVyIG9mIHNlY29uZHMgaW4gYSBkYXkiIiIKKwl3aGljaCA9ICdkYXlzJworCXdhbnQgPSAnVEVYVCcKK2NsYXNzIHdlZWtzKGFldG9vbHMuTlByb3BlcnR5KToKKwkiIiJ3ZWVrcyAtIHRoZSBudW1iZXIgb2Ygc2Vjb25kcyBpbiBhIHdlZWsiIiIKKwl3aGljaCA9ICd3ZWVrJworCXdhbnQgPSAnVEVYVCcKK2NsYXNzIHBpKGFldG9vbHMuTlByb3BlcnR5KToKKwkiIiJwaSAtIHRoZSBjb25zdGFudCBwaSIiIgorCXdoaWNoID0gJ3BpICAnCisJd2FudCA9ICdkb3ViJworY2xhc3MgcHJpbnRfbGVuZ3RoKGFldG9vbHMuTlByb3BlcnR5KToKKwkiIiJwcmludCBsZW5ndGggLSB0aGUgbWF4aW11bSBsZW5ndGggdG8gcHJpbnQiIiIKKwl3aGljaCA9ICdwcmxuJworCXdhbnQgPSAnbG9uZycKK2NsYXNzIHByaW50X2RlcHRoKGFldG9vbHMuTlByb3BlcnR5KToKKwkiIiJwcmludCBkZXB0aCAtIHRoZSBtYXhpbXVtIGRlcHRoIHRvIHByaW50IiIiCisJd2hpY2ggPSAncHJkcCcKKwl3YW50ID0gJ2xvbmcnCitjbGFzcyByZXZlcnNlKGFldG9vbHMuTlByb3BlcnR5KToKKwkiIiJyZXZlcnNlIC0gdGhlIHJldmVyc2Ugb2YgYSBsaXN0IiIiCisJd2hpY2ggPSAncnZzZScKKwl3YW50ID0gJ2xpc3QnCitjbGFzcyByZXN0KGFldG9vbHMuTlByb3BlcnR5KToKKwkiIiJyZXN0IC0gdGhlIHJlc3Qgb2YgYSBsaXN0IiIiCisJd2hpY2ggPSAncmVzdCcKKwl3YW50ID0gJ2xpc3QnCitjbGFzcyB0ZXh0X2l0ZW1fZGVsaW1pdGVycyhhZXRvb2xzLk5Qcm9wZXJ0eSk6CisJIiIidGV4dCBpdGVtIGRlbGltaXRlcnMgLSB0aGUgdGV4dCBpdGVtIGRlbGltaXRlcnMgb2YgYSBzdHJpbmciIiIKKwl3aGljaCA9ICd0eGRsJworCXdhbnQgPSAnbGlzdCcKK2NsYXNzIEFwcGxlU2NyaXB0KGFldG9vbHMuTlByb3BlcnR5KToKKwkiIiJBcHBsZVNjcmlwdCAtIHRoZSB0b3AtbGV2ZWwgc2NyaXB0IG9iamVjdCIiIgorCXdoaWNoID0gJ2FzY3InCisJd2FudCA9ICdzY3B0JworCithcHBsaWNhdGlvbnMgPSBhcHBsaWNhdGlvbgogCi0jICAgIENsYXNzICdsaXN0LCByZWNvcmQgb3IgdGV4dCcgKCdscnMgJykgLS0gJ2EgbGlzdCwgcmVjb3JkIG9yIHRleHQnCithcHAgPSBhcHBsaWNhdGlvbgogCi0jICAgIENsYXNzICdudW1iZXIgb3IgZGF0ZScgKCduZCAgJykgLS0gJ2EgbnVtYmVyIG9yIGRhdGUnCitjbGFzcyB2ZXJzaW9uKGFldG9vbHMuQ29tcG9uZW50SXRlbSk6CisJIiIidmVyc2lvbiAtIGEgdmVyc2lvbiB2YWx1ZSIiIgorCXdhbnQgPSAndmVycycKIAotIyAgICBDbGFzcyAnbnVtYmVyLCBkYXRlIG9yIHRleHQnICgnbmRzICcpIC0tICdhIG51bWJlciwgZGF0ZSBvciB0ZXh0JworY2xhc3Mgd3JpdGluZ19jb2RlX2luZm8oYWV0b29scy5Db21wb25lbnRJdGVtKToKKwkiIiJ3cml0aW5nIGNvZGUgaW5mbyAtIFNjcmlwdCBjb2RlIGFuZCBsYW5ndWFnZSBjb2RlIG9mIHRleHQgcnVuIiIiCisJd2FudCA9ICdjaXRsJworY2xhc3Mgc2NyaXB0X2NvZGUoYWV0b29scy5OUHJvcGVydHkpOgorCSIiInNjcmlwdCBjb2RlIC0gdGhlIHNjcmlwdCBjb2RlIGZvciB0aGUgdGV4dCIiIgorCXdoaWNoID0gJ3BzY2QnCisJd2FudCA9ICdzaG9yJworY2xhc3MgbGFuZ3VhZ2VfY29kZShhZXRvb2xzLk5Qcm9wZXJ0eSk6CisJIiIibGFuZ3VhZ2UgY29kZSAtIHRoZSBsYW5ndWFnZSBjb2RlIGZvciB0aGUgdGV4dCIiIgorCXdoaWNoID0gJ3BsY2QnCisJd2FudCA9ICdzaG9yJwogCi0jICAgIENsYXNzICdhbGlhcycgKCdhbGlzJykgLS0gJ2EgcmVmZXJlbmNlIHRvIGFuIGV4aXN0aW5nIGZpbGUnCit3cml0aW5nX2NvZGVfaW5mb3MgPSB3cml0aW5nX2NvZGVfaW5mbworX2VtcHR5X2FlX25hbWUuX3Byb3BkaWN0ID0geworfQorX2VtcHR5X2FlX25hbWUuX2VsZW1kaWN0ID0geworfQordXBwZXJfY2FzZS5fcHJvcGRpY3QgPSB7Cit9Cit1cHBlcl9jYXNlLl9lbGVtZGljdCA9IHsKK30KK21hY2hpbmVzLl9wcm9wZGljdCA9IHsKK30KK21hY2hpbmVzLl9lbGVtZGljdCA9IHsKK30KK3pvbmVzLl9wcm9wZGljdCA9IHsKK30KK3pvbmVzLl9lbGVtZGljdCA9IHsKK30KK3NlY29uZHMuX3Byb3BkaWN0ID0geworfQorc2Vjb25kcy5fZWxlbWRpY3QgPSB7Cit9CitpdGVtLl9wcm9wZGljdCA9IHsKKwknaWQnIDogaWQsCit9CitpdGVtLl9lbGVtZGljdCA9IHsKK30KK3RleHRfaXRlbXMuX3Byb3BkaWN0ID0geworfQordGV4dF9pdGVtcy5fZWxlbWRpY3QgPSB7Cit9CitkYXRlLl9wcm9wZGljdCA9IHsKKwknd2Vla2RheScgOiB3ZWVrZGF5LAorCSdtb250aCcgOiBtb250aCwKKwknZGF5JyA6IGRheSwKKwkneWVhcicgOiB5ZWFyLAorCSd0aW1lJyA6IHRpbWUsCisJJ2RhdGVfc3RyaW5nJyA6IGRhdGVfc3RyaW5nLAorCSd0aW1lX3N0cmluZycgOiB0aW1lX3N0cmluZywKK30KK2RhdGUuX2VsZW1kaWN0ID0geworfQorbW9udGguX3Byb3BkaWN0ID0geworfQorbW9udGguX2VsZW1kaWN0ID0geworfQorSmFudWFyeS5fcHJvcGRpY3QgPSB7Cit9CitKYW51YXJ5Ll9lbGVtZGljdCA9IHsKK30KK0ZlYnJ1YXJ5Ll9wcm9wZGljdCA9IHsKK30KK0ZlYnJ1YXJ5Ll9lbGVtZGljdCA9IHsKK30KK01hcmNoLl9wcm9wZGljdCA9IHsKK30KK01hcmNoLl9lbGVtZGljdCA9IHsKK30KK0FwcmlsLl9wcm9wZGljdCA9IHsKK30KK0FwcmlsLl9lbGVtZGljdCA9IHsKK30KK01heS5fcHJvcGRpY3QgPSB7Cit9CitNYXkuX2VsZW1kaWN0ID0geworfQorSnVuZS5fcHJvcGRpY3QgPSB7Cit9CitKdW5lLl9lbGVtZGljdCA9IHsKK30KK0p1bHkuX3Byb3BkaWN0ID0geworfQorSnVseS5fZWxlbWRpY3QgPSB7Cit9CitBdWd1c3QuX3Byb3BkaWN0ID0geworfQorQXVndXN0Ll9lbGVtZGljdCA9IHsKK30KK1NlcHRlbWJlci5fcHJvcGRpY3QgPSB7Cit9CitTZXB0ZW1iZXIuX2VsZW1kaWN0ID0geworfQorT2N0b2Jlci5fcHJvcGRpY3QgPSB7Cit9CitPY3RvYmVyLl9lbGVtZGljdCA9IHsKK30KK05vdmVtYmVyLl9wcm9wZGljdCA9IHsKK30KK05vdmVtYmVyLl9lbGVtZGljdCA9IHsKK30KK0RlY2VtYmVyLl9wcm9wZGljdCA9IHsKK30KK0RlY2VtYmVyLl9lbGVtZGljdCA9IHsKK30KK3dlZWtkYXkuX3Byb3BkaWN0ID0geworfQord2Vla2RheS5fZWxlbWRpY3QgPSB7Cit9CitTdW5kYXkuX3Byb3BkaWN0ID0geworfQorU3VuZGF5Ll9lbGVtZGljdCA9IHsKK30KK01vbmRheS5fcHJvcGRpY3QgPSB7Cit9CitNb25kYXkuX2VsZW1kaWN0ID0geworfQorVHVlc2RheS5fcHJvcGRpY3QgPSB7Cit9CitUdWVzZGF5Ll9lbGVtZGljdCA9IHsKK30KK1dlZG5lc2RheS5fcHJvcGRpY3QgPSB7Cit9CitXZWRuZXNkYXkuX2VsZW1kaWN0ID0geworfQorVGh1cnNkYXkuX3Byb3BkaWN0ID0geworfQorVGh1cnNkYXkuX2VsZW1kaWN0ID0geworfQorRnJpZGF5Ll9wcm9wZGljdCA9IHsKK30KK0ZyaWRheS5fZWxlbWRpY3QgPSB7Cit9CitTYXR1cmRheS5fcHJvcGRpY3QgPSB7Cit9CitTYXR1cmRheS5fZWxlbWRpY3QgPSB7Cit9CitSR0JfY29sb3IuX3Byb3BkaWN0ID0geworfQorUkdCX2NvbG9yLl9lbGVtZGljdCA9IHsKK30KK2ludGVnZXIuX3Byb3BkaWN0ID0geworfQoraW50ZWdlci5fZWxlbWRpY3QgPSB7Cit9Citib29sZWFuLl9wcm9wZGljdCA9IHsKK30KK2Jvb2xlYW4uX2VsZW1kaWN0ID0geworfQorcmVhbC5fcHJvcGRpY3QgPSB7Cit9CityZWFsLl9lbGVtZGljdCA9IHsKK30KK2xpc3QuX3Byb3BkaWN0ID0geworCSdsZW5ndGgnIDogbGVuZ3RoLAorfQorbGlzdC5fZWxlbWRpY3QgPSB7Cit9CitsaW5rZWRfbGlzdC5fcHJvcGRpY3QgPSB7CisJJ2xlbmd0aCcgOiBsZW5ndGgsCit9CitsaW5rZWRfbGlzdC5fZWxlbWRpY3QgPSB7Cit9Cit2ZWN0b3IuX3Byb3BkaWN0ID0geworCSdsZW5ndGgnIDogbGVuZ3RoLAorfQordmVjdG9yLl9lbGVtZGljdCA9IHsKK30KK3JlY29yZC5fcHJvcGRpY3QgPSB7Cit9CityZWNvcmQuX2VsZW1kaWN0ID0geworfQorc2NyaXB0Ll9wcm9wZGljdCA9IHsKKwkncGFyZW50JyA6IHBhcmVudCwKK30KK3NjcmlwdC5fZWxlbWRpY3QgPSB7Cit9CitzdHJpbmcuX3Byb3BkaWN0ID0geworfQorc3RyaW5nLl9lbGVtZGljdCA9IHsKK30KK3N0eWxlZF90ZXh0Ll9wcm9wZGljdCA9IHsKK30KK3N0eWxlZF90ZXh0Ll9lbGVtZGljdCA9IHsKK30KK251bWJlci5fcHJvcGRpY3QgPSB7Cit9CitudW1iZXIuX2VsZW1kaWN0ID0geworfQorX2NsYXNzLl9wcm9wZGljdCA9IHsKKwknaW5oZXJpdHMnIDogaW5oZXJpdHMsCit9CitfY2xhc3MuX2VsZW1kaWN0ID0geworfQorZXZlbnQuX3Byb3BkaWN0ID0geworfQorZXZlbnQuX2VsZW1kaWN0ID0geworfQorcHJvcGVydHkuX3Byb3BkaWN0ID0geworfQorcHJvcGVydHkuX2VsZW1kaWN0ID0geworfQorY29uc3RhbnQuX3Byb3BkaWN0ID0geworfQorY29uc3RhbnQuX2VsZW1kaWN0ID0geworfQorcHJlcG9zaXRpb24uX3Byb3BkaWN0ID0geworfQorcHJlcG9zaXRpb24uX2VsZW1kaWN0ID0geworfQora2V5Ll9wcm9wZGljdCA9IHsKK30KK2tleS5fZWxlbWRpY3QgPSB7Cit9CitwaWN0dXJlLl9wcm9wZGljdCA9IHsKK30KK3BpY3R1cmUuX2VsZW1kaWN0ID0geworfQorcmVmZXJlbmNlLl9wcm9wZGljdCA9IHsKK30KK3JlZmVyZW5jZS5fZWxlbWRpY3QgPSB7Cit9CitkYXRhLl9wcm9wZGljdCA9IHsKK30KK2RhdGEuX2VsZW1kaWN0ID0geworfQoraGFuZGxlci5fcHJvcGRpY3QgPSB7Cit9CitoYW5kbGVyLl9lbGVtZGljdCA9IHsKK30KK2xpc3Rfb3JfcmVjb3JkLl9wcm9wZGljdCA9IHsKK30KK2xpc3Rfb3JfcmVjb3JkLl9lbGVtZGljdCA9IHsKK30KK2xpc3Rfb3Jfc3RyaW5nLl9wcm9wZGljdCA9IHsKK30KK2xpc3Rfb3Jfc3RyaW5nLl9lbGVtZGljdCA9IHsKK30KK2xpc3RfMmNfX3JlY29yZF9vcl90ZXh0Ll9wcm9wZGljdCA9IHsKK30KK2xpc3RfMmNfX3JlY29yZF9vcl90ZXh0Ll9lbGVtZGljdCA9IHsKK30KK251bWJlcl9vcl9kYXRlLl9wcm9wZGljdCA9IHsKK30KK251bWJlcl9vcl9kYXRlLl9lbGVtZGljdCA9IHsKK30KK251bWJlcl8yY19fZGF0ZV9vcl90ZXh0Ll9wcm9wZGljdCA9IHsKK30KK251bWJlcl8yY19fZGF0ZV9vcl90ZXh0Ll9lbGVtZGljdCA9IHsKK30KK2FsaWFzLl9wcm9wZGljdCA9IHsKK30KK2FsaWFzLl9lbGVtZGljdCA9IHsKK30KK2FwcGxpY2F0aW9uLl9wcm9wZGljdCA9IHsKKwkncmVzdWx0JyA6IHJlc3VsdCwKKwknc3BhY2UnIDogc3BhY2UsCisJJ19yZXR1cm4nIDogX3JldHVybiwKKwkndGFiJyA6IHRhYiwKKwknbWludXRlcycgOiBtaW51dGVzLAorCSdob3VycycgOiBob3VycywKKwknZGF5cycgOiBkYXlzLAorCSd3ZWVrcycgOiB3ZWVrcywKKwkncGknIDogcGksCisJJ3ByaW50X2xlbmd0aCcgOiBwcmludF9sZW5ndGgsCisJJ3ByaW50X2RlcHRoJyA6IHByaW50X2RlcHRoLAorCSdyZXZlcnNlJyA6IHJldmVyc2UsCisJJ3Jlc3QnIDogcmVzdCwKKwkndGV4dF9pdGVtX2RlbGltaXRlcnMnIDogdGV4dF9pdGVtX2RlbGltaXRlcnMsCisJJ0FwcGxlU2NyaXB0JyA6IEFwcGxlU2NyaXB0LAorfQorYXBwbGljYXRpb24uX2VsZW1kaWN0ID0geworfQordmVyc2lvbi5fcHJvcGRpY3QgPSB7Cit9Cit2ZXJzaW9uLl9lbGVtZGljdCA9IHsKK30KK3dyaXRpbmdfY29kZV9pbmZvLl9wcm9wZGljdCA9IHsKKwknc2NyaXB0X2NvZGUnIDogc2NyaXB0X2NvZGUsCisJJ2xhbmd1YWdlX2NvZGUnIDogbGFuZ3VhZ2VfY29kZSwKK30KK3dyaXRpbmdfY29kZV9pbmZvLl9lbGVtZGljdCA9IHsKK30KK19FbnVtX2NvbnMgPSB7CisJJ2Nhc2UnIDogJ2Nhc2UnLAkjIGNhc2UKKwknZGlhY3JpdGljYWxzJyA6ICdkaWFjJywJIyBkaWFjcml0aWNhbHMKKwknd2hpdGVfc3BhY2UnIDogJ3doaXQnLAkjIHdoaXRlIHNwYWNlCisJJ2h5cGhlbnMnIDogJ2h5cGgnLAkjIGh5cGhlbnMKKwknZXhwYW5zaW9uJyA6ICdleHBhJywJIyBleHBhbnNpb24KKwkncHVuY3R1YXRpb24nIDogJ3B1bmMnLAkjIHB1bmN0dWF0aW9uCisJJ2FwcGxpY2F0aW9uX3Jlc3BvbnNlcycgOiAncm10ZScsCSMgcmVtb3RlIGV2ZW50IHJlcGxpZXMKK30KIAotIyAgICBDbGFzcyAnYWxpYXNlcycgKCdhbGlzJykgLS0gJ2V2ZXJ5IGFsaWFzJwotIyAgICAgICAgcHJvcGVydHkgJycgKCdjQCMhJykgJ3R5cGUnIC0tICcnIFswXQorX0VudW1fYm9vdiA9IHsKKwkndHJ1ZScgOiAndHJ1ZScsCSMgdGhlIHRydWUgYm9vbGVhbiB2YWx1ZQorCSdmYWxzZScgOiAnZmFscycsCSMgdGhlIGZhbHNlIGJvb2xlYW4gdmFsdWUKK30KIAotIyAgICBDbGFzcyAnYXBwbGljYXRpb24nICgnY2FwcCcpIC0tICdzcGVjaWZpZXMgZ2xvYmFsIHByb3BlcnRpZXMgb2YgQXBwbGVTY3JpcHQnCi0jICAgICAgICBwcm9wZXJ0eSAncmVzdWx0JyAoJ3JzbHQnKSAnY29iaicgLS0gJ3RoZSBsYXN0IHJlc3VsdCBvZiBldmFsdWF0aW9uJyBbXQotIyAgICAgICAgcHJvcGVydHkgJ3NwYWNlJyAoJ3NwYWMnKSAnVEVYVCcgLS0gJ2Egc3BhY2UgY2hhcmFjdGVyJyBbXQotIyAgICAgICAgcHJvcGVydHkgJ3JldHVybicgKCdyZXQgJykgJ1RFWFQnIC0tICdhIHJldHVybiBjaGFyYWN0ZXInIFtdCi0jICAgICAgICBwcm9wZXJ0eSAndGFiJyAoJ3RhYiAnKSAnVEVYVCcgLS0gJ2EgdGFiIGNoYXJhY3RlcicgW10KLSMgICAgICAgIHByb3BlcnR5ICdtaW51dGVzJyAoJ21pbiAnKSAnVEVYVCcgLS0gJ3RoZSBudW1iZXIgb2Ygc2Vjb25kcyBpbiBhIG1pbnV0ZScgW10KLSMgICAgICAgIHByb3BlcnR5ICdob3VycycgKCdob3VyJykgJ1RFWFQnIC0tICd0aGUgbnVtYmVyIG9mIHNlY29uZHMgaW4gYW4gaG91cicgW10KLSMgICAgICAgIHByb3BlcnR5ICdkYXlzJyAoJ2RheXMnKSAnVEVYVCcgLS0gJ3RoZSBudW1iZXIgb2Ygc2Vjb25kcyBpbiBhIGRheScgW10KLSMgICAgICAgIHByb3BlcnR5ICd3ZWVrcycgKCd3ZWVrJykgJ1RFWFQnIC0tICd0aGUgbnVtYmVyIG9mIHNlY29uZHMgaW4gYSB3ZWVrJyBbXQotIyAgICAgICAgcHJvcGVydHkgJ3BpJyAoJ3BpICAnKSAnZG91YicgLS0gJ3RoZSBjb25zdGFudCBwaScgW10KLSMgICAgICAgIHByb3BlcnR5ICdwcmludCBsZW5ndGgnICgncHJsbicpICdsb25nJyAtLSAndGhlIG1heGltdW0gbGVuZ3RoIHRvIHByaW50JyBbXQotIyAgICAgICAgcHJvcGVydHkgJ3ByaW50IGRlcHRoJyAoJ3ByZHAnKSAnbG9uZycgLS0gJ3RoZSBtYXhpbXVtIGRlcHRoIHRvIHByaW50JyBbXQotIyAgICAgICAgcHJvcGVydHkgJ3JldmVyc2UnICgncnZzZScpICdsaXN0JyAtLSAndGhlIHJldmVyc2Ugb2YgYSBsaXN0JyBbXQotIyAgICAgICAgcHJvcGVydHkgJ3Jlc3QnICgncmVzdCcpICdsaXN0JyAtLSAndGhlIHJlc3Qgb2YgYSBsaXN0JyBbXQotIyAgICAgICAgcHJvcGVydHkgJ3RleHQgaXRlbSBkZWxpbWl0ZXJzJyAoJ3R4ZGwnKSAnbGlzdCcgLS0gJ3RoZSB0ZXh0IGl0ZW0gZGVsaW1pdGVycyBvZiBhIHN0cmluZycgW10KLSMgICAgICAgIHByb3BlcnR5ICdBcHBsZVNjcmlwdCcgKCdhc2NyJykgJ3NjcHQnIC0tICd0aGUgdG9wLWxldmVsIHNjcmlwdCBvYmplY3QnIFtdCitfRW51bV9taXNjID0geworCSdjdXJyZW50X2FwcGxpY2F0aW9uJyA6ICdjdXJhJywJIyB0aGUgY3VycmVudCBhcHBsaWNhdGlvbgorfQogCi0jICAgIENsYXNzICdhcHBsaWNhdGlvbnMnICgnY2FwcCcpIC0tICdldmVyeSBhcHBsaWNhdGlvbicKLSMgICAgICAgIHByb3BlcnR5ICcnICgnY0AjIScpICd0eXBlJyAtLSAnJyBbMF0KIAotIyAgICBDbGFzcyAnYXBwJyAoJ2NhcHAnKSAtLSAnU2hvcnQgbmFtZSBmb3IgYXBwbGljYXRpb24nCisjCisjIEluZGljZXMgb2YgdHlwZXMgZGVjbGFyZWQgaW4gdGhpcyBtb2R1bGUKKyMKK19jbGFzc2RlY2xhcmF0aW9ucyA9IHsKKwknamFuICcgOiBKYW51YXJ5LAorCSdQSUNUJyA6IHBpY3R1cmUsCisJJ3ZlcnMnIDogdmVyc2lvbiwKKwknc2F0ICcgOiBTYXR1cmRheSwKKwknbm92ICcgOiBOb3ZlbWJlciwKKwknbHMgICcgOiBsaXN0X29yX3N0cmluZywKKwknbGlzdCcgOiBsaXN0LAorCSdjUkdCJyA6IFJHQl9jb2xvciwKKwknY2l0bCcgOiB3cml0aW5nX2NvZGVfaW5mbywKKwknc2NuZCcgOiBzZWNvbmRzLAorCSd0aHUgJyA6IFRodXJzZGF5LAorCSdrZXlmJyA6IGtleSwKKwknc3VuICcgOiBTdW5kYXksCisJJ3drZHknIDogd2Vla2RheSwKKwkncmRhdCcgOiBkYXRhLAorCSd2ZWN0JyA6IHZlY3RvciwKKwknb2JqICcgOiByZWZlcmVuY2UsCisJJ2hhbmQnIDogaGFuZGxlciwKKwkndHVlICcgOiBUdWVzZGF5LAorCSdkZWMgJyA6IERlY2VtYmVyLAorCSdlbnVtJyA6IGNvbnN0YW50LAorCSduZCAgJyA6IG51bWJlcl9vcl9kYXRlLAorCSd3ZWQgJyA6IFdlZG5lc2RheSwKKwkndW5kZicgOiBfZW1wdHlfYWVfbmFtZSwKKwkncmVjbycgOiByZWNvcmQsCisJJ2NhcHAnIDogYXBwbGljYXRpb24sCisJJ2NvYmonIDogaXRlbSwKKwkncHJlcCcgOiBwcmVwb3NpdGlvbiwKKwknbWFjaCcgOiBtYWNoaW5lcywKKwknY2l0bScgOiB0ZXh0X2l0ZW1zLAorCSdib29sJyA6IGJvb2xlYW4sCisJJ25tYnInIDogbnVtYmVyLAorCSdwcm9wJyA6IHByb3BlcnR5LAorCSdsb25nJyA6IGludGVnZXIsCisJJ3NlcCAnIDogU2VwdGVtYmVyLAorCSdzY3B0JyA6IHNjcmlwdCwKKwkncGNscycgOiBfY2xhc3MsCisJJ2FsaXMnIDogYWxpYXMsCisJJ21vbiAnIDogTW9uZGF5LAorCSdsciAgJyA6IGxpc3Rfb3JfcmVjb3JkLAorCSdqdWwgJyA6IEp1bHksCisJJ2ZyaSAnIDogRnJpZGF5LAorCSdvY3QgJyA6IE9jdG9iZXIsCisJJ21hciAnIDogTWFyY2gsCisJJ2xkdCAnIDogZGF0ZSwKKwknbHJzICcgOiBsaXN0XzJjX19yZWNvcmRfb3JfdGV4dCwKKwknanVuICcgOiBKdW5lLAorCSdjYXNlJyA6IHVwcGVyX2Nhc2UsCisJJ2RvdWInIDogcmVhbCwKKwknZmViICcgOiBGZWJydWFyeSwKKwknbmRzICcgOiBudW1iZXJfMmNfX2RhdGVfb3JfdGV4dCwKKwknbGxzdCcgOiBsaW5rZWRfbGlzdCwKKwknU1RYVCcgOiBzdHlsZWRfdGV4dCwKKwknYXVnICcgOiBBdWd1c3QsCisJJ1RFWFQnIDogc3RyaW5nLAorCSdhcHIgJyA6IEFwcmlsLAorCSdtYXkgJyA6IE1heSwKKwknem9uZScgOiB6b25lcywKKwknZXZudCcgOiBldmVudCwKKwknbW50aCcgOiBtb250aCwKK30KIAotIyAgICBDbGFzcyAndmVyc2lvbicgKCd2ZXJzJykgLS0gJ2EgdmVyc2lvbiB2YWx1ZScKK19wcm9wZGVjbGFyYXRpb25zID0geworCSdkYXkgJyA6IGRheSwKKwkncnNsdCcgOiByZXN1bHQsCisJJ3RpbWUnIDogdGltZSwKKwkncHJsbicgOiBwcmludF9sZW5ndGgsCisJJ3ByZHAnIDogcHJpbnRfZGVwdGgsCisJJ3R4ZGwnIDogdGV4dF9pdGVtX2RlbGltaXRlcnMsCisJJ2RheXMnIDogZGF5cywKKwknc3BhYycgOiBzcGFjZSwKKwknaG91cicgOiBob3VycywKKwkncHNjZCcgOiBzY3JpcHRfY29kZSwKKwkncGxjZCcgOiBsYW5ndWFnZV9jb2RlLAorCSdyZXQgJyA6IF9yZXR1cm4sCisJJ3RzdHInIDogdGltZV9zdHJpbmcsCisJJ3RhYiAnIDogdGFiLAorCSdydnNlJyA6IHJldmVyc2UsCisJJ3drZHknIDogd2Vla2RheSwKKwknSUQgICcgOiBpZCwKKwknY0AjXicgOiBpbmhlcml0cywKKwknYXNjcicgOiBBcHBsZVNjcmlwdCwKKwkncmVzdCcgOiByZXN0LAorCSdkc3RyJyA6IGRhdGVfc3RyaW5nLAorCSdtaW4gJyA6IG1pbnV0ZXMsCisJJ3BpICAnIDogcGksCisJJ2xlbmcnIDogbGVuZ3RoLAorCSd5ZWFyJyA6IHllYXIsCisJJ3BhcmUnIDogcGFyZW50LAorCSdtbnRoJyA6IG1vbnRoLAorCSd3ZWVrJyA6IHdlZWtzLAorfQogCi0jICAgIENsYXNzICd3cml0aW5nIGNvZGUgaW5mbycgKCdjaXRsJykgLS0gJ1NjcmlwdCBjb2RlIGFuZCBsYW5ndWFnZSBjb2RlIG9mIHRleHQgcnVuJwotIyAgICAgICAgcHJvcGVydHkgJ3NjcmlwdCBjb2RlJyAoJ3BzY2QnKSAnc2hvcicgLS0gJ3RoZSBzY3JpcHQgY29kZSBmb3IgdGhlIHRleHQnIFtdCi0jICAgICAgICBwcm9wZXJ0eSAnbGFuZ3VhZ2UgY29kZScgKCdwbGNkJykgJ3Nob3InIC0tICd0aGUgbGFuZ3VhZ2UgY29kZSBmb3IgdGhlIHRleHQnIFtdCitfY29tcGRlY2xhcmF0aW9ucyA9IHsKK30KIAotIyAgICBDbGFzcyAnd3JpdGluZyBjb2RlIGluZm9zJyAoJ2NpdGwnKSAtLSAnZXZlcnkgd3JpdGluZyBjb2RlIGluZm8nCi0jICAgICAgICBwcm9wZXJ0eSAnJyAoJ2NAIyEnKSAndHlwZScgLS0gJycgWzBdCitfZW51bWRlY2xhcmF0aW9ucyA9IHsKKwknY29ucycgOiBfRW51bV9jb25zLAorCSdib292JyA6IF9FbnVtX2Jvb3YsCisJJ21pc2MnIDogX0VudW1fbWlzYywKK30KZGlmZiAtLWdpdCBhL01hYy9MaWIvc2NyaXB0aW5nL0NvZGVXYXJyaW9yX1N0YW5kYXJkX1N1aXRlLnB5IGIvTWFjL0xpYi9zY3JpcHRpbmcvQ29kZVdhcnJpb3JfU3RhbmRhcmRfU3VpdGUucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjYyY2ZjZQotLS0gL2Rldi9udWxsCisrKyBiL01hYy9MaWIvc2NyaXB0aW5nL0NvZGVXYXJyaW9yX1N0YW5kYXJkX1N1aXRlLnB5CkBAIC0wLDAgKzEsNDIzIEBACisiIiJTdWl0ZSBDb2RlV2FycmlvciBTdGFuZGFyZCBTdWl0ZTogU3RhbmRhcmQgc3VpdGUgZXZlbnRzIHN1cHBvcnRlZCBieSB0aGUgQ29kZVdhcnJpb3IgSURFLgorTGV2ZWwgMSwgdmVyc2lvbiAxCisKK0dlbmVyYXRlZCBmcm9tIGZsYXA6TWV0cm93ZXJrczpNZXRyb3dlcmtzIENvZGVXYXJyaW9yOkNvZGVXYXJyaW9yIElERSAyLjAuMQorQUVURS9BRVVUIHJlc291cmNlIHZlcnNpb24gMS8wLCBsYW5ndWFnZSAwLCBzY3JpcHQgMAorIiIiCisKK2ltcG9ydCBhZXRvb2xzCitpbXBvcnQgTWFjT1MKKworX2NvZGUgPSAnQ1dJRScKKworY2xhc3MgQ29kZVdhcnJpb3JfU3RhbmRhcmRfU3VpdGU6CisKKwlfYXJnbWFwX2Nsb3NlID0geworCQknc2F2aW5nJyA6ICdzYXZvJywKKwkJJ3NhdmluZ19pbicgOiAna2ZpbCcsCisJfQorCisJZGVmIGNsb3NlKHNlbGYsIF9vYmplY3QsIF9hdHRyaWJ1dGVzPXt9LCAqKl9hcmd1bWVudHMpOgorCQkiIiJjbG9zZTogQ2xvc2UgYW4gb2JqZWN0CisJCVJlcXVpcmVkIGFyZ3VtZW50OiB0aGUgb2JqZWN0IHRvIGNsb3NlCisJCUtleXdvcmQgYXJndW1lbnQgc2F2aW5nOiBTcGVjaWZpZXMgd2hldGhlciBvciBub3QgY2hhbmdlcyBzaG91bGQgYmUgc2F2ZWQgYmVmb3JlIGNsb3NpbmcKKwkJS2V5d29yZCBhcmd1bWVudCBzYXZpbmdfaW46IHRoZSBmaWxlIGluIHdoaWNoIHRvIHNhdmUgdGhlIG9iamVjdAorCQlLZXl3b3JkIGFyZ3VtZW50IF9hdHRyaWJ1dGVzOiBBcHBsZUV2ZW50IGF0dHJpYnV0ZSBkaWN0aW9uYXJ5CisJCSIiIgorCQlfY29kZSA9ICdjb3JlJworCQlfc3ViY29kZSA9ICdjbG9zJworCisJCWFldG9vbHMua2V5c3Vic3QoX2FyZ3VtZW50cywgc2VsZi5fYXJnbWFwX2Nsb3NlKQorCQlfYXJndW1lbnRzWyctLS0tJ10gPSBfb2JqZWN0CisKKwkJYWV0b29scy5lbnVtc3Vic3QoX2FyZ3VtZW50cywgJ3Nhdm8nLCBfRW51bV9zYXZvKQorCisJCV9yZXBseSwgX2FyZ3VtZW50cywgX2F0dHJpYnV0ZXMgPSBzZWxmLnNlbmQoX2NvZGUsIF9zdWJjb2RlLAorCQkJCV9hcmd1bWVudHMsIF9hdHRyaWJ1dGVzKQorCQlpZiBfYXJndW1lbnRzLmhhc19rZXkoJ2Vycm4nKToKKwkJCXJhaXNlIGFldG9vbHMuRXJyb3IsIGFldG9vbHMuZGVjb2RlZXJyb3IoX2FyZ3VtZW50cykKKwkJIyBYWFhYIE9wdGlvbmFsbHkgZGVjb2RlIHJlc3VsdAorCQlpZiBfYXJndW1lbnRzLmhhc19rZXkoJy0tLS0nKToKKwkJCXJldHVybiBfYXJndW1lbnRzWyctLS0tJ10KKworCV9hcmdtYXBfY291bnQgPSB7CisJCSdlYWNoJyA6ICdrb2NsJywKKwl9CisKKwlkZWYgY291bnQoc2VsZiwgX29iamVjdCwgX2F0dHJpYnV0ZXM9e30sICoqX2FyZ3VtZW50cyk6CisJCSIiImNvdW50OiBSZXR1cm4gdGhlIG51bWJlciBvZiBlbGVtZW50cyBvZiBhIHBhcnRpY3VsYXIgY2xhc3Mgd2l0aGluIGFuIG9iamVjdAorCQlSZXF1aXJlZCBhcmd1bWVudDogdGhlIG9iamVjdCB3aG9zZSBlbGVtZW50cyBhcmUgdG8gYmUgY291bnRlZAorCQlLZXl3b3JkIGFyZ3VtZW50IGVhY2g6IHRoZSBjbGFzcyBvZiB0aGUgZWxlbWVudHMgdG8gYmUgY291bnRlZC4gS2V5d29yZCAnZWFjaCcgaXMgb3B0aW9uYWwgaW4gQXBwbGVTY3JpcHQKKwkJS2V5d29yZCBhcmd1bWVudCBfYXR0cmlidXRlczogQXBwbGVFdmVudCBhdHRyaWJ1dGUgZGljdGlvbmFyeQorCQlSZXR1cm5zOiB0aGUgbnVtYmVyIG9mIGVsZW1lbnRzCisJCSIiIgorCQlfY29kZSA9ICdjb3JlJworCQlfc3ViY29kZSA9ICdjbnRlJworCisJCWFldG9vbHMua2V5c3Vic3QoX2FyZ3VtZW50cywgc2VsZi5fYXJnbWFwX2NvdW50KQorCQlfYXJndW1lbnRzWyctLS0tJ10gPSBfb2JqZWN0CisKKworCQlfcmVwbHksIF9hcmd1bWVudHMsIF9hdHRyaWJ1dGVzID0gc2VsZi5zZW5kKF9jb2RlLCBfc3ViY29kZSwKKwkJCQlfYXJndW1lbnRzLCBfYXR0cmlidXRlcykKKwkJaWYgX2FyZ3VtZW50cy5oYXNfa2V5KCdlcnJuJyk6CisJCQlyYWlzZSBhZXRvb2xzLkVycm9yLCBhZXRvb2xzLmRlY29kZWVycm9yKF9hcmd1bWVudHMpCisJCSMgWFhYWCBPcHRpb25hbGx5IGRlY29kZSByZXN1bHQKKwkJaWYgX2FyZ3VtZW50cy5oYXNfa2V5KCctLS0tJyk6CisJCQlyZXR1cm4gX2FyZ3VtZW50c1snLS0tLSddCisKKwlfYXJnbWFwX2dldCA9IHsKKwkJJ2FzJyA6ICdydHlwJywKKwl9CisKKwlkZWYgZ2V0KHNlbGYsIF9vYmplY3QsIF9hdHRyaWJ1dGVzPXt9LCAqKl9hcmd1bWVudHMpOgorCQkiIiJnZXQ6IEdldCB0aGUgZGF0YSBmb3IgYW4gb2JqZWN0CisJCVJlcXVpcmVkIGFyZ3VtZW50OiB0aGUgb2JqZWN0IHdob3NlIGRhdGEgaXMgdG8gYmUgcmV0dXJuZWQKKwkJS2V5d29yZCBhcmd1bWVudCBhczogdGhlIGRlc2lyZWQgdHlwZXMgZm9yIHRoZSBkYXRhLCBpbiBvcmRlciBvZiBwcmVmZXJlbmNlCisJCUtleXdvcmQgYXJndW1lbnQgX2F0dHJpYnV0ZXM6IEFwcGxlRXZlbnQgYXR0cmlidXRlIGRpY3Rpb25hcnkKKwkJUmV0dXJuczogVGhlIGRhdGEgZnJvbSB0aGUgb2JqZWN0CisJCSIiIgorCQlfY29kZSA9ICdjb3JlJworCQlfc3ViY29kZSA9ICdnZXRkJworCisJCWFldG9vbHMua2V5c3Vic3QoX2FyZ3VtZW50cywgc2VsZi5fYXJnbWFwX2dldCkKKwkJX2FyZ3VtZW50c1snLS0tLSddID0gX29iamVjdAorCisKKwkJX3JlcGx5LCBfYXJndW1lbnRzLCBfYXR0cmlidXRlcyA9IHNlbGYuc2VuZChfY29kZSwgX3N1YmNvZGUsCisJCQkJX2FyZ3VtZW50cywgX2F0dHJpYnV0ZXMpCisJCWlmIF9hcmd1bWVudHMuaGFzX2tleSgnZXJybicpOgorCQkJcmFpc2UgYWV0b29scy5FcnJvciwgYWV0b29scy5kZWNvZGVlcnJvcihfYXJndW1lbnRzKQorCQkjIFhYWFggT3B0aW9uYWxseSBkZWNvZGUgcmVzdWx0CisJCWlmIF9hcmd1bWVudHMuaGFzX2tleSgnLS0tLScpOgorCQkJcmV0dXJuIF9hcmd1bWVudHNbJy0tLS0nXQorCisJX2FyZ21hcF9tYWtlID0geworCQknbmV3JyA6ICdrb2NsJywKKwkJJ2F0JyA6ICdpbnNoJywKKwkJJ3dpdGhfZGF0YScgOiAnZGF0YScsCisJCSd3aXRoX3Byb3BlcnRpZXMnIDogJ3ByZHQnLAorCX0KKworCWRlZiBtYWtlKHNlbGYsIF9ub19vYmplY3Q9Tm9uZSwgX2F0dHJpYnV0ZXM9e30sICoqX2FyZ3VtZW50cyk6CisJCSIiIm1ha2U6IE1ha2UgYSBuZXcgZWxlbWVudAorCQlLZXl3b3JkIGFyZ3VtZW50IG5ldzogdGhlIGNsYXNzIG9mIHRoZSBuZXcgZWxlbWVudC4gS2V5d29yZCAnbmV3JyBpcyBvcHRpb25hbCBpbiBBcHBsZVNjcmlwdAorCQlLZXl3b3JkIGFyZ3VtZW50IGF0OiB0aGUgbG9jYXRpb24gYXQgd2hpY2ggdG8gaW5zZXJ0IHRoZSBlbGVtZW50CisJCUtleXdvcmQgYXJndW1lbnQgd2l0aF9kYXRhOiB0aGUgaW5pdGlhbCBkYXRhIGZvciB0aGUgZWxlbWVudAorCQlLZXl3b3JkIGFyZ3VtZW50IHdpdGhfcHJvcGVydGllczogdGhlIGluaXRpYWwgdmFsdWVzIGZvciB0aGUgcHJvcGVydGllcyBvZiB0aGUgZWxlbWVudAorCQlLZXl3b3JkIGFyZ3VtZW50IF9hdHRyaWJ1dGVzOiBBcHBsZUV2ZW50IGF0dHJpYnV0ZSBkaWN0aW9uYXJ5CisJCVJldHVybnM6IHRvIHRoZSBuZXcgb2JqZWN0KHMpCisJCSIiIgorCQlfY29kZSA9ICdjb3JlJworCQlfc3ViY29kZSA9ICdjcmVsJworCisJCWFldG9vbHMua2V5c3Vic3QoX2FyZ3VtZW50cywgc2VsZi5fYXJnbWFwX21ha2UpCisJCWlmIF9ub19vYmplY3QgIT0gTm9uZTogcmFpc2UgVHlwZUVycm9yLCAnTm8gZGlyZWN0IGFyZyBleHBlY3RlZCcKKworCisJCV9yZXBseSwgX2FyZ3VtZW50cywgX2F0dHJpYnV0ZXMgPSBzZWxmLnNlbmQoX2NvZGUsIF9zdWJjb2RlLAorCQkJCV9hcmd1bWVudHMsIF9hdHRyaWJ1dGVzKQorCQlpZiBfYXJndW1lbnRzLmhhc19rZXkoJ2Vycm4nKToKKwkJCXJhaXNlIGFldG9vbHMuRXJyb3IsIGFldG9vbHMuZGVjb2RlZXJyb3IoX2FyZ3VtZW50cykKKwkJIyBYWFhYIE9wdGlvbmFsbHkgZGVjb2RlIHJlc3VsdAorCQlpZiBfYXJndW1lbnRzLmhhc19rZXkoJy0tLS0nKToKKwkJCXJldHVybiBfYXJndW1lbnRzWyctLS0tJ10KKworCWRlZiBzZWxlY3Qoc2VsZiwgX29iamVjdD1Ob25lLCBfYXR0cmlidXRlcz17fSwgKipfYXJndW1lbnRzKToKKwkJIiIic2VsZWN0OiBTZWxlY3QgdGhlIHNwZWNpZmllZCBvYmplY3QKKwkJUmVxdWlyZWQgYXJndW1lbnQ6IHRoZSBvYmplY3QgdG8gc2VsZWN0CisJCUtleXdvcmQgYXJndW1lbnQgX2F0dHJpYnV0ZXM6IEFwcGxlRXZlbnQgYXR0cmlidXRlIGRpY3Rpb25hcnkKKwkJIiIiCisJCV9jb2RlID0gJ21pc2MnCisJCV9zdWJjb2RlID0gJ3NsY3QnCisKKwkJaWYgX2FyZ3VtZW50czogcmFpc2UgVHlwZUVycm9yLCAnTm8gb3B0aW9uYWwgYXJncyBleHBlY3RlZCcKKwkJX2FyZ3VtZW50c1snLS0tLSddID0gX29iamVjdAorCisKKwkJX3JlcGx5LCBfYXJndW1lbnRzLCBfYXR0cmlidXRlcyA9IHNlbGYuc2VuZChfY29kZSwgX3N1YmNvZGUsCisJCQkJX2FyZ3VtZW50cywgX2F0dHJpYnV0ZXMpCisJCWlmIF9hcmd1bWVudHMuaGFzX2tleSgnZXJybicpOgorCQkJcmFpc2UgYWV0b29scy5FcnJvciwgYWV0b29scy5kZWNvZGVlcnJvcihfYXJndW1lbnRzKQorCQkjIFhYWFggT3B0aW9uYWxseSBkZWNvZGUgcmVzdWx0CisJCWlmIF9hcmd1bWVudHMuaGFzX2tleSgnLS0tLScpOgorCQkJcmV0dXJuIF9hcmd1bWVudHNbJy0tLS0nXQorCisJX2FyZ21hcF9zZXQgPSB7CisJCSd0bycgOiAnZGF0YScsCisJfQorCisJZGVmIHNldChzZWxmLCBfb2JqZWN0LCBfYXR0cmlidXRlcz17fSwgKipfYXJndW1lbnRzKToKKwkJIiIic2V0OiBTZXQgYW4gb2JqZWN0J3MgZGF0YQorCQlSZXF1aXJlZCBhcmd1bWVudDogdGhlIG9iamVjdCB0byBjaGFuZ2UKKwkJS2V5d29yZCBhcmd1bWVudCB0bzogdGhlIG5ldyB2YWx1ZQorCQlLZXl3b3JkIGFyZ3VtZW50IF9hdHRyaWJ1dGVzOiBBcHBsZUV2ZW50IGF0dHJpYnV0ZSBkaWN0aW9uYXJ5CisJCSIiIgorCQlfY29kZSA9ICdjb3JlJworCQlfc3ViY29kZSA9ICdzZXRkJworCisJCWFldG9vbHMua2V5c3Vic3QoX2FyZ3VtZW50cywgc2VsZi5fYXJnbWFwX3NldCkKKwkJX2FyZ3VtZW50c1snLS0tLSddID0gX29iamVjdAorCisKKwkJX3JlcGx5LCBfYXJndW1lbnRzLCBfYXR0cmlidXRlcyA9IHNlbGYuc2VuZChfY29kZSwgX3N1YmNvZGUsCisJCQkJX2FyZ3VtZW50cywgX2F0dHJpYnV0ZXMpCisJCWlmIF9hcmd1bWVudHMuaGFzX2tleSgnZXJybicpOgorCQkJcmFpc2UgYWV0b29scy5FcnJvciwgYWV0b29scy5kZWNvZGVlcnJvcihfYXJndW1lbnRzKQorCQkjIFhYWFggT3B0aW9uYWxseSBkZWNvZGUgcmVzdWx0CisJCWlmIF9hcmd1bWVudHMuaGFzX2tleSgnLS0tLScpOgorCQkJcmV0dXJuIF9hcmd1bWVudHNbJy0tLS0nXQorCisKK2NsYXNzIGFwcGxpY2F0aW9uKGFldG9vbHMuQ29tcG9uZW50SXRlbSk6CisJIiIiYXBwbGljYXRpb24gLSBBbiBhcHBsaWNhdGlvbiBwcm9ncmFtIiIiCisJd2FudCA9ICdjYXBwJworY2xhc3MgdXNlcl9pbnRlcmFjdGlvbihhZXRvb2xzLk5Qcm9wZXJ0eSk6CisJIiIidXNlciBpbnRlcmFjdGlvbiAtIFVzZXIgaW50ZXJhY3Rpb24gbGV2ZWwiIiIKKwl3aGljaCA9ICdpbnRlJworCXdhbnQgPSAnSW50ZScKKyMgICAgICAgIGVsZW1lbnQgJ2RvY3UnIGFzIFsnaW5keCcsICduYW1lJywgJ3JhbmcnXQorIyAgICAgICAgZWxlbWVudCAnY3dpbicgYXMgWydpbmR4JywgJ25hbWUnLCAncmFuZyddCisjICAgICAgICBlbGVtZW50ICdDbGFzJyBhcyBbJ2luZHgnLCAnbmFtZSddCisKK2NsYXNzIGNoYXJhY3RlcihhZXRvb2xzLkNvbXBvbmVudEl0ZW0pOgorCSIiImNoYXJhY3RlciAtIEEgY2hhcmFjdGVyIiIiCisJd2FudCA9ICdjaGEgJworY2xhc3Mgb2Zmc2V0KGFldG9vbHMuTlByb3BlcnR5KToKKwkiIiJvZmZzZXQgLSBvZmZzZXQgb2YgYSB0ZXh0IG9iamVjdCBmcm9tIHRoZSBiZWdpbm5pbmcgb2YgdGhlIGRvY3VtZW50IChmaXJzdCBjaGFyIGhhcyBvZmZzZXQgMSkiIiIKKwl3aGljaCA9ICdwT2ZmJworCXdhbnQgPSAnbG9uZycKK2NsYXNzIGxlbmd0aChhZXRvb2xzLk5Qcm9wZXJ0eSk6CisJIiIibGVuZ3RoIC0gbGVuZ3RoIGluIGNoYXJhY3RlcnMgb2YgdGhpcyBvYmplY3QiIiIKKwl3aGljaCA9ICdwTGVuJworCXdhbnQgPSAnbG9uZycKKworY2xhc3MgZG9jdW1lbnQoYWV0b29scy5Db21wb25lbnRJdGVtKToKKwkiIiJkb2N1bWVudCAtIEEgZG9jdW1lbnQiIiIKKwl3YW50ID0gJ2RvY3UnCitjbGFzcyBmaWxlKGFldG9vbHMuTlByb3BlcnR5KToKKwkiIiJmaWxlIC0gVGhlIGZpbGUgb2YgdGhlIGRvY3VtZW50IiIiCisJd2hpY2ggPSAnZmlsZScKKwl3YW50ID0gJ2ZzcyAnCitjbGFzcyBpbmRleChhZXRvb2xzLk5Qcm9wZXJ0eSk6CisJIiIiaW5kZXggLSB0aGUgbnVtYmVyIG9mIHRoZSBkb2N1bWVudCIiIgorCXdoaWNoID0gJ3BpZHgnCisJd2FudCA9ICdsb25nJworY2xhc3MgbW9kZShhZXRvb2xzLk5Qcm9wZXJ0eSk6CisJIiIibW9kZSAtIFRoZSBkb2N1bWVudLlzIG9wZW4gbW9kZSIiIgorCXdoaWNoID0gJ01vZGUnCisJd2FudCA9ICdNb2RlJworY2xhc3MgbW9kaWZpZWQoYWV0b29scy5OUHJvcGVydHkpOgorCSIiIm1vZGlmaWVkIC0gSGFzIHRoZSBkb2N1bWVudCBiZWVuIG1vZGlmaWVkIHNpbmNlIHRoZSBsYXN0IHNhdmU/IiIiCisJd2hpY2ggPSAnaW1vZCcKKwl3YW50ID0gJ2Jvb2wnCitjbGFzcyBuYW1lKGFldG9vbHMuTlByb3BlcnR5KToKKwkiIiJuYW1lIC0gdGhlIHRpdGxlIG9mIHRoZSBkb2N1bWVudCIiIgorCXdoaWNoID0gJ3BuYW0nCisJd2FudCA9ICdpdHh0JworY2xhc3Mgc2VsZWN0aW9uKGFldG9vbHMuTlByb3BlcnR5KToKKwkiIiJzZWxlY3Rpb24gLSB0aGUgc2VsZWN0aW9uIHZpc2libGUgdG8gdGhlIHVzZXIiIiIKKwl3aGljaCA9ICdzZWxlJworCXdhbnQgPSAnY3NlbCcKK2NsYXNzIHdpbmRvdyhhZXRvb2xzLk5Qcm9wZXJ0eSk6CisJIiIid2luZG93IC0gVGhlIHdpbmRvdyBvZiB0aGlzIGRvY3VtZW50LiIiIgorCXdoaWNoID0gJ2N3aW4nCisJd2FudCA9ICdjd2luJworIyAgICAgICAgZWxlbWVudCAnY2hhICcgYXMgWydpbmR4JywgJ3JlbGUnLCAncmFuZycsICd0ZXN0J10KKyMgICAgICAgIGVsZW1lbnQgJ2NpbnMnIGFzIFsncmVsZSddCisjICAgICAgICBlbGVtZW50ICdjbGluJyBhcyBbJ2luZHgnLCAncmFuZycsICdyZWxlJ10KKyMgICAgICAgIGVsZW1lbnQgJ2N0eHQnIGFzIFsncmFuZyddCisKK2RvY3VtZW50cyA9IGRvY3VtZW50CisKK2NsYXNzIGZpbGUoYWV0b29scy5Db21wb25lbnRJdGVtKToKKwkiIiJmaWxlIC0gQSBmaWxlIiIiCisJd2FudCA9ICdmaWxlJworCitmaWxlcyA9IGZpbGUKKworY2xhc3MgaW5zZXJ0aW9uX3BvaW50KGFldG9vbHMuQ29tcG9uZW50SXRlbSk6CisJIiIiaW5zZXJ0aW9uIHBvaW50IC0gQW4gaW5zZXJ0aW9uIGxvY2F0aW9uIGJldHdlZW4gdHdvIG9iamVjdHMiIiIKKwl3YW50ID0gJ2NpbnMnCisjIHJlcGVhdGVkIHByb3BlcnR5IGxlbmd0aCBsZW5ndGggb2YgdGV4dCBvYmplY3QgKGluIGNoYXJhY3RlcnMpCisjIHJlcGVhdGVkIHByb3BlcnR5IG9mZnNldCBvZmZzZXQgb2YgYSB0ZXh0IG9iamVjdCBmcm9tIHRoZSBiZWdpbm5pbmcgb2YgdGhlIGRvY3VtZW50IChmaXJzdCBjaGFyIGhhcyBvZmZzZXQgMSkKKworY2xhc3MgbGluZShhZXRvb2xzLkNvbXBvbmVudEl0ZW0pOgorCSIiImxpbmUgLSBMaW5lcyBvZiB0ZXh0IiIiCisJd2FudCA9ICdjbGluJworIyByZXBlYXRlZCBwcm9wZXJ0eSBpbmRleCBpbmRleCBvZiBhIGxpbmUgb2JqZWN0IGZyb20gdGhlIGJlZ2lubmluZyBvZiB0aGUgZG9jdW1lbnQgKGZpcnN0IGxpbmUgaGFzIGluZGV4IDEpCisjIHJlcGVhdGVkIHByb3BlcnR5IG9mZnNldCBvZmZzZXQgIChpbiBjaGFyYWN0ZXJzKSBvZiBhIGxpbmUgb2JqZWN0IGZyb20gdGhlIGJlZ2lubmluZyBvZiB0aGUgZG9jdW1lbnQKKyMgcmVwZWF0ZWQgcHJvcGVydHkgbGVuZ3RoIGxlbmd0aCBpbiBjaGFyYWN0ZXJzIG9mIHRoaXMgb2JqZWN0CisjICAgICAgICBlbGVtZW50ICdjaGEgJyBhcyBbJ2luZHgnLCAncmFuZycsICdyZWxlJ10KKworbGluZXMgPSBsaW5lCisKK2NsYXNzIHNlbGVjdGlvbl8yZF9vYmplY3QoYWV0b29scy5Db21wb25lbnRJdGVtKToKKwkiIiJzZWxlY3Rpb24tb2JqZWN0IC0gdGhlIHNlbGVjdGlvbiB2aXNpYmxlIHRvIHRoZSB1c2VyIiIiCisJd2FudCA9ICdjc2VsJworY2xhc3MgY29udGVudHMoYWV0b29scy5OUHJvcGVydHkpOgorCSIiImNvbnRlbnRzIC0gdGhlIGNvbnRlbnRzIG9mIHRoZSBzZWxlY3Rpb24iIiIKKwl3aGljaCA9ICdwY250JworCXdhbnQgPSAndHlwZScKKyMgcmVwZWF0ZWQgcHJvcGVydHkgbGVuZ3RoIGxlbmd0aCBvZiB0ZXh0IG9iamVjdCAoaW4gY2hhcmFjdGVycykKKyMgcmVwZWF0ZWQgcHJvcGVydHkgb2Zmc2V0IG9mZnNldCBvZiBhIHRleHQgb2JqZWN0IGZyb20gdGhlIGJlZ2lubmluZyBvZiB0aGUgZG9jdW1lbnQgKGZpcnN0IGNoYXIgaGFzIG9mZnNldCAxKQorIyAgICAgICAgZWxlbWVudCAnY2hhICcgYXMgWydpbmR4JywgJ3JlbGUnLCAncmFuZycsICd0ZXN0J10KKyMgICAgICAgIGVsZW1lbnQgJ2NsaW4nIGFzIFsnaW5keCcsICdyYW5nJywgJ3JlbGUnXQorIyAgICAgICAgZWxlbWVudCAnY3R4dCcgYXMgWydyYW5nJ10KKworY2xhc3MgdGV4dChhZXRvb2xzLkNvbXBvbmVudEl0ZW0pOgorCSIiInRleHQgLSBUZXh0IiIiCisJd2FudCA9ICdjdHh0JworIyByZXBlYXRlZCBwcm9wZXJ0eSBsZW5ndGggbGVuZ3RoIG9mIHRleHQgb2JqZWN0IChpbiBjaGFyYWN0ZXJzKQorIyByZXBlYXRlZCBwcm9wZXJ0eSBvZmZzZXQgb2Zmc2V0IG9mIGEgdGV4dCBvYmplY3QgZnJvbSB0aGUgYmVnaW5uaW5nIG9mIHRoZSBkb2N1bWVudCAoZmlyc3QgY2hhciBoYXMgb2Zmc2V0IDEpCisjICAgICAgICBlbGVtZW50ICdjaGEgJyBhcyBbJ2luZHgnLCAncmVsZScsICdyYW5nJ10KKyMgICAgICAgIGVsZW1lbnQgJ2NpbnMnIGFzIFsncmVsZSddCisjICAgICAgICBlbGVtZW50ICdjbGluJyBhcyBbJ2luZHgnLCAncmFuZycsICdyZWxlJ10KKyMgICAgICAgIGVsZW1lbnQgJ2N0eHQnIGFzIFsncmFuZyddCisKK2NsYXNzIHdpbmRvdyhhZXRvb2xzLkNvbXBvbmVudEl0ZW0pOgorCSIiIndpbmRvdyAtIEEgd2luZG93IiIiCisJd2FudCA9ICdjd2luJworIyByZXBlYXRlZCBwcm9wZXJ0eSBuYW1lIHRoZSB0aXRsZSBvZiB0aGUgd2luZG93CisjIHJlcGVhdGVkIHByb3BlcnR5IGluZGV4IHRoZSBudW1iZXIgb2YgdGhlIHdpbmRvdworY2xhc3MgYm91bmRzKGFldG9vbHMuTlByb3BlcnR5KToKKwkiIiJib3VuZHMgLSB0aGUgYm91bmRhcnkgcmVjdGFuZ2xlIGZvciB0aGUgd2luZG93IiIiCisJd2hpY2ggPSAncGJuZCcKKwl3YW50ID0gJ3FkcnQnCitjbGFzcyBkb2N1bWVudChhZXRvb2xzLk5Qcm9wZXJ0eSk6CisJIiIiZG9jdW1lbnQgLSB0aGUgZG9jdW1lbnQgb2JqZWN0IHRoYXQgb3ducyB0aGlzIHdpbmRvdyIiIgorCXdoaWNoID0gJ2RvY3UnCisJd2FudCA9ICdkb2N1JworY2xhc3MgcG9zaXRpb24oYWV0b29scy5OUHJvcGVydHkpOgorCSIiInBvc2l0aW9uIC0gdXBwZXIgbGVmdCBjb29yZGluYXRlcyBvZiB3aW5kb3ciIiIKKwl3aGljaCA9ICdwcG9zJworCXdhbnQgPSAnUURwdCcKK2NsYXNzIHZpc2libGUoYWV0b29scy5OUHJvcGVydHkpOgorCSIiInZpc2libGUgLSBpcyB0aGUgd2luZG93IHZpc2libGU/IiIiCisJd2hpY2ggPSAncHZpcycKKwl3YW50ID0gJ2Jvb2wnCitjbGFzcyB6b29tZWQoYWV0b29scy5OUHJvcGVydHkpOgorCSIiInpvb21lZCAtIElzIHRoZSB3aW5kb3cgem9vbWVkPyIiIgorCXdoaWNoID0gJ3B6dW0nCisJd2FudCA9ICdib29sJworCit3aW5kb3dzID0gd2luZG93CisjIFhYWFggYXBwbGljYXRpb24gZWxlbWVudCAnQ2xhcycgbm90IGZvdW5kISEKK2FwcGxpY2F0aW9uLl9wcm9wZGljdCA9IHsKKwkndXNlcl9pbnRlcmFjdGlvbicgOiB1c2VyX2ludGVyYWN0aW9uLAorfQorYXBwbGljYXRpb24uX2VsZW1kaWN0ID0geworCSdkb2N1bWVudCcgOiBkb2N1bWVudCwKKwknd2luZG93JyA6IHdpbmRvdywKK30KK2NoYXJhY3Rlci5fcHJvcGRpY3QgPSB7CisJJ29mZnNldCcgOiBvZmZzZXQsCisJJ2xlbmd0aCcgOiBsZW5ndGgsCit9CitjaGFyYWN0ZXIuX2VsZW1kaWN0ID0geworfQorZG9jdW1lbnQuX3Byb3BkaWN0ID0geworCSdmaWxlJyA6IGZpbGUsCisJJ2luZGV4JyA6IGluZGV4LAorCSdtb2RlJyA6IG1vZGUsCisJJ21vZGlmaWVkJyA6IG1vZGlmaWVkLAorCSduYW1lJyA6IG5hbWUsCisJJ3NlbGVjdGlvbicgOiBzZWxlY3Rpb24sCisJJ3dpbmRvdycgOiB3aW5kb3csCit9Citkb2N1bWVudC5fZWxlbWRpY3QgPSB7CisJJ2NoYXJhY3RlcicgOiBjaGFyYWN0ZXIsCisJJ2luc2VydGlvbl9wb2ludCcgOiBpbnNlcnRpb25fcG9pbnQsCisJJ2xpbmUnIDogbGluZSwKKwkndGV4dCcgOiB0ZXh0LAorfQorZmlsZS5fcHJvcGRpY3QgPSB7Cit9CitmaWxlLl9lbGVtZGljdCA9IHsKK30KK2luc2VydGlvbl9wb2ludC5fcHJvcGRpY3QgPSB7CisJJ2xlbmd0aCcgOiBsZW5ndGgsCisJJ29mZnNldCcgOiBvZmZzZXQsCit9CitpbnNlcnRpb25fcG9pbnQuX2VsZW1kaWN0ID0geworfQorbGluZS5fcHJvcGRpY3QgPSB7CisJJ2luZGV4JyA6IGluZGV4LAorCSdvZmZzZXQnIDogb2Zmc2V0LAorCSdsZW5ndGgnIDogbGVuZ3RoLAorfQorbGluZS5fZWxlbWRpY3QgPSB7CisJJ2NoYXJhY3RlcicgOiBjaGFyYWN0ZXIsCit9CitzZWxlY3Rpb25fMmRfb2JqZWN0Ll9wcm9wZGljdCA9IHsKKwknY29udGVudHMnIDogY29udGVudHMsCisJJ2xlbmd0aCcgOiBsZW5ndGgsCisJJ29mZnNldCcgOiBvZmZzZXQsCit9CitzZWxlY3Rpb25fMmRfb2JqZWN0Ll9lbGVtZGljdCA9IHsKKwknY2hhcmFjdGVyJyA6IGNoYXJhY3RlciwKKwknbGluZScgOiBsaW5lLAorCSd0ZXh0JyA6IHRleHQsCit9Cit0ZXh0Ll9wcm9wZGljdCA9IHsKKwknbGVuZ3RoJyA6IGxlbmd0aCwKKwknb2Zmc2V0JyA6IG9mZnNldCwKK30KK3RleHQuX2VsZW1kaWN0ID0geworCSdjaGFyYWN0ZXInIDogY2hhcmFjdGVyLAorCSdpbnNlcnRpb25fcG9pbnQnIDogaW5zZXJ0aW9uX3BvaW50LAorCSdsaW5lJyA6IGxpbmUsCisJJ3RleHQnIDogdGV4dCwKK30KK3dpbmRvdy5fcHJvcGRpY3QgPSB7CisJJ25hbWUnIDogbmFtZSwKKwknaW5kZXgnIDogaW5kZXgsCisJJ2JvdW5kcycgOiBib3VuZHMsCisJJ2RvY3VtZW50JyA6IGRvY3VtZW50LAorCSdwb3NpdGlvbicgOiBwb3NpdGlvbiwKKwkndmlzaWJsZScgOiB2aXNpYmxlLAorCSd6b29tZWQnIDogem9vbWVkLAorfQord2luZG93Ll9lbGVtZGljdCA9IHsKK30KKyMgWFhYWCBlbnVtIHNhdm8gbm90IGZvdW5kISEKKworIworIyBJbmRpY2VzIG9mIHR5cGVzIGRlY2xhcmVkIGluIHRoaXMgbW9kdWxlCisjCitfY2xhc3NkZWNsYXJhdGlvbnMgPSB7CisJJ2RvY3UnIDogZG9jdW1lbnQsCisJJ2NpbnMnIDogaW5zZXJ0aW9uX3BvaW50LAorCSdjYXBwJyA6IGFwcGxpY2F0aW9uLAorCSdjdHh0JyA6IHRleHQsCisJJ2NzZWwnIDogc2VsZWN0aW9uXzJkX29iamVjdCwKKwknY2xpbicgOiBsaW5lLAorCSdmaWxlJyA6IGZpbGUsCisJJ2N3aW4nIDogd2luZG93LAorCSdjaGEgJyA6IGNoYXJhY3RlciwKK30KKworX3Byb3BkZWNsYXJhdGlvbnMgPSB7CisJJ3B6dW0nIDogem9vbWVkLAorCSdwT2ZmJyA6IG9mZnNldCwKKwkncExlbicgOiBsZW5ndGgsCisJJ3BuYW0nIDogbmFtZSwKKwknZmlsZScgOiBmaWxlLAorCSdwY250JyA6IGNvbnRlbnRzLAorCSdjd2luJyA6IHdpbmRvdywKKwkncHBvcycgOiBwb3NpdGlvbiwKKwkncGlkeCcgOiBpbmRleCwKKwknZG9jdScgOiBkb2N1bWVudCwKKwkncHZpcycgOiB2aXNpYmxlLAorCSdzZWxlJyA6IHNlbGVjdGlvbiwKKwkncGJuZCcgOiBib3VuZHMsCisJJ2ltb2QnIDogbW9kaWZpZWQsCisJJ01vZGUnIDogbW9kZSwKKwknaW50ZScgOiB1c2VyX2ludGVyYWN0aW9uLAorfQorCitfY29tcGRlY2xhcmF0aW9ucyA9IHsKK30KKworX2VudW1kZWNsYXJhdGlvbnMgPSB7Cit9CmRpZmYgLS1naXQgYS9NYWMvTGliL3Rvb2xib3gvRmluZGVyXzdfMF9TdWl0ZS5weSBiL01hYy9MaWIvc2NyaXB0aW5nL0ZpbmRlcl83XzBfU3VpdGUucHkKc2ltaWxhcml0eSBpbmRleCA5NyUKcmVuYW1lIGZyb20gTWFjL0xpYi90b29sYm94L0ZpbmRlcl83XzBfU3VpdGUucHkKcmVuYW1lIHRvIE1hYy9MaWIvc2NyaXB0aW5nL0ZpbmRlcl83XzBfU3VpdGUucHkKaW5kZXggYjYyODJkZC4uOGQyZjk2YiAxMDA2NDQKLS0tIGEvTWFjL0xpYi90b29sYm94L0ZpbmRlcl83XzBfU3VpdGUucHkKKysrIGIvTWFjL0xpYi9zY3JpcHRpbmcvRmluZGVyXzdfMF9TdWl0ZS5weQpAQCAtMSw5ICsxLDEwIEBACiAiIiJTdWl0ZSA3LjAgRmluZGVyIFN1aXRlOiBUaGlzIGlzIHRoZSBvcmlnaW5hbCBGaW5kZXIgc3VpdGUuIFRoZXNlIGV2ZW50cyB3aWxsIGJlIHN1cHBvcnRlZCBpbiB0aGUgZnV0dXJlLCBidXQgdGhlIHN5bnRheCBtYXkgYmUgY2hhbmdlZCBpbiBhIGZ1dHVyZSBGaW5kZXIgcmVsZWFzZS4KIExldmVsIDEsIHZlcnNpb24gMQogCi1HZW5lcmF0ZWQgZnJvbSBmbGFwOlN5c3RlZW1tYXA6RmluZGVyCitHZW5lcmF0ZWQgZnJvbSBmbGFwOlN5c3RlbSBGb2xkZXI6RmluZGVyCiBBRVRFL0FFVVQgcmVzb3VyY2UgdmVyc2lvbiAwLzE0OSwgbGFuZ3VhZ2UgMCwgc2NyaXB0IDAKICIiIgorIyBYWFhYIEhhbmQgZWRpdGVkIHRvIGNoYW5nZSB0aGUgY2xhc3NuYW1lCiAKIGltcG9ydCBhZXRvb2xzCiBpbXBvcnQgTWFjT1MKQEAgLTMwOCwzICszMDksMTggQEAKIAkJaWYgX2FyZ3VtZW50cy5oYXNfa2V5KCctLS0tJyk6CiAJCQlyZXR1cm4gX2FyZ3VtZW50c1snLS0tLSddCiAKKworIworIyBJbmRpY2VzIG9mIHR5cGVzIGRlY2xhcmVkIGluIHRoaXMgbW9kdWxlCisjCitfY2xhc3NkZWNsYXJhdGlvbnMgPSB7Cit9CisKK19wcm9wZGVjbGFyYXRpb25zID0geworfQorCitfY29tcGRlY2xhcmF0aW9ucyA9IHsKK30KKworX2VudW1kZWNsYXJhdGlvbnMgPSB7Cit9CmRpZmYgLS1naXQgYS9NYWMvTGliL3NjcmlwdGluZy9GaW5kZXJfU3VpdGUucHkgYi9NYWMvTGliL3NjcmlwdGluZy9GaW5kZXJfU3VpdGUucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjkzODUxYgotLS0gL2Rldi9udWxsCisrKyBiL01hYy9MaWIvc2NyaXB0aW5nL0ZpbmRlcl9TdWl0ZS5weQpAQCAtMCwwICsxLDE2MzIgQEAKKyIiIlN1aXRlIEZpbmRlciBTdWl0ZTogT2JqZWN0cyBhbmQgRXZlbnRzIGZvciB0aGUgRmluZGVyCitMZXZlbCAxLCB2ZXJzaW9uIDEKKworR2VuZXJhdGVkIGZyb20gZmxhcDpTeXN0ZW0gRm9sZGVyOkV4dGVuc2lvbnM6RmluZGVyIFNjcmlwdGluZyBFeHRlbnNpb24KK0FFVEUvQUVVVCByZXNvdXJjZSB2ZXJzaW9uIDAvMTQ0LCBsYW5ndWFnZSAwLCBzY3JpcHQgMAorIiIiCisKK2ltcG9ydCBhZXRvb2xzCitpbXBvcnQgTWFjT1MKKworX2NvZGUgPSAnZm5kcicKKworY2xhc3MgRmluZGVyX1N1aXRlOgorCisJX2FyZ21hcF9jbGVhbl91cCA9IHsKKwkJJ2J5JyA6ICdieSAgJywKKwl9CisKKwlkZWYgY2xlYW5fdXAoc2VsZiwgX29iamVjdCwgX2F0dHJpYnV0ZXM9e30sICoqX2FyZ3VtZW50cyk6CisJCSIiImNsZWFuIHVwOiBBcnJhbmdlIGl0ZW1zIGluIHdpbmRvdyBuaWNlbHkKKwkJUmVxdWlyZWQgYXJndW1lbnQ6IHRoZSB3aW5kb3cgdG8gY2xlYW4gdXAKKwkJS2V5d29yZCBhcmd1bWVudCBieTogdGhlIG9yZGVyIGluIHdoaWNoIHRvIGNsZWFuIHVwIHRoZSBvYmplY3RzCisJCUtleXdvcmQgYXJndW1lbnQgX2F0dHJpYnV0ZXM6IEFwcGxlRXZlbnQgYXR0cmlidXRlIGRpY3Rpb25hcnkKKwkJIiIiCisJCV9jb2RlID0gJ2ZuZHInCisJCV9zdWJjb2RlID0gJ2ZjbHUnCisKKwkJYWV0b29scy5rZXlzdWJzdChfYXJndW1lbnRzLCBzZWxmLl9hcmdtYXBfY2xlYW5fdXApCisJCV9hcmd1bWVudHNbJy0tLS0nXSA9IF9vYmplY3QKKworCisJCV9yZXBseSwgX2FyZ3VtZW50cywgX2F0dHJpYnV0ZXMgPSBzZWxmLnNlbmQoX2NvZGUsIF9zdWJjb2RlLAorCQkJCV9hcmd1bWVudHMsIF9hdHRyaWJ1dGVzKQorCQlpZiBfYXJndW1lbnRzLmhhc19rZXkoJ2Vycm4nKToKKwkJCXJhaXNlIGFldG9vbHMuRXJyb3IsIGFldG9vbHMuZGVjb2RlZXJyb3IoX2FyZ3VtZW50cykKKwkJIyBYWFhYIE9wdGlvbmFsbHkgZGVjb2RlIHJlc3VsdAorCQlpZiBfYXJndW1lbnRzLmhhc19rZXkoJy0tLS0nKToKKwkJCXJldHVybiBfYXJndW1lbnRzWyctLS0tJ10KKworCV9hcmdtYXBfY29tcHV0ZXIgPSB7CisJCSdoYXMnIDogJ2hhcyAnLAorCX0KKworCWRlZiBjb21wdXRlcihzZWxmLCBfb2JqZWN0LCBfYXR0cmlidXRlcz17fSwgKipfYXJndW1lbnRzKToKKwkJIiIiY29tcHV0ZXI6IFRlc3QgYXR0cmlidXRlcyBvZiB0aGlzIGNvbXB1dGVyCisJCVJlcXVpcmVkIGFyZ3VtZW50OiB0aGUgYXR0cmlidXRlIHRvIHRlc3QKKwkJS2V5d29yZCBhcmd1bWVudCBoYXM6IHRlc3Qgc3BlY2lmaWMgYml0cyBvZiByZXNwb25zZQorCQlLZXl3b3JkIGFyZ3VtZW50IF9hdHRyaWJ1dGVzOiBBcHBsZUV2ZW50IGF0dHJpYnV0ZSBkaWN0aW9uYXJ5CisJCVJldHVybnM6IHRoZSByZXN1bHQgb2YgdGhlIHF1ZXJ5CisJCSIiIgorCQlfY29kZSA9ICdmbmRyJworCQlfc3ViY29kZSA9ICdnc3RsJworCisJCWFldG9vbHMua2V5c3Vic3QoX2FyZ3VtZW50cywgc2VsZi5fYXJnbWFwX2NvbXB1dGVyKQorCQlfYXJndW1lbnRzWyctLS0tJ10gPSBfb2JqZWN0CisKKworCQlfcmVwbHksIF9hcmd1bWVudHMsIF9hdHRyaWJ1dGVzID0gc2VsZi5zZW5kKF9jb2RlLCBfc3ViY29kZSwKKwkJCQlfYXJndW1lbnRzLCBfYXR0cmlidXRlcykKKwkJaWYgX2FyZ3VtZW50cy5oYXNfa2V5KCdlcnJuJyk6CisJCQlyYWlzZSBhZXRvb2xzLkVycm9yLCBhZXRvb2xzLmRlY29kZWVycm9yKF9hcmd1bWVudHMpCisJCSMgWFhYWCBPcHRpb25hbGx5IGRlY29kZSByZXN1bHQKKwkJaWYgX2FyZ3VtZW50cy5oYXNfa2V5KCctLS0tJyk6CisJCQlyZXR1cm4gX2FyZ3VtZW50c1snLS0tLSddCisKKwlkZWYgZWplY3Qoc2VsZiwgX29iamVjdD1Ob25lLCBfYXR0cmlidXRlcz17fSwgKipfYXJndW1lbnRzKToKKwkJIiIiZWplY3Q6IEVqZWN0IHRoZSBzcGVjaWZpZWQgZGlzayhzKSwgb3IgZXZlcnkgZWplY3RhYmxlIGRpc2sgaWYgbm8gcGFyYW1ldGVyIGlzIHNwZWNpZmllZAorCQlSZXF1aXJlZCBhcmd1bWVudDogdGhlIGl0ZW1zIHRvIGVqZWN0CisJCUtleXdvcmQgYXJndW1lbnQgX2F0dHJpYnV0ZXM6IEFwcGxlRXZlbnQgYXR0cmlidXRlIGRpY3Rpb25hcnkKKwkJIiIiCisJCV9jb2RlID0gJ2ZuZHInCisJCV9zdWJjb2RlID0gJ2VqY3QnCisKKwkJaWYgX2FyZ3VtZW50czogcmFpc2UgVHlwZUVycm9yLCAnTm8gb3B0aW9uYWwgYXJncyBleHBlY3RlZCcKKwkJX2FyZ3VtZW50c1snLS0tLSddID0gX29iamVjdAorCisKKwkJX3JlcGx5LCBfYXJndW1lbnRzLCBfYXR0cmlidXRlcyA9IHNlbGYuc2VuZChfY29kZSwgX3N1YmNvZGUsCisJCQkJX2FyZ3VtZW50cywgX2F0dHJpYnV0ZXMpCisJCWlmIF9hcmd1bWVudHMuaGFzX2tleSgnZXJybicpOgorCQkJcmFpc2UgYWV0b29scy5FcnJvciwgYWV0b29scy5kZWNvZGVlcnJvcihfYXJndW1lbnRzKQorCQkjIFhYWFggT3B0aW9uYWxseSBkZWNvZGUgcmVzdWx0CisJCWlmIF9hcmd1bWVudHMuaGFzX2tleSgnLS0tLScpOgorCQkJcmV0dXJuIF9hcmd1bWVudHNbJy0tLS0nXQorCisJZGVmIGVtcHR5KHNlbGYsIF9vYmplY3Q9Tm9uZSwgX2F0dHJpYnV0ZXM9e30sICoqX2FyZ3VtZW50cyk6CisJCSIiImVtcHR5OiBFbXB0eSB0aGUgdHJhc2gKKwkJUmVxdWlyZWQgYXJndW1lbnQ6ILNlbXB0ebIgYW5kILNlbXB0eSB0cmFzaLIgYm90aCBkbyB0aGUgc2FtZSB0aGluZworCQlLZXl3b3JkIGFyZ3VtZW50IF9hdHRyaWJ1dGVzOiBBcHBsZUV2ZW50IGF0dHJpYnV0ZSBkaWN0aW9uYXJ5CisJCSIiIgorCQlfY29kZSA9ICdmbmRyJworCQlfc3ViY29kZSA9ICdlbXB0JworCisJCWlmIF9hcmd1bWVudHM6IHJhaXNlIFR5cGVFcnJvciwgJ05vIG9wdGlvbmFsIGFyZ3MgZXhwZWN0ZWQnCisJCV9hcmd1bWVudHNbJy0tLS0nXSA9IF9vYmplY3QKKworCisJCV9yZXBseSwgX2FyZ3VtZW50cywgX2F0dHJpYnV0ZXMgPSBzZWxmLnNlbmQoX2NvZGUsIF9zdWJjb2RlLAorCQkJCV9hcmd1bWVudHMsIF9hdHRyaWJ1dGVzKQorCQlpZiBfYXJndW1lbnRzLmhhc19rZXkoJ2Vycm4nKToKKwkJCXJhaXNlIGFldG9vbHMuRXJyb3IsIGFldG9vbHMuZGVjb2RlZXJyb3IoX2FyZ3VtZW50cykKKwkJIyBYWFhYIE9wdGlvbmFsbHkgZGVjb2RlIHJlc3VsdAorCQlpZiBfYXJndW1lbnRzLmhhc19rZXkoJy0tLS0nKToKKwkJCXJldHVybiBfYXJndW1lbnRzWyctLS0tJ10KKworCWRlZiBlcmFzZShzZWxmLCBfb2JqZWN0LCBfYXR0cmlidXRlcz17fSwgKipfYXJndW1lbnRzKToKKwkJIiIiZXJhc2U6IEVyYXNlIHRoZSBzcGVjaWZpZWQgZGlzayhzKQorCQlSZXF1aXJlZCBhcmd1bWVudDogdGhlIGl0ZW1zIHRvIGVyYXNlCisJCUtleXdvcmQgYXJndW1lbnQgX2F0dHJpYnV0ZXM6IEFwcGxlRXZlbnQgYXR0cmlidXRlIGRpY3Rpb25hcnkKKwkJIiIiCisJCV9jb2RlID0gJ2ZuZHInCisJCV9zdWJjb2RlID0gJ2ZlcmEnCisKKwkJaWYgX2FyZ3VtZW50czogcmFpc2UgVHlwZUVycm9yLCAnTm8gb3B0aW9uYWwgYXJncyBleHBlY3RlZCcKKwkJX2FyZ3VtZW50c1snLS0tLSddID0gX29iamVjdAorCisKKwkJX3JlcGx5LCBfYXJndW1lbnRzLCBfYXR0cmlidXRlcyA9IHNlbGYuc2VuZChfY29kZSwgX3N1YmNvZGUsCisJCQkJX2FyZ3VtZW50cywgX2F0dHJpYnV0ZXMpCisJCWlmIF9hcmd1bWVudHMuaGFzX2tleSgnZXJybicpOgorCQkJcmFpc2UgYWV0b29scy5FcnJvciwgYWV0b29scy5kZWNvZGVlcnJvcihfYXJndW1lbnRzKQorCQkjIFhYWFggT3B0aW9uYWxseSBkZWNvZGUgcmVzdWx0CisJCWlmIF9hcmd1bWVudHMuaGFzX2tleSgnLS0tLScpOgorCQkJcmV0dXJuIF9hcmd1bWVudHNbJy0tLS0nXQorCisJX2FyZ21hcF9wdXRfYXdheSA9IHsKKwkJJ2l0ZW1zJyA6ICdmc2VsJywKKwl9CisKKwlkZWYgcHV0X2F3YXkoc2VsZiwgX29iamVjdCwgX2F0dHJpYnV0ZXM9e30sICoqX2FyZ3VtZW50cyk6CisJCSIiInB1dCBhd2F5OiBQdXQgYXdheSB0aGUgc3BlY2lmaWVkIG9iamVjdChzKQorCQlSZXF1aXJlZCBhcmd1bWVudDogdGhlIGl0ZW1zIHRvIHB1dCBhd2F5CisJCUtleXdvcmQgYXJndW1lbnQgaXRlbXM6IERPIE5PVCBVU0U6IHByb3ZpZGVkIGZvciBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eSB3aXRoIG9sZCBldmVudCBzdWl0ZS4gIFdpbGwgYmUgcmVtb3ZlZCBpbiBmdXR1cmUgRmluZGVycworCQlLZXl3b3JkIGFyZ3VtZW50IF9hdHRyaWJ1dGVzOiBBcHBsZUV2ZW50IGF0dHJpYnV0ZSBkaWN0aW9uYXJ5CisJCVJldHVybnM6IHRoZSBvYmplY3QgcHV0IGF3YXkgaW4gaXRzIHB1dC1hd2F5IGxvY2F0aW9uCisJCSIiIgorCQlfY29kZSA9ICdmbmRyJworCQlfc3ViY29kZSA9ICdwdHd5JworCisJCWFldG9vbHMua2V5c3Vic3QoX2FyZ3VtZW50cywgc2VsZi5fYXJnbWFwX3B1dF9hd2F5KQorCQlfYXJndW1lbnRzWyctLS0tJ10gPSBfb2JqZWN0CisKKworCQlfcmVwbHksIF9hcmd1bWVudHMsIF9hdHRyaWJ1dGVzID0gc2VsZi5zZW5kKF9jb2RlLCBfc3ViY29kZSwKKwkJCQlfYXJndW1lbnRzLCBfYXR0cmlidXRlcykKKwkJaWYgX2FyZ3VtZW50cy5oYXNfa2V5KCdlcnJuJyk6CisJCQlyYWlzZSBhZXRvb2xzLkVycm9yLCBhZXRvb2xzLmRlY29kZWVycm9yKF9hcmd1bWVudHMpCisJCSMgWFhYWCBPcHRpb25hbGx5IGRlY29kZSByZXN1bHQKKwkJaWYgX2FyZ3VtZW50cy5oYXNfa2V5KCctLS0tJyk6CisJCQlyZXR1cm4gX2FyZ3VtZW50c1snLS0tLSddCisKKwlkZWYgcmVzdGFydChzZWxmLCBfbm9fb2JqZWN0PU5vbmUsIF9hdHRyaWJ1dGVzPXt9LCAqKl9hcmd1bWVudHMpOgorCQkiIiJyZXN0YXJ0OiBSZXN0YXJ0IHRoZSBNYWNpbnRvc2gKKwkJS2V5d29yZCBhcmd1bWVudCBfYXR0cmlidXRlczogQXBwbGVFdmVudCBhdHRyaWJ1dGUgZGljdGlvbmFyeQorCQkiIiIKKwkJX2NvZGUgPSAnZm5kcicKKwkJX3N1YmNvZGUgPSAncmVzdCcKKworCQlpZiBfYXJndW1lbnRzOiByYWlzZSBUeXBlRXJyb3IsICdObyBvcHRpb25hbCBhcmdzIGV4cGVjdGVkJworCQlpZiBfbm9fb2JqZWN0ICE9IE5vbmU6IHJhaXNlIFR5cGVFcnJvciwgJ05vIGRpcmVjdCBhcmcgZXhwZWN0ZWQnCisKKworCQlfcmVwbHksIF9hcmd1bWVudHMsIF9hdHRyaWJ1dGVzID0gc2VsZi5zZW5kKF9jb2RlLCBfc3ViY29kZSwKKwkJCQlfYXJndW1lbnRzLCBfYXR0cmlidXRlcykKKwkJaWYgX2FyZ3VtZW50cy5oYXNfa2V5KCdlcnJuJyk6CisJCQlyYWlzZSBhZXRvb2xzLkVycm9yLCBhZXRvb2xzLmRlY29kZWVycm9yKF9hcmd1bWVudHMpCisJCSMgWFhYWCBPcHRpb25hbGx5IGRlY29kZSByZXN1bHQKKwkJaWYgX2FyZ3VtZW50cy5oYXNfa2V5KCctLS0tJyk6CisJCQlyZXR1cm4gX2FyZ3VtZW50c1snLS0tLSddCisKKwlkZWYgcmV2ZWFsKHNlbGYsIF9vYmplY3QsIF9hdHRyaWJ1dGVzPXt9LCAqKl9hcmd1bWVudHMpOgorCQkiIiJyZXZlYWw6IEJyaW5nIHRoZSBzcGVjaWZpZWQgb2JqZWN0KHMpIGludG8gdmlldworCQlSZXF1aXJlZCBhcmd1bWVudDogdGhlIG9iamVjdCB0byBiZSBtYWRlIHZpc2libGUKKwkJS2V5d29yZCBhcmd1bWVudCBfYXR0cmlidXRlczogQXBwbGVFdmVudCBhdHRyaWJ1dGUgZGljdGlvbmFyeQorCQkiIiIKKwkJX2NvZGUgPSAnbWlzYycKKwkJX3N1YmNvZGUgPSAnbXZpcycKKworCQlpZiBfYXJndW1lbnRzOiByYWlzZSBUeXBlRXJyb3IsICdObyBvcHRpb25hbCBhcmdzIGV4cGVjdGVkJworCQlfYXJndW1lbnRzWyctLS0tJ10gPSBfb2JqZWN0CisKKworCQlfcmVwbHksIF9hcmd1bWVudHMsIF9hdHRyaWJ1dGVzID0gc2VsZi5zZW5kKF9jb2RlLCBfc3ViY29kZSwKKwkJCQlfYXJndW1lbnRzLCBfYXR0cmlidXRlcykKKwkJaWYgX2FyZ3VtZW50cy5oYXNfa2V5KCdlcnJuJyk6CisJCQlyYWlzZSBhZXRvb2xzLkVycm9yLCBhZXRvb2xzLmRlY29kZWVycm9yKF9hcmd1bWVudHMpCisJCSMgWFhYWCBPcHRpb25hbGx5IGRlY29kZSByZXN1bHQKKwkJaWYgX2FyZ3VtZW50cy5oYXNfa2V5KCctLS0tJyk6CisJCQlyZXR1cm4gX2FyZ3VtZW50c1snLS0tLSddCisKKwlkZWYgc2VsZWN0KHNlbGYsIF9vYmplY3QsIF9hdHRyaWJ1dGVzPXt9LCAqKl9hcmd1bWVudHMpOgorCQkiIiJzZWxlY3Q6IFNlbGVjdCB0aGUgc3BlY2lmaWVkIG9iamVjdChzKQorCQlSZXF1aXJlZCBhcmd1bWVudDogdGhlIG9iamVjdCB0byBzZWxlY3QKKwkJS2V5d29yZCBhcmd1bWVudCBfYXR0cmlidXRlczogQXBwbGVFdmVudCBhdHRyaWJ1dGUgZGljdGlvbmFyeQorCQkiIiIKKwkJX2NvZGUgPSAnbWlzYycKKwkJX3N1YmNvZGUgPSAnc2xjdCcKKworCQlpZiBfYXJndW1lbnRzOiByYWlzZSBUeXBlRXJyb3IsICdObyBvcHRpb25hbCBhcmdzIGV4cGVjdGVkJworCQlfYXJndW1lbnRzWyctLS0tJ10gPSBfb2JqZWN0CisKKworCQlfcmVwbHksIF9hcmd1bWVudHMsIF9hdHRyaWJ1dGVzID0gc2VsZi5zZW5kKF9jb2RlLCBfc3ViY29kZSwKKwkJCQlfYXJndW1lbnRzLCBfYXR0cmlidXRlcykKKwkJaWYgX2FyZ3VtZW50cy5oYXNfa2V5KCdlcnJuJyk6CisJCQlyYWlzZSBhZXRvb2xzLkVycm9yLCBhZXRvb2xzLmRlY29kZWVycm9yKF9hcmd1bWVudHMpCisJCSMgWFhYWCBPcHRpb25hbGx5IGRlY29kZSByZXN1bHQKKwkJaWYgX2FyZ3VtZW50cy5oYXNfa2V5KCctLS0tJyk6CisJCQlyZXR1cm4gX2FyZ3VtZW50c1snLS0tLSddCisKKwlkZWYgc2h1dF9kb3duKHNlbGYsIF9ub19vYmplY3Q9Tm9uZSwgX2F0dHJpYnV0ZXM9e30sICoqX2FyZ3VtZW50cyk6CisJCSIiInNodXQgZG93bjogU2h1dCBEb3duIHRoZSBNYWNpbnRvc2gKKwkJS2V5d29yZCBhcmd1bWVudCBfYXR0cmlidXRlczogQXBwbGVFdmVudCBhdHRyaWJ1dGUgZGljdGlvbmFyeQorCQkiIiIKKwkJX2NvZGUgPSAnZm5kcicKKwkJX3N1YmNvZGUgPSAnc2h1dCcKKworCQlpZiBfYXJndW1lbnRzOiByYWlzZSBUeXBlRXJyb3IsICdObyBvcHRpb25hbCBhcmdzIGV4cGVjdGVkJworCQlpZiBfbm9fb2JqZWN0ICE9IE5vbmU6IHJhaXNlIFR5cGVFcnJvciwgJ05vIGRpcmVjdCBhcmcgZXhwZWN0ZWQnCisKKworCQlfcmVwbHksIF9hcmd1bWVudHMsIF9hdHRyaWJ1dGVzID0gc2VsZi5zZW5kKF9jb2RlLCBfc3ViY29kZSwKKwkJCQlfYXJndW1lbnRzLCBfYXR0cmlidXRlcykKKwkJaWYgX2FyZ3VtZW50cy5oYXNfa2V5KCdlcnJuJyk6CisJCQlyYWlzZSBhZXRvb2xzLkVycm9yLCBhZXRvb2xzLmRlY29kZWVycm9yKF9hcmd1bWVudHMpCisJCSMgWFhYWCBPcHRpb25hbGx5IGRlY29kZSByZXN1bHQKKwkJaWYgX2FyZ3VtZW50cy5oYXNfa2V5KCctLS0tJyk6CisJCQlyZXR1cm4gX2FyZ3VtZW50c1snLS0tLSddCisKKwlkZWYgc2xlZXAoc2VsZiwgX25vX29iamVjdD1Ob25lLCBfYXR0cmlidXRlcz17fSwgKipfYXJndW1lbnRzKToKKwkJIiIic2xlZXA6IFNsZWVwIHRoZSBNYWNpbnRvc2gKKwkJS2V5d29yZCBhcmd1bWVudCBfYXR0cmlidXRlczogQXBwbGVFdmVudCBhdHRyaWJ1dGUgZGljdGlvbmFyeQorCQkiIiIKKwkJX2NvZGUgPSAnZm5kcicKKwkJX3N1YmNvZGUgPSAnc25veicKKworCQlpZiBfYXJndW1lbnRzOiByYWlzZSBUeXBlRXJyb3IsICdObyBvcHRpb25hbCBhcmdzIGV4cGVjdGVkJworCQlpZiBfbm9fb2JqZWN0ICE9IE5vbmU6IHJhaXNlIFR5cGVFcnJvciwgJ05vIGRpcmVjdCBhcmcgZXhwZWN0ZWQnCisKKworCQlfcmVwbHksIF9hcmd1bWVudHMsIF9hdHRyaWJ1dGVzID0gc2VsZi5zZW5kKF9jb2RlLCBfc3ViY29kZSwKKwkJCQlfYXJndW1lbnRzLCBfYXR0cmlidXRlcykKKwkJaWYgX2FyZ3VtZW50cy5oYXNfa2V5KCdlcnJuJyk6CisJCQlyYWlzZSBhZXRvb2xzLkVycm9yLCBhZXRvb2xzLmRlY29kZWVycm9yKF9hcmd1bWVudHMpCisJCSMgWFhYWCBPcHRpb25hbGx5IGRlY29kZSByZXN1bHQKKwkJaWYgX2FyZ3VtZW50cy5oYXNfa2V5KCctLS0tJyk6CisJCQlyZXR1cm4gX2FyZ3VtZW50c1snLS0tLSddCisKKwlfYXJnbWFwX3NvcnQgPSB7CisJCSdieScgOiAnYnkgICcsCisJfQorCisJZGVmIHNvcnQoc2VsZiwgX29iamVjdCwgX2F0dHJpYnV0ZXM9e30sICoqX2FyZ3VtZW50cyk6CisJCSIiInNvcnQ6IFJldHVybiB0aGUgc3BlY2lmaWVkIG9iamVjdChzKSBpbiBhIHNvcnRlZCBsaXN0CisJCVJlcXVpcmVkIGFyZ3VtZW50OiBhIGxpc3Qgb2YgZmluZGVyIG9iamVjdHMgdG8gc29ydAorCQlLZXl3b3JkIGFyZ3VtZW50IGJ5OiB0aGUgcHJvcGVydHkgdG8gc29ydCB0aGUgaXRlbXMgYnkKKwkJS2V5d29yZCBhcmd1bWVudCBfYXR0cmlidXRlczogQXBwbGVFdmVudCBhdHRyaWJ1dGUgZGljdGlvbmFyeQorCQlSZXR1cm5zOiB0aGUgc29ydGVkIGl0ZW1zIGluIHRoZWlyIG5ldyBvcmRlcgorCQkiIiIKKwkJX2NvZGUgPSAnREFUQScKKwkJX3N1YmNvZGUgPSAnU09SVCcKKworCQlhZXRvb2xzLmtleXN1YnN0KF9hcmd1bWVudHMsIHNlbGYuX2FyZ21hcF9zb3J0KQorCQlfYXJndW1lbnRzWyctLS0tJ10gPSBfb2JqZWN0CisKKworCQlfcmVwbHksIF9hcmd1bWVudHMsIF9hdHRyaWJ1dGVzID0gc2VsZi5zZW5kKF9jb2RlLCBfc3ViY29kZSwKKwkJCQlfYXJndW1lbnRzLCBfYXR0cmlidXRlcykKKwkJaWYgX2FyZ3VtZW50cy5oYXNfa2V5KCdlcnJuJyk6CisJCQlyYWlzZSBhZXRvb2xzLkVycm9yLCBhZXRvb2xzLmRlY29kZWVycm9yKF9hcmd1bWVudHMpCisJCSMgWFhYWCBPcHRpb25hbGx5IGRlY29kZSByZXN1bHQKKwkJaWYgX2FyZ3VtZW50cy5oYXNfa2V5KCctLS0tJyk6CisJCQlyZXR1cm4gX2FyZ3VtZW50c1snLS0tLSddCisKKwlkZWYgdXBkYXRlKHNlbGYsIF9vYmplY3QsIF9hdHRyaWJ1dGVzPXt9LCAqKl9hcmd1bWVudHMpOgorCQkiIiJ1cGRhdGU6IFVwZGF0ZSB0aGUgZGlzcGxheSBvZiB0aGUgc3BlY2lmaWVkIG9iamVjdChzKSB0byBtYXRjaCB0aGVpciBvbi1kaXNrIHJlcHJlc2VudGF0aW9uCisJCVJlcXVpcmVkIGFyZ3VtZW50OiB0aGUgaXRlbSB0byB1cGRhdGUKKwkJS2V5d29yZCBhcmd1bWVudCBfYXR0cmlidXRlczogQXBwbGVFdmVudCBhdHRyaWJ1dGUgZGljdGlvbmFyeQorCQkiIiIKKwkJX2NvZGUgPSAnZm5kcicKKwkJX3N1YmNvZGUgPSAnZnVwZCcKKworCQlpZiBfYXJndW1lbnRzOiByYWlzZSBUeXBlRXJyb3IsICdObyBvcHRpb25hbCBhcmdzIGV4cGVjdGVkJworCQlfYXJndW1lbnRzWyctLS0tJ10gPSBfb2JqZWN0CisKKworCQlfcmVwbHksIF9hcmd1bWVudHMsIF9hdHRyaWJ1dGVzID0gc2VsZi5zZW5kKF9jb2RlLCBfc3ViY29kZSwKKwkJCQlfYXJndW1lbnRzLCBfYXR0cmlidXRlcykKKwkJaWYgX2FyZ3VtZW50cy5oYXNfa2V5KCdlcnJuJyk6CisJCQlyYWlzZSBhZXRvb2xzLkVycm9yLCBhZXRvb2xzLmRlY29kZWVycm9yKF9hcmd1bWVudHMpCisJCSMgWFhYWCBPcHRpb25hbGx5IGRlY29kZSByZXN1bHQKKwkJaWYgX2FyZ3VtZW50cy5oYXNfa2V5KCctLS0tJyk6CisJCQlyZXR1cm4gX2FyZ3VtZW50c1snLS0tLSddCisKKworY2xhc3MgYWNjZXNzb3J5X3Byb2Nlc3MoYWV0b29scy5Db21wb25lbnRJdGVtKToKKwkiIiJhY2Nlc3NvcnkgcHJvY2VzcyAtIEEgcHJvY2VzcyBsYXVuY2hlZCBmcm9tIGEgZGVzayBhY2Nlc3NvcnkgZmlsZSIiIgorCXdhbnQgPSAncGNkYScKK2NsYXNzIGRlc2tfYWNjZXNzb3J5X2ZpbGUoYWV0b29scy5OUHJvcGVydHkpOgorCSIiImRlc2sgYWNjZXNzb3J5IGZpbGUgLSB0aGUgZGVzayBhY2Nlc3NvcnkgZmlsZSBmcm9tIHdoaWNoIHRoaXMgcHJvY2VzcyB3YXMgbGF1bmNoZWQiIiIKKwl3aGljaCA9ICdkYWZpJworCXdhbnQgPSAnb2JqICcKKworYWNjZXNzb3J5X3Byb2Nlc3NlcyA9IGFjY2Vzc29yeV9wcm9jZXNzCisKK2NsYXNzIGFjY2Vzc29yeV9zdWl0Y2FzZShhZXRvb2xzLkNvbXBvbmVudEl0ZW0pOgorCSIiImFjY2Vzc29yeSBzdWl0Y2FzZSAtIEEgZGVzayBhY2Nlc3Nvcnkgc3VpdGNhc2UiIiIKKwl3YW50ID0gJ2RzdXQnCisjICAgICAgICBlbGVtZW50ICdjb2JqJyBhcyBbJ2luZHgnLCAnbmFtZSddCisKK2FjY2Vzc29yeV9zdWl0Y2FzZXMgPSBhY2Nlc3Nvcnlfc3VpdGNhc2UKKworY2xhc3MgYWxpYXNfZmlsZShhZXRvb2xzLkNvbXBvbmVudEl0ZW0pOgorCSIiImFsaWFzIGZpbGUgLSBBbiBhbGlhcyBmaWxlIChjcmVhdGVkIHdpdGggs01ha2UgQWxpYXOyKSIiIgorCXdhbnQgPSAnYWxpYScKK2NsYXNzIG9yaWdpbmFsX2l0ZW0oYWV0b29scy5OUHJvcGVydHkpOgorCSIiIm9yaWdpbmFsIGl0ZW0gLSB0aGUgb3JpZ2luYWwgaXRlbSBwb2ludGVkIHRvIGJ5IHRoZSBhbGlhcyIiIgorCXdoaWNoID0gJ29yaWcnCisJd2FudCA9ICdvYmogJworCithbGlhc19maWxlcyA9IGFsaWFzX2ZpbGUKKworY2xhc3MgYXBwbGljYXRpb24oYWV0b29scy5Db21wb25lbnRJdGVtKToKKwkiIiJhcHBsaWNhdGlvbiAtIEFuIGFwcGxpY2F0aW9uIHByb2dyYW0iIiIKKwl3YW50ID0gJ2NhcHAnCitjbGFzcyBhYm91dF90aGlzX21hY2ludG9zaChhZXRvb2xzLk5Qcm9wZXJ0eSk6CisJIiIiYWJvdXQgdGhpcyBtYWNpbnRvc2ggLSB0aGUgs0Fib3V0IHRoaXMgTWFjaW50b3NosiBkaWFsb2csIGFuZCB0aGUgbGlzdCBvZiBydW5uaW5nIHByb2Nlc3NlcyBkaXNwbGF5ZWQgaW4gaXQiIiIKKwl3aGljaCA9ICdhYmJ4JworCXdhbnQgPSAnb2JqICcKK2NsYXNzIGFwcGxlX21lbnVfaXRlbXNfZm9sZGVyKGFldG9vbHMuTlByb3BlcnR5KToKKwkiIiJhcHBsZSBtZW51IGl0ZW1zIGZvbGRlciAtIHRoZSBzcGVjaWFsIGZvbGRlciCzQXBwbGUgTWVudSBJdGVtcyyyIHRoZSBjb250ZW50cyBvZiB3aGljaCBhcHBlYXIgaW4gdGhlIEFwcGxlIG1lbnUiIiIKKwl3aGljaCA9ICdhbW51JworCXdhbnQgPSAnb2JqICcKK2NsYXNzIGNsaXBib2FyZChhZXRvb2xzLk5Qcm9wZXJ0eSk6CisJIiIiY2xpcGJvYXJkIC0gdGhlIEZpbmRlcidzIGNsaXBib2FyZCB3aW5kb3ciIiIKKwl3aGljaCA9ICdwY2xpJworCXdhbnQgPSAnb2JqICcKK2NsYXNzIGNvbnRyb2xfcGFuZWxzX2ZvbGRlcihhZXRvb2xzLk5Qcm9wZXJ0eSk6CisJIiIiY29udHJvbCBwYW5lbHMgZm9sZGVyIC0gdGhlIHNwZWNpYWwgZm9sZGVyILNDb250cm9sIFBhbmVsc7IiIiIKKwl3aGljaCA9ICdjdHJsJworCXdhbnQgPSAnb2JqICcKK2NsYXNzIGRlc2t0b3AoYWV0b29scy5OUHJvcGVydHkpOgorCSIiImRlc2t0b3AgLSB0aGUgZGVza3RvcCIiIgorCXdoaWNoID0gJ2Rlc2snCisJd2FudCA9ICdvYmogJworY2xhc3MgZXh0ZW5zaW9uc19mb2xkZXIoYWV0b29scy5OUHJvcGVydHkpOgorCSIiImV4dGVuc2lvbnMgZm9sZGVyIC0gdGhlIHNwZWNpYWwgZm9sZGVyILNFeHRlbnNpb25zsiIiIgorCXdoaWNoID0gJ2V4dG4nCisJd2FudCA9ICdvYmogJworY2xhc3MgZmlsZV9zaGFyaW5nKGFldG9vbHMuTlByb3BlcnR5KToKKwkiIiJmaWxlIHNoYXJpbmcgLSBJcyBmaWxlIHNoYXJpbmcgb24/IiIiCisJd2hpY2ggPSAnZnNocicKKwl3YW50ID0gJ2Jvb2wnCitjbGFzcyBmb250c19mb2xkZXIoYWV0b29scy5OUHJvcGVydHkpOgorCSIiImZvbnRzIGZvbGRlciAtIHRoZSBzcGVjaWFsIGZvbGRlciCzRm9udHOyIiIiCisJd2hpY2ggPSAnZmZudCcKKwl3YW50ID0gJ29iaiAnCitjbGFzcyBmcm9udG1vc3QoYWV0b29scy5OUHJvcGVydHkpOgorCSIiImZyb250bW9zdCAtIElzIHRoaXMgdGhlIGZyb250bW9zdCBhcHBsaWNhdGlvbj8iIiIKKwl3aGljaCA9ICdwaXNmJworCXdhbnQgPSAnYm9vbCcKK2NsYXNzIGluc2VydGlvbl9sb2NhdGlvbihhZXRvb2xzLk5Qcm9wZXJ0eSk6CisJIiIiaW5zZXJ0aW9uIGxvY2F0aW9uIC0gdGhlIGNvbnRhaW5lciB0aGF0IGEgbmV3IGZvbGRlciB3b3VsZCBhcHBlYXIgaW4gaWYgs05ldyBGb2xkZXKyIHdhcyBzZWxlY3RlZCIiIgorCXdoaWNoID0gJ3BpbnMnCisJd2FudCA9ICdvYmogJworY2xhc3MgbGFyZ2VzdF9mcmVlX2Jsb2NrKGFldG9vbHMuTlByb3BlcnR5KToKKwkiIiJsYXJnZXN0IGZyZWUgYmxvY2sgLSB0aGUgbGFyZ2VzdCBmcmVlIGJsb2NrIG9mIHByb2Nlc3MgbWVtb3J5IGF2YWlsYWJsZSB0byBsYXVuY2ggYW4gYXBwbGljYXRpb24iIiIKKwl3aGljaCA9ICdtZnJlJworCXdhbnQgPSAnbG9uZycKK2NsYXNzIHByZWZlcmVuY2VzX2ZvbGRlcihhZXRvb2xzLk5Qcm9wZXJ0eSk6CisJIiIicHJlZmVyZW5jZXMgZm9sZGVyIC0gdGhlIHNwZWNpYWwgZm9sZGVyILNQcmVmZXJlbmNlc7IiIiIKKwl3aGljaCA9ICdwcmVmJworCXdhbnQgPSAnb2JqICcKK2NsYXNzIHByb2R1Y3RfdmVyc2lvbihhZXRvb2xzLk5Qcm9wZXJ0eSk6CisJIiIicHJvZHVjdCB2ZXJzaW9uIC0gdGhlIHZlcnNpb24gb2YgdGhlIFN5c3RlbSBzb2Z0d2FyZSBydW5uaW5nIG9uIHRoaXMgTWFjaW50b3NoIiIiCisJd2hpY2ggPSAndmVyMicKKwl3YW50ID0gJ2l0eHQnCitjbGFzcyBzZWxlY3Rpb24oYWV0b29scy5OUHJvcGVydHkpOgorCSIiInNlbGVjdGlvbiAtIHRoZSBzZWxlY3Rpb24gdmlzaWJsZSB0byB0aGUgdXNlciIiIgorCXdoaWNoID0gJ3NlbGUnCisJd2FudCA9ICdvYmogJworY2xhc3Mgc2hhcmluZ19zdGFydGluZ191cChhZXRvb2xzLk5Qcm9wZXJ0eSk6CisJIiIic2hhcmluZyBzdGFydGluZyB1cCAtIElzIEZpbGUgc2hhcmluZyBpbiB0aGUgcHJvY2VzcyBvZiBzdGFydGluZyB1cCAoc3RpbGwgb2ZmLCBidXQgc29vbiB0byBiZSBvbik/IiIiCisJd2hpY2ggPSAnZnN1cCcKKwl3YW50ID0gJ2Jvb2wnCitjbGFzcyBzaG9ydGN1dHMoYWV0b29scy5OUHJvcGVydHkpOgorCSIiInNob3J0Y3V0cyAtIHRoZSCzRmluZGVyIFNob3J0Y3V0c7IgaXRlbSBpbiB0aGUgRmluZGVyJ3MgaGVscCBtZW51IiIiCisJd2hpY2ggPSAnc2N1dCcKKwl3YW50ID0gJ29iaiAnCitjbGFzcyBzaHV0ZG93bl9pdGVtc19mb2xkZXIoYWV0b29scy5OUHJvcGVydHkpOgorCSIiInNodXRkb3duIGl0ZW1zIGZvbGRlciAtIHRoZSBzcGVjaWFsIGZvbGRlciCzU2h1dGRvd24gSXRlbXOyIiIiCisJd2hpY2ggPSAnc2hkZicKKwl3YW50ID0gJ29iaiAnCitjbGFzcyBzdGFydHVwX2l0ZW1zX2ZvbGRlcihhZXRvb2xzLk5Qcm9wZXJ0eSk6CisJIiIic3RhcnR1cCBpdGVtcyBmb2xkZXIgLSB0aGUgc3BlY2lhbCBmb2xkZXIgs1N0YXJ0dXAgSXRlbXOyIiIiCisJd2hpY2ggPSAnc3RydCcKKwl3YW50ID0gJ29iaiAnCitjbGFzcyBzeXN0ZW1fZm9sZGVyKGFldG9vbHMuTlByb3BlcnR5KToKKwkiIiJzeXN0ZW0gZm9sZGVyIC0gdGhlIFN5c3RlbSBmb2xkZXIiIiIKKwl3aGljaCA9ICdtYWNzJworCXdhbnQgPSAnb2JqICcKK2NsYXNzIHRlbXBvcmFyeV9pdGVtc19mb2xkZXIoYWV0b29scy5OUHJvcGVydHkpOgorCSIiInRlbXBvcmFyeSBpdGVtcyBmb2xkZXIgLSB0aGUgc3BlY2lhbCBmb2xkZXIgs1RlbXBvcmFyeSBJdGVtc7IgKGludmlzaWJsZSkiIiIKKwl3aGljaCA9ICd0ZW1wJworCXdhbnQgPSAnb2JqICcKK2NsYXNzIHZlcnNpb24oYWV0b29scy5OUHJvcGVydHkpOgorCSIiInZlcnNpb24gLSB0aGUgdmVyc2lvbiBvZiB0aGUgRmluZGVyIFNjcmlwdGluZyBFeHRlbnNpb24iIiIKKwl3aGljaCA9ICd2ZXJzJworCXdhbnQgPSAnaXR4dCcKK2NsYXNzIHZpZXdfcHJlZmVyZW5jZXMoYWV0b29scy5OUHJvcGVydHkpOgorCSIiInZpZXcgcHJlZmVyZW5jZXMgLSB0aGUgdmlldyBwcmVmZXJlbmNlcyBjb250cm9sIHBhbmVsIiIiCisJd2hpY2ggPSAncHZ3cCcKKwl3YW50ID0gJ29iaiAnCitjbGFzcyB2aXNpYmxlKGFldG9vbHMuTlByb3BlcnR5KToKKwkiIiJ2aXNpYmxlIC0gSXMgdGhlIEZpbmRlcidzIGxheWVyIHZpc2libGU/IiIiCisJd2hpY2ggPSAncHZpcycKKwl3YW50ID0gJ2Jvb2wnCisjICAgICAgICBlbGVtZW50ICdkc3V0JyBhcyBbJ2luZHgnLCAnbmFtZSddCisjICAgICAgICBlbGVtZW50ICdhbGlhJyBhcyBbJ2luZHgnLCAnbmFtZSddCisjICAgICAgICBlbGVtZW50ICdhcHBmJyBhcyBbJ2luZHgnLCAnbmFtZScsICdJRCAgJ10KKyMgICAgICAgIGVsZW1lbnQgJ2N0bnInIGFzIFsnaW5keCcsICduYW1lJ10KKyMgICAgICAgIGVsZW1lbnQgJ2N3bmQnIGFzIFsnaW5keCcsICduYW1lJ10KKyMgICAgICAgIGVsZW1lbnQgJ2R3bmQnIGFzIFsnaW5keCcsICduYW1lJ10KKyMgICAgICAgIGVsZW1lbnQgJ2NjZHYnIGFzIFsnaW5keCcsICduYW1lJ10KKyMgICAgICAgIGVsZW1lbnQgJ2RhZmknIGFzIFsnaW5keCcsICduYW1lJ10KKyMgICAgICAgIGVsZW1lbnQgJ2Nkc2snIGFzIFsnaW5keCcsICduYW1lJ10KKyMgICAgICAgIGVsZW1lbnQgJ2NkaXMnIGFzIFsnaW5keCcsICduYW1lJywgJ0lEICAnXQorIyAgICAgICAgZWxlbWVudCAnZG9jZicgYXMgWydpbmR4JywgJ25hbWUnXQorIyAgICAgICAgZWxlbWVudCAnZmlsZScgYXMgWydpbmR4JywgJ25hbWUnXQorIyAgICAgICAgZWxlbWVudCAnY2ZvbCcgYXMgWydpbmR4JywgJ25hbWUnLCAnSUQgICddCisjICAgICAgICBlbGVtZW50ICdmbnRmJyBhcyBbJ2luZHgnLCAnbmFtZSddCisjICAgICAgICBlbGVtZW50ICdmc3V0JyBhcyBbJ2luZHgnLCAnbmFtZSddCisjICAgICAgICBlbGVtZW50ICdpd25kJyBhcyBbJ2luZHgnLCAnbmFtZSddCisjICAgICAgICBlbGVtZW50ICdjb2JqJyBhcyBbJ2luZHgnLCAnbmFtZSddCisjICAgICAgICBlbGVtZW50ICdzY3RyJyBhcyBbJ2luZHgnLCAnbmFtZSddCisjICAgICAgICBlbGVtZW50ICdzd25kJyBhcyBbJ2luZHgnLCAnbmFtZSddCisjICAgICAgICBlbGVtZW50ICdzbmRmJyBhcyBbJ2luZHgnLCAnbmFtZSddCisjICAgICAgICBlbGVtZW50ICdzdGNzJyBhcyBbJ2luZHgnLCAnbmFtZSddCisjICAgICAgICBlbGVtZW50ICdjdHJzJyBhcyBbJ2luZHgnLCAnbmFtZSddCisjICAgICAgICBlbGVtZW50ICdjd2luJyBhcyBbJ2luZHgnLCAnbmFtZSddCisKK2NsYXNzIGFwcGxpY2F0aW9uX2ZpbGUoYWV0b29scy5Db21wb25lbnRJdGVtKToKKwkiIiJhcHBsaWNhdGlvbiBmaWxlIC0gQW4gYXBwbGljYXRpb24ncyBmaWxlIG9uIGRpc2siIiIKKwl3YW50ID0gJ2FwcGYnCitjbGFzcyBtaW5pbXVtX3BhcnRpdGlvbl9zaXplKGFldG9vbHMuTlByb3BlcnR5KToKKwkiIiJtaW5pbXVtIHBhcnRpdGlvbiBzaXplIC0gdGhlIHNtYWxsZXN0IG1lbW9yeSBzaXplIHRoYXQgdGhlIGFwcGxpY2F0aW9uIGNhbiBwb3NzaWJseSBiZSBsYXVuY2hlZCB3aXRoIiIiCisJd2hpY2ggPSAnbXBydCcKKwl3YW50ID0gJ2xvbmcnCitjbGFzcyBwYXJ0aXRpb25fc2l6ZShhZXRvb2xzLk5Qcm9wZXJ0eSk6CisJIiIicGFydGl0aW9uIHNpemUgLSB0aGUgbWVtb3J5IHNpemUgdGhhdCB0aGUgYXBwbGljYXRpb24gd2lsbCBiZSBsYXVuY2hlZCB3aXRoIiIiCisJd2hpY2ggPSAnYXBwdCcKKwl3YW50ID0gJ2xvbmcnCitjbGFzcyBzY3JpcHRhYmxlKGFldG9vbHMuTlByb3BlcnR5KToKKwkiIiJzY3JpcHRhYmxlIC0gSXMgdGhpcyBhcHBsaWNhdGlvbiBoaWdoLWxldmVsIGV2ZW50IGF3YXJlIChhY2NlcHRzIG9wZW4gYXBwbGljYXRpb24sIG9wZW4gZG9jdW1lbnQsIHByaW50IGRvY3VtZW50LCBhbmQgcXVpdCk/IiIiCisJd2hpY2ggPSAnaXNhYicKKwl3YW50ID0gJ2Jvb2wnCitjbGFzcyBzdWdnZXN0ZWRfcGFydGl0aW9uX3NpemUoYWV0b29scy5OUHJvcGVydHkpOgorCSIiInN1Z2dlc3RlZCBwYXJ0aXRpb24gc2l6ZSAtIHRoZSBtZW1vcnkgc2l6ZSB0aGF0IHRoZSBkZXZlbG9wZXIgcmVjb21tZW5kcyB0aGF0IHRoZSBhcHBsaWNhdGlvbiBzaG91bGQgYmUgbGF1bmNoZWQgd2l0aCIiIgorCXdoaWNoID0gJ3NwcnQnCisJd2FudCA9ICdsb25nJworCithcHBsaWNhdGlvbl9maWxlcyA9IGFwcGxpY2F0aW9uX2ZpbGUKKworY2xhc3MgYXBwbGljYXRpb25fcHJvY2VzcyhhZXRvb2xzLkNvbXBvbmVudEl0ZW0pOgorCSIiImFwcGxpY2F0aW9uIHByb2Nlc3MgLSBBIHByb2Nlc3MgbGF1bmNoZWQgZnJvbSBhbiBhcHBsaWNhdGlvbiBmaWxlIiIiCisJd2FudCA9ICdwY2FwJworY2xhc3MgYXBwbGljYXRpb25fZmlsZShhZXRvb2xzLk5Qcm9wZXJ0eSk6CisJIiIiYXBwbGljYXRpb24gZmlsZSAtIHRoZSBhcHBsaWNhdGlvbiBmaWxlIGZyb20gd2hpY2ggdGhpcyBwcm9jZXNzIHdhcyBsYXVuY2hlZCIiIgorCXdoaWNoID0gJ2FwcGYnCisJd2FudCA9ICdhcHBmJworCithcHBsaWNhdGlvbl9wcm9jZXNzZXMgPSBhcHBsaWNhdGlvbl9wcm9jZXNzCisKK2NsYXNzIGNvbnRhaW5lcihhZXRvb2xzLkNvbXBvbmVudEl0ZW0pOgorCSIiImNvbnRhaW5lciAtIEFuIGl0ZW0gdGhhdCBjb250YWlucyBvdGhlciBpdGVtcyIiIgorCXdhbnQgPSAnY3RucicKK2NsYXNzIGNvbXBsZXRlbHlfZXhwYW5kZWQoYWV0b29scy5OUHJvcGVydHkpOgorCSIiImNvbXBsZXRlbHkgZXhwYW5kZWQgLSBJcyB0aGUgY29udGFpbmVyIGFuZCBhbGwgb2YgaXRzIGNoaWxkcmVuIG9wZW4gaW4gb3V0bGluZSB2aWV3PyIiIgorCXdoaWNoID0gJ3BleGMnCisJd2FudCA9ICdib29sJworY2xhc3MgY29udGFpbmVyX3dpbmRvdyhhZXRvb2xzLk5Qcm9wZXJ0eSk6CisJIiIiY29udGFpbmVyIHdpbmRvdyAtIHRoZSBtYWluIHdpbmRvdyBmb3IgdGhlIGNvbnRhaW5lciIiIgorCXdoaWNoID0gJ2N3bmQnCisJd2FudCA9ICdvYmogJworY2xhc3MgZW50aXJlX2NvbnRlbnRzKGFldG9vbHMuTlByb3BlcnR5KToKKwkiIiJlbnRpcmUgY29udGVudHMgLSB0aGUgZW50aXJlIGNvbnRlbnRzIG9mIHRoZSBjb250YWluZXIsIGluY2x1ZGluZyB0aGUgY29udGVudHMgb2YgaXRzIGNoaWxkcmVuIiIiCisJd2hpY2ggPSAnZWN0cycKKwl3YW50ID0gJ29iaiAnCitjbGFzcyBleHBhbmRhYmxlKGFldG9vbHMuTlByb3BlcnR5KToKKwkiIiJleHBhbmRhYmxlIC0gSXMgdGhlIGNvbnRhaW5lciBjYXBhYmxlIG9mIGJlaW5nIGV4cGFuZGVkIGludG8gb3V0bGluZSB2aWV3PyIiIgorCXdoaWNoID0gJ3BleGEnCisJd2FudCA9ICdib29sJworY2xhc3MgZXhwYW5kZWQoYWV0b29scy5OUHJvcGVydHkpOgorCSIiImV4cGFuZGVkIC0gSXMgdGhlIGNvbnRhaW5lciBvcGVuIGluIG91dGxpbmUgdmlldz8iIiIKKwl3aGljaCA9ICdwZXhwJworCXdhbnQgPSAnYm9vbCcKK2NsYXNzIHByZXZpb3VzX2xpc3RfdmlldyhhZXRvb2xzLk5Qcm9wZXJ0eSk6CisJIiIicHJldmlvdXMgbGlzdCB2aWV3IC0gdGhlIGxhc3Qgbm9uLWljb24gdmlldyAoYnkgbmFtZSwgYnkgZGF0ZSwgZXRjLikgc2VsZWN0ZWQgZm9yIHRoZSBjb250YWluZXIgKGZvcmdvdHRlbiBhcyBzb29uIGFzIHRoZSB3aW5kb3cgaXMgY2xvc2VkKSIiIgorCXdoaWNoID0gJ3N2ZXcnCisJd2FudCA9ICdsb25nJworIyByZXBlYXRlZCBwcm9wZXJ0eSBzZWxlY3Rpb24gdGhlIHNlbGVjdGlvbiB2aXNpYmxlIHRvIHRoZSB1c2VyCitjbGFzcyB2aWV3KGFldG9vbHMuTlByb3BlcnR5KToKKwkiIiJ2aWV3IC0gdGhlIHZpZXcgc2VsZWN0ZWQgZm9yIHRoZSBjb250YWluZXIgKGJ5IGljb24sIGJ5IG5hbWUsIGJ5IGRhdGUsIGV0Yy4pIiIiCisJd2hpY2ggPSAncHZldycKKwl3YW50ID0gJ2xvbmcnCisjICAgICAgICBlbGVtZW50ICdkc3V0JyBhcyBbJ2luZHgnLCAnbmFtZSddCisjICAgICAgICBlbGVtZW50ICdhbGlhJyBhcyBbJ2luZHgnLCAnbmFtZSddCisjICAgICAgICBlbGVtZW50ICdhcHBmJyBhcyBbJ2luZHgnLCAnbmFtZSddCisjICAgICAgICBlbGVtZW50ICdjdG5yJyBhcyBbJ2luZHgnLCAnbmFtZSddCisjICAgICAgICBlbGVtZW50ICdjY2R2JyBhcyBbJ2luZHgnLCAnbmFtZSddCisjICAgICAgICBlbGVtZW50ICdkYWZpJyBhcyBbJ2luZHgnLCAnbmFtZSddCisjICAgICAgICBlbGVtZW50ICdkb2NmJyBhcyBbJ2luZHgnLCAnbmFtZSddCisjICAgICAgICBlbGVtZW50ICdmaWxlJyBhcyBbJ2luZHgnLCAnbmFtZSddCisjICAgICAgICBlbGVtZW50ICdjZm9sJyBhcyBbJ2luZHgnLCAnbmFtZSddCisjICAgICAgICBlbGVtZW50ICdmbnRmJyBhcyBbJ2luZHgnLCAnbmFtZSddCisjICAgICAgICBlbGVtZW50ICdmc3V0JyBhcyBbJ2luZHgnLCAnbmFtZSddCisjICAgICAgICBlbGVtZW50ICdjb2JqJyBhcyBbJ2luZHgnLCAnbmFtZSddCisjICAgICAgICBlbGVtZW50ICdzY3RyJyBhcyBbJ2luZHgnLCAnbmFtZSddCisjICAgICAgICBlbGVtZW50ICdzbmRmJyBhcyBbJ2luZHgnLCAnbmFtZSddCisjICAgICAgICBlbGVtZW50ICdzdGNzJyBhcyBbJ2luZHgnLCAnbmFtZSddCisKK2NvbnRhaW5lcnMgPSBjb250YWluZXIKKworY2xhc3MgY29udGFpbmVyX3dpbmRvdyhhZXRvb2xzLkNvbXBvbmVudEl0ZW0pOgorCSIiImNvbnRhaW5lciB3aW5kb3cgLSBBIHdpbmRvdyB0aGF0IGNvbnRhaW5zIGl0ZW1zIiIiCisJd2FudCA9ICdjd25kJworY2xhc3MgY29udGFpbmVyKGFldG9vbHMuTlByb3BlcnR5KToKKwkiIiJjb250YWluZXIgLSB0aGUgY29udGFpbmVyIHRoaXMgd2luZG93IGlzIG9wZW5lZCBmcm9tIiIiCisJd2hpY2ggPSAnY3RucicKKwl3YW50ID0gJ29iaiAnCitjbGFzcyBkaXNrKGFldG9vbHMuTlByb3BlcnR5KToKKwkiIiJkaXNrIC0gdGhlIGRpc2sgb24gd2hpY2ggdGhlIGl0ZW0gdGhpcyB3aW5kb3cgd2FzIG9wZW5lZCBmcm9tIGlzIHN0b3JlZCIiIgorCXdoaWNoID0gJ2NkaXMnCisJd2FudCA9ICdvYmogJworY2xhc3MgZm9sZGVyKGFldG9vbHMuTlByb3BlcnR5KToKKwkiIiJmb2xkZXIgLSB0aGUgZm9sZGVyIHRoaXMgd2luZG93IGlzIG9wZW5lZCBmcm9tIiIiCisJd2hpY2ggPSAnY2ZvbCcKKwl3YW50ID0gJ29iaiAnCitjbGFzcyBpdGVtKGFldG9vbHMuTlByb3BlcnR5KToKKwkiIiJpdGVtIC0gdGhlIGl0ZW0gdGhpcyB3aW5kb3cgaXMgb3BlbmVkIGZyb20iIiIKKwl3aGljaCA9ICdjb2JqJworCXdhbnQgPSAnb2JqICcKKyMgcmVwZWF0ZWQgcHJvcGVydHkgcHJldmlvdXNfbGlzdF92aWV3IHRoZSBsYXN0IG5vbi1pY29uIHZpZXcgKGJ5IG5hbWUsIGJ5IGRhdGUsIGV0Yy4pIHNlbGVjdGVkIGZvciB0aGUgd2luZG93IChmb3Jnb3R0ZW4gYXMgc29vbiBhcyB0aGUgd2luZG93IGlzIGNsb3NlZCkKKyMgcmVwZWF0ZWQgcHJvcGVydHkgc2VsZWN0aW9uIHRoZSBzZWxlY3Rpb24gdmlzaWJsZSB0byB0aGUgdXNlcgorIyByZXBlYXRlZCBwcm9wZXJ0eSB2aWV3IHRoZSB2aWV3IHNlbGVjdGVkIGZvciB0aGUgd2luZG93IChieSBpY29uLCBieSBuYW1lLCBieSBkYXRlLCBldGMuKQorIyAgICAgICAgZWxlbWVudCAnZHN1dCcgYXMgWydpbmR4JywgJ25hbWUnXQorIyAgICAgICAgZWxlbWVudCAnYWxpYScgYXMgWydpbmR4JywgJ25hbWUnXQorIyAgICAgICAgZWxlbWVudCAnYXBwZicgYXMgWydpbmR4JywgJ25hbWUnXQorIyAgICAgICAgZWxlbWVudCAnY3RucicgYXMgWydpbmR4JywgJ25hbWUnXQorIyAgICAgICAgZWxlbWVudCAnY2NkdicgYXMgWydpbmR4JywgJ25hbWUnXQorIyAgICAgICAgZWxlbWVudCAnZGFmaScgYXMgWydpbmR4JywgJ25hbWUnXQorIyAgICAgICAgZWxlbWVudCAnZG9jZicgYXMgWydpbmR4JywgJ25hbWUnXQorIyAgICAgICAgZWxlbWVudCAnZmlsZScgYXMgWydpbmR4JywgJ25hbWUnXQorIyAgICAgICAgZWxlbWVudCAnY2ZvbCcgYXMgWydpbmR4JywgJ25hbWUnXQorIyAgICAgICAgZWxlbWVudCAnZm50ZicgYXMgWydpbmR4JywgJ25hbWUnXQorIyAgICAgICAgZWxlbWVudCAnZnN1dCcgYXMgWydpbmR4JywgJ25hbWUnXQorIyAgICAgICAgZWxlbWVudCAnY29iaicgYXMgWydpbmR4JywgJ25hbWUnXQorIyAgICAgICAgZWxlbWVudCAnc2N0cicgYXMgWydpbmR4JywgJ25hbWUnXQorIyAgICAgICAgZWxlbWVudCAnc25kZicgYXMgWydpbmR4JywgJ25hbWUnXQorIyAgICAgICAgZWxlbWVudCAnc3RjcycgYXMgWydpbmR4JywgJ25hbWUnXQorCitjb250YWluZXJfd2luZG93cyA9IGNvbnRhaW5lcl93aW5kb3cKKworY2xhc3MgY29udGVudF9zcGFjZShhZXRvb2xzLkNvbXBvbmVudEl0ZW0pOgorCSIiImNvbnRlbnQgc3BhY2UgLSBBbGwgd2luZG93cywgaW5jbHVkaW5nIHRoZSBkZXNrdG9wIHdpbmRvdyAos1dpbmRvd7IgZG9lcyBub3QgaW5jbHVkZSB0aGUgZGVza3RvcCB3aW5kb3cpIiIiCisJd2FudCA9ICdkd25kJworCitjb250ZW50X3NwYWNlcyA9IGNvbnRlbnRfc3BhY2UKKworY2xhc3MgY29udHJvbF9wYW5lbChhZXRvb2xzLkNvbXBvbmVudEl0ZW0pOgorCSIiImNvbnRyb2wgcGFuZWwgLSBBIGNvbnRyb2wgcGFuZWwiIiIKKwl3YW50ID0gJ2NjZHYnCitjbGFzcyBjYWxjdWxhdGVfZm9sZGVyX3NpemVzKGFldG9vbHMuTlByb3BlcnR5KToKKwkiIiJjYWxjdWxhdGUgZm9sZGVyIHNpemVzIC0gKFZpZXdzKSBBcmUgZm9sZGVyIHNpemVzIGNhbGN1bGF0ZWQgYW5kIGRpc3BsYXllZCBpbiBGaW5kZXIgbGlzdCB3aW5kb3dzPyIiIgorCXdoaWNoID0gJ3Nmc3onCisJd2FudCA9ICdib29sJworY2xhc3MgY29tbWVudF9oZWFkaW5nKGFldG9vbHMuTlByb3BlcnR5KToKKwkiIiJjb21tZW50IGhlYWRpbmcgLSAoVmlld3MpIEFyZSBjb21tZW50cyBkaXNwbGF5ZWQgaW4gRmluZGVyIGxpc3Qgd2luZG93cz8iIiIKKwl3aGljaCA9ICdzY29tJworCXdhbnQgPSAnYm9vbCcKK2NsYXNzIGRhdGVfaGVhZGluZyhhZXRvb2xzLk5Qcm9wZXJ0eSk6CisJIiIiZGF0ZSBoZWFkaW5nIC0gKFZpZXdzKSBBcmUgbW9kaWZpY2F0aW9uIGRhdGVzIGRpc3BsYXllZCBpbiBGaW5kZXIgbGlzdCB3aW5kb3dzPyIiIgorCXdoaWNoID0gJ3NkYXQnCisJd2FudCA9ICdib29sJworY2xhc3MgZGlza19pbmZvcm1hdGlvbl9oZWFkaW5nKGFldG9vbHMuTlByb3BlcnR5KToKKwkiIiJkaXNrIGluZm9ybWF0aW9uIGhlYWRpbmcgLSAoVmlld3MpIElzIGluZm9ybWF0aW9uIGFib3V0IHRoZSB2b2x1bWUgZGlzcGxheWVkIGluIEZpbmRlciBsaXN0IHdpbmRvd3M/IiIiCisJd2hpY2ggPSAnc2RpbicKKwl3YW50ID0gJ2Jvb2wnCitjbGFzcyBpY29uX3NpemUoYWV0b29scy5OUHJvcGVydHkpOgorCSIiImljb24gc2l6ZSAtIChWaWV3cykgdGhlIHNpemUgb2YgaWNvbnMgZGlzcGxheWVkIGluIEZpbmRlciBsaXN0IHdpbmRvd3MiIiIKKwl3aGljaCA9ICdsdmlzJworCXdhbnQgPSAnbG9uZycKK2NsYXNzIGtpbmRfaGVhZGluZyhhZXRvb2xzLk5Qcm9wZXJ0eSk6CisJIiIia2luZCBoZWFkaW5nIC0gKFZpZXdzKSBBcmUgZG9jdW1lbnQga2luZHMgZGlzcGxheWVkIGluIEZpbmRlciBsaXN0IHdpbmRvd3M/IiIiCisJd2hpY2ggPSAnc2tuZCcKKwl3YW50ID0gJ2Jvb2wnCitjbGFzcyBsYWJlbF9oZWFkaW5nKGFldG9vbHMuTlByb3BlcnR5KToKKwkiIiJsYWJlbCBoZWFkaW5nIC0gKFZpZXdzKSBBcmUgbGFiZWxzIGRpc3BsYXllZCBpbiBGaW5kZXIgbGlzdCB3aW5kb3dzPyIiIgorCXdoaWNoID0gJ3NsYmwnCisJd2FudCA9ICdib29sJworY2xhc3Mgc2l6ZV9oZWFkaW5nKGFldG9vbHMuTlByb3BlcnR5KToKKwkiIiJzaXplIGhlYWRpbmcgLSAoVmlld3MpIEFyZSBmaWxlIHNpemVzIGRpc3BsYXllZCBpbiBGaW5kZXIgbGlzdCB3aW5kb3dzIiIiCisJd2hpY2ggPSAnc3NpeicKKwl3YW50ID0gJ2Jvb2wnCitjbGFzcyBzbmFwX3RvX2dyaWQoYWV0b29scy5OUHJvcGVydHkpOgorCSIiInNuYXAgdG8gZ3JpZCAtIChWaWV3cykgQXJlIGl0ZW1zIGFsd2F5cyBzbmFwcGVkIHRvIHRoZSBuZWFyZXN0IGdyaWQgcG9pbnQgd2hlbiB0aGV5IGFyZSBtb3ZlZD8iIiIKKwl3aGljaCA9ICdmZ3JkJworCXdhbnQgPSAnYm9vbCcKK2NsYXNzIHN0YWdnZXJlZF9ncmlkKGFldG9vbHMuTlByb3BlcnR5KToKKwkiIiJzdGFnZ2VyZWQgZ3JpZCAtIChWaWV3cykgQXJlIGdyaWQgbGluZXMgc3RhZ2dlcmVkPyIiIgorCXdoaWNoID0gJ2ZzdGcnCisJd2FudCA9ICdib29sJworY2xhc3MgdmVyc2lvbl9oZWFkaW5nKGFldG9vbHMuTlByb3BlcnR5KToKKwkiIiJ2ZXJzaW9uIGhlYWRpbmcgLSAoVmlld3MpIEFyZSBmaWxlIHZlcnNpb25zIGRpc3BsYXllZCBpbiBGaW5kZXIgbGlzdCB3aW5kb3dzPyIiIgorCXdoaWNoID0gJ3N2cnMnCisJd2FudCA9ICdib29sJworY2xhc3Mgdmlld19mb250KGFldG9vbHMuTlByb3BlcnR5KToKKwkiIiJ2aWV3IGZvbnQgLSAoVmlld3MpIHRoZSBpZCBvZiB0aGUgZm9udCB1c2VkIGluIEZpbmRlciB2aWV3cyIiIgorCXdoaWNoID0gJ3ZmbnQnCisJd2FudCA9ICdsb25nJworY2xhc3Mgdmlld19mb250X3NpemUoYWV0b29scy5OUHJvcGVydHkpOgorCSIiInZpZXcgZm9udCBzaXplIC0gKFZpZXdzKSB0aGUgc2l6ZSBvZiB0aGUgZm9udCB1c2VkIGluIEZpbmRlciB2aWV3cyIiIgorCXdoaWNoID0gJ3Zmc3onCisJd2FudCA9ICdsb25nJworCitjb250cm9sX3BhbmVscyA9IGNvbnRyb2xfcGFuZWwKKworY2xhc3MgZGVza19hY2Nlc3NvcnlfZmlsZShhZXRvb2xzLkNvbXBvbmVudEl0ZW0pOgorCSIiImRlc2sgYWNjZXNzb3J5IGZpbGUgLSBBIGRlc2sgYWNjZXNzb3J5IGZpbGUiIiIKKwl3YW50ID0gJ2RhZmknCisKK2Rlc2tfYWNjZXNzb3J5X2ZpbGVzID0gZGVza19hY2Nlc3NvcnlfZmlsZQorCitjbGFzcyBkZXNrdG9wXzJkX29iamVjdChhZXRvb2xzLkNvbXBvbmVudEl0ZW0pOgorCSIiImRlc2t0b3Atb2JqZWN0IC0gRGVza3RvcC1vYmplY3QgaXMgdGhlIGNsYXNzIG9mIHRoZSCzZGVza3RvcLIgb2JqZWN0IiIiCisJd2FudCA9ICdjZHNrJworY2xhc3Mgc3RhcnR1cF9kaXNrKGFldG9vbHMuTlByb3BlcnR5KToKKwkiIiJzdGFydHVwIGRpc2sgLSB0aGUgc3RhcnR1cCBkaXNrIiIiCisJd2hpY2ggPSAnc2RzaycKKwl3YW50ID0gJ29iaiAnCitjbGFzcyB0cmFzaChhZXRvb2xzLk5Qcm9wZXJ0eSk6CisJIiIidHJhc2ggLSB0aGUgdHJhc2giIiIKKwl3aGljaCA9ICd0cnNoJworCXdhbnQgPSAnb2JqICcKKyMgICAgICAgIGVsZW1lbnQgJ2RzdXQnIGFzIFsnaW5keCcsICduYW1lJ10KKyMgICAgICAgIGVsZW1lbnQgJ2FsaWEnIGFzIFsnaW5keCcsICduYW1lJ10KKyMgICAgICAgIGVsZW1lbnQgJ2FwcGYnIGFzIFsnaW5keCcsICduYW1lJ10KKyMgICAgICAgIGVsZW1lbnQgJ2N0bnInIGFzIFsnaW5keCcsICduYW1lJ10KKyMgICAgICAgIGVsZW1lbnQgJ2NjZHYnIGFzIFsnaW5keCcsICduYW1lJ10KKyMgICAgICAgIGVsZW1lbnQgJ2RhZmknIGFzIFsnaW5keCcsICduYW1lJ10KKyMgICAgICAgIGVsZW1lbnQgJ2RvY2YnIGFzIFsnaW5keCcsICduYW1lJ10KKyMgICAgICAgIGVsZW1lbnQgJ2ZpbGUnIGFzIFsnaW5keCcsICduYW1lJ10KKyMgICAgICAgIGVsZW1lbnQgJ2Nmb2wnIGFzIFsnaW5keCcsICduYW1lJ10KKyMgICAgICAgIGVsZW1lbnQgJ2ZudGYnIGFzIFsnaW5keCcsICduYW1lJ10KKyMgICAgICAgIGVsZW1lbnQgJ2ZzdXQnIGFzIFsnaW5keCcsICduYW1lJ10KKyMgICAgICAgIGVsZW1lbnQgJ2NvYmonIGFzIFsnaW5keCcsICduYW1lJ10KKyMgICAgICAgIGVsZW1lbnQgJ3NjdHInIGFzIFsnaW5keCcsICduYW1lJ10KKyMgICAgICAgIGVsZW1lbnQgJ3NuZGYnIGFzIFsnaW5keCcsICduYW1lJ10KKyMgICAgICAgIGVsZW1lbnQgJ3N0Y3MnIGFzIFsnaW5keCcsICduYW1lJ10KKworY2xhc3MgZGlzayhhZXRvb2xzLkNvbXBvbmVudEl0ZW0pOgorCSIiImRpc2sgLSBBIGRpc2siIiIKKwl3YW50ID0gJ2NkaXMnCitjbGFzcyBjYXBhY2l0eShhZXRvb2xzLk5Qcm9wZXJ0eSk6CisJIiIiY2FwYWNpdHkgLSB0aGUgdG90YWwgbnVtYmVyIG9mIGJ5dGVzIChmcmVlIG9yIHVzZWQpIG9uIHRoZSBkaXNrIiIiCisJd2hpY2ggPSAnY2FwYScKKwl3YW50ID0gJ2xvbmcnCitjbGFzcyBlamVjdGFibGUoYWV0b29scy5OUHJvcGVydHkpOgorCSIiImVqZWN0YWJsZSAtIENhbiB0aGUgbWVkaWEgY2FuIGJlIGVqZWN0ZWQgKGZsb3BwaWVzLCBDRCdzLCBzeXF1ZXN0KT8iIiIKKwl3aGljaCA9ICdpc2VqJworCXdhbnQgPSAnYm9vbCcKK2NsYXNzIGZyZWVfc3BhY2UoYWV0b29scy5OUHJvcGVydHkpOgorCSIiImZyZWUgc3BhY2UgLSB0aGUgbnVtYmVyIG9mIGZyZWUgYnl0ZXMgbGVmdCBvbiB0aGUgZGlzayIiIgorCXdoaWNoID0gJ2Zyc3AnCisJd2FudCA9ICdsb25nJworY2xhc3MgbG9jYWxfdm9sdW1lKGFldG9vbHMuTlByb3BlcnR5KToKKwkiIiJsb2NhbCB2b2x1bWUgLSBJcyB0aGUgbWVkaWEgaXMgYSBsb2NhbCB2b2x1bWUgKHJhdGhlciB0aGFuIGEgZmlsZSBzZXJ2ZXIpPyIiIgorCXdoaWNoID0gJ2lzcnYnCisJd2FudCA9ICdib29sJworY2xhc3Mgc3RhcnR1cChhZXRvb2xzLk5Qcm9wZXJ0eSk6CisJIiIic3RhcnR1cCAtIElzIHRoaXMgZGlzayB0aGUgYm9vdCBkaXNrPyIiIgorCXdoaWNoID0gJ2lzdGQnCisJd2FudCA9ICdib29sJworIyAgICAgICAgZWxlbWVudCAnZHN1dCcgYXMgWydpbmR4JywgJ25hbWUnXQorIyAgICAgICAgZWxlbWVudCAnYWxpYScgYXMgWydpbmR4JywgJ25hbWUnXQorIyAgICAgICAgZWxlbWVudCAnYXBwZicgYXMgWydpbmR4JywgJ25hbWUnXQorIyAgICAgICAgZWxlbWVudCAnY3RucicgYXMgWydpbmR4JywgJ25hbWUnXQorIyAgICAgICAgZWxlbWVudCAnY2NkdicgYXMgWydpbmR4JywgJ25hbWUnXQorIyAgICAgICAgZWxlbWVudCAnZGFmaScgYXMgWydpbmR4JywgJ25hbWUnXQorIyAgICAgICAgZWxlbWVudCAnZG9jZicgYXMgWydpbmR4JywgJ25hbWUnXQorIyAgICAgICAgZWxlbWVudCAnZmlsZScgYXMgWydpbmR4JywgJ25hbWUnXQorIyAgICAgICAgZWxlbWVudCAnY2ZvbCcgYXMgWydpbmR4JywgJ0lEICAnLCAnbmFtZSddCisjICAgICAgICBlbGVtZW50ICdmbnRmJyBhcyBbJ2luZHgnLCAnbmFtZSddCisjICAgICAgICBlbGVtZW50ICdmc3V0JyBhcyBbJ2luZHgnLCAnbmFtZSddCisjICAgICAgICBlbGVtZW50ICdjb2JqJyBhcyBbJ2luZHgnLCAnbmFtZSddCisjICAgICAgICBlbGVtZW50ICdzY3RyJyBhcyBbJ2luZHgnLCAnbmFtZSddCisjICAgICAgICBlbGVtZW50ICdzbmRmJyBhcyBbJ2luZHgnLCAnbmFtZSddCisjICAgICAgICBlbGVtZW50ICdzdGNzJyBhcyBbJ2luZHgnLCAnbmFtZSddCisKK2Rpc2tzID0gZGlzaworCitjbGFzcyBkb2N1bWVudF9maWxlKGFldG9vbHMuQ29tcG9uZW50SXRlbSk6CisJIiIiZG9jdW1lbnQgZmlsZSAtIEEgZG9jdW1lbnQgZmlsZSIiIgorCXdhbnQgPSAnZG9jZicKKworZG9jdW1lbnRfZmlsZXMgPSBkb2N1bWVudF9maWxlCisKK2NsYXNzIGZpbGUoYWV0b29scy5Db21wb25lbnRJdGVtKToKKwkiIiJmaWxlIC0gQSBmaWxlIiIiCisJd2FudCA9ICdmaWxlJworY2xhc3MgY3JlYXRvcl90eXBlKGFldG9vbHMuTlByb3BlcnR5KToKKwkiIiJjcmVhdG9yIHR5cGUgLSB0aGUgT1NUeXBlIGlkZW50aWZ5aW5nIHRoZSBhcHBsaWNhdGlvbiB0aGF0IGNyZWF0ZWQgdGhlIGl0ZW0iIiIKKwl3aGljaCA9ICdmY3J0JworCXdhbnQgPSAndHlwZScKK2NsYXNzIGZpbGVfdHlwZShhZXRvb2xzLk5Qcm9wZXJ0eSk6CisJIiIiZmlsZSB0eXBlIC0gdGhlIE9TVHlwZSBpZGVudGlmeWluZyB0aGUgdHlwZSBvZiBkYXRhIGNvbnRhaW5lZCBpbiB0aGUgaXRlbSIiIgorCXdoaWNoID0gJ2ZpdHAnCisJd2FudCA9ICd0eXBlJworY2xhc3MgbG9ja2VkKGFldG9vbHMuTlByb3BlcnR5KToKKwkiIiJsb2NrZWQgLSBJcyB0aGUgZmlsZSBsb2NrZWQ/IiIiCisJd2hpY2ggPSAnaXNsaycKKwl3YW50ID0gJ2Jvb2wnCisjIHJlcGVhdGVkIHByb3BlcnR5IHByb2R1Y3RfdmVyc2lvbiB0aGUgdmVyc2lvbiBvZiB0aGUgcHJvZHVjdCAodmlzaWJsZSBhdCB0aGUgdG9wIG9mIHRoZSCzR2V0IEluZm+yIGRpYWxvZykKK2NsYXNzIHN0YXRpb25lcnkoYWV0b29scy5OUHJvcGVydHkpOgorCSIiInN0YXRpb25lcnkgLSBJcyB0aGUgaXRlbSBhIHN0YXRpb25lcnkgcGFkPyIiIgorCXdoaWNoID0gJ3BzcGQnCisJd2FudCA9ICdib29sJworIyByZXBlYXRlZCBwcm9wZXJ0eSB2ZXJzaW9uIHRoZSB2ZXJzaW9uIG9mIHRoZSBmaWxlICh2aXNpYmxlIGF0IHRoZSBib3R0b20gb2YgdGhlILNHZXQgSW5mb7IgZGlhbG9nKQorCitmaWxlcyA9IGZpbGUKKworY2xhc3MgZm9sZGVyKGFldG9vbHMuQ29tcG9uZW50SXRlbSk6CisJIiIiZm9sZGVyIC0gQSBmb2xkZXIiIiIKKwl3YW50ID0gJ2Nmb2wnCisjICAgICAgICBlbGVtZW50ICdkc3V0JyBhcyBbJ2luZHgnLCAnbmFtZSddCisjICAgICAgICBlbGVtZW50ICdhbGlhJyBhcyBbJ2luZHgnLCAnbmFtZSddCisjICAgICAgICBlbGVtZW50ICdhcHBmJyBhcyBbJ2luZHgnLCAnbmFtZSddCisjICAgICAgICBlbGVtZW50ICdjdG5yJyBhcyBbJ2luZHgnLCAnbmFtZSddCisjICAgICAgICBlbGVtZW50ICdjY2R2JyBhcyBbJ2luZHgnLCAnbmFtZSddCisjICAgICAgICBlbGVtZW50ICdkYWZpJyBhcyBbJ2luZHgnLCAnbmFtZSddCisjICAgICAgICBlbGVtZW50ICdkb2NmJyBhcyBbJ2luZHgnLCAnbmFtZSddCisjICAgICAgICBlbGVtZW50ICdmaWxlJyBhcyBbJ2luZHgnLCAnbmFtZSddCisjICAgICAgICBlbGVtZW50ICdjZm9sJyBhcyBbJ2luZHgnLCAnbmFtZSddCisjICAgICAgICBlbGVtZW50ICdmbnRmJyBhcyBbJ2luZHgnLCAnbmFtZSddCisjICAgICAgICBlbGVtZW50ICdmc3V0JyBhcyBbJ2luZHgnLCAnbmFtZSddCisjICAgICAgICBlbGVtZW50ICdjb2JqJyBhcyBbJ2luZHgnLCAnbmFtZSddCisjICAgICAgICBlbGVtZW50ICdzY3RyJyBhcyBbJ2luZHgnLCAnbmFtZSddCisjICAgICAgICBlbGVtZW50ICdzbmRmJyBhcyBbJ2luZHgnLCAnbmFtZSddCisjICAgICAgICBlbGVtZW50ICdzdGNzJyBhcyBbJ2luZHgnLCAnbmFtZSddCisKK2ZvbGRlcnMgPSBmb2xkZXIKKworY2xhc3MgZm9udF9maWxlKGFldG9vbHMuQ29tcG9uZW50SXRlbSk6CisJIiIiZm9udCBmaWxlIC0gQSBmb250IGZpbGUiIiIKKwl3YW50ID0gJ2ZudGYnCisKK2ZvbnRfZmlsZXMgPSBmb250X2ZpbGUKKworY2xhc3MgZm9udF9zdWl0Y2FzZShhZXRvb2xzLkNvbXBvbmVudEl0ZW0pOgorCSIiImZvbnQgc3VpdGNhc2UgLSBBIGZvbnQgc3VpdGNhc2UiIiIKKwl3YW50ID0gJ2ZzdXQnCisjICAgICAgICBlbGVtZW50ICdjb2JqJyBhcyBbJ2luZHgnLCAnbmFtZSddCisKK2ZvbnRfc3VpdGNhc2VzID0gZm9udF9zdWl0Y2FzZQorCitjbGFzcyBncm91cChhZXRvb2xzLkNvbXBvbmVudEl0ZW0pOgorCSIiImdyb3VwIC0gQSBHcm91cCBpbiB0aGUgVXNlcnMgYW5kIEdyb3VwcyBjb250cm9sIHBhbmVsIiIiCisJd2FudCA9ICdzZ3JwJworY2xhc3MgYm91bmRzKGFldG9vbHMuTlByb3BlcnR5KToKKwkiIiJib3VuZHMgLSB0aGUgYm91bmRpbmcgcmVjdGFuZ2xlIG9mIHRoZSBncm91cCIiIgorCXdoaWNoID0gJ3BibmQnCisJd2FudCA9ICdxZHJ0JworY2xhc3MgaWNvbihhZXRvb2xzLk5Qcm9wZXJ0eSk6CisJIiIiaWNvbiAtIHRoZSBpY29uIGJpdG1hcCBvZiB0aGUgZ3JvdXAiIiIKKwl3aGljaCA9ICdpaW1nJworCXdhbnQgPSAnaWZhbScKK2NsYXNzIGxhYmVsX2luZGV4KGFldG9vbHMuTlByb3BlcnR5KToKKwkiIiJsYWJlbCBpbmRleCAtIHRoZSBsYWJlbCBvZiB0aGUgZ3JvdXAiIiIKKwl3aGljaCA9ICdsYWJpJworCXdhbnQgPSAnbG9uZycKK2NsYXNzIG5hbWUoYWV0b29scy5OUHJvcGVydHkpOgorCSIiIm5hbWUgLSB0aGUgbmFtZSBvZiB0aGUgZ3JvdXAiIiIKKwl3aGljaCA9ICdwbmFtJworCXdhbnQgPSAnaXR4dCcKK2NsYXNzIHBvc2l0aW9uKGFldG9vbHMuTlByb3BlcnR5KToKKwkiIiJwb3NpdGlvbiAtIHRoZSBwb3NpdGlvbiBvZiB0aGUgZ3JvdXAgd2l0aGluIGl0cyBwYXJlbnQgd2luZG93IiIiCisJd2hpY2ggPSAncG9zbicKKwl3YW50ID0gJ1FEcHQnCisKK2dyb3VwcyA9IGdyb3VwCisKK2NsYXNzIGluZm9ybWF0aW9uX3dpbmRvdyhhZXRvb2xzLkNvbXBvbmVudEl0ZW0pOgorCSIiImluZm9ybWF0aW9uIHdpbmRvdyAtIEFuIGluZm9ybWF0aW9uIHdpbmRvdyAob3BlbmVkIGJ5ILNHZXQgSW5mb4qyKSIiIgorCXdhbnQgPSAnaXduZCcKK2NsYXNzIGNvbW1lbnQoYWV0b29scy5OUHJvcGVydHkpOgorCSIiImNvbW1lbnQgLSB0aGUgY29tbWVudCIiIgorCXdoaWNoID0gJ2NvbXQnCisJd2FudCA9ICdpdHh0JworY2xhc3MgY3JlYXRpb25fZGF0ZShhZXRvb2xzLk5Qcm9wZXJ0eSk6CisJIiIiY3JlYXRpb24gZGF0ZSAtIHRoZSBkYXRlIG9uIHdoaWNoIHRoZSBpdGVtIHdhcyBjcmVhdGVkIiIiCisJd2hpY2ggPSAnY3J0ZCcKKwl3YW50ID0gJ2xkdCAnCisjIHJlcGVhdGVkIHByb3BlcnR5IGljb24gdGhlIGljb24gYml0bWFwIG9mIHRoZSBpdGVtCisjIHJlcGVhdGVkIHByb3BlcnR5IGl0ZW0gdGhlIGl0ZW0gdGhpcyB3aW5kb3cgd2FzIG9wZW5lZCBmcm9tCisjIHJlcGVhdGVkIHByb3BlcnR5IGxvY2tlZCBJcyB0aGUgaXRlbSBsb2NrZWQ/CisjIHJlcGVhdGVkIHByb3BlcnR5IG1pbmltdW1fcGFydGl0aW9uX3NpemUgdGhlIHNtYWxsZXN0IG1lbW9yeSBzaXplIHRoYXQgdGhlIGFwcGxpY2F0aW9uIGNhbiBwb3NzaWJseSBiZSBsYXVuY2hlZCB3aXRoCitjbGFzcyBtb2RpZmljYXRpb25fZGF0ZShhZXRvb2xzLk5Qcm9wZXJ0eSk6CisJIiIibW9kaWZpY2F0aW9uIGRhdGUgLSB0aGUgZGF0ZSBvbiB3aGljaCB0aGUgaXRlbSB3YXMgbGFzdCBtb2RpZmllZCIiIgorCXdoaWNoID0gJ21vZGQnCisJd2FudCA9ICdsZHQgJworIyByZXBlYXRlZCBwcm9wZXJ0eSBwYXJ0aXRpb25fc2l6ZSB0aGUgbWVtb3J5IHNpemUgdGhhdCB0aGUgYXBwbGljYXRpb24gd2lsbCBiZSBsYXVuY2hlZCB3aXRoCitjbGFzcyBwaHlzaWNhbF9zaXplKGFldG9vbHMuTlByb3BlcnR5KToKKwkiIiJwaHlzaWNhbCBzaXplIC0gdGhlIGFjdHVhbCBzcGFjZSB1c2VkIGJ5IHRoZSBpdGVtIG9uIGRpc2siIiIKKwl3aGljaCA9ICdwaHlzJworCXdhbnQgPSAnbG9uZycKKyMgcmVwZWF0ZWQgcHJvcGVydHkgcHJvZHVjdF92ZXJzaW9uIHRoZSB2ZXJzaW9uIG9mIHRoZSBwcm9kdWN0ICh2aXNpYmxlIGF0IHRoZSB0b3Agb2YgdGhlILNHZXQgSW5mb7IgZGlhbG9nKQorY2xhc3Mgc2l6ZShhZXRvb2xzLk5Qcm9wZXJ0eSk6CisJIiIic2l6ZSAtIHRoZSBsb2dpY2FsIHNpemUgb2YgdGhlIGl0ZW0iIiIKKwl3aGljaCA9ICdwdHN6JworCXdhbnQgPSAnbG9uZycKKyMgcmVwZWF0ZWQgcHJvcGVydHkgc3RhdGlvbmVyeSBJcyB0aGUgaXRlbSBhIHN0YXRpb25lcnkgcGFkPworIyByZXBlYXRlZCBwcm9wZXJ0eSBzdWdnZXN0ZWRfcGFydGl0aW9uX3NpemUgdGhlIG1lbW9yeSBzaXplIHRoYXQgdGhlIGRldmVsb3BlciByZWNvbW1lbmRzIHRoYXQgdGhlIGFwcGxpY2F0aW9uIHNob3VsZCBiZSBsYXVuY2hlZCB3aXRoCisjIHJlcGVhdGVkIHByb3BlcnR5IHZlcnNpb24gdGhlIHZlcnNpb24gb2YgdGhlIGZpbGUgKHZpc2libGUgYXQgdGhlIGJvdHRvbSBvZiB0aGUgs0dldCBJbmZvsiBkaWFsb2cpCitjbGFzcyB3YXJuX2JlZm9yZV9lbXB0eWluZyhhZXRvb2xzLk5Qcm9wZXJ0eSk6CisJIiIid2FybiBiZWZvcmUgZW1wdHlpbmcgLSBJcyBhIGRpYWxvZyBkaXNwbGF5ZWQgd2hlbiCzRW1wdHkgdHJhc2iKsiBpcyBzZWxlY3RlZD8iIiIKKwl3aGljaCA9ICd3YXJuJworCXdhbnQgPSAnYm9vbCcKKworaW5mb3JtYXRpb25fd2luZG93cyA9IGluZm9ybWF0aW9uX3dpbmRvdworCitjbGFzcyBpdGVtKGFldG9vbHMuQ29tcG9uZW50SXRlbSk6CisJIiIiaXRlbSAtIEFuIGl0ZW0iIiIKKwl3YW50ID0gJ2NvYmonCisjIHJlcGVhdGVkIHByb3BlcnR5IGJvdW5kcyB0aGUgYm91bmRpbmcgcmVjdGFuZ2xlIG9mIHRoZSBpdGVtCisjIHJlcGVhdGVkIHByb3BlcnR5IGNvbW1lbnQgdGhlIGNvbW1lbnQgZGlzcGxheWVkIGluIHRoZSCzR2V0IEluZm+yIHdpbmRvdyBvZiB0aGUgaXRlbQorIyByZXBlYXRlZCBwcm9wZXJ0eSBjb250YWluZXIgdGhlIGNvbnRhaW5lciBvZiB0aGlzIGl0ZW0KK2NsYXNzIGNvbnRlbnRfc3BhY2UoYWV0b29scy5OUHJvcGVydHkpOgorCSIiImNvbnRlbnQgc3BhY2UgLSB0aGUgd2luZG93IHRoYXQgd291bGQgb3BlbiBpZiB0aGUgaXRlbSB3YXMgb3BlbmVkIiIiCisJd2hpY2ggPSAnZHduZCcKKwl3YW50ID0gJ2R3bmQnCisjIHJlcGVhdGVkIHByb3BlcnR5IGNyZWF0aW9uX2RhdGUgdGhlIGRhdGUgb24gd2hpY2ggdGhlIGl0ZW0gd2FzIGNyZWF0ZWQKKyMgcmVwZWF0ZWQgcHJvcGVydHkgZGlzayB0aGUgZGlzayBvbiB3aGljaCB0aGUgaXRlbSBpcyBzdG9yZWQKKyMgcmVwZWF0ZWQgcHJvcGVydHkgZm9sZGVyIHRoZSBmb2xkZXIgaW4gd2hpY2ggdGhlIGl0ZW0gaXMgc3RvcmVkCisjIHJlcGVhdGVkIHByb3BlcnR5IGljb24gdGhlIGljb24gYml0bWFwIG9mIHRoZSBpdGVtCitjbGFzcyBpZChhZXRvb2xzLk5Qcm9wZXJ0eSk6CisJIiIiaWQgLSBhbiBpZCB0aGF0IGlkZW50aWZpZXMgdGhlIGl0ZW0iIiIKKwl3aGljaCA9ICdJRCAgJworCXdhbnQgPSAnbG9uZycKK2NsYXNzIGluZm9ybWF0aW9uX3dpbmRvdyhhZXRvb2xzLk5Qcm9wZXJ0eSk6CisJIiIiaW5mb3JtYXRpb24gd2luZG93IC0gdGhlIGluZm9ybWF0aW9uIHdpbmRvdyBmb3IgdGhlIGl0ZW0iIiIKKwl3aGljaCA9ICdpd25kJworCXdhbnQgPSAnb2JqICcKK2NsYXNzIGtpbmQoYWV0b29scy5OUHJvcGVydHkpOgorCSIiImtpbmQgLSB0aGUga2luZCBvZiB0aGUgaXRlbSIiIgorCXdoaWNoID0gJ2tpbmQnCisJd2FudCA9ICdpdHh0JworIyByZXBlYXRlZCBwcm9wZXJ0eSBsYWJlbF9pbmRleCB0aGUgbGFiZWwgb2YgdGhlIGl0ZW0KKyMgcmVwZWF0ZWQgcHJvcGVydHkgbW9kaWZpY2F0aW9uX2RhdGUgdGhlIGRhdGUgb24gd2hpY2ggdGhlIGl0ZW0gd2FzIGxhc3QgbW9kaWZpZWQKKyMgcmVwZWF0ZWQgcHJvcGVydHkgbmFtZSB0aGUgbmFtZSBvZiB0aGUgaXRlbQorIyByZXBlYXRlZCBwcm9wZXJ0eSBwaHlzaWNhbF9zaXplIHRoZSBhY3R1YWwgc3BhY2UgdXNlZCBieSB0aGUgaXRlbSBvbiBkaXNrCisjIHJlcGVhdGVkIHByb3BlcnR5IHBvc2l0aW9uIHRoZSBwb3NpdGlvbiBvZiB0aGUgaXRlbSB3aXRoaW4gaXRzIHBhcmVudCB3aW5kb3cKK2NsYXNzIHNlbGVjdGVkKGFldG9vbHMuTlByb3BlcnR5KToKKwkiIiJzZWxlY3RlZCAtIElzIHRoZSBpdGVtIHNlbGVjdGVkPyIiIgorCXdoaWNoID0gJ2lzc2wnCisJd2FudCA9ICdib29sJworIyByZXBlYXRlZCBwcm9wZXJ0eSBzaXplIHRoZSBsb2dpY2FsIHNpemUgb2YgdGhlIGl0ZW0KK2NsYXNzIHdpbmRvdyhhZXRvb2xzLk5Qcm9wZXJ0eSk6CisJIiIid2luZG93IC0gdGhlIHdpbmRvdyB0aGF0IHdvdWxkIG9wZW4gaWYgdGhlIGl0ZW0gd2FzIG9wZW5lZCIiIgorCXdoaWNoID0gJ2N3aW4nCisJd2FudCA9ICdjd2luJworCitpdGVtcyA9IGl0ZW0KKworY2xhc3MgcHJvY2VzcyhhZXRvb2xzLkNvbXBvbmVudEl0ZW0pOgorCSIiInByb2Nlc3MgLSBBIHByb2Nlc3MgcnVubmluZyBvbiB0aGlzIE1hY2ludG9zaCIiIgorCXdhbnQgPSAncHJjcycKKyMgcmVwZWF0ZWQgcHJvcGVydHkgY3JlYXRvcl90eXBlIHRoZSBjcmVhdG9yIHR5cGUgb2YgdGhpcyBwcm9jZXNzCitjbGFzcyBmaWxlKGFldG9vbHMuTlByb3BlcnR5KToKKwkiIiJmaWxlIC0gdGhlIGZpbGUgdGhhdCBsYXVuY2hlZCB0aGlzIHByb2Nlc3MiIiIKKwl3aGljaCA9ICdmaWxlJworCXdhbnQgPSAnb2JqICcKKyMgcmVwZWF0ZWQgcHJvcGVydHkgZmlsZV90eXBlIHRoZSBmaWxlIHR5cGUgb2YgdGhlIGZpbGUgdGhhdCBsYXVuY2hlZCB0aGlzIHByb2Nlc3MKKyMgcmVwZWF0ZWQgcHJvcGVydHkgZnJvbnRtb3N0IElzIHRoaXMgdGhlIGZyb250bW9zdCBhcHBsaWNhdGlvbj8KKyMgcmVwZWF0ZWQgcHJvcGVydHkgbmFtZSB0aGUgbmFtZSBvZiB0aGUgcHJvY2VzcworIyByZXBlYXRlZCBwcm9wZXJ0eSBwYXJ0aXRpb25fc2l6ZSB0aGUgc2l6ZSBvZiB0aGUgcGFydGl0aW9uIHRoYXQgdGhpcyBhcHBsaWNhdGlvbiB3YXMgbGF1bmNoZWQgd2l0aAorY2xhc3MgcGFydGl0aW9uX3NwYWNlX3VzZWQoYWV0b29scy5OUHJvcGVydHkpOgorCSIiInBhcnRpdGlvbiBzcGFjZSB1c2VkIC0gdGhlIG51bWJlciBvZiBieXRlcyBjdXJyZW50bHkgdXNlZCBpbiB0aGlzIHBhcnRpdGlvbiIiIgorCXdoaWNoID0gJ3B1c2QnCisJd2FudCA9ICdsb25nJworY2xhc3MgcmVtb3RlX2V2ZW50cyhhZXRvb2xzLk5Qcm9wZXJ0eSk6CisJIiIicmVtb3RlIGV2ZW50cyAtIFdpbGwgdGhpcyBwcm9jZXNzIGFjY2VwdHMgcmVtb3RlIGV2ZW50cz8iIiIKKwl3aGljaCA9ICdyZXZ0JworCXdhbnQgPSAnYm9vbCcKKyMgcmVwZWF0ZWQgcHJvcGVydHkgc2NyaXB0YWJsZSBJcyB0aGlzIHByb2Nlc3MgaGlnaC1sZXZlbCBldmVudCBhd2FyZSAoYWNjZXB0cyBvcGVuIGFwcGxpY2F0aW9uLCBvcGVuIGRvY3VtZW50LCBwcmludCBkb2N1bWVudCwgYW5kIHF1aXQpPworIyByZXBlYXRlZCBwcm9wZXJ0eSB2aXNpYmxlIElzIHRoaXMgcHJvY2VzcycgbGF5ZXIgdmlzaWJsZT8KKworcHJvY2Vzc2VzID0gcHJvY2VzcworCitjbGFzcyBzaGFyYWJsZV9jb250YWluZXIoYWV0b29scy5Db21wb25lbnRJdGVtKToKKwkiIiJzaGFyYWJsZSBjb250YWluZXIgLSBBIGNvbnRhaW5lciB0aGF0IG1heSBiZSBzaGFyZWQgKGRpc2tzIGFuZCBmb2xkZXJzKSIiIgorCXdhbnQgPSAnc2N0cicKK2NsYXNzIGV4cG9ydGVkKGFldG9vbHMuTlByb3BlcnR5KToKKwkiIiJleHBvcnRlZCAtIElzIHRoaXMgZm9sZGVyIGEgc2hhcmUgcG9pbnQgb3IgaW5zaWRlIGEgc2hhcmUgcG9pbnQ/IiIiCisJd2hpY2ggPSAnc2V4cCcKKwl3YW50ID0gJ2Jvb2wnCitjbGFzcyBncm91cChhZXRvb2xzLk5Qcm9wZXJ0eSk6CisJIiIiZ3JvdXAgLSB0aGUgdXNlciBvciBncm91cCB0aGF0IGhhcyBzcGVjaWFsIGFjY2VzcyB0byB0aGUgZm9sZGVyIiIiCisJd2hpY2ggPSAnc2dycCcKKwl3YW50ID0gJ2l0eHQnCitjbGFzcyBncm91cF9wcml2aWxlZ2VzKGFldG9vbHMuTlByb3BlcnR5KToKKwkiIiJncm91cCBwcml2aWxlZ2VzIC0gdGhlIHNlZSBmb2xkZXJzL3NlZSBmaWxlcy9tYWtlIGNoYW5nZXMgcHJpdmlsZWdlcyBmb3IgdGhlIGdyb3VwIiIiCisJd2hpY2ggPSAnZ3BwcicKKwl3YW50ID0gJ3ByaXYnCitjbGFzcyBndWVzdF9wcml2aWxlZ2VzKGFldG9vbHMuTlByb3BlcnR5KToKKwkiIiJndWVzdCBwcml2aWxlZ2VzIC0gdGhlIHNlZSBmb2xkZXJzL3NlZSBmaWxlcy9tYWtlIGNoYW5nZXMgcHJpdmlsZWdlcyBmb3IgZXZlcnlvbmUiIiIKKwl3aGljaCA9ICdnc3RwJworCXdhbnQgPSAncHJpdicKK2NsYXNzIGluaGVyaXRlZF9wcml2aWxlZ2VzKGFldG9vbHMuTlByb3BlcnR5KToKKwkiIiJpbmhlcml0ZWQgcHJpdmlsZWdlcyAtIEFyZSB0aGUgcHJpdmlsZWdlcyBvZiB0aGlzIGl0ZW0gYWx3YXlzIHRoZSBzYW1lIGFzIHRoZSBjb250YWluZXIgaXQgaXMgc3RvcmVkIGluPyIiIgorCXdoaWNoID0gJ2lwcnYnCisJd2FudCA9ICdib29sJworY2xhc3MgbW91bnRlZChhZXRvb2xzLk5Qcm9wZXJ0eSk6CisJIiIibW91bnRlZCAtIElzIHRoaXMgZm9sZGVyIG1vdW50ZWQgb24gYW5vdGhlciBtYWNoaW5lJ3MgZGVza3RvcD8iIiIKKwl3aGljaCA9ICdzbW91JworCXdhbnQgPSAnYm9vbCcKK2NsYXNzIG93bmVyKGFldG9vbHMuTlByb3BlcnR5KToKKwkiIiJvd25lciAtIHRoZSB1c2VyIHRoYXQgb3ducyB0aGlzIGZvbGRlciIiIgorCXdoaWNoID0gJ3Nvd24nCisJd2FudCA9ICdpdHh0JworY2xhc3Mgb3duZXJfcHJpdmlsZWdlcyhhZXRvb2xzLk5Qcm9wZXJ0eSk6CisJIiIib3duZXIgcHJpdmlsZWdlcyAtIHRoZSBzZWUgZm9sZGVycy9zZWUgZmlsZXMvbWFrZSBjaGFuZ2VzIHByaXZpbGVnZXMgZm9yIHRoZSBvd25lciIiIgorCXdoaWNoID0gJ293bnInCisJd2FudCA9ICdwcml2JworY2xhc3MgcHJvdGVjdGVkKGFldG9vbHMuTlByb3BlcnR5KToKKwkiIiJwcm90ZWN0ZWQgLSBJcyBjb250YWluZXIgcHJvdGVjdGVkIGZyb20gYmVpbmcgbW92ZWQsIHJlbmFtZWQgb3IgZGVsZXRlZD8iIiIKKwl3aGljaCA9ICdzcHJvJworCXdhbnQgPSAnYm9vbCcKK2NsYXNzIHNoYXJlZChhZXRvb2xzLk5Qcm9wZXJ0eSk6CisJIiIic2hhcmVkIC0gSXMgY29udGFpbmVyIGEgc2hhcmUgcG9pbnQ/IiIiCisJd2hpY2ggPSAnc2hhcicKKwl3YW50ID0gJ2Jvb2wnCitjbGFzcyBzaGFyaW5nX3dpbmRvdyhhZXRvb2xzLk5Qcm9wZXJ0eSk6CisJIiIic2hhcmluZyB3aW5kb3cgLSB0aGUgc2hhcmluZyB3aW5kb3cgZm9yIHRoZSBjb250YWluZXIiIiIKKwl3aGljaCA9ICdzd25kJworCXdhbnQgPSAnb2JqICcKKyMgICAgICAgIGVsZW1lbnQgJ2RzdXQnIGFzIFsnaW5keCcsICduYW1lJ10KKyMgICAgICAgIGVsZW1lbnQgJ2FsaWEnIGFzIFsnaW5keCcsICduYW1lJ10KKyMgICAgICAgIGVsZW1lbnQgJ2FwcGYnIGFzIFsnaW5keCcsICduYW1lJ10KKyMgICAgICAgIGVsZW1lbnQgJ2N0bnInIGFzIFsnaW5keCcsICduYW1lJ10KKyMgICAgICAgIGVsZW1lbnQgJ2NjZHYnIGFzIFsnaW5keCcsICduYW1lJ10KKyMgICAgICAgIGVsZW1lbnQgJ2RhZmknIGFzIFsnaW5keCcsICduYW1lJ10KKyMgICAgICAgIGVsZW1lbnQgJ2RvY2YnIGFzIFsnaW5keCcsICduYW1lJ10KKyMgICAgICAgIGVsZW1lbnQgJ2ZpbGUnIGFzIFsnaW5keCcsICduYW1lJ10KKyMgICAgICAgIGVsZW1lbnQgJ2Nmb2wnIGFzIFsnaW5keCcsICduYW1lJ10KKyMgICAgICAgIGVsZW1lbnQgJ2ZudGYnIGFzIFsnaW5keCcsICduYW1lJ10KKyMgICAgICAgIGVsZW1lbnQgJ2ZzdXQnIGFzIFsnaW5keCcsICduYW1lJ10KKyMgICAgICAgIGVsZW1lbnQgJ2NvYmonIGFzIFsnaW5keCcsICduYW1lJ10KKyMgICAgICAgIGVsZW1lbnQgJ3NjdHInIGFzIFsnaW5keCcsICduYW1lJ10KKyMgICAgICAgIGVsZW1lbnQgJ3NuZGYnIGFzIFsnaW5keCcsICduYW1lJ10KKyMgICAgICAgIGVsZW1lbnQgJ3N0Y3MnIGFzIFsnaW5keCcsICduYW1lJ10KKworc2hhcmFibGVfY29udGFpbmVycyA9IHNoYXJhYmxlX2NvbnRhaW5lcgorCitjbGFzcyBzaGFyaW5nX3ByaXZpbGVnZXMoYWV0b29scy5Db21wb25lbnRJdGVtKToKKwkiIiJzaGFyaW5nIHByaXZpbGVnZXMgLSBBIHNldCBvZiBzaGFyaW5nIHByb3BlcnRpZXMiIiIKKwl3YW50ID0gJ3ByaXYnCitjbGFzcyBtYWtlX2NoYW5nZXMoYWV0b29scy5OUHJvcGVydHkpOgorCSIiIm1ha2UgY2hhbmdlcyAtIHByaXZpbGVnZXMgdG8gbWFrZSBjaGFuZ2VzIiIiCisJd2hpY2ggPSAncHJ2dycKKwl3YW50ID0gJ2Jvb2wnCitjbGFzcyBzZWVfZmlsZXMoYWV0b29scy5OUHJvcGVydHkpOgorCSIiInNlZSBmaWxlcyAtIHByaXZpbGVnZXMgdG8gc2VlIGZpbGVzIiIiCisJd2hpY2ggPSAncHJ2cicKKwl3YW50ID0gJ2Jvb2wnCitjbGFzcyBzZWVfZm9sZGVycyhhZXRvb2xzLk5Qcm9wZXJ0eSk6CisJIiIic2VlIGZvbGRlcnMgLSBwcml2aWxlZ2VzIHRvIHNlZSBmb2xkZXJzIiIiCisJd2hpY2ggPSAncHJ2cycKKwl3YW50ID0gJ2Jvb2wnCisKK2NsYXNzIHNoYXJpbmdfd2luZG93KGFldG9vbHMuQ29tcG9uZW50SXRlbSk6CisJIiIic2hhcmluZyB3aW5kb3cgLSBBIHNoYXJpbmcgd2luZG93IChvcGVuZWQgYnkgs1NoYXJpbmeKsikiIiIKKwl3YW50ID0gJ3N3bmQnCisjIHJlcGVhdGVkIHByb3BlcnR5IGNvbnRhaW5lciB0aGUgY29udGFpbmVyIHRoYXQgdGhpcyB3aW5kb3cgd2FzIG9wZW5lZCBmcm9tCisjIHJlcGVhdGVkIHByb3BlcnR5IGV4cG9ydGVkIElzIHRoaXMgY29udGFpbmVyIGEgc2hhcmUgcG9pbnQgb3IgaW5zaWRlIGEgc2hhcmUgcG9pbnQ/CisjIHJlcGVhdGVkIHByb3BlcnR5IGZvbGRlciB0aGUgZm9sZGVyIHRoYXQgdGhpcyB3aW5kb3cgd2FzIG9wZW5lZCBmcm9tCisjIHJlcGVhdGVkIHByb3BlcnR5IGdyb3VwIHRoZSB1c2VyIG9yIGdyb3VwIHRoYXQgaGFzIHNwZWNpYWwgYWNjZXNzIHRvIHRoZSBjb250YWluZXIKKyMgcmVwZWF0ZWQgcHJvcGVydHkgZ3JvdXBfcHJpdmlsZWdlcyB0aGUgc2VlIGZvbGRlcnMvc2VlIGZpbGVzL21ha2UgY2hhbmdlcyBwcml2aWxlZ2VzIGZvciB0aGUgZ3JvdXAKKyMgcmVwZWF0ZWQgcHJvcGVydHkgZ3Vlc3RfcHJpdmlsZWdlcyB0aGUgc2VlIGZvbGRlcnMvc2VlIGZpbGVzL21ha2UgY2hhbmdlcyBwcml2aWxlZ2VzIGZvciBldmVyeW9uZQorIyByZXBlYXRlZCBwcm9wZXJ0eSBpbmhlcml0ZWRfcHJpdmlsZWdlcyBBcmUgdGhlIHByaXZpbGVnZXMgb2YgdGhpcyBpdGVtIGFsd2F5cyB0aGUgc2FtZSBhcyB0aGUgY29udGFpbmVyIGl0IGlzIHN0b3JlZCBpbj8KKyMgcmVwZWF0ZWQgcHJvcGVydHkgaXRlbSB0aGUgaXRlbSB0aGF0IHRoaXMgd2luZG93IHdhcyBvcGVuZWQgZnJvbQorIyByZXBlYXRlZCBwcm9wZXJ0eSBtb3VudGVkIElzIHRoaXMgY29udGFpbmVyIG1vdW50ZWQgb24gYW5vdGhlciBtYWNoaW5lJ3MgZGVza3RvcD8KKyMgcmVwZWF0ZWQgcHJvcGVydHkgb3duZXIgdGhlIHVzZXIgdGhhdCBvd25zIHRoZSBjb250YWluZXIKKyMgcmVwZWF0ZWQgcHJvcGVydHkgb3duZXJfcHJpdmlsZWdlcyB0aGUgc2VlIGZvbGRlcnMvc2VlIGZpbGVzL21ha2UgY2hhbmdlcyBwcml2aWxlZ2VzIGZvciB0aGUgb3duZXIKKyMgcmVwZWF0ZWQgcHJvcGVydHkgcHJvdGVjdGVkIElzIGNvbnRhaW5lciBwcm90ZWN0ZWQgZnJvbSBiZWluZyBtb3ZlZCwgcmVuYW1lZCBvciBkZWxldGVkPworY2xhc3Mgc2hhcmFibGVfY29udGFpbmVyKGFldG9vbHMuTlByb3BlcnR5KToKKwkiIiJzaGFyYWJsZSBjb250YWluZXIgLSB0aGUgc2hhcmFibGUgY29udGFpbmVyIHRoYXQgdGhpcyB3aW5kb3cgd2FzIG9wZW5lZCBmcm9tIiIiCisJd2hpY2ggPSAnc2N0cicKKwl3YW50ID0gJ29iaiAnCisjIHJlcGVhdGVkIHByb3BlcnR5IHNoYXJlZCBJcyBjb250YWluZXIgYSBzaGFyZSBwb2ludD8KKworc2hhcmluZ193aW5kb3dzID0gc2hhcmluZ193aW5kb3cKKworY2xhc3Mgc291bmRfZmlsZShhZXRvb2xzLkNvbXBvbmVudEl0ZW0pOgorCSIiInNvdW5kIGZpbGUgLSBUaGlzIGNsYXNzIHJlcHJlc2VudHMgc291bmQgZmlsZXMiIiIKKwl3YW50ID0gJ3NuZGYnCisKK3NvdW5kX2ZpbGVzID0gc291bmRfZmlsZQorCitjbGFzcyBzdGF0dXNfd2luZG93KGFldG9vbHMuQ29tcG9uZW50SXRlbSk6CisJIiIic3RhdHVzIHdpbmRvdyAtIFRoZXNlIHdpbmRvd3MgYXJlIHByb2dyZXNzIGRpYWxvZ3MgKGNvcHkgd2luZG93LCByZWJ1aWxkIGRlc2t0b3AgZGF0YWJhc2UsIGVtcHR5IHRyYXNoKSIiIgorCXdhbnQgPSAncXduZCcKKworc3RhdHVzX3dpbmRvd3MgPSBzdGF0dXNfd2luZG93CisKK2NsYXNzIHN1aXRjYXNlKGFldG9vbHMuQ29tcG9uZW50SXRlbSk6CisJIiIic3VpdGNhc2UgLSBBIGZvbnQgb3IgZGVzayBhY2Nlc3Nvcnkgc3VpdGNhc2UiIiIKKwl3YW50ID0gJ3N0Y3MnCisjICAgICAgICBlbGVtZW50ICdjb2JqJyBhcyBbJ2luZHgnLCAnbmFtZSddCisKK3N1aXRjYXNlcyA9IHN1aXRjYXNlCisKK2NsYXNzIHRyYXNoXzJkX29iamVjdChhZXRvb2xzLkNvbXBvbmVudEl0ZW0pOgorCSIiInRyYXNoLW9iamVjdCAtIFRyYXNoLW9iamVjdCBpcyB0aGUgY2xhc3Mgb2YgdGhlILN0cmFzaLIgb2JqZWN0IiIiCisJd2FudCA9ICdjdHJzJworIyByZXBlYXRlZCBwcm9wZXJ0eSB3YXJuX2JlZm9yZV9lbXB0eWluZyBJcyBhIGRpYWxvZyBkaXNwbGF5ZWQgd2hlbiCzRW1wdHkgdHJhc2iKsiBpcyBzZWxlY3RlZD8KKyMgICAgICAgIGVsZW1lbnQgJ2RzdXQnIGFzIFsnaW5keCcsICduYW1lJ10KKyMgICAgICAgIGVsZW1lbnQgJ2FsaWEnIGFzIFsnaW5keCcsICduYW1lJ10KKyMgICAgICAgIGVsZW1lbnQgJ2FwcGYnIGFzIFsnaW5keCcsICduYW1lJ10KKyMgICAgICAgIGVsZW1lbnQgJ2N0bnInIGFzIFsnaW5keCcsICduYW1lJ10KKyMgICAgICAgIGVsZW1lbnQgJ2NjZHYnIGFzIFsnaW5keCcsICduYW1lJ10KKyMgICAgICAgIGVsZW1lbnQgJ2RhZmknIGFzIFsnaW5keCcsICduYW1lJ10KKyMgICAgICAgIGVsZW1lbnQgJ2RvY2YnIGFzIFsnaW5keCcsICduYW1lJ10KKyMgICAgICAgIGVsZW1lbnQgJ2ZpbGUnIGFzIFsnaW5keCcsICduYW1lJ10KKyMgICAgICAgIGVsZW1lbnQgJ2Nmb2wnIGFzIFsnaW5keCcsICduYW1lJ10KKyMgICAgICAgIGVsZW1lbnQgJ2ZudGYnIGFzIFsnaW5keCcsICduYW1lJ10KKyMgICAgICAgIGVsZW1lbnQgJ2ZzdXQnIGFzIFsnaW5keCcsICduYW1lJ10KKyMgICAgICAgIGVsZW1lbnQgJ2NvYmonIGFzIFsnaW5keCcsICduYW1lJ10KKyMgICAgICAgIGVsZW1lbnQgJ3NjdHInIGFzIFsnaW5keCcsICduYW1lJ10KKyMgICAgICAgIGVsZW1lbnQgJ3NuZGYnIGFzIFsnaW5keCcsICduYW1lJ10KKyMgICAgICAgIGVsZW1lbnQgJ3N0Y3MnIGFzIFsnaW5keCcsICduYW1lJ10KKworY2xhc3MgdXNlcihhZXRvb2xzLkNvbXBvbmVudEl0ZW0pOgorCSIiInVzZXIgLSBBIFVzZXIgaW4gdGhlIFVzZXJzIGFuZCBHcm91cHMgY29udHJvbCBwYW5lbCIiIgorCXdhbnQgPSAnY3VzZScKKyMgcmVwZWF0ZWQgcHJvcGVydHkgYm91bmRzIHRoZSBib3VuZGluZyByZWN0YW5nbGUgb2YgdGhlIHVzZXIKKyMgcmVwZWF0ZWQgcHJvcGVydHkgaWNvbiB0aGUgaWNvbiBiaXRtYXAgb2YgdGhlIHVzZXIKKyMgcmVwZWF0ZWQgcHJvcGVydHkgbGFiZWxfaW5kZXggdGhlIGxhYmVsIG9mIHRoZSB1c2VyCisjIHJlcGVhdGVkIHByb3BlcnR5IG5hbWUgdGhlIG5hbWUgb2YgdGhlIHVzZXIKKyMgcmVwZWF0ZWQgcHJvcGVydHkgcG9zaXRpb24gdGhlIHBvc2l0aW9uIG9mIHRoZSB1c2VyIHdpdGhpbiBpdHMgcGFyZW50IHdpbmRvdworCit1c2VycyA9IHVzZXIKKworY2xhc3Mgd2luZG93KGFldG9vbHMuQ29tcG9uZW50SXRlbSk6CisJIiIid2luZG93IC0gQSB3aW5kb3ciIiIKKwl3YW50ID0gJ2N3aW4nCisKK3dpbmRvd3MgPSB3aW5kb3cKK2FjY2Vzc29yeV9wcm9jZXNzLl9wcm9wZGljdCA9IHsKKwknZGVza19hY2Nlc3NvcnlfZmlsZScgOiBkZXNrX2FjY2Vzc29yeV9maWxlLAorfQorYWNjZXNzb3J5X3Byb2Nlc3MuX2VsZW1kaWN0ID0geworfQorYWNjZXNzb3J5X3N1aXRjYXNlLl9wcm9wZGljdCA9IHsKK30KK2FjY2Vzc29yeV9zdWl0Y2FzZS5fZWxlbWRpY3QgPSB7CisJJ2l0ZW0nIDogaXRlbSwKK30KK2FsaWFzX2ZpbGUuX3Byb3BkaWN0ID0geworCSdvcmlnaW5hbF9pdGVtJyA6IG9yaWdpbmFsX2l0ZW0sCit9CithbGlhc19maWxlLl9lbGVtZGljdCA9IHsKK30KK2FwcGxpY2F0aW9uLl9wcm9wZGljdCA9IHsKKwknYWJvdXRfdGhpc19tYWNpbnRvc2gnIDogYWJvdXRfdGhpc19tYWNpbnRvc2gsCisJJ2FwcGxlX21lbnVfaXRlbXNfZm9sZGVyJyA6IGFwcGxlX21lbnVfaXRlbXNfZm9sZGVyLAorCSdjbGlwYm9hcmQnIDogY2xpcGJvYXJkLAorCSdjb250cm9sX3BhbmVsc19mb2xkZXInIDogY29udHJvbF9wYW5lbHNfZm9sZGVyLAorCSdkZXNrdG9wJyA6IGRlc2t0b3AsCisJJ2V4dGVuc2lvbnNfZm9sZGVyJyA6IGV4dGVuc2lvbnNfZm9sZGVyLAorCSdmaWxlX3NoYXJpbmcnIDogZmlsZV9zaGFyaW5nLAorCSdmb250c19mb2xkZXInIDogZm9udHNfZm9sZGVyLAorCSdmcm9udG1vc3QnIDogZnJvbnRtb3N0LAorCSdpbnNlcnRpb25fbG9jYXRpb24nIDogaW5zZXJ0aW9uX2xvY2F0aW9uLAorCSdsYXJnZXN0X2ZyZWVfYmxvY2snIDogbGFyZ2VzdF9mcmVlX2Jsb2NrLAorCSdwcmVmZXJlbmNlc19mb2xkZXInIDogcHJlZmVyZW5jZXNfZm9sZGVyLAorCSdwcm9kdWN0X3ZlcnNpb24nIDogcHJvZHVjdF92ZXJzaW9uLAorCSdzZWxlY3Rpb24nIDogc2VsZWN0aW9uLAorCSdzaGFyaW5nX3N0YXJ0aW5nX3VwJyA6IHNoYXJpbmdfc3RhcnRpbmdfdXAsCisJJ3Nob3J0Y3V0cycgOiBzaG9ydGN1dHMsCisJJ3NodXRkb3duX2l0ZW1zX2ZvbGRlcicgOiBzaHV0ZG93bl9pdGVtc19mb2xkZXIsCisJJ3N0YXJ0dXBfaXRlbXNfZm9sZGVyJyA6IHN0YXJ0dXBfaXRlbXNfZm9sZGVyLAorCSdzeXN0ZW1fZm9sZGVyJyA6IHN5c3RlbV9mb2xkZXIsCisJJ3RlbXBvcmFyeV9pdGVtc19mb2xkZXInIDogdGVtcG9yYXJ5X2l0ZW1zX2ZvbGRlciwKKwkndmVyc2lvbicgOiB2ZXJzaW9uLAorCSd2aWV3X3ByZWZlcmVuY2VzJyA6IHZpZXdfcHJlZmVyZW5jZXMsCisJJ3Zpc2libGUnIDogdmlzaWJsZSwKK30KK2FwcGxpY2F0aW9uLl9lbGVtZGljdCA9IHsKKwknYWNjZXNzb3J5X3N1aXRjYXNlJyA6IGFjY2Vzc29yeV9zdWl0Y2FzZSwKKwknYWxpYXNfZmlsZScgOiBhbGlhc19maWxlLAorCSdhcHBsaWNhdGlvbl9maWxlJyA6IGFwcGxpY2F0aW9uX2ZpbGUsCisJJ2NvbnRhaW5lcicgOiBjb250YWluZXIsCisJJ2NvbnRhaW5lcl93aW5kb3cnIDogY29udGFpbmVyX3dpbmRvdywKKwknY29udGVudF9zcGFjZScgOiBjb250ZW50X3NwYWNlLAorCSdjb250cm9sX3BhbmVsJyA6IGNvbnRyb2xfcGFuZWwsCisJJ2Rlc2tfYWNjZXNzb3J5X2ZpbGUnIDogZGVza19hY2Nlc3NvcnlfZmlsZSwKKwknZGVza3RvcF8yZF9vYmplY3QnIDogZGVza3RvcF8yZF9vYmplY3QsCisJJ2Rpc2snIDogZGlzaywKKwknZG9jdW1lbnRfZmlsZScgOiBkb2N1bWVudF9maWxlLAorCSdmaWxlJyA6IGZpbGUsCisJJ2ZvbGRlcicgOiBmb2xkZXIsCisJJ2ZvbnRfZmlsZScgOiBmb250X2ZpbGUsCisJJ2ZvbnRfc3VpdGNhc2UnIDogZm9udF9zdWl0Y2FzZSwKKwknaW5mb3JtYXRpb25fd2luZG93JyA6IGluZm9ybWF0aW9uX3dpbmRvdywKKwknaXRlbScgOiBpdGVtLAorCSdzaGFyYWJsZV9jb250YWluZXInIDogc2hhcmFibGVfY29udGFpbmVyLAorCSdzaGFyaW5nX3dpbmRvdycgOiBzaGFyaW5nX3dpbmRvdywKKwknc291bmRfZmlsZScgOiBzb3VuZF9maWxlLAorCSdzdWl0Y2FzZScgOiBzdWl0Y2FzZSwKKwkndHJhc2hfMmRfb2JqZWN0JyA6IHRyYXNoXzJkX29iamVjdCwKKwknd2luZG93JyA6IHdpbmRvdywKK30KK2FwcGxpY2F0aW9uX2ZpbGUuX3Byb3BkaWN0ID0geworCSdtaW5pbXVtX3BhcnRpdGlvbl9zaXplJyA6IG1pbmltdW1fcGFydGl0aW9uX3NpemUsCisJJ3BhcnRpdGlvbl9zaXplJyA6IHBhcnRpdGlvbl9zaXplLAorCSdzY3JpcHRhYmxlJyA6IHNjcmlwdGFibGUsCisJJ3N1Z2dlc3RlZF9wYXJ0aXRpb25fc2l6ZScgOiBzdWdnZXN0ZWRfcGFydGl0aW9uX3NpemUsCit9CithcHBsaWNhdGlvbl9maWxlLl9lbGVtZGljdCA9IHsKK30KK2FwcGxpY2F0aW9uX3Byb2Nlc3MuX3Byb3BkaWN0ID0geworCSdhcHBsaWNhdGlvbl9maWxlJyA6IGFwcGxpY2F0aW9uX2ZpbGUsCit9CithcHBsaWNhdGlvbl9wcm9jZXNzLl9lbGVtZGljdCA9IHsKK30KK2NvbnRhaW5lci5fcHJvcGRpY3QgPSB7CisJJ2NvbXBsZXRlbHlfZXhwYW5kZWQnIDogY29tcGxldGVseV9leHBhbmRlZCwKKwknY29udGFpbmVyX3dpbmRvdycgOiBjb250YWluZXJfd2luZG93LAorCSdlbnRpcmVfY29udGVudHMnIDogZW50aXJlX2NvbnRlbnRzLAorCSdleHBhbmRhYmxlJyA6IGV4cGFuZGFibGUsCisJJ2V4cGFuZGVkJyA6IGV4cGFuZGVkLAorCSdwcmV2aW91c19saXN0X3ZpZXcnIDogcHJldmlvdXNfbGlzdF92aWV3LAorCSdzZWxlY3Rpb24nIDogc2VsZWN0aW9uLAorCSd2aWV3JyA6IHZpZXcsCit9Citjb250YWluZXIuX2VsZW1kaWN0ID0geworCSdhY2Nlc3Nvcnlfc3VpdGNhc2UnIDogYWNjZXNzb3J5X3N1aXRjYXNlLAorCSdhbGlhc19maWxlJyA6IGFsaWFzX2ZpbGUsCisJJ2FwcGxpY2F0aW9uX2ZpbGUnIDogYXBwbGljYXRpb25fZmlsZSwKKwknY29udGFpbmVyJyA6IGNvbnRhaW5lciwKKwknY29udHJvbF9wYW5lbCcgOiBjb250cm9sX3BhbmVsLAorCSdkZXNrX2FjY2Vzc29yeV9maWxlJyA6IGRlc2tfYWNjZXNzb3J5X2ZpbGUsCisJJ2RvY3VtZW50X2ZpbGUnIDogZG9jdW1lbnRfZmlsZSwKKwknZmlsZScgOiBmaWxlLAorCSdmb2xkZXInIDogZm9sZGVyLAorCSdmb250X2ZpbGUnIDogZm9udF9maWxlLAorCSdmb250X3N1aXRjYXNlJyA6IGZvbnRfc3VpdGNhc2UsCisJJ2l0ZW0nIDogaXRlbSwKKwknc2hhcmFibGVfY29udGFpbmVyJyA6IHNoYXJhYmxlX2NvbnRhaW5lciwKKwknc291bmRfZmlsZScgOiBzb3VuZF9maWxlLAorCSdzdWl0Y2FzZScgOiBzdWl0Y2FzZSwKK30KK2NvbnRhaW5lcl93aW5kb3cuX3Byb3BkaWN0ID0geworCSdjb250YWluZXInIDogY29udGFpbmVyLAorCSdkaXNrJyA6IGRpc2ssCisJJ2ZvbGRlcicgOiBmb2xkZXIsCisJJ2l0ZW0nIDogaXRlbSwKKwkncHJldmlvdXNfbGlzdF92aWV3JyA6IHByZXZpb3VzX2xpc3RfdmlldywKKwknc2VsZWN0aW9uJyA6IHNlbGVjdGlvbiwKKwkndmlldycgOiB2aWV3LAorfQorY29udGFpbmVyX3dpbmRvdy5fZWxlbWRpY3QgPSB7CisJJ2FjY2Vzc29yeV9zdWl0Y2FzZScgOiBhY2Nlc3Nvcnlfc3VpdGNhc2UsCisJJ2FsaWFzX2ZpbGUnIDogYWxpYXNfZmlsZSwKKwknYXBwbGljYXRpb25fZmlsZScgOiBhcHBsaWNhdGlvbl9maWxlLAorCSdjb250YWluZXInIDogY29udGFpbmVyLAorCSdjb250cm9sX3BhbmVsJyA6IGNvbnRyb2xfcGFuZWwsCisJJ2Rlc2tfYWNjZXNzb3J5X2ZpbGUnIDogZGVza19hY2Nlc3NvcnlfZmlsZSwKKwknZG9jdW1lbnRfZmlsZScgOiBkb2N1bWVudF9maWxlLAorCSdmaWxlJyA6IGZpbGUsCisJJ2ZvbGRlcicgOiBmb2xkZXIsCisJJ2ZvbnRfZmlsZScgOiBmb250X2ZpbGUsCisJJ2ZvbnRfc3VpdGNhc2UnIDogZm9udF9zdWl0Y2FzZSwKKwknaXRlbScgOiBpdGVtLAorCSdzaGFyYWJsZV9jb250YWluZXInIDogc2hhcmFibGVfY29udGFpbmVyLAorCSdzb3VuZF9maWxlJyA6IHNvdW5kX2ZpbGUsCisJJ3N1aXRjYXNlJyA6IHN1aXRjYXNlLAorfQorY29udGVudF9zcGFjZS5fcHJvcGRpY3QgPSB7Cit9Citjb250ZW50X3NwYWNlLl9lbGVtZGljdCA9IHsKK30KK2NvbnRyb2xfcGFuZWwuX3Byb3BkaWN0ID0geworCSdjYWxjdWxhdGVfZm9sZGVyX3NpemVzJyA6IGNhbGN1bGF0ZV9mb2xkZXJfc2l6ZXMsCisJJ2NvbW1lbnRfaGVhZGluZycgOiBjb21tZW50X2hlYWRpbmcsCisJJ2RhdGVfaGVhZGluZycgOiBkYXRlX2hlYWRpbmcsCisJJ2Rpc2tfaW5mb3JtYXRpb25faGVhZGluZycgOiBkaXNrX2luZm9ybWF0aW9uX2hlYWRpbmcsCisJJ2ljb25fc2l6ZScgOiBpY29uX3NpemUsCisJJ2tpbmRfaGVhZGluZycgOiBraW5kX2hlYWRpbmcsCisJJ2xhYmVsX2hlYWRpbmcnIDogbGFiZWxfaGVhZGluZywKKwknc2l6ZV9oZWFkaW5nJyA6IHNpemVfaGVhZGluZywKKwknc25hcF90b19ncmlkJyA6IHNuYXBfdG9fZ3JpZCwKKwknc3RhZ2dlcmVkX2dyaWQnIDogc3RhZ2dlcmVkX2dyaWQsCisJJ3ZlcnNpb25faGVhZGluZycgOiB2ZXJzaW9uX2hlYWRpbmcsCisJJ3ZpZXdfZm9udCcgOiB2aWV3X2ZvbnQsCisJJ3ZpZXdfZm9udF9zaXplJyA6IHZpZXdfZm9udF9zaXplLAorfQorY29udHJvbF9wYW5lbC5fZWxlbWRpY3QgPSB7Cit9CitkZXNrX2FjY2Vzc29yeV9maWxlLl9wcm9wZGljdCA9IHsKK30KK2Rlc2tfYWNjZXNzb3J5X2ZpbGUuX2VsZW1kaWN0ID0geworfQorZGVza3RvcF8yZF9vYmplY3QuX3Byb3BkaWN0ID0geworCSdzdGFydHVwX2Rpc2snIDogc3RhcnR1cF9kaXNrLAorCSd0cmFzaCcgOiB0cmFzaCwKK30KK2Rlc2t0b3BfMmRfb2JqZWN0Ll9lbGVtZGljdCA9IHsKKwknYWNjZXNzb3J5X3N1aXRjYXNlJyA6IGFjY2Vzc29yeV9zdWl0Y2FzZSwKKwknYWxpYXNfZmlsZScgOiBhbGlhc19maWxlLAorCSdhcHBsaWNhdGlvbl9maWxlJyA6IGFwcGxpY2F0aW9uX2ZpbGUsCisJJ2NvbnRhaW5lcicgOiBjb250YWluZXIsCisJJ2NvbnRyb2xfcGFuZWwnIDogY29udHJvbF9wYW5lbCwKKwknZGVza19hY2Nlc3NvcnlfZmlsZScgOiBkZXNrX2FjY2Vzc29yeV9maWxlLAorCSdkb2N1bWVudF9maWxlJyA6IGRvY3VtZW50X2ZpbGUsCisJJ2ZpbGUnIDogZmlsZSwKKwknZm9sZGVyJyA6IGZvbGRlciwKKwknZm9udF9maWxlJyA6IGZvbnRfZmlsZSwKKwknZm9udF9zdWl0Y2FzZScgOiBmb250X3N1aXRjYXNlLAorCSdpdGVtJyA6IGl0ZW0sCisJJ3NoYXJhYmxlX2NvbnRhaW5lcicgOiBzaGFyYWJsZV9jb250YWluZXIsCisJJ3NvdW5kX2ZpbGUnIDogc291bmRfZmlsZSwKKwknc3VpdGNhc2UnIDogc3VpdGNhc2UsCit9CitkaXNrLl9wcm9wZGljdCA9IHsKKwknY2FwYWNpdHknIDogY2FwYWNpdHksCisJJ2VqZWN0YWJsZScgOiBlamVjdGFibGUsCisJJ2ZyZWVfc3BhY2UnIDogZnJlZV9zcGFjZSwKKwknbG9jYWxfdm9sdW1lJyA6IGxvY2FsX3ZvbHVtZSwKKwknc3RhcnR1cCcgOiBzdGFydHVwLAorfQorZGlzay5fZWxlbWRpY3QgPSB7CisJJ2FjY2Vzc29yeV9zdWl0Y2FzZScgOiBhY2Nlc3Nvcnlfc3VpdGNhc2UsCisJJ2FsaWFzX2ZpbGUnIDogYWxpYXNfZmlsZSwKKwknYXBwbGljYXRpb25fZmlsZScgOiBhcHBsaWNhdGlvbl9maWxlLAorCSdjb250YWluZXInIDogY29udGFpbmVyLAorCSdjb250cm9sX3BhbmVsJyA6IGNvbnRyb2xfcGFuZWwsCisJJ2Rlc2tfYWNjZXNzb3J5X2ZpbGUnIDogZGVza19hY2Nlc3NvcnlfZmlsZSwKKwknZG9jdW1lbnRfZmlsZScgOiBkb2N1bWVudF9maWxlLAorCSdmaWxlJyA6IGZpbGUsCisJJ2ZvbGRlcicgOiBmb2xkZXIsCisJJ2ZvbnRfZmlsZScgOiBmb250X2ZpbGUsCisJJ2ZvbnRfc3VpdGNhc2UnIDogZm9udF9zdWl0Y2FzZSwKKwknaXRlbScgOiBpdGVtLAorCSdzaGFyYWJsZV9jb250YWluZXInIDogc2hhcmFibGVfY29udGFpbmVyLAorCSdzb3VuZF9maWxlJyA6IHNvdW5kX2ZpbGUsCisJJ3N1aXRjYXNlJyA6IHN1aXRjYXNlLAorfQorZG9jdW1lbnRfZmlsZS5fcHJvcGRpY3QgPSB7Cit9Citkb2N1bWVudF9maWxlLl9lbGVtZGljdCA9IHsKK30KK2ZpbGUuX3Byb3BkaWN0ID0geworCSdjcmVhdG9yX3R5cGUnIDogY3JlYXRvcl90eXBlLAorCSdmaWxlX3R5cGUnIDogZmlsZV90eXBlLAorCSdsb2NrZWQnIDogbG9ja2VkLAorCSdwcm9kdWN0X3ZlcnNpb24nIDogcHJvZHVjdF92ZXJzaW9uLAorCSdzdGF0aW9uZXJ5JyA6IHN0YXRpb25lcnksCisJJ3ZlcnNpb24nIDogdmVyc2lvbiwKK30KK2ZpbGUuX2VsZW1kaWN0ID0geworfQorZm9sZGVyLl9wcm9wZGljdCA9IHsKK30KK2ZvbGRlci5fZWxlbWRpY3QgPSB7CisJJ2FjY2Vzc29yeV9zdWl0Y2FzZScgOiBhY2Nlc3Nvcnlfc3VpdGNhc2UsCisJJ2FsaWFzX2ZpbGUnIDogYWxpYXNfZmlsZSwKKwknYXBwbGljYXRpb25fZmlsZScgOiBhcHBsaWNhdGlvbl9maWxlLAorCSdjb250YWluZXInIDogY29udGFpbmVyLAorCSdjb250cm9sX3BhbmVsJyA6IGNvbnRyb2xfcGFuZWwsCisJJ2Rlc2tfYWNjZXNzb3J5X2ZpbGUnIDogZGVza19hY2Nlc3NvcnlfZmlsZSwKKwknZG9jdW1lbnRfZmlsZScgOiBkb2N1bWVudF9maWxlLAorCSdmaWxlJyA6IGZpbGUsCisJJ2ZvbGRlcicgOiBmb2xkZXIsCisJJ2ZvbnRfZmlsZScgOiBmb250X2ZpbGUsCisJJ2ZvbnRfc3VpdGNhc2UnIDogZm9udF9zdWl0Y2FzZSwKKwknaXRlbScgOiBpdGVtLAorCSdzaGFyYWJsZV9jb250YWluZXInIDogc2hhcmFibGVfY29udGFpbmVyLAorCSdzb3VuZF9maWxlJyA6IHNvdW5kX2ZpbGUsCisJJ3N1aXRjYXNlJyA6IHN1aXRjYXNlLAorfQorZm9udF9maWxlLl9wcm9wZGljdCA9IHsKK30KK2ZvbnRfZmlsZS5fZWxlbWRpY3QgPSB7Cit9Citmb250X3N1aXRjYXNlLl9wcm9wZGljdCA9IHsKK30KK2ZvbnRfc3VpdGNhc2UuX2VsZW1kaWN0ID0geworCSdpdGVtJyA6IGl0ZW0sCit9Citncm91cC5fcHJvcGRpY3QgPSB7CisJJ2JvdW5kcycgOiBib3VuZHMsCisJJ2ljb24nIDogaWNvbiwKKwknbGFiZWxfaW5kZXgnIDogbGFiZWxfaW5kZXgsCisJJ25hbWUnIDogbmFtZSwKKwkncG9zaXRpb24nIDogcG9zaXRpb24sCit9Citncm91cC5fZWxlbWRpY3QgPSB7Cit9CitpbmZvcm1hdGlvbl93aW5kb3cuX3Byb3BkaWN0ID0geworCSdjb21tZW50JyA6IGNvbW1lbnQsCisJJ2NyZWF0aW9uX2RhdGUnIDogY3JlYXRpb25fZGF0ZSwKKwknaWNvbicgOiBpY29uLAorCSdpdGVtJyA6IGl0ZW0sCisJJ2xvY2tlZCcgOiBsb2NrZWQsCisJJ21pbmltdW1fcGFydGl0aW9uX3NpemUnIDogbWluaW11bV9wYXJ0aXRpb25fc2l6ZSwKKwknbW9kaWZpY2F0aW9uX2RhdGUnIDogbW9kaWZpY2F0aW9uX2RhdGUsCisJJ3BhcnRpdGlvbl9zaXplJyA6IHBhcnRpdGlvbl9zaXplLAorCSdwaHlzaWNhbF9zaXplJyA6IHBoeXNpY2FsX3NpemUsCisJJ3Byb2R1Y3RfdmVyc2lvbicgOiBwcm9kdWN0X3ZlcnNpb24sCisJJ3NpemUnIDogc2l6ZSwKKwknc3RhdGlvbmVyeScgOiBzdGF0aW9uZXJ5LAorCSdzdWdnZXN0ZWRfcGFydGl0aW9uX3NpemUnIDogc3VnZ2VzdGVkX3BhcnRpdGlvbl9zaXplLAorCSd2ZXJzaW9uJyA6IHZlcnNpb24sCisJJ3dhcm5fYmVmb3JlX2VtcHR5aW5nJyA6IHdhcm5fYmVmb3JlX2VtcHR5aW5nLAorfQoraW5mb3JtYXRpb25fd2luZG93Ll9lbGVtZGljdCA9IHsKK30KK2l0ZW0uX3Byb3BkaWN0ID0geworCSdib3VuZHMnIDogYm91bmRzLAorCSdjb21tZW50JyA6IGNvbW1lbnQsCisJJ2NvbnRhaW5lcicgOiBjb250YWluZXIsCisJJ2NvbnRlbnRfc3BhY2UnIDogY29udGVudF9zcGFjZSwKKwknY3JlYXRpb25fZGF0ZScgOiBjcmVhdGlvbl9kYXRlLAorCSdkaXNrJyA6IGRpc2ssCisJJ2ZvbGRlcicgOiBmb2xkZXIsCisJJ2ljb24nIDogaWNvbiwKKwknaWQnIDogaWQsCisJJ2luZm9ybWF0aW9uX3dpbmRvdycgOiBpbmZvcm1hdGlvbl93aW5kb3csCisJJ2tpbmQnIDoga2luZCwKKwknbGFiZWxfaW5kZXgnIDogbGFiZWxfaW5kZXgsCisJJ21vZGlmaWNhdGlvbl9kYXRlJyA6IG1vZGlmaWNhdGlvbl9kYXRlLAorCSduYW1lJyA6IG5hbWUsCisJJ3BoeXNpY2FsX3NpemUnIDogcGh5c2ljYWxfc2l6ZSwKKwkncG9zaXRpb24nIDogcG9zaXRpb24sCisJJ3NlbGVjdGVkJyA6IHNlbGVjdGVkLAorCSdzaXplJyA6IHNpemUsCisJJ3dpbmRvdycgOiB3aW5kb3csCit9CitpdGVtLl9lbGVtZGljdCA9IHsKK30KK3Byb2Nlc3MuX3Byb3BkaWN0ID0geworCSdjcmVhdG9yX3R5cGUnIDogY3JlYXRvcl90eXBlLAorCSdmaWxlJyA6IGZpbGUsCisJJ2ZpbGVfdHlwZScgOiBmaWxlX3R5cGUsCisJJ2Zyb250bW9zdCcgOiBmcm9udG1vc3QsCisJJ25hbWUnIDogbmFtZSwKKwkncGFydGl0aW9uX3NpemUnIDogcGFydGl0aW9uX3NpemUsCisJJ3BhcnRpdGlvbl9zcGFjZV91c2VkJyA6IHBhcnRpdGlvbl9zcGFjZV91c2VkLAorCSdyZW1vdGVfZXZlbnRzJyA6IHJlbW90ZV9ldmVudHMsCisJJ3NjcmlwdGFibGUnIDogc2NyaXB0YWJsZSwKKwkndmlzaWJsZScgOiB2aXNpYmxlLAorfQorcHJvY2Vzcy5fZWxlbWRpY3QgPSB7Cit9CitzaGFyYWJsZV9jb250YWluZXIuX3Byb3BkaWN0ID0geworCSdleHBvcnRlZCcgOiBleHBvcnRlZCwKKwknZ3JvdXAnIDogZ3JvdXAsCisJJ2dyb3VwX3ByaXZpbGVnZXMnIDogZ3JvdXBfcHJpdmlsZWdlcywKKwknZ3Vlc3RfcHJpdmlsZWdlcycgOiBndWVzdF9wcml2aWxlZ2VzLAorCSdpbmhlcml0ZWRfcHJpdmlsZWdlcycgOiBpbmhlcml0ZWRfcHJpdmlsZWdlcywKKwknbW91bnRlZCcgOiBtb3VudGVkLAorCSdvd25lcicgOiBvd25lciwKKwknb3duZXJfcHJpdmlsZWdlcycgOiBvd25lcl9wcml2aWxlZ2VzLAorCSdwcm90ZWN0ZWQnIDogcHJvdGVjdGVkLAorCSdzaGFyZWQnIDogc2hhcmVkLAorCSdzaGFyaW5nX3dpbmRvdycgOiBzaGFyaW5nX3dpbmRvdywKK30KK3NoYXJhYmxlX2NvbnRhaW5lci5fZWxlbWRpY3QgPSB7CisJJ2FjY2Vzc29yeV9zdWl0Y2FzZScgOiBhY2Nlc3Nvcnlfc3VpdGNhc2UsCisJJ2FsaWFzX2ZpbGUnIDogYWxpYXNfZmlsZSwKKwknYXBwbGljYXRpb25fZmlsZScgOiBhcHBsaWNhdGlvbl9maWxlLAorCSdjb250YWluZXInIDogY29udGFpbmVyLAorCSdjb250cm9sX3BhbmVsJyA6IGNvbnRyb2xfcGFuZWwsCisJJ2Rlc2tfYWNjZXNzb3J5X2ZpbGUnIDogZGVza19hY2Nlc3NvcnlfZmlsZSwKKwknZG9jdW1lbnRfZmlsZScgOiBkb2N1bWVudF9maWxlLAorCSdmaWxlJyA6IGZpbGUsCisJJ2ZvbGRlcicgOiBmb2xkZXIsCisJJ2ZvbnRfZmlsZScgOiBmb250X2ZpbGUsCisJJ2ZvbnRfc3VpdGNhc2UnIDogZm9udF9zdWl0Y2FzZSwKKwknaXRlbScgOiBpdGVtLAorCSdzaGFyYWJsZV9jb250YWluZXInIDogc2hhcmFibGVfY29udGFpbmVyLAorCSdzb3VuZF9maWxlJyA6IHNvdW5kX2ZpbGUsCisJJ3N1aXRjYXNlJyA6IHN1aXRjYXNlLAorfQorc2hhcmluZ19wcml2aWxlZ2VzLl9wcm9wZGljdCA9IHsKKwknbWFrZV9jaGFuZ2VzJyA6IG1ha2VfY2hhbmdlcywKKwknc2VlX2ZpbGVzJyA6IHNlZV9maWxlcywKKwknc2VlX2ZvbGRlcnMnIDogc2VlX2ZvbGRlcnMsCit9CitzaGFyaW5nX3ByaXZpbGVnZXMuX2VsZW1kaWN0ID0geworfQorc2hhcmluZ193aW5kb3cuX3Byb3BkaWN0ID0geworCSdjb250YWluZXInIDogY29udGFpbmVyLAorCSdleHBvcnRlZCcgOiBleHBvcnRlZCwKKwknZm9sZGVyJyA6IGZvbGRlciwKKwknZ3JvdXAnIDogZ3JvdXAsCisJJ2dyb3VwX3ByaXZpbGVnZXMnIDogZ3JvdXBfcHJpdmlsZWdlcywKKwknZ3Vlc3RfcHJpdmlsZWdlcycgOiBndWVzdF9wcml2aWxlZ2VzLAorCSdpbmhlcml0ZWRfcHJpdmlsZWdlcycgOiBpbmhlcml0ZWRfcHJpdmlsZWdlcywKKwknaXRlbScgOiBpdGVtLAorCSdtb3VudGVkJyA6IG1vdW50ZWQsCisJJ293bmVyJyA6IG93bmVyLAorCSdvd25lcl9wcml2aWxlZ2VzJyA6IG93bmVyX3ByaXZpbGVnZXMsCisJJ3Byb3RlY3RlZCcgOiBwcm90ZWN0ZWQsCisJJ3NoYXJhYmxlX2NvbnRhaW5lcicgOiBzaGFyYWJsZV9jb250YWluZXIsCisJJ3NoYXJlZCcgOiBzaGFyZWQsCit9CitzaGFyaW5nX3dpbmRvdy5fZWxlbWRpY3QgPSB7Cit9Citzb3VuZF9maWxlLl9wcm9wZGljdCA9IHsKK30KK3NvdW5kX2ZpbGUuX2VsZW1kaWN0ID0geworfQorc3RhdHVzX3dpbmRvdy5fcHJvcGRpY3QgPSB7Cit9CitzdGF0dXNfd2luZG93Ll9lbGVtZGljdCA9IHsKK30KK3N1aXRjYXNlLl9wcm9wZGljdCA9IHsKK30KK3N1aXRjYXNlLl9lbGVtZGljdCA9IHsKKwknaXRlbScgOiBpdGVtLAorfQordHJhc2hfMmRfb2JqZWN0Ll9wcm9wZGljdCA9IHsKKwknd2Fybl9iZWZvcmVfZW1wdHlpbmcnIDogd2Fybl9iZWZvcmVfZW1wdHlpbmcsCit9Cit0cmFzaF8yZF9vYmplY3QuX2VsZW1kaWN0ID0geworCSdhY2Nlc3Nvcnlfc3VpdGNhc2UnIDogYWNjZXNzb3J5X3N1aXRjYXNlLAorCSdhbGlhc19maWxlJyA6IGFsaWFzX2ZpbGUsCisJJ2FwcGxpY2F0aW9uX2ZpbGUnIDogYXBwbGljYXRpb25fZmlsZSwKKwknY29udGFpbmVyJyA6IGNvbnRhaW5lciwKKwknY29udHJvbF9wYW5lbCcgOiBjb250cm9sX3BhbmVsLAorCSdkZXNrX2FjY2Vzc29yeV9maWxlJyA6IGRlc2tfYWNjZXNzb3J5X2ZpbGUsCisJJ2RvY3VtZW50X2ZpbGUnIDogZG9jdW1lbnRfZmlsZSwKKwknZmlsZScgOiBmaWxlLAorCSdmb2xkZXInIDogZm9sZGVyLAorCSdmb250X2ZpbGUnIDogZm9udF9maWxlLAorCSdmb250X3N1aXRjYXNlJyA6IGZvbnRfc3VpdGNhc2UsCisJJ2l0ZW0nIDogaXRlbSwKKwknc2hhcmFibGVfY29udGFpbmVyJyA6IHNoYXJhYmxlX2NvbnRhaW5lciwKKwknc291bmRfZmlsZScgOiBzb3VuZF9maWxlLAorCSdzdWl0Y2FzZScgOiBzdWl0Y2FzZSwKK30KK3VzZXIuX3Byb3BkaWN0ID0geworCSdib3VuZHMnIDogYm91bmRzLAorCSdpY29uJyA6IGljb24sCisJJ2xhYmVsX2luZGV4JyA6IGxhYmVsX2luZGV4LAorCSduYW1lJyA6IG5hbWUsCisJJ3Bvc2l0aW9uJyA6IHBvc2l0aW9uLAorfQordXNlci5fZWxlbWRpY3QgPSB7Cit9Cit3aW5kb3cuX3Byb3BkaWN0ID0geworfQord2luZG93Ll9lbGVtZGljdCA9IHsKK30KK19FbnVtX3Z3YnkgPSB7CisJJ2NvbmZsaWN0cycgOiAnY2ZsYycsCSMgCisJJ2V4aXN0aW5nX2l0ZW1zJyA6ICdleHNpJywJIyAKKwknc21hbGxfaWNvbicgOiAnc21pYycsCSMgCisJJ2FsbCcgOiAna3lhbCcsCSMgCit9CisKK19FbnVtX2dzZW4gPSB7CisJJ0NQVScgOiAncHJvYycsCSMgCisJJ0ZQVScgOiAnZnB1ICcsCSMgCisJJ01NVScgOiAnbW11ICcsCSMgCisJJ2hhcmR3YXJlJyA6ICdoZHdyJywJIyAKKwknb3BlcmF0aW5nX3N5c3RlbScgOiAnb3MgICcsCSMgCisJJ3NvdW5kX3N5c3RlbScgOiAnc25kICcsCSMgCisJJ21lbW9yeV9hdmFpbGFibGUnIDogJ2xyYW0nLAkjIAorCSdtZW1vcnlfaW5zdGFsbGVkJyA6ICdyYW0gJywJIyAKK30KKworCisjCisjIEluZGljZXMgb2YgdHlwZXMgZGVjbGFyZWQgaW4gdGhpcyBtb2R1bGUKKyMKK19jbGFzc2RlY2xhcmF0aW9ucyA9IHsKKwknc3duZCcgOiBzaGFyaW5nX3dpbmRvdywKKwknaXduZCcgOiBpbmZvcm1hdGlvbl93aW5kb3csCisJJ2NjZHYnIDogY29udHJvbF9wYW5lbCwKKwknY3duZCcgOiBjb250YWluZXJfd2luZG93LAorCSdhcHBmJyA6IGFwcGxpY2F0aW9uX2ZpbGUsCisJJ3ByY3MnIDogcHJvY2VzcywKKwknY2RpcycgOiBkaXNrLAorCSdjd2luJyA6IHdpbmRvdywKKwknZGFmaScgOiBkZXNrX2FjY2Vzc29yeV9maWxlLAorCSdzZ3JwJyA6IGdyb3VwLAorCSdhbGlhJyA6IGFsaWFzX2ZpbGUsCisJJ2N0bnInIDogY29udGFpbmVyLAorCSdxd25kJyA6IHN0YXR1c193aW5kb3csCisJJ2ZzdXQnIDogZm9udF9zdWl0Y2FzZSwKKwknc25kZicgOiBzb3VuZF9maWxlLAorCSdwcml2JyA6IHNoYXJpbmdfcHJpdmlsZWdlcywKKwknZHduZCcgOiBjb250ZW50X3NwYWNlLAorCSdwY2FwJyA6IGFwcGxpY2F0aW9uX3Byb2Nlc3MsCisJJ3N0Y3MnIDogc3VpdGNhc2UsCisJJ2N0cnMnIDogdHJhc2hfMmRfb2JqZWN0LAorCSdmaWxlJyA6IGZpbGUsCisJJ2NvYmonIDogaXRlbSwKKwknY3VzZScgOiB1c2VyLAorCSdjZHNrJyA6IGRlc2t0b3BfMmRfb2JqZWN0LAorCSdwY2RhJyA6IGFjY2Vzc29yeV9wcm9jZXNzLAorCSdjYXBwJyA6IGFwcGxpY2F0aW9uLAorCSdjZm9sJyA6IGZvbGRlciwKKwknc2N0cicgOiBzaGFyYWJsZV9jb250YWluZXIsCisJJ2RzdXQnIDogYWNjZXNzb3J5X3N1aXRjYXNlLAorCSdkb2NmJyA6IGRvY3VtZW50X2ZpbGUsCisJJ2ZudGYnIDogZm9udF9maWxlLAorfQorCitfcHJvcGRlY2xhcmF0aW9ucyA9IHsKKwknc3duZCcgOiBzaGFyaW5nX3dpbmRvdywKKwknZnNocicgOiBmaWxlX3NoYXJpbmcsCisJJ3B2ZXcnIDogdmlldywKKwkncHVzZCcgOiBwYXJ0aXRpb25fc3BhY2VfdXNlZCwKKwknZmNydCcgOiBjcmVhdG9yX3R5cGUsCisJJ3NkYXQnIDogZGF0ZV9oZWFkaW5nLAorCSdzZGluJyA6IGRpc2tfaW5mb3JtYXRpb25faGVhZGluZywKKwknc3RydCcgOiBzdGFydHVwX2l0ZW1zX2ZvbGRlciwKKwknaXNzbCcgOiBzZWxlY3RlZCwKKwkncHZpcycgOiB2aXNpYmxlLAorCSdzbGJsJyA6IGxhYmVsX2hlYWRpbmcsCisJJ2NkaXMnIDogZGlzaywKKwknZml0cCcgOiBmaWxlX3R5cGUsCisJJ3Ntb3UnIDogbW91bnRlZCwKKwkncGV4YycgOiBjb21wbGV0ZWx5X2V4cGFuZGVkLAorCSdwZXhhJyA6IGV4cGFuZGFibGUsCisJJ2NvbXQnIDogY29tbWVudCwKKwknc3ZldycgOiBwcmV2aW91c19saXN0X3ZpZXcsCisJJ2xhYmknIDogbGFiZWxfaW5kZXgsCisJJ3NjdHInIDogc2hhcmFibGVfY29udGFpbmVyLAorCSdza25kJyA6IGtpbmRfaGVhZGluZywKKwkndHJzaCcgOiB0cmFzaCwKKwknZnN0ZycgOiBzdGFnZ2VyZWRfZ3JpZCwKKwknbWFjcycgOiBzeXN0ZW1fZm9sZGVyLAorCSd2ZnN6JyA6IHZpZXdfZm9udF9zaXplLAorCSdwZXhwJyA6IGV4cGFuZGVkLAorCSdwb3NuJyA6IHBvc2l0aW9uLAorCSdjb2JqJyA6IGl0ZW0sCisJJ2FtbnUnIDogYXBwbGVfbWVudV9pdGVtc19mb2xkZXIsCisJJ3B2d3AnIDogdmlld19wcmVmZXJlbmNlcywKKwknZGVzaycgOiBkZXNrdG9wLAorCSdwbmFtJyA6IG5hbWUsCisJJ21wcnQnIDogbWluaW11bV9wYXJ0aXRpb25fc2l6ZSwKKwknY3dpbicgOiB3aW5kb3csCisJJ3BjbGknIDogY2xpcGJvYXJkLAorCSdzcHJvJyA6IHByb3RlY3RlZCwKKwknaXNsaycgOiBsb2NrZWQsCisJJ3NwcnQnIDogc3VnZ2VzdGVkX3BhcnRpdGlvbl9zaXplLAorCSdwaXNmJyA6IGZyb250bW9zdCwKKwknc2VsZScgOiBzZWxlY3Rpb24sCisJJ2ZmbnQnIDogZm9udHNfZm9sZGVyLAorCSdpc3RkJyA6IHN0YXJ0dXAsCisJJ3Nkc2snIDogc3RhcnR1cF9kaXNrLAorCSdzaGFyJyA6IHNoYXJlZCwKKwknZHduZCcgOiBjb250ZW50X3NwYWNlLAorCSdmaWxlJyA6IGZpbGUsCisJJ3Nmc3onIDogY2FsY3VsYXRlX2ZvbGRlcl9zaXplcywKKwknSUQgICcgOiBpZCwKKwkncHJ2dycgOiBtYWtlX2NoYW5nZXMsCisJJ2lwcnYnIDogaW5oZXJpdGVkX3ByaXZpbGVnZXMsCisJJ3BydnInIDogc2VlX2ZpbGVzLAorCSdwcnZzJyA6IHNlZV9mb2xkZXJzLAorCSdwaHlzJyA6IHBoeXNpY2FsX3NpemUsCisJJ2N0cmwnIDogY29udHJvbF9wYW5lbHNfZm9sZGVyLAorCSdjd25kJyA6IGNvbnRhaW5lcl93aW5kb3csCisJJ2V4dG4nIDogZXh0ZW5zaW9uc19mb2xkZXIsCisJJ293bnInIDogb3duZXJfcHJpdmlsZWdlcywKKwknbW9kZCcgOiBtb2RpZmljYXRpb25fZGF0ZSwKKwknZGFmaScgOiBkZXNrX2FjY2Vzc29yeV9maWxlLAorCSdzZ3JwJyA6IGdyb3VwLAorCSd0ZW1wJyA6IHRlbXBvcmFyeV9pdGVtc19mb2xkZXIsCisJJ2ZncmQnIDogc25hcF90b19ncmlkLAorCSdwdHN6JyA6IHNpemUsCisJJ2tpbmQnIDoga2luZCwKKwknc2N1dCcgOiBzaG9ydGN1dHMsCisJJ2FiYngnIDogYWJvdXRfdGhpc19tYWNpbnRvc2gsCisJJ2N0bnInIDogY29udGFpbmVyLAorCSdpc2VqJyA6IGVqZWN0YWJsZSwKKwknc3ZycycgOiB2ZXJzaW9uX2hlYWRpbmcsCisJJ3ZmbnQnIDogdmlld19mb250LAorCSd3YXJuJyA6IHdhcm5fYmVmb3JlX2VtcHR5aW5nLAorCSdpc2FiJyA6IHNjcmlwdGFibGUsCisJJ2lzcnYnIDogbG9jYWxfdm9sdW1lLAorCSdsdmlzJyA6IGljb25fc2l6ZSwKKwknc2hkZicgOiBzaHV0ZG93bl9pdGVtc19mb2xkZXIsCisJJ2dzdHAnIDogZ3Vlc3RfcHJpdmlsZWdlcywKKwkndmVycycgOiB2ZXJzaW9uLAorCSdhcHBmJyA6IGFwcGxpY2F0aW9uX2ZpbGUsCisJJ2l3bmQnIDogaW5mb3JtYXRpb25fd2luZG93LAorCSdyZXZ0JyA6IHJlbW90ZV9ldmVudHMsCisJJ2Zyc3AnIDogZnJlZV9zcGFjZSwKKwknY2FwYScgOiBjYXBhY2l0eSwKKwkncHNwZCcgOiBzdGF0aW9uZXJ5LAorCSdzY29tJyA6IGNvbW1lbnRfaGVhZGluZywKKwkncGlucycgOiBpbnNlcnRpb25fbG9jYXRpb24sCisJJ29yaWcnIDogb3JpZ2luYWxfaXRlbSwKKwkncHJlZicgOiBwcmVmZXJlbmNlc19mb2xkZXIsCisJJ2ZzdXAnIDogc2hhcmluZ19zdGFydGluZ191cCwKKwknc293bicgOiBvd25lciwKKwknY2ZvbCcgOiBmb2xkZXIsCisJJ21mcmUnIDogbGFyZ2VzdF9mcmVlX2Jsb2NrLAorCSdzc2l6JyA6IHNpemVfaGVhZGluZywKKwknaWltZycgOiBpY29uLAorCSdhcHB0JyA6IHBhcnRpdGlvbl9zaXplLAorCSdncHByJyA6IGdyb3VwX3ByaXZpbGVnZXMsCisJJ3BibmQnIDogYm91bmRzLAorCSdlY3RzJyA6IGVudGlyZV9jb250ZW50cywKKwknc2V4cCcgOiBleHBvcnRlZCwKKwkndmVyMicgOiBwcm9kdWN0X3ZlcnNpb24sCisJJ2NydGQnIDogY3JlYXRpb25fZGF0ZSwKK30KKworX2NvbXBkZWNsYXJhdGlvbnMgPSB7Cit9CisKK19lbnVtZGVjbGFyYXRpb25zID0geworCSdnc2VuJyA6IF9FbnVtX2dzZW4sCisJJ3Z3YnknIDogX0VudW1fdndieSwKK30KZGlmZiAtLWdpdCBhL01hYy9MaWIvc2NyaXB0aW5nL01ldHJvd2Vya3NfU2hlbGxfU3VpdGUucHkgYi9NYWMvTGliL3NjcmlwdGluZy9NZXRyb3dlcmtzX1NoZWxsX1N1aXRlLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjkzYTg5MzAKLS0tIC9kZXYvbnVsbAorKysgYi9NYWMvTGliL3NjcmlwdGluZy9NZXRyb3dlcmtzX1NoZWxsX1N1aXRlLnB5CkBAIC0wLDAgKzEsMTgyMCBAQAorIiIiU3VpdGUgTWV0cm93ZXJrcyBTaGVsbCBTdWl0ZTogRXZlbnRzIHN1cHBvcnRlZCBieSB0aGUgTWV0cm93ZXJrcyBQcm9qZWN0IFNoZWxsCitMZXZlbCAxLCB2ZXJzaW9uIDEKKworR2VuZXJhdGVkIGZyb20gZmxhcDpNZXRyb3dlcmtzOk1ldHJvd2Vya3MgQ29kZVdhcnJpb3I6Q29kZVdhcnJpb3IgSURFIDIuMC4xCitBRVRFL0FFVVQgcmVzb3VyY2UgdmVyc2lvbiAxLzAsIGxhbmd1YWdlIDAsIHNjcmlwdCAwCisiIiIKKworaW1wb3J0IGFldG9vbHMKK2ltcG9ydCBNYWNPUworCitfY29kZSA9ICdNTVBSJworCitjbGFzcyBNZXRyb3dlcmtzX1NoZWxsX1N1aXRlOgorCisJX2FyZ21hcF9BZGRfRmlsZXMgPSB7CisJCSdUb19TZWdtZW50JyA6ICdTZWdtJywKKwl9CisKKwlkZWYgQWRkX0ZpbGVzKHNlbGYsIF9vYmplY3QsIF9hdHRyaWJ1dGVzPXt9LCAqKl9hcmd1bWVudHMpOgorCQkiIiJBZGQgRmlsZXM6IEFkZCB0aGUgc3BlY2lmaWVkIGZpbGUocykgdG8gdGhlIGN1cnJlbnQgcHJvamVjdAorCQlSZXF1aXJlZCBhcmd1bWVudDogTGlzdCBvZiBmaWxlcyB0byBhZGQKKwkJS2V5d29yZCBhcmd1bWVudCBUb19TZWdtZW50OiBTZWdtZW50IG51bWJlciBpbnRvIHdoaWNoIHRvIGFkZCB0aGUgZmlsZShzKQorCQlLZXl3b3JkIGFyZ3VtZW50IF9hdHRyaWJ1dGVzOiBBcHBsZUV2ZW50IGF0dHJpYnV0ZSBkaWN0aW9uYXJ5CisJCVJldHVybnM6IEVycm9yIGNvZGUgZm9yIGVhY2ggZmlsZSBhZGRlZAorCQkiIiIKKwkJX2NvZGUgPSAnTU1QUicKKwkJX3N1YmNvZGUgPSAnQWRkRicKKworCQlhZXRvb2xzLmtleXN1YnN0KF9hcmd1bWVudHMsIHNlbGYuX2FyZ21hcF9BZGRfRmlsZXMpCisJCV9hcmd1bWVudHNbJy0tLS0nXSA9IF9vYmplY3QKKworCisJCV9yZXBseSwgX2FyZ3VtZW50cywgX2F0dHJpYnV0ZXMgPSBzZWxmLnNlbmQoX2NvZGUsIF9zdWJjb2RlLAorCQkJCV9hcmd1bWVudHMsIF9hdHRyaWJ1dGVzKQorCQlpZiBfYXJndW1lbnRzLmhhc19rZXkoJ2Vycm4nKToKKwkJCXJhaXNlIGFldG9vbHMuRXJyb3IsIGFldG9vbHMuZGVjb2RlZXJyb3IoX2FyZ3VtZW50cykKKwkJIyBYWFhYIE9wdGlvbmFsbHkgZGVjb2RlIHJlc3VsdAorCQlpZiBfYXJndW1lbnRzLmhhc19rZXkoJy0tLS0nKToKKwkJCXJldHVybiBfYXJndW1lbnRzWyctLS0tJ10KKworCV9hcmdtYXBfQ2hlY2tfU3ludGF4ID0geworCQknRXh0ZXJuYWxFZGl0b3InIDogJ0VycnMnLAorCX0KKworCWRlZiBDaGVja19TeW50YXgoc2VsZiwgX29iamVjdCwgX2F0dHJpYnV0ZXM9e30sICoqX2FyZ3VtZW50cyk6CisJCSIiIkNoZWNrIFN5bnRheDogQ2hlY2sgdGhlIHN5bnRheCBvZiB0aGUgc3BlY2lmaWVkIGZpbGUocykKKwkJUmVxdWlyZWQgYXJndW1lbnQ6IExpc3Qgb2YgZmlsZXMgdG8gY2hlY2sgdGhlIHN5bnRheCBvZgorCQlLZXl3b3JkIGFyZ3VtZW50IEV4dGVybmFsRWRpdG9yOiBTaG91bGQgdGhlIGNvbnRlbnRzIG9mIHRoZSBtZXNzYWdlIHdpbmRvdyBiZSByZXR1cm5lZCB0byB0aGUgY2FsbGVyPworCQlLZXl3b3JkIGFyZ3VtZW50IF9hdHRyaWJ1dGVzOiBBcHBsZUV2ZW50IGF0dHJpYnV0ZSBkaWN0aW9uYXJ5CisJCVJldHVybnM6IEVycm9ycyBmb3IgZWFjaCBmaWxlIHdob3NlIHN5bnRheCB3YXMgY2hlY2tlZAorCQkiIiIKKwkJX2NvZGUgPSAnTU1QUicKKwkJX3N1YmNvZGUgPSAnQ2hlaycKKworCQlhZXRvb2xzLmtleXN1YnN0KF9hcmd1bWVudHMsIHNlbGYuX2FyZ21hcF9DaGVja19TeW50YXgpCisJCV9hcmd1bWVudHNbJy0tLS0nXSA9IF9vYmplY3QKKworCisJCV9yZXBseSwgX2FyZ3VtZW50cywgX2F0dHJpYnV0ZXMgPSBzZWxmLnNlbmQoX2NvZGUsIF9zdWJjb2RlLAorCQkJCV9hcmd1bWVudHMsIF9hdHRyaWJ1dGVzKQorCQlpZiBfYXJndW1lbnRzLmhhc19rZXkoJ2Vycm4nKToKKwkJCXJhaXNlIGFldG9vbHMuRXJyb3IsIGFldG9vbHMuZGVjb2RlZXJyb3IoX2FyZ3VtZW50cykKKwkJIyBYWFhYIE9wdGlvbmFsbHkgZGVjb2RlIHJlc3VsdAorCQlpZiBfYXJndW1lbnRzLmhhc19rZXkoJy0tLS0nKToKKwkJCXJldHVybiBfYXJndW1lbnRzWyctLS0tJ10KKworCWRlZiBDbG9zZV9Qcm9qZWN0KHNlbGYsIF9ub19vYmplY3Q9Tm9uZSwgX2F0dHJpYnV0ZXM9e30sICoqX2FyZ3VtZW50cyk6CisJCSIiIkNsb3NlIFByb2plY3Q6IENsb3NlIHRoZSBjdXJyZW50IHByb2plY3QKKwkJS2V5d29yZCBhcmd1bWVudCBfYXR0cmlidXRlczogQXBwbGVFdmVudCBhdHRyaWJ1dGUgZGljdGlvbmFyeQorCQkiIiIKKwkJX2NvZGUgPSAnTU1QUicKKwkJX3N1YmNvZGUgPSAnQ2xzUCcKKworCQlpZiBfYXJndW1lbnRzOiByYWlzZSBUeXBlRXJyb3IsICdObyBvcHRpb25hbCBhcmdzIGV4cGVjdGVkJworCQlpZiBfbm9fb2JqZWN0ICE9IE5vbmU6IHJhaXNlIFR5cGVFcnJvciwgJ05vIGRpcmVjdCBhcmcgZXhwZWN0ZWQnCisKKworCQlfcmVwbHksIF9hcmd1bWVudHMsIF9hdHRyaWJ1dGVzID0gc2VsZi5zZW5kKF9jb2RlLCBfc3ViY29kZSwKKwkJCQlfYXJndW1lbnRzLCBfYXR0cmlidXRlcykKKwkJaWYgX2FyZ3VtZW50cy5oYXNfa2V5KCdlcnJuJyk6CisJCQlyYWlzZSBhZXRvb2xzLkVycm9yLCBhZXRvb2xzLmRlY29kZWVycm9yKF9hcmd1bWVudHMpCisJCSMgWFhYWCBPcHRpb25hbGx5IGRlY29kZSByZXN1bHQKKwkJaWYgX2FyZ3VtZW50cy5oYXNfa2V5KCctLS0tJyk6CisJCQlyZXR1cm4gX2FyZ3VtZW50c1snLS0tLSddCisKKwlfYXJnbWFwX0Nsb3NlX1dpbmRvdyA9IHsKKwkJJ1NhdmluZycgOiAnc2F2bycsCisJfQorCisJZGVmIENsb3NlX1dpbmRvdyhzZWxmLCBfb2JqZWN0LCBfYXR0cmlidXRlcz17fSwgKipfYXJndW1lbnRzKToKKwkJIiIiQ2xvc2UgV2luZG93OiBDbG9zZSB0aGUgd2luZG93cyBzaG93aW5nIHRoZSBzcGVjaWZpZWQgZmlsZXMKKwkJUmVxdWlyZWQgYXJndW1lbnQ6IFRoZSBmaWxlcyB0byBjbG9zZQorCQlLZXl3b3JkIGFyZ3VtZW50IFNhdmluZzogV2hldGhlciB0byBzYXZlIGNoYW5nZXMgdG8gZWFjaCBmaWxlIGJlZm9yZSBjbG9zaW5nIGl0cyB3aW5kb3cKKwkJS2V5d29yZCBhcmd1bWVudCBfYXR0cmlidXRlczogQXBwbGVFdmVudCBhdHRyaWJ1dGUgZGljdGlvbmFyeQorCQkiIiIKKwkJX2NvZGUgPSAnTU1QUicKKwkJX3N1YmNvZGUgPSAnQ2xzVycKKworCQlhZXRvb2xzLmtleXN1YnN0KF9hcmd1bWVudHMsIHNlbGYuX2FyZ21hcF9DbG9zZV9XaW5kb3cpCisJCV9hcmd1bWVudHNbJy0tLS0nXSA9IF9vYmplY3QKKworCQlhZXRvb2xzLmVudW1zdWJzdChfYXJndW1lbnRzLCAnc2F2bycsIF9FbnVtX3Nhdm8pCisKKwkJX3JlcGx5LCBfYXJndW1lbnRzLCBfYXR0cmlidXRlcyA9IHNlbGYuc2VuZChfY29kZSwgX3N1YmNvZGUsCisJCQkJX2FyZ3VtZW50cywgX2F0dHJpYnV0ZXMpCisJCWlmIF9hcmd1bWVudHMuaGFzX2tleSgnZXJybicpOgorCQkJcmFpc2UgYWV0b29scy5FcnJvciwgYWV0b29scy5kZWNvZGVlcnJvcihfYXJndW1lbnRzKQorCQkjIFhYWFggT3B0aW9uYWxseSBkZWNvZGUgcmVzdWx0CisJCWlmIF9hcmd1bWVudHMuaGFzX2tleSgnLS0tLScpOgorCQkJcmV0dXJuIF9hcmd1bWVudHNbJy0tLS0nXQorCisJX2FyZ21hcF9Db21waWxlID0geworCQknRXh0ZXJuYWxFZGl0b3InIDogJ0VycnMnLAorCX0KKworCWRlZiBDb21waWxlKHNlbGYsIF9vYmplY3QsIF9hdHRyaWJ1dGVzPXt9LCAqKl9hcmd1bWVudHMpOgorCQkiIiJDb21waWxlOiBDb21waWxlIHRoZSBzcGVjaWZpZWQgZmlsZShzKQorCQlSZXF1aXJlZCBhcmd1bWVudDogTGlzdCBvZiBmaWxlcyB0byBjb21waWxlCisJCUtleXdvcmQgYXJndW1lbnQgRXh0ZXJuYWxFZGl0b3I6IFNob3VsZCB0aGUgY29udGVudHMgb2YgdGhlIG1lc3NhZ2Ugd2luZG93IGJlIHJldHVybmVkIHRvIHRoZSBjYWxsZXI/CisJCUtleXdvcmQgYXJndW1lbnQgX2F0dHJpYnV0ZXM6IEFwcGxlRXZlbnQgYXR0cmlidXRlIGRpY3Rpb25hcnkKKwkJUmV0dXJuczogRXJyb3JzIGZvciBlYWNoIGZpbGUgY29tcGlsZWQKKwkJIiIiCisJCV9jb2RlID0gJ01NUFInCisJCV9zdWJjb2RlID0gJ0NvbXAnCisKKwkJYWV0b29scy5rZXlzdWJzdChfYXJndW1lbnRzLCBzZWxmLl9hcmdtYXBfQ29tcGlsZSkKKwkJX2FyZ3VtZW50c1snLS0tLSddID0gX29iamVjdAorCisKKwkJX3JlcGx5LCBfYXJndW1lbnRzLCBfYXR0cmlidXRlcyA9IHNlbGYuc2VuZChfY29kZSwgX3N1YmNvZGUsCisJCQkJX2FyZ3VtZW50cywgX2F0dHJpYnV0ZXMpCisJCWlmIF9hcmd1bWVudHMuaGFzX2tleSgnZXJybicpOgorCQkJcmFpc2UgYWV0b29scy5FcnJvciwgYWV0b29scy5kZWNvZGVlcnJvcihfYXJndW1lbnRzKQorCQkjIFhYWFggT3B0aW9uYWxseSBkZWNvZGUgcmVzdWx0CisJCWlmIF9hcmd1bWVudHMuaGFzX2tleSgnLS0tLScpOgorCQkJcmV0dXJuIF9hcmd1bWVudHNbJy0tLS0nXQorCisJX2FyZ21hcF9DcmVhdGVfUHJvamVjdCA9IHsKKwkJJ2Zyb21fc3RhdGlvbmVyeScgOiAnVG1wbCcsCisJfQorCisJZGVmIENyZWF0ZV9Qcm9qZWN0KHNlbGYsIF9vYmplY3QsIF9hdHRyaWJ1dGVzPXt9LCAqKl9hcmd1bWVudHMpOgorCQkiIiJDcmVhdGUgUHJvamVjdDogQ3JlYXRlIGEgbmV3IHByb2plY3QgZmlsZQorCQlSZXF1aXJlZCBhcmd1bWVudDogTmV3IHByb2plY3QgZmlsZSBzcGVjaWZpZXIKKwkJS2V5d29yZCBhcmd1bWVudCBmcm9tX3N0YXRpb25lcnk6IHVuZG9jdW1lbnRlZCwgdHlwZWNvZGUgJ2FsaXMnCisJCUtleXdvcmQgYXJndW1lbnQgX2F0dHJpYnV0ZXM6IEFwcGxlRXZlbnQgYXR0cmlidXRlIGRpY3Rpb25hcnkKKwkJIiIiCisJCV9jb2RlID0gJ01NUFInCisJCV9zdWJjb2RlID0gJ05ld1AnCisKKwkJYWV0b29scy5rZXlzdWJzdChfYXJndW1lbnRzLCBzZWxmLl9hcmdtYXBfQ3JlYXRlX1Byb2plY3QpCisJCV9hcmd1bWVudHNbJy0tLS0nXSA9IF9vYmplY3QKKworCisJCV9yZXBseSwgX2FyZ3VtZW50cywgX2F0dHJpYnV0ZXMgPSBzZWxmLnNlbmQoX2NvZGUsIF9zdWJjb2RlLAorCQkJCV9hcmd1bWVudHMsIF9hdHRyaWJ1dGVzKQorCQlpZiBfYXJndW1lbnRzLmhhc19rZXkoJ2Vycm4nKToKKwkJCXJhaXNlIGFldG9vbHMuRXJyb3IsIGFldG9vbHMuZGVjb2RlZXJyb3IoX2FyZ3VtZW50cykKKwkJIyBYWFhYIE9wdGlvbmFsbHkgZGVjb2RlIHJlc3VsdAorCQlpZiBfYXJndW1lbnRzLmhhc19rZXkoJy0tLS0nKToKKwkJCXJldHVybiBfYXJndW1lbnRzWyctLS0tJ10KKworCWRlZiBHZXRfRGVmaW5pdGlvbihzZWxmLCBfb2JqZWN0LCBfYXR0cmlidXRlcz17fSwgKipfYXJndW1lbnRzKToKKwkJIiIiR2V0IERlZmluaXRpb246IFJldHVybnMgdGhlIGxvY2F0aW9uKHMpIG9mIGEgZ2xvYmFsbHkgc2NvcGVkIGZ1bmN0aW9uIG9yIGRhdGEgb2JqZWN0LgorCQlSZXF1aXJlZCBhcmd1bWVudDogdW5kb2N1bWVudGVkLCB0eXBlY29kZSAnVEVYVCcKKwkJS2V5d29yZCBhcmd1bWVudCBfYXR0cmlidXRlczogQXBwbGVFdmVudCBhdHRyaWJ1dGUgZGljdGlvbmFyeQorCQlSZXR1cm5zOiB1bmRvY3VtZW50ZWQsIHR5cGVjb2RlICdGRGVmJworCQkiIiIKKwkJX2NvZGUgPSAnTU1QUicKKwkJX3N1YmNvZGUgPSAnR0RlZicKKworCQlpZiBfYXJndW1lbnRzOiByYWlzZSBUeXBlRXJyb3IsICdObyBvcHRpb25hbCBhcmdzIGV4cGVjdGVkJworCQlfYXJndW1lbnRzWyctLS0tJ10gPSBfb2JqZWN0CisKKworCQlfcmVwbHksIF9hcmd1bWVudHMsIF9hdHRyaWJ1dGVzID0gc2VsZi5zZW5kKF9jb2RlLCBfc3ViY29kZSwKKwkJCQlfYXJndW1lbnRzLCBfYXR0cmlidXRlcykKKwkJaWYgX2FyZ3VtZW50cy5oYXNfa2V5KCdlcnJuJyk6CisJCQlyYWlzZSBhZXRvb2xzLkVycm9yLCBhZXRvb2xzLmRlY29kZWVycm9yKF9hcmd1bWVudHMpCisJCSMgWFhYWCBPcHRpb25hbGx5IGRlY29kZSByZXN1bHQKKwkJaWYgX2FyZ3VtZW50cy5oYXNfa2V5KCctLS0tJyk6CisJCQlyZXR1cm4gX2FyZ3VtZW50c1snLS0tLSddCisKKwlkZWYgR2V0X09wZW5fRG9jdW1lbnRzKHNlbGYsIF9ub19vYmplY3Q9Tm9uZSwgX2F0dHJpYnV0ZXM9e30sICoqX2FyZ3VtZW50cyk6CisJCSIiIkdldCBPcGVuIERvY3VtZW50czogUmV0dXJucyB0aGUgbGlzdCBvZiBvcGVuIGRvY3VtZW50cworCQlLZXl3b3JkIGFyZ3VtZW50IF9hdHRyaWJ1dGVzOiBBcHBsZUV2ZW50IGF0dHJpYnV0ZSBkaWN0aW9uYXJ5CisJCVJldHVybnM6IFRoZSBsaXN0IG9mIGRvY3VtZW50cworCQkiIiIKKwkJX2NvZGUgPSAnTU1QUicKKwkJX3N1YmNvZGUgPSAnR0RvYycKKworCQlpZiBfYXJndW1lbnRzOiByYWlzZSBUeXBlRXJyb3IsICdObyBvcHRpb25hbCBhcmdzIGV4cGVjdGVkJworCQlpZiBfbm9fb2JqZWN0ICE9IE5vbmU6IHJhaXNlIFR5cGVFcnJvciwgJ05vIGRpcmVjdCBhcmcgZXhwZWN0ZWQnCisKKworCQlfcmVwbHksIF9hcmd1bWVudHMsIF9hdHRyaWJ1dGVzID0gc2VsZi5zZW5kKF9jb2RlLCBfc3ViY29kZSwKKwkJCQlfYXJndW1lbnRzLCBfYXR0cmlidXRlcykKKwkJaWYgX2FyZ3VtZW50cy5oYXNfa2V5KCdlcnJuJyk6CisJCQlyYWlzZSBhZXRvb2xzLkVycm9yLCBhZXRvb2xzLmRlY29kZWVycm9yKF9hcmd1bWVudHMpCisJCSMgWFhYWCBPcHRpb25hbGx5IGRlY29kZSByZXN1bHQKKwkJaWYgX2FyZ3VtZW50cy5oYXNfa2V5KCctLS0tJyk6CisJCQlyZXR1cm4gX2FyZ3VtZW50c1snLS0tLSddCisKKwlfYXJnbWFwX0dldF9QcmVmZXJlbmNlcyA9IHsKKwkJJ29mJyA6ICdQUmVjJywKKwkJJ2Zyb21fcGFuZWwnIDogJ1BOYW0nLAorCX0KKworCWRlZiBHZXRfUHJlZmVyZW5jZXMoc2VsZiwgX25vX29iamVjdD1Ob25lLCBfYXR0cmlidXRlcz17fSwgKipfYXJndW1lbnRzKToKKwkJIiIiR2V0IFByZWZlcmVuY2VzOiBHZXQgdGhlIHByZWZlcmVuY2VzIGZvciB0aGUgY3VycmVudCBwcm9qZWN0CisJCUtleXdvcmQgYXJndW1lbnQgb2Y6IE5hbWVzIG9mIHJlcXVlc3RlZCBwcmVmZXJlbmNlcworCQlLZXl3b3JkIGFyZ3VtZW50IGZyb21fcGFuZWw6IE5hbWUgb2YgdGhlIHByZWZlcmVuY2UgcGFuZWwKKwkJS2V5d29yZCBhcmd1bWVudCBfYXR0cmlidXRlczogQXBwbGVFdmVudCBhdHRyaWJ1dGUgZGljdGlvbmFyeQorCQlSZXR1cm5zOiBUaGUgcmVxdWVzdGVkIHByZWZlcmVuY2VzCisJCSIiIgorCQlfY29kZSA9ICdNTVBSJworCQlfc3ViY29kZSA9ICdHcmVmJworCisJCWFldG9vbHMua2V5c3Vic3QoX2FyZ3VtZW50cywgc2VsZi5fYXJnbWFwX0dldF9QcmVmZXJlbmNlcykKKwkJaWYgX25vX29iamVjdCAhPSBOb25lOiByYWlzZSBUeXBlRXJyb3IsICdObyBkaXJlY3QgYXJnIGV4cGVjdGVkJworCisKKwkJX3JlcGx5LCBfYXJndW1lbnRzLCBfYXR0cmlidXRlcyA9IHNlbGYuc2VuZChfY29kZSwgX3N1YmNvZGUsCisJCQkJX2FyZ3VtZW50cywgX2F0dHJpYnV0ZXMpCisJCWlmIF9hcmd1bWVudHMuaGFzX2tleSgnZXJybicpOgorCQkJcmFpc2UgYWV0b29scy5FcnJvciwgYWV0b29scy5kZWNvZGVlcnJvcihfYXJndW1lbnRzKQorCQkjIFhYWFggT3B0aW9uYWxseSBkZWNvZGUgcmVzdWx0CisJCWlmIF9hcmd1bWVudHMuaGFzX2tleSgnLS0tLScpOgorCQkJcmV0dXJuIF9hcmd1bWVudHNbJy0tLS0nXQorCisJX2FyZ21hcF9HZXRfUHJvamVjdF9GaWxlID0geworCQknU2VnbWVudCcgOiAnU2VnbScsCisJfQorCisJZGVmIEdldF9Qcm9qZWN0X0ZpbGUoc2VsZiwgX29iamVjdCwgX2F0dHJpYnV0ZXM9e30sICoqX2FyZ3VtZW50cyk6CisJCSIiIkdldCBQcm9qZWN0IEZpbGU6IFJldHVybnMgYSBkZXNjcmlwdGlvbiBvZiBhIGZpbGUgaW4gdGhlIHByb2plY3Qgd2luZG93LgorCQlSZXF1aXJlZCBhcmd1bWVudDogVGhlIGluZGV4IG9mIHRoZSBmaWxlIHdpdGhpbiBpdHMgc2VnbWVudC4KKwkJS2V5d29yZCBhcmd1bWVudCBTZWdtZW50OiBUaGUgc2VnbWVudCBjb250YWluaW5nIHRoZSBmaWxlLgorCQlLZXl3b3JkIGFyZ3VtZW50IF9hdHRyaWJ1dGVzOiBBcHBsZUV2ZW50IGF0dHJpYnV0ZSBkaWN0aW9uYXJ5CisJCVJldHVybnM6IHVuZG9jdW1lbnRlZCwgdHlwZWNvZGUgJ1NyY0YnCisJCSIiIgorCQlfY29kZSA9ICdNTVBSJworCQlfc3ViY29kZSA9ICdHRmlsJworCisJCWFldG9vbHMua2V5c3Vic3QoX2FyZ3VtZW50cywgc2VsZi5fYXJnbWFwX0dldF9Qcm9qZWN0X0ZpbGUpCisJCV9hcmd1bWVudHNbJy0tLS0nXSA9IF9vYmplY3QKKworCisJCV9yZXBseSwgX2FyZ3VtZW50cywgX2F0dHJpYnV0ZXMgPSBzZWxmLnNlbmQoX2NvZGUsIF9zdWJjb2RlLAorCQkJCV9hcmd1bWVudHMsIF9hdHRyaWJ1dGVzKQorCQlpZiBfYXJndW1lbnRzLmhhc19rZXkoJ2Vycm4nKToKKwkJCXJhaXNlIGFldG9vbHMuRXJyb3IsIGFldG9vbHMuZGVjb2RlZXJyb3IoX2FyZ3VtZW50cykKKwkJIyBYWFhYIE9wdGlvbmFsbHkgZGVjb2RlIHJlc3VsdAorCQlpZiBfYXJndW1lbnRzLmhhc19rZXkoJy0tLS0nKToKKwkJCXJldHVybiBfYXJndW1lbnRzWyctLS0tJ10KKworCWRlZiBHZXRfUHJvamVjdF9TcGVjaWZpZXIoc2VsZiwgX25vX29iamVjdD1Ob25lLCBfYXR0cmlidXRlcz17fSwgKipfYXJndW1lbnRzKToKKwkJIiIiR2V0IFByb2plY3QgU3BlY2lmaWVyOiBSZXR1cm4gdGhlIEZpbGUgU3BlY2lmaWVyIGZvciB0aGUgY3VycmVudCBwcm9qZWN0CisJCUtleXdvcmQgYXJndW1lbnQgX2F0dHJpYnV0ZXM6IEFwcGxlRXZlbnQgYXR0cmlidXRlIGRpY3Rpb25hcnkKKwkJUmV0dXJuczogRmlsZSBTcGVjaWZpZXIgZm9yIHRoZSBjdXJyZW50IHByb2plY3QKKwkJIiIiCisJCV9jb2RlID0gJ01NUFInCisJCV9zdWJjb2RlID0gJ0dldFAnCisKKwkJaWYgX2FyZ3VtZW50czogcmFpc2UgVHlwZUVycm9yLCAnTm8gb3B0aW9uYWwgYXJncyBleHBlY3RlZCcKKwkJaWYgX25vX29iamVjdCAhPSBOb25lOiByYWlzZSBUeXBlRXJyb3IsICdObyBkaXJlY3QgYXJnIGV4cGVjdGVkJworCisKKwkJX3JlcGx5LCBfYXJndW1lbnRzLCBfYXR0cmlidXRlcyA9IHNlbGYuc2VuZChfY29kZSwgX3N1YmNvZGUsCisJCQkJX2FyZ3VtZW50cywgX2F0dHJpYnV0ZXMpCisJCWlmIF9hcmd1bWVudHMuaGFzX2tleSgnZXJybicpOgorCQkJcmFpc2UgYWV0b29scy5FcnJvciwgYWV0b29scy5kZWNvZGVlcnJvcihfYXJndW1lbnRzKQorCQkjIFhYWFggT3B0aW9uYWxseSBkZWNvZGUgcmVzdWx0CisJCWlmIF9hcmd1bWVudHMuaGFzX2tleSgnLS0tLScpOgorCQkJcmV0dXJuIF9hcmd1bWVudHNbJy0tLS0nXQorCisJZGVmIEdldF9TZWdtZW50cyhzZWxmLCBfbm9fb2JqZWN0PU5vbmUsIF9hdHRyaWJ1dGVzPXt9LCAqKl9hcmd1bWVudHMpOgorCQkiIiJHZXQgU2VnbWVudHM6IFJldHVybnMgYSBkZXNjcmlwdGlvbiBvZiBlYWNoIHNlZ21lbnQgaW4gdGhlIHByb2plY3QuCisJCUtleXdvcmQgYXJndW1lbnQgX2F0dHJpYnV0ZXM6IEFwcGxlRXZlbnQgYXR0cmlidXRlIGRpY3Rpb25hcnkKKwkJUmV0dXJuczogdW5kb2N1bWVudGVkLCB0eXBlY29kZSAnU2VnICcKKwkJIiIiCisJCV9jb2RlID0gJ01NUFInCisJCV9zdWJjb2RlID0gJ0dTZWcnCisKKwkJaWYgX2FyZ3VtZW50czogcmFpc2UgVHlwZUVycm9yLCAnTm8gb3B0aW9uYWwgYXJncyBleHBlY3RlZCcKKwkJaWYgX25vX29iamVjdCAhPSBOb25lOiByYWlzZSBUeXBlRXJyb3IsICdObyBkaXJlY3QgYXJnIGV4cGVjdGVkJworCisKKwkJX3JlcGx5LCBfYXJndW1lbnRzLCBfYXR0cmlidXRlcyA9IHNlbGYuc2VuZChfY29kZSwgX3N1YmNvZGUsCisJCQkJX2FyZ3VtZW50cywgX2F0dHJpYnV0ZXMpCisJCWlmIF9hcmd1bWVudHMuaGFzX2tleSgnZXJybicpOgorCQkJcmFpc2UgYWV0b29scy5FcnJvciwgYWV0b29scy5kZWNvZGVlcnJvcihfYXJndW1lbnRzKQorCQkjIFhYWFggT3B0aW9uYWxseSBkZWNvZGUgcmVzdWx0CisJCWlmIF9hcmd1bWVudHMuaGFzX2tleSgnLS0tLScpOgorCQkJcmV0dXJuIF9hcmd1bWVudHNbJy0tLS0nXQorCisJZGVmIEdvdG9fRnVuY3Rpb24oc2VsZiwgX29iamVjdCwgX2F0dHJpYnV0ZXM9e30sICoqX2FyZ3VtZW50cyk6CisJCSIiIkdvdG8gRnVuY3Rpb246IEdvdG8gU3BlY2lmaWVkIEZ1bmN0aW9uIE5hbWUKKwkJUmVxdWlyZWQgYXJndW1lbnQ6IHVuZG9jdW1lbnRlZCwgdHlwZWNvZGUgJ1RFWFQnCisJCUtleXdvcmQgYXJndW1lbnQgX2F0dHJpYnV0ZXM6IEFwcGxlRXZlbnQgYXR0cmlidXRlIGRpY3Rpb25hcnkKKwkJIiIiCisJCV9jb2RlID0gJ01NUFInCisJCV9zdWJjb2RlID0gJ0dvRm4nCisKKwkJaWYgX2FyZ3VtZW50czogcmFpc2UgVHlwZUVycm9yLCAnTm8gb3B0aW9uYWwgYXJncyBleHBlY3RlZCcKKwkJX2FyZ3VtZW50c1snLS0tLSddID0gX29iamVjdAorCisKKwkJX3JlcGx5LCBfYXJndW1lbnRzLCBfYXR0cmlidXRlcyA9IHNlbGYuc2VuZChfY29kZSwgX3N1YmNvZGUsCisJCQkJX2FyZ3VtZW50cywgX2F0dHJpYnV0ZXMpCisJCWlmIF9hcmd1bWVudHMuaGFzX2tleSgnZXJybicpOgorCQkJcmFpc2UgYWV0b29scy5FcnJvciwgYWV0b29scy5kZWNvZGVlcnJvcihfYXJndW1lbnRzKQorCQkjIFhYWFggT3B0aW9uYWxseSBkZWNvZGUgcmVzdWx0CisJCWlmIF9hcmd1bWVudHMuaGFzX2tleSgnLS0tLScpOgorCQkJcmV0dXJuIF9hcmd1bWVudHNbJy0tLS0nXQorCisJZGVmIEdvdG9fTGluZShzZWxmLCBfb2JqZWN0LCBfYXR0cmlidXRlcz17fSwgKipfYXJndW1lbnRzKToKKwkJIiIiR290byBMaW5lOiBHb3RvIFNwZWNpZmllZCBMaW5lIE51bWJlcgorCQlSZXF1aXJlZCBhcmd1bWVudDogVGhlIHJlcXVlc3RlZCBzb3VyY2UgZmlsZSBsaW5lIG51bWJlcgorCQlLZXl3b3JkIGFyZ3VtZW50IF9hdHRyaWJ1dGVzOiBBcHBsZUV2ZW50IGF0dHJpYnV0ZSBkaWN0aW9uYXJ5CisJCSIiIgorCQlfY29kZSA9ICdNTVBSJworCQlfc3ViY29kZSA9ICdHb0xuJworCisJCWlmIF9hcmd1bWVudHM6IHJhaXNlIFR5cGVFcnJvciwgJ05vIG9wdGlvbmFsIGFyZ3MgZXhwZWN0ZWQnCisJCV9hcmd1bWVudHNbJy0tLS0nXSA9IF9vYmplY3QKKworCisJCV9yZXBseSwgX2FyZ3VtZW50cywgX2F0dHJpYnV0ZXMgPSBzZWxmLnNlbmQoX2NvZGUsIF9zdWJjb2RlLAorCQkJCV9hcmd1bWVudHMsIF9hdHRyaWJ1dGVzKQorCQlpZiBfYXJndW1lbnRzLmhhc19rZXkoJ2Vycm4nKToKKwkJCXJhaXNlIGFldG9vbHMuRXJyb3IsIGFldG9vbHMuZGVjb2RlZXJyb3IoX2FyZ3VtZW50cykKKwkJIyBYWFhYIE9wdGlvbmFsbHkgZGVjb2RlIHJlc3VsdAorCQlpZiBfYXJndW1lbnRzLmhhc19rZXkoJy0tLS0nKToKKwkJCXJldHVybiBfYXJndW1lbnRzWyctLS0tJ10KKworCWRlZiBJc19Jbl9Qcm9qZWN0KHNlbGYsIF9vYmplY3QsIF9hdHRyaWJ1dGVzPXt9LCAqKl9hcmd1bWVudHMpOgorCQkiIiJJcyBJbiBQcm9qZWN0OiBXaGV0aGVyIG9yIG5vdCB0aGUgc3BlY2lmaWVkIGZpbGUocykgaXMgaW4gdGhlIGN1cnJlbnQgcHJvamVjdAorCQlSZXF1aXJlZCBhcmd1bWVudDogTGlzdCBvZiBmaWxlcyB0byBjaGVjayBmb3IgcHJvamVjdCBtZW1iZXJzaGlwCisJCUtleXdvcmQgYXJndW1lbnQgX2F0dHJpYnV0ZXM6IEFwcGxlRXZlbnQgYXR0cmlidXRlIGRpY3Rpb25hcnkKKwkJUmV0dXJuczogUmVzdWx0IGNvZGUgZm9yIGVhY2ggZmlsZQorCQkiIiIKKwkJX2NvZGUgPSAnTU1QUicKKwkJX3N1YmNvZGUgPSAnRkluUCcKKworCQlpZiBfYXJndW1lbnRzOiByYWlzZSBUeXBlRXJyb3IsICdObyBvcHRpb25hbCBhcmdzIGV4cGVjdGVkJworCQlfYXJndW1lbnRzWyctLS0tJ10gPSBfb2JqZWN0CisKKworCQlfcmVwbHksIF9hcmd1bWVudHMsIF9hdHRyaWJ1dGVzID0gc2VsZi5zZW5kKF9jb2RlLCBfc3ViY29kZSwKKwkJCQlfYXJndW1lbnRzLCBfYXR0cmlidXRlcykKKwkJaWYgX2FyZ3VtZW50cy5oYXNfa2V5KCdlcnJuJyk6CisJCQlyYWlzZSBhZXRvb2xzLkVycm9yLCBhZXRvb2xzLmRlY29kZWVycm9yKF9hcmd1bWVudHMpCisJCSMgWFhYWCBPcHRpb25hbGx5IGRlY29kZSByZXN1bHQKKwkJaWYgX2FyZ3VtZW50cy5oYXNfa2V5KCctLS0tJyk6CisJCQlyZXR1cm4gX2FyZ3VtZW50c1snLS0tLSddCisKKwlfYXJnbWFwX01ha2VfUHJvamVjdCA9IHsKKwkJJ0V4dGVybmFsRWRpdG9yJyA6ICdFcnJzJywKKwl9CisKKwlkZWYgTWFrZV9Qcm9qZWN0KHNlbGYsIF9ub19vYmplY3Q9Tm9uZSwgX2F0dHJpYnV0ZXM9e30sICoqX2FyZ3VtZW50cyk6CisJCSIiIk1ha2UgUHJvamVjdDogTWFrZSB0aGUgY3VycmVudCBwcm9qZWN0CisJCUtleXdvcmQgYXJndW1lbnQgRXh0ZXJuYWxFZGl0b3I6IFNob3VsZCB0aGUgY29udGVudHMgb2YgdGhlIG1lc3NhZ2Ugd2luZG93IGJlIHJldHVybmVkIHRvIHRoZSBjYWxsZXI/CisJCUtleXdvcmQgYXJndW1lbnQgX2F0dHJpYnV0ZXM6IEFwcGxlRXZlbnQgYXR0cmlidXRlIGRpY3Rpb25hcnkKKwkJUmV0dXJuczogRXJyb3JzIHRoYXQgb2NjdXJyZWQgd2hpbGUgbWFraW5nIHRoZSBwcm9qZWN0CisJCSIiIgorCQlfY29kZSA9ICdNTVBSJworCQlfc3ViY29kZSA9ICdNYWtlJworCisJCWFldG9vbHMua2V5c3Vic3QoX2FyZ3VtZW50cywgc2VsZi5fYXJnbWFwX01ha2VfUHJvamVjdCkKKwkJaWYgX25vX29iamVjdCAhPSBOb25lOiByYWlzZSBUeXBlRXJyb3IsICdObyBkaXJlY3QgYXJnIGV4cGVjdGVkJworCisKKwkJX3JlcGx5LCBfYXJndW1lbnRzLCBfYXR0cmlidXRlcyA9IHNlbGYuc2VuZChfY29kZSwgX3N1YmNvZGUsCisJCQkJX2FyZ3VtZW50cywgX2F0dHJpYnV0ZXMpCisJCWlmIF9hcmd1bWVudHMuaGFzX2tleSgnZXJybicpOgorCQkJcmFpc2UgYWV0b29scy5FcnJvciwgYWV0b29scy5kZWNvZGVlcnJvcihfYXJndW1lbnRzKQorCQkjIFhYWFggT3B0aW9uYWxseSBkZWNvZGUgcmVzdWx0CisJCWlmIF9hcmd1bWVudHMuaGFzX2tleSgnLS0tLScpOgorCQkJcmV0dXJuIF9hcmd1bWVudHNbJy0tLS0nXQorCisJX2FyZ21hcF9QcmVjb21waWxlID0geworCQknU2F2aW5nX0FzJyA6ICdUYXJnJywKKwkJJ0V4dGVybmFsRWRpdG9yJyA6ICdFcnJzJywKKwl9CisKKwlkZWYgUHJlY29tcGlsZShzZWxmLCBfb2JqZWN0LCBfYXR0cmlidXRlcz17fSwgKipfYXJndW1lbnRzKToKKwkJIiIiUHJlY29tcGlsZTogUHJlY29tcGlsZSB0aGUgc3BlY2lmaWVkIGZpbGUgdG8gdGhlIHNwZWNpZmllZCBkZXN0aW5hdGlvbiBmaWxlCisJCVJlcXVpcmVkIGFyZ3VtZW50OiBGaWxlIHRvIHByZWNvbXBpbGUKKwkJS2V5d29yZCBhcmd1bWVudCBTYXZpbmdfQXM6IERlc3RpbmF0aW9uIGZpbGUgZm9yIHByZWNvbXBpbGVkIGhlYWRlcgorCQlLZXl3b3JkIGFyZ3VtZW50IEV4dGVybmFsRWRpdG9yOiBTaG91bGQgdGhlIGNvbnRlbnRzIG9mIHRoZSBtZXNzYWdlIHdpbmRvdyBiZSByZXR1cm5lZCB0byB0aGUgY2FsbGVyPworCQlLZXl3b3JkIGFyZ3VtZW50IF9hdHRyaWJ1dGVzOiBBcHBsZUV2ZW50IGF0dHJpYnV0ZSBkaWN0aW9uYXJ5CisJCVJldHVybnM6IEVycm9ycyBmb3IgdGhlIHByZWNvbXBpbGVkIGZpbGUKKwkJIiIiCisJCV9jb2RlID0gJ01NUFInCisJCV9zdWJjb2RlID0gJ1ByZUMnCisKKwkJYWV0b29scy5rZXlzdWJzdChfYXJndW1lbnRzLCBzZWxmLl9hcmdtYXBfUHJlY29tcGlsZSkKKwkJX2FyZ3VtZW50c1snLS0tLSddID0gX29iamVjdAorCisKKwkJX3JlcGx5LCBfYXJndW1lbnRzLCBfYXR0cmlidXRlcyA9IHNlbGYuc2VuZChfY29kZSwgX3N1YmNvZGUsCisJCQkJX2FyZ3VtZW50cywgX2F0dHJpYnV0ZXMpCisJCWlmIF9hcmd1bWVudHMuaGFzX2tleSgnZXJybicpOgorCQkJcmFpc2UgYWV0b29scy5FcnJvciwgYWV0b29scy5kZWNvZGVlcnJvcihfYXJndW1lbnRzKQorCQkjIFhYWFggT3B0aW9uYWxseSBkZWNvZGUgcmVzdWx0CisJCWlmIF9hcmd1bWVudHMuaGFzX2tleSgnLS0tLScpOgorCQkJcmV0dXJuIF9hcmd1bWVudHNbJy0tLS0nXQorCisJX2FyZ21hcF9QcmVwcm9jZXNzID0geworCQknRXh0ZXJuYWxFZGl0b3InIDogJ0VycnMnLAorCX0KKworCWRlZiBQcmVwcm9jZXNzKHNlbGYsIF9vYmplY3QsIF9hdHRyaWJ1dGVzPXt9LCAqKl9hcmd1bWVudHMpOgorCQkiIiJQcmVwcm9jZXNzOiBQcmVwcm9jZXNzZXMgdGhlIHNwZWNpZmllZCBmaWxlKHMpCisJCVJlcXVpcmVkIGFyZ3VtZW50OiB1bmRvY3VtZW50ZWQsIHR5cGVjb2RlICdhbGlzJworCQlLZXl3b3JkIGFyZ3VtZW50IEV4dGVybmFsRWRpdG9yOiB1bmRvY3VtZW50ZWQsIHR5cGVjb2RlICdib29sJworCQlLZXl3b3JkIGFyZ3VtZW50IF9hdHRyaWJ1dGVzOiBBcHBsZUV2ZW50IGF0dHJpYnV0ZSBkaWN0aW9uYXJ5CisJCVJldHVybnM6IEVycm9ycyBmb3IgZWFjaCBwcmVwcm9jZXNzZWQgZmlsZQorCQkiIiIKKwkJX2NvZGUgPSAnTU1QUicKKwkJX3N1YmNvZGUgPSAnUHJlUCcKKworCQlhZXRvb2xzLmtleXN1YnN0KF9hcmd1bWVudHMsIHNlbGYuX2FyZ21hcF9QcmVwcm9jZXNzKQorCQlfYXJndW1lbnRzWyctLS0tJ10gPSBfb2JqZWN0CisKKworCQlfcmVwbHksIF9hcmd1bWVudHMsIF9hdHRyaWJ1dGVzID0gc2VsZi5zZW5kKF9jb2RlLCBfc3ViY29kZSwKKwkJCQlfYXJndW1lbnRzLCBfYXR0cmlidXRlcykKKwkJaWYgX2FyZ3VtZW50cy5oYXNfa2V5KCdlcnJuJyk6CisJCQlyYWlzZSBhZXRvb2xzLkVycm9yLCBhZXRvb2xzLmRlY29kZWVycm9yKF9hcmd1bWVudHMpCisJCSMgWFhYWCBPcHRpb25hbGx5IGRlY29kZSByZXN1bHQKKwkJaWYgX2FyZ3VtZW50cy5oYXNfa2V5KCctLS0tJyk6CisJCQlyZXR1cm4gX2FyZ3VtZW50c1snLS0tLSddCisKKwlkZWYgUmVtb3ZlX0JpbmFyaWVzKHNlbGYsIF9ub19vYmplY3Q9Tm9uZSwgX2F0dHJpYnV0ZXM9e30sICoqX2FyZ3VtZW50cyk6CisJCSIiIlJlbW92ZSBCaW5hcmllczogUmVtb3ZlIHRoZSBiaW5hcnkgb2JqZWN0IGNvZGUgZnJvbSB0aGUgY3VycmVudCBwcm9qZWN0CisJCUtleXdvcmQgYXJndW1lbnQgX2F0dHJpYnV0ZXM6IEFwcGxlRXZlbnQgYXR0cmlidXRlIGRpY3Rpb25hcnkKKwkJIiIiCisJCV9jb2RlID0gJ01NUFInCisJCV9zdWJjb2RlID0gJ1JlbUInCisKKwkJaWYgX2FyZ3VtZW50czogcmFpc2UgVHlwZUVycm9yLCAnTm8gb3B0aW9uYWwgYXJncyBleHBlY3RlZCcKKwkJaWYgX25vX29iamVjdCAhPSBOb25lOiByYWlzZSBUeXBlRXJyb3IsICdObyBkaXJlY3QgYXJnIGV4cGVjdGVkJworCisKKwkJX3JlcGx5LCBfYXJndW1lbnRzLCBfYXR0cmlidXRlcyA9IHNlbGYuc2VuZChfY29kZSwgX3N1YmNvZGUsCisJCQkJX2FyZ3VtZW50cywgX2F0dHJpYnV0ZXMpCisJCWlmIF9hcmd1bWVudHMuaGFzX2tleSgnZXJybicpOgorCQkJcmFpc2UgYWV0b29scy5FcnJvciwgYWV0b29scy5kZWNvZGVlcnJvcihfYXJndW1lbnRzKQorCQkjIFhYWFggT3B0aW9uYWxseSBkZWNvZGUgcmVzdWx0CisJCWlmIF9hcmd1bWVudHMuaGFzX2tleSgnLS0tLScpOgorCQkJcmV0dXJuIF9hcmd1bWVudHNbJy0tLS0nXQorCisJZGVmIFJlbW92ZV9GaWxlcyhzZWxmLCBfb2JqZWN0LCBfYXR0cmlidXRlcz17fSwgKipfYXJndW1lbnRzKToKKwkJIiIiUmVtb3ZlIEZpbGVzOiBSZW1vdmUgdGhlIHNwZWNpZmllZCBmaWxlKHMpIGZyb20gdGhlIGN1cnJlbnQgcHJvamVjdAorCQlSZXF1aXJlZCBhcmd1bWVudDogTGlzdCBvZiBmaWxlcyB0byByZW1vdmUKKwkJS2V5d29yZCBhcmd1bWVudCBfYXR0cmlidXRlczogQXBwbGVFdmVudCBhdHRyaWJ1dGUgZGljdGlvbmFyeQorCQlSZXR1cm5zOiBFcnJvciBjb2RlIGZvciBlYWNoIGZpbGUgcmVtb3ZlZAorCQkiIiIKKwkJX2NvZGUgPSAnTU1QUicKKwkJX3N1YmNvZGUgPSAnUmVtRicKKworCQlpZiBfYXJndW1lbnRzOiByYWlzZSBUeXBlRXJyb3IsICdObyBvcHRpb25hbCBhcmdzIGV4cGVjdGVkJworCQlfYXJndW1lbnRzWyctLS0tJ10gPSBfb2JqZWN0CisKKworCQlfcmVwbHksIF9hcmd1bWVudHMsIF9hdHRyaWJ1dGVzID0gc2VsZi5zZW5kKF9jb2RlLCBfc3ViY29kZSwKKwkJCQlfYXJndW1lbnRzLCBfYXR0cmlidXRlcykKKwkJaWYgX2FyZ3VtZW50cy5oYXNfa2V5KCdlcnJuJyk6CisJCQlyYWlzZSBhZXRvb2xzLkVycm9yLCBhZXRvb2xzLmRlY29kZWVycm9yKF9hcmd1bWVudHMpCisJCSMgWFhYWCBPcHRpb25hbGx5IGRlY29kZSByZXN1bHQKKwkJaWYgX2FyZ3VtZW50cy5oYXNfa2V5KCctLS0tJyk6CisJCQlyZXR1cm4gX2FyZ3VtZW50c1snLS0tLSddCisKKwlkZWYgUmVzZXRfRmlsZV9QYXRocyhzZWxmLCBfbm9fb2JqZWN0PU5vbmUsIF9hdHRyaWJ1dGVzPXt9LCAqKl9hcmd1bWVudHMpOgorCQkiIiJSZXNldCBGaWxlIFBhdGhzOiBSZXNldHMgYWNjZXNzIHBhdGhzIGZvciBhbGwgZmlsZXMgYmVsb25naW5nIHRvIG9wZW4gcHJvamVjdC4KKwkJS2V5d29yZCBhcmd1bWVudCBfYXR0cmlidXRlczogQXBwbGVFdmVudCBhdHRyaWJ1dGUgZGljdGlvbmFyeQorCQkiIiIKKwkJX2NvZGUgPSAnTU1QUicKKwkJX3N1YmNvZGUgPSAnUmVGUCcKKworCQlpZiBfYXJndW1lbnRzOiByYWlzZSBUeXBlRXJyb3IsICdObyBvcHRpb25hbCBhcmdzIGV4cGVjdGVkJworCQlpZiBfbm9fb2JqZWN0ICE9IE5vbmU6IHJhaXNlIFR5cGVFcnJvciwgJ05vIGRpcmVjdCBhcmcgZXhwZWN0ZWQnCisKKworCQlfcmVwbHksIF9hcmd1bWVudHMsIF9hdHRyaWJ1dGVzID0gc2VsZi5zZW5kKF9jb2RlLCBfc3ViY29kZSwKKwkJCQlfYXJndW1lbnRzLCBfYXR0cmlidXRlcykKKwkJaWYgX2FyZ3VtZW50cy5oYXNfa2V5KCdlcnJuJyk6CisJCQlyYWlzZSBhZXRvb2xzLkVycm9yLCBhZXRvb2xzLmRlY29kZWVycm9yKF9hcmd1bWVudHMpCisJCSMgWFhYWCBPcHRpb25hbGx5IGRlY29kZSByZXN1bHQKKwkJaWYgX2FyZ3VtZW50cy5oYXNfa2V5KCctLS0tJyk6CisJCQlyZXR1cm4gX2FyZ3VtZW50c1snLS0tLSddCisKKwlfYXJnbWFwX1J1bl9Qcm9qZWN0ID0geworCQknRXh0ZXJuYWxFZGl0b3InIDogJ0VycnMnLAorCQknU291cmNlRGVidWdnZXInIDogJ0RlQmcnLAorCX0KKworCWRlZiBSdW5fUHJvamVjdChzZWxmLCBfbm9fb2JqZWN0PU5vbmUsIF9hdHRyaWJ1dGVzPXt9LCAqKl9hcmd1bWVudHMpOgorCQkiIiJSdW4gUHJvamVjdDogUnVuIHRoZSBjdXJyZW50IHByb2plY3QKKwkJS2V5d29yZCBhcmd1bWVudCBFeHRlcm5hbEVkaXRvcjogU2hvdWxkIHRoZSBjb250ZW50cyBvZiB0aGUgbWVzc2FnZSB3aW5kb3cgYmUgcmV0dXJuZWQgdG8gdGhlIGNhbGxlcj8KKwkJS2V5d29yZCBhcmd1bWVudCBTb3VyY2VEZWJ1Z2dlcjogUnVuIHRoZSBhcHBsaWNhdGlvbiB1bmRlciB0aGUgY29udHJvbCBvZiB0aGUgc291cmNlLWxldmVsIGRlYnVnZ2VyCisJCUtleXdvcmQgYXJndW1lbnQgX2F0dHJpYnV0ZXM6IEFwcGxlRXZlbnQgYXR0cmlidXRlIGRpY3Rpb25hcnkKKwkJUmV0dXJuczogRXJyb3JzIHRoYXQgb2NjdXJyZWQgd2hlbiBydW5uaW5nIHRoZSBwcm9qZWN0CisJCSIiIgorCQlfY29kZSA9ICdNTVBSJworCQlfc3ViY29kZSA9ICdSdW5QJworCisJCWFldG9vbHMua2V5c3Vic3QoX2FyZ3VtZW50cywgc2VsZi5fYXJnbWFwX1J1bl9Qcm9qZWN0KQorCQlpZiBfbm9fb2JqZWN0ICE9IE5vbmU6IHJhaXNlIFR5cGVFcnJvciwgJ05vIGRpcmVjdCBhcmcgZXhwZWN0ZWQnCisKKworCQlfcmVwbHksIF9hcmd1bWVudHMsIF9hdHRyaWJ1dGVzID0gc2VsZi5zZW5kKF9jb2RlLCBfc3ViY29kZSwKKwkJCQlfYXJndW1lbnRzLCBfYXR0cmlidXRlcykKKwkJaWYgX2FyZ3VtZW50cy5oYXNfa2V5KCdlcnJuJyk6CisJCQlyYWlzZSBhZXRvb2xzLkVycm9yLCBhZXRvb2xzLmRlY29kZWVycm9yKF9hcmd1bWVudHMpCisJCSMgWFhYWCBPcHRpb25hbGx5IGRlY29kZSByZXN1bHQKKwkJaWYgX2FyZ3VtZW50cy5oYXNfa2V5KCctLS0tJyk6CisJCQlyZXR1cm4gX2FyZ3VtZW50c1snLS0tLSddCisKKwlkZWYgU2F2ZV9FcnJvcl9XaW5kb3dfQXMoc2VsZiwgX29iamVjdCwgX2F0dHJpYnV0ZXM9e30sICoqX2FyZ3VtZW50cyk6CisJCSIiIlNhdmUgRXJyb3IgV2luZG93IEFzOiBTYXZlcyB0aGUgRXJyb3JzICYgV2FybmluZ3Mgd2luZG93IGFzIGEgdGV4dCBmaWxlCisJCVJlcXVpcmVkIGFyZ3VtZW50OiBEZXN0aW5hdGlvbiBmaWxlIGZvciBTYXZlIE1lc3NhZ2UgV2luZG93IEFzCisJCUtleXdvcmQgYXJndW1lbnQgX2F0dHJpYnV0ZXM6IEFwcGxlRXZlbnQgYXR0cmlidXRlIGRpY3Rpb25hcnkKKwkJIiIiCisJCV9jb2RlID0gJ01NUFInCisJCV9zdWJjb2RlID0gJ1N2TXMnCisKKwkJaWYgX2FyZ3VtZW50czogcmFpc2UgVHlwZUVycm9yLCAnTm8gb3B0aW9uYWwgYXJncyBleHBlY3RlZCcKKwkJX2FyZ3VtZW50c1snLS0tLSddID0gX29iamVjdAorCisKKwkJX3JlcGx5LCBfYXJndW1lbnRzLCBfYXR0cmlidXRlcyA9IHNlbGYuc2VuZChfY29kZSwgX3N1YmNvZGUsCisJCQkJX2FyZ3VtZW50cywgX2F0dHJpYnV0ZXMpCisJCWlmIF9hcmd1bWVudHMuaGFzX2tleSgnZXJybicpOgorCQkJcmFpc2UgYWV0b29scy5FcnJvciwgYWV0b29scy5kZWNvZGVlcnJvcihfYXJndW1lbnRzKQorCQkjIFhYWFggT3B0aW9uYWxseSBkZWNvZGUgcmVzdWx0CisJCWlmIF9hcmd1bWVudHMuaGFzX2tleSgnLS0tLScpOgorCQkJcmV0dXJuIF9hcmd1bWVudHNbJy0tLS0nXQorCisJZGVmIFNldF9DdXJyZW50X1RhcmdldChzZWxmLCBfb2JqZWN0PU5vbmUsIF9hdHRyaWJ1dGVzPXt9LCAqKl9hcmd1bWVudHMpOgorCQkiIiJTZXQgQ3VycmVudCBUYXJnZXQ6IFNldCB0aGUgY3VycmVudCB0YXJnZXQgb2YgYSBwcm9qZWN0CisJCVJlcXVpcmVkIGFyZ3VtZW50OiBOYW1lIG9mIHRhcmdldAorCQlLZXl3b3JkIGFyZ3VtZW50IF9hdHRyaWJ1dGVzOiBBcHBsZUV2ZW50IGF0dHJpYnV0ZSBkaWN0aW9uYXJ5CisJCSIiIgorCQlfY29kZSA9ICdNTVBSJworCQlfc3ViY29kZSA9ICdTVHJnJworCisJCWlmIF9hcmd1bWVudHM6IHJhaXNlIFR5cGVFcnJvciwgJ05vIG9wdGlvbmFsIGFyZ3MgZXhwZWN0ZWQnCisJCV9hcmd1bWVudHNbJy0tLS0nXSA9IF9vYmplY3QKKworCisJCV9yZXBseSwgX2FyZ3VtZW50cywgX2F0dHJpYnV0ZXMgPSBzZWxmLnNlbmQoX2NvZGUsIF9zdWJjb2RlLAorCQkJCV9hcmd1bWVudHMsIF9hdHRyaWJ1dGVzKQorCQlpZiBfYXJndW1lbnRzLmhhc19rZXkoJ2Vycm4nKToKKwkJCXJhaXNlIGFldG9vbHMuRXJyb3IsIGFldG9vbHMuZGVjb2RlZXJyb3IoX2FyZ3VtZW50cykKKwkJIyBYWFhYIE9wdGlvbmFsbHkgZGVjb2RlIHJlc3VsdAorCQlpZiBfYXJndW1lbnRzLmhhc19rZXkoJy0tLS0nKToKKwkJCXJldHVybiBfYXJndW1lbnRzWyctLS0tJ10KKworCWRlZiBTZXRfRGVmYXVsdF9Qcm9qZWN0KHNlbGYsIF9vYmplY3QsIF9hdHRyaWJ1dGVzPXt9LCAqKl9hcmd1bWVudHMpOgorCQkiIiJTZXQgRGVmYXVsdCBQcm9qZWN0OiBTZXQgdGhlIGRlZmF1bHQgcHJvamVjdAorCQlSZXF1aXJlZCBhcmd1bWVudDogTmFtZSBvZiBwcm9qZWN0CisJCUtleXdvcmQgYXJndW1lbnQgX2F0dHJpYnV0ZXM6IEFwcGxlRXZlbnQgYXR0cmlidXRlIGRpY3Rpb25hcnkKKwkJIiIiCisJCV9jb2RlID0gJ01NUFInCisJCV9zdWJjb2RlID0gJ1NEZlAnCisKKwkJaWYgX2FyZ3VtZW50czogcmFpc2UgVHlwZUVycm9yLCAnTm8gb3B0aW9uYWwgYXJncyBleHBlY3RlZCcKKwkJX2FyZ3VtZW50c1snLS0tLSddID0gX29iamVjdAorCisKKwkJX3JlcGx5LCBfYXJndW1lbnRzLCBfYXR0cmlidXRlcyA9IHNlbGYuc2VuZChfY29kZSwgX3N1YmNvZGUsCisJCQkJX2FyZ3VtZW50cywgX2F0dHJpYnV0ZXMpCisJCWlmIF9hcmd1bWVudHMuaGFzX2tleSgnZXJybicpOgorCQkJcmFpc2UgYWV0b29scy5FcnJvciwgYWV0b29scy5kZWNvZGVlcnJvcihfYXJndW1lbnRzKQorCQkjIFhYWFggT3B0aW9uYWxseSBkZWNvZGUgcmVzdWx0CisJCWlmIF9hcmd1bWVudHMuaGFzX2tleSgnLS0tLScpOgorCQkJcmV0dXJuIF9hcmd1bWVudHNbJy0tLS0nXQorCisJX2FyZ21hcF9TZXRfTW9kaWZpY2F0aW9uX0RhdGUgPSB7CisJCSd0bycgOiAnTURhdCcsCisJfQorCisJZGVmIFNldF9Nb2RpZmljYXRpb25fRGF0ZShzZWxmLCBfb2JqZWN0LCBfYXR0cmlidXRlcz17fSwgKipfYXJndW1lbnRzKToKKwkJIiIiU2V0IE1vZGlmaWNhdGlvbiBEYXRlOiBDaGFuZ2VzIHRoZSBpbnRlcm5hbCBtb2RpZmljYXRpb24gZGF0ZSBvZiB0aGUgc3BlY2lmaWVkIGZpbGUocykKKwkJUmVxdWlyZWQgYXJndW1lbnQ6IExpc3Qgb2YgZmlsZXMKKwkJS2V5d29yZCBhcmd1bWVudCB0bzogdW5kb2N1bWVudGVkLCB0eXBlY29kZSAnbGR0ICcKKwkJS2V5d29yZCBhcmd1bWVudCBfYXR0cmlidXRlczogQXBwbGVFdmVudCBhdHRyaWJ1dGUgZGljdGlvbmFyeQorCQlSZXR1cm5zOiBFcnJvciBjb2RlIGZvciBlYWNoIG1vZGlmaWVkIGZpbGUKKwkJIiIiCisJCV9jb2RlID0gJ01NUFInCisJCV9zdWJjb2RlID0gJ1NNb2QnCisKKwkJYWV0b29scy5rZXlzdWJzdChfYXJndW1lbnRzLCBzZWxmLl9hcmdtYXBfU2V0X01vZGlmaWNhdGlvbl9EYXRlKQorCQlfYXJndW1lbnRzWyctLS0tJ10gPSBfb2JqZWN0CisKKworCQlfcmVwbHksIF9hcmd1bWVudHMsIF9hdHRyaWJ1dGVzID0gc2VsZi5zZW5kKF9jb2RlLCBfc3ViY29kZSwKKwkJCQlfYXJndW1lbnRzLCBfYXR0cmlidXRlcykKKwkJaWYgX2FyZ3VtZW50cy5oYXNfa2V5KCdlcnJuJyk6CisJCQlyYWlzZSBhZXRvb2xzLkVycm9yLCBhZXRvb2xzLmRlY29kZWVycm9yKF9hcmd1bWVudHMpCisJCSMgWFhYWCBPcHRpb25hbGx5IGRlY29kZSByZXN1bHQKKwkJaWYgX2FyZ3VtZW50cy5oYXNfa2V5KCctLS0tJyk6CisJCQlyZXR1cm4gX2FyZ3VtZW50c1snLS0tLSddCisKKwlfYXJnbWFwX1NldF9QcmVmZXJlbmNlcyA9IHsKKwkJJ29mX3BhbmVsJyA6ICdQTmFtJywKKwkJJ3RvJyA6ICdQUmVjJywKKwl9CisKKwlkZWYgU2V0X1ByZWZlcmVuY2VzKHNlbGYsIF9ub19vYmplY3Q9Tm9uZSwgX2F0dHJpYnV0ZXM9e30sICoqX2FyZ3VtZW50cyk6CisJCSIiIlNldCBQcmVmZXJlbmNlczogU2V0IHRoZSBwcmVmZXJlbmNlcyBmb3IgdGhlIGN1cnJlbnQgcHJvamVjdAorCQlLZXl3b3JkIGFyZ3VtZW50IG9mX3BhbmVsOiBOYW1lIG9mIHRoZSBwcmVmZXJlbmNlIHBhbmVsCisJCUtleXdvcmQgYXJndW1lbnQgdG86IFByZWZlcmVuY2VzIHNldHRpbmdzCisJCUtleXdvcmQgYXJndW1lbnQgX2F0dHJpYnV0ZXM6IEFwcGxlRXZlbnQgYXR0cmlidXRlIGRpY3Rpb25hcnkKKwkJIiIiCisJCV9jb2RlID0gJ01NUFInCisJCV9zdWJjb2RlID0gJ1ByZWYnCisKKwkJYWV0b29scy5rZXlzdWJzdChfYXJndW1lbnRzLCBzZWxmLl9hcmdtYXBfU2V0X1ByZWZlcmVuY2VzKQorCQlpZiBfbm9fb2JqZWN0ICE9IE5vbmU6IHJhaXNlIFR5cGVFcnJvciwgJ05vIGRpcmVjdCBhcmcgZXhwZWN0ZWQnCisKKworCQlfcmVwbHksIF9hcmd1bWVudHMsIF9hdHRyaWJ1dGVzID0gc2VsZi5zZW5kKF9jb2RlLCBfc3ViY29kZSwKKwkJCQlfYXJndW1lbnRzLCBfYXR0cmlidXRlcykKKwkJaWYgX2FyZ3VtZW50cy5oYXNfa2V5KCdlcnJuJyk6CisJCQlyYWlzZSBhZXRvb2xzLkVycm9yLCBhZXRvb2xzLmRlY29kZWVycm9yKF9hcmd1bWVudHMpCisJCSMgWFhYWCBPcHRpb25hbGx5IGRlY29kZSByZXN1bHQKKwkJaWYgX2FyZ3VtZW50cy5oYXNfa2V5KCctLS0tJyk6CisJCQlyZXR1cm4gX2FyZ3VtZW50c1snLS0tLSddCisKKwlfYXJnbWFwX1NldF9Qcm9qZWN0X0ZpbGUgPSB7CisJCSd0bycgOiAnU3JjUycsCisJfQorCisJZGVmIFNldF9Qcm9qZWN0X0ZpbGUoc2VsZiwgX29iamVjdCwgX2F0dHJpYnV0ZXM9e30sICoqX2FyZ3VtZW50cyk6CisJCSIiIlNldCBQcm9qZWN0IEZpbGU6IENoYW5nZXMgdGhlIHNldHRpbmdzIGZvciBhIGdpdmVuIGZpbGUgaW4gdGhlIHByb2plY3QuCisJCVJlcXVpcmVkIGFyZ3VtZW50OiBUaGUgbmFtZSBvZiB0aGUgZmlsZQorCQlLZXl3b3JkIGFyZ3VtZW50IHRvOiBUaGUgbmV3IHNldHRpbmdzIGZvciB0aGUgZmlsZQorCQlLZXl3b3JkIGFyZ3VtZW50IF9hdHRyaWJ1dGVzOiBBcHBsZUV2ZW50IGF0dHJpYnV0ZSBkaWN0aW9uYXJ5CisJCSIiIgorCQlfY29kZSA9ICdNTVBSJworCQlfc3ViY29kZSA9ICdTRmlsJworCisJCWFldG9vbHMua2V5c3Vic3QoX2FyZ3VtZW50cywgc2VsZi5fYXJnbWFwX1NldF9Qcm9qZWN0X0ZpbGUpCisJCV9hcmd1bWVudHNbJy0tLS0nXSA9IF9vYmplY3QKKworCisJCV9yZXBseSwgX2FyZ3VtZW50cywgX2F0dHJpYnV0ZXMgPSBzZWxmLnNlbmQoX2NvZGUsIF9zdWJjb2RlLAorCQkJCV9hcmd1bWVudHMsIF9hdHRyaWJ1dGVzKQorCQlpZiBfYXJndW1lbnRzLmhhc19rZXkoJ2Vycm4nKToKKwkJCXJhaXNlIGFldG9vbHMuRXJyb3IsIGFldG9vbHMuZGVjb2RlZXJyb3IoX2FyZ3VtZW50cykKKwkJIyBYWFhYIE9wdGlvbmFsbHkgZGVjb2RlIHJlc3VsdAorCQlpZiBfYXJndW1lbnRzLmhhc19rZXkoJy0tLS0nKToKKwkJCXJldHVybiBfYXJndW1lbnRzWyctLS0tJ10KKworCV9hcmdtYXBfU2V0X1NlZ21lbnQgPSB7CisJCSd0bycgOiAnU2VnbScsCisJfQorCisJZGVmIFNldF9TZWdtZW50KHNlbGYsIF9vYmplY3QsIF9hdHRyaWJ1dGVzPXt9LCAqKl9hcmd1bWVudHMpOgorCQkiIiJTZXQgU2VnbWVudDogQ2hhbmdlcyB0aGUgbmFtZSBhbmQgYXR0cmlidXRlcyBvZiBhIHNlZ21lbnQuCisJCVJlcXVpcmVkIGFyZ3VtZW50OiBUaGUgc2VnbWVudCB0byBjaGFuZ2UKKwkJS2V5d29yZCBhcmd1bWVudCB0bzogVGhlIG5ldyBuYW1lIGFuZCBhdHRyaWJ1dGVzIGZvciB0aGUgc2VnbWVudC4KKwkJS2V5d29yZCBhcmd1bWVudCBfYXR0cmlidXRlczogQXBwbGVFdmVudCBhdHRyaWJ1dGUgZGljdGlvbmFyeQorCQkiIiIKKwkJX2NvZGUgPSAnTU1QUicKKwkJX3N1YmNvZGUgPSAnU1NlZycKKworCQlhZXRvb2xzLmtleXN1YnN0KF9hcmd1bWVudHMsIHNlbGYuX2FyZ21hcF9TZXRfU2VnbWVudCkKKwkJX2FyZ3VtZW50c1snLS0tLSddID0gX29iamVjdAorCisKKwkJX3JlcGx5LCBfYXJndW1lbnRzLCBfYXR0cmlidXRlcyA9IHNlbGYuc2VuZChfY29kZSwgX3N1YmNvZGUsCisJCQkJX2FyZ3VtZW50cywgX2F0dHJpYnV0ZXMpCisJCWlmIF9hcmd1bWVudHMuaGFzX2tleSgnZXJybicpOgorCQkJcmFpc2UgYWV0b29scy5FcnJvciwgYWV0b29scy5kZWNvZGVlcnJvcihfYXJndW1lbnRzKQorCQkjIFhYWFggT3B0aW9uYWxseSBkZWNvZGUgcmVzdWx0CisJCWlmIF9hcmd1bWVudHMuaGFzX2tleSgnLS0tLScpOgorCQkJcmV0dXJuIF9hcmd1bWVudHNbJy0tLS0nXQorCisJZGVmIFRvdWNoKHNlbGYsIF9vYmplY3QsIF9hdHRyaWJ1dGVzPXt9LCAqKl9hcmd1bWVudHMpOgorCQkiIiJUb3VjaDogRm9yY2UgcmVjb21waWxhdGlvbiBvZiB0aGUgc3BlY2lmaWVkIGZpbGUocykKKwkJUmVxdWlyZWQgYXJndW1lbnQ6IExpc3Qgb2YgZmlsZXMgdG8gY29tcGlsZQorCQlLZXl3b3JkIGFyZ3VtZW50IF9hdHRyaWJ1dGVzOiBBcHBsZUV2ZW50IGF0dHJpYnV0ZSBkaWN0aW9uYXJ5CisJCVJldHVybnM6IEVycm9yIGNvZGUgZm9yIGVhY2ggZmlsZSB0b3VjaGVkCisJCSIiIgorCQlfY29kZSA9ICdNTVBSJworCQlfc3ViY29kZSA9ICdUb2NoJworCisJCWlmIF9hcmd1bWVudHM6IHJhaXNlIFR5cGVFcnJvciwgJ05vIG9wdGlvbmFsIGFyZ3MgZXhwZWN0ZWQnCisJCV9hcmd1bWVudHNbJy0tLS0nXSA9IF9vYmplY3QKKworCisJCV9yZXBseSwgX2FyZ3VtZW50cywgX2F0dHJpYnV0ZXMgPSBzZWxmLnNlbmQoX2NvZGUsIF9zdWJjb2RlLAorCQkJCV9hcmd1bWVudHMsIF9hdHRyaWJ1dGVzKQorCQlpZiBfYXJndW1lbnRzLmhhc19rZXkoJ2Vycm4nKToKKwkJCXJhaXNlIGFldG9vbHMuRXJyb3IsIGFldG9vbHMuZGVjb2RlZXJyb3IoX2FyZ3VtZW50cykKKwkJIyBYWFhYIE9wdGlvbmFsbHkgZGVjb2RlIHJlc3VsdAorCQlpZiBfYXJndW1lbnRzLmhhc19rZXkoJy0tLS0nKToKKwkJCXJldHVybiBfYXJndW1lbnRzWyctLS0tJ10KKworCV9hcmdtYXBfVXBkYXRlX1Byb2plY3QgPSB7CisJCSdFeHRlcm5hbEVkaXRvcicgOiAnRXJycycsCisJfQorCisJZGVmIFVwZGF0ZV9Qcm9qZWN0KHNlbGYsIF9ub19vYmplY3Q9Tm9uZSwgX2F0dHJpYnV0ZXM9e30sICoqX2FyZ3VtZW50cyk6CisJCSIiIlVwZGF0ZSBQcm9qZWN0OiBVcGRhdGUgdGhlIGN1cnJlbnQgcHJvamVjdAorCQlLZXl3b3JkIGFyZ3VtZW50IEV4dGVybmFsRWRpdG9yOiBTaG91bGQgdGhlIGNvbnRlbnRzIG9mIHRoZSBtZXNzYWdlIHdpbmRvdyBiZSByZXR1cm5lZCB0byB0aGUgY2FsbGVyPworCQlLZXl3b3JkIGFyZ3VtZW50IF9hdHRyaWJ1dGVzOiBBcHBsZUV2ZW50IGF0dHJpYnV0ZSBkaWN0aW9uYXJ5CisJCVJldHVybnM6IEVycm9ycyB0aGF0IG9jY3VycmVkIHdoaWxlIHVwZGF0aW5nIHRoZSBwcm9qZWN0CisJCSIiIgorCQlfY29kZSA9ICdNTVBSJworCQlfc3ViY29kZSA9ICdVcGRQJworCisJCWFldG9vbHMua2V5c3Vic3QoX2FyZ3VtZW50cywgc2VsZi5fYXJnbWFwX1VwZGF0ZV9Qcm9qZWN0KQorCQlpZiBfbm9fb2JqZWN0ICE9IE5vbmU6IHJhaXNlIFR5cGVFcnJvciwgJ05vIGRpcmVjdCBhcmcgZXhwZWN0ZWQnCisKKworCQlfcmVwbHksIF9hcmd1bWVudHMsIF9hdHRyaWJ1dGVzID0gc2VsZi5zZW5kKF9jb2RlLCBfc3ViY29kZSwKKwkJCQlfYXJndW1lbnRzLCBfYXR0cmlidXRlcykKKwkJaWYgX2FyZ3VtZW50cy5oYXNfa2V5KCdlcnJuJyk6CisJCQlyYWlzZSBhZXRvb2xzLkVycm9yLCBhZXRvb2xzLmRlY29kZWVycm9yKF9hcmd1bWVudHMpCisJCSMgWFhYWCBPcHRpb25hbGx5IGRlY29kZSByZXN1bHQKKwkJaWYgX2FyZ3VtZW50cy5oYXNfa2V5KCctLS0tJyk6CisJCQlyZXR1cm4gX2FyZ3VtZW50c1snLS0tLSddCisKKwlkZWYgT3Blbl9icm93c2VyKHNlbGYsIF9vYmplY3QsIF9hdHRyaWJ1dGVzPXt9LCAqKl9hcmd1bWVudHMpOgorCQkiIiJPcGVuIGJyb3dzZXI6IERpc3BsYXkgYSBjbGFzcywgbWVtYmVyIGZ1bmN0aW9uLCBvciBkYXRhIG1lbWJlciBvYmplY3QgaW4gYSBzaW5nbGUgY2xhc3MgYnJvd3NlciB3aW5kb3cKKwkJUmVxdWlyZWQgYXJndW1lbnQ6IGFuIEFFIG9iamVjdCByZWZlcmVuY2UKKwkJS2V5d29yZCBhcmd1bWVudCBfYXR0cmlidXRlczogQXBwbGVFdmVudCBhdHRyaWJ1dGUgZGljdGlvbmFyeQorCQkiIiIKKwkJX2NvZGUgPSAnTU1QUicKKwkJX3N1YmNvZGUgPSAnQnJvdycKKworCQlpZiBfYXJndW1lbnRzOiByYWlzZSBUeXBlRXJyb3IsICdObyBvcHRpb25hbCBhcmdzIGV4cGVjdGVkJworCQlfYXJndW1lbnRzWyctLS0tJ10gPSBfb2JqZWN0CisKKworCQlfcmVwbHksIF9hcmd1bWVudHMsIF9hdHRyaWJ1dGVzID0gc2VsZi5zZW5kKF9jb2RlLCBfc3ViY29kZSwKKwkJCQlfYXJndW1lbnRzLCBfYXR0cmlidXRlcykKKwkJaWYgX2FyZ3VtZW50cy5oYXNfa2V5KCdlcnJuJyk6CisJCQlyYWlzZSBhZXRvb2xzLkVycm9yLCBhZXRvb2xzLmRlY29kZWVycm9yKF9hcmd1bWVudHMpCisJCSMgWFhYWCBPcHRpb25hbGx5IGRlY29kZSByZXN1bHQKKwkJaWYgX2FyZ3VtZW50cy5oYXNfa2V5KCctLS0tJyk6CisJCQlyZXR1cm4gX2FyZ3VtZW50c1snLS0tLSddCisKKwlkZWYgR2V0X25vbnNpbXBsZV9jbGFzc2VzKHNlbGYsIF9ub19vYmplY3Q9Tm9uZSwgX2F0dHJpYnV0ZXM9e30sICoqX2FyZ3VtZW50cyk6CisJCSIiIkdldCBub25zaW1wbGUgY2xhc3NlczogUmV0dXJucyBhbiBhbHBoYWJldGljYWwgbGlzdCBvZiBjbGFzc2VzIHdpdGggbWVtYmVyIGZ1bmN0aW9ucywgYmFzZXMgY2xhc3Nlcywgb3Igc3ViY2xhc3NlcworCQlLZXl3b3JkIGFyZ3VtZW50IF9hdHRyaWJ1dGVzOiBBcHBsZUV2ZW50IGF0dHJpYnV0ZSBkaWN0aW9uYXJ5CisJCVJldHVybnM6IHVuZG9jdW1lbnRlZCwgdHlwZWNvZGUgJ2xpc3QnCisJCSIiIgorCQlfY29kZSA9ICdNTVBSJworCQlfc3ViY29kZSA9ICdOc0NsJworCisJCWlmIF9hcmd1bWVudHM6IHJhaXNlIFR5cGVFcnJvciwgJ05vIG9wdGlvbmFsIGFyZ3MgZXhwZWN0ZWQnCisJCWlmIF9ub19vYmplY3QgIT0gTm9uZTogcmFpc2UgVHlwZUVycm9yLCAnTm8gZGlyZWN0IGFyZyBleHBlY3RlZCcKKworCisJCV9yZXBseSwgX2FyZ3VtZW50cywgX2F0dHJpYnV0ZXMgPSBzZWxmLnNlbmQoX2NvZGUsIF9zdWJjb2RlLAorCQkJCV9hcmd1bWVudHMsIF9hdHRyaWJ1dGVzKQorCQlpZiBfYXJndW1lbnRzLmhhc19rZXkoJ2Vycm4nKToKKwkJCXJhaXNlIGFldG9vbHMuRXJyb3IsIGFldG9vbHMuZGVjb2RlZXJyb3IoX2FyZ3VtZW50cykKKwkJIyBYWFhYIE9wdGlvbmFsbHkgZGVjb2RlIHJlc3VsdAorCQlpZiBfYXJndW1lbnRzLmhhc19rZXkoJy0tLS0nKToKKwkJCXJldHVybiBfYXJndW1lbnRzWyctLS0tJ10KKworCWRlZiBHZXRfbWVtYmVyX2Z1bmN0aW9uX25hbWVzKHNlbGYsIF9vYmplY3QsIF9hdHRyaWJ1dGVzPXt9LCAqKl9hcmd1bWVudHMpOgorCQkiIiJHZXQgbWVtYmVyIGZ1bmN0aW9uIG5hbWVzOiBSZXR1cm5zIGEgbGlzdCBjb250YWluaW5nIHRoZSBuYW1lcyBvZiBhbGwgdGhlIG1lbWJlciBmdW5jdGlvbnMgb2YgYSBjbGFzcyBvYmplY3QKKwkJUmVxdWlyZWQgYXJndW1lbnQ6IG11c3QgYmUgYSBjbGFzcyBvYmplY3QKKwkJS2V5d29yZCBhcmd1bWVudCBfYXR0cmlidXRlczogQXBwbGVFdmVudCBhdHRyaWJ1dGUgZGljdGlvbmFyeQorCQlSZXR1cm5zOiB1bmRvY3VtZW50ZWQsIHR5cGVjb2RlICdsaXN0JworCQkiIiIKKwkJX2NvZGUgPSAnTU1QUicKKwkJX3N1YmNvZGUgPSAnTWJGTicKKworCQlpZiBfYXJndW1lbnRzOiByYWlzZSBUeXBlRXJyb3IsICdObyBvcHRpb25hbCBhcmdzIGV4cGVjdGVkJworCQlfYXJndW1lbnRzWyctLS0tJ10gPSBfb2JqZWN0CisKKworCQlfcmVwbHksIF9hcmd1bWVudHMsIF9hdHRyaWJ1dGVzID0gc2VsZi5zZW5kKF9jb2RlLCBfc3ViY29kZSwKKwkJCQlfYXJndW1lbnRzLCBfYXR0cmlidXRlcykKKwkJaWYgX2FyZ3VtZW50cy5oYXNfa2V5KCdlcnJuJyk6CisJCQlyYWlzZSBhZXRvb2xzLkVycm9yLCBhZXRvb2xzLmRlY29kZWVycm9yKF9hcmd1bWVudHMpCisJCSMgWFhYWCBPcHRpb25hbGx5IGRlY29kZSByZXN1bHQKKwkJaWYgX2FyZ3VtZW50cy5oYXNfa2V5KCctLS0tJyk6CisJCQlyZXR1cm4gX2FyZ3VtZW50c1snLS0tLSddCisKKworY2xhc3MgQWNjZXNzX1BhdGhzKGFldG9vbHMuQ29tcG9uZW50SXRlbSk6CisJIiIiQWNjZXNzIFBhdGhzIC0gQ29udGFpbnMgdGhlIGRlZmluaXRpb25zIG9mIGEgcHJvamVjdLlzIGFjY2VzcyAoc2VhcmNoKSBwYXRocy4iIiIKKwl3YW50ID0gJ1BBVEgnCitjbGFzcyBVc2VyX1BhdGhzKGFldG9vbHMuTlByb3BlcnR5KToKKwkiIiJVc2VyIFBhdGhzIC0gVG8gYWRkIGFuIGFjY2VzcyBwYXRoIGZvciB0aGUgc291cmNlIGZpbGVzLiIiIgorCXdoaWNoID0gJ1BBMDEnCisJd2FudCA9ICdQSW5mJworY2xhc3MgU3lzdGVtX1BhdGhzKGFldG9vbHMuTlByb3BlcnR5KToKKwkiIiJTeXN0ZW0gUGF0aHMgLSBUbyBhZGQgYW4gYWNjZXNzIHBhdGggZm9yIHRoZSBpbmNsdWRlIGZpbGVzLiAoTm90IHN1cHBvcnRlZCBpbiBQYXNjYWwpIiIiCisJd2hpY2ggPSAnUEEwMycKKwl3YW50ID0gJ1BJbmYnCitjbGFzcyBBbHdheXNfRnVsbF9TZWFyY2goYWV0b29scy5OUHJvcGVydHkpOgorCSIiIkFsd2F5cyBGdWxsIFNlYXJjaCAtIFRvIGZvcmNlIHRoZSBjb21waWxlciB0byBzZWFyY2ggZm9yIHN5c3RlbSBpbmNsdWRlcyBsaWtlIGl0IHNlYXJjaGVzIGZvciB1c2VyIGluY2x1ZGVzLiIiIgorCXdoaWNoID0gJ1BBMDInCisJd2FudCA9ICdib29sJworCitjbGFzcyBFZGl0b3IoYWV0b29scy5Db21wb25lbnRJdGVtKToKKwkiIiJFZGl0b3IgLSAiIiIKKwl3YW50ID0gJ0VEVFInCitjbGFzcyBGbGFzaF9kZWxheShhZXRvb2xzLk5Qcm9wZXJ0eSk6CisJIiIiRmxhc2ggZGVsYXkgLSBUaGUgYW1vdW50IG9mIHRpbWUsIGluIHNpeHRpZXRocyBvZiBhIHNlY29uZCwgdGhlIGVkaXRvciBoaWdobGlnaHRzIGEgbWF0Y2hpbmcgYnJhY2tldC4iIiIKKwl3aGljaCA9ICdFRDAxJworCXdhbnQgPSAnbG9uZycKK2NsYXNzIER5bmFtaWNfc2Nyb2xsKGFldG9vbHMuTlByb3BlcnR5KToKKwkiIiJEeW5hbWljIHNjcm9sbCAtIERpc3BsYXkgYSB3aW5kb3e5cyBjb250ZW50cyBhcyB5b3UgbW92ZSB0aGUgc2Nyb2xsIGJveC4iIiIKKwl3aGljaCA9ICdFRDAyJworCXdhbnQgPSAnYm9vbCcKK2NsYXNzIEJhbGFuY2UoYWV0b29scy5OUHJvcGVydHkpOgorCSIiIkJhbGFuY2UgLSBGbGFzaCB0aGUgbWF0Y2hpbmcgb3BlbmluZyBicmFja2V0IHdoZW4geW91IHR5cGUgYSBjbG9zaW5nIGJyYWNrZXQuIiIiCisJd2hpY2ggPSAnRUQwMycKKwl3YW50ID0gJ2Jvb2wnCitjbGFzcyBVc2VfRHJhZ19fMjZfX0Ryb3BfRWRpdGluZyhhZXRvb2xzLk5Qcm9wZXJ0eSk6CisJIiIiVXNlIERyYWcgJiBEcm9wIEVkaXRpbmcgLSBVc2UgRHJhZyAmIERyb3AgdGV4dCBlZGl0aW5nLiIiIgorCXdoaWNoID0gJ0VEMDQnCisJd2FudCA9ICdib29sJworY2xhc3MgU2F2ZV9vbl91cGRhdGUoYWV0b29scy5OUHJvcGVydHkpOgorCSIiIlNhdmUgb24gdXBkYXRlIC0gU2F2ZSBhbGwgZWRpdG9yIHdpbmRvd3MgYXV0b21hdGljYWxseSB3aGVuIHlvdSBjaG9vc2UgdGhlIFVwZGF0ZSBjb21tYW5kLiIiIgorCXdoaWNoID0gJ0VEMDUnCisJd2FudCA9ICdib29sJworY2xhc3MgU29ydF9GdW5jdGlvbl9Qb3B1cChhZXRvb2xzLk5Qcm9wZXJ0eSk6CisJIiIiU29ydCBGdW5jdGlvbiBQb3B1cCAtICIiIgorCXdoaWNoID0gJ0VEMDYnCisJd2FudCA9ICdib29sJworY2xhc3MgVXNlX011bHRpcGxlX1VuZG8oYWV0b29scy5OUHJvcGVydHkpOgorCSIiIlVzZSBNdWx0aXBsZSBVbmRvIC0gIiIiCisJd2hpY2ggPSAnRUQwNycKKwl3YW50ID0gJ2Jvb2wnCitjbGFzcyBSZW1lbWJlcl9mb250KGFldG9vbHMuTlByb3BlcnR5KToKKwkiIiJSZW1lbWJlciBmb250IC0gRGlzcGxheSBhIHNvdXJjZSBmaWxlIHdpdGggaXRzIG93biBmb250IHNldHRpbmdzLiIiIgorCXdoaWNoID0gJ0VEMDgnCisJd2FudCA9ICdib29sJworY2xhc3MgUmVtZW1iZXJfc2VsZWN0aW9uKGFldG9vbHMuTlByb3BlcnR5KToKKwkiIiJSZW1lbWJlciBzZWxlY3Rpb24gLSBSZXN0b3JlIHRoZSBwcmV2aW91cyBzZWxlY3Rpb24gaW4gYSBmaWxlIHdoZW4geW91IG9wZW4gaXQuIiIiCisJd2hpY2ggPSAnRUQwOScKKwl3YW50ID0gJ2Jvb2wnCitjbGFzcyBSZW1lbWJlcl93aW5kb3coYWV0b29scy5OUHJvcGVydHkpOgorCSIiIlJlbWVtYmVyIHdpbmRvdyAtIFJlc3RvcmUgdGhlIGxhc3Qgc2l6ZSBhbmQgcG9zaXRpb24gZm9yIGEgc291cmNlIGZpbGUgd2luZG93IHdoZW4geW91IG9wZW4gaXQuIiIiCisJd2hpY2ggPSAnRUQxMCcKKwl3YW50ID0gJ2Jvb2wnCitjbGFzcyBNYWluX1RleHRfQ29sb3IoYWV0b29scy5OUHJvcGVydHkpOgorCSIiIk1haW4gVGV4dCBDb2xvciAtIE1haW4sIGRlZmF1bHQsIGNvbG9yIGZvciB0ZXh0LiIiIgorCXdoaWNoID0gJ0VEMTInCisJd2FudCA9ICdjUkdCJworY2xhc3MgQmFja2dyb3VuZF9Db2xvcihhZXRvb2xzLk5Qcm9wZXJ0eSk6CisJIiIiQmFja2dyb3VuZCBDb2xvciAtIENvbG9yIG9mIHRoZSBiYWNrZ3JvdW5kIG9mIGVkaXRvciB3aW5kb3dzLiIiIgorCXdoaWNoID0gJ0VEMTMnCisJd2FudCA9ICdjUkdCJworY2xhc3MgQ29udGV4dF9Qb3B1cF9EZWxheShhZXRvb2xzLk5Qcm9wZXJ0eSk6CisJIiIiQ29udGV4dCBQb3B1cCBEZWxheSAtIFRoZSBhbW91bnQgb2YgdGltZSwgaW4gc2l4dGlldGhzIG9mIGEgc2Vjb25kLCBiZWZvcmUgdGhlIGNvbnRleHQgcG9wdXAgaXMgZGlzcGxheWVkIGlmIHlvdSBjbGljayBhbmQgaG9sZCBvbiBhIGJyb3dzZXIgc3ltYm9sLiIiIgorCXdoaWNoID0gJ0VEMTQnCisJd2FudCA9ICdib29sJworCitjbGFzcyBTeW50YXhfQ29sb3JpbmcoYWV0b29scy5Db21wb25lbnRJdGVtKToKKwkiIiJTeW50YXggQ29sb3JpbmcgLSAiIiIKKwl3YW50ID0gJ1NOVFgnCitjbGFzcyBTeW50YXhfY29sb3JpbmcoYWV0b29scy5OUHJvcGVydHkpOgorCSIiIlN5bnRheCBjb2xvcmluZyAtIE1hcmsga2V5d29yZHMgYW5kIGNvbW1lbnRzIHdpdGggY29sb3IuIiIiCisJd2hpY2ggPSAnR0gwMScKKwl3YW50ID0gJ2Jvb2wnCitjbGFzcyBDb21tZW50X2NvbG9yKGFldG9vbHMuTlByb3BlcnR5KToKKwkiIiJDb21tZW50IGNvbG9yIC0gVGhlIGNvbG9yIGZvciBjb21tZW50cy4iIiIKKwl3aGljaCA9ICdHSDAyJworCXdhbnQgPSAnY1JHQicKK2NsYXNzIEtleXdvcmRfY29sb3IoYWV0b29scy5OUHJvcGVydHkpOgorCSIiIktleXdvcmQgY29sb3IgLSBUaGUgY29sb3IgZm9yIGxhbmd1YWdlIGtleXdvcmRzLiIiIgorCXdoaWNoID0gJ0dIMDMnCisJd2FudCA9ICdjUkdCJworY2xhc3MgU3RyaW5nX2NvbG9yKGFldG9vbHMuTlByb3BlcnR5KToKKwkiIiJTdHJpbmcgY29sb3IgLSBUaGUgY29sb3IgZm9yIHN0cmluZ3MuIiIiCisJd2hpY2ggPSAnR0gwNCcKKwl3YW50ID0gJ2NSR0InCitjbGFzcyBDdXN0b21fY29sb3JfMShhZXRvb2xzLk5Qcm9wZXJ0eSk6CisJIiIiQ3VzdG9tIGNvbG9yIDEgLSBUaGUgY29sb3IgZm9yIHRoZSBmaXJzdCBzZXQgb2YgY3VzdG9tIGtleXdvcmRzLiIiIgorCXdoaWNoID0gJ0dIMDUnCisJd2FudCA9ICdjUkdCJworY2xhc3MgQ3VzdG9tX2NvbG9yXzIoYWV0b29scy5OUHJvcGVydHkpOgorCSIiIkN1c3RvbSBjb2xvciAyIC0gVGhlIGNvbG9yIGZvciB0aGUgc2Vjb25kIHNldCBjdXN0b20ga2V5d29yZHMuIiIiCisJd2hpY2ggPSAnR0gwNicKKwl3YW50ID0gJ2NSR0InCitjbGFzcyBDdXN0b21fY29sb3JfMyhhZXRvb2xzLk5Qcm9wZXJ0eSk6CisJIiIiQ3VzdG9tIGNvbG9yIDMgLSBUaGUgY29sb3IgZm9yIHRoZSB0aGlyZCBzZXQgb2YgY3VzdG9tIGtleXdvcmRzLiIiIgorCXdoaWNoID0gJ0dIMDcnCisJd2FudCA9ICdjUkdCJworY2xhc3MgQ3VzdG9tX2NvbG9yXzQoYWV0b29scy5OUHJvcGVydHkpOgorCSIiIkN1c3RvbSBjb2xvciA0IC0gVGhlIGNvbG9yIGZvciB0aGUgZm91cnRoIHNldCBvZiBjdXN0b20ga2V5d29yZHMuIiIiCisJd2hpY2ggPSAnR0gwOCcKKwl3YW50ID0gJ2NSR0InCisKK2NsYXNzIEN1c3RvbV9LZXl3b3JkcyhhZXRvb2xzLkNvbXBvbmVudEl0ZW0pOgorCSIiIkN1c3RvbSBLZXl3b3JkcyAtICIiIgorCXdhbnQgPSAnQ1VLVycKK2NsYXNzIEN1c3RvbV9jb2xvcl8xKGFldG9vbHMuTlByb3BlcnR5KToKKwkiIiJDdXN0b20gY29sb3IgMSAtIFRoZSBjb2xvciBmb3IgdGhlIGZpcnN0IHNldCBvZiBjdXN0b20ga2V5d29yZHMuIiIiCisJd2hpY2ggPSAnS1cwMScKKwl3YW50ID0gJ2NSR0InCitjbGFzcyBDdXN0b21fY29sb3JfMihhZXRvb2xzLk5Qcm9wZXJ0eSk6CisJIiIiQ3VzdG9tIGNvbG9yIDIgLSBUaGUgY29sb3IgZm9yIHRoZSBzZWNvbmQgc2V0IGN1c3RvbSBrZXl3b3Jkcy4iIiIKKwl3aGljaCA9ICdLVzAyJworCXdhbnQgPSAnY1JHQicKK2NsYXNzIEN1c3RvbV9jb2xvcl8zKGFldG9vbHMuTlByb3BlcnR5KToKKwkiIiJDdXN0b20gY29sb3IgMyAtIFRoZSBjb2xvciBmb3IgdGhlIHRoaXJkIHNldCBvZiBjdXN0b20ga2V5d29yZHMuIiIiCisJd2hpY2ggPSAnS1cwMycKKwl3YW50ID0gJ2NSR0InCitjbGFzcyBDdXN0b21fY29sb3JfNChhZXRvb2xzLk5Qcm9wZXJ0eSk6CisJIiIiQ3VzdG9tIGNvbG9yIDQgLSBUaGUgY29sb3IgZm9yIHRoZSBmb3VydGggc2V0IG9mIGN1c3RvbSBrZXl3b3Jkcy4iIiIKKwl3aGljaCA9ICdLVzA0JworCXdhbnQgPSAnY1JHQicKKworY2xhc3MgQnJvd3Nlcl9Db2xvcmluZyhhZXRvb2xzLkNvbXBvbmVudEl0ZW0pOgorCSIiIkJyb3dzZXIgQ29sb3JpbmcgLSBDb2xvcnMgZm9yIEJyb3dzZXIgc3ltYm9scy4iIiIKKwl3YW50ID0gJ0JSS1cnCitjbGFzcyBCcm93c2VyX0tleXdvcmRzKGFldG9vbHMuTlByb3BlcnR5KToKKwkiIiJCcm93c2VyIEtleXdvcmRzIC0gTWFyayBCcm93c2VyIHN5bWJvbHMgd2l0aCBjb2xvci4iIiIKKwl3aGljaCA9ICdCVzAwJworCXdhbnQgPSAnYm9vbCcKK2NsYXNzIENsYXNzZXNfQ29sb3IoYWV0b29scy5OUHJvcGVydHkpOgorCSIiIkNsYXNzZXMgQ29sb3IgLSBUaGUgY29sb3IgZm9yIGNsYXNzZXMuIiIiCisJd2hpY2ggPSAnQlcwMScKKwl3YW50ID0gJ2NSR0InCitjbGFzcyBDb25zdGFudHNfQ29sb3IoYWV0b29scy5OUHJvcGVydHkpOgorCSIiIkNvbnN0YW50cyBDb2xvciAtIFRoZSBjb2xvciBmb3IgY29uc3RhbnRzLiIiIgorCXdoaWNoID0gJ0JXMDInCisJd2FudCA9ICdjUkdCJworY2xhc3MgRW51bXNfQ29sb3IoYWV0b29scy5OUHJvcGVydHkpOgorCSIiIkVudW1zIENvbG9yIC0gVGhlIGNvbG9yIGZvciBlbnVtcy4iIiIKKwl3aGljaCA9ICdCVzAzJworCXdhbnQgPSAnY1JHQicKK2NsYXNzIEZ1bmN0aW9uc19Db2xvcihhZXRvb2xzLk5Qcm9wZXJ0eSk6CisJIiIiRnVuY3Rpb25zIENvbG9yIC0gU2V0IGNvbG9yIGZvciBmdW5jdGlvbnMuIiIiCisJd2hpY2ggPSAnQlcwNCcKKwl3YW50ID0gJ2NSR0InCitjbGFzcyBHbG9iYWxzX0NvbG9yKGFldG9vbHMuTlByb3BlcnR5KToKKwkiIiJHbG9iYWxzIENvbG9yIC0gVGhlIGNvbG9yIGZvciBnbG9iYWxzIiIiCisJd2hpY2ggPSAnQlcwNScKKwl3YW50ID0gJ2NSR0InCitjbGFzcyBNYWNyb3NfQ29sb3IoYWV0b29scy5OUHJvcGVydHkpOgorCSIiIk1hY3JvcyBDb2xvciAtIFRoZSBjb2xvciBmb3IgbWFjcm9zLiIiIgorCXdoaWNoID0gJ0JXMDYnCisJd2FudCA9ICdjUkdCJworY2xhc3MgVGVtcGxhdGVzX0NvbG9yKGFldG9vbHMuTlByb3BlcnR5KToKKwkiIiJUZW1wbGF0ZXMgQ29sb3IgLSBTZXQgY29sb3IgZm9yIHRlbXBsYXRlcy4iIiIKKwl3aGljaCA9ICdCVzA3JworCXdhbnQgPSAnY1JHQicKK2NsYXNzIFR5cGVkZWZzX0NvbG9yKGFldG9vbHMuTlByb3BlcnR5KToKKwkiIiJUeXBlZGVmcyBDb2xvciAtIFRoZSBjb2xvciBmb3IgdHlwZWRlZnMuIiIiCisJd2hpY2ggPSAnQlcwOCcKKwl3YW50ID0gJ2NSR0InCisKK2NsYXNzIEVycm9yX0luZm9ybWF0aW9uKGFldG9vbHMuQ29tcG9uZW50SXRlbSk6CisJIiIiRXJyb3IgSW5mb3JtYXRpb24gLSBEZXNjcmliZXMgYSBzaW5nbGUgZXJyb3Igb3Igd2FybmluZyBmcm9tIHRoZSBjb21waWxlciBvciB0aGUgbGlua2VyLiIiIgorCXdhbnQgPSAnRXJyTScKK2NsYXNzIGtpbmQoYWV0b29scy5OUHJvcGVydHkpOgorCSIiImtpbmQgLSBUaGUgdHlwZSBvZiBlcnJvciBvciB3YXJuaW5nLiIiIgorCXdoaWNoID0gJ0VyclQnCisJd2FudCA9ICdFcnJUJworY2xhc3MgbWVzc2FnZShhZXRvb2xzLk5Qcm9wZXJ0eSk6CisJIiIibWVzc2FnZSAtIFRoZSBlcnJvciBvciB3YXJuaW5nIG1lc3NhZ2UuIiIiCisJd2hpY2ggPSAnRXJyUycKKwl3YW50ID0gJ1RFWFQnCitjbGFzcyBkaXNrX2ZpbGUoYWV0b29scy5OUHJvcGVydHkpOgorCSIiImRpc2sgZmlsZSAtIFRoZSBmaWxlIHdoZXJlIHRoZSBlcnJvciBvY2N1cnJlZC4gIE1heSBub3QgYmUgcmV0dXJuZWQgZm9yIGNlcnRhaW4ga2luZHMgb2YgZXJyb3JzIChlZywgbGluayBlcnJvcnMpLiIiIgorCXdoaWNoID0gJ2ZpbGUnCisJd2FudCA9ICdmc3MgJworY2xhc3MgbGluZU51bWJlcihhZXRvb2xzLk5Qcm9wZXJ0eSk6CisJIiIibGluZU51bWJlciAtIFRoZSBsaW5lIGluIHRoZSBmaWxlIHdoZXJlIHRoZSBlcnJvciBvY2N1cnJlZC4gIE1heSBub3QgYmUgcmV0dXJuZWQgZm9yIGNlcnRhaW4ga2luZHMgb2YgZXJyb3JzIChlZywgbGluayBlcnJvcnMpLiIiIgorCXdoaWNoID0gJ0VyckwnCisJd2FudCA9ICdsb25nJworCitjbGFzcyBFeHRyYXMoYWV0b29scy5Db21wb25lbnRJdGVtKToKKwkiIiJFeHRyYXMgLSAiIiIKKwl3YW50ID0gJ0dYVFInCitjbGFzcyBDb21wbGV0aW9uX3NvdW5kKGFldG9vbHMuTlByb3BlcnR5KToKKwkiIiJDb21wbGV0aW9uIHNvdW5kIC0gUGxheSBhIHNvdW5kIHdoZW4gZmluaXNoZWQgYSBCcmluZyBVcCBUbyBEYXRlIG9yIE1ha2UgY29tbWFuZC4iIiIKKwl3aGljaCA9ICdFWDAxJworCXdhbnQgPSAnYm9vbCcKK2NsYXNzIFN1Y2Nlc3Nfc291bmQoYWV0b29scy5OUHJvcGVydHkpOgorCSIiIlN1Y2Nlc3Mgc291bmQgLSBUaGUgc291bmQgQ29kZVdhcnJpb3IgcGxheXMgd2hlbiBpdCBzdWNjZXNzZnVsbHkgZmluaXNoZXMgYSBCcmluZyBVcCBUbyBEYXRlIG9yIE1ha2UgY29tbWFuZC4iIiIKKwl3aGljaCA9ICdFWDAyJworCXdhbnQgPSAnVEVYVCcKK2NsYXNzIEZhaWx1cmVfc291bmQoYWV0b29scy5OUHJvcGVydHkpOgorCSIiIkZhaWx1cmUgc291bmQgLSBUaGUgc291bmQgQ29kZVdhcnJpb3IgcGxheXMgd2hlbiBpdCBjYW5ub3QgZmluaXNoIGEgQnJpbmcgVXAgVG8gRGF0ZSBvciBNYWtlIGNvbW1hbmQuIiIiCisJd2hpY2ggPSAnRVgwMycKKwl3YW50ID0gJ1RFWFQnCitjbGFzcyBGdWxsX3NjcmVlbl96b29tKGFldG9vbHMuTlByb3BlcnR5KToKKwkiIiJGdWxsIHNjcmVlbiB6b29tIC0gWm9vbSB3aW5kb3dzIHRvIHRoZSBmdWxsIHNjcmVlbiB3aWR0aC4iIiIKKwl3aGljaCA9ICdFWDA3JworCXdhbnQgPSAnYm9vbCcKK2NsYXNzIEV4dGVybmFsX3JlZmVyZW5jZShhZXRvb2xzLk5Qcm9wZXJ0eSk6CisJIiIiRXh0ZXJuYWwgcmVmZXJlbmNlIC0gV2hpY2ggb24tbGluZSBmdW5jdGlvbiByZWZlcmVuY2UgdG8gdXNlLiIiIgorCXdoaWNoID0gJ0VYMDgnCisJd2FudCA9ICdSZWZQJworY2xhc3MgVXNlX1NjcmlwdF9NZW51KGFldG9vbHMuTlByb3BlcnR5KToKKwkiIiJVc2UgU2NyaXB0IE1lbnUgLSBDb250cm9scyB0aGUgdXNlIG9mIHRoZSBBcHBsZVNjcmlwdCBtZW51IiIiCisJd2hpY2ggPSAnRVgxMicKKwl3YW50ID0gJ2Jvb2wnCitjbGFzcyBVc2VfRWRpdG9yX0V4dGVuc2lvbnMoYWV0b29scy5OUHJvcGVydHkpOgorCSIiIlVzZSBFZGl0b3IgRXh0ZW5zaW9ucyAtIENvbnRyb2xzIHRoZSB1c2Ugb2YgdGhlIEVkaXRvciBFeHRlbnNpb25zIG1lbnUiIiIKKwl3aGljaCA9ICdFWDEwJworCXdhbnQgPSAnYm9vbCcKK2NsYXNzIFVzZV9FeHRlcm5hbF9FZGl0b3IoYWV0b29scy5OUHJvcGVydHkpOgorCSIiIlVzZSBFeHRlcm5hbCBFZGl0b3IgLSBDb250cm9scyB3aGV0aGVyIENvZGVXYXJyaW9yIHVzZXMgaXRzIG93biBpbnRlZ3JhdGVkIGVkaXRvciBvciBhbiBleHRlcm5hbCBhcHBsaWNhdGlvbiBmb3IgZWRpdGluZyB0ZXh0IGZpbGVzLiIiIgorCXdoaWNoID0gJ0VYMTEnCisJd2FudCA9ICdib29sJworY2xhc3MgSG9ub3JfUHJvamVjdG9yX1N0YXRlX2Zvcl9Qcm9qZWN0cyhhZXRvb2xzLk5Qcm9wZXJ0eSk6CisJIiIiSG9ub3IgUHJvamVjdG9yIFN0YXRlIGZvciBQcm9qZWN0cyAtIENvbnRyb2xzIHdoZXRoZXIgQ29kZVdhcnJpb3Igb3BlbnMgZmlsZXMgc2V0IHRvIHJlYWQtb25seSBieSBQcm9qZWN0b3IuIiIiCisJd2hpY2ggPSAnRVgxMycKKwl3YW50ID0gJ2Jvb2wnCisKK2NsYXNzIEJ1aWxkX0V4dHJhcyhhZXRvb2xzLkNvbXBvbmVudEl0ZW0pOgorCSIiIkJ1aWxkIEV4dHJhcyAtICIiIgorCXdhbnQgPSAnTFhUUicKK2NsYXNzIEJyb3dzZXJfYWN0aXZlKGFldG9vbHMuTlByb3BlcnR5KToKKwkiIiJCcm93c2VyIGFjdGl2ZSAtIEFsbG93IHRoZSBjb2xsZWN0aW9uIG9mIGJyb3dzZXIgaW5mb3JtYXRpb24uIiIiCisJd2hpY2ggPSAnRVgwOScKKwl3YW50ID0gJ2Jvb2wnCitjbGFzcyBNb2RpZmljYXRpb25fZGF0ZV9jYWNoaW5nKGFldG9vbHMuTlByb3BlcnR5KToKKwkiIiJNb2RpZmljYXRpb24gZGF0ZSBjYWNoaW5nIC0gIiIiCisJd2hpY2ggPSAnRVgwNCcKKwl3YW50ID0gJ2Jvb2wnCitjbGFzcyBNdWx0aXByb2Nlc3NpbmdfQ29tcGlsYXRpb24oYWV0b29scy5OUHJvcGVydHkpOgorCSIiIk11bHRpcHJvY2Vzc2luZyBDb21waWxhdGlvbiAtICIiIgorCXdoaWNoID0gJ0VYMTQnCisJd2FudCA9ICdib29sJworY2xhc3MgU2hvd19Ub29sU2VydmVyX01lbnUoYWV0b29scy5OUHJvcGVydHkpOgorCSIiIlNob3cgVG9vbFNlcnZlciBNZW51IC0gIiIiCisJd2hpY2ggPSAnRVgxOCcKKwl3YW50ID0gJ2Jvb2wnCitjbGFzcyBFbmFibGVfQXV0b21hdGljX1Rvb2xiYXJfSGVscChhZXRvb2xzLk5Qcm9wZXJ0eSk6CisJIiIiRW5hYmxlIEF1dG9tYXRpYyBUb29sYmFyIEhlbHAgLSAiIiIKKwl3aGljaCA9ICdFWDE5JworCXdhbnQgPSAnYm9vbCcKK2NsYXNzIEluY2x1ZGVfRmlsZV9DYWNoZV9TaXplX18yOF9LXzI5XyhhZXRvb2xzLk5Qcm9wZXJ0eSk6CisJIiIiSW5jbHVkZSBGaWxlIENhY2hlIFNpemUgKEspIC0gIiIiCisJd2hpY2ggPSAnRVgxNScKKwl3YW50ID0gJ2xvbmcnCitjbGFzcyBSZWNlbnRfRG9jdW1lbnRzKGFldG9vbHMuTlByb3BlcnR5KToKKwkiIiJSZWNlbnQgRG9jdW1lbnRzIC0gIiIiCisJd2hpY2ggPSAnRVgxNicKKwl3YW50ID0gJ3Nob3InCitjbGFzcyBSZWNlbnRfUHJvamVjdHMoYWV0b29scy5OUHJvcGVydHkpOgorCSIiIlJlY2VudCBQcm9qZWN0cyAtICIiIgorCXdoaWNoID0gJ0VYMTcnCisJd2FudCA9ICdzaG9yJworCitjbGFzcyBGaWxlX01hcHBpbmdzKGFldG9vbHMuQ29tcG9uZW50SXRlbSk6CisJIiIiRmlsZSBNYXBwaW5ncyAtIE1hcHBpbmdzIG9mIGV4dGVuc2lvbnMgJiBmaWxlIHR5cGVzIHRvIGNvbXBpbGVycyIiIgorCXdhbnQgPSAnRkxNUCcKK2NsYXNzIG1hcHBpbmdzKGFldG9vbHMuTlByb3BlcnR5KToKKwkiIiJtYXBwaW5ncyAtICIiIgorCXdoaWNoID0gJ0ZNcHMnCisJd2FudCA9ICdGTWFwJworCitjbGFzcyBGb250KGFldG9vbHMuQ29tcG9uZW50SXRlbSk6CisJIiIiRm9udCAtICIiIgorCXdhbnQgPSAnbUZOVCcKK2NsYXNzIEF1dG9faW5kZW50KGFldG9vbHMuTlByb3BlcnR5KToKKwkiIiJBdXRvIGluZGVudCAtIEluZGVudCBuZXcgbGluZXMgYXV0b21hdGljYWxseS4iIiIKKwl3aGljaCA9ICdGTjAxJworCXdhbnQgPSAnYm9vbCcKK2NsYXNzIFRhYl9zaXplKGFldG9vbHMuTlByb3BlcnR5KToKKwkiIiJUYWIgc2l6ZSAtICIiIgorCXdoaWNoID0gJ0ZOMDInCisJd2FudCA9ICdzaG9yJworY2xhc3MgVGV4dF9mb250KGFldG9vbHMuTlByb3BlcnR5KToKKwkiIiJUZXh0IGZvbnQgLSBUaGUgZm9udCB1c2VkIGluIGVkaXRpbmcgd2luZG93cy4iIiIKKwl3aGljaCA9ICdwdHhmJworCXdhbnQgPSAnVEVYVCcKK2NsYXNzIFRleHRfc2l6ZShhZXRvb2xzLk5Qcm9wZXJ0eSk6CisJIiIiVGV4dCBzaXplIC0gVGhlIHNpemUgb2YgdGhlIHRleHQgaW4gYW4gZWRpdGluZyB3aW5kb3cuIiIiCisJd2hpY2ggPSAncHRwcycKKwl3YW50ID0gJ3Nob3InCisKK2NsYXNzIEZ1bmN0aW9uX0luZm9ybWF0aW9uKGFldG9vbHMuQ29tcG9uZW50SXRlbSk6CisJIiIiRnVuY3Rpb24gSW5mb3JtYXRpb24gLSBEZXNjcmliZXMgdGhlIGxvY2F0aW9uIG9mIGFueSBmdW5jdGlvbiBvciBnbG9iYWwgZGF0YSBkZWZpbml0aW9uIHdpdGhpbiB0aGUgY3VycmVudCBwcm9qZWN0LiIiIgorCXdhbnQgPSAnRkRlZicKKyMgcmVwZWF0ZWQgcHJvcGVydHkgZGlza19maWxlIFRoZSBsb2NhdGlvbiBvbiBkaXNrIG9mIHRoZSBmaWxlIGNvbnRhaW5pbmcgdGhlIGRlZmluaXRpb24uCisjIHJlcGVhdGVkIHByb3BlcnR5IGxpbmVOdW1iZXIgVGhlIGxpbmUgbnVtYmVyIHdoZXJlIHRoZSBkZWZpbml0aW9uIGJlZ2lucy4KKworY2xhc3MgUGF0aF9JbmZvcm1hdGlvbihhZXRvb2xzLkNvbXBvbmVudEl0ZW0pOgorCSIiIlBhdGggSW5mb3JtYXRpb24gLSBDb250YWlucyBhbGwgb2YgdGhlIHBhcmFtZXRlcnMgdGhhdCBkZXNjcmliZSBhbiBhY2Nlc3MgcGF0aC4iIiIKKwl3YW50ID0gJ1BJbmYnCitjbGFzcyBuYW1lKGFldG9vbHMuTlByb3BlcnR5KToKKwkiIiJuYW1lIC0gVGhlIGFjdHVhbCBwYXRoIG5hbWUuIiIiCisJd2hpY2ggPSAncG5hbScKKwl3YW50ID0gJ1RFWFQnCitjbGFzcyByZWN1cnNpdmUoYWV0b29scy5OUHJvcGVydHkpOgorCSIiInJlY3Vyc2l2ZSAtIFdpbGwgdGhlIHBhdGggYmUgc2VhcmNoZWQgcmVjdXJzaXZlbHk/ICAoRGVmYXVsdCBpcyB0cnVlKSIiIgorCXdoaWNoID0gJ1JlY3UnCisJd2FudCA9ICdib29sJworY2xhc3Mgb3JpZ2luKGFldG9vbHMuTlByb3BlcnR5KToKKwkiIiJvcmlnaW4gLSAiIiIKKwl3aGljaCA9ICdPcmlnJworCXdhbnQgPSAnUFBybScKKworY2xhc3MgUHJvamVjdEZpbGUoYWV0b29scy5Db21wb25lbnRJdGVtKToKKwkiIiJQcm9qZWN0RmlsZSAtIEEgZmlsZSBjb250YWluZWQgaW4gYSBwcm9qZWN0IiIiCisJd2FudCA9ICdTcmNGJworY2xhc3MgZmlsZXR5cGUoYWV0b29scy5OUHJvcGVydHkpOgorCSIiImZpbGV0eXBlIC0gV2hhdCBraW5kIG9mIGZpbGUgaXMgdGhpcyA/IiIiCisJd2hpY2ggPSAnU3JjVCcKKwl3YW50ID0gJ1NyY1QnCisjIHJlcGVhdGVkIHByb3BlcnR5IG5hbWUgVGhlIGZpbGW5cyBuYW1lCisjIHJlcGVhdGVkIHByb3BlcnR5IGRpc2tfZmlsZSBUaGUgZmlsZblzIGxvY2F0aW9uIG9uIGRpc2sKK2NsYXNzIGNvZGVzaXplKGFldG9vbHMuTlByb3BlcnR5KToKKwkiIiJjb2Rlc2l6ZSAtIFRoZSBzaXplIG9mIHRoaXMgZmlsZblzIGNvZGUuIiIiCisJd2hpY2ggPSAnQ1NpeicKKwl3YW50ID0gJ2xvbmcnCitjbGFzcyBkYXRhc2l6ZShhZXRvb2xzLk5Qcm9wZXJ0eSk6CisJIiIiZGF0YXNpemUgLSBUaGUgc2l6ZSBvZiB0aGlzIGZpbGW5cyBkYXRhLiIiIgorCXdoaWNoID0gJ0RTaXonCisJd2FudCA9ICdsb25nJworY2xhc3MgdXBfdG9fZGF0ZShhZXRvb2xzLk5Qcm9wZXJ0eSk6CisJIiIidXAgdG8gZGF0ZSAtIEhhcyB0aGUgZmlsZSBiZWVuIGNvbXBpbGVkIHNpbmNlIGl0cyBsYXN0IG1vZGlmaWNhdGlvbiA/IiIiCisJd2hpY2ggPSAnVXBURCcKKwl3YW50ID0gJ2Jvb2wnCitjbGFzcyBzeW1ib2xzKGFldG9vbHMuTlByb3BlcnR5KToKKwkiIiJzeW1ib2xzIC0gQXJlIGRlYnVnZ2luZyBzeW1ib2xzIGdlbmVyYXRlZCBmb3IgdGhpcyBmaWxlID8iIiIKKwl3aGljaCA9ICdTeW1HJworCXdhbnQgPSAnYm9vbCcKK2NsYXNzIHdlYWtfbGluayhhZXRvb2xzLk5Qcm9wZXJ0eSk6CisJIiIid2VhayBsaW5rIC0gSXMgdGhpcyBmaWxlIGltcG9ydGVkIHdlYWtseSBpbnRvIHRoZSBwcm9qZWN0ID8gW1Bvd2VyUEMgb25seV0iIiIKKwl3aGljaCA9ICdXZWFrJworCXdhbnQgPSAnYm9vbCcKK2NsYXNzIGluaXRpYWxpemVfYmVmb3JlKGFldG9vbHMuTlByb3BlcnR5KToKKwkiIiJpbml0aWFsaXplIGJlZm9yZSAtIEludGlhaWxpemUgdGhlIHNoYXJlZCBsaWJyYXJ5IGJlZm9yZSB0aGUgbWFpbiBhcHBsaWNhdGlvbi4iIiIKKwl3aGljaCA9ICdCZm9yJworCXdhbnQgPSAnYm9vbCcKK2NsYXNzIGluY2x1ZGVzKGFldG9vbHMuTlByb3BlcnR5KToKKwkiIiJpbmNsdWRlcyAtICIiIgorCXdoaWNoID0gJ0luY0YnCisJd2FudCA9ICdmc3MgJworCitjbGFzcyBTZWdtZW50KGFldG9vbHMuQ29tcG9uZW50SXRlbSk6CisJIiIiU2VnbWVudCAtIEEgc2VnbWVudCBvciBncm91cCBpbiB0aGUgcHJvamVjdCIiIgorCXdhbnQgPSAnU2VnICcKKyMgcmVwZWF0ZWQgcHJvcGVydHkgbmFtZSAKK2NsYXNzIGZpbGVjb3VudChhZXRvb2xzLk5Qcm9wZXJ0eSk6CisJIiIiZmlsZWNvdW50IC0gIiIiCisJd2hpY2ggPSAnTnVtRicKKwl3YW50ID0gJ3Nob3InCitjbGFzcyBwcmVsb2FkZWQoYWV0b29scy5OUHJvcGVydHkpOgorCSIiInByZWxvYWRlZCAtIElzIHRoZSBzZWdtZW50IHByZWxvYWRlZCA/IFs2OEsgb25seV0iIiIKKwl3aGljaCA9ICdQcmVsJworCXdhbnQgPSAnYm9vbCcKK2NsYXNzIHByb3RlY3RlZChhZXRvb2xzLk5Qcm9wZXJ0eSk6CisJIiIicHJvdGVjdGVkIC0gSXMgdGhlIHNlZ21lbnQgcHJvdGVjdGVkID8gWzY4SyBvbmx5XSIiIgorCXdoaWNoID0gJ1Byb3QnCisJd2FudCA9ICdib29sJworY2xhc3MgbG9ja2VkKGFldG9vbHMuTlByb3BlcnR5KToKKwkiIiJsb2NrZWQgLSBJcyB0aGUgc2VnbWVudCBsb2NrZWQgPyBbNjhLIG9ubHldIiIiCisJd2hpY2ggPSAnUExjaycKKwl3YW50ID0gJ2Jvb2wnCitjbGFzcyBwdXJnZWFibGUoYWV0b29scy5OUHJvcGVydHkpOgorCSIiInB1cmdlYWJsZSAtIElzIHRoZSBzZWdtZW50IHB1cmdlYWJsZSA/IFs2OEsgb25seV0iIiIKKwl3aGljaCA9ICdQdXJnJworCXdhbnQgPSAnYm9vbCcKK2NsYXNzIHN5c3RlbV9oZWFwKGFldG9vbHMuTlByb3BlcnR5KToKKwkiIiJzeXN0ZW0gaGVhcCAtIElzIHRoZSBzZWdtZW50IGxvYWRlZCBpbnRvIHRoZSBzeXN0ZW0gaGVhcCA/IFs2OEsgb25seV0iIiIKKwl3aGljaCA9ICdTeXNIJworCXdhbnQgPSAnYm9vbCcKKworY2xhc3MgVGFyZ2V0X1NldHRpbmdzKGFldG9vbHMuQ29tcG9uZW50SXRlbSk6CisJIiIiVGFyZ2V0IFNldHRpbmdzIC0gQ29udGFpbnMgdGhlIGRlZmluaXRpb25zIG9mIGEgcHJvamVjdLlzIHRhcmdldC4iIiIKKwl3YW50ID0gJ1RBUkcnCitjbGFzcyBMaW5rZXIoYWV0b29scy5OUHJvcGVydHkpOgorCSIiIkxpbmtlciAtIFRoZSBuYW1lIG9mIHRoZSBjdXJyZW50IGxpbmtlci4iIiIKKwl3aGljaCA9ICdUQTAxJworCXdhbnQgPSAnVEVYVCcKK2NsYXNzIFBvc3RfTGlua2VyKGFldG9vbHMuTlByb3BlcnR5KToKKwkiIiJQb3N0IExpbmtlciAtICIiIgorCXdoaWNoID0gJ1RBMDknCisJd2FudCA9ICdURVhUJworY2xhc3MgVGFyZ2V0X05hbWUoYWV0b29scy5OUHJvcGVydHkpOgorCSIiIlRhcmdldCBOYW1lIC0gIiIiCisJd2hpY2ggPSAnVEExMCcKKwl3YW50ID0gJ1RFWFQnCitjbGFzcyBPdXRwdXRfRGlyZWN0b3J5X1BhdGgoYWV0b29scy5OUHJvcGVydHkpOgorCSIiIk91dHB1dCBEaXJlY3RvcnkgUGF0aCAtICIiIgorCXdoaWNoID0gJ1RBMTEnCisJd2FudCA9ICdURVhUJworY2xhc3MgT3V0cHV0X0RpcmVjdG9yeV9PcmlnaW4oYWV0b29scy5OUHJvcGVydHkpOgorCSIiIk91dHB1dCBEaXJlY3RvcnkgT3JpZ2luIC0gIiIiCisJd2hpY2ggPSAnVEExMicKKwl3YW50ID0gJ1BQcm0nCisKK2NsYXNzIEZpbGVfTWFwcGluZyhhZXRvb2xzLkNvbXBvbmVudEl0ZW0pOgorCSIiIkZpbGUgTWFwcGluZyAtICIiIgorCXdhbnQgPSAnRk1hcCcKK2NsYXNzIEZpbGVfVHlwZShhZXRvb2xzLk5Qcm9wZXJ0eSk6CisJIiIiRmlsZSBUeXBlIC0gIiIiCisJd2hpY2ggPSAnUFIwNCcKKwl3YW50ID0gJ1RFWFQnCitjbGFzcyBFeHRlbnNpb24oYWV0b29scy5OUHJvcGVydHkpOgorCSIiIkV4dGVuc2lvbiAtICIiIgorCXdoaWNoID0gJ1RBMDInCisJd2FudCA9ICdURVhUJworY2xhc3MgUHJlY29tcGlsZWQoYWV0b29scy5OUHJvcGVydHkpOgorCSIiIlByZWNvbXBpbGVkIC0gIiIiCisJd2hpY2ggPSAnVEEwMycKKwl3YW50ID0gJ2Jvb2wnCitjbGFzcyBSZXNvdXJjZV9GaWxlKGFldG9vbHMuTlByb3BlcnR5KToKKwkiIiJSZXNvdXJjZSBGaWxlIC0gIiIiCisJd2hpY2ggPSAnVEEwNCcKKwl3YW50ID0gJ2Jvb2wnCitjbGFzcyBMYXVuY2hhYmxlKGFldG9vbHMuTlByb3BlcnR5KToKKwkiIiJMYXVuY2hhYmxlIC0gIiIiCisJd2hpY2ggPSAnVEEwNScKKwl3YW50ID0gJ2Jvb2wnCitjbGFzcyBJZ25vcmVkX2J5X01ha2UoYWV0b29scy5OUHJvcGVydHkpOgorCSIiIklnbm9yZWQgYnkgTWFrZSAtICIiIgorCXdoaWNoID0gJ1RBMDYnCisJd2FudCA9ICdib29sJworY2xhc3MgQ29tcGlsZXIoYWV0b29scy5OUHJvcGVydHkpOgorCSIiIkNvbXBpbGVyIC0gIiIiCisJd2hpY2ggPSAnVEEwNycKKwl3YW50ID0gJ1RFWFQnCisKK2NsYXNzIF9jbGFzcyhhZXRvb2xzLkNvbXBvbmVudEl0ZW0pOgorCSIiImNsYXNzIC0gQSBjbGFzcywgc3RydWN0LCBvciByZWNvcmQgdHlwZSBpbiB0aGUgY3VycmVudCBwcm9qZWN0IiIiCisJd2FudCA9ICdDbGFzJworIyByZXBlYXRlZCBwcm9wZXJ0eSBuYW1lIAorY2xhc3MgbGFuZ3VhZ2UoYWV0b29scy5OUHJvcGVydHkpOgorCSIiImxhbmd1YWdlIC0gSW1wbGVtZW50YXRpb24gbGFuZ3VhZ2Ugb2YgdGhpcyBjbGFzcyIiIgorCXdoaWNoID0gJ0xhbmcnCisJd2FudCA9ICdMYW5nJworY2xhc3MgZGVjbGFyYXRpb25fZmlsZShhZXRvb2xzLk5Qcm9wZXJ0eSk6CisJIiIiZGVjbGFyYXRpb24gZmlsZSAtIFNvdXJjZSBmaWxlIGNvbnRhaW5pbmcgdGhlIGNsYXNzIGRlY2xhcmF0aW9uIiIiCisJd2hpY2ggPSAnRGNGbCcKKwl3YW50ID0gJ2ZzcyAnCitjbGFzcyBkZWNsYXJhdGlvbl9zdGFydF9vZmZzZXQoYWV0b29scy5OUHJvcGVydHkpOgorCSIiImRlY2xhcmF0aW9uIHN0YXJ0IG9mZnNldCAtIFN0YXJ0IG9mIGNsYXNzIGRlY2xhcmF0aW9uIHNvdXJjZSBjb2RlIiIiCisJd2hpY2ggPSAnRGNTdCcKKwl3YW50ID0gJ2xvbmcnCitjbGFzcyBkZWNsYXJhdGlvbl9lbmRfb2Zmc2V0KGFldG9vbHMuTlByb3BlcnR5KToKKwkiIiJkZWNsYXJhdGlvbiBlbmQgb2Zmc2V0IC0gRW5kIG9mIGNsYXNzIGRlY2xhcmF0aW9uIiIiCisJd2hpY2ggPSAnRGNFbicKKwl3YW50ID0gJ2xvbmcnCitjbGFzcyBzdWJjbGFzc2VzKGFldG9vbHMuTlByb3BlcnR5KToKKwkiIiJzdWJjbGFzc2VzIC0gdGhlIGltbWVkaWF0ZSBzdWJjbGFzc2VzIG9mIHRoaXMgY2xhc3MiIiIKKwl3aGljaCA9ICdTdWJDJworCXdhbnQgPSAnQ2xhcycKK2NsYXNzIGFsbF9zdWJjbGFzc2VzKGFldG9vbHMuTlByb3BlcnR5KToKKwkiIiJhbGwgc3ViY2xhc3NlcyAtIHRoZSBjbGFzc2VzIGRpcmVjdGx5IG9yIGluZGlyZWN0bHkgZGVyaXZlZCBmcm9tIHRoaXMgY2xhc3MiIiIKKwl3aGljaCA9ICdTdWJBJworCXdhbnQgPSAnQ2xhcycKKyMgICAgICAgIGVsZW1lbnQgJ0JzQ2wnIGFzIFsnaW5keCddCisjICAgICAgICBlbGVtZW50ICdNYkZuJyBhcyBbJ2luZHgnLCAnbmFtZSddCisjICAgICAgICBlbGVtZW50ICdEdE1iJyBhcyBbJ2luZHgnLCAnbmFtZSddCisKK2NsYXNzZXMgPSBfY2xhc3MKKworY2xhc3MgbWVtYmVyX2Z1bmN0aW9uKGFldG9vbHMuQ29tcG9uZW50SXRlbSk6CisJIiIibWVtYmVyIGZ1bmN0aW9uIC0gQSBjbGFzcyBtZW1iZXIgZnVuY3Rpb24gb3IgbWV0aG9kLiIiIgorCXdhbnQgPSAnTWJGbicKKyMgcmVwZWF0ZWQgcHJvcGVydHkgbmFtZSAKK2NsYXNzIGFjY2VzcyhhZXRvb2xzLk5Qcm9wZXJ0eSk6CisJIiIiYWNjZXNzIC0gIiIiCisJd2hpY2ggPSAnQWNjZScKKwl3YW50ID0gJ0FjY2UnCitjbGFzcyB2aXJ0dWFsKGFldG9vbHMuTlByb3BlcnR5KToKKwkiIiJ2aXJ0dWFsIC0gIiIiCisJd2hpY2ggPSAnVmlydCcKKwl3YW50ID0gJ2Jvb2wnCitjbGFzcyBzdGF0aWMoYWV0b29scy5OUHJvcGVydHkpOgorCSIiInN0YXRpYyAtICIiIgorCXdoaWNoID0gJ1N0YXQnCisJd2FudCA9ICdib29sJworIyByZXBlYXRlZCBwcm9wZXJ0eSBkZWNsYXJhdGlvbl9maWxlIFNvdXJjZSBmaWxlIGNvbnRhaW5pbmcgdGhlIG1lbWJlciBmdW5jdGlvbiBkZWNsYXJhdGlvbgorIyByZXBlYXRlZCBwcm9wZXJ0eSBkZWNsYXJhdGlvbl9zdGFydF9vZmZzZXQgc3RhcnQgb2YgbWVtYmVyIGZ1bmN0aW9uIGRlY2xhcmF0aW9uIHNvdXJjZSBjb2RlCisjIHJlcGVhdGVkIHByb3BlcnR5IGRlY2xhcmF0aW9uX2VuZF9vZmZzZXQgZW5kIG9mIG1lbWJlciBmdW5jdGlvbiBkZWNsYXJhdGlvbgorY2xhc3MgaW1wbGVtZW50YXRpb25fZmlsZShhZXRvb2xzLk5Qcm9wZXJ0eSk6CisJIiIiaW1wbGVtZW50YXRpb24gZmlsZSAtIFNvdXJjZSBmaWxlIGNvbnRhaW5pbmcgdGhlIG1lbWJlciBmdW5jdGlvbiBkZWZpbml0aW9uIiIiCisJd2hpY2ggPSAnRGZGbCcKKwl3YW50ID0gJ2ZzcyAnCitjbGFzcyBpbXBsZW1lbnRhdGlvbl9zdGFydF9vZmZzZXQoYWV0b29scy5OUHJvcGVydHkpOgorCSIiImltcGxlbWVudGF0aW9uIHN0YXJ0IG9mZnNldCAtIHN0YXJ0IG9mIG1lbWJlciBmdW5jdGlvbiBkZWZpbml0aW9uIHNvdXJjZSBjb2RlIiIiCisJd2hpY2ggPSAnRGZTdCcKKwl3YW50ID0gJ2xvbmcnCitjbGFzcyBpbXBsZW1lbnRhdGlvbl9lbmRfb2Zmc2V0KGFldG9vbHMuTlByb3BlcnR5KToKKwkiIiJpbXBsZW1lbnRhdGlvbiBlbmQgb2Zmc2V0IC0gZW5kIG9mIG1lbWJlciBmdW5jdGlvbiBkZWZpbml0aW9uIiIiCisJd2hpY2ggPSAnRGZFbicKKwl3YW50ID0gJ2xvbmcnCisKK21lbWJlcl9mdW5jdGlvbnMgPSBtZW1iZXJfZnVuY3Rpb24KKworY2xhc3MgZGF0YV9tZW1iZXIoYWV0b29scy5Db21wb25lbnRJdGVtKToKKwkiIiJkYXRhIG1lbWJlciAtIEEgY2xhc3MgZGF0YSBtZW1iZXIgb3IgZmllbGQiIiIKKwl3YW50ID0gJ0R0TWInCisjIHJlcGVhdGVkIHByb3BlcnR5IG5hbWUgCisjIHJlcGVhdGVkIHByb3BlcnR5IGFjY2VzcyAKKyMgcmVwZWF0ZWQgcHJvcGVydHkgc3RhdGljIAorIyByZXBlYXRlZCBwcm9wZXJ0eSBkZWNsYXJhdGlvbl9zdGFydF9vZmZzZXQgCisjIHJlcGVhdGVkIHByb3BlcnR5IGRlY2xhcmF0aW9uX2VuZF9vZmZzZXQgCisKK2RhdGFfbWVtYmVycyA9IGRhdGFfbWVtYmVyCisKK2NsYXNzIGJhc2VfY2xhc3MoYWV0b29scy5Db21wb25lbnRJdGVtKToKKwkiIiJiYXNlIGNsYXNzIC0gQSBiYXNlIGNsYXNzIG9yIHN1cGVyIGNsYXNzIG9mIGEgY2xhc3MiIiIKKwl3YW50ID0gJ0JzQ2wnCitjbGFzcyBfY2xhc3MoYWV0b29scy5OUHJvcGVydHkpOgorCSIiImNsYXNzIC0gVGhlIGNsYXNzIG9iamVjdCBjb3JyZXNwb25kaW5nIHRvIHRoaXMgYmFzZSBjbGFzcyIiIgorCXdoaWNoID0gJ0NsYXMnCisJd2FudCA9ICdvYmogJworIyByZXBlYXRlZCBwcm9wZXJ0eSBhY2Nlc3MgCisjIHJlcGVhdGVkIHByb3BlcnR5IHZpcnR1YWwgCisKK2Jhc2VfY2xhc3NlcyA9IGJhc2VfY2xhc3MKKworY2xhc3MgYnJvd3Nlcl9jYXRhbG9nKGFldG9vbHMuQ29tcG9uZW50SXRlbSk6CisJIiIiYnJvd3NlciBjYXRhbG9nIC0gVGhlIGJyb3dzZXIgc3ltYm9sIGNhdGFsb2cgZm9yIHRoZSBjdXJyZW50IHByb2plY3QiIiIKKwl3YW50ID0gJ0NhdGEnCisjICAgICAgICBlbGVtZW50ICdDbGFzJyBhcyBbJ2luZHgnLCAnbmFtZSddCisKK2NsYXNzIFZDU19TZXR1cChhZXRvb2xzLkNvbXBvbmVudEl0ZW0pOgorCSIiIlZDUyBTZXR1cCAtIFRoZSB2ZXJzaW9uIGNvbnRyb2wgc3lzdGVtIHBlcmZlcmVuY2VzLiIiIgorCXdhbnQgPSAnVkNTcycKK2NsYXNzIFZDU19BY3RpdmUoYWV0b29scy5OUHJvcGVydHkpOgorCSIiIlZDUyBBY3RpdmUgLSBVc2UgVmVyc2lvbiBDb250cm9sIiIiCisJd2hpY2ggPSAnVkMwMScKKwl3YW50ID0gJ2Jvb2wnCitjbGFzcyBDb25uZWN0aW9uX01ldGhvZChhZXRvb2xzLk5Qcm9wZXJ0eSk6CisJIiIiQ29ubmVjdGlvbiBNZXRob2QgLSBOYW1lIG9mIFZlcnNpb24gQ29udHJvbCBTeXN0ZW0gdG8gdXNlLiIiIgorCXdoaWNoID0gJ1ZDMDInCisJd2FudCA9ICdURVhUJworY2xhc3MgVXNlcm5hbWUoYWV0b29scy5OUHJvcGVydHkpOgorCSIiIlVzZXJuYW1lIC0gVGhlIHVzZXIgbmFtZSBmb3IgdGhlIFZDUy4iIiIKKwl3aGljaCA9ICdWQzAzJworCXdhbnQgPSAnVEVYVCcKK2NsYXNzIFBhc3N3b3JkKGFldG9vbHMuTlByb3BlcnR5KToKKwkiIiJQYXNzd29yZCAtIFRoZSBwYXNzd29yZCBmb3IgdGhlIFZDUy4iIiIKKwl3aGljaCA9ICdWQzA0JworCXdhbnQgPSAnVEVYVCcKK2NsYXNzIEF1dG9fQ29ubmVjdChhZXRvb2xzLk5Qcm9wZXJ0eSk6CisJIiIiQXV0byBDb25uZWN0IC0gQXV0b21hdGljYWxseSBjb25uZWN0IHRvIGRhdGFiYXNlIHdoZW4gc3RhcnRpbmcuIiIiCisJd2hpY2ggPSAnVkMwNScKKwl3YW50ID0gJ2Jvb2wnCitjbGFzcyBTdG9yZV9QYXNzd29yZChhZXRvb2xzLk5Qcm9wZXJ0eSk6CisJIiIiU3RvcmUgUGFzc3dvcmQgLSBTdG9yZSB0aGUgcGFzc3dvcmQuIiIiCisJd2hpY2ggPSAnVkMwNicKKwl3YW50ID0gJ2Jvb2wnCitjbGFzcyBBbHdheXNfUHJvbXB0KGFldG9vbHMuTlByb3BlcnR5KToKKwkiIiJBbHdheXMgUHJvbXB0IC0gQWx3YXlzIHNob3cgbG9naW4gZGlhbG9nIiIiCisJd2hpY2ggPSAnVkMwNycKKwl3YW50ID0gJ2Jvb2wnCitjbGFzcyBNb3VudF9Wb2x1bWUoYWV0b29scy5OUHJvcGVydHkpOgorCSIiIk1vdW50IFZvbHVtZSAtIEF0dGVtcHQgdG8gbW91bnQgdGhlIGRhdGFiYXNlIHZvbHVtZSBpZiBpdCBpc24ndCBhdmFpbGFibGUuIiIiCisJd2hpY2ggPSAnVkMwOCcKKwl3YW50ID0gJ2Jvb2wnCitjbGFzcyBEYXRhYmFzZV9QYXRoKGFldG9vbHMuTlByb3BlcnR5KToKKwkiIiJEYXRhYmFzZSBQYXRoIC0gUGF0aCB0byB0aGUgVkNTIGRhdGFiYXNlLiIiIgorCXdoaWNoID0gJ1ZDMDknCisJd2FudCA9ICdQSW5mJworY2xhc3MgTG9jYWxfUm9vdChhZXRvb2xzLk5Qcm9wZXJ0eSk6CisJIiIiTG9jYWwgUm9vdCAtIFBhdGggdG8gdGhlIGxvY2FsIGRpcmVjdG9yeSB0byBjaGVja291dCB0by4iIiIKKwl3aGljaCA9ICdWQzEwJworCXdhbnQgPSAnUEluZicKK0FjY2Vzc19QYXRocy5fcHJvcGRpY3QgPSB7CisJJ1VzZXJfUGF0aHMnIDogVXNlcl9QYXRocywKKwknU3lzdGVtX1BhdGhzJyA6IFN5c3RlbV9QYXRocywKKwknQWx3YXlzX0Z1bGxfU2VhcmNoJyA6IEFsd2F5c19GdWxsX1NlYXJjaCwKK30KK0FjY2Vzc19QYXRocy5fZWxlbWRpY3QgPSB7Cit9CitFZGl0b3IuX3Byb3BkaWN0ID0geworCSdGbGFzaF9kZWxheScgOiBGbGFzaF9kZWxheSwKKwknRHluYW1pY19zY3JvbGwnIDogRHluYW1pY19zY3JvbGwsCisJJ0JhbGFuY2UnIDogQmFsYW5jZSwKKwknVXNlX0RyYWdfXzI2X19Ecm9wX0VkaXRpbmcnIDogVXNlX0RyYWdfXzI2X19Ecm9wX0VkaXRpbmcsCisJJ1NhdmVfb25fdXBkYXRlJyA6IFNhdmVfb25fdXBkYXRlLAorCSdTb3J0X0Z1bmN0aW9uX1BvcHVwJyA6IFNvcnRfRnVuY3Rpb25fUG9wdXAsCisJJ1VzZV9NdWx0aXBsZV9VbmRvJyA6IFVzZV9NdWx0aXBsZV9VbmRvLAorCSdSZW1lbWJlcl9mb250JyA6IFJlbWVtYmVyX2ZvbnQsCisJJ1JlbWVtYmVyX3NlbGVjdGlvbicgOiBSZW1lbWJlcl9zZWxlY3Rpb24sCisJJ1JlbWVtYmVyX3dpbmRvdycgOiBSZW1lbWJlcl93aW5kb3csCisJJ01haW5fVGV4dF9Db2xvcicgOiBNYWluX1RleHRfQ29sb3IsCisJJ0JhY2tncm91bmRfQ29sb3InIDogQmFja2dyb3VuZF9Db2xvciwKKwknQ29udGV4dF9Qb3B1cF9EZWxheScgOiBDb250ZXh0X1BvcHVwX0RlbGF5LAorfQorRWRpdG9yLl9lbGVtZGljdCA9IHsKK30KK1N5bnRheF9Db2xvcmluZy5fcHJvcGRpY3QgPSB7CisJJ1N5bnRheF9jb2xvcmluZycgOiBTeW50YXhfY29sb3JpbmcsCisJJ0NvbW1lbnRfY29sb3InIDogQ29tbWVudF9jb2xvciwKKwknS2V5d29yZF9jb2xvcicgOiBLZXl3b3JkX2NvbG9yLAorCSdTdHJpbmdfY29sb3InIDogU3RyaW5nX2NvbG9yLAorCSdDdXN0b21fY29sb3JfMScgOiBDdXN0b21fY29sb3JfMSwKKwknQ3VzdG9tX2NvbG9yXzInIDogQ3VzdG9tX2NvbG9yXzIsCisJJ0N1c3RvbV9jb2xvcl8zJyA6IEN1c3RvbV9jb2xvcl8zLAorCSdDdXN0b21fY29sb3JfNCcgOiBDdXN0b21fY29sb3JfNCwKK30KK1N5bnRheF9Db2xvcmluZy5fZWxlbWRpY3QgPSB7Cit9CitDdXN0b21fS2V5d29yZHMuX3Byb3BkaWN0ID0geworCSdDdXN0b21fY29sb3JfMScgOiBDdXN0b21fY29sb3JfMSwKKwknQ3VzdG9tX2NvbG9yXzInIDogQ3VzdG9tX2NvbG9yXzIsCisJJ0N1c3RvbV9jb2xvcl8zJyA6IEN1c3RvbV9jb2xvcl8zLAorCSdDdXN0b21fY29sb3JfNCcgOiBDdXN0b21fY29sb3JfNCwKK30KK0N1c3RvbV9LZXl3b3Jkcy5fZWxlbWRpY3QgPSB7Cit9CitCcm93c2VyX0NvbG9yaW5nLl9wcm9wZGljdCA9IHsKKwknQnJvd3Nlcl9LZXl3b3JkcycgOiBCcm93c2VyX0tleXdvcmRzLAorCSdDbGFzc2VzX0NvbG9yJyA6IENsYXNzZXNfQ29sb3IsCisJJ0NvbnN0YW50c19Db2xvcicgOiBDb25zdGFudHNfQ29sb3IsCisJJ0VudW1zX0NvbG9yJyA6IEVudW1zX0NvbG9yLAorCSdGdW5jdGlvbnNfQ29sb3InIDogRnVuY3Rpb25zX0NvbG9yLAorCSdHbG9iYWxzX0NvbG9yJyA6IEdsb2JhbHNfQ29sb3IsCisJJ01hY3Jvc19Db2xvcicgOiBNYWNyb3NfQ29sb3IsCisJJ1RlbXBsYXRlc19Db2xvcicgOiBUZW1wbGF0ZXNfQ29sb3IsCisJJ1R5cGVkZWZzX0NvbG9yJyA6IFR5cGVkZWZzX0NvbG9yLAorfQorQnJvd3Nlcl9Db2xvcmluZy5fZWxlbWRpY3QgPSB7Cit9CitFcnJvcl9JbmZvcm1hdGlvbi5fcHJvcGRpY3QgPSB7CisJJ2tpbmQnIDoga2luZCwKKwknbWVzc2FnZScgOiBtZXNzYWdlLAorCSdkaXNrX2ZpbGUnIDogZGlza19maWxlLAorCSdsaW5lTnVtYmVyJyA6IGxpbmVOdW1iZXIsCit9CitFcnJvcl9JbmZvcm1hdGlvbi5fZWxlbWRpY3QgPSB7Cit9CitFeHRyYXMuX3Byb3BkaWN0ID0geworCSdDb21wbGV0aW9uX3NvdW5kJyA6IENvbXBsZXRpb25fc291bmQsCisJJ1N1Y2Nlc3Nfc291bmQnIDogU3VjY2Vzc19zb3VuZCwKKwknRmFpbHVyZV9zb3VuZCcgOiBGYWlsdXJlX3NvdW5kLAorCSdGdWxsX3NjcmVlbl96b29tJyA6IEZ1bGxfc2NyZWVuX3pvb20sCisJJ0V4dGVybmFsX3JlZmVyZW5jZScgOiBFeHRlcm5hbF9yZWZlcmVuY2UsCisJJ1VzZV9TY3JpcHRfTWVudScgOiBVc2VfU2NyaXB0X01lbnUsCisJJ1VzZV9FZGl0b3JfRXh0ZW5zaW9ucycgOiBVc2VfRWRpdG9yX0V4dGVuc2lvbnMsCisJJ1VzZV9FeHRlcm5hbF9FZGl0b3InIDogVXNlX0V4dGVybmFsX0VkaXRvciwKKwknSG9ub3JfUHJvamVjdG9yX1N0YXRlX2Zvcl9Qcm9qZWN0cycgOiBIb25vcl9Qcm9qZWN0b3JfU3RhdGVfZm9yX1Byb2plY3RzLAorfQorRXh0cmFzLl9lbGVtZGljdCA9IHsKK30KK0J1aWxkX0V4dHJhcy5fcHJvcGRpY3QgPSB7CisJJ0Jyb3dzZXJfYWN0aXZlJyA6IEJyb3dzZXJfYWN0aXZlLAorCSdNb2RpZmljYXRpb25fZGF0ZV9jYWNoaW5nJyA6IE1vZGlmaWNhdGlvbl9kYXRlX2NhY2hpbmcsCisJJ011bHRpcHJvY2Vzc2luZ19Db21waWxhdGlvbicgOiBNdWx0aXByb2Nlc3NpbmdfQ29tcGlsYXRpb24sCisJJ1Nob3dfVG9vbFNlcnZlcl9NZW51JyA6IFNob3dfVG9vbFNlcnZlcl9NZW51LAorCSdFbmFibGVfQXV0b21hdGljX1Rvb2xiYXJfSGVscCcgOiBFbmFibGVfQXV0b21hdGljX1Rvb2xiYXJfSGVscCwKKwknSW5jbHVkZV9GaWxlX0NhY2hlX1NpemVfXzI4X0tfMjlfJyA6IEluY2x1ZGVfRmlsZV9DYWNoZV9TaXplX18yOF9LXzI5XywKKwknUmVjZW50X0RvY3VtZW50cycgOiBSZWNlbnRfRG9jdW1lbnRzLAorCSdSZWNlbnRfUHJvamVjdHMnIDogUmVjZW50X1Byb2plY3RzLAorfQorQnVpbGRfRXh0cmFzLl9lbGVtZGljdCA9IHsKK30KK0ZpbGVfTWFwcGluZ3MuX3Byb3BkaWN0ID0geworCSdtYXBwaW5ncycgOiBtYXBwaW5ncywKK30KK0ZpbGVfTWFwcGluZ3MuX2VsZW1kaWN0ID0geworfQorRm9udC5fcHJvcGRpY3QgPSB7CisJJ0F1dG9faW5kZW50JyA6IEF1dG9faW5kZW50LAorCSdUYWJfc2l6ZScgOiBUYWJfc2l6ZSwKKwknVGV4dF9mb250JyA6IFRleHRfZm9udCwKKwknVGV4dF9zaXplJyA6IFRleHRfc2l6ZSwKK30KK0ZvbnQuX2VsZW1kaWN0ID0geworfQorRnVuY3Rpb25fSW5mb3JtYXRpb24uX3Byb3BkaWN0ID0geworCSdkaXNrX2ZpbGUnIDogZGlza19maWxlLAorCSdsaW5lTnVtYmVyJyA6IGxpbmVOdW1iZXIsCit9CitGdW5jdGlvbl9JbmZvcm1hdGlvbi5fZWxlbWRpY3QgPSB7Cit9CitQYXRoX0luZm9ybWF0aW9uLl9wcm9wZGljdCA9IHsKKwknbmFtZScgOiBuYW1lLAorCSdyZWN1cnNpdmUnIDogcmVjdXJzaXZlLAorCSdvcmlnaW4nIDogb3JpZ2luLAorfQorUGF0aF9JbmZvcm1hdGlvbi5fZWxlbWRpY3QgPSB7Cit9CitQcm9qZWN0RmlsZS5fcHJvcGRpY3QgPSB7CisJJ2ZpbGV0eXBlJyA6IGZpbGV0eXBlLAorCSduYW1lJyA6IG5hbWUsCisJJ2Rpc2tfZmlsZScgOiBkaXNrX2ZpbGUsCisJJ2NvZGVzaXplJyA6IGNvZGVzaXplLAorCSdkYXRhc2l6ZScgOiBkYXRhc2l6ZSwKKwkndXBfdG9fZGF0ZScgOiB1cF90b19kYXRlLAorCSdzeW1ib2xzJyA6IHN5bWJvbHMsCisJJ3dlYWtfbGluaycgOiB3ZWFrX2xpbmssCisJJ2luaXRpYWxpemVfYmVmb3JlJyA6IGluaXRpYWxpemVfYmVmb3JlLAorCSdpbmNsdWRlcycgOiBpbmNsdWRlcywKK30KK1Byb2plY3RGaWxlLl9lbGVtZGljdCA9IHsKK30KK1NlZ21lbnQuX3Byb3BkaWN0ID0geworCSduYW1lJyA6IG5hbWUsCisJJ2ZpbGVjb3VudCcgOiBmaWxlY291bnQsCisJJ3ByZWxvYWRlZCcgOiBwcmVsb2FkZWQsCisJJ3Byb3RlY3RlZCcgOiBwcm90ZWN0ZWQsCisJJ2xvY2tlZCcgOiBsb2NrZWQsCisJJ3B1cmdlYWJsZScgOiBwdXJnZWFibGUsCisJJ3N5c3RlbV9oZWFwJyA6IHN5c3RlbV9oZWFwLAorfQorU2VnbWVudC5fZWxlbWRpY3QgPSB7Cit9CitUYXJnZXRfU2V0dGluZ3MuX3Byb3BkaWN0ID0geworCSdMaW5rZXInIDogTGlua2VyLAorCSdQb3N0X0xpbmtlcicgOiBQb3N0X0xpbmtlciwKKwknVGFyZ2V0X05hbWUnIDogVGFyZ2V0X05hbWUsCisJJ091dHB1dF9EaXJlY3RvcnlfUGF0aCcgOiBPdXRwdXRfRGlyZWN0b3J5X1BhdGgsCisJJ091dHB1dF9EaXJlY3RvcnlfT3JpZ2luJyA6IE91dHB1dF9EaXJlY3RvcnlfT3JpZ2luLAorfQorVGFyZ2V0X1NldHRpbmdzLl9lbGVtZGljdCA9IHsKK30KK0ZpbGVfTWFwcGluZy5fcHJvcGRpY3QgPSB7CisJJ0ZpbGVfVHlwZScgOiBGaWxlX1R5cGUsCisJJ0V4dGVuc2lvbicgOiBFeHRlbnNpb24sCisJJ1ByZWNvbXBpbGVkJyA6IFByZWNvbXBpbGVkLAorCSdSZXNvdXJjZV9GaWxlJyA6IFJlc291cmNlX0ZpbGUsCisJJ0xhdW5jaGFibGUnIDogTGF1bmNoYWJsZSwKKwknSWdub3JlZF9ieV9NYWtlJyA6IElnbm9yZWRfYnlfTWFrZSwKKwknQ29tcGlsZXInIDogQ29tcGlsZXIsCit9CitGaWxlX01hcHBpbmcuX2VsZW1kaWN0ID0geworfQorX2NsYXNzLl9wcm9wZGljdCA9IHsKKwknbmFtZScgOiBuYW1lLAorCSdsYW5ndWFnZScgOiBsYW5ndWFnZSwKKwknZGVjbGFyYXRpb25fZmlsZScgOiBkZWNsYXJhdGlvbl9maWxlLAorCSdkZWNsYXJhdGlvbl9zdGFydF9vZmZzZXQnIDogZGVjbGFyYXRpb25fc3RhcnRfb2Zmc2V0LAorCSdkZWNsYXJhdGlvbl9lbmRfb2Zmc2V0JyA6IGRlY2xhcmF0aW9uX2VuZF9vZmZzZXQsCisJJ3N1YmNsYXNzZXMnIDogc3ViY2xhc3NlcywKKwknYWxsX3N1YmNsYXNzZXMnIDogYWxsX3N1YmNsYXNzZXMsCit9CitfY2xhc3MuX2VsZW1kaWN0ID0geworCSdiYXNlX2NsYXNzJyA6IGJhc2VfY2xhc3MsCisJJ21lbWJlcl9mdW5jdGlvbicgOiBtZW1iZXJfZnVuY3Rpb24sCisJJ2RhdGFfbWVtYmVyJyA6IGRhdGFfbWVtYmVyLAorfQorbWVtYmVyX2Z1bmN0aW9uLl9wcm9wZGljdCA9IHsKKwknbmFtZScgOiBuYW1lLAorCSdhY2Nlc3MnIDogYWNjZXNzLAorCSd2aXJ0dWFsJyA6IHZpcnR1YWwsCisJJ3N0YXRpYycgOiBzdGF0aWMsCisJJ2RlY2xhcmF0aW9uX2ZpbGUnIDogZGVjbGFyYXRpb25fZmlsZSwKKwknZGVjbGFyYXRpb25fc3RhcnRfb2Zmc2V0JyA6IGRlY2xhcmF0aW9uX3N0YXJ0X29mZnNldCwKKwknZGVjbGFyYXRpb25fZW5kX29mZnNldCcgOiBkZWNsYXJhdGlvbl9lbmRfb2Zmc2V0LAorCSdpbXBsZW1lbnRhdGlvbl9maWxlJyA6IGltcGxlbWVudGF0aW9uX2ZpbGUsCisJJ2ltcGxlbWVudGF0aW9uX3N0YXJ0X29mZnNldCcgOiBpbXBsZW1lbnRhdGlvbl9zdGFydF9vZmZzZXQsCisJJ2ltcGxlbWVudGF0aW9uX2VuZF9vZmZzZXQnIDogaW1wbGVtZW50YXRpb25fZW5kX29mZnNldCwKK30KK21lbWJlcl9mdW5jdGlvbi5fZWxlbWRpY3QgPSB7Cit9CitkYXRhX21lbWJlci5fcHJvcGRpY3QgPSB7CisJJ25hbWUnIDogbmFtZSwKKwknYWNjZXNzJyA6IGFjY2VzcywKKwknc3RhdGljJyA6IHN0YXRpYywKKwknZGVjbGFyYXRpb25fc3RhcnRfb2Zmc2V0JyA6IGRlY2xhcmF0aW9uX3N0YXJ0X29mZnNldCwKKwknZGVjbGFyYXRpb25fZW5kX29mZnNldCcgOiBkZWNsYXJhdGlvbl9lbmRfb2Zmc2V0LAorfQorZGF0YV9tZW1iZXIuX2VsZW1kaWN0ID0geworfQorYmFzZV9jbGFzcy5fcHJvcGRpY3QgPSB7CisJJ19jbGFzcycgOiBfY2xhc3MsCisJJ2FjY2VzcycgOiBhY2Nlc3MsCisJJ3ZpcnR1YWwnIDogdmlydHVhbCwKK30KK2Jhc2VfY2xhc3MuX2VsZW1kaWN0ID0geworfQorYnJvd3Nlcl9jYXRhbG9nLl9wcm9wZGljdCA9IHsKK30KK2Jyb3dzZXJfY2F0YWxvZy5fZWxlbWRpY3QgPSB7CisJJ19jbGFzcycgOiBfY2xhc3MsCit9CitWQ1NfU2V0dXAuX3Byb3BkaWN0ID0geworCSdWQ1NfQWN0aXZlJyA6IFZDU19BY3RpdmUsCisJJ0Nvbm5lY3Rpb25fTWV0aG9kJyA6IENvbm5lY3Rpb25fTWV0aG9kLAorCSdVc2VybmFtZScgOiBVc2VybmFtZSwKKwknUGFzc3dvcmQnIDogUGFzc3dvcmQsCisJJ0F1dG9fQ29ubmVjdCcgOiBBdXRvX0Nvbm5lY3QsCisJJ1N0b3JlX1Bhc3N3b3JkJyA6IFN0b3JlX1Bhc3N3b3JkLAorCSdBbHdheXNfUHJvbXB0JyA6IEFsd2F5c19Qcm9tcHQsCisJJ01vdW50X1ZvbHVtZScgOiBNb3VudF9Wb2x1bWUsCisJJ0RhdGFiYXNlX1BhdGgnIDogRGF0YWJhc2VfUGF0aCwKKwknTG9jYWxfUm9vdCcgOiBMb2NhbF9Sb290LAorfQorVkNTX1NldHVwLl9lbGVtZGljdCA9IHsKK30KK19FbnVtX3Nhdm8gPSB7CisJJ3llcycgOiAneWVzICcsCSMgU2F2ZSBjaGFuZ2VzCisJJ25vJyA6ICdubyAgJywJIyBEbyBub3Qgc2F2ZSBjaGFuZ2VzCisJJ2FzaycgOiAnYXNrICcsCSMgQXNrIHRoZSB1c2VyIHdoZXRoZXIgdG8gc2F2ZQorfQorCitfRW51bV9FcnJUID0geworCSdpbmZvcm1hdGlvbicgOiAnRXJJbicsCSMgCisJJ2NvbXBpbGVyX3dhcm5pbmcnIDogJ0VyQ1cnLAkjIAorCSdjb21waWxlcl9lcnJvcicgOiAnRXJDRScsCSMgCisJJ2RlZmluaXRpb24nIDogJ0VyRGYnLAkjIAorCSdsaW5rZXJfd2FybmluZycgOiAnRXJMVycsCSMgCisJJ2xpbmtlcl9lcnJvcicgOiAnRXJMRScsCSMgCisJJ2ZpbmRfcmVzdWx0JyA6ICdFckZuJywJIyAKKwknZ2VuZXJpY19lcnJvcicgOiAnRXJHbicsCSMgCit9CisKK19FbnVtX01vZGUgPSB7CisJJ1JlYWRXcml0ZScgOiAnUmRXcicsCSMgVGhlIGZpbGUgaXMgb3BlbiB3aXRoIHJlYWQvd3JpdGUgcHJpdmlsZWdlcworCSdSZWFkT25seScgOiAnUmVhZCcsCSMgVGhlIGZpbGUgaXMgb3BlbiB3aXRoIHJlYWQvb25seSBwcml2aWxlZ2VzCisJJ0NoZWNrZWRPdXRfUmVhZFdyaXRlJyA6ICdDa1JXJywJIyBUaGUgZmlsZSBpcyBjaGVja2VkIG91dCB3aXRoIHJlYWQvd3JpdGUgcHJpdmlsZWdlcworCSdDaGVja2VkT3V0X1JlYWRPbmx5JyA6ICdDa1JPJywJIyBUaGUgZmlsZSBpcyBjaGVja2VkIG91dCB3aXRoIHJlYWQvb25seSBwcml2aWxlZ2VzCisJJ0NoZWNrZWRPdXRfUmVhZE1vZGlmeScgOiAnQ2tSTScsCSMgVGhlIGZpbGUgaXMgY2hlY2tlZCBvdXQgd2l0aCByZWFkL21vZGlmeSBwcml2aWxlZ2VzCisJJ0xvY2tlZCcgOiAnTG9jaycsCSMgVGhlIGZpbGUgaXMgbG9ja2VkIG9uIGRpc2sKKwknTm9uZScgOiAnTm9uZScsCSMgVGhlIGZpbGUgaXMgbmV3Cit9CisKK19FbnVtX1NyY1QgPSB7CisJJ3NvdXJjZScgOiAnRlR4dCcsCSMgQSBzb3VyY2UgZmlsZSAoLmMsIC5jcCwgLnAsIGV0YykuCisJJ3Vua25vd24nIDogJ0ZVbmsnLAkjIEFuIHVua25vd24gZmlsZSB0eXBlLgorfQorCitfRW51bV9QUHJtID0geworCSdhYnNvbHV0ZScgOiAnQWJzbycsCSMgQW4gYWJzb2x1dGUgcGF0aCBuYW1lLCBpbmNsdWRpbmcgdm9sdW1lIG5hbWUuCisJJ3Byb2plY3RfcmVsYXRpdmUnIDogJ1BSZWwnLAkjIEEgcGF0aCByZWxhdGl2ZSB0byB0aGUgY3VycmVudCBwcm9qZWN0uXMgZm9sZGVyLgorCSdzaGVsbF9yZWxhdGl2ZScgOiAnU1JlbCcsCSMgQSBwYXRoIHJlbGF0aXZlIHRvIHRoZSBDb2RlV2FycmlvcoEgZm9sZGVyLgorCSdzeXN0ZW1fcmVsYXRpdmUnIDogJ1lSZWwnLAkjIEEgcGF0aCByZWxhdGl2ZSB0byB0aGUgc3lzdGVtIGZvbGRlcgorfQorCitfRW51bV9SZWZQID0geworCSdUaGlua19SZWZlcmVuY2UnIDogJ0RhblInLAkjIAorCSdRdWlja1ZpZXcnIDogJ0FMVFYnLAkjIAorfQorCitfRW51bV9MYW5nID0geworCSdDJyA6ICdMQyAgJywJIyAKKwknQ18yYl9fMmJfJyA6ICdMQysrJywJIyAKKwknUGFzY2FsJyA6ICdMUCAgJywJIyAKKwknT2JqZWN0X1Bhc2NhbCcgOiAnTFArKycsCSMgCisJJ0phdmEnIDogJ0xKYXYnLAkjIAorCSdBc3NlbWJsZXInIDogJ0xBc20nLAkjIAorCSdVbmtub3duJyA6ICdMPyAgJywJIyAKK30KKworX0VudW1fQWNjZSA9IHsKKwkncHVibGljJyA6ICdQdWJsJywJIyAKKwkncHJvdGVjdGVkJyA6ICdQcm90JywJIyAKKwkncHJpdmF0ZScgOiAnUHJpdicsCSMgCit9CisKK19FbnVtX0ludGUgPSB7CisJJ25ldmVyX2ludGVyYWN0JyA6ICdlTnZyJywJIyBOZXZlciBhbGxvdyB1c2VyIGludGVyYWN0aW9ucworCSdpbnRlcmFjdF93aXRoX3NlbGYnIDogJ2VJblMnLAkjIEFsbG93IHVzZXIgaW50ZXJhY3Rpb24gb25seSB3aGVuIGFuIEFwcGxlRXZlbnQgaXMgc2VudCBmcm9tIHdpdGhpbiBDb2RlV2FycmlvcgorCSdpbnRlcmFjdF93aXRoX2xvY2FsJyA6ICdlSW5MJywJIyBBbGxvdyB1c2VyIGludGVyYWN0aW9uIHdoZW4gQXBwbGVFdmVudHMgYXJlIHNlbnQgZnJvbSBhcHBsaWNhdGlvbnMgb24gdGhlIHNhbWUgbWFjaGluZSAoZGVmYXVsdCkKKwknaW50ZXJhY3Rfd2l0aF9hbGwnIDogJ2VJbkEnLAkjIEFsbG93IHVzZXIgaW50ZXJhY3Rpb24gZnJvbSBib3RoIGxvY2FsIGFuZCByZW1vdGUgQXBwbGVFdmVudHMKK30KKworCisjCisjIEluZGljZXMgb2YgdHlwZXMgZGVjbGFyZWQgaW4gdGhpcyBtb2R1bGUKKyMKK19jbGFzc2RlY2xhcmF0aW9ucyA9IHsKKwknTFhUUicgOiBCdWlsZF9FeHRyYXMsCisJJ1NlZyAnIDogU2VnbWVudCwKKwknQnNDbCcgOiBiYXNlX2NsYXNzLAorCSdQQVRIJyA6IEFjY2Vzc19QYXRocywKKwknbUZOVCcgOiBGb250LAorCSdCUktXJyA6IEJyb3dzZXJfQ29sb3JpbmcsCisJJ0ZMTVAnIDogRmlsZV9NYXBwaW5ncywKKwknQ2F0YScgOiBicm93c2VyX2NhdGFsb2csCisJJ1NOVFgnIDogU3ludGF4X0NvbG9yaW5nLAorCSdDVUtXJyA6IEN1c3RvbV9LZXl3b3JkcywKKwknUEluZicgOiBQYXRoX0luZm9ybWF0aW9uLAorCSdUQVJHJyA6IFRhcmdldF9TZXR0aW5ncywKKwknRkRlZicgOiBGdW5jdGlvbl9JbmZvcm1hdGlvbiwKKwknRURUUicgOiBFZGl0b3IsCisJJ1ZDU3MnIDogVkNTX1NldHVwLAorCSdFcnJNJyA6IEVycm9yX0luZm9ybWF0aW9uLAorCSdDbGFzJyA6IF9jbGFzcywKKwknU3JjRicgOiBQcm9qZWN0RmlsZSwKKwknR1hUUicgOiBFeHRyYXMsCisJJ01iRm4nIDogbWVtYmVyX2Z1bmN0aW9uLAorCSdEdE1iJyA6IGRhdGFfbWVtYmVyLAorCSdGTWFwJyA6IEZpbGVfTWFwcGluZywKK30KKworX3Byb3BkZWNsYXJhdGlvbnMgPSB7CisJJ0NTaXonIDogY29kZXNpemUsCisJJ0RjRW4nIDogZGVjbGFyYXRpb25fZW5kX29mZnNldCwKKwknRk1wcycgOiBtYXBwaW5ncywKKwknVkMwMicgOiBDb25uZWN0aW9uX01ldGhvZCwKKwknVkMwMycgOiBVc2VybmFtZSwKKwknVEEwMicgOiBFeHRlbnNpb24sCisJJ1VwVEQnIDogdXBfdG9fZGF0ZSwKKwknVkMwNycgOiBBbHdheXNfUHJvbXB0LAorCSdWaXJ0JyA6IHZpcnR1YWwsCisJJ1ZDMDUnIDogQXV0b19Db25uZWN0LAorCSdWQzA4JyA6IE1vdW50X1ZvbHVtZSwKKwknVkMwOScgOiBEYXRhYmFzZV9QYXRoLAorCSdWQzA2JyA6IFN0b3JlX1Bhc3N3b3JkLAorCSdQQTAyJyA6IEFsd2F5c19GdWxsX1NlYXJjaCwKKwknUEEwMycgOiBTeXN0ZW1fUGF0aHMsCisJJ0NsYXMnIDogX2NsYXNzLAorCSdQQTAxJyA6IFVzZXJfUGF0aHMsCisJJ1RBMDknIDogUG9zdF9MaW5rZXIsCisJJ0xhbmcnIDogbGFuZ3VhZ2UsCisJJ1ZDMTAnIDogTG9jYWxfUm9vdCwKKwknRVgwOScgOiBCcm93c2VyX2FjdGl2ZSwKKwknR0gwOCcgOiBDdXN0b21fY29sb3JfNCwKKwknRGZGbCcgOiBpbXBsZW1lbnRhdGlvbl9maWxlLAorCSdHSDA2JyA6IEN1c3RvbV9jb2xvcl8yLAorCSdHSDA3JyA6IEN1c3RvbV9jb2xvcl8zLAorCSdHSDA0JyA6IFN0cmluZ19jb2xvciwKKwknR0gwNScgOiBDdXN0b21fY29sb3JfMSwKKwknS1cwMScgOiBDdXN0b21fY29sb3JfMSwKKwknR0gwMycgOiBLZXl3b3JkX2NvbG9yLAorCSdLVzAzJyA6IEN1c3RvbV9jb2xvcl8zLAorCSdLVzAyJyA6IEN1c3RvbV9jb2xvcl8yLAorCSdCVzAyJyA6IENvbnN0YW50c19Db2xvciwKKwknQlcwMycgOiBFbnVtc19Db2xvciwKKwknQlcwMCcgOiBCcm93c2VyX0tleXdvcmRzLAorCSdCVzAxJyA6IENsYXNzZXNfQ29sb3IsCisJJ0JXMDYnIDogTWFjcm9zX0NvbG9yLAorCSdCVzA3JyA6IFRlbXBsYXRlc19Db2xvciwKKwknQlcwNCcgOiBGdW5jdGlvbnNfQ29sb3IsCisJJ3BuYW0nIDogbmFtZSwKKwknRGZTdCcgOiBpbXBsZW1lbnRhdGlvbl9zdGFydF9vZmZzZXQsCisJJ0JXMDgnIDogVHlwZWRlZnNfQ29sb3IsCisJJ1BSMDQnIDogRmlsZV9UeXBlLAorCSdFWDA0JyA6IE1vZGlmaWNhdGlvbl9kYXRlX2NhY2hpbmcsCisJJ0VYMDcnIDogRnVsbF9zY3JlZW5fem9vbSwKKwknUExjaycgOiBsb2NrZWQsCisJJ0VYMDInIDogU3VjY2Vzc19zb3VuZCwKKwknRVgwMycgOiBGYWlsdXJlX3NvdW5kLAorCSdUQTA2JyA6IElnbm9yZWRfYnlfTWFrZSwKKwknVEEwNycgOiBDb21waWxlciwKKwknVEEwNCcgOiBSZXNvdXJjZV9GaWxlLAorCSdUQTA1JyA6IExhdW5jaGFibGUsCisJJ0VYMDgnIDogRXh0ZXJuYWxfcmVmZXJlbmNlLAorCSdEU2l6JyA6IGRhdGFzaXplLAorCSdUQTAxJyA6IExpbmtlciwKKwknVkMwNCcgOiBQYXNzd29yZCwKKwknQmZvcicgOiBpbml0aWFsaXplX2JlZm9yZSwKKwknU3JjVCcgOiBmaWxldHlwZSwKKwknU3lzSCcgOiBzeXN0ZW1faGVhcCwKKwknR0gwMScgOiBTeW50YXhfY29sb3JpbmcsCisJJ0dIMDInIDogQ29tbWVudF9jb2xvciwKKwknUHJlbCcgOiBwcmVsb2FkZWQsCisJJ09yaWcnIDogb3JpZ2luLAorCSdFWDE3JyA6IFJlY2VudF9Qcm9qZWN0cywKKwknRVgxNicgOiBSZWNlbnRfRG9jdW1lbnRzLAorCSdFWDE1JyA6IEluY2x1ZGVfRmlsZV9DYWNoZV9TaXplX18yOF9LXzI5XywKKwknRVgxNCcgOiBNdWx0aXByb2Nlc3NpbmdfQ29tcGlsYXRpb24sCisJJ0VYMDEnIDogQ29tcGxldGlvbl9zb3VuZCwKKwknRVgxMicgOiBVc2VfU2NyaXB0X01lbnUsCisJJ0VYMTEnIDogVXNlX0V4dGVybmFsX0VkaXRvciwKKwknRVgxMCcgOiBVc2VfRWRpdG9yX0V4dGVuc2lvbnMsCisJJ1RBMTEnIDogT3V0cHV0X0RpcmVjdG9yeV9QYXRoLAorCSdUQTEwJyA6IFRhcmdldF9OYW1lLAorCSdUQTEyJyA6IE91dHB1dF9EaXJlY3RvcnlfT3JpZ2luLAorCSdFWDE5JyA6IEVuYWJsZV9BdXRvbWF0aWNfVG9vbGJhcl9IZWxwLAorCSdFWDE4JyA6IFNob3dfVG9vbFNlcnZlcl9NZW51LAorCSdFcnJUJyA6IGtpbmQsCisJJ3B0eGYnIDogVGV4dF9mb250LAorCSdFcnJTJyA6IG1lc3NhZ2UsCisJJ1N1YkEnIDogYWxsX3N1YmNsYXNzZXMsCisJJ1N1YkMnIDogc3ViY2xhc3NlcywKKwknRUQwOCcgOiBSZW1lbWJlcl9mb250LAorCSdFRDA5JyA6IFJlbWVtYmVyX3NlbGVjdGlvbiwKKwknVkMwMScgOiBWQ1NfQWN0aXZlLAorCSdFcnJMJyA6IGxpbmVOdW1iZXIsCisJJ0VEMDEnIDogRmxhc2hfZGVsYXksCisJJ0VEMDInIDogRHluYW1pY19zY3JvbGwsCisJJ0VEMDMnIDogQmFsYW5jZSwKKwknRUQwNCcgOiBVc2VfRHJhZ19fMjZfX0Ryb3BfRWRpdGluZywKKwknRUQwNScgOiBTYXZlX29uX3VwZGF0ZSwKKwknRUQwNicgOiBTb3J0X0Z1bmN0aW9uX1BvcHVwLAorCSdFRDA3JyA6IFVzZV9NdWx0aXBsZV9VbmRvLAorCSdSZWN1JyA6IHJlY3Vyc2l2ZSwKKwknSW5jRicgOiBpbmNsdWRlcywKKwknZmlsZScgOiBkaXNrX2ZpbGUsCisJJ1RBMDMnIDogUHJlY29tcGlsZWQsCisJJ1dlYWsnIDogd2Vha19saW5rLAorCSdEY1N0JyA6IGRlY2xhcmF0aW9uX3N0YXJ0X29mZnNldCwKKwkncHRwcycgOiBUZXh0X3NpemUsCisJJ1N0YXQnIDogc3RhdGljLAorCSdFRDEwJyA6IFJlbWVtYmVyX3dpbmRvdywKKwknRVgxMycgOiBIb25vcl9Qcm9qZWN0b3JfU3RhdGVfZm9yX1Byb2plY3RzLAorCSdEZkVuJyA6IGltcGxlbWVudGF0aW9uX2VuZF9vZmZzZXQsCisJJ0JXMDUnIDogR2xvYmFsc19Db2xvciwKKwknRk4wMScgOiBBdXRvX2luZGVudCwKKwknUHVyZycgOiBwdXJnZWFibGUsCisJJ051bUYnIDogZmlsZWNvdW50LAorCSdBY2NlJyA6IGFjY2VzcywKKwknUHJvdCcgOiBwcm90ZWN0ZWQsCisJJ0RjRmwnIDogZGVjbGFyYXRpb25fZmlsZSwKKwknS1cwNCcgOiBDdXN0b21fY29sb3JfNCwKKwknRUQxMycgOiBCYWNrZ3JvdW5kX0NvbG9yLAorCSdFRDEyJyA6IE1haW5fVGV4dF9Db2xvciwKKwknU3ltRycgOiBzeW1ib2xzLAorCSdGTjAyJyA6IFRhYl9zaXplLAorCSdFRDE0JyA6IENvbnRleHRfUG9wdXBfRGVsYXksCit9CisKK19jb21wZGVjbGFyYXRpb25zID0geworfQorCitfZW51bWRlY2xhcmF0aW9ucyA9IHsKKwknRXJyVCcgOiBfRW51bV9FcnJULAorCSdQUHJtJyA6IF9FbnVtX1BQcm0sCisJJ1JlZlAnIDogX0VudW1fUmVmUCwKKwknQWNjZScgOiBfRW51bV9BY2NlLAorCSdTcmNUJyA6IF9FbnVtX1NyY1QsCisJJ01vZGUnIDogX0VudW1fTW9kZSwKKwknSW50ZScgOiBfRW51bV9JbnRlLAorCSdzYXZvJyA6IF9FbnVtX3Nhdm8sCisJJ0xhbmcnIDogX0VudW1fTGFuZywKK30KZGlmZiAtLWdpdCBhL01hYy9MaWIvc2NyaXB0aW5nL1F1aWNrRHJhd19HcmFwaGljc19TdWl0ZS5weSBiL01hYy9MaWIvc2NyaXB0aW5nL1F1aWNrRHJhd19HcmFwaGljc19TdWl0ZS5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wOTI0NGNiCi0tLSAvZGV2L251bGwKKysrIGIvTWFjL0xpYi9zY3JpcHRpbmcvUXVpY2tEcmF3X0dyYXBoaWNzX1N1aXRlLnB5CkBAIC0wLDAgKzEsNDExIEBACisiIiJTdWl0ZSBRdWlja0RyYXcgR3JhcGhpY3MgU3VpdGU6IEEgc2V0IG9mIGJhc2ljIGNsYXNzZXMgZm9yIGdyYXBoaWNzCitMZXZlbCAxLCB2ZXJzaW9uIDEKKworR2VuZXJhdGVkIGZyb20gZmxhcDpTeXN0ZW0gRm9sZGVyOkV4dGVuc2lvbnM6U2NyaXB0aW5nIEFkZGl0aW9uczpEaWFsZWN0czpFbmdsaXNoIERpYWxlY3QKK0FFVEUvQUVVVCByZXNvdXJjZSB2ZXJzaW9uIDEvMCwgbGFuZ3VhZ2UgMCwgc2NyaXB0IDAKKyIiIgorCitpbXBvcnQgYWV0b29scworaW1wb3J0IE1hY09TCisKK19jb2RlID0gJ3FkcncnCisKK2NsYXNzIFF1aWNrRHJhd19HcmFwaGljc19TdWl0ZToKKworCXBhc3MKKworCitjbGFzcyBhcmMoYWV0b29scy5Db21wb25lbnRJdGVtKToKKwkiIiJhcmMgLSBBbiBhcmMiIiIKKwl3YW50ID0gJ2NhcmMnCitjbGFzcyBhcmNfYW5nbGUoYWV0b29scy5OUHJvcGVydHkpOgorCSIiImFyYyBhbmdsZSAtIEFuZ2xlIG9mIHRoZSBhcmMgaW4gZGVncmVlcyIiIgorCXdoaWNoID0gJ3BhcmMnCisJd2FudCA9ICdmaXhkJworY2xhc3MgYm91bmRzKGFldG9vbHMuTlByb3BlcnR5KToKKwkiIiJib3VuZHMgLSB0aGUgc21hbGxlc3QgcmVjdGFuZ2xlIHRoYXQgY29udGFpbnMgdGhlIGVudGlyZSBhcmMiIiIKKwl3aGljaCA9ICdwYm5kJworCXdhbnQgPSAncWRydCcKK2NsYXNzIF9jbGFzcyhhZXRvb2xzLk5Qcm9wZXJ0eSk6CisJIiIiY2xhc3MgLSB0aGUgY2xhc3MiIiIKKwl3aGljaCA9ICdwY2xzJworCXdhbnQgPSAndHlwZScKK2NsYXNzIGRlZmluaXRpb25fcmVjdChhZXRvb2xzLk5Qcm9wZXJ0eSk6CisJIiIiZGVmaW5pdGlvbiByZWN0IC0gdGhlIHJlY3RhbmdsZSB0aGF0IGNvbnRhaW5zIHRoZSBjaXJjbGUgb3Igb3ZhbCB1c2VkIHRvIGRlZmluZSB0aGUgYXJjIiIiCisJd2hpY2ggPSAncGRydCcKKwl3YW50ID0gJ3FkcnQnCitjbGFzcyBmaWxsX2NvbG9yKGFldG9vbHMuTlByb3BlcnR5KToKKwkiIiJmaWxsIGNvbG9yIC0gdGhlIGZpbGwgY29sb3IiIiIKKwl3aGljaCA9ICdmbGNsJworCXdhbnQgPSAnY1JHQicKK2NsYXNzIGZpbGxfcGF0dGVybihhZXRvb2xzLk5Qcm9wZXJ0eSk6CisJIiIiZmlsbCBwYXR0ZXJuIC0gdGhlIGZpbGwgcGF0dGVybiIiIgorCXdoaWNoID0gJ2ZscHQnCisJd2FudCA9ICdjcGl4JworY2xhc3MgcGVuX2NvbG9yKGFldG9vbHMuTlByb3BlcnR5KToKKwkiIiJwZW4gY29sb3IgLSB0aGUgcGVuIGNvbG9yIiIiCisJd2hpY2ggPSAncHBjbCcKKwl3YW50ID0gJ2NSR0InCitjbGFzcyBwZW5fcGF0dGVybihhZXRvb2xzLk5Qcm9wZXJ0eSk6CisJIiIicGVuIHBhdHRlcm4gLSB0aGUgcGVuIHBhdHRlcm4iIiIKKwl3aGljaCA9ICdwcHBhJworCXdhbnQgPSAnY3BpeCcKK2NsYXNzIHBlbl93aWR0aChhZXRvb2xzLk5Qcm9wZXJ0eSk6CisJIiIicGVuIHdpZHRoIC0gdGhlIHBlbiB3aWR0aCIiIgorCXdoaWNoID0gJ3Bwd2QnCisJd2FudCA9ICdzaG9yJworY2xhc3Mgc3RhcnRfYW5nbGUoYWV0b29scy5OUHJvcGVydHkpOgorCSIiInN0YXJ0IGFuZ2xlIC0gdGhlIGFuZ2xlIHRoYXQgZGVmaW5lcyB0aGUgc3RhcnQgb2YgdGhlIGFyYywgaW4gZGVncmVlcyIiIgorCXdoaWNoID0gJ3BhbmcnCisJd2FudCA9ICdmaXhkJworY2xhc3MgdHJhbnNmZXJfbW9kZShhZXRvb2xzLk5Qcm9wZXJ0eSk6CisJIiIidHJhbnNmZXIgbW9kZSAtIHRoZSB0cmFuc2ZlciBtb2RlIiIiCisJd2hpY2ggPSAncHB0bScKKwl3YW50ID0gJ3RyYW4nCisKK2FyY3MgPSBhcmMKKworY2xhc3MgZHJhd2luZ19hcmVhKGFldG9vbHMuQ29tcG9uZW50SXRlbSk6CisJIiIiZHJhd2luZyBhcmVhIC0gQ29udGFpbmVyIGZvciBncmFwaGljcyBhbmQgc3VwcG9ydGluZyBpbmZvcm1hdGlvbiIiIgorCXdhbnQgPSAnY2RydycKK2NsYXNzIGJhY2tncm91bmRfY29sb3IoYWV0b29scy5OUHJvcGVydHkpOgorCSIiImJhY2tncm91bmQgY29sb3IgLSB0aGUgY29sb3IgdXNlZCB0byBmaWxsIGluIHVub2NjdXBpZWQgYXJlYXMiIiIKKwl3aGljaCA9ICdwYmNsJworCXdhbnQgPSAnY1JHQicKK2NsYXNzIGJhY2tncm91bmRfcGF0dGVybihhZXRvb2xzLk5Qcm9wZXJ0eSk6CisJIiIiYmFja2dyb3VuZCBwYXR0ZXJuIC0gdGhlIHBhdHRlcm4gdXNlZCB0byBmaWxsIGluIHVub2NjdXBpZWQgYXJlYXMiIiIKKwl3aGljaCA9ICdwYnB0JworCXdhbnQgPSAnY3BpeCcKK2NsYXNzIGNvbG9yX3RhYmxlKGFldG9vbHMuTlByb3BlcnR5KToKKwkiIiJjb2xvciB0YWJsZSAtIHRoZSBjb2xvciB0YWJsZSIiIgorCXdoaWNoID0gJ2NsdGInCisJd2FudCA9ICdjbHJ0JworY2xhc3Mgb3JkZXJpbmcoYWV0b29scy5OUHJvcGVydHkpOgorCSIiIm9yZGVyaW5nIC0gdGhlIG9yZGVyZWQgbGlzdCBvZiBncmFwaGljIG9iamVjdHMgaW4gdGhlIGRyYXdpbmcgYXJlYSIiIgorCXdoaWNoID0gJ2dvYnMnCisJd2FudCA9ICdvYmogJworY2xhc3MgbmFtZShhZXRvb2xzLk5Qcm9wZXJ0eSk6CisJIiIibmFtZSAtIHRoZSBuYW1lIiIiCisJd2hpY2ggPSAncG5hbScKKwl3YW50ID0gJ2l0eHQnCitjbGFzcyBkZWZhdWx0X2xvY2F0aW9uKGFldG9vbHMuTlByb3BlcnR5KToKKwkiIiJkZWZhdWx0IGxvY2F0aW9uIC0gdGhlIGRlZmF1bHQgbG9jYXRpb24gb2YgZWFjaCBuZXcgZ3JhcGhpYyBvYmplY3QiIiIKKwl3aGljaCA9ICdwbmVsJworCXdhbnQgPSAnUURwdCcKK2NsYXNzIHBpeGVsX2RlcHRoKGFldG9vbHMuTlByb3BlcnR5KToKKwkiIiJwaXhlbCBkZXB0aCAtIEJpdHMgcGVyIHBpeGVsIiIiCisJd2hpY2ggPSAncGRwdCcKKwl3YW50ID0gJ3Nob3InCitjbGFzcyB3cml0aW5nX2NvZGUoYWV0b29scy5OUHJvcGVydHkpOgorCSIiIndyaXRpbmcgY29kZSAtIHRoZSBzY3JpcHQgc3lzdGVtIGFuZCBsYW5ndWFnZSBvZiB0ZXh0IG9iamVjdHMgaW4gdGhlIGRyYXdpbmcgYXJlYSIiIgorCXdoaWNoID0gJ3BzY3QnCisJd2FudCA9ICdpbnRsJworY2xhc3MgdGV4dF9jb2xvcihhZXRvb2xzLk5Qcm9wZXJ0eSk6CisJIiIidGV4dCBjb2xvciAtIHRoZSBkZWZhdWx0IGNvbG9yIGZvciB0ZXh0IG9iamVjdHMiIiIKKwl3aGljaCA9ICdwdHhjJworCXdhbnQgPSAnY1JHQicKK2NsYXNzIGRlZmF1bHRfZm9udChhZXRvb2xzLk5Qcm9wZXJ0eSk6CisJIiIiZGVmYXVsdCBmb250IC0gdGhlIG5hbWUgb2YgdGhlIGRlZmF1bHQgZm9udCBmb3IgdGV4dCBvYmplY3RzIiIiCisJd2hpY2ggPSAncHR4ZicKKwl3YW50ID0gJ2l0eHQnCitjbGFzcyBkZWZhdWx0X3NpemUoYWV0b29scy5OUHJvcGVydHkpOgorCSIiImRlZmF1bHQgc2l6ZSAtIHRoZSBkZWZhdWx0IHNpemUgZm9yIHRleHQgb2JqZWN0cyIiIgorCXdoaWNoID0gJ3B0cHMnCisJd2FudCA9ICdmaXhkJworY2xhc3Mgc3R5bGUoYWV0b29scy5OUHJvcGVydHkpOgorCSIiInN0eWxlIC0gdGhlIGRlZmF1bHQgdGV4dCBzdHlsZSBmb3IgdGV4dCBvYmplY3RzIiIiCisJd2hpY2ggPSAndHhzdCcKKwl3YW50ID0gJ3RzdHknCitjbGFzcyB1cGRhdGVfb25fY2hhbmdlKGFldG9vbHMuTlByb3BlcnR5KToKKwkiIiJ1cGRhdGUgb24gY2hhbmdlIC0gUmVkcmF3IGFmdGVyIGVhY2ggY2hhbmdlPyIiIgorCXdoaWNoID0gJ3B1cGQnCisJd2FudCA9ICdib29sJworCitkcmF3aW5nX2FyZWFzID0gZHJhd2luZ19hcmVhCisKK2NsYXNzIGdyYXBoaWNfbGluZShhZXRvb2xzLkNvbXBvbmVudEl0ZW0pOgorCSIiImdyYXBoaWMgbGluZSAtIEEgZ3JhcGhpYyBsaW5lIiIiCisJd2FudCA9ICdnbGluJworY2xhc3MgZGFzaF9zdHlsZShhZXRvb2xzLk5Qcm9wZXJ0eSk6CisJIiIiZGFzaCBzdHlsZSAtIHRoZSBkYXNoIHN0eWxlIiIiCisJd2hpY2ggPSAncGRzdCcKKwl3YW50ID0gJ3RkYXMnCitjbGFzcyBlbmRfcG9pbnQoYWV0b29scy5OUHJvcGVydHkpOgorCSIiImVuZCBwb2ludCAtIHRoZSBlbmRpbmcgcG9pbnQgb2YgdGhlIGxpbmUiIiIKKwl3aGljaCA9ICdwZW5kJworCXdhbnQgPSAnUURwdCcKK2NsYXNzIGFycm93X3N0eWxlKGFldG9vbHMuTlByb3BlcnR5KToKKwkiIiJhcnJvdyBzdHlsZSAtIHRoZSBhcnJvdyBzdHlsZSIiIgorCXdoaWNoID0gJ2Fycm8nCisJd2FudCA9ICdhcnJvJworY2xhc3Mgc3RhcnRfcG9pbnQoYWV0b29scy5OUHJvcGVydHkpOgorCSIiInN0YXJ0IHBvaW50IC0gdGhlIHN0YXJ0aW5nIHBvaW50IG9mIHRoZSBsaW5lIiIiCisJd2hpY2ggPSAncHN0cCcKKwl3YW50ID0gJ1FEcHQnCisKK2dyYXBoaWNfbGluZXMgPSBncmFwaGljX2xpbmUKKworY2xhc3MgZ3JhcGhpY19vYmplY3QoYWV0b29scy5Db21wb25lbnRJdGVtKToKKwkiIiJncmFwaGljIG9iamVjdCAtIEEgZ3JhcGhpYyBvYmplY3QiIiIKKwl3YW50ID0gJ2Nnb2InCisKK2dyYXBoaWNfb2JqZWN0cyA9IGdyYXBoaWNfb2JqZWN0CisKK2NsYXNzIGdyYXBoaWNfc2hhcGUoYWV0b29scy5Db21wb25lbnRJdGVtKToKKwkiIiJncmFwaGljIHNoYXBlIC0gQSBncmFwaGljIHNoYXBlIiIiCisJd2FudCA9ICdjZ3NoJworCitncmFwaGljX3NoYXBlcyA9IGdyYXBoaWNfc2hhcGUKKworY2xhc3MgZ3JhcGhpY190ZXh0KGFldG9vbHMuQ29tcG9uZW50SXRlbSk6CisJIiIiZ3JhcGhpYyB0ZXh0IC0gQSBzZXJpZXMgb2YgY2hhcmFjdGVycyB3aXRoaW4gYSBkcmF3aW5nIGFyZWEiIiIKKwl3YW50ID0gJ2NndHgnCitjbGFzcyBjb2xvcihhZXRvb2xzLk5Qcm9wZXJ0eSk6CisJIiIiY29sb3IgLSB0aGUgY29sb3Igb2YgdGhlIGZpcnN0IGNoYXJhY3RlciIiIgorCXdoaWNoID0gJ2NvbHInCisJd2FudCA9ICdjUkdCJworY2xhc3MgZm9udChhZXRvb2xzLk5Qcm9wZXJ0eSk6CisJIiIiZm9udCAtIHRoZSBuYW1lIG9mIHRoZSBmb250IG9mIHRoZSBmaXJzdCBjaGFyYWN0ZXIiIiIKKwl3aGljaCA9ICdmb250JworCXdhbnQgPSAnY3R4dCcKK2NsYXNzIHNpemUoYWV0b29scy5OUHJvcGVydHkpOgorCSIiInNpemUgLSB0aGUgc2l6ZSBpbiBwb2ludHMgb2YgdGhlIGZpcnN0IGNoYXJhY3RlciIiIgorCXdoaWNoID0gJ3B0c3onCisJd2FudCA9ICdmaXhkJworY2xhc3MgdW5pZm9ybV9zdHlsZXMoYWV0b29scy5OUHJvcGVydHkpOgorCSIiInVuaWZvcm0gc3R5bGVzIC0gdGhlIHRleHQgc3R5bGVzIHRoYXQgYXJlIHVuaWZvcm0gdGhyb3VnaG91dCB0aGUgdGV4dCIiIgorCXdoaWNoID0gJ3VzdGwnCisJd2FudCA9ICd0c3R5JworCitjbGFzcyBncmFwaGljX2dyb3VwKGFldG9vbHMuQ29tcG9uZW50SXRlbSk6CisJIiIiZ3JhcGhpYyBncm91cCAtIEdyb3VwIG9mIGdyYXBoaWNzIiIiCisJd2FudCA9ICdjcGljJworCitncmFwaGljX2dyb3VwcyA9IGdyYXBoaWNfZ3JvdXAKKworY2xhc3Mgb3ZhbChhZXRvb2xzLkNvbXBvbmVudEl0ZW0pOgorCSIiIm92YWwgLSBBbiBvdmFsIiIiCisJd2FudCA9ICdjb3ZsJworCitvdmFscyA9IG92YWwKKworY2xhc3MgcGl4ZWwoYWV0b29scy5Db21wb25lbnRJdGVtKToKKwkiIiJwaXhlbCAtIEEgcGl4ZWwiIiIKKwl3YW50ID0gJ2NweGwnCisjIHJlcGVhdGVkIHByb3BlcnR5IGNvbG9yIHRoZSBjb2xvcgorCitwaXhlbHMgPSBwaXhlbAorCitjbGFzcyBwaXhlbF9tYXAoYWV0b29scy5Db21wb25lbnRJdGVtKToKKwkiIiJwaXhlbCBtYXAgLSBBIHBpeGVsIG1hcCIiIgorCXdhbnQgPSAnY3BpeCcKKworcGl4ZWxfbWFwcyA9IHBpeGVsX21hcAorCitjbGFzcyBwb2x5Z29uKGFldG9vbHMuQ29tcG9uZW50SXRlbSk6CisJIiIicG9seWdvbiAtIEEgcG9seWdvbiIiIgorCXdhbnQgPSAnY3BnbicKK2NsYXNzIHBvaW50X2xpc3QoYWV0b29scy5OUHJvcGVydHkpOgorCSIiInBvaW50IGxpc3QgLSB0aGUgbGlzdCBvZiBwb2ludHMgdGhhdCBkZWZpbmUgdGhlIHBvbHlnb24iIiIKKwl3aGljaCA9ICdwdGx0JworCXdhbnQgPSAnUURwdCcKKworcG9seWdvbnMgPSBwb2x5Z29uCisKK2NsYXNzIHJlY3RhbmdsZShhZXRvb2xzLkNvbXBvbmVudEl0ZW0pOgorCSIiInJlY3RhbmdsZSAtIEEgcmVjdGFuZ2xlIiIiCisJd2FudCA9ICdjcmVjJworCityZWN0YW5nbGVzID0gcmVjdGFuZ2xlCisKK2NsYXNzIHJvdW5kZWRfcmVjdGFuZ2xlKGFldG9vbHMuQ29tcG9uZW50SXRlbSk6CisJIiIicm91bmRlZCByZWN0YW5nbGUgLSBBIHJvdW5kZWQgcmVjdGFuZ2xlIiIiCisJd2FudCA9ICdjcnJjJworY2xhc3MgY29ybmVyX2N1cnZlX2hlaWdodChhZXRvb2xzLk5Qcm9wZXJ0eSk6CisJIiIiY29ybmVyIGN1cnZlIGhlaWdodCAtIHRoZSBoZWlnaHQgb2YgdGhlIG92YWwgdXNlZCB0byBkZWZpbmUgdGhlIHNoYXBlIG9mIHRoZSByb3VuZGVkIGNvcm5lcnMiIiIKKwl3aGljaCA9ICdwY2hkJworCXdhbnQgPSAnc2hvcicKK2NsYXNzIGNvcm5lcl9jdXJ2ZV93aWR0aChhZXRvb2xzLk5Qcm9wZXJ0eSk6CisJIiIiY29ybmVyIGN1cnZlIHdpZHRoIC0gdGhlIHdpZHRoIG9mIHRoZSBvdmFsIHVzZWQgdG8gZGVmaW5lIHRoZSBzaGFwZSBvZiB0aGUgcm91bmRlZCBjb3JuZXJzIiIiCisJd2hpY2ggPSAncGN3ZCcKKwl3YW50ID0gJ3Nob3InCisKK3JvdW5kZWRfcmVjdGFuZ2xlcyA9IHJvdW5kZWRfcmVjdGFuZ2xlCithcmMuX3Byb3BkaWN0ID0geworCSdhcmNfYW5nbGUnIDogYXJjX2FuZ2xlLAorCSdib3VuZHMnIDogYm91bmRzLAorCSdfY2xhc3MnIDogX2NsYXNzLAorCSdkZWZpbml0aW9uX3JlY3QnIDogZGVmaW5pdGlvbl9yZWN0LAorCSdmaWxsX2NvbG9yJyA6IGZpbGxfY29sb3IsCisJJ2ZpbGxfcGF0dGVybicgOiBmaWxsX3BhdHRlcm4sCisJJ3Blbl9jb2xvcicgOiBwZW5fY29sb3IsCisJJ3Blbl9wYXR0ZXJuJyA6IHBlbl9wYXR0ZXJuLAorCSdwZW5fd2lkdGgnIDogcGVuX3dpZHRoLAorCSdzdGFydF9hbmdsZScgOiBzdGFydF9hbmdsZSwKKwkndHJhbnNmZXJfbW9kZScgOiB0cmFuc2Zlcl9tb2RlLAorfQorYXJjLl9lbGVtZGljdCA9IHsKK30KK2RyYXdpbmdfYXJlYS5fcHJvcGRpY3QgPSB7CisJJ2JhY2tncm91bmRfY29sb3InIDogYmFja2dyb3VuZF9jb2xvciwKKwknYmFja2dyb3VuZF9wYXR0ZXJuJyA6IGJhY2tncm91bmRfcGF0dGVybiwKKwknY29sb3JfdGFibGUnIDogY29sb3JfdGFibGUsCisJJ29yZGVyaW5nJyA6IG9yZGVyaW5nLAorCSduYW1lJyA6IG5hbWUsCisJJ2RlZmF1bHRfbG9jYXRpb24nIDogZGVmYXVsdF9sb2NhdGlvbiwKKwkncGl4ZWxfZGVwdGgnIDogcGl4ZWxfZGVwdGgsCisJJ3dyaXRpbmdfY29kZScgOiB3cml0aW5nX2NvZGUsCisJJ3RleHRfY29sb3InIDogdGV4dF9jb2xvciwKKwknZGVmYXVsdF9mb250JyA6IGRlZmF1bHRfZm9udCwKKwknZGVmYXVsdF9zaXplJyA6IGRlZmF1bHRfc2l6ZSwKKwknc3R5bGUnIDogc3R5bGUsCisJJ3VwZGF0ZV9vbl9jaGFuZ2UnIDogdXBkYXRlX29uX2NoYW5nZSwKK30KK2RyYXdpbmdfYXJlYS5fZWxlbWRpY3QgPSB7Cit9CitncmFwaGljX2xpbmUuX3Byb3BkaWN0ID0geworCSdkYXNoX3N0eWxlJyA6IGRhc2hfc3R5bGUsCisJJ2VuZF9wb2ludCcgOiBlbmRfcG9pbnQsCisJJ2Fycm93X3N0eWxlJyA6IGFycm93X3N0eWxlLAorCSdzdGFydF9wb2ludCcgOiBzdGFydF9wb2ludCwKK30KK2dyYXBoaWNfbGluZS5fZWxlbWRpY3QgPSB7Cit9CitncmFwaGljX29iamVjdC5fcHJvcGRpY3QgPSB7Cit9CitncmFwaGljX29iamVjdC5fZWxlbWRpY3QgPSB7Cit9CitncmFwaGljX3NoYXBlLl9wcm9wZGljdCA9IHsKK30KK2dyYXBoaWNfc2hhcGUuX2VsZW1kaWN0ID0geworfQorZ3JhcGhpY190ZXh0Ll9wcm9wZGljdCA9IHsKKwknY29sb3InIDogY29sb3IsCisJJ2ZvbnQnIDogZm9udCwKKwknc2l6ZScgOiBzaXplLAorCSd1bmlmb3JtX3N0eWxlcycgOiB1bmlmb3JtX3N0eWxlcywKK30KK2dyYXBoaWNfdGV4dC5fZWxlbWRpY3QgPSB7Cit9CitncmFwaGljX2dyb3VwLl9wcm9wZGljdCA9IHsKK30KK2dyYXBoaWNfZ3JvdXAuX2VsZW1kaWN0ID0geworfQorb3ZhbC5fcHJvcGRpY3QgPSB7Cit9CitvdmFsLl9lbGVtZGljdCA9IHsKK30KK3BpeGVsLl9wcm9wZGljdCA9IHsKKwknY29sb3InIDogY29sb3IsCit9CitwaXhlbC5fZWxlbWRpY3QgPSB7Cit9CitwaXhlbF9tYXAuX3Byb3BkaWN0ID0geworfQorcGl4ZWxfbWFwLl9lbGVtZGljdCA9IHsKK30KK3BvbHlnb24uX3Byb3BkaWN0ID0geworCSdwb2ludF9saXN0JyA6IHBvaW50X2xpc3QsCit9Citwb2x5Z29uLl9lbGVtZGljdCA9IHsKK30KK3JlY3RhbmdsZS5fcHJvcGRpY3QgPSB7Cit9CityZWN0YW5nbGUuX2VsZW1kaWN0ID0geworfQorcm91bmRlZF9yZWN0YW5nbGUuX3Byb3BkaWN0ID0geworCSdjb3JuZXJfY3VydmVfaGVpZ2h0JyA6IGNvcm5lcl9jdXJ2ZV9oZWlnaHQsCisJJ2Nvcm5lcl9jdXJ2ZV93aWR0aCcgOiBjb3JuZXJfY3VydmVfd2lkdGgsCit9Cityb3VuZGVkX3JlY3RhbmdsZS5fZWxlbWRpY3QgPSB7Cit9CitfRW51bV90cmFuID0geworCSdjb3B5X3BpeGVscycgOiAnY3B5ICcsCSMgCisJJ25vdF9jb3B5X3BpeGVscycgOiAnbmNweScsCSMgCisJJ29yX3BpeGVscycgOiAnb3IgICcsCSMgCisJJ25vdF9vcl9waXhlbHMnIDogJ250b3InLAkjIAorCSdiaWNfcGl4ZWxzJyA6ICdiaWMgJywJIyAKKwknbm90X2JpY19waXhlbHMnIDogJ25iaWMnLAkjIAorCSd4b3JfcGl4ZWxzJyA6ICd4b3IgJywJIyAKKwknbm90X3hvcl9waXhlbHMnIDogJ254b3InLAkjIAorCSdhZGRfb3Zlcl9waXhlbHMnIDogJ2FkZG8nLAkjIAorCSdhZGRfcGluX3BpeGVscycgOiAnYWRkcCcsCSMgCisJJ3N1Yl9vdmVyX3BpeGVscycgOiAnc3VibycsCSMgCisJJ3N1Yl9waW5fcGl4ZWxzJyA6ICdzdWJwJywJIyAKKwknYWRfbWF4X3BpeGVscycgOiAnYWRteCcsCSMgCisJJ2FkX21pbl9waXhlbHMnIDogJ2FkbW4nLAkjIAorCSdibGVuZF9waXhlbHMnIDogJ2JsbmQnLAkjIAorfQorCitfRW51bV9hcnJvID0geworCSdub19hcnJvdycgOiAnYXJubycsCSMgTm8gYXJyb3cgb24gbGluZQorCSdhcnJvd19hdF9zdGFydCcgOiAnYXJzdCcsCSMgQXJyb3cgYXQgc3RhcnQgb2YgbGluZQorCSdhcnJvd19hdF9lbmQnIDogJ2FyZW4nLAkjIEFycm93IGF0IGVuZCBvZiBsaW5lCisJJ2Fycm93X2F0X2JvdGhfZW5kcycgOiAnYXJibycsCSMgQXJyb3cgYXQgYm90aCB0aGUgc3RhcnQgYW5kIHRoZSBlbmQgb2YgdGhlIGxpbmUKK30KKworCisjCisjIEluZGljZXMgb2YgdHlwZXMgZGVjbGFyZWQgaW4gdGhpcyBtb2R1bGUKKyMKK19jbGFzc2RlY2xhcmF0aW9ucyA9IHsKKwknY3JlYycgOiByZWN0YW5nbGUsCisJJ2NwaXgnIDogcGl4ZWxfbWFwLAorCSdjYXJjJyA6IGFyYywKKwknY2dzaCcgOiBncmFwaGljX3NoYXBlLAorCSdjcHhsJyA6IHBpeGVsLAorCSdjcnJjJyA6IHJvdW5kZWRfcmVjdGFuZ2xlLAorCSdjcGduJyA6IHBvbHlnb24sCisJJ2NkcncnIDogZHJhd2luZ19hcmVhLAorCSdjZ29iJyA6IGdyYXBoaWNfb2JqZWN0LAorCSdnbGluJyA6IGdyYXBoaWNfbGluZSwKKwknY2d0eCcgOiBncmFwaGljX3RleHQsCisJJ2NvdmwnIDogb3ZhbCwKKwknY3BpYycgOiBncmFwaGljX2dyb3VwLAorfQorCitfcHJvcGRlY2xhcmF0aW9ucyA9IHsKKwkncGVuZCcgOiBlbmRfcG9pbnQsCisJJ3B1cGQnIDogdXBkYXRlX29uX2NoYW5nZSwKKwkncHN0cCcgOiBzdGFydF9wb2ludCwKKwkncGRydCcgOiBkZWZpbml0aW9uX3JlY3QsCisJJ3BuYW0nIDogbmFtZSwKKwkncGJjbCcgOiBiYWNrZ3JvdW5kX2NvbG9yLAorCSdwcHRtJyA6IHRyYW5zZmVyX21vZGUsCisJJ3BuZWwnIDogZGVmYXVsdF9sb2NhdGlvbiwKKwkncGRwdCcgOiBwaXhlbF9kZXB0aCwKKwknZ29icycgOiBvcmRlcmluZywKKwkndXN0bCcgOiB1bmlmb3JtX3N0eWxlcywKKwkncHRsdCcgOiBwb2ludF9saXN0LAorCSdwZHN0JyA6IGRhc2hfc3R5bGUsCisJJ3BzY3QnIDogd3JpdGluZ19jb2RlLAorCSd0eHN0JyA6IHN0eWxlLAorCSdmb250JyA6IGZvbnQsCisJJ3BjaGQnIDogY29ybmVyX2N1cnZlX2hlaWdodCwKKwkncGNscycgOiBfY2xhc3MsCisJJ3Bwd2QnIDogcGVuX3dpZHRoLAorCSdwdHBzJyA6IGRlZmF1bHRfc2l6ZSwKKwkncHBjbCcgOiBwZW5fY29sb3IsCisJJ3B0eGYnIDogZGVmYXVsdF9mb250LAorCSdwY3dkJyA6IGNvcm5lcl9jdXJ2ZV93aWR0aCwKKwkncHR4YycgOiB0ZXh0X2NvbG9yLAorCSdjbHRiJyA6IGNvbG9yX3RhYmxlLAorCSdwcHBhJyA6IHBlbl9wYXR0ZXJuLAorCSdwYW5nJyA6IHN0YXJ0X2FuZ2xlLAorCSdmbHB0JyA6IGZpbGxfcGF0dGVybiwKKwknY29scicgOiBjb2xvciwKKwknYXJybycgOiBhcnJvd19zdHlsZSwKKwkncGJuZCcgOiBib3VuZHMsCisJJ3B0c3onIDogc2l6ZSwKKwkncGFyYycgOiBhcmNfYW5nbGUsCisJJ2ZsY2wnIDogZmlsbF9jb2xvciwKKwkncGJwdCcgOiBiYWNrZ3JvdW5kX3BhdHRlcm4sCit9CisKK19jb21wZGVjbGFyYXRpb25zID0geworfQorCitfZW51bWRlY2xhcmF0aW9ucyA9IHsKKwkndHJhbicgOiBfRW51bV90cmFuLAorCSdhcnJvJyA6IF9FbnVtX2Fycm8sCit9CmRpZmYgLS1naXQgYS9NYWMvTGliL3NjcmlwdGluZy9RdWlja0RyYXdfR3JhcGhpY3NfU3VwcGxlbWVudGFsIGIvTWFjL0xpYi9zY3JpcHRpbmcvUXVpY2tEcmF3X0dyYXBoaWNzX1N1cHBsZW1lbnRhbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45NjY2ODQyCi0tLSAvZGV2L251bGwKKysrIGIvTWFjL0xpYi9zY3JpcHRpbmcvUXVpY2tEcmF3X0dyYXBoaWNzX1N1cHBsZW1lbnRhbApAQCAtMCwwICsxLDcxIEBACisiIiJTdWl0ZSBRdWlja0RyYXcgR3JhcGhpY3MgU3VwcGxlbWVudGFsIFN1aXRlOiBEZWZpbmVzIHRyYW5zZm9ybWF0aW9ucyBvZiBncmFwaGljIG9iamVjdHMKK0xldmVsIDEsIHZlcnNpb24gMQorCitHZW5lcmF0ZWQgZnJvbSBmbGFwOlN5c3RlbSBGb2xkZXI6RXh0ZW5zaW9uczpTY3JpcHRpbmcgQWRkaXRpb25zOkRpYWxlY3RzOkVuZ2xpc2ggRGlhbGVjdAorQUVURS9BRVVUIHJlc291cmNlIHZlcnNpb24gMS8wLCBsYW5ndWFnZSAwLCBzY3JpcHQgMAorIiIiCisKK2ltcG9ydCBhZXRvb2xzCitpbXBvcnQgTWFjT1MKKworX2NvZGUgPSAncWRzcCcKKworY2xhc3MgUXVpY2tEcmF3X0dyYXBoaWNzX1N1cHBsZW1lbnRhbF9TdWl0ZToKKworCXBhc3MKKworCitjbGFzcyBkcmF3aW5nX2FyZWEoYWV0b29scy5Db21wb25lbnRJdGVtKToKKwkiIiJkcmF3aW5nIGFyZWEgLSBDb250YWluZXIgZm9yIGdyYXBoaWNzIGFuZCBzdXBwb3J0aW5nIGluZm9ybWF0aW9uIiIiCisJd2FudCA9ICdjZHJ3JworY2xhc3Mgcm90YXRpb24oYWV0b29scy5OUHJvcGVydHkpOgorCSIiInJvdGF0aW9uIC0gdGhlIGRlZmF1bHQgcm90YXRpb24gZm9yIG9iamVjdHMgaW4gdGhlIGRyYXdpbmcgYXJlYSIiIgorCXdoaWNoID0gJ3Byb3QnCisJd2FudCA9ICd0cm90JworY2xhc3Mgc2NhbGUoYWV0b29scy5OUHJvcGVydHkpOgorCSIiInNjYWxlIC0gdGhlIGRlZmF1bHQgc2NhbGluZyBmb3Igb2JqZWN0cyBpbiB0aGUgZHJhd2luZyBhcmVhIiIiCisJd2hpY2ggPSAncHNjbCcKKwl3YW50ID0gJ2ZpeGQnCitjbGFzcyB0cmFuc2xhdGlvbihhZXRvb2xzLk5Qcm9wZXJ0eSk6CisJIiIidHJhbnNsYXRpb24gLSB0aGUgZGVmYXVsdCByZXBvc2l0aW9uaW5nIGZvciBvYmplY3RzIGluIHRoZSBkcmF3aW5nIGFyZWEiIiIKKwl3aGljaCA9ICdwdHJzJworCXdhbnQgPSAnUURwdCcKKworZHJhd2luZ19hcmVhcyA9IGRyYXdpbmdfYXJlYQorCitjbGFzcyBncmFwaGljX2dyb3VwKGFldG9vbHMuQ29tcG9uZW50SXRlbSk6CisJIiIiZ3JhcGhpYyBncm91cCAtIEdyb3VwIG9mIGdyYXBoaWNzIiIiCisJd2FudCA9ICdjcGljJworCitncmFwaGljX2dyb3VwcyA9IGdyYXBoaWNfZ3JvdXAKK2RyYXdpbmdfYXJlYS5fcHJvcGRpY3QgPSB7CisJJ3JvdGF0aW9uJyA6IHJvdGF0aW9uLAorCSdzY2FsZScgOiBzY2FsZSwKKwkndHJhbnNsYXRpb24nIDogdHJhbnNsYXRpb24sCit9CitkcmF3aW5nX2FyZWEuX2VsZW1kaWN0ID0geworfQorZ3JhcGhpY19ncm91cC5fcHJvcGRpY3QgPSB7Cit9CitncmFwaGljX2dyb3VwLl9lbGVtZGljdCA9IHsKK30KKworIworIyBJbmRpY2VzIG9mIHR5cGVzIGRlY2xhcmVkIGluIHRoaXMgbW9kdWxlCisjCitfY2xhc3NkZWNsYXJhdGlvbnMgPSB7CisJJ2NwaWMnIDogZ3JhcGhpY19ncm91cCwKKwknY2RydycgOiBkcmF3aW5nX2FyZWEsCit9CisKK19wcm9wZGVjbGFyYXRpb25zID0geworCSdwcm90JyA6IHJvdGF0aW9uLAorCSdwc2NsJyA6IHNjYWxlLAorCSdwdHJzJyA6IHRyYW5zbGF0aW9uLAorfQorCitfY29tcGRlY2xhcmF0aW9ucyA9IHsKK30KKworX2VudW1kZWNsYXJhdGlvbnMgPSB7Cit9CmRpZmYgLS1naXQgYS9NYWMvTGliL3Rvb2xib3gvUmVxdWlyZWRfU3VpdGUucHkgYi9NYWMvTGliL3NjcmlwdGluZy9SZXF1aXJlZF9TdWl0ZS5weQpzaW1pbGFyaXR5IGluZGV4IDkxJQpyZW5hbWUgZnJvbSBNYWMvTGliL3Rvb2xib3gvUmVxdWlyZWRfU3VpdGUucHkKcmVuYW1lIHRvIE1hYy9MaWIvc2NyaXB0aW5nL1JlcXVpcmVkX1N1aXRlLnB5CmluZGV4IDFiMjdiNmEuLmQ5YWE1YjkgMTAwNjQ0Ci0tLSBhL01hYy9MaWIvdG9vbGJveC9SZXF1aXJlZF9TdWl0ZS5weQorKysgYi9NYWMvTGliL3NjcmlwdGluZy9SZXF1aXJlZF9TdWl0ZS5weQpAQCAtMSw3ICsxLDcgQEAKICIiIlN1aXRlIFJlcXVpcmVkIFN1aXRlOiBUZXJtcyB0aGF0IGV2ZXJ5IGFwcGxpY2F0aW9uIHNob3VsZCBzdXBwb3J0CiBMZXZlbCAxLCB2ZXJzaW9uIDEKIAotR2VuZXJhdGVkIGZyb20gZmxhcDpTeXN0ZWVtbWFwOkV4dGVuc2llczpTY3JpcHQtZXh0cmEnczpEaWFsZWN0ZW46RW5nZWxzIGRpYWxlY3QKK0dlbmVyYXRlZCBmcm9tIGZsYXA6U3lzdGVtIEZvbGRlcjpFeHRlbnNpb25zOlNjcmlwdGluZyBBZGRpdGlvbnM6RGlhbGVjdHM6RW5nbGlzaCBEaWFsZWN0CiBBRVRFL0FFVVQgcmVzb3VyY2UgdmVyc2lvbiAxLzAsIGxhbmd1YWdlIDAsIHNjcmlwdCAwCiAiIiIKIApAQCAtOTAsMyArOTAsMTggQEAKIAkJaWYgX2FyZ3VtZW50cy5oYXNfa2V5KCctLS0tJyk6CiAJCQlyZXR1cm4gX2FyZ3VtZW50c1snLS0tLSddCiAKKworIworIyBJbmRpY2VzIG9mIHR5cGVzIGRlY2xhcmVkIGluIHRoaXMgbW9kdWxlCisjCitfY2xhc3NkZWNsYXJhdGlvbnMgPSB7Cit9CisKK19wcm9wZGVjbGFyYXRpb25zID0geworfQorCitfY29tcGRlY2xhcmF0aW9ucyA9IHsKK30KKworX2VudW1kZWNsYXJhdGlvbnMgPSB7Cit9CmRpZmYgLS1naXQgYS9NYWMvTGliL3Rvb2xib3gvU3RhbmRhcmRfU3VpdGUucHkgYi9NYWMvTGliL3NjcmlwdGluZy9TdGFuZGFyZF9TdWl0ZS5weQpzaW1pbGFyaXR5IGluZGV4IDY1JQpyZW5hbWUgZnJvbSBNYWMvTGliL3Rvb2xib3gvU3RhbmRhcmRfU3VpdGUucHkKcmVuYW1lIHRvIE1hYy9MaWIvc2NyaXB0aW5nL1N0YW5kYXJkX1N1aXRlLnB5CmluZGV4IGQzMGUxZGMuLjM2ZWFlZDggMTAwNjQ0Ci0tLSBhL01hYy9MaWIvdG9vbGJveC9TdGFuZGFyZF9TdWl0ZS5weQorKysgYi9NYWMvTGliL3NjcmlwdGluZy9TdGFuZGFyZF9TdWl0ZS5weQpAQCAtMSw3ICsxLDcgQEAKICIiIlN1aXRlIFN0YW5kYXJkIFN1aXRlOiBDb21tb24gdGVybXMgZm9yIG1vc3QgYXBwbGljYXRpb25zCiBMZXZlbCAxLCB2ZXJzaW9uIDEKIAotR2VuZXJhdGVkIGZyb20gZmxhcDpTeXN0ZWVtbWFwOkV4dGVuc2llczpTY3JpcHQtZXh0cmEnczpEaWFsZWN0ZW46RW5nZWxzIGRpYWxlY3QKK0dlbmVyYXRlZCBmcm9tIGZsYXA6U3lzdGVtIEZvbGRlcjpFeHRlbnNpb25zOlNjcmlwdGluZyBBZGRpdGlvbnM6RGlhbGVjdHM6RW5nbGlzaCBEaWFsZWN0CiBBRVRFL0FFVVQgcmVzb3VyY2UgdmVyc2lvbiAxLzAsIGxhbmd1YWdlIDAsIHNjcmlwdCAwCiAiIiIKIApAQCAtMTAsMzYgKzEwLDYgQEAKIAogX2NvZGUgPSAnY29yZScKIAotX0VudW1fc2F2byA9IHsKLQkneWVzJyA6ICd5ZXMgJywJIyBTYXZlIG9iamVjdHMgbm93Ci0JJ25vJyA6ICdubyAgJywJIyBEbyBub3Qgc2F2ZSBvYmplY3RzCi0JJ2FzaycgOiAnYXNrICcsCSMgQXNrIHRoZSB1c2VyIHdoZXRoZXIgdG8gc2F2ZQotfQotCi1fRW51bV9rZnJtID0gewotCSdpbmRleCcgOiAnaW5keCcsCSMga2V5Zm9ybSBkZXNpZ25hdGluZyBpbmRleGVkIGFjY2VzcwotCSduYW1lZCcgOiAnbmFtZScsCSMga2V5Zm9ybSBkZXNpZ25hdGluZyBuYW1lZCBhY2Nlc3MKLQknaWQnIDogJ0lEICAnLAkjIGtleWZvcm0gZGVzaWduYXRpbmcgYWNjZXNzIGJ5IHVuaXF1ZSBpZGVudGlmaWVyCi19Ci0KLV9FbnVtX3N0eWwgPSB7Ci0JJ3BsYWluJyA6ICdwbGFuJywJIyBQbGFpbgotCSdib2xkJyA6ICdib2xkJywJIyBCb2xkCi0JJ2l0YWxpYycgOiAnaXRhbCcsCSMgSXRhbGljCi0JJ291dGxpbmUnIDogJ291dGwnLAkjIE91dGxpbmUKLQknc2hhZG93JyA6ICdzaGFkJywJIyBTaGFkb3cKLQkndW5kZXJsaW5lJyA6ICd1bmRsJywJIyBVbmRlcmxpbmUKLQknc3VwZXJzY3JpcHQnIDogJ3Nwc2MnLAkjIFN1cGVyc2NyaXB0Ci0JJ3N1YnNjcmlwdCcgOiAnc2JzYycsCSMgU3Vic2NyaXB0Ci0JJ3N0cmlrZXRocm91Z2gnIDogJ3N0cmsnLAkjIFN0cmlrZXRocm91Z2gKLQknc21hbGxfY2FwcycgOiAnc21jcCcsCSMgU21hbGwgY2FwcwotCSdhbGxfY2FwcycgOiAnYWxjcCcsCSMgQWxsIGNhcGl0YWwgbGV0dGVycwotCSdhbGxfbG93ZXJjYXNlJyA6ICdsb3djJywJIyBMb3dlcmNhc2UKLQknY29uZGVuc2VkJyA6ICdjb25kJywJIyBDb25kZW5zZWQKLQknZXhwYW5kZWQnIDogJ3BleHAnLAkjIEV4cGFuZGVkCi0JJ2hpZGRlbicgOiAnaGlkbicsCSMgSGlkZGVuCi19Ci0KIGNsYXNzIFN0YW5kYXJkX1N1aXRlOgogCiAJX2FyZ21hcF9jbGFzc19pbmZvID0gewpAQCAtNDE3LDc3ICszODcsMzI3IEBACiAJCQlyZXR1cm4gX2FyZ3VtZW50c1snLS0tLSddCiAKIAotIyAgICBDbGFzcyAnYXBwbGljYXRpb24nICgnY2FwcCcpIC0tICdBbiBhcHBsaWNhdGlvbiBwcm9ncmFtJwotIyAgICAgICAgcHJvcGVydHkgJ2NsaXBib2FyZCcgKCdwY2xpJykgJyoqKionIC0tICd0aGUgY2xpcGJvYXJkJyBbbXV0YWJsZSBsaXN0XQotIyAgICAgICAgcHJvcGVydHkgJ2Zyb250bW9zdCcgKCdwaXNmJykgJ2Jvb2wnIC0tICdJcyB0aGlzIHRoZSBmcm9udG1vc3QgYXBwbGljYXRpb24/JyBbXQotIyAgICAgICAgcHJvcGVydHkgJ25hbWUnICgncG5hbScpICdpdHh0JyAtLSAndGhlIG5hbWUnIFtdCi0jICAgICAgICBwcm9wZXJ0eSAnc2VsZWN0aW9uJyAoJ3NlbGUnKSAnY3NlbCcgLS0gJ3RoZSBzZWxlY3Rpb24gdmlzaWJsZSB0byB0aGUgdXNlcicgW211dGFibGVdCi0jICAgICAgICBwcm9wZXJ0eSAndmVyc2lvbicgKCd2ZXJzJykgJ3ZlcnMnIC0tICd0aGUgdmVyc2lvbiBvZiB0aGUgYXBwbGljYXRpb24nIFtdCitjbGFzcyBhcHBsaWNhdGlvbihhZXRvb2xzLkNvbXBvbmVudEl0ZW0pOgorCSIiImFwcGxpY2F0aW9uIC0gQW4gYXBwbGljYXRpb24gcHJvZ3JhbSIiIgorCXdhbnQgPSAnY2FwcCcKK2NsYXNzIGNsaXBib2FyZChhZXRvb2xzLk5Qcm9wZXJ0eSk6CisJIiIiY2xpcGJvYXJkIC0gdGhlIGNsaXBib2FyZCIiIgorCXdoaWNoID0gJ3BjbGknCisJd2FudCA9ICcqKioqJworY2xhc3MgZnJvbnRtb3N0KGFldG9vbHMuTlByb3BlcnR5KToKKwkiIiJmcm9udG1vc3QgLSBJcyB0aGlzIHRoZSBmcm9udG1vc3QgYXBwbGljYXRpb24/IiIiCisJd2hpY2ggPSAncGlzZicKKwl3YW50ID0gJ2Jvb2wnCitjbGFzcyBuYW1lKGFldG9vbHMuTlByb3BlcnR5KToKKwkiIiJuYW1lIC0gdGhlIG5hbWUiIiIKKwl3aGljaCA9ICdwbmFtJworCXdhbnQgPSAnaXR4dCcKK2NsYXNzIHNlbGVjdGlvbihhZXRvb2xzLk5Qcm9wZXJ0eSk6CisJIiIic2VsZWN0aW9uIC0gdGhlIHNlbGVjdGlvbiB2aXNpYmxlIHRvIHRoZSB1c2VyIiIiCisJd2hpY2ggPSAnc2VsZScKKwl3YW50ID0gJ2NzZWwnCitjbGFzcyB2ZXJzaW9uKGFldG9vbHMuTlByb3BlcnR5KToKKwkiIiJ2ZXJzaW9uIC0gdGhlIHZlcnNpb24gb2YgdGhlIGFwcGxpY2F0aW9uIiIiCisJd2hpY2ggPSAndmVycycKKwl3YW50ID0gJ3ZlcnMnCiAKLSMgICAgQ2xhc3MgJ2FwcGxpY2F0aW9ucycgKCdjYXBwJykgLS0gJ0V2ZXJ5IGFwcGxpY2F0aW9uJwotIyAgICAgICAgcHJvcGVydHkgJycgKCdjQCMhJykgJ3R5cGUnIC0tICcnIFswXQorYXBwbGljYXRpb25zID0gYXBwbGljYXRpb24KIAotIyAgICBDbGFzcyAnY2hhcmFjdGVyJyAoJ2NoYSAnKSAtLSAnQSBjaGFyYWN0ZXInCi0jICAgICAgICBwcm9wZXJ0eSAnY29sb3InICgnY29scicpICdjUkdCJyAtLSAndGhlIGNvbG9yJyBbbXV0YWJsZV0KLSMgICAgICAgIHByb3BlcnR5ICdmb250JyAoJ2ZvbnQnKSAnY3R4dCcgLS0gJ3RoZSBuYW1lIG9mIHRoZSBmb250JyBbbXV0YWJsZV0KLSMgICAgICAgIHByb3BlcnR5ICdzaXplJyAoJ3B0c3onKSAnZml4ZCcgLS0gJ3RoZSBzaXplIGluIHBvaW50cycgW211dGFibGVdCi0jICAgICAgICBwcm9wZXJ0eSAnd3JpdGluZyBjb2RlJyAoJ3BzY3QnKSAnaW50bCcgLS0gJ3RoZSBzY3JpcHQgc3lzdGVtIGFuZCBsYW5ndWFnZScgW10KLSMgICAgICAgIHByb3BlcnR5ICdzdHlsZScgKCd0eHN0JykgJ3RzdHknIC0tICd0aGUgdGV4dCBzdHlsZScgW211dGFibGVdCi0jICAgICAgICBwcm9wZXJ0eSAndW5pZm9ybSBzdHlsZXMnICgndXN0bCcpICd0c3R5JyAtLSAndGhlIHRleHQgc3R5bGUnIFtdCitjbGFzcyBjaGFyYWN0ZXIoYWV0b29scy5Db21wb25lbnRJdGVtKToKKwkiIiJjaGFyYWN0ZXIgLSBBIGNoYXJhY3RlciIiIgorCXdhbnQgPSAnY2hhICcKK2NsYXNzIGNvbG9yKGFldG9vbHMuTlByb3BlcnR5KToKKwkiIiJjb2xvciAtIHRoZSBjb2xvciIiIgorCXdoaWNoID0gJ2NvbHInCisJd2FudCA9ICdjUkdCJworY2xhc3MgZm9udChhZXRvb2xzLk5Qcm9wZXJ0eSk6CisJIiIiZm9udCAtIHRoZSBuYW1lIG9mIHRoZSBmb250IiIiCisJd2hpY2ggPSAnZm9udCcKKwl3YW50ID0gJ2N0eHQnCitjbGFzcyBzaXplKGFldG9vbHMuTlByb3BlcnR5KToKKwkiIiJzaXplIC0gdGhlIHNpemUgaW4gcG9pbnRzIiIiCisJd2hpY2ggPSAncHRzeicKKwl3YW50ID0gJ2ZpeGQnCitjbGFzcyB3cml0aW5nX2NvZGUoYWV0b29scy5OUHJvcGVydHkpOgorCSIiIndyaXRpbmcgY29kZSAtIHRoZSBzY3JpcHQgc3lzdGVtIGFuZCBsYW5ndWFnZSIiIgorCXdoaWNoID0gJ3BzY3QnCisJd2FudCA9ICdpbnRsJworY2xhc3Mgc3R5bGUoYWV0b29scy5OUHJvcGVydHkpOgorCSIiInN0eWxlIC0gdGhlIHRleHQgc3R5bGUiIiIKKwl3aGljaCA9ICd0eHN0JworCXdhbnQgPSAndHN0eScKK2NsYXNzIHVuaWZvcm1fc3R5bGVzKGFldG9vbHMuTlByb3BlcnR5KToKKwkiIiJ1bmlmb3JtIHN0eWxlcyAtIHRoZSB0ZXh0IHN0eWxlIiIiCisJd2hpY2ggPSAndXN0bCcKKwl3YW50ID0gJ3RzdHknCiAKLSMgICAgQ2xhc3MgJ2NoYXJhY3RlcnMnICgnY2hhICcpIC0tICdFdmVyeSBjaGFyYWN0ZXInCi0jICAgICAgICBwcm9wZXJ0eSAnJyAoJ2NAIyEnKSAndHlwZScgLS0gJycgWzBdCitjaGFyYWN0ZXJzID0gY2hhcmFjdGVyCiAKLSMgICAgQ2xhc3MgJ2RvY3VtZW50JyAoJ2RvY3UnKSAtLSAnQSBkb2N1bWVudCcKLSMgICAgICAgIHByb3BlcnR5ICdtb2RpZmllZCcgKCdpbW9kJykgJ2Jvb2wnIC0tICdIYXMgdGhlIGRvY3VtZW50IGJlZW4gbW9kaWZpZWQgc2luY2UgdGhlIGxhc3Qgc2F2ZT8nIFtdCitjbGFzcyBkb2N1bWVudChhZXRvb2xzLkNvbXBvbmVudEl0ZW0pOgorCSIiImRvY3VtZW50IC0gQSBkb2N1bWVudCIiIgorCXdhbnQgPSAnZG9jdScKK2NsYXNzIG1vZGlmaWVkKGFldG9vbHMuTlByb3BlcnR5KToKKwkiIiJtb2RpZmllZCAtIEhhcyB0aGUgZG9jdW1lbnQgYmVlbiBtb2RpZmllZCBzaW5jZSB0aGUgbGFzdCBzYXZlPyIiIgorCXdoaWNoID0gJ2ltb2QnCisJd2FudCA9ICdib29sJwogCi0jICAgIENsYXNzICdkb2N1bWVudHMnICgnZG9jdScpIC0tICdFdmVyeSBkb2N1bWVudCcKLSMgICAgICAgIHByb3BlcnR5ICcnICgnY0AjIScpICd0eXBlJyAtLSAnJyBbMF0KK2RvY3VtZW50cyA9IGRvY3VtZW50CiAKLSMgICAgQ2xhc3MgJ2ZpbGUnICgnZmlsZScpIC0tICdBIGZpbGUnCi0jICAgICAgICBwcm9wZXJ0eSAnc3RhdGlvbmVyeScgKCdwc3BkJykgJ2Jvb2wnIC0tICdJcyB0aGUgZmlsZSBhIHN0YXRpb25lcnkgZmlsZT8nIFttdXRhYmxlXQorY2xhc3MgZmlsZShhZXRvb2xzLkNvbXBvbmVudEl0ZW0pOgorCSIiImZpbGUgLSBBIGZpbGUiIiIKKwl3YW50ID0gJ2ZpbGUnCitjbGFzcyBzdGF0aW9uZXJ5KGFldG9vbHMuTlByb3BlcnR5KToKKwkiIiJzdGF0aW9uZXJ5IC0gSXMgdGhlIGZpbGUgYSBzdGF0aW9uZXJ5IGZpbGU/IiIiCisJd2hpY2ggPSAncHNwZCcKKwl3YW50ID0gJ2Jvb2wnCiAKLSMgICAgQ2xhc3MgJ2ZpbGVzJyAoJ2ZpbGUnKSAtLSAnRXZlcnkgZmlsZScKLSMgICAgICAgIHByb3BlcnR5ICcnICgnY0AjIScpICd0eXBlJyAtLSAnJyBbMF0KK2ZpbGVzID0gZmlsZQogCi0jICAgIENsYXNzICdzZWxlY3Rpb24tb2JqZWN0JyAoJ2NzZWwnKSAtLSAndGhlIHNlbGVjdGlvbiB2aXNpYmxlIHRvIHRoZSB1c2VyJwotIyAgICAgICAgcHJvcGVydHkgJ2NvbnRlbnRzJyAoJ3BjbnQnKSAndHlwZScgLS0gJ3RoZSBjb250ZW50cyBvZiB0aGUgc2VsZWN0aW9uJyBbXQorY2xhc3Mgc2VsZWN0aW9uXzJkX29iamVjdChhZXRvb2xzLkNvbXBvbmVudEl0ZW0pOgorCSIiInNlbGVjdGlvbi1vYmplY3QgLSB0aGUgc2VsZWN0aW9uIHZpc2libGUgdG8gdGhlIHVzZXIiIiIKKwl3YW50ID0gJ2NzZWwnCitjbGFzcyBjb250ZW50cyhhZXRvb2xzLk5Qcm9wZXJ0eSk6CisJIiIiY29udGVudHMgLSB0aGUgY29udGVudHMgb2YgdGhlIHNlbGVjdGlvbiIiIgorCXdoaWNoID0gJ3BjbnQnCisJd2FudCA9ICd0eXBlJwogCi0jICAgIENsYXNzICd0ZXh0JyAoJ2N0eHQnKSAtLSAnVGV4dCcKLSMgICAgICAgIHByb3BlcnR5ICcnICgnY0AjIScpICd0eXBlJyAtLSAnJyBbMF0KLSMgICAgICAgIHByb3BlcnR5ICdmb250JyAoJ2ZvbnQnKSAnY3R4dCcgLS0gJ3RoZSBuYW1lIG9mIHRoZSBmb250IG9mIHRoZSBmaXJzdCBjaGFyYWN0ZXInIFttdXRhYmxlXQorY2xhc3MgdGV4dChhZXRvb2xzLkNvbXBvbmVudEl0ZW0pOgorCSIiInRleHQgLSBUZXh0IiIiCisJd2FudCA9ICdjdHh0JworIyByZXBlYXRlZCBwcm9wZXJ0eSBmb250IHRoZSBuYW1lIG9mIHRoZSBmb250IG9mIHRoZSBmaXJzdCBjaGFyYWN0ZXIKIAotIyAgICBDbGFzcyAndGV4dCBzdHlsZSBpbmZvJyAoJ3RzdHknKSAtLSAnT24gYW5kIE9mZiBzdHlsZXMgb2YgdGV4dCBydW4nCi0jICAgICAgICBwcm9wZXJ0eSAnb24gc3R5bGVzJyAoJ29uc3QnKSAnc3R5bCcgLS0gJ3RoZSBzdHlsZXMgdGhhdCBhcmUgb24gZm9yIHRoZSB0ZXh0JyBbZW51bSBsaXN0XQotIyAgICAgICAgcHJvcGVydHkgJ29mZiBzdHlsZXMnICgnb2ZzdCcpICdzdHlsJyAtLSAndGhlIHN0eWxlcyB0aGF0IGFyZSBvZmYgZm9yIHRoZSB0ZXh0JyBbZW51bSBsaXN0XQorY2xhc3MgdGV4dF9zdHlsZV9pbmZvKGFldG9vbHMuQ29tcG9uZW50SXRlbSk6CisJIiIidGV4dCBzdHlsZSBpbmZvIC0gT24gYW5kIE9mZiBzdHlsZXMgb2YgdGV4dCBydW4iIiIKKwl3YW50ID0gJ3RzdHknCitjbGFzcyBvbl9zdHlsZXMoYWV0b29scy5OUHJvcGVydHkpOgorCSIiIm9uIHN0eWxlcyAtIHRoZSBzdHlsZXMgdGhhdCBhcmUgb24gZm9yIHRoZSB0ZXh0IiIiCisJd2hpY2ggPSAnb25zdCcKKwl3YW50ID0gJ3N0eWwnCitjbGFzcyBvZmZfc3R5bGVzKGFldG9vbHMuTlByb3BlcnR5KToKKwkiIiJvZmYgc3R5bGVzIC0gdGhlIHN0eWxlcyB0aGF0IGFyZSBvZmYgZm9yIHRoZSB0ZXh0IiIiCisJd2hpY2ggPSAnb2ZzdCcKKwl3YW50ID0gJ3N0eWwnCiAKLSMgICAgQ2xhc3MgJ3RleHQgc3R5bGUgaW5mb3MnICgndHN0eScpIC0tICdldmVyeSB0ZXh0IHN0eWxlIGluZm8nCi0jICAgICAgICBwcm9wZXJ0eSAnJyAoJ2NAIyEnKSAndHlwZScgLS0gJycgWzBdCit0ZXh0X3N0eWxlX2luZm9zID0gdGV4dF9zdHlsZV9pbmZvCiAKLSMgICAgQ2xhc3MgJ3dpbmRvdycgKCdjd2luJykgLS0gJ0Egd2luZG93JwotIyAgICAgICAgcHJvcGVydHkgJ2JvdW5kcycgKCdwYm5kJykgJ3FkcnQnIC0tICd0aGUgYm91bmRhcnkgcmVjdGFuZ2xlIGZvciB0aGUgd2luZG93JyBbbXV0YWJsZV0KLSMgICAgICAgIHByb3BlcnR5ICdjbG9zZWFibGUnICgnaGNsYicpICdib29sJyAtLSAnRG9lcyB0aGUgd2luZG93IGhhdmUgYSBjbG9zZSBib3g/JyBbXQotIyAgICAgICAgcHJvcGVydHkgJ3RpdGxlZCcgKCdwdGl0JykgJ2Jvb2wnIC0tICdEb2VzIHRoZSB3aW5kb3cgaGF2ZSBhIHRpdGxlIGJhcj8nIFtdCi0jICAgICAgICBwcm9wZXJ0eSAnaW5kZXgnICgncGlkeCcpICdsb25nJyAtLSAndGhlIG51bWJlciBvZiB0aGUgd2luZG93JyBbbXV0YWJsZV0KLSMgICAgICAgIHByb3BlcnR5ICdmbG9hdGluZycgKCdpc2ZsJykgJ2Jvb2wnIC0tICdEb2VzIHRoZSB3aW5kb3cgZmxvYXQ/JyBbXQotIyAgICAgICAgcHJvcGVydHkgJ21vZGFsJyAoJ3Btb2QnKSAnYm9vbCcgLS0gJ0lzIHRoZSB3aW5kb3cgbW9kYWw/JyBbXQotIyAgICAgICAgcHJvcGVydHkgJ3Jlc2l6YWJsZScgKCdwcnN6JykgJ2Jvb2wnIC0tICdJcyB0aGUgd2luZG93IHJlc2l6YWJsZT8nIFtdCi0jICAgICAgICBwcm9wZXJ0eSAnem9vbWFibGUnICgnaXN6bScpICdib29sJyAtLSAnSXMgdGhlIHdpbmRvdyB6b29tYWJsZT8nIFtdCi0jICAgICAgICBwcm9wZXJ0eSAnem9vbWVkJyAoJ3B6dW0nKSAnYm9vbCcgLS0gJ0lzIHRoZSB3aW5kb3cgem9vbWVkPycgW211dGFibGVdCi0jICAgICAgICBwcm9wZXJ0eSAndmlzaWJsZScgKCdwdmlzJykgJ2Jvb2wnIC0tICdJcyB0aGUgd2luZG93IHZpc2libGU/JyBbbXV0YWJsZV0KK2NsYXNzIHdpbmRvdyhhZXRvb2xzLkNvbXBvbmVudEl0ZW0pOgorCSIiIndpbmRvdyAtIEEgd2luZG93IiIiCisJd2FudCA9ICdjd2luJworY2xhc3MgYm91bmRzKGFldG9vbHMuTlByb3BlcnR5KToKKwkiIiJib3VuZHMgLSB0aGUgYm91bmRhcnkgcmVjdGFuZ2xlIGZvciB0aGUgd2luZG93IiIiCisJd2hpY2ggPSAncGJuZCcKKwl3YW50ID0gJ3FkcnQnCitjbGFzcyBjbG9zZWFibGUoYWV0b29scy5OUHJvcGVydHkpOgorCSIiImNsb3NlYWJsZSAtIERvZXMgdGhlIHdpbmRvdyBoYXZlIGEgY2xvc2UgYm94PyIiIgorCXdoaWNoID0gJ2hjbGInCisJd2FudCA9ICdib29sJworY2xhc3MgdGl0bGVkKGFldG9vbHMuTlByb3BlcnR5KToKKwkiIiJ0aXRsZWQgLSBEb2VzIHRoZSB3aW5kb3cgaGF2ZSBhIHRpdGxlIGJhcj8iIiIKKwl3aGljaCA9ICdwdGl0JworCXdhbnQgPSAnYm9vbCcKK2NsYXNzIGluZGV4KGFldG9vbHMuTlByb3BlcnR5KToKKwkiIiJpbmRleCAtIHRoZSBudW1iZXIgb2YgdGhlIHdpbmRvdyIiIgorCXdoaWNoID0gJ3BpZHgnCisJd2FudCA9ICdsb25nJworY2xhc3MgZmxvYXRpbmcoYWV0b29scy5OUHJvcGVydHkpOgorCSIiImZsb2F0aW5nIC0gRG9lcyB0aGUgd2luZG93IGZsb2F0PyIiIgorCXdoaWNoID0gJ2lzZmwnCisJd2FudCA9ICdib29sJworY2xhc3MgbW9kYWwoYWV0b29scy5OUHJvcGVydHkpOgorCSIiIm1vZGFsIC0gSXMgdGhlIHdpbmRvdyBtb2RhbD8iIiIKKwl3aGljaCA9ICdwbW9kJworCXdhbnQgPSAnYm9vbCcKK2NsYXNzIHJlc2l6YWJsZShhZXRvb2xzLk5Qcm9wZXJ0eSk6CisJIiIicmVzaXphYmxlIC0gSXMgdGhlIHdpbmRvdyByZXNpemFibGU/IiIiCisJd2hpY2ggPSAncHJzeicKKwl3YW50ID0gJ2Jvb2wnCitjbGFzcyB6b29tYWJsZShhZXRvb2xzLk5Qcm9wZXJ0eSk6CisJIiIiem9vbWFibGUgLSBJcyB0aGUgd2luZG93IHpvb21hYmxlPyIiIgorCXdoaWNoID0gJ2lzem0nCisJd2FudCA9ICdib29sJworY2xhc3Mgem9vbWVkKGFldG9vbHMuTlByb3BlcnR5KToKKwkiIiJ6b29tZWQgLSBJcyB0aGUgd2luZG93IHpvb21lZD8iIiIKKwl3aGljaCA9ICdwenVtJworCXdhbnQgPSAnYm9vbCcKK2NsYXNzIHZpc2libGUoYWV0b29scy5OUHJvcGVydHkpOgorCSIiInZpc2libGUgLSBJcyB0aGUgd2luZG93IHZpc2libGU/IiIiCisJd2hpY2ggPSAncHZpcycKKwl3YW50ID0gJ2Jvb2wnCiAKLSMgICAgQ2xhc3MgJ3dpbmRvd3MnICgnY3dpbicpIC0tICdFdmVyeSB3aW5kb3cnCi0jICAgICAgICBwcm9wZXJ0eSAnJyAoJ2NAIyEnKSAndHlwZScgLS0gJycgWzBdCit3aW5kb3dzID0gd2luZG93CiAKLSMgICAgQ2xhc3MgJ2luc2VydGlvbiBwb2ludCcgKCdjaW5zJykgLS0gJ0FuIGluc2VydGlvbiBsb2NhdGlvbiBiZXR3ZWVuIHR3byBvYmplY3RzJworY2xhc3MgaW5zZXJ0aW9uX3BvaW50KGFldG9vbHMuQ29tcG9uZW50SXRlbSk6CisJIiIiaW5zZXJ0aW9uIHBvaW50IC0gQW4gaW5zZXJ0aW9uIGxvY2F0aW9uIGJldHdlZW4gdHdvIG9iamVjdHMiIiIKKwl3YW50ID0gJ2NpbnMnCiAKLSMgICAgQ2xhc3MgJ2luc2VydGlvbiBwb2ludHMnICgnY2lucycpIC0tICdFdmVyeSBpbnNlcnRpb24gbG9jYXRpb24nCi0jICAgICAgICBwcm9wZXJ0eSAnJyAoJ2NAIyEnKSAndHlwZScgLS0gJycgWzBdCi0jICAgIGNvbXBhcmlzb24gICdzdGFydHMgd2l0aCcgKCdiZ3d0JykgLS0gU3RhcnRzIHdpdGgKLSMgICAgY29tcGFyaXNvbiAgJ2NvbnRhaW5zJyAoJ2NvbnQnKSAtLSBDb250YWlucwotIyAgICBjb21wYXJpc29uICAnZW5kcyB3aXRoJyAoJ2VuZHMnKSAtLSBFbmRzIHdpdGgKLSMgICAgY29tcGFyaXNvbiAgJz0nICgnPSAgICcpIC0tIEVxdWFsCi0jICAgIGNvbXBhcmlzb24gICc+JyAoJz4gICAnKSAtLSBHcmVhdGVyIHRoYW4KLSMgICAgY29tcGFyaXNvbiAgJ1wyNjMnICgnPj0gICcpIC0tIEdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0bwotIyAgICBjb21wYXJpc29uICAnPCcgKCc8ICAgJykgLS0gTGVzcyB0aGFuCi0jICAgIGNvbXBhcmlzb24gICdcMjYyJyAoJzw9ICAnKSAtLSBMZXNzIHRoYW4gb3IgZXF1YWwgdG8KK2luc2VydGlvbl9wb2ludHMgPSBpbnNlcnRpb25fcG9pbnQKK2FwcGxpY2F0aW9uLl9wcm9wZGljdCA9IHsKKwknY2xpcGJvYXJkJyA6IGNsaXBib2FyZCwKKwknZnJvbnRtb3N0JyA6IGZyb250bW9zdCwKKwknbmFtZScgOiBuYW1lLAorCSdzZWxlY3Rpb24nIDogc2VsZWN0aW9uLAorCSd2ZXJzaW9uJyA6IHZlcnNpb24sCit9CithcHBsaWNhdGlvbi5fZWxlbWRpY3QgPSB7Cit9CitjaGFyYWN0ZXIuX3Byb3BkaWN0ID0geworCSdjb2xvcicgOiBjb2xvciwKKwknZm9udCcgOiBmb250LAorCSdzaXplJyA6IHNpemUsCisJJ3dyaXRpbmdfY29kZScgOiB3cml0aW5nX2NvZGUsCisJJ3N0eWxlJyA6IHN0eWxlLAorCSd1bmlmb3JtX3N0eWxlcycgOiB1bmlmb3JtX3N0eWxlcywKK30KK2NoYXJhY3Rlci5fZWxlbWRpY3QgPSB7Cit9Citkb2N1bWVudC5fcHJvcGRpY3QgPSB7CisJJ21vZGlmaWVkJyA6IG1vZGlmaWVkLAorfQorZG9jdW1lbnQuX2VsZW1kaWN0ID0geworfQorZmlsZS5fcHJvcGRpY3QgPSB7CisJJ3N0YXRpb25lcnknIDogc3RhdGlvbmVyeSwKK30KK2ZpbGUuX2VsZW1kaWN0ID0geworfQorc2VsZWN0aW9uXzJkX29iamVjdC5fcHJvcGRpY3QgPSB7CisJJ2NvbnRlbnRzJyA6IGNvbnRlbnRzLAorfQorc2VsZWN0aW9uXzJkX29iamVjdC5fZWxlbWRpY3QgPSB7Cit9Cit0ZXh0Ll9wcm9wZGljdCA9IHsKKwknZm9udCcgOiBmb250LAorfQordGV4dC5fZWxlbWRpY3QgPSB7Cit9Cit0ZXh0X3N0eWxlX2luZm8uX3Byb3BkaWN0ID0geworCSdvbl9zdHlsZXMnIDogb25fc3R5bGVzLAorCSdvZmZfc3R5bGVzJyA6IG9mZl9zdHlsZXMsCit9Cit0ZXh0X3N0eWxlX2luZm8uX2VsZW1kaWN0ID0geworfQord2luZG93Ll9wcm9wZGljdCA9IHsKKwknYm91bmRzJyA6IGJvdW5kcywKKwknY2xvc2VhYmxlJyA6IGNsb3NlYWJsZSwKKwkndGl0bGVkJyA6IHRpdGxlZCwKKwknaW5kZXgnIDogaW5kZXgsCisJJ2Zsb2F0aW5nJyA6IGZsb2F0aW5nLAorCSdtb2RhbCcgOiBtb2RhbCwKKwkncmVzaXphYmxlJyA6IHJlc2l6YWJsZSwKKwknem9vbWFibGUnIDogem9vbWFibGUsCisJJ3pvb21lZCcgOiB6b29tZWQsCisJJ3Zpc2libGUnIDogdmlzaWJsZSwKK30KK3dpbmRvdy5fZWxlbWRpY3QgPSB7Cit9CitpbnNlcnRpb25fcG9pbnQuX3Byb3BkaWN0ID0geworfQoraW5zZXJ0aW9uX3BvaW50Ll9lbGVtZGljdCA9IHsKK30KK2NsYXNzIHN0YXJ0c193aXRoKGFldG9vbHMuTkNvbXBhcmlzb24pOgorCSIiInN0YXJ0cyB3aXRoIC0gU3RhcnRzIHdpdGgiIiIKK2NsYXNzIGNvbnRhaW5zKGFldG9vbHMuTkNvbXBhcmlzb24pOgorCSIiImNvbnRhaW5zIC0gQ29udGFpbnMiIiIKK2NsYXNzIGVuZHNfd2l0aChhZXRvb2xzLk5Db21wYXJpc29uKToKKwkiIiJlbmRzIHdpdGggLSBFbmRzIHdpdGgiIiIKK2NsYXNzIF8zZF8oYWV0b29scy5OQ29tcGFyaXNvbik6CisJIiIiPSAtIEVxdWFsIiIiCitjbGFzcyBfM2VfKGFldG9vbHMuTkNvbXBhcmlzb24pOgorCSIiIj4gLSBHcmVhdGVyIHRoYW4iIiIKK2NsYXNzIF9iM18oYWV0b29scy5OQ29tcGFyaXNvbik6CisJIiIihCAtIEdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byIiIgorY2xhc3MgXzNjXyhhZXRvb2xzLk5Db21wYXJpc29uKToKKwkiIiI8IC0gTGVzcyB0aGFuIiIiCitjbGFzcyBfYjJfKGFldG9vbHMuTkNvbXBhcmlzb24pOgorCSIiIr4gLSBMZXNzIHRoYW4gb3IgZXF1YWwgdG8iIiIKK19FbnVtX3Nhdm8gPSB7CisJJ3llcycgOiAneWVzICcsCSMgU2F2ZSBvYmplY3RzIG5vdworCSdubycgOiAnbm8gICcsCSMgRG8gbm90IHNhdmUgb2JqZWN0cworCSdhc2snIDogJ2FzayAnLAkjIEFzayB0aGUgdXNlciB3aGV0aGVyIHRvIHNhdmUKK30KKworX0VudW1fa2ZybSA9IHsKKwknaW5kZXgnIDogJ2luZHgnLAkjIGtleWZvcm0gZGVzaWduYXRpbmcgaW5kZXhlZCBhY2Nlc3MKKwknbmFtZWQnIDogJ25hbWUnLAkjIGtleWZvcm0gZGVzaWduYXRpbmcgbmFtZWQgYWNjZXNzCisJJ2lkJyA6ICdJRCAgJywJIyBrZXlmb3JtIGRlc2lnbmF0aW5nIGFjY2VzcyBieSB1bmlxdWUgaWRlbnRpZmllcgorfQorCitfRW51bV9zdHlsID0geworCSdwbGFpbicgOiAncGxhbicsCSMgUGxhaW4KKwknYm9sZCcgOiAnYm9sZCcsCSMgQm9sZAorCSdpdGFsaWMnIDogJ2l0YWwnLAkjIEl0YWxpYworCSdvdXRsaW5lJyA6ICdvdXRsJywJIyBPdXRsaW5lCisJJ3NoYWRvdycgOiAnc2hhZCcsCSMgU2hhZG93CisJJ3VuZGVybGluZScgOiAndW5kbCcsCSMgVW5kZXJsaW5lCisJJ3N1cGVyc2NyaXB0JyA6ICdzcHNjJywJIyBTdXBlcnNjcmlwdAorCSdzdWJzY3JpcHQnIDogJ3Nic2MnLAkjIFN1YnNjcmlwdAorCSdzdHJpa2V0aHJvdWdoJyA6ICdzdHJrJywJIyBTdHJpa2V0aHJvdWdoCisJJ3NtYWxsX2NhcHMnIDogJ3NtY3AnLAkjIFNtYWxsIGNhcHMKKwknYWxsX2NhcHMnIDogJ2FsY3AnLAkjIEFsbCBjYXBpdGFsIGxldHRlcnMKKwknYWxsX2xvd2VyY2FzZScgOiAnbG93YycsCSMgTG93ZXJjYXNlCisJJ2NvbmRlbnNlZCcgOiAnY29uZCcsCSMgQ29uZGVuc2VkCisJJ2V4cGFuZGVkJyA6ICdwZXhwJywJIyBFeHBhbmRlZAorCSdoaWRkZW4nIDogJ2hpZG4nLAkjIEhpZGRlbgorfQorCisKKyMKKyMgSW5kaWNlcyBvZiB0eXBlcyBkZWNsYXJlZCBpbiB0aGlzIG1vZHVsZQorIworX2NsYXNzZGVjbGFyYXRpb25zID0geworCSdkb2N1JyA6IGRvY3VtZW50LAorCSd0c3R5JyA6IHRleHRfc3R5bGVfaW5mbywKKwknY3R4dCcgOiB0ZXh0LAorCSdjYXBwJyA6IGFwcGxpY2F0aW9uLAorCSdjc2VsJyA6IHNlbGVjdGlvbl8yZF9vYmplY3QsCisJJ2ZpbGUnIDogZmlsZSwKKwknY3dpbicgOiB3aW5kb3csCisJJ2NoYSAnIDogY2hhcmFjdGVyLAorCSdjaW5zJyA6IGluc2VydGlvbl9wb2ludCwKK30KKworX3Byb3BkZWNsYXJhdGlvbnMgPSB7CisJJ3B0aXQnIDogdGl0bGVkLAorCSdvbnN0JyA6IG9uX3N0eWxlcywKKwkncG5hbScgOiBuYW1lLAorCSdwY2xpJyA6IGNsaXBib2FyZCwKKwkndXN0bCcgOiB1bmlmb3JtX3N0eWxlcywKKwkncHNjdCcgOiB3cml0aW5nX2NvZGUsCisJJ3R4c3QnIDogc3R5bGUsCisJJ3B2aXMnIDogdmlzaWJsZSwKKwkncHNwZCcgOiBzdGF0aW9uZXJ5LAorCSdwaXNmJyA6IGZyb250bW9zdCwKKwknc2VsZScgOiBzZWxlY3Rpb24sCisJJ3Btb2QnIDogbW9kYWwsCisJJ2ltb2QnIDogbW9kaWZpZWQsCisJJ29mc3QnIDogb2ZmX3N0eWxlcywKKwkncHRzeicgOiBzaXplLAorCSdwenVtJyA6IHpvb21lZCwKKwknaGNsYicgOiBjbG9zZWFibGUsCisJJ2ZvbnQnIDogZm9udCwKKwkncGNudCcgOiBjb250ZW50cywKKwknaXNmbCcgOiBmbG9hdGluZywKKwkncGlkeCcgOiBpbmRleCwKKwknaXN6bScgOiB6b29tYWJsZSwKKwknY29scicgOiBjb2xvciwKKwkncGJuZCcgOiBib3VuZHMsCisJJ3ZlcnMnIDogdmVyc2lvbiwKKwkncHJzeicgOiByZXNpemFibGUsCit9CisKK19jb21wZGVjbGFyYXRpb25zID0geworCSc+ICAgJyA6IF8zZV8sCisJJ2Jnd3QnIDogc3RhcnRzX3dpdGgsCisJJz49ICAnIDogX2IzXywKKwknPSAgICcgOiBfM2RfLAorCSc8PSAgJyA6IF9iMl8sCisJJ2NvbnQnIDogY29udGFpbnMsCisJJ2VuZHMnIDogZW5kc193aXRoLAorCSc8ICAgJyA6IF8zY18sCit9CisKK19lbnVtZGVjbGFyYXRpb25zID0geworCSdzdHlsJyA6IF9FbnVtX3N0eWwsCisJJ3Nhdm8nIDogX0VudW1fc2F2bywKKwkna2ZybScgOiBfRW51bV9rZnJtLAorfQpkaWZmIC0tZ2l0IGEvTWFjL0xpYi90b29sYm94L1N0YW5kYXJkX1VSTF9zdWl0ZS5weSBiL01hYy9MaWIvc2NyaXB0aW5nL1N0YW5kYXJkX1VSTF9zdWl0ZS5weQpzaW1pbGFyaXR5IGluZGV4IDg3JQpyZW5hbWUgZnJvbSBNYWMvTGliL3Rvb2xib3gvU3RhbmRhcmRfVVJMX3N1aXRlLnB5CnJlbmFtZSB0byBNYWMvTGliL3NjcmlwdGluZy9TdGFuZGFyZF9VUkxfc3VpdGUucHkKaW5kZXggYjkxMDhmNC4uNDRiNmNhNyAxMDA2NDQKLS0tIGEvTWFjL0xpYi90b29sYm94L1N0YW5kYXJkX1VSTF9zdWl0ZS5weQorKysgYi9NYWMvTGliL3NjcmlwdGluZy9TdGFuZGFyZF9VUkxfc3VpdGUucHkKQEAgLTQsNyArNCw3IEBACiAKIExldmVsIDEsIHZlcnNpb24gMQogCi1HZW5lcmF0ZWQgZnJvbSBmbGFwOlByb2dyYW1tYSdzOk5ldHNjYXBlIE5hdmlnYXRvcoEgRm9sZGVyOk5ldHNjYXBlIE5hdmlnYXRvcoEgMy4wCitHZW5lcmF0ZWQgZnJvbSBmbGFwOlByb2dyYW1tYSdzOk5ldHNjYXBlIE5hdmlnYXRvcoEgRm9sZGVyOk5ldHNjYXBlIE5hdmlnYXRvcoEgMy4wMQogQUVURS9BRVVUIHJlc291cmNlIHZlcnNpb24gMS8wLCBsYW5ndWFnZSAwLCBzY3JpcHQgMAogIiIiCiAKQEAgLTQ1LDMgKzQ1LDE4IEBACiAJCWlmIF9hcmd1bWVudHMuaGFzX2tleSgnLS0tLScpOgogCQkJcmV0dXJuIF9hcmd1bWVudHNbJy0tLS0nXQogCisKKyMKKyMgSW5kaWNlcyBvZiB0eXBlcyBkZWNsYXJlZCBpbiB0aGlzIG1vZHVsZQorIworX2NsYXNzZGVjbGFyYXRpb25zID0geworfQorCitfcHJvcGRlY2xhcmF0aW9ucyA9IHsKK30KKworX2NvbXBkZWNsYXJhdGlvbnMgPSB7Cit9CisKK19lbnVtZGVjbGFyYXRpb25zID0geworfQpkaWZmIC0tZ2l0IGEvTWFjL0xpYi9zY3JpcHRpbmcvVGFibGVfU3VpdGUucHkgYi9NYWMvTGliL3NjcmlwdGluZy9UYWJsZV9TdWl0ZS5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mZjFkYmY3Ci0tLSAvZGV2L251bGwKKysrIGIvTWFjL0xpYi9zY3JpcHRpbmcvVGFibGVfU3VpdGUucHkKQEAgLTAsMCArMSwxMDYgQEAKKyIiIlN1aXRlIFRhYmxlIFN1aXRlOiBDbGFzc2VzIGZvciBtYW5pcHVsYXRpbmcgdGFibGVzCitMZXZlbCAxLCB2ZXJzaW9uIDEKKworR2VuZXJhdGVkIGZyb20gZmxhcDpTeXN0ZW0gRm9sZGVyOkV4dGVuc2lvbnM6U2NyaXB0aW5nIEFkZGl0aW9uczpEaWFsZWN0czpFbmdsaXNoIERpYWxlY3QKK0FFVEUvQUVVVCByZXNvdXJjZSB2ZXJzaW9uIDEvMCwgbGFuZ3VhZ2UgMCwgc2NyaXB0IDAKKyIiIgorCitpbXBvcnQgYWV0b29scworaW1wb3J0IE1hY09TCisKK19jb2RlID0gJ3RibHMnCisKK2NsYXNzIFRhYmxlX1N1aXRlOgorCisJcGFzcworCisKK2NsYXNzIGNlbGwoYWV0b29scy5Db21wb25lbnRJdGVtKToKKwkiIiJjZWxsIC0gQSBjZWxsIiIiCisJd2FudCA9ICdjY2VsJworY2xhc3MgX2NsYXNzKGFldG9vbHMuTlByb3BlcnR5KToKKwkiIiJjbGFzcyAtIHRoZSBjbGFzcyIiIgorCXdoaWNoID0gJ3BjbHMnCisJd2FudCA9ICd0eXBlJworY2xhc3MgZm9ybXVsYShhZXRvb2xzLk5Qcm9wZXJ0eSk6CisJIiIiZm9ybXVsYSAtIHRoZSBmb3JtdWxhIG9mIHRoZSBjZWxsIiIiCisJd2hpY2ggPSAncGZvcicKKwl3YW50ID0gJ2N0eHQnCitjbGFzcyBwcm90ZWN0aW9uKGFldG9vbHMuTlByb3BlcnR5KToKKwkiIiJwcm90ZWN0aW9uIC0gSW5kaWNhdGVzIHdoZXRoZXIgdmFsdWUgb3IgZm9ybXVsYSBpbiB0aGUgY2VsbCBjYW4gYmUgY2hhbmdlZCIiIgorCXdoaWNoID0gJ3Bwcm8nCisJd2FudCA9ICdwcnRuJworCitjZWxscyA9IGNlbGwKKworY2xhc3MgY29sdW1uKGFldG9vbHMuQ29tcG9uZW50SXRlbSk6CisJIiIiY29sdW1uIC0gQSBjb2x1bW4iIiIKKwl3YW50ID0gJ2Njb2wnCitjbGFzcyBuYW1lKGFldG9vbHMuTlByb3BlcnR5KToKKwkiIiJuYW1lIC0gdGhlIG5hbWUiIiIKKwl3aGljaCA9ICdwbmFtJworCXdhbnQgPSAnaXR4dCcKKworY29sdW1ucyA9IGNvbHVtbgorCitjbGFzcyByb3coYWV0b29scy5Db21wb25lbnRJdGVtKToKKwkiIiJyb3cgLSBBIHJvdyIiIgorCXdhbnQgPSAnY3JvdycKKworcm93cyA9IHJvdworCitjbGFzcyB0YWJsZShhZXRvb2xzLkNvbXBvbmVudEl0ZW0pOgorCSIiInRhYmxlIC0gQSB0YWJsZSIiIgorCXdhbnQgPSAnY3RibCcKKwordGFibGVzID0gdGFibGUKK2NlbGwuX3Byb3BkaWN0ID0geworCSdfY2xhc3MnIDogX2NsYXNzLAorCSdmb3JtdWxhJyA6IGZvcm11bGEsCisJJ3Byb3RlY3Rpb24nIDogcHJvdGVjdGlvbiwKK30KK2NlbGwuX2VsZW1kaWN0ID0geworfQorY29sdW1uLl9wcm9wZGljdCA9IHsKKwknbmFtZScgOiBuYW1lLAorfQorY29sdW1uLl9lbGVtZGljdCA9IHsKK30KK3Jvdy5fcHJvcGRpY3QgPSB7Cit9Cityb3cuX2VsZW1kaWN0ID0geworfQordGFibGUuX3Byb3BkaWN0ID0geworfQordGFibGUuX2VsZW1kaWN0ID0geworfQorX0VudW1fcHJ0biA9IHsKKwkncmVhZF9vbmx5JyA6ICdubW9kJywJIyBDYW4ndCBjaGFuZ2UgdmFsdWVzIG9yIGZvcm11bGFzCisJJ2Zvcm11bGFzX3Byb3RlY3RlZCcgOiAnZnBybycsCSMgQ2FuIGNoYW5nZXMgdmFsdWVzIGJ1dCBub3QgZm9ybXVsYXMKKwkncmVhZF8yZl93cml0ZScgOiAnbW9kZicsCSMgQ2FuIGNoYW5nZSB2YWx1ZXMgYW5kIGZvcm11bGFzCit9CisKKworIworIyBJbmRpY2VzIG9mIHR5cGVzIGRlY2xhcmVkIGluIHRoaXMgbW9kdWxlCisjCitfY2xhc3NkZWNsYXJhdGlvbnMgPSB7CisJJ2NjZWwnIDogY2VsbCwKKwknY3RibCcgOiB0YWJsZSwKKwknY2NvbCcgOiBjb2x1bW4sCisJJ2Nyb3cnIDogcm93LAorfQorCitfcHJvcGRlY2xhcmF0aW9ucyA9IHsKKwkncHBybycgOiBwcm90ZWN0aW9uLAorCSdwbmFtJyA6IG5hbWUsCisJJ3Bmb3InIDogZm9ybXVsYSwKKwkncGNscycgOiBfY2xhc3MsCit9CisKK19jb21wZGVjbGFyYXRpb25zID0geworfQorCitfZW51bWRlY2xhcmF0aW9ucyA9IHsKKwkncHJ0bicgOiBfRW51bV9wcnRuLAorfQpkaWZmIC0tZ2l0IGEvTWFjL0xpYi9zY3JpcHRpbmcvVGV4dF9TdWl0ZS5weSBiL01hYy9MaWIvc2NyaXB0aW5nL1RleHRfU3VpdGUucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTRlODJkOQotLS0gL2Rldi9udWxsCisrKyBiL01hYy9MaWIvc2NyaXB0aW5nL1RleHRfU3VpdGUucHkKQEAgLTAsMCArMSwxODYgQEAKKyIiIlN1aXRlIFRleHQgU3VpdGU6IEEgc2V0IG9mIGJhc2ljIGNsYXNzZXMgZm9yIHRleHQgcHJvY2Vzc2luZworTGV2ZWwgMSwgdmVyc2lvbiAxCisKK0dlbmVyYXRlZCBmcm9tIGZsYXA6U3lzdGVtIEZvbGRlcjpFeHRlbnNpb25zOlNjcmlwdGluZyBBZGRpdGlvbnM6RGlhbGVjdHM6RW5nbGlzaCBEaWFsZWN0CitBRVRFL0FFVVQgcmVzb3VyY2UgdmVyc2lvbiAxLzAsIGxhbmd1YWdlIDAsIHNjcmlwdCAwCisiIiIKKworaW1wb3J0IGFldG9vbHMKK2ltcG9ydCBNYWNPUworCitfY29kZSA9ICdURVhUJworCitjbGFzcyBUZXh0X1N1aXRlOgorCisJcGFzcworCisKK2NsYXNzIGNoYXJhY3RlcihhZXRvb2xzLkNvbXBvbmVudEl0ZW0pOgorCSIiImNoYXJhY3RlciAtIEEgY2hhcmFjdGVyIiIiCisJd2FudCA9ICdjaGEgJworY2xhc3MgYmVzdF90eXBlKGFldG9vbHMuTlByb3BlcnR5KToKKwkiIiJiZXN0IHR5cGUgLSB0aGUgYmVzdCBkZXNjcmlwdG9yIHR5cGUiIiIKKwl3aGljaCA9ICdwYnN0JworCXdhbnQgPSAndHlwZScKK2NsYXNzIF9jbGFzcyhhZXRvb2xzLk5Qcm9wZXJ0eSk6CisJIiIiY2xhc3MgLSB0aGUgY2xhc3MiIiIKKwl3aGljaCA9ICdwY2xzJworCXdhbnQgPSAndHlwZScKK2NsYXNzIGNvbG9yKGFldG9vbHMuTlByb3BlcnR5KToKKwkiIiJjb2xvciAtIHRoZSBjb2xvciIiIgorCXdoaWNoID0gJ2NvbHInCisJd2FudCA9ICdjUkdCJworY2xhc3MgZGVmYXVsdF90eXBlKGFldG9vbHMuTlByb3BlcnR5KToKKwkiIiJkZWZhdWx0IHR5cGUgLSB0aGUgZGVmYXVsdCBkZXNjcmlwdG9yIHR5cGUiIiIKKwl3aGljaCA9ICdkZWZ0JworCXdhbnQgPSAndHlwZScKK2NsYXNzIGZvbnQoYWV0b29scy5OUHJvcGVydHkpOgorCSIiImZvbnQgLSB0aGUgbmFtZSBvZiB0aGUgZm9udCIiIgorCXdoaWNoID0gJ2ZvbnQnCisJd2FudCA9ICdjdHh0JworY2xhc3Mgc2l6ZShhZXRvb2xzLk5Qcm9wZXJ0eSk6CisJIiIic2l6ZSAtIHRoZSBzaXplIGluIHBvaW50cyIiIgorCXdoaWNoID0gJ3B0c3onCisJd2FudCA9ICdmaXhkJworY2xhc3Mgd3JpdGluZ19jb2RlKGFldG9vbHMuTlByb3BlcnR5KToKKwkiIiJ3cml0aW5nIGNvZGUgLSB0aGUgc2NyaXB0IHN5c3RlbSBhbmQgbGFuZ3VhZ2UiIiIKKwl3aGljaCA9ICdwc2N0JworCXdhbnQgPSAnaW50bCcKK2NsYXNzIHN0eWxlKGFldG9vbHMuTlByb3BlcnR5KToKKwkiIiJzdHlsZSAtIHRoZSB0ZXh0IHN0eWxlIiIiCisJd2hpY2ggPSAndHhzdCcKKwl3YW50ID0gJ3RzdHknCitjbGFzcyB1bmlmb3JtX3N0eWxlcyhhZXRvb2xzLk5Qcm9wZXJ0eSk6CisJIiIidW5pZm9ybSBzdHlsZXMgLSB0aGUgdGV4dCBzdHlsZSIiIgorCXdoaWNoID0gJ3VzdGwnCisJd2FudCA9ICd0c3R5JworCitjbGFzcyBsaW5lKGFldG9vbHMuQ29tcG9uZW50SXRlbSk6CisJIiIibGluZSAtIEEgbGluZSBvZiB0ZXh0IiIiCisJd2FudCA9ICdjbGluJworY2xhc3MganVzdGlmaWNhdGlvbihhZXRvb2xzLk5Qcm9wZXJ0eSk6CisJIiIianVzdGlmaWNhdGlvbiAtIEp1c3RpZmljYXRpb24gb2YgdGhlIHRleHQiIiIKKwl3aGljaCA9ICdwanN0JworCXdhbnQgPSAnanVzdCcKKworbGluZXMgPSBsaW5lCisKK2NsYXNzIHBhcmFncmFwaChhZXRvb2xzLkNvbXBvbmVudEl0ZW0pOgorCSIiInBhcmFncmFwaCAtIEEgcGFyYWdyYXBoIiIiCisJd2FudCA9ICdjcGFyJworCitwYXJhZ3JhcGhzID0gcGFyYWdyYXBoCisKK2NsYXNzIHRleHQoYWV0b29scy5Db21wb25lbnRJdGVtKToKKwkiIiJ0ZXh0IC0gVGV4dCIiIgorCXdhbnQgPSAnY3R4dCcKKworY2xhc3MgdGV4dF9mbG93KGFldG9vbHMuQ29tcG9uZW50SXRlbSk6CisJIiIidGV4dCBmbG93IC0gQSBjb250aWd1b3VzIGJsb2NrIG9mIHRleHQiIiIKKwl3YW50ID0gJ2NmbG8nCitjbGFzcyBuYW1lKGFldG9vbHMuTlByb3BlcnR5KToKKwkiIiJuYW1lIC0gdGhlIG5hbWUiIiIKKwl3aGljaCA9ICdwbmFtJworCXdhbnQgPSAnaXR4dCcKKwordGV4dF9mbG93cyA9IHRleHRfZmxvdworCitjbGFzcyB3b3JkKGFldG9vbHMuQ29tcG9uZW50SXRlbSk6CisJIiIid29yZCAtIEEgd29yZCIiIgorCXdhbnQgPSAnY3dvcicKKword29yZHMgPSB3b3JkCitjaGFyYWN0ZXIuX3Byb3BkaWN0ID0geworCSdiZXN0X3R5cGUnIDogYmVzdF90eXBlLAorCSdfY2xhc3MnIDogX2NsYXNzLAorCSdjb2xvcicgOiBjb2xvciwKKwknZGVmYXVsdF90eXBlJyA6IGRlZmF1bHRfdHlwZSwKKwknZm9udCcgOiBmb250LAorCSdzaXplJyA6IHNpemUsCisJJ3dyaXRpbmdfY29kZScgOiB3cml0aW5nX2NvZGUsCisJJ3N0eWxlJyA6IHN0eWxlLAorCSd1bmlmb3JtX3N0eWxlcycgOiB1bmlmb3JtX3N0eWxlcywKK30KK2NoYXJhY3Rlci5fZWxlbWRpY3QgPSB7Cit9CitsaW5lLl9wcm9wZGljdCA9IHsKKwknanVzdGlmaWNhdGlvbicgOiBqdXN0aWZpY2F0aW9uLAorfQorbGluZS5fZWxlbWRpY3QgPSB7Cit9CitwYXJhZ3JhcGguX3Byb3BkaWN0ID0geworfQorcGFyYWdyYXBoLl9lbGVtZGljdCA9IHsKK30KK3RleHQuX3Byb3BkaWN0ID0geworfQordGV4dC5fZWxlbWRpY3QgPSB7Cit9Cit0ZXh0X2Zsb3cuX3Byb3BkaWN0ID0geworCSduYW1lJyA6IG5hbWUsCit9Cit0ZXh0X2Zsb3cuX2VsZW1kaWN0ID0geworfQord29yZC5fcHJvcGRpY3QgPSB7Cit9Cit3b3JkLl9lbGVtZGljdCA9IHsKK30KK19FbnVtX2p1c3QgPSB7CisJJ2xlZnQnIDogJ2xlZnQnLAkjIEFsaWduIHdpdGggbGVmdCBtYXJnaW4KKwkncmlnaHQnIDogJ3JnaHQnLAkjIEFsaWduIHdpdGggcmlnaHQgbWFyZ2luCisJJ2NlbnRlcicgOiAnY2VudCcsCSMgQWxpZ24gd2l0aCBjZW50ZXIKKwknZnVsbCcgOiAnZnVsbCcsCSMgQWxpZ24gd2l0aCBib3RoIGxlZnQgYW5kIHJpZ2h0IG1hcmdpbnMKK30KKworX0VudW1fc3R5bCA9IHsKKwkncGxhaW4nIDogJ3BsYW4nLAkjIFBsYWluCisJJ2JvbGQnIDogJ2JvbGQnLAkjIEJvbGQKKwknaXRhbGljJyA6ICdpdGFsJywJIyBJdGFsaWMKKwknb3V0bGluZScgOiAnb3V0bCcsCSMgT3V0bGluZQorCSdzaGFkb3cnIDogJ3NoYWQnLAkjIFNoYWRvdworCSd1bmRlcmxpbmUnIDogJ3VuZGwnLAkjIFVuZGVybGluZQorCSdzdXBlcnNjcmlwdCcgOiAnc3BzYycsCSMgU3VwZXJzY3JpcHQKKwknc3Vic2NyaXB0JyA6ICdzYnNjJywJIyBTdWJzY3JpcHQKKwknc3RyaWtldGhyb3VnaCcgOiAnc3RyaycsCSMgU3RyaWtldGhyb3VnaAorCSdzbWFsbF9jYXBzJyA6ICdzbWNwJywJIyBTbWFsbCBjYXBzCisJJ2FsbF9jYXBzJyA6ICdhbGNwJywJIyBBbGwgY2FwaXRhbCBsZXR0ZXJzCisJJ2FsbF9sb3dlcmNhc2UnIDogJ2xvd2MnLAkjIExvd2VyY2FzZQorCSdjb25kZW5zZWQnIDogJ2NvbmQnLAkjIENvbmRlbnNlZAorCSdleHBhbmRlZCcgOiAncGV4cCcsCSMgRXhwYW5kZWQKKwknaGlkZGVuJyA6ICdoaWRuJywJIyBIaWRkZW4KK30KKworCisjCisjIEluZGljZXMgb2YgdHlwZXMgZGVjbGFyZWQgaW4gdGhpcyBtb2R1bGUKKyMKK19jbGFzc2RlY2xhcmF0aW9ucyA9IHsKKwknY2ZsbycgOiB0ZXh0X2Zsb3csCisJJ2NsaW4nIDogbGluZSwKKwknY3R4dCcgOiB0ZXh0LAorCSdjaGEgJyA6IGNoYXJhY3RlciwKKwknY3dvcicgOiB3b3JkLAorCSdjcGFyJyA6IHBhcmFncmFwaCwKK30KKworX3Byb3BkZWNsYXJhdGlvbnMgPSB7CisJJ3Bic3QnIDogYmVzdF90eXBlLAorCSdwc2N0JyA6IHdyaXRpbmdfY29kZSwKKwkndHhzdCcgOiBzdHlsZSwKKwknY29scicgOiBjb2xvciwKKwknZm9udCcgOiBmb250LAorCSdwbmFtJyA6IG5hbWUsCisJJ3BjbHMnIDogX2NsYXNzLAorCSdkZWZ0JyA6IGRlZmF1bHRfdHlwZSwKKwkncGpzdCcgOiBqdXN0aWZpY2F0aW9uLAorCSdwdHN6JyA6IHNpemUsCisJJ3VzdGwnIDogdW5pZm9ybV9zdHlsZXMsCit9CisKK19jb21wZGVjbGFyYXRpb25zID0geworfQorCitfZW51bWRlY2xhcmF0aW9ucyA9IHsKKwknc3R5bCcgOiBfRW51bV9zdHlsLAorCSdqdXN0JyA6IF9FbnVtX2p1c3QsCit9CmRpZmYgLS1naXQgYS9NYWMvTGliL3NjcmlwdGluZy9UeXBlX05hbWVzX1N1aXRlLnB5IGIvTWFjL0xpYi9zY3JpcHRpbmcvVHlwZV9OYW1lc19TdWl0ZS5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42MDMwMWY3Ci0tLSAvZGV2L251bGwKKysrIGIvTWFjL0xpYi9zY3JpcHRpbmcvVHlwZV9OYW1lc19TdWl0ZS5weQpAQCAtMCwwICsxLDQ1NCBAQAorIiIiU3VpdGUgVHlwZSBOYW1lcyBTdWl0ZTogVGVybWlub2xvZ3kgZm9yIFJlZ2lzdHJ5IGRhdGEgdHlwZXMKK0xldmVsIDEsIHZlcnNpb24gMQorCitHZW5lcmF0ZWQgZnJvbSBmbGFwOlN5c3RlbSBGb2xkZXI6RXh0ZW5zaW9uczpTY3JpcHRpbmcgQWRkaXRpb25zOkRpYWxlY3RzOkVuZ2xpc2ggRGlhbGVjdAorQUVURS9BRVVUIHJlc291cmNlIHZlcnNpb24gMS8wLCBsYW5ndWFnZSAwLCBzY3JpcHQgMAorIiIiCisKK2ltcG9ydCBhZXRvb2xzCitpbXBvcnQgTWFjT1MKKworX2NvZGUgPSAndHBubScKKworY2xhc3MgVHlwZV9OYW1lc19TdWl0ZToKKworCXBhc3MKKworCitjbGFzcyBhbnl0aGluZyhhZXRvb2xzLkNvbXBvbmVudEl0ZW0pOgorCSIiImFueXRoaW5nIC0gdmFyaW91cyB0eXBlcyBvZiBkYXRhIiIiCisJd2FudCA9ICcqKioqJworCitjbGFzcyB0eXBlX2NsYXNzKGFldG9vbHMuQ29tcG9uZW50SXRlbSk6CisJIiIidHlwZSBjbGFzcyAtIGNsYXNzIG5hbWUiIiIKKwl3YW50ID0gJ3R5cGUnCisKK2NsYXNzIHR5cGVfY2xhc3NfaW5mbyhhZXRvb2xzLkNvbXBvbmVudEl0ZW0pOgorCSIiInR5cGUgY2xhc3MgaW5mbyAtIGluZm9ybWF0aW9uIGFib3V0IHByb3BlcnRpZXMgYW5kIGVsZW1lbnRzIG9mIGEgY2xhc3MiIiIKKwl3YW50ID0gJ2djbGknCisKK2NsYXNzIHR5cGVfZXZlbnRfaW5mbyhhZXRvb2xzLkNvbXBvbmVudEl0ZW0pOgorCSIiInR5cGUgZXZlbnQgaW5mbyAtIGluZm9ybWF0aW9uIGFib3V0IGFuIGV2ZW50IiIiCisJd2FudCA9ICdldmluJworCitjbGFzcyBzdHJpbmcoYWV0b29scy5Db21wb25lbnRJdGVtKToKKwkiIiJzdHJpbmcgLSB0ZXh0IGluIGEgc3BlY2lmaWMgbGFuZ3VhZ2UgYW5kIHNjcmlwdCBzeXN0ZW0iIiIKKwl3YW50ID0gJ2l0eHQnCisKK2NsYXNzIHdyaXRpbmdfY29kZShhZXRvb2xzLkNvbXBvbmVudEl0ZW0pOgorCSIiIndyaXRpbmcgY29kZSAtIGNvZGVzIHdoaWNoIGlkZW50aWZ5IHRoZSBsYW5ndWFnZSBhbmQgc2NyaXB0IHN5c3RlbSIiIgorCXdhbnQgPSAnaW50bCcKKworY2xhc3MgYm91bmRpbmdfcmVjdGFuZ2xlKGFldG9vbHMuQ29tcG9uZW50SXRlbSk6CisJIiIiYm91bmRpbmcgcmVjdGFuZ2xlIC0gYm91bmRpbmcgcmVjdGFuZ2xlIiIiCisJd2FudCA9ICdxZHJ0JworCitjbGFzcyBwb2ludChhZXRvb2xzLkNvbXBvbmVudEl0ZW0pOgorCSIiInBvaW50IC0gcG9pbnQgY29vcmRpbmF0ZXMiIiIKKwl3YW50ID0gJ1FEcHQnCisKK2NsYXNzIGZpeGVkKGFldG9vbHMuQ29tcG9uZW50SXRlbSk6CisJIiIiZml4ZWQgLSBhIHJlYWwgbnVtYmVyIiIiCisJd2FudCA9ICdmaXhkJworCitjbGFzcyBsb2NhdGlvbl9yZWZlcmVuY2UoYWV0b29scy5Db21wb25lbnRJdGVtKToKKwkiIiJsb2NhdGlvbiByZWZlcmVuY2UgLSAiIiIKKwl3YW50ID0gJ2luc2wnCisKK2NsYXNzIGFwcGxpY2F0aW9uX2RpY3Rpb25hcnkoYWV0b29scy5Db21wb25lbnRJdGVtKToKKwkiIiJhcHBsaWNhdGlvbiBkaWN0aW9uYXJ5IC0gIiIiCisJd2FudCA9ICdhZXRlJworCitjbGFzcyBjb2xvcl90YWJsZShhZXRvb2xzLkNvbXBvbmVudEl0ZW0pOgorCSIiImNvbG9yIHRhYmxlIC0gIiIiCisJd2FudCA9ICdjbHJ0JworCitjbGFzcyBkYXNoX3N0eWxlKGFldG9vbHMuQ29tcG9uZW50SXRlbSk6CisJIiIiZGFzaCBzdHlsZSAtICIiIgorCXdhbnQgPSAndGRhcycKKworY2xhc3MgZG91YmxlX2ludGVnZXIoYWV0b29scy5Db21wb25lbnRJdGVtKToKKwkiIiJkb3VibGUgaW50ZWdlciAtICIiIgorCXdhbnQgPSAnY29tcCcKKworY2xhc3MgZXh0ZW5kZWRfcmVhbChhZXRvb2xzLkNvbXBvbmVudEl0ZW0pOgorCSIiImV4dGVuZGVkIHJlYWwgLSAiIiIKKwl3YW50ID0gJ2V4dGUnCisKK2NsYXNzIGZpbGVfc3BlY2lmaWNhdGlvbihhZXRvb2xzLkNvbXBvbmVudEl0ZW0pOgorCSIiImZpbGUgc3BlY2lmaWNhdGlvbiAtICIiIgorCXdhbnQgPSAnZnNzICcKKworY2xhc3MgZml4ZWRfcG9pbnQoYWV0b29scy5Db21wb25lbnRJdGVtKToKKwkiIiJmaXhlZCBwb2ludCAtICIiIgorCXdhbnQgPSAnZnBudCcKKworY2xhc3MgZml4ZWRfcmVjdGFuZ2xlKGFldG9vbHMuQ29tcG9uZW50SXRlbSk6CisJIiIiZml4ZWQgcmVjdGFuZ2xlIC0gIiIiCisJd2FudCA9ICdmcmN0JworCitjbGFzcyBsb25nX2ZpeGVkKGFldG9vbHMuQ29tcG9uZW50SXRlbSk6CisJIiIibG9uZyBmaXhlZCAtICIiIgorCXdhbnQgPSAnbGZ4ZCcKKworY2xhc3MgbG9uZ19maXhlZF9wb2ludChhZXRvb2xzLkNvbXBvbmVudEl0ZW0pOgorCSIiImxvbmcgZml4ZWQgcG9pbnQgLSAiIiIKKwl3YW50ID0gJ2xmcHQnCisKK2NsYXNzIGxvbmdfZml4ZWRfcmVjdGFuZ2xlKGFldG9vbHMuQ29tcG9uZW50SXRlbSk6CisJIiIibG9uZyBmaXhlZCByZWN0YW5nbGUgLSAiIiIKKwl3YW50ID0gJ2xmcmMnCisKK2NsYXNzIGxvbmdfcG9pbnQoYWV0b29scy5Db21wb25lbnRJdGVtKToKKwkiIiJsb25nIHBvaW50IC0gIiIiCisJd2FudCA9ICdscG50JworCitjbGFzcyBsb25nX3JlY3RhbmdsZShhZXRvb2xzLkNvbXBvbmVudEl0ZW0pOgorCSIiImxvbmcgcmVjdGFuZ2xlIC0gIiIiCisJd2FudCA9ICdscmN0JworCitjbGFzcyBtYWNoaW5lX2xvY2F0aW9uKGFldG9vbHMuQ29tcG9uZW50SXRlbSk6CisJIiIibWFjaGluZSBsb2NhdGlvbiAtICIiIgorCXdhbnQgPSAnbUxvYycKKworY2xhc3MgbWVudShhZXRvb2xzLkNvbXBvbmVudEl0ZW0pOgorCSIiIm1lbnUgLSAiIiIKKwl3YW50ID0gJ2NtbnUnCisKK2NsYXNzIG1lbnVfaXRlbShhZXRvb2xzLkNvbXBvbmVudEl0ZW0pOgorCSIiIm1lbnUgaXRlbSAtICIiIgorCXdhbnQgPSAnY21lbicKKworY2xhc3MgbnVsbChhZXRvb2xzLkNvbXBvbmVudEl0ZW0pOgorCSIiIm51bGwgLSAiIiIKKwl3YW50ID0gJ251bGwnCisKK2NsYXNzIHBpY3R1cmUoYWV0b29scy5Db21wb25lbnRJdGVtKToKKwkiIiJwaWN0dXJlIC0gIiIiCisJd2FudCA9ICdQSUNUJworCitjbGFzcyBwaXhlbF9tYXBfcmVjb3JkKGFldG9vbHMuQ29tcG9uZW50SXRlbSk6CisJIiIicGl4ZWwgbWFwIHJlY29yZCAtICIiIgorCXdhbnQgPSAndHBtbScKKworY2xhc3MgUG9zdFNjcmlwdF9waWN0dXJlKGFldG9vbHMuQ29tcG9uZW50SXRlbSk6CisJIiIiUG9zdFNjcmlwdCBwaWN0dXJlIC0gIiIiCisJd2FudCA9ICdFUFMgJworCitjbGFzcyBSR0IxNl9jb2xvcihhZXRvb2xzLkNvbXBvbmVudEl0ZW0pOgorCSIiIlJHQjE2IGNvbG9yIC0gIiIiCisJd2FudCA9ICd0cjE2JworCitjbGFzcyBSR0I5Nl9jb2xvcihhZXRvb2xzLkNvbXBvbmVudEl0ZW0pOgorCSIiIlJHQjk2IGNvbG9yIC0gIiIiCisJd2FudCA9ICd0cjk2JworCitjbGFzcyBzbWFsbF9pbnRlZ2VyKGFldG9vbHMuQ29tcG9uZW50SXRlbSk6CisJIiIic21hbGwgaW50ZWdlciAtICIiIgorCXdhbnQgPSAnc2hvcicKKworY2xhc3Mgc21hbGxfcmVhbChhZXRvb2xzLkNvbXBvbmVudEl0ZW0pOgorCSIiInNtYWxsIHJlYWwgLSAiIiIKKwl3YW50ID0gJ3NpbmcnCisKK2NsYXNzIHN5c3RlbV9kaWN0aW9uYXJ5KGFldG9vbHMuQ29tcG9uZW50SXRlbSk6CisJIiIic3lzdGVtIGRpY3Rpb25hcnkgLSAiIiIKKwl3YW50ID0gJ2FldXQnCisKK2NsYXNzIHJvdGF0aW9uKGFldG9vbHMuQ29tcG9uZW50SXRlbSk6CisJIiIicm90YXRpb24gLSAiIiIKKwl3YW50ID0gJ3Ryb3QnCisKK2NsYXNzIHNjcmFwX3N0eWxlcyhhZXRvb2xzLkNvbXBvbmVudEl0ZW0pOgorCSIiInNjcmFwIHN0eWxlcyAtICIiIgorCXdhbnQgPSAnc3R5bCcKKworY2xhc3MgVElGRl9waWN0dXJlKGFldG9vbHMuQ29tcG9uZW50SXRlbSk6CisJIiIiVElGRiBwaWN0dXJlIC0gIiIiCisJd2FudCA9ICdUSUZGJworCitjbGFzcyB2ZXJzaW9uKGFldG9vbHMuQ29tcG9uZW50SXRlbSk6CisJIiIidmVyc2lvbiAtICIiIgorCXdhbnQgPSAndmVycycKKworY2xhc3MgdW5zaWduZWRfaW50ZWdlcihhZXRvb2xzLkNvbXBvbmVudEl0ZW0pOgorCSIiInVuc2lnbmVkIGludGVnZXIgLSAiIiIKKwl3YW50ID0gJ21hZ24nCisKK2NsYXNzIHR5cGVfcHJvcGVydHlfaW5mbyhhZXRvb2xzLkNvbXBvbmVudEl0ZW0pOgorCSIiInR5cGUgcHJvcGVydHkgaW5mbyAtICIiIgorCXdhbnQgPSAncGluZicKKworY2xhc3MgdHlwZV9lbGVtZW50X2luZm8oYWV0b29scy5Db21wb25lbnRJdGVtKToKKwkiIiJ0eXBlIGVsZW1lbnQgaW5mbyAtICIiIgorCXdhbnQgPSAnZWxpbicKKworY2xhc3MgdHlwZV9wYXJhbWV0ZXJfaW5mbyhhZXRvb2xzLkNvbXBvbmVudEl0ZW0pOgorCSIiInR5cGUgcGFyYW1ldGVyIGluZm8gLSAiIiIKKwl3YW50ID0gJ3BtaW4nCisKK2NsYXNzIHR5cGVfc3VpdGVfaW5mbyhhZXRvb2xzLkNvbXBvbmVudEl0ZW0pOgorCSIiInR5cGUgc3VpdGUgaW5mbyAtICIiIgorCXdhbnQgPSAnc3VpbicKKworY2xhc3MgdGFyZ2V0X2lkKGFldG9vbHMuQ29tcG9uZW50SXRlbSk6CisJIiIidGFyZ2V0IGlkIC0gIiIiCisJd2FudCA9ICd0YXJnJworCitjbGFzcyBwbGFpbl90ZXh0KGFldG9vbHMuQ29tcG9uZW50SXRlbSk6CisJIiIicGxhaW4gdGV4dCAtICIiIgorCXdhbnQgPSAnVEVYVCcKKworY2xhc3Mgd3JpdGluZ19jb2RlKGFldG9vbHMuQ29tcG9uZW50SXRlbSk6CisJIiIid3JpdGluZyBjb2RlIC0gY29kZXMgd2hpY2ggaWRlbnRpZnkgdGhlIGxhbmd1YWdlIGFuZCBzY3JpcHQgc3lzdGVtIiIiCisJd2FudCA9ICdwc2N0JworYW55dGhpbmcuX3Byb3BkaWN0ID0geworfQorYW55dGhpbmcuX2VsZW1kaWN0ID0geworfQordHlwZV9jbGFzcy5fcHJvcGRpY3QgPSB7Cit9Cit0eXBlX2NsYXNzLl9lbGVtZGljdCA9IHsKK30KK3R5cGVfY2xhc3NfaW5mby5fcHJvcGRpY3QgPSB7Cit9Cit0eXBlX2NsYXNzX2luZm8uX2VsZW1kaWN0ID0geworfQordHlwZV9ldmVudF9pbmZvLl9wcm9wZGljdCA9IHsKK30KK3R5cGVfZXZlbnRfaW5mby5fZWxlbWRpY3QgPSB7Cit9CitzdHJpbmcuX3Byb3BkaWN0ID0geworfQorc3RyaW5nLl9lbGVtZGljdCA9IHsKK30KK3dyaXRpbmdfY29kZS5fcHJvcGRpY3QgPSB7Cit9Cit3cml0aW5nX2NvZGUuX2VsZW1kaWN0ID0geworfQorYm91bmRpbmdfcmVjdGFuZ2xlLl9wcm9wZGljdCA9IHsKK30KK2JvdW5kaW5nX3JlY3RhbmdsZS5fZWxlbWRpY3QgPSB7Cit9Citwb2ludC5fcHJvcGRpY3QgPSB7Cit9Citwb2ludC5fZWxlbWRpY3QgPSB7Cit9CitmaXhlZC5fcHJvcGRpY3QgPSB7Cit9CitmaXhlZC5fZWxlbWRpY3QgPSB7Cit9Citsb2NhdGlvbl9yZWZlcmVuY2UuX3Byb3BkaWN0ID0geworfQorbG9jYXRpb25fcmVmZXJlbmNlLl9lbGVtZGljdCA9IHsKK30KK2FwcGxpY2F0aW9uX2RpY3Rpb25hcnkuX3Byb3BkaWN0ID0geworfQorYXBwbGljYXRpb25fZGljdGlvbmFyeS5fZWxlbWRpY3QgPSB7Cit9Citjb2xvcl90YWJsZS5fcHJvcGRpY3QgPSB7Cit9Citjb2xvcl90YWJsZS5fZWxlbWRpY3QgPSB7Cit9CitkYXNoX3N0eWxlLl9wcm9wZGljdCA9IHsKK30KK2Rhc2hfc3R5bGUuX2VsZW1kaWN0ID0geworfQorZG91YmxlX2ludGVnZXIuX3Byb3BkaWN0ID0geworfQorZG91YmxlX2ludGVnZXIuX2VsZW1kaWN0ID0geworfQorZXh0ZW5kZWRfcmVhbC5fcHJvcGRpY3QgPSB7Cit9CitleHRlbmRlZF9yZWFsLl9lbGVtZGljdCA9IHsKK30KK2ZpbGVfc3BlY2lmaWNhdGlvbi5fcHJvcGRpY3QgPSB7Cit9CitmaWxlX3NwZWNpZmljYXRpb24uX2VsZW1kaWN0ID0geworfQorZml4ZWRfcG9pbnQuX3Byb3BkaWN0ID0geworfQorZml4ZWRfcG9pbnQuX2VsZW1kaWN0ID0geworfQorZml4ZWRfcmVjdGFuZ2xlLl9wcm9wZGljdCA9IHsKK30KK2ZpeGVkX3JlY3RhbmdsZS5fZWxlbWRpY3QgPSB7Cit9Citsb25nX2ZpeGVkLl9wcm9wZGljdCA9IHsKK30KK2xvbmdfZml4ZWQuX2VsZW1kaWN0ID0geworfQorbG9uZ19maXhlZF9wb2ludC5fcHJvcGRpY3QgPSB7Cit9Citsb25nX2ZpeGVkX3BvaW50Ll9lbGVtZGljdCA9IHsKK30KK2xvbmdfZml4ZWRfcmVjdGFuZ2xlLl9wcm9wZGljdCA9IHsKK30KK2xvbmdfZml4ZWRfcmVjdGFuZ2xlLl9lbGVtZGljdCA9IHsKK30KK2xvbmdfcG9pbnQuX3Byb3BkaWN0ID0geworfQorbG9uZ19wb2ludC5fZWxlbWRpY3QgPSB7Cit9Citsb25nX3JlY3RhbmdsZS5fcHJvcGRpY3QgPSB7Cit9Citsb25nX3JlY3RhbmdsZS5fZWxlbWRpY3QgPSB7Cit9CittYWNoaW5lX2xvY2F0aW9uLl9wcm9wZGljdCA9IHsKK30KK21hY2hpbmVfbG9jYXRpb24uX2VsZW1kaWN0ID0geworfQorbWVudS5fcHJvcGRpY3QgPSB7Cit9CittZW51Ll9lbGVtZGljdCA9IHsKK30KK21lbnVfaXRlbS5fcHJvcGRpY3QgPSB7Cit9CittZW51X2l0ZW0uX2VsZW1kaWN0ID0geworfQorbnVsbC5fcHJvcGRpY3QgPSB7Cit9CitudWxsLl9lbGVtZGljdCA9IHsKK30KK3BpY3R1cmUuX3Byb3BkaWN0ID0geworfQorcGljdHVyZS5fZWxlbWRpY3QgPSB7Cit9CitwaXhlbF9tYXBfcmVjb3JkLl9wcm9wZGljdCA9IHsKK30KK3BpeGVsX21hcF9yZWNvcmQuX2VsZW1kaWN0ID0geworfQorUG9zdFNjcmlwdF9waWN0dXJlLl9wcm9wZGljdCA9IHsKK30KK1Bvc3RTY3JpcHRfcGljdHVyZS5fZWxlbWRpY3QgPSB7Cit9CitSR0IxNl9jb2xvci5fcHJvcGRpY3QgPSB7Cit9CitSR0IxNl9jb2xvci5fZWxlbWRpY3QgPSB7Cit9CitSR0I5Nl9jb2xvci5fcHJvcGRpY3QgPSB7Cit9CitSR0I5Nl9jb2xvci5fZWxlbWRpY3QgPSB7Cit9CitzbWFsbF9pbnRlZ2VyLl9wcm9wZGljdCA9IHsKK30KK3NtYWxsX2ludGVnZXIuX2VsZW1kaWN0ID0geworfQorc21hbGxfcmVhbC5fcHJvcGRpY3QgPSB7Cit9CitzbWFsbF9yZWFsLl9lbGVtZGljdCA9IHsKK30KK3N5c3RlbV9kaWN0aW9uYXJ5Ll9wcm9wZGljdCA9IHsKK30KK3N5c3RlbV9kaWN0aW9uYXJ5Ll9lbGVtZGljdCA9IHsKK30KK3JvdGF0aW9uLl9wcm9wZGljdCA9IHsKK30KK3JvdGF0aW9uLl9lbGVtZGljdCA9IHsKK30KK3NjcmFwX3N0eWxlcy5fcHJvcGRpY3QgPSB7Cit9CitzY3JhcF9zdHlsZXMuX2VsZW1kaWN0ID0geworfQorVElGRl9waWN0dXJlLl9wcm9wZGljdCA9IHsKK30KK1RJRkZfcGljdHVyZS5fZWxlbWRpY3QgPSB7Cit9Cit2ZXJzaW9uLl9wcm9wZGljdCA9IHsKK30KK3ZlcnNpb24uX2VsZW1kaWN0ID0geworfQordW5zaWduZWRfaW50ZWdlci5fcHJvcGRpY3QgPSB7Cit9Cit1bnNpZ25lZF9pbnRlZ2VyLl9lbGVtZGljdCA9IHsKK30KK3R5cGVfcHJvcGVydHlfaW5mby5fcHJvcGRpY3QgPSB7Cit9Cit0eXBlX3Byb3BlcnR5X2luZm8uX2VsZW1kaWN0ID0geworfQordHlwZV9lbGVtZW50X2luZm8uX3Byb3BkaWN0ID0geworfQordHlwZV9lbGVtZW50X2luZm8uX2VsZW1kaWN0ID0geworfQordHlwZV9wYXJhbWV0ZXJfaW5mby5fcHJvcGRpY3QgPSB7Cit9Cit0eXBlX3BhcmFtZXRlcl9pbmZvLl9lbGVtZGljdCA9IHsKK30KK3R5cGVfc3VpdGVfaW5mby5fcHJvcGRpY3QgPSB7Cit9Cit0eXBlX3N1aXRlX2luZm8uX2VsZW1kaWN0ID0geworfQordGFyZ2V0X2lkLl9wcm9wZGljdCA9IHsKK30KK3RhcmdldF9pZC5fZWxlbWRpY3QgPSB7Cit9CitwbGFpbl90ZXh0Ll9wcm9wZGljdCA9IHsKK30KK3BsYWluX3RleHQuX2VsZW1kaWN0ID0geworfQord3JpdGluZ19jb2RlLl9wcm9wZGljdCA9IHsKK30KK3dyaXRpbmdfY29kZS5fZWxlbWRpY3QgPSB7Cit9CisKKyMKKyMgSW5kaWNlcyBvZiB0eXBlcyBkZWNsYXJlZCBpbiB0aGlzIG1vZHVsZQorIworX2NsYXNzZGVjbGFyYXRpb25zID0geworCSd0YXJnJyA6IHRhcmdldF9pZCwKKwknZnNzICcgOiBmaWxlX3NwZWNpZmljYXRpb24sCisJJ2xyY3QnIDogbG9uZ19yZWN0YW5nbGUsCisJJ2V4dGUnIDogZXh0ZW5kZWRfcmVhbCwKKwkndGRhcycgOiBkYXNoX3N0eWxlLAorCSd0cjk2JyA6IFJHQjk2X2NvbG9yLAorCSdnY2xpJyA6IHR5cGVfY2xhc3NfaW5mbywKKwknc3VpbicgOiB0eXBlX3N1aXRlX2luZm8sCisJJ2V2aW4nIDogdHlwZV9ldmVudF9pbmZvLAorCSdmaXhkJyA6IGZpeGVkLAorCSdsZnJjJyA6IGxvbmdfZml4ZWRfcmVjdGFuZ2xlLAorCSdmcmN0JyA6IGZpeGVkX3JlY3RhbmdsZSwKKwknY21udScgOiBtZW51LAorCSdtYWduJyA6IHVuc2lnbmVkX2ludGVnZXIsCisJJ2FldGUnIDogYXBwbGljYXRpb25fZGljdGlvbmFyeSwKKwknc3R5bCcgOiBzY3JhcF9zdHlsZXMsCisJJ1FEcHQnIDogcG9pbnQsCisJJ2luc2wnIDogbG9jYXRpb25fcmVmZXJlbmNlLAorCSdjb21wJyA6IGRvdWJsZV9pbnRlZ2VyLAorCSd0cjE2JyA6IFJHQjE2X2NvbG9yLAorCSd2ZXJzJyA6IHZlcnNpb24sCisJJ3R5cGUnIDogdHlwZV9jbGFzcywKKwknbGZ4ZCcgOiBsb25nX2ZpeGVkLAorCSdUSUZGJyA6IFRJRkZfcGljdHVyZSwKKwkncWRydCcgOiBib3VuZGluZ19yZWN0YW5nbGUsCisJJ2xmcHQnIDogbG9uZ19maXhlZF9wb2ludCwKKwkncG1pbicgOiB0eXBlX3BhcmFtZXRlcl9pbmZvLAorCSdwc2N0JyA6IHdyaXRpbmdfY29kZSwKKwkncGluZicgOiB0eXBlX3Byb3BlcnR5X2luZm8sCisJJyoqKionIDogYW55dGhpbmcsCisJJ1BJQ1QnIDogcGljdHVyZSwKKwknbHBudCcgOiBsb25nX3BvaW50LAorCSd0cm90JyA6IHJvdGF0aW9uLAorCSdudWxsJyA6IG51bGwsCisJJ3NpbmcnIDogc21hbGxfcmVhbCwKKwkndHBtbScgOiBwaXhlbF9tYXBfcmVjb3JkLAorCSdjbWVuJyA6IG1lbnVfaXRlbSwKKwknaXR4dCcgOiBzdHJpbmcsCisJJ0VQUyAnIDogUG9zdFNjcmlwdF9waWN0dXJlLAorCSdtTG9jJyA6IG1hY2hpbmVfbG9jYXRpb24sCisJJ2VsaW4nIDogdHlwZV9lbGVtZW50X2luZm8sCisJJ2ludGwnIDogd3JpdGluZ19jb2RlLAorCSdmcG50JyA6IGZpeGVkX3BvaW50LAorCSdjbHJ0JyA6IGNvbG9yX3RhYmxlLAorCSdhZXV0JyA6IHN5c3RlbV9kaWN0aW9uYXJ5LAorCSdzaG9yJyA6IHNtYWxsX2ludGVnZXIsCisJJ1RFWFQnIDogcGxhaW5fdGV4dCwKK30KKworX3Byb3BkZWNsYXJhdGlvbnMgPSB7Cit9CisKK19jb21wZGVjbGFyYXRpb25zID0geworfQorCitfZW51bWRlY2xhcmF0aW9ucyA9IHsKK30KZGlmZiAtLWdpdCBhL01hYy9MaWIvdG9vbGJveC9XV1dfU3VpdGUucHkgYi9NYWMvTGliL3NjcmlwdGluZy9XV1dfU3VpdGUucHkKc2ltaWxhcml0eSBpbmRleCA5NyUKcmVuYW1lIGZyb20gTWFjL0xpYi90b29sYm94L1dXV19TdWl0ZS5weQpyZW5hbWUgdG8gTWFjL0xpYi9zY3JpcHRpbmcvV1dXX1N1aXRlLnB5CmluZGV4IDAxYmEzOWYuLjk1NjQyNDkgMTAwNjQ0Ci0tLSBhL01hYy9MaWIvdG9vbGJveC9XV1dfU3VpdGUucHkKKysrIGIvTWFjL0xpYi9zY3JpcHRpbmcvV1dXX1N1aXRlLnB5CkBAIC0xLDcgKzEsNyBAQAogIiIiU3VpdGUgV29ybGRXaWRlV2ViIHN1aXRlLCBhcyBkZWZpbmVkIGluIFNweWdsYXNzIHNwZWMuOiAKIExldmVsIDEsIHZlcnNpb24gMQogCi1HZW5lcmF0ZWQgZnJvbSBmbGFwOlByb2dyYW1tYSdzOk5ldHNjYXBlIE5hdmlnYXRvcoEgRm9sZGVyOk5ldHNjYXBlIE5hdmlnYXRvcoEgMy4wCitHZW5lcmF0ZWQgZnJvbSBmbGFwOlByb2dyYW1tYSdzOk5ldHNjYXBlIE5hdmlnYXRvcoEgRm9sZGVyOk5ldHNjYXBlIE5hdmlnYXRvcoEgMy4wMQogQUVURS9BRVVUIHJlc291cmNlIHZlcnNpb24gMS8wLCBsYW5ndWFnZSAwLCBzY3JpcHQgMAogIiIiCiAKQEAgLTEwLDcgKzEwLDcgQEAKIAogX2NvZGUgPSAnV1dXIScKIAotY2xhc3MgV1dXX1N1aXRlOgorY2xhc3MgV29ybGRXaWRlV2ViX3N1aXRlXzJjX19hc19kZWZpbmVkX2luX1NweWdsYXNzX3NwZWNfMmVfOgogCiAJX2FyZ21hcF9PcGVuVVJMID0gewogCQkndG8nIDogJ0lOVE8nLApAQCAtNDA5LDMgKzQwOSwxOCBAQAogCQlpZiBfYXJndW1lbnRzLmhhc19rZXkoJy0tLS0nKToKIAkJCXJldHVybiBfYXJndW1lbnRzWyctLS0tJ10KIAorCisjCisjIEluZGljZXMgb2YgdHlwZXMgZGVjbGFyZWQgaW4gdGhpcyBtb2R1bGUKKyMKK19jbGFzc2RlY2xhcmF0aW9ucyA9IHsKK30KKworX3Byb3BkZWNsYXJhdGlvbnMgPSB7Cit9CisKK19jb21wZGVjbGFyYXRpb25zID0geworfQorCitfZW51bWRlY2xhcmF0aW9ucyA9IHsKK30KZGlmZiAtLWdpdCBhL01hYy9MaWIvdG9vbGJveC9GaW5kZXJfU3VpdGUucHkgYi9NYWMvTGliL3Rvb2xib3gvRmluZGVyX1N1aXRlLnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3NDZkZTM2Li4wMDAwMDAwCi0tLSBhL01hYy9MaWIvdG9vbGJveC9GaW5kZXJfU3VpdGUucHkKKysrIC9kZXYvbnVsbApAQCAtMSw3NDAgKzAsMCBAQAotIiIiU3VpdGUgRmluZGVyIFN1aXRlOiBPYmplY3RzIGFuZCBFdmVudHMgZm9yIHRoZSBGaW5kZXIKLUxldmVsIDEsIHZlcnNpb24gMQotCi1HZW5lcmF0ZWQgZnJvbSBmbGFwOlN5c3RlZW1tYXA6RXh0ZW5zaWVzOkZpbmRlciBTY3JpcHQtZXh0ZW5zaWUKLUFFVEUvQUVVVCByZXNvdXJjZSB2ZXJzaW9uIDAvMTQ0LCBsYW5ndWFnZSAwLCBzY3JpcHQgMAotIiIiCi0KLWltcG9ydCBhZXRvb2xzCi1pbXBvcnQgTWFjT1MKLQotX2NvZGUgPSAnZm5kcicKLQotX0VudW1fdndieSA9IHsKLQknY29uZmxpY3RzJyA6ICdjZmxjJywJIyAKLQknZXhpc3RpbmdfaXRlbXMnIDogJ2V4c2knLAkjIAotCSdzbWFsbF9pY29uJyA6ICdzbWljJywJIyAKLQknYWxsJyA6ICdreWFsJywJIyAKLX0KLQotX0VudW1fZ3NlbiA9IHsKLQknQ1BVJyA6ICdwcm9jJywJIyAKLQknRlBVJyA6ICdmcHUgJywJIyAKLQknTU1VJyA6ICdtbXUgJywJIyAKLQknaGFyZHdhcmUnIDogJ2hkd3InLAkjIAotCSdvcGVyYXRpbmdfc3lzdGVtJyA6ICdvcyAgJywJIyAKLQknc291bmRfc3lzdGVtJyA6ICdzbmQgJywJIyAKLQknbWVtb3J5X2F2YWlsYWJsZScgOiAnbHJhbScsCSMgCi0JJ21lbW9yeV9pbnN0YWxsZWQnIDogJ3JhbSAnLAkjIAotfQotCi1jbGFzcyBGaW5kZXJfU3VpdGU6Ci0KLQlfYXJnbWFwX2NsZWFuX3VwID0gewotCQknYnknIDogJ2J5ICAnLAotCX0KLQotCWRlZiBjbGVhbl91cChzZWxmLCBfb2JqZWN0LCBfYXR0cmlidXRlcz17fSwgKipfYXJndW1lbnRzKToKLQkJIiIiY2xlYW4gdXA6IEFycmFuZ2UgaXRlbXMgaW4gd2luZG93IG5pY2VseQotCQlSZXF1aXJlZCBhcmd1bWVudDogdGhlIHdpbmRvdyB0byBjbGVhbiB1cAotCQlLZXl3b3JkIGFyZ3VtZW50IGJ5OiB0aGUgb3JkZXIgaW4gd2hpY2ggdG8gY2xlYW4gdXAgdGhlIG9iamVjdHMKLQkJS2V5d29yZCBhcmd1bWVudCBfYXR0cmlidXRlczogQXBwbGVFdmVudCBhdHRyaWJ1dGUgZGljdGlvbmFyeQotCQkiIiIKLQkJX2NvZGUgPSAnZm5kcicKLQkJX3N1YmNvZGUgPSAnZmNsdScKLQotCQlhZXRvb2xzLmtleXN1YnN0KF9hcmd1bWVudHMsIHNlbGYuX2FyZ21hcF9jbGVhbl91cCkKLQkJX2FyZ3VtZW50c1snLS0tLSddID0gX29iamVjdAotCi0KLQkJX3JlcGx5LCBfYXJndW1lbnRzLCBfYXR0cmlidXRlcyA9IHNlbGYuc2VuZChfY29kZSwgX3N1YmNvZGUsCi0JCQkJX2FyZ3VtZW50cywgX2F0dHJpYnV0ZXMpCi0JCWlmIF9hcmd1bWVudHMuaGFzX2tleSgnZXJybicpOgotCQkJcmFpc2UgYWV0b29scy5FcnJvciwgYWV0b29scy5kZWNvZGVlcnJvcihfYXJndW1lbnRzKQotCQkjIFhYWFggT3B0aW9uYWxseSBkZWNvZGUgcmVzdWx0Ci0JCWlmIF9hcmd1bWVudHMuaGFzX2tleSgnLS0tLScpOgotCQkJcmV0dXJuIF9hcmd1bWVudHNbJy0tLS0nXQotCi0JX2FyZ21hcF9jb21wdXRlciA9IHsKLQkJJ2hhcycgOiAnaGFzICcsCi0JfQotCi0JZGVmIGNvbXB1dGVyKHNlbGYsIF9vYmplY3QsIF9hdHRyaWJ1dGVzPXt9LCAqKl9hcmd1bWVudHMpOgotCQkiIiJjb21wdXRlcjogVGVzdCBhdHRyaWJ1dGVzIG9mIHRoaXMgY29tcHV0ZXIKLQkJUmVxdWlyZWQgYXJndW1lbnQ6IHRoZSBhdHRyaWJ1dGUgdG8gdGVzdAotCQlLZXl3b3JkIGFyZ3VtZW50IGhhczogdGVzdCBzcGVjaWZpYyBiaXRzIG9mIHJlc3BvbnNlCi0JCUtleXdvcmQgYXJndW1lbnQgX2F0dHJpYnV0ZXM6IEFwcGxlRXZlbnQgYXR0cmlidXRlIGRpY3Rpb25hcnkKLQkJUmV0dXJuczogdGhlIHJlc3VsdCBvZiB0aGUgcXVlcnkKLQkJIiIiCi0JCV9jb2RlID0gJ2ZuZHInCi0JCV9zdWJjb2RlID0gJ2dzdGwnCi0KLQkJYWV0b29scy5rZXlzdWJzdChfYXJndW1lbnRzLCBzZWxmLl9hcmdtYXBfY29tcHV0ZXIpCi0JCV9hcmd1bWVudHNbJy0tLS0nXSA9IF9vYmplY3QKLQotCi0JCV9yZXBseSwgX2FyZ3VtZW50cywgX2F0dHJpYnV0ZXMgPSBzZWxmLnNlbmQoX2NvZGUsIF9zdWJjb2RlLAotCQkJCV9hcmd1bWVudHMsIF9hdHRyaWJ1dGVzKQotCQlpZiBfYXJndW1lbnRzLmhhc19rZXkoJ2Vycm4nKToKLQkJCXJhaXNlIGFldG9vbHMuRXJyb3IsIGFldG9vbHMuZGVjb2RlZXJyb3IoX2FyZ3VtZW50cykKLQkJIyBYWFhYIE9wdGlvbmFsbHkgZGVjb2RlIHJlc3VsdAotCQlpZiBfYXJndW1lbnRzLmhhc19rZXkoJy0tLS0nKToKLQkJCXJldHVybiBfYXJndW1lbnRzWyctLS0tJ10KLQotCWRlZiBlamVjdChzZWxmLCBfb2JqZWN0PU5vbmUsIF9hdHRyaWJ1dGVzPXt9LCAqKl9hcmd1bWVudHMpOgotCQkiIiJlamVjdDogRWplY3QgdGhlIHNwZWNpZmllZCBkaXNrKHMpLCBvciBldmVyeSBlamVjdGFibGUgZGlzayBpZiBubyBwYXJhbWV0ZXIgaXMgc3BlY2lmaWVkCi0JCVJlcXVpcmVkIGFyZ3VtZW50OiB0aGUgaXRlbXMgdG8gZWplY3QKLQkJS2V5d29yZCBhcmd1bWVudCBfYXR0cmlidXRlczogQXBwbGVFdmVudCBhdHRyaWJ1dGUgZGljdGlvbmFyeQotCQkiIiIKLQkJX2NvZGUgPSAnZm5kcicKLQkJX3N1YmNvZGUgPSAnZWpjdCcKLQotCQlpZiBfYXJndW1lbnRzOiByYWlzZSBUeXBlRXJyb3IsICdObyBvcHRpb25hbCBhcmdzIGV4cGVjdGVkJwotCQlfYXJndW1lbnRzWyctLS0tJ10gPSBfb2JqZWN0Ci0KLQotCQlfcmVwbHksIF9hcmd1bWVudHMsIF9hdHRyaWJ1dGVzID0gc2VsZi5zZW5kKF9jb2RlLCBfc3ViY29kZSwKLQkJCQlfYXJndW1lbnRzLCBfYXR0cmlidXRlcykKLQkJaWYgX2FyZ3VtZW50cy5oYXNfa2V5KCdlcnJuJyk6Ci0JCQlyYWlzZSBhZXRvb2xzLkVycm9yLCBhZXRvb2xzLmRlY29kZWVycm9yKF9hcmd1bWVudHMpCi0JCSMgWFhYWCBPcHRpb25hbGx5IGRlY29kZSByZXN1bHQKLQkJaWYgX2FyZ3VtZW50cy5oYXNfa2V5KCctLS0tJyk6Ci0JCQlyZXR1cm4gX2FyZ3VtZW50c1snLS0tLSddCi0KLQlkZWYgZW1wdHkoc2VsZiwgX29iamVjdD1Ob25lLCBfYXR0cmlidXRlcz17fSwgKipfYXJndW1lbnRzKToKLQkJIiIiZW1wdHk6IEVtcHR5IHRoZSB0cmFzaAotCQlSZXF1aXJlZCBhcmd1bWVudDogs2VtcHR5siBhbmQgs2VtcHR5IHRyYXNosiBib3RoIGRvIHRoZSBzYW1lIHRoaW5nCi0JCUtleXdvcmQgYXJndW1lbnQgX2F0dHJpYnV0ZXM6IEFwcGxlRXZlbnQgYXR0cmlidXRlIGRpY3Rpb25hcnkKLQkJIiIiCi0JCV9jb2RlID0gJ2ZuZHInCi0JCV9zdWJjb2RlID0gJ2VtcHQnCi0KLQkJaWYgX2FyZ3VtZW50czogcmFpc2UgVHlwZUVycm9yLCAnTm8gb3B0aW9uYWwgYXJncyBleHBlY3RlZCcKLQkJX2FyZ3VtZW50c1snLS0tLSddID0gX29iamVjdAotCi0KLQkJX3JlcGx5LCBfYXJndW1lbnRzLCBfYXR0cmlidXRlcyA9IHNlbGYuc2VuZChfY29kZSwgX3N1YmNvZGUsCi0JCQkJX2FyZ3VtZW50cywgX2F0dHJpYnV0ZXMpCi0JCWlmIF9hcmd1bWVudHMuaGFzX2tleSgnZXJybicpOgotCQkJcmFpc2UgYWV0b29scy5FcnJvciwgYWV0b29scy5kZWNvZGVlcnJvcihfYXJndW1lbnRzKQotCQkjIFhYWFggT3B0aW9uYWxseSBkZWNvZGUgcmVzdWx0Ci0JCWlmIF9hcmd1bWVudHMuaGFzX2tleSgnLS0tLScpOgotCQkJcmV0dXJuIF9hcmd1bWVudHNbJy0tLS0nXQotCi0JZGVmIGVyYXNlKHNlbGYsIF9vYmplY3QsIF9hdHRyaWJ1dGVzPXt9LCAqKl9hcmd1bWVudHMpOgotCQkiIiJlcmFzZTogRXJhc2UgdGhlIHNwZWNpZmllZCBkaXNrKHMpCi0JCVJlcXVpcmVkIGFyZ3VtZW50OiB0aGUgaXRlbXMgdG8gZXJhc2UKLQkJS2V5d29yZCBhcmd1bWVudCBfYXR0cmlidXRlczogQXBwbGVFdmVudCBhdHRyaWJ1dGUgZGljdGlvbmFyeQotCQkiIiIKLQkJX2NvZGUgPSAnZm5kcicKLQkJX3N1YmNvZGUgPSAnZmVyYScKLQotCQlpZiBfYXJndW1lbnRzOiByYWlzZSBUeXBlRXJyb3IsICdObyBvcHRpb25hbCBhcmdzIGV4cGVjdGVkJwotCQlfYXJndW1lbnRzWyctLS0tJ10gPSBfb2JqZWN0Ci0KLQotCQlfcmVwbHksIF9hcmd1bWVudHMsIF9hdHRyaWJ1dGVzID0gc2VsZi5zZW5kKF9jb2RlLCBfc3ViY29kZSwKLQkJCQlfYXJndW1lbnRzLCBfYXR0cmlidXRlcykKLQkJaWYgX2FyZ3VtZW50cy5oYXNfa2V5KCdlcnJuJyk6Ci0JCQlyYWlzZSBhZXRvb2xzLkVycm9yLCBhZXRvb2xzLmRlY29kZWVycm9yKF9hcmd1bWVudHMpCi0JCSMgWFhYWCBPcHRpb25hbGx5IGRlY29kZSByZXN1bHQKLQkJaWYgX2FyZ3VtZW50cy5oYXNfa2V5KCctLS0tJyk6Ci0JCQlyZXR1cm4gX2FyZ3VtZW50c1snLS0tLSddCi0KLQlfYXJnbWFwX3B1dF9hd2F5ID0gewotCQknaXRlbXMnIDogJ2ZzZWwnLAotCX0KLQotCWRlZiBwdXRfYXdheShzZWxmLCBfb2JqZWN0LCBfYXR0cmlidXRlcz17fSwgKipfYXJndW1lbnRzKToKLQkJIiIicHV0IGF3YXk6IFB1dCBhd2F5IHRoZSBzcGVjaWZpZWQgb2JqZWN0KHMpCi0JCVJlcXVpcmVkIGFyZ3VtZW50OiB0aGUgaXRlbXMgdG8gcHV0IGF3YXkKLQkJS2V5d29yZCBhcmd1bWVudCBpdGVtczogRE8gTk9UIFVTRTogcHJvdmlkZWQgZm9yIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5IHdpdGggb2xkIGV2ZW50IHN1aXRlLiAgV2lsbCBiZSByZW1vdmVkIGluIGZ1dHVyZSBGaW5kZXJzCi0JCUtleXdvcmQgYXJndW1lbnQgX2F0dHJpYnV0ZXM6IEFwcGxlRXZlbnQgYXR0cmlidXRlIGRpY3Rpb25hcnkKLQkJUmV0dXJuczogdGhlIG9iamVjdCBwdXQgYXdheSBpbiBpdHMgcHV0LWF3YXkgbG9jYXRpb24KLQkJIiIiCi0JCV9jb2RlID0gJ2ZuZHInCi0JCV9zdWJjb2RlID0gJ3B0d3knCi0KLQkJYWV0b29scy5rZXlzdWJzdChfYXJndW1lbnRzLCBzZWxmLl9hcmdtYXBfcHV0X2F3YXkpCi0JCV9hcmd1bWVudHNbJy0tLS0nXSA9IF9vYmplY3QKLQotCi0JCV9yZXBseSwgX2FyZ3VtZW50cywgX2F0dHJpYnV0ZXMgPSBzZWxmLnNlbmQoX2NvZGUsIF9zdWJjb2RlLAotCQkJCV9hcmd1bWVudHMsIF9hdHRyaWJ1dGVzKQotCQlpZiBfYXJndW1lbnRzLmhhc19rZXkoJ2Vycm4nKToKLQkJCXJhaXNlIGFldG9vbHMuRXJyb3IsIGFldG9vbHMuZGVjb2RlZXJyb3IoX2FyZ3VtZW50cykKLQkJIyBYWFhYIE9wdGlvbmFsbHkgZGVjb2RlIHJlc3VsdAotCQlpZiBfYXJndW1lbnRzLmhhc19rZXkoJy0tLS0nKToKLQkJCXJldHVybiBfYXJndW1lbnRzWyctLS0tJ10KLQotCWRlZiByZXN0YXJ0KHNlbGYsIF9ub19vYmplY3Q9Tm9uZSwgX2F0dHJpYnV0ZXM9e30sICoqX2FyZ3VtZW50cyk6Ci0JCSIiInJlc3RhcnQ6IFJlc3RhcnQgdGhlIE1hY2ludG9zaAotCQlLZXl3b3JkIGFyZ3VtZW50IF9hdHRyaWJ1dGVzOiBBcHBsZUV2ZW50IGF0dHJpYnV0ZSBkaWN0aW9uYXJ5Ci0JCSIiIgotCQlfY29kZSA9ICdmbmRyJwotCQlfc3ViY29kZSA9ICdyZXN0JwotCi0JCWlmIF9hcmd1bWVudHM6IHJhaXNlIFR5cGVFcnJvciwgJ05vIG9wdGlvbmFsIGFyZ3MgZXhwZWN0ZWQnCi0JCWlmIF9ub19vYmplY3QgIT0gTm9uZTogcmFpc2UgVHlwZUVycm9yLCAnTm8gZGlyZWN0IGFyZyBleHBlY3RlZCcKLQotCi0JCV9yZXBseSwgX2FyZ3VtZW50cywgX2F0dHJpYnV0ZXMgPSBzZWxmLnNlbmQoX2NvZGUsIF9zdWJjb2RlLAotCQkJCV9hcmd1bWVudHMsIF9hdHRyaWJ1dGVzKQotCQlpZiBfYXJndW1lbnRzLmhhc19rZXkoJ2Vycm4nKToKLQkJCXJhaXNlIGFldG9vbHMuRXJyb3IsIGFldG9vbHMuZGVjb2RlZXJyb3IoX2FyZ3VtZW50cykKLQkJIyBYWFhYIE9wdGlvbmFsbHkgZGVjb2RlIHJlc3VsdAotCQlpZiBfYXJndW1lbnRzLmhhc19rZXkoJy0tLS0nKToKLQkJCXJldHVybiBfYXJndW1lbnRzWyctLS0tJ10KLQotCWRlZiByZXZlYWwoc2VsZiwgX29iamVjdCwgX2F0dHJpYnV0ZXM9e30sICoqX2FyZ3VtZW50cyk6Ci0JCSIiInJldmVhbDogQnJpbmcgdGhlIHNwZWNpZmllZCBvYmplY3QocykgaW50byB2aWV3Ci0JCVJlcXVpcmVkIGFyZ3VtZW50OiB0aGUgb2JqZWN0IHRvIGJlIG1hZGUgdmlzaWJsZQotCQlLZXl3b3JkIGFyZ3VtZW50IF9hdHRyaWJ1dGVzOiBBcHBsZUV2ZW50IGF0dHJpYnV0ZSBkaWN0aW9uYXJ5Ci0JCSIiIgotCQlfY29kZSA9ICdtaXNjJwotCQlfc3ViY29kZSA9ICdtdmlzJwotCi0JCWlmIF9hcmd1bWVudHM6IHJhaXNlIFR5cGVFcnJvciwgJ05vIG9wdGlvbmFsIGFyZ3MgZXhwZWN0ZWQnCi0JCV9hcmd1bWVudHNbJy0tLS0nXSA9IF9vYmplY3QKLQotCi0JCV9yZXBseSwgX2FyZ3VtZW50cywgX2F0dHJpYnV0ZXMgPSBzZWxmLnNlbmQoX2NvZGUsIF9zdWJjb2RlLAotCQkJCV9hcmd1bWVudHMsIF9hdHRyaWJ1dGVzKQotCQlpZiBfYXJndW1lbnRzLmhhc19rZXkoJ2Vycm4nKToKLQkJCXJhaXNlIGFldG9vbHMuRXJyb3IsIGFldG9vbHMuZGVjb2RlZXJyb3IoX2FyZ3VtZW50cykKLQkJIyBYWFhYIE9wdGlvbmFsbHkgZGVjb2RlIHJlc3VsdAotCQlpZiBfYXJndW1lbnRzLmhhc19rZXkoJy0tLS0nKToKLQkJCXJldHVybiBfYXJndW1lbnRzWyctLS0tJ10KLQotCWRlZiBzZWxlY3Qoc2VsZiwgX29iamVjdCwgX2F0dHJpYnV0ZXM9e30sICoqX2FyZ3VtZW50cyk6Ci0JCSIiInNlbGVjdDogU2VsZWN0IHRoZSBzcGVjaWZpZWQgb2JqZWN0KHMpCi0JCVJlcXVpcmVkIGFyZ3VtZW50OiB0aGUgb2JqZWN0IHRvIHNlbGVjdAotCQlLZXl3b3JkIGFyZ3VtZW50IF9hdHRyaWJ1dGVzOiBBcHBsZUV2ZW50IGF0dHJpYnV0ZSBkaWN0aW9uYXJ5Ci0JCSIiIgotCQlfY29kZSA9ICdtaXNjJwotCQlfc3ViY29kZSA9ICdzbGN0JwotCi0JCWlmIF9hcmd1bWVudHM6IHJhaXNlIFR5cGVFcnJvciwgJ05vIG9wdGlvbmFsIGFyZ3MgZXhwZWN0ZWQnCi0JCV9hcmd1bWVudHNbJy0tLS0nXSA9IF9vYmplY3QKLQotCi0JCV9yZXBseSwgX2FyZ3VtZW50cywgX2F0dHJpYnV0ZXMgPSBzZWxmLnNlbmQoX2NvZGUsIF9zdWJjb2RlLAotCQkJCV9hcmd1bWVudHMsIF9hdHRyaWJ1dGVzKQotCQlpZiBfYXJndW1lbnRzLmhhc19rZXkoJ2Vycm4nKToKLQkJCXJhaXNlIGFldG9vbHMuRXJyb3IsIGFldG9vbHMuZGVjb2RlZXJyb3IoX2FyZ3VtZW50cykKLQkJIyBYWFhYIE9wdGlvbmFsbHkgZGVjb2RlIHJlc3VsdAotCQlpZiBfYXJndW1lbnRzLmhhc19rZXkoJy0tLS0nKToKLQkJCXJldHVybiBfYXJndW1lbnRzWyctLS0tJ10KLQotCWRlZiBzaHV0X2Rvd24oc2VsZiwgX25vX29iamVjdD1Ob25lLCBfYXR0cmlidXRlcz17fSwgKipfYXJndW1lbnRzKToKLQkJIiIic2h1dCBkb3duOiBTaHV0IERvd24gdGhlIE1hY2ludG9zaAotCQlLZXl3b3JkIGFyZ3VtZW50IF9hdHRyaWJ1dGVzOiBBcHBsZUV2ZW50IGF0dHJpYnV0ZSBkaWN0aW9uYXJ5Ci0JCSIiIgotCQlfY29kZSA9ICdmbmRyJwotCQlfc3ViY29kZSA9ICdzaHV0JwotCi0JCWlmIF9hcmd1bWVudHM6IHJhaXNlIFR5cGVFcnJvciwgJ05vIG9wdGlvbmFsIGFyZ3MgZXhwZWN0ZWQnCi0JCWlmIF9ub19vYmplY3QgIT0gTm9uZTogcmFpc2UgVHlwZUVycm9yLCAnTm8gZGlyZWN0IGFyZyBleHBlY3RlZCcKLQotCi0JCV9yZXBseSwgX2FyZ3VtZW50cywgX2F0dHJpYnV0ZXMgPSBzZWxmLnNlbmQoX2NvZGUsIF9zdWJjb2RlLAotCQkJCV9hcmd1bWVudHMsIF9hdHRyaWJ1dGVzKQotCQlpZiBfYXJndW1lbnRzLmhhc19rZXkoJ2Vycm4nKToKLQkJCXJhaXNlIGFldG9vbHMuRXJyb3IsIGFldG9vbHMuZGVjb2RlZXJyb3IoX2FyZ3VtZW50cykKLQkJIyBYWFhYIE9wdGlvbmFsbHkgZGVjb2RlIHJlc3VsdAotCQlpZiBfYXJndW1lbnRzLmhhc19rZXkoJy0tLS0nKToKLQkJCXJldHVybiBfYXJndW1lbnRzWyctLS0tJ10KLQotCWRlZiBzbGVlcChzZWxmLCBfbm9fb2JqZWN0PU5vbmUsIF9hdHRyaWJ1dGVzPXt9LCAqKl9hcmd1bWVudHMpOgotCQkiIiJzbGVlcDogU2xlZXAgdGhlIE1hY2ludG9zaAotCQlLZXl3b3JkIGFyZ3VtZW50IF9hdHRyaWJ1dGVzOiBBcHBsZUV2ZW50IGF0dHJpYnV0ZSBkaWN0aW9uYXJ5Ci0JCSIiIgotCQlfY29kZSA9ICdmbmRyJwotCQlfc3ViY29kZSA9ICdzbm96JwotCi0JCWlmIF9hcmd1bWVudHM6IHJhaXNlIFR5cGVFcnJvciwgJ05vIG9wdGlvbmFsIGFyZ3MgZXhwZWN0ZWQnCi0JCWlmIF9ub19vYmplY3QgIT0gTm9uZTogcmFpc2UgVHlwZUVycm9yLCAnTm8gZGlyZWN0IGFyZyBleHBlY3RlZCcKLQotCi0JCV9yZXBseSwgX2FyZ3VtZW50cywgX2F0dHJpYnV0ZXMgPSBzZWxmLnNlbmQoX2NvZGUsIF9zdWJjb2RlLAotCQkJCV9hcmd1bWVudHMsIF9hdHRyaWJ1dGVzKQotCQlpZiBfYXJndW1lbnRzLmhhc19rZXkoJ2Vycm4nKToKLQkJCXJhaXNlIGFldG9vbHMuRXJyb3IsIGFldG9vbHMuZGVjb2RlZXJyb3IoX2FyZ3VtZW50cykKLQkJIyBYWFhYIE9wdGlvbmFsbHkgZGVjb2RlIHJlc3VsdAotCQlpZiBfYXJndW1lbnRzLmhhc19rZXkoJy0tLS0nKToKLQkJCXJldHVybiBfYXJndW1lbnRzWyctLS0tJ10KLQotCV9hcmdtYXBfc29ydCA9IHsKLQkJJ2J5JyA6ICdieSAgJywKLQl9Ci0KLQlkZWYgc29ydChzZWxmLCBfb2JqZWN0LCBfYXR0cmlidXRlcz17fSwgKipfYXJndW1lbnRzKToKLQkJIiIic29ydDogUmV0dXJuIHRoZSBzcGVjaWZpZWQgb2JqZWN0KHMpIGluIGEgc29ydGVkIGxpc3QKLQkJUmVxdWlyZWQgYXJndW1lbnQ6IGEgbGlzdCBvZiBmaW5kZXIgb2JqZWN0cyB0byBzb3J0Ci0JCUtleXdvcmQgYXJndW1lbnQgYnk6IHRoZSBwcm9wZXJ0eSB0byBzb3J0IHRoZSBpdGVtcyBieQotCQlLZXl3b3JkIGFyZ3VtZW50IF9hdHRyaWJ1dGVzOiBBcHBsZUV2ZW50IGF0dHJpYnV0ZSBkaWN0aW9uYXJ5Ci0JCVJldHVybnM6IHRoZSBzb3J0ZWQgaXRlbXMgaW4gdGhlaXIgbmV3IG9yZGVyCi0JCSIiIgotCQlfY29kZSA9ICdEQVRBJwotCQlfc3ViY29kZSA9ICdTT1JUJwotCi0JCWFldG9vbHMua2V5c3Vic3QoX2FyZ3VtZW50cywgc2VsZi5fYXJnbWFwX3NvcnQpCi0JCV9hcmd1bWVudHNbJy0tLS0nXSA9IF9vYmplY3QKLQotCi0JCV9yZXBseSwgX2FyZ3VtZW50cywgX2F0dHJpYnV0ZXMgPSBzZWxmLnNlbmQoX2NvZGUsIF9zdWJjb2RlLAotCQkJCV9hcmd1bWVudHMsIF9hdHRyaWJ1dGVzKQotCQlpZiBfYXJndW1lbnRzLmhhc19rZXkoJ2Vycm4nKToKLQkJCXJhaXNlIGFldG9vbHMuRXJyb3IsIGFldG9vbHMuZGVjb2RlZXJyb3IoX2FyZ3VtZW50cykKLQkJIyBYWFhYIE9wdGlvbmFsbHkgZGVjb2RlIHJlc3VsdAotCQlpZiBfYXJndW1lbnRzLmhhc19rZXkoJy0tLS0nKToKLQkJCXJldHVybiBfYXJndW1lbnRzWyctLS0tJ10KLQotCWRlZiB1cGRhdGUoc2VsZiwgX29iamVjdCwgX2F0dHJpYnV0ZXM9e30sICoqX2FyZ3VtZW50cyk6Ci0JCSIiInVwZGF0ZTogVXBkYXRlIHRoZSBkaXNwbGF5IG9mIHRoZSBzcGVjaWZpZWQgb2JqZWN0KHMpIHRvIG1hdGNoIHRoZWlyIG9uLWRpc2sgcmVwcmVzZW50YXRpb24KLQkJUmVxdWlyZWQgYXJndW1lbnQ6IHRoZSBpdGVtIHRvIHVwZGF0ZQotCQlLZXl3b3JkIGFyZ3VtZW50IF9hdHRyaWJ1dGVzOiBBcHBsZUV2ZW50IGF0dHJpYnV0ZSBkaWN0aW9uYXJ5Ci0JCSIiIgotCQlfY29kZSA9ICdmbmRyJwotCQlfc3ViY29kZSA9ICdmdXBkJwotCi0JCWlmIF9hcmd1bWVudHM6IHJhaXNlIFR5cGVFcnJvciwgJ05vIG9wdGlvbmFsIGFyZ3MgZXhwZWN0ZWQnCi0JCV9hcmd1bWVudHNbJy0tLS0nXSA9IF9vYmplY3QKLQotCi0JCV9yZXBseSwgX2FyZ3VtZW50cywgX2F0dHJpYnV0ZXMgPSBzZWxmLnNlbmQoX2NvZGUsIF9zdWJjb2RlLAotCQkJCV9hcmd1bWVudHMsIF9hdHRyaWJ1dGVzKQotCQlpZiBfYXJndW1lbnRzLmhhc19rZXkoJ2Vycm4nKToKLQkJCXJhaXNlIGFldG9vbHMuRXJyb3IsIGFldG9vbHMuZGVjb2RlZXJyb3IoX2FyZ3VtZW50cykKLQkJIyBYWFhYIE9wdGlvbmFsbHkgZGVjb2RlIHJlc3VsdAotCQlpZiBfYXJndW1lbnRzLmhhc19rZXkoJy0tLS0nKToKLQkJCXJldHVybiBfYXJndW1lbnRzWyctLS0tJ10KLQotCi0jICAgIENsYXNzICdhY2Nlc3NvcnkgcHJvY2VzcycgKCdwY2RhJykgLS0gJ0EgcHJvY2VzcyBsYXVuY2hlZCBmcm9tIGEgZGVzayBhY2Nlc3NvcnkgZmlsZScKLSMgICAgICAgIHByb3BlcnR5ICdkZXNrIGFjY2Vzc29yeSBmaWxlJyAoJ2RhZmknKSAnb2JqICcgLS0gJ3RoZSBkZXNrIGFjY2Vzc29yeSBmaWxlIGZyb20gd2hpY2ggdGhpcyBwcm9jZXNzIHdhcyBsYXVuY2hlZCcgW10KLQotIyAgICBDbGFzcyAnYWNjZXNzb3J5IHByb2Nlc3NlcycgKCdwY2RhJykgLS0gJ2V2ZXJ5IGFjY2Vzc29yeSBwcm9jZXNzJwotIyAgICAgICAgcHJvcGVydHkgJycgKCdjQCMhJykgJ3R5cGUnIC0tICcnIFswXQotCi0jICAgIENsYXNzICdhY2Nlc3Nvcnkgc3VpdGNhc2UnICgnZHN1dCcpIC0tICdBIGRlc2sgYWNjZXNzb3J5IHN1aXRjYXNlJwotIyAgICAgICAgZWxlbWVudCAnY29iaicgYXMgWydpbmR4JywgJ25hbWUnXQotCi0jICAgIENsYXNzICdhY2Nlc3Nvcnkgc3VpdGNhc2VzJyAoJ2RzdXQnKSAtLSAnZXZlcnkgYWNjZXNzb3J5IHN1aXRjYXNlJwotIyAgICAgICAgcHJvcGVydHkgJycgKCdjQCMhJykgJ3R5cGUnIC0tICcnIFswXQotCi0jICAgIENsYXNzICdhbGlhcyBmaWxlJyAoJ2FsaWEnKSAtLSAnQW4gYWxpYXMgZmlsZSAoY3JlYXRlZCB3aXRoIFwzMjJNYWtlIEFsaWFzXDMyMyknCi0jICAgICAgICBwcm9wZXJ0eSAnb3JpZ2luYWwgaXRlbScgKCdvcmlnJykgJ29iaiAnIC0tICd0aGUgb3JpZ2luYWwgaXRlbSBwb2ludGVkIHRvIGJ5IHRoZSBhbGlhcycgW10KLQotIyAgICBDbGFzcyAnYWxpYXMgZmlsZXMnICgnYWxpYScpIC0tICdldmVyeSBhbGlhcyBmaWxlJwotIyAgICAgICAgcHJvcGVydHkgJycgKCdjQCMhJykgJ3R5cGUnIC0tICcnIFswXQotCi0jICAgIENsYXNzICdhcHBsaWNhdGlvbicgKCdjYXBwJykgLS0gJ0FuIGFwcGxpY2F0aW9uIHByb2dyYW0nCi0jICAgICAgICBwcm9wZXJ0eSAnYWJvdXQgdGhpcyBtYWNpbnRvc2gnICgnYWJieCcpICdvYmogJyAtLSAndGhlIFwzMjJBYm91dCB0aGlzIE1hY2ludG9zaFwzMjMgZGlhbG9nLCBhbmQgdGhlIGxpc3Qgb2YgcnVubmluZyBwcm9jZXNzZXMgZGlzcGxheWVkIGluIGl0JyBbXQotIyAgICAgICAgcHJvcGVydHkgJ2FwcGxlIG1lbnUgaXRlbXMgZm9sZGVyJyAoJ2FtbnUnKSAnb2JqICcgLS0gJ3RoZSBzcGVjaWFsIGZvbGRlciBcMzIyQXBwbGUgTWVudSBJdGVtcyxcMzIzIHRoZSBjb250ZW50cyBvZiB3aGljaCBhcHBlYXIgaW4gdGhlIEFwcGxlIG1lbnUnIFtdCi0jICAgICAgICBwcm9wZXJ0eSAnY2xpcGJvYXJkJyAoJ3BjbGknKSAnb2JqICcgLS0gInRoZSBGaW5kZXIncyBjbGlwYm9hcmQgd2luZG93IiBbXQotIyAgICAgICAgcHJvcGVydHkgJ2NvbnRyb2wgcGFuZWxzIGZvbGRlcicgKCdjdHJsJykgJ29iaiAnIC0tICd0aGUgc3BlY2lhbCBmb2xkZXIgXDMyMkNvbnRyb2wgUGFuZWxzXDMyMycgW10KLSMgICAgICAgIHByb3BlcnR5ICdkZXNrdG9wJyAoJ2Rlc2snKSAnb2JqICcgLS0gJ3RoZSBkZXNrdG9wJyBbXQotIyAgICAgICAgcHJvcGVydHkgJ2V4dGVuc2lvbnMgZm9sZGVyJyAoJ2V4dG4nKSAnb2JqICcgLS0gJ3RoZSBzcGVjaWFsIGZvbGRlciBcMzIyRXh0ZW5zaW9uc1wzMjMnIFtdCi0jICAgICAgICBwcm9wZXJ0eSAnZmlsZSBzaGFyaW5nJyAoJ2ZzaHInKSAnYm9vbCcgLS0gJ0lzIGZpbGUgc2hhcmluZyBvbj8nIFttdXRhYmxlXQotIyAgICAgICAgcHJvcGVydHkgJ2ZvbnRzIGZvbGRlcicgKCdmZm50JykgJ29iaiAnIC0tICd0aGUgc3BlY2lhbCBmb2xkZXIgXDMyMkZvbnRzXDMyMycgW10KLSMgICAgICAgIHByb3BlcnR5ICdmcm9udG1vc3QnICgncGlzZicpICdib29sJyAtLSAnSXMgdGhpcyB0aGUgZnJvbnRtb3N0IGFwcGxpY2F0aW9uPycgW211dGFibGVdCi0jICAgICAgICBwcm9wZXJ0eSAnaW5zZXJ0aW9uIGxvY2F0aW9uJyAoJ3BpbnMnKSAnb2JqICcgLS0gJ3RoZSBjb250YWluZXIgdGhhdCBhIG5ldyBmb2xkZXIgd291bGQgYXBwZWFyIGluIGlmIFwzMjJOZXcgRm9sZGVyXDMyMyB3YXMgc2VsZWN0ZWQnIFtdCi0jICAgICAgICBwcm9wZXJ0eSAnbGFyZ2VzdCBmcmVlIGJsb2NrJyAoJ21mcmUnKSAnbG9uZycgLS0gJ3RoZSBsYXJnZXN0IGZyZWUgYmxvY2sgb2YgcHJvY2VzcyBtZW1vcnkgYXZhaWxhYmxlIHRvIGxhdW5jaCBhbiBhcHBsaWNhdGlvbicgW10KLSMgICAgICAgIHByb3BlcnR5ICdwcmVmZXJlbmNlcyBmb2xkZXInICgncHJlZicpICdvYmogJyAtLSAndGhlIHNwZWNpYWwgZm9sZGVyIFwzMjJQcmVmZXJlbmNlc1wzMjMnIFtdCi0jICAgICAgICBwcm9wZXJ0eSAncHJvZHVjdCB2ZXJzaW9uJyAoJ3ZlcjInKSAnaXR4dCcgLS0gJ3RoZSB2ZXJzaW9uIG9mIHRoZSBTeXN0ZW0gc29mdHdhcmUgcnVubmluZyBvbiB0aGlzIE1hY2ludG9zaCcgW10KLSMgICAgICAgIHByb3BlcnR5ICdzZWxlY3Rpb24nICgnc2VsZScpICdvYmogJyAtLSAndGhlIHNlbGVjdGlvbiB2aXNpYmxlIHRvIHRoZSB1c2VyJyBbbXV0YWJsZV0KLSMgICAgICAgIHByb3BlcnR5ICdzaGFyaW5nIHN0YXJ0aW5nIHVwJyAoJ2ZzdXAnKSAnYm9vbCcgLS0gJ0lzIEZpbGUgc2hhcmluZyBpbiB0aGUgcHJvY2VzcyBvZiBzdGFydGluZyB1cCAoc3RpbGwgb2ZmLCBidXQgc29vbiB0byBiZSBvbik/JyBbXQotIyAgICAgICAgcHJvcGVydHkgJ3Nob3J0Y3V0cycgKCdzY3V0JykgJ29iaiAnIC0tICJ0aGUgXDMyMkZpbmRlciBTaG9ydGN1dHNcMzIzIGl0ZW0gaW4gdGhlIEZpbmRlcidzIGhlbHAgbWVudSIgW10KLSMgICAgICAgIHByb3BlcnR5ICdzaHV0ZG93biBpdGVtcyBmb2xkZXInICgnc2hkZicpICdvYmogJyAtLSAndGhlIHNwZWNpYWwgZm9sZGVyIFwzMjJTaHV0ZG93biBJdGVtc1wzMjMnIFtdCi0jICAgICAgICBwcm9wZXJ0eSAnc3RhcnR1cCBpdGVtcyBmb2xkZXInICgnc3RydCcpICdvYmogJyAtLSAndGhlIHNwZWNpYWwgZm9sZGVyIFwzMjJTdGFydHVwIEl0ZW1zXDMyMycgW10KLSMgICAgICAgIHByb3BlcnR5ICdzeXN0ZW0gZm9sZGVyJyAoJ21hY3MnKSAnb2JqICcgLS0gJ3RoZSBTeXN0ZW0gZm9sZGVyJyBbXQotIyAgICAgICAgcHJvcGVydHkgJ3RlbXBvcmFyeSBpdGVtcyBmb2xkZXInICgndGVtcCcpICdvYmogJyAtLSAndGhlIHNwZWNpYWwgZm9sZGVyIFwzMjJUZW1wb3JhcnkgSXRlbXNcMzIzIChpbnZpc2libGUpJyBbXQotIyAgICAgICAgcHJvcGVydHkgJ3ZlcnNpb24nICgndmVycycpICdpdHh0JyAtLSAndGhlIHZlcnNpb24gb2YgdGhlIEZpbmRlciBTY3JpcHRpbmcgRXh0ZW5zaW9uJyBbXQotIyAgICAgICAgcHJvcGVydHkgJ3ZpZXcgcHJlZmVyZW5jZXMnICgncHZ3cCcpICdvYmogJyAtLSAndGhlIHZpZXcgcHJlZmVyZW5jZXMgY29udHJvbCBwYW5lbCcgW10KLSMgICAgICAgIHByb3BlcnR5ICd2aXNpYmxlJyAoJ3B2aXMnKSAnYm9vbCcgLS0gIklzIHRoZSBGaW5kZXIncyBsYXllciB2aXNpYmxlPyIgW211dGFibGVdCi0jICAgICAgICBlbGVtZW50ICdkc3V0JyBhcyBbJ2luZHgnLCAnbmFtZSddCi0jICAgICAgICBlbGVtZW50ICdhbGlhJyBhcyBbJ2luZHgnLCAnbmFtZSddCi0jICAgICAgICBlbGVtZW50ICdhcHBmJyBhcyBbJ2luZHgnLCAnbmFtZScsICdJRCAgJ10KLSMgICAgICAgIGVsZW1lbnQgJ2N0bnInIGFzIFsnaW5keCcsICduYW1lJ10KLSMgICAgICAgIGVsZW1lbnQgJ2N3bmQnIGFzIFsnaW5keCcsICduYW1lJ10KLSMgICAgICAgIGVsZW1lbnQgJ2R3bmQnIGFzIFsnaW5keCcsICduYW1lJ10KLSMgICAgICAgIGVsZW1lbnQgJ2NjZHYnIGFzIFsnaW5keCcsICduYW1lJ10KLSMgICAgICAgIGVsZW1lbnQgJ2RhZmknIGFzIFsnaW5keCcsICduYW1lJ10KLSMgICAgICAgIGVsZW1lbnQgJ2Nkc2snIGFzIFsnaW5keCcsICduYW1lJ10KLSMgICAgICAgIGVsZW1lbnQgJ2NkaXMnIGFzIFsnaW5keCcsICduYW1lJywgJ0lEICAnXQotIyAgICAgICAgZWxlbWVudCAnZG9jZicgYXMgWydpbmR4JywgJ25hbWUnXQotIyAgICAgICAgZWxlbWVudCAnZmlsZScgYXMgWydpbmR4JywgJ25hbWUnXQotIyAgICAgICAgZWxlbWVudCAnY2ZvbCcgYXMgWydpbmR4JywgJ25hbWUnLCAnSUQgICddCi0jICAgICAgICBlbGVtZW50ICdmbnRmJyBhcyBbJ2luZHgnLCAnbmFtZSddCi0jICAgICAgICBlbGVtZW50ICdmc3V0JyBhcyBbJ2luZHgnLCAnbmFtZSddCi0jICAgICAgICBlbGVtZW50ICdpd25kJyBhcyBbJ2luZHgnLCAnbmFtZSddCi0jICAgICAgICBlbGVtZW50ICdjb2JqJyBhcyBbJ2luZHgnLCAnbmFtZSddCi0jICAgICAgICBlbGVtZW50ICdzY3RyJyBhcyBbJ2luZHgnLCAnbmFtZSddCi0jICAgICAgICBlbGVtZW50ICdzd25kJyBhcyBbJ2luZHgnLCAnbmFtZSddCi0jICAgICAgICBlbGVtZW50ICdzbmRmJyBhcyBbJ2luZHgnLCAnbmFtZSddCi0jICAgICAgICBlbGVtZW50ICdzdGNzJyBhcyBbJ2luZHgnLCAnbmFtZSddCi0jICAgICAgICBlbGVtZW50ICdjdHJzJyBhcyBbJ2luZHgnLCAnbmFtZSddCi0jICAgICAgICBlbGVtZW50ICdjd2luJyBhcyBbJ2luZHgnLCAnbmFtZSddCi0KLSMgICAgQ2xhc3MgJ2FwcGxpY2F0aW9uIGZpbGUnICgnYXBwZicpIC0tICJBbiBhcHBsaWNhdGlvbidzIGZpbGUgb24gZGlzayIKLSMgICAgICAgIHByb3BlcnR5ICdtaW5pbXVtIHBhcnRpdGlvbiBzaXplJyAoJ21wcnQnKSAnbG9uZycgLS0gJ3RoZSBzbWFsbGVzdCBtZW1vcnkgc2l6ZSB0aGF0IHRoZSBhcHBsaWNhdGlvbiBjYW4gcG9zc2libHkgYmUgbGF1bmNoZWQgd2l0aCcgW211dGFibGVdCi0jICAgICAgICBwcm9wZXJ0eSAncGFydGl0aW9uIHNpemUnICgnYXBwdCcpICdsb25nJyAtLSAndGhlIG1lbW9yeSBzaXplIHRoYXQgdGhlIGFwcGxpY2F0aW9uIHdpbGwgYmUgbGF1bmNoZWQgd2l0aCcgW211dGFibGVdCi0jICAgICAgICBwcm9wZXJ0eSAnc2NyaXB0YWJsZScgKCdpc2FiJykgJ2Jvb2wnIC0tICdJcyB0aGlzIGFwcGxpY2F0aW9uIGhpZ2gtbGV2ZWwgZXZlbnQgYXdhcmUgKGFjY2VwdHMgb3BlbiBhcHBsaWNhdGlvbiwgb3BlbiBkb2N1bWVudCwgcHJpbnQgZG9jdW1lbnQsIGFuZCBxdWl0KT8nIFtdCi0jICAgICAgICBwcm9wZXJ0eSAnc3VnZ2VzdGVkIHBhcnRpdGlvbiBzaXplJyAoJ3NwcnQnKSAnbG9uZycgLS0gJ3RoZSBtZW1vcnkgc2l6ZSB0aGF0IHRoZSBkZXZlbG9wZXIgcmVjb21tZW5kcyB0aGF0IHRoZSBhcHBsaWNhdGlvbiBzaG91bGQgYmUgbGF1bmNoZWQgd2l0aCcgW10KLQotIyAgICBDbGFzcyAnYXBwbGljYXRpb24gZmlsZXMnICgnYXBwZicpIC0tICdldmVyeSBhcHBsaWNhdGlvbiBmaWxlJwotIyAgICAgICAgcHJvcGVydHkgJycgKCdjQCMhJykgJ3R5cGUnIC0tICcnIFswXQotCi0jICAgIENsYXNzICdhcHBsaWNhdGlvbiBwcm9jZXNzJyAoJ3BjYXAnKSAtLSAnQSBwcm9jZXNzIGxhdW5jaGVkIGZyb20gYW4gYXBwbGljYXRpb24gZmlsZScKLSMgICAgICAgIHByb3BlcnR5ICdhcHBsaWNhdGlvbiBmaWxlJyAoJ2FwcGYnKSAnYXBwZicgLS0gJ3RoZSBhcHBsaWNhdGlvbiBmaWxlIGZyb20gd2hpY2ggdGhpcyBwcm9jZXNzIHdhcyBsYXVuY2hlZCcgW10KLQotIyAgICBDbGFzcyAnYXBwbGljYXRpb24gcHJvY2Vzc2VzJyAoJ3BjYXAnKSAtLSAnZXZlcnkgYXBwbGljYXRpb24gcHJvY2VzcycKLSMgICAgICAgIHByb3BlcnR5ICcnICgnY0AjIScpICd0eXBlJyAtLSAnJyBbMF0KLQotIyAgICBDbGFzcyAnY29udGFpbmVyJyAoJ2N0bnInKSAtLSAnQW4gaXRlbSB0aGF0IGNvbnRhaW5zIG90aGVyIGl0ZW1zJwotIyAgICAgICAgcHJvcGVydHkgJ2NvbXBsZXRlbHkgZXhwYW5kZWQnICgncGV4YycpICdib29sJyAtLSAnSXMgdGhlIGNvbnRhaW5lciBhbmQgYWxsIG9mIGl0cyBjaGlsZHJlbiBvcGVuIGluIG91dGxpbmUgdmlldz8nIFttdXRhYmxlXQotIyAgICAgICAgcHJvcGVydHkgJ2NvbnRhaW5lciB3aW5kb3cnICgnY3duZCcpICdvYmogJyAtLSAndGhlIG1haW4gd2luZG93IGZvciB0aGUgY29udGFpbmVyJyBbXQotIyAgICAgICAgcHJvcGVydHkgJ2VudGlyZSBjb250ZW50cycgKCdlY3RzJykgJ29iaiAnIC0tICd0aGUgZW50aXJlIGNvbnRlbnRzIG9mIHRoZSBjb250YWluZXIsIGluY2x1ZGluZyB0aGUgY29udGVudHMgb2YgaXRzIGNoaWxkcmVuJyBbXQotIyAgICAgICAgcHJvcGVydHkgJ2V4cGFuZGFibGUnICgncGV4YScpICdib29sJyAtLSAnSXMgdGhlIGNvbnRhaW5lciBjYXBhYmxlIG9mIGJlaW5nIGV4cGFuZGVkIGludG8gb3V0bGluZSB2aWV3PycgW10KLSMgICAgICAgIHByb3BlcnR5ICdleHBhbmRlZCcgKCdwZXhwJykgJ2Jvb2wnIC0tICdJcyB0aGUgY29udGFpbmVyIG9wZW4gaW4gb3V0bGluZSB2aWV3PycgW211dGFibGVdCi0jICAgICAgICBwcm9wZXJ0eSAncHJldmlvdXMgbGlzdCB2aWV3JyAoJ3N2ZXcnKSAnbG9uZycgLS0gJ3RoZSBsYXN0IG5vbi1pY29uIHZpZXcgKGJ5IG5hbWUsIGJ5IGRhdGUsIGV0Yy4pIHNlbGVjdGVkIGZvciB0aGUgY29udGFpbmVyIChmb3Jnb3R0ZW4gYXMgc29vbiBhcyB0aGUgd2luZG93IGlzIGNsb3NlZCknIFtdCi0jICAgICAgICBwcm9wZXJ0eSAnc2VsZWN0aW9uJyAoJ3NlbGUnKSAnb2JqICcgLS0gJ3RoZSBzZWxlY3Rpb24gdmlzaWJsZSB0byB0aGUgdXNlcicgW211dGFibGVdCi0jICAgICAgICBwcm9wZXJ0eSAndmlldycgKCdwdmV3JykgJ2xvbmcnIC0tICd0aGUgdmlldyBzZWxlY3RlZCBmb3IgdGhlIGNvbnRhaW5lciAoYnkgaWNvbiwgYnkgbmFtZSwgYnkgZGF0ZSwgZXRjLiknIFttdXRhYmxlXQotIyAgICAgICAgZWxlbWVudCAnZHN1dCcgYXMgWydpbmR4JywgJ25hbWUnXQotIyAgICAgICAgZWxlbWVudCAnYWxpYScgYXMgWydpbmR4JywgJ25hbWUnXQotIyAgICAgICAgZWxlbWVudCAnYXBwZicgYXMgWydpbmR4JywgJ25hbWUnXQotIyAgICAgICAgZWxlbWVudCAnY3RucicgYXMgWydpbmR4JywgJ25hbWUnXQotIyAgICAgICAgZWxlbWVudCAnY2NkdicgYXMgWydpbmR4JywgJ25hbWUnXQotIyAgICAgICAgZWxlbWVudCAnZGFmaScgYXMgWydpbmR4JywgJ25hbWUnXQotIyAgICAgICAgZWxlbWVudCAnZG9jZicgYXMgWydpbmR4JywgJ25hbWUnXQotIyAgICAgICAgZWxlbWVudCAnZmlsZScgYXMgWydpbmR4JywgJ25hbWUnXQotIyAgICAgICAgZWxlbWVudCAnY2ZvbCcgYXMgWydpbmR4JywgJ25hbWUnXQotIyAgICAgICAgZWxlbWVudCAnZm50ZicgYXMgWydpbmR4JywgJ25hbWUnXQotIyAgICAgICAgZWxlbWVudCAnZnN1dCcgYXMgWydpbmR4JywgJ25hbWUnXQotIyAgICAgICAgZWxlbWVudCAnY29iaicgYXMgWydpbmR4JywgJ25hbWUnXQotIyAgICAgICAgZWxlbWVudCAnc2N0cicgYXMgWydpbmR4JywgJ25hbWUnXQotIyAgICAgICAgZWxlbWVudCAnc25kZicgYXMgWydpbmR4JywgJ25hbWUnXQotIyAgICAgICAgZWxlbWVudCAnc3RjcycgYXMgWydpbmR4JywgJ25hbWUnXQotCi0jICAgIENsYXNzICdjb250YWluZXJzJyAoJ2N0bnInKSAtLSAnZXZlcnkgY29udGFpbmVyJwotIyAgICAgICAgcHJvcGVydHkgJycgKCdjQCMhJykgJ3R5cGUnIC0tICcnIFswXQotCi0jICAgIENsYXNzICdjb250YWluZXIgd2luZG93JyAoJ2N3bmQnKSAtLSAnQSB3aW5kb3cgdGhhdCBjb250YWlucyBpdGVtcycKLSMgICAgICAgIHByb3BlcnR5ICdjb250YWluZXInICgnY3RucicpICdvYmogJyAtLSAndGhlIGNvbnRhaW5lciB0aGlzIHdpbmRvdyBpcyBvcGVuZWQgZnJvbScgW10KLSMgICAgICAgIHByb3BlcnR5ICdkaXNrJyAoJ2NkaXMnKSAnb2JqICcgLS0gJ3RoZSBkaXNrIG9uIHdoaWNoIHRoZSBpdGVtIHRoaXMgd2luZG93IHdhcyBvcGVuZWQgZnJvbSBpcyBzdG9yZWQnIFtdCi0jICAgICAgICBwcm9wZXJ0eSAnZm9sZGVyJyAoJ2Nmb2wnKSAnb2JqICcgLS0gJ3RoZSBmb2xkZXIgdGhpcyB3aW5kb3cgaXMgb3BlbmVkIGZyb20nIFtdCi0jICAgICAgICBwcm9wZXJ0eSAnaXRlbScgKCdjb2JqJykgJ29iaiAnIC0tICd0aGUgaXRlbSB0aGlzIHdpbmRvdyBpcyBvcGVuZWQgZnJvbScgW10KLSMgICAgICAgIHByb3BlcnR5ICdwcmV2aW91cyBsaXN0IHZpZXcnICgnc3ZldycpICdsb25nJyAtLSAndGhlIGxhc3Qgbm9uLWljb24gdmlldyAoYnkgbmFtZSwgYnkgZGF0ZSwgZXRjLikgc2VsZWN0ZWQgZm9yIHRoZSB3aW5kb3cgKGZvcmdvdHRlbiBhcyBzb29uIGFzIHRoZSB3aW5kb3cgaXMgY2xvc2VkKScgW10KLSMgICAgICAgIHByb3BlcnR5ICdzZWxlY3Rpb24nICgnc2VsZScpICdvYmogJyAtLSAndGhlIHNlbGVjdGlvbiB2aXNpYmxlIHRvIHRoZSB1c2VyJyBbbXV0YWJsZV0KLSMgICAgICAgIHByb3BlcnR5ICd2aWV3JyAoJ3B2ZXcnKSAnbG9uZycgLS0gJ3RoZSB2aWV3IHNlbGVjdGVkIGZvciB0aGUgd2luZG93IChieSBpY29uLCBieSBuYW1lLCBieSBkYXRlLCBldGMuKScgW211dGFibGVdCi0jICAgICAgICBlbGVtZW50ICdkc3V0JyBhcyBbJ2luZHgnLCAnbmFtZSddCi0jICAgICAgICBlbGVtZW50ICdhbGlhJyBhcyBbJ2luZHgnLCAnbmFtZSddCi0jICAgICAgICBlbGVtZW50ICdhcHBmJyBhcyBbJ2luZHgnLCAnbmFtZSddCi0jICAgICAgICBlbGVtZW50ICdjdG5yJyBhcyBbJ2luZHgnLCAnbmFtZSddCi0jICAgICAgICBlbGVtZW50ICdjY2R2JyBhcyBbJ2luZHgnLCAnbmFtZSddCi0jICAgICAgICBlbGVtZW50ICdkYWZpJyBhcyBbJ2luZHgnLCAnbmFtZSddCi0jICAgICAgICBlbGVtZW50ICdkb2NmJyBhcyBbJ2luZHgnLCAnbmFtZSddCi0jICAgICAgICBlbGVtZW50ICdmaWxlJyBhcyBbJ2luZHgnLCAnbmFtZSddCi0jICAgICAgICBlbGVtZW50ICdjZm9sJyBhcyBbJ2luZHgnLCAnbmFtZSddCi0jICAgICAgICBlbGVtZW50ICdmbnRmJyBhcyBbJ2luZHgnLCAnbmFtZSddCi0jICAgICAgICBlbGVtZW50ICdmc3V0JyBhcyBbJ2luZHgnLCAnbmFtZSddCi0jICAgICAgICBlbGVtZW50ICdjb2JqJyBhcyBbJ2luZHgnLCAnbmFtZSddCi0jICAgICAgICBlbGVtZW50ICdzY3RyJyBhcyBbJ2luZHgnLCAnbmFtZSddCi0jICAgICAgICBlbGVtZW50ICdzbmRmJyBhcyBbJ2luZHgnLCAnbmFtZSddCi0jICAgICAgICBlbGVtZW50ICdzdGNzJyBhcyBbJ2luZHgnLCAnbmFtZSddCi0KLSMgICAgQ2xhc3MgJ2NvbnRhaW5lciB3aW5kb3dzJyAoJ2N3bmQnKSAtLSAnZXZlcnkgY29udGFpbmVyIHdpbmRvdycKLSMgICAgICAgIHByb3BlcnR5ICcnICgnY0AjIScpICd0eXBlJyAtLSAnJyBbMF0KLQotIyAgICBDbGFzcyAnY29udGVudCBzcGFjZScgKCdkd25kJykgLS0gJ0FsbCB3aW5kb3dzLCBpbmNsdWRpbmcgdGhlIGRlc2t0b3Agd2luZG93IChcMzIyV2luZG93XDMyMyBkb2VzIG5vdCBpbmNsdWRlIHRoZSBkZXNrdG9wIHdpbmRvdyknCi0KLSMgICAgQ2xhc3MgJ2NvbnRlbnQgc3BhY2VzJyAoJ2R3bmQnKSAtLSAnRXZlcnkgY29udGVudCBzcGFjZScKLSMgICAgICAgIHByb3BlcnR5ICcnICgnY0AjIScpICd0eXBlJyAtLSAnJyBbMF0KLQotIyAgICBDbGFzcyAnY29udHJvbCBwYW5lbCcgKCdjY2R2JykgLS0gJ0EgY29udHJvbCBwYW5lbCcKLSMgICAgICAgIHByb3BlcnR5ICdjYWxjdWxhdGUgZm9sZGVyIHNpemVzJyAoJ3Nmc3onKSAnYm9vbCcgLS0gJyhWaWV3cykgQXJlIGZvbGRlciBzaXplcyBjYWxjdWxhdGVkIGFuZCBkaXNwbGF5ZWQgaW4gRmluZGVyIGxpc3Qgd2luZG93cz8nIFttdXRhYmxlXQotIyAgICAgICAgcHJvcGVydHkgJ2NvbW1lbnQgaGVhZGluZycgKCdzY29tJykgJ2Jvb2wnIC0tICcoVmlld3MpIEFyZSBjb21tZW50cyBkaXNwbGF5ZWQgaW4gRmluZGVyIGxpc3Qgd2luZG93cz8nIFttdXRhYmxlXQotIyAgICAgICAgcHJvcGVydHkgJ2RhdGUgaGVhZGluZycgKCdzZGF0JykgJ2Jvb2wnIC0tICcoVmlld3MpIEFyZSBtb2RpZmljYXRpb24gZGF0ZXMgZGlzcGxheWVkIGluIEZpbmRlciBsaXN0IHdpbmRvd3M/JyBbbXV0YWJsZV0KLSMgICAgICAgIHByb3BlcnR5ICdkaXNrIGluZm9ybWF0aW9uIGhlYWRpbmcnICgnc2RpbicpICdib29sJyAtLSAnKFZpZXdzKSBJcyBpbmZvcm1hdGlvbiBhYm91dCB0aGUgdm9sdW1lIGRpc3BsYXllZCBpbiBGaW5kZXIgbGlzdCB3aW5kb3dzPycgW211dGFibGVdCi0jICAgICAgICBwcm9wZXJ0eSAnaWNvbiBzaXplJyAoJ2x2aXMnKSAnbG9uZycgLS0gJyhWaWV3cykgdGhlIHNpemUgb2YgaWNvbnMgZGlzcGxheWVkIGluIEZpbmRlciBsaXN0IHdpbmRvd3MnIFttdXRhYmxlXQotIyAgICAgICAgcHJvcGVydHkgJ2tpbmQgaGVhZGluZycgKCdza25kJykgJ2Jvb2wnIC0tICcoVmlld3MpIEFyZSBkb2N1bWVudCBraW5kcyBkaXNwbGF5ZWQgaW4gRmluZGVyIGxpc3Qgd2luZG93cz8nIFttdXRhYmxlXQotIyAgICAgICAgcHJvcGVydHkgJ2xhYmVsIGhlYWRpbmcnICgnc2xibCcpICdib29sJyAtLSAnKFZpZXdzKSBBcmUgbGFiZWxzIGRpc3BsYXllZCBpbiBGaW5kZXIgbGlzdCB3aW5kb3dzPycgW211dGFibGVdCi0jICAgICAgICBwcm9wZXJ0eSAnc2l6ZSBoZWFkaW5nJyAoJ3NzaXonKSAnYm9vbCcgLS0gJyhWaWV3cykgQXJlIGZpbGUgc2l6ZXMgZGlzcGxheWVkIGluIEZpbmRlciBsaXN0IHdpbmRvd3MnIFttdXRhYmxlXQotIyAgICAgICAgcHJvcGVydHkgJ3NuYXAgdG8gZ3JpZCcgKCdmZ3JkJykgJ2Jvb2wnIC0tICcoVmlld3MpIEFyZSBpdGVtcyBhbHdheXMgc25hcHBlZCB0byB0aGUgbmVhcmVzdCBncmlkIHBvaW50IHdoZW4gdGhleSBhcmUgbW92ZWQ/JyBbbXV0YWJsZV0KLSMgICAgICAgIHByb3BlcnR5ICdzdGFnZ2VyZWQgZ3JpZCcgKCdmc3RnJykgJ2Jvb2wnIC0tICcoVmlld3MpIEFyZSBncmlkIGxpbmVzIHN0YWdnZXJlZD8nIFttdXRhYmxlXQotIyAgICAgICAgcHJvcGVydHkgJ3ZlcnNpb24gaGVhZGluZycgKCdzdnJzJykgJ2Jvb2wnIC0tICcoVmlld3MpIEFyZSBmaWxlIHZlcnNpb25zIGRpc3BsYXllZCBpbiBGaW5kZXIgbGlzdCB3aW5kb3dzPycgW211dGFibGVdCi0jICAgICAgICBwcm9wZXJ0eSAndmlldyBmb250JyAoJ3ZmbnQnKSAnbG9uZycgLS0gJyhWaWV3cykgdGhlIGlkIG9mIHRoZSBmb250IHVzZWQgaW4gRmluZGVyIHZpZXdzJyBbbXV0YWJsZV0KLSMgICAgICAgIHByb3BlcnR5ICd2aWV3IGZvbnQgc2l6ZScgKCd2ZnN6JykgJ2xvbmcnIC0tICcoVmlld3MpIHRoZSBzaXplIG9mIHRoZSBmb250IHVzZWQgaW4gRmluZGVyIHZpZXdzJyBbbXV0YWJsZV0KLQotIyAgICBDbGFzcyAnY29udHJvbCBwYW5lbHMnICgnY2NkdicpIC0tICdldmVyeSBjb250cm9sIHBhbmVsJwotIyAgICAgICAgcHJvcGVydHkgJycgKCdjQCMhJykgJ3R5cGUnIC0tICcnIFswXQotCi0jICAgIENsYXNzICdkZXNrIGFjY2Vzc29yeSBmaWxlJyAoJ2RhZmknKSAtLSAnQSBkZXNrIGFjY2Vzc29yeSBmaWxlJwotCi0jICAgIENsYXNzICdkZXNrIGFjY2Vzc29yeSBmaWxlcycgKCdkYWZpJykgLS0gJ2V2ZXJ5IGRlc2sgYWNjZXNzb3J5IGZpbGUnCi0jICAgICAgICBwcm9wZXJ0eSAnJyAoJ2NAIyEnKSAndHlwZScgLS0gJycgWzBdCi0KLSMgICAgQ2xhc3MgJ2Rlc2t0b3Atb2JqZWN0JyAoJ2Nkc2snKSAtLSAnRGVza3RvcC1vYmplY3QgaXMgdGhlIGNsYXNzIG9mIHRoZSBcMzIyZGVza3RvcFwzMjMgb2JqZWN0JwotIyAgICAgICAgcHJvcGVydHkgJ3N0YXJ0dXAgZGlzaycgKCdzZHNrJykgJ29iaiAnIC0tICd0aGUgc3RhcnR1cCBkaXNrJyBbXQotIyAgICAgICAgcHJvcGVydHkgJ3RyYXNoJyAoJ3Ryc2gnKSAnb2JqICcgLS0gJ3RoZSB0cmFzaCcgW10KLSMgICAgICAgIGVsZW1lbnQgJ2RzdXQnIGFzIFsnaW5keCcsICduYW1lJ10KLSMgICAgICAgIGVsZW1lbnQgJ2FsaWEnIGFzIFsnaW5keCcsICduYW1lJ10KLSMgICAgICAgIGVsZW1lbnQgJ2FwcGYnIGFzIFsnaW5keCcsICduYW1lJ10KLSMgICAgICAgIGVsZW1lbnQgJ2N0bnInIGFzIFsnaW5keCcsICduYW1lJ10KLSMgICAgICAgIGVsZW1lbnQgJ2NjZHYnIGFzIFsnaW5keCcsICduYW1lJ10KLSMgICAgICAgIGVsZW1lbnQgJ2RhZmknIGFzIFsnaW5keCcsICduYW1lJ10KLSMgICAgICAgIGVsZW1lbnQgJ2RvY2YnIGFzIFsnaW5keCcsICduYW1lJ10KLSMgICAgICAgIGVsZW1lbnQgJ2ZpbGUnIGFzIFsnaW5keCcsICduYW1lJ10KLSMgICAgICAgIGVsZW1lbnQgJ2Nmb2wnIGFzIFsnaW5keCcsICduYW1lJ10KLSMgICAgICAgIGVsZW1lbnQgJ2ZudGYnIGFzIFsnaW5keCcsICduYW1lJ10KLSMgICAgICAgIGVsZW1lbnQgJ2ZzdXQnIGFzIFsnaW5keCcsICduYW1lJ10KLSMgICAgICAgIGVsZW1lbnQgJ2NvYmonIGFzIFsnaW5keCcsICduYW1lJ10KLSMgICAgICAgIGVsZW1lbnQgJ3NjdHInIGFzIFsnaW5keCcsICduYW1lJ10KLSMgICAgICAgIGVsZW1lbnQgJ3NuZGYnIGFzIFsnaW5keCcsICduYW1lJ10KLSMgICAgICAgIGVsZW1lbnQgJ3N0Y3MnIGFzIFsnaW5keCcsICduYW1lJ10KLQotIyAgICBDbGFzcyAnZGlzaycgKCdjZGlzJykgLS0gJ0EgZGlzaycKLSMgICAgICAgIHByb3BlcnR5ICdjYXBhY2l0eScgKCdjYXBhJykgJ2xvbmcnIC0tICd0aGUgdG90YWwgbnVtYmVyIG9mIGJ5dGVzIChmcmVlIG9yIHVzZWQpIG9uIHRoZSBkaXNrJyBbXQotIyAgICAgICAgcHJvcGVydHkgJ2VqZWN0YWJsZScgKCdpc2VqJykgJ2Jvb2wnIC0tICJDYW4gdGhlIG1lZGlhIGNhbiBiZSBlamVjdGVkIChmbG9wcGllcywgQ0Qncywgc3lxdWVzdCk/IiBbXQotIyAgICAgICAgcHJvcGVydHkgJ2ZyZWUgc3BhY2UnICgnZnJzcCcpICdsb25nJyAtLSAndGhlIG51bWJlciBvZiBmcmVlIGJ5dGVzIGxlZnQgb24gdGhlIGRpc2snIFtdCi0jICAgICAgICBwcm9wZXJ0eSAnbG9jYWwgdm9sdW1lJyAoJ2lzcnYnKSAnYm9vbCcgLS0gJ0lzIHRoZSBtZWRpYSBpcyBhIGxvY2FsIHZvbHVtZSAocmF0aGVyIHRoYW4gYSBmaWxlIHNlcnZlcik/JyBbXQotIyAgICAgICAgcHJvcGVydHkgJ3N0YXJ0dXAnICgnaXN0ZCcpICdib29sJyAtLSAnSXMgdGhpcyBkaXNrIHRoZSBib290IGRpc2s/JyBbXQotIyAgICAgICAgZWxlbWVudCAnZHN1dCcgYXMgWydpbmR4JywgJ25hbWUnXQotIyAgICAgICAgZWxlbWVudCAnYWxpYScgYXMgWydpbmR4JywgJ25hbWUnXQotIyAgICAgICAgZWxlbWVudCAnYXBwZicgYXMgWydpbmR4JywgJ25hbWUnXQotIyAgICAgICAgZWxlbWVudCAnY3RucicgYXMgWydpbmR4JywgJ25hbWUnXQotIyAgICAgICAgZWxlbWVudCAnY2NkdicgYXMgWydpbmR4JywgJ25hbWUnXQotIyAgICAgICAgZWxlbWVudCAnZGFmaScgYXMgWydpbmR4JywgJ25hbWUnXQotIyAgICAgICAgZWxlbWVudCAnZG9jZicgYXMgWydpbmR4JywgJ25hbWUnXQotIyAgICAgICAgZWxlbWVudCAnZmlsZScgYXMgWydpbmR4JywgJ25hbWUnXQotIyAgICAgICAgZWxlbWVudCAnY2ZvbCcgYXMgWydpbmR4JywgJ0lEICAnLCAnbmFtZSddCi0jICAgICAgICBlbGVtZW50ICdmbnRmJyBhcyBbJ2luZHgnLCAnbmFtZSddCi0jICAgICAgICBlbGVtZW50ICdmc3V0JyBhcyBbJ2luZHgnLCAnbmFtZSddCi0jICAgICAgICBlbGVtZW50ICdjb2JqJyBhcyBbJ2luZHgnLCAnbmFtZSddCi0jICAgICAgICBlbGVtZW50ICdzY3RyJyBhcyBbJ2luZHgnLCAnbmFtZSddCi0jICAgICAgICBlbGVtZW50ICdzbmRmJyBhcyBbJ2luZHgnLCAnbmFtZSddCi0jICAgICAgICBlbGVtZW50ICdzdGNzJyBhcyBbJ2luZHgnLCAnbmFtZSddCi0KLSMgICAgQ2xhc3MgJ2Rpc2tzJyAoJ2NkaXMnKSAtLSAnZXZlcnkgZGlzaycKLSMgICAgICAgIHByb3BlcnR5ICcnICgnY0AjIScpICd0eXBlJyAtLSAnJyBbMF0KLQotIyAgICBDbGFzcyAnZG9jdW1lbnQgZmlsZScgKCdkb2NmJykgLS0gJ0EgZG9jdW1lbnQgZmlsZScKLQotIyAgICBDbGFzcyAnZG9jdW1lbnQgZmlsZXMnICgnZG9jZicpIC0tICdldmVyeSBkb2N1bWVudCBmaWxlJwotIyAgICAgICAgcHJvcGVydHkgJycgKCdjQCMhJykgJ3R5cGUnIC0tICcnIFswXQotCi0jICAgIENsYXNzICdmaWxlJyAoJ2ZpbGUnKSAtLSAnQSBmaWxlJwotIyAgICAgICAgcHJvcGVydHkgJ2NyZWF0b3IgdHlwZScgKCdmY3J0JykgJ3R5cGUnIC0tICd0aGUgT1NUeXBlIGlkZW50aWZ5aW5nIHRoZSBhcHBsaWNhdGlvbiB0aGF0IGNyZWF0ZWQgdGhlIGl0ZW0nIFttdXRhYmxlXQotIyAgICAgICAgcHJvcGVydHkgJ2ZpbGUgdHlwZScgKCdmaXRwJykgJ3R5cGUnIC0tICd0aGUgT1NUeXBlIGlkZW50aWZ5aW5nIHRoZSB0eXBlIG9mIGRhdGEgY29udGFpbmVkIGluIHRoZSBpdGVtJyBbbXV0YWJsZV0KLSMgICAgICAgIHByb3BlcnR5ICdsb2NrZWQnICgnaXNsaycpICdib29sJyAtLSAnSXMgdGhlIGZpbGUgbG9ja2VkPycgW211dGFibGVdCi0jICAgICAgICBwcm9wZXJ0eSAncHJvZHVjdCB2ZXJzaW9uJyAoJ3ZlcjInKSAnaXR4dCcgLS0gJ3RoZSB2ZXJzaW9uIG9mIHRoZSBwcm9kdWN0ICh2aXNpYmxlIGF0IHRoZSB0b3Agb2YgdGhlIFwzMjJHZXQgSW5mb1wzMjMgZGlhbG9nKScgW10KLSMgICAgICAgIHByb3BlcnR5ICdzdGF0aW9uZXJ5JyAoJ3BzcGQnKSAnYm9vbCcgLS0gJ0lzIHRoZSBpdGVtIGEgc3RhdGlvbmVyeSBwYWQ/JyBbbXV0YWJsZV0KLSMgICAgICAgIHByb3BlcnR5ICd2ZXJzaW9uJyAoJ3ZlcnMnKSAnaXR4dCcgLS0gJ3RoZSB2ZXJzaW9uIG9mIHRoZSBmaWxlICh2aXNpYmxlIGF0IHRoZSBib3R0b20gb2YgdGhlIFwzMjJHZXQgSW5mb1wzMjMgZGlhbG9nKScgW10KLQotIyAgICBDbGFzcyAnZmlsZXMnICgnZmlsZScpIC0tICdldmVyeSBmaWxlJwotIyAgICAgICAgcHJvcGVydHkgJycgKCdjQCMhJykgJ3R5cGUnIC0tICcnIFswXQotCi0jICAgIENsYXNzICdmb2xkZXInICgnY2ZvbCcpIC0tICdBIGZvbGRlcicKLSMgICAgICAgIGVsZW1lbnQgJ2RzdXQnIGFzIFsnaW5keCcsICduYW1lJ10KLSMgICAgICAgIGVsZW1lbnQgJ2FsaWEnIGFzIFsnaW5keCcsICduYW1lJ10KLSMgICAgICAgIGVsZW1lbnQgJ2FwcGYnIGFzIFsnaW5keCcsICduYW1lJ10KLSMgICAgICAgIGVsZW1lbnQgJ2N0bnInIGFzIFsnaW5keCcsICduYW1lJ10KLSMgICAgICAgIGVsZW1lbnQgJ2NjZHYnIGFzIFsnaW5keCcsICduYW1lJ10KLSMgICAgICAgIGVsZW1lbnQgJ2RhZmknIGFzIFsnaW5keCcsICduYW1lJ10KLSMgICAgICAgIGVsZW1lbnQgJ2RvY2YnIGFzIFsnaW5keCcsICduYW1lJ10KLSMgICAgICAgIGVsZW1lbnQgJ2ZpbGUnIGFzIFsnaW5keCcsICduYW1lJ10KLSMgICAgICAgIGVsZW1lbnQgJ2Nmb2wnIGFzIFsnaW5keCcsICduYW1lJ10KLSMgICAgICAgIGVsZW1lbnQgJ2ZudGYnIGFzIFsnaW5keCcsICduYW1lJ10KLSMgICAgICAgIGVsZW1lbnQgJ2ZzdXQnIGFzIFsnaW5keCcsICduYW1lJ10KLSMgICAgICAgIGVsZW1lbnQgJ2NvYmonIGFzIFsnaW5keCcsICduYW1lJ10KLSMgICAgICAgIGVsZW1lbnQgJ3NjdHInIGFzIFsnaW5keCcsICduYW1lJ10KLSMgICAgICAgIGVsZW1lbnQgJ3NuZGYnIGFzIFsnaW5keCcsICduYW1lJ10KLSMgICAgICAgIGVsZW1lbnQgJ3N0Y3MnIGFzIFsnaW5keCcsICduYW1lJ10KLQotIyAgICBDbGFzcyAnZm9sZGVycycgKCdjZm9sJykgLS0gJ2V2ZXJ5IGZvbGRlcicKLSMgICAgICAgIHByb3BlcnR5ICcnICgnY0AjIScpICd0eXBlJyAtLSAnJyBbMF0KLQotIyAgICBDbGFzcyAnZm9udCBmaWxlJyAoJ2ZudGYnKSAtLSAnQSBmb250IGZpbGUnCi0KLSMgICAgQ2xhc3MgJ2ZvbnQgZmlsZXMnICgnZm50ZicpIC0tICdldmVyeSBmb250IGZpbGUnCi0jICAgICAgICBwcm9wZXJ0eSAnJyAoJ2NAIyEnKSAndHlwZScgLS0gJycgWzBdCi0KLSMgICAgQ2xhc3MgJ2ZvbnQgc3VpdGNhc2UnICgnZnN1dCcpIC0tICdBIGZvbnQgc3VpdGNhc2UnCi0jICAgICAgICBlbGVtZW50ICdjb2JqJyBhcyBbJ2luZHgnLCAnbmFtZSddCi0KLSMgICAgQ2xhc3MgJ2ZvbnQgc3VpdGNhc2VzJyAoJ2ZzdXQnKSAtLSAnZXZlcnkgZm9udCBzdWl0Y2FzZScKLSMgICAgICAgIHByb3BlcnR5ICcnICgnY0AjIScpICd0eXBlJyAtLSAnJyBbMF0KLQotIyAgICBDbGFzcyAnZ3JvdXAnICgnc2dycCcpIC0tICdBIEdyb3VwIGluIHRoZSBVc2VycyBhbmQgR3JvdXBzIGNvbnRyb2wgcGFuZWwnCi0jICAgICAgICBwcm9wZXJ0eSAnYm91bmRzJyAoJ3BibmQnKSAncWRydCcgLS0gJ3RoZSBib3VuZGluZyByZWN0YW5nbGUgb2YgdGhlIGdyb3VwJyBbbXV0YWJsZV0KLSMgICAgICAgIHByb3BlcnR5ICdpY29uJyAoJ2lpbWcnKSAnaWZhbScgLS0gJ3RoZSBpY29uIGJpdG1hcCBvZiB0aGUgZ3JvdXAnIFttdXRhYmxlXQotIyAgICAgICAgcHJvcGVydHkgJ2xhYmVsIGluZGV4JyAoJ2xhYmknKSAnbG9uZycgLS0gJ3RoZSBsYWJlbCBvZiB0aGUgZ3JvdXAnIFttdXRhYmxlXQotIyAgICAgICAgcHJvcGVydHkgJ25hbWUnICgncG5hbScpICdpdHh0JyAtLSAndGhlIG5hbWUgb2YgdGhlIGdyb3VwJyBbbXV0YWJsZV0KLSMgICAgICAgIHByb3BlcnR5ICdwb3NpdGlvbicgKCdwb3NuJykgJ1FEcHQnIC0tICd0aGUgcG9zaXRpb24gb2YgdGhlIGdyb3VwIHdpdGhpbiBpdHMgcGFyZW50IHdpbmRvdycgW211dGFibGVdCi0KLSMgICAgQ2xhc3MgJ2dyb3VwcycgKCdzZ3JwJykgLS0gJ2V2ZXJ5IGdyb3VwJwotIyAgICAgICAgcHJvcGVydHkgJycgKCdjQCMhJykgJ3R5cGUnIC0tICcnIFswXQotCi0jICAgIENsYXNzICdpbmZvcm1hdGlvbiB3aW5kb3cnICgnaXduZCcpIC0tICdBbiBpbmZvcm1hdGlvbiB3aW5kb3cgKG9wZW5lZCBieSBcMzIyR2V0IEluZm9cMzExXDMyMyknCi0jICAgICAgICBwcm9wZXJ0eSAnY29tbWVudCcgKCdjb210JykgJ2l0eHQnIC0tICd0aGUgY29tbWVudCcgW211dGFibGVdCi0jICAgICAgICBwcm9wZXJ0eSAnY3JlYXRpb24gZGF0ZScgKCdjcnRkJykgJ2xkdCAnIC0tICd0aGUgZGF0ZSBvbiB3aGljaCB0aGUgaXRlbSB3YXMgY3JlYXRlZCcgW10KLSMgICAgICAgIHByb3BlcnR5ICdpY29uJyAoJ2lpbWcnKSAnaWZhbScgLS0gJ3RoZSBpY29uIGJpdG1hcCBvZiB0aGUgaXRlbScgW211dGFibGVdCi0jICAgICAgICBwcm9wZXJ0eSAnaXRlbScgKCdjb2JqJykgJ29iaiAnIC0tICd0aGUgaXRlbSB0aGlzIHdpbmRvdyB3YXMgb3BlbmVkIGZyb20nIFtdCi0jICAgICAgICBwcm9wZXJ0eSAnbG9ja2VkJyAoJ2lzbGsnKSAnYm9vbCcgLS0gJ0lzIHRoZSBpdGVtIGxvY2tlZD8nIFttdXRhYmxlXQotIyAgICAgICAgcHJvcGVydHkgJ21pbmltdW0gcGFydGl0aW9uIHNpemUnICgnbXBydCcpICdsb25nJyAtLSAndGhlIHNtYWxsZXN0IG1lbW9yeSBzaXplIHRoYXQgdGhlIGFwcGxpY2F0aW9uIGNhbiBwb3NzaWJseSBiZSBsYXVuY2hlZCB3aXRoJyBbbXV0YWJsZV0KLSMgICAgICAgIHByb3BlcnR5ICdtb2RpZmljYXRpb24gZGF0ZScgKCdtb2RkJykgJ2xkdCAnIC0tICd0aGUgZGF0ZSBvbiB3aGljaCB0aGUgaXRlbSB3YXMgbGFzdCBtb2RpZmllZCcgW10KLSMgICAgICAgIHByb3BlcnR5ICdwYXJ0aXRpb24gc2l6ZScgKCdhcHB0JykgJ2xvbmcnIC0tICd0aGUgbWVtb3J5IHNpemUgdGhhdCB0aGUgYXBwbGljYXRpb24gd2lsbCBiZSBsYXVuY2hlZCB3aXRoJyBbbXV0YWJsZV0KLSMgICAgICAgIHByb3BlcnR5ICdwaHlzaWNhbCBzaXplJyAoJ3BoeXMnKSAnbG9uZycgLS0gJ3RoZSBhY3R1YWwgc3BhY2UgdXNlZCBieSB0aGUgaXRlbSBvbiBkaXNrJyBbXQotIyAgICAgICAgcHJvcGVydHkgJ3Byb2R1Y3QgdmVyc2lvbicgKCd2ZXIyJykgJ2l0eHQnIC0tICd0aGUgdmVyc2lvbiBvZiB0aGUgcHJvZHVjdCAodmlzaWJsZSBhdCB0aGUgdG9wIG9mIHRoZSBcMzIyR2V0IEluZm9cMzIzIGRpYWxvZyknIFtdCi0jICAgICAgICBwcm9wZXJ0eSAnc2l6ZScgKCdwdHN6JykgJ2xvbmcnIC0tICd0aGUgbG9naWNhbCBzaXplIG9mIHRoZSBpdGVtJyBbXQotIyAgICAgICAgcHJvcGVydHkgJ3N0YXRpb25lcnknICgncHNwZCcpICdib29sJyAtLSAnSXMgdGhlIGl0ZW0gYSBzdGF0aW9uZXJ5IHBhZD8nIFttdXRhYmxlXQotIyAgICAgICAgcHJvcGVydHkgJ3N1Z2dlc3RlZCBwYXJ0aXRpb24gc2l6ZScgKCdzcHJ0JykgJ2xvbmcnIC0tICd0aGUgbWVtb3J5IHNpemUgdGhhdCB0aGUgZGV2ZWxvcGVyIHJlY29tbWVuZHMgdGhhdCB0aGUgYXBwbGljYXRpb24gc2hvdWxkIGJlIGxhdW5jaGVkIHdpdGgnIFtdCi0jICAgICAgICBwcm9wZXJ0eSAndmVyc2lvbicgKCd2ZXJzJykgJ2l0eHQnIC0tICd0aGUgdmVyc2lvbiBvZiB0aGUgZmlsZSAodmlzaWJsZSBhdCB0aGUgYm90dG9tIG9mIHRoZSBcMzIyR2V0IEluZm9cMzIzIGRpYWxvZyknIFtdCi0jICAgICAgICBwcm9wZXJ0eSAnd2FybiBiZWZvcmUgZW1wdHlpbmcnICgnd2FybicpICdib29sJyAtLSAnSXMgYSBkaWFsb2cgZGlzcGxheWVkIHdoZW4gXDMyMkVtcHR5IHRyYXNoXDMxMVwzMjMgaXMgc2VsZWN0ZWQ/JyBbbXV0YWJsZV0KLQotIyAgICBDbGFzcyAnaW5mb3JtYXRpb24gd2luZG93cycgKCdpd25kJykgLS0gJ2V2ZXJ5IGluZm9ybWF0aW9uIHdpbmRvdycKLSMgICAgICAgIHByb3BlcnR5ICcnICgnY0AjIScpICd0eXBlJyAtLSAnJyBbMF0KLQotIyAgICBDbGFzcyAnaXRlbScgKCdjb2JqJykgLS0gJ0FuIGl0ZW0nCi0jICAgICAgICBwcm9wZXJ0eSAnYm91bmRzJyAoJ3BibmQnKSAncWRydCcgLS0gJ3RoZSBib3VuZGluZyByZWN0YW5nbGUgb2YgdGhlIGl0ZW0nIFttdXRhYmxlXQotIyAgICAgICAgcHJvcGVydHkgJ2NvbW1lbnQnICgnY29tdCcpICdpdHh0JyAtLSAndGhlIGNvbW1lbnQgZGlzcGxheWVkIGluIHRoZSBcMzIyR2V0IEluZm9cMzIzIHdpbmRvdyBvZiB0aGUgaXRlbScgW211dGFibGVdCi0jICAgICAgICBwcm9wZXJ0eSAnY29udGFpbmVyJyAoJ2N0bnInKSAnb2JqICcgLS0gJ3RoZSBjb250YWluZXIgb2YgdGhpcyBpdGVtJyBbXQotIyAgICAgICAgcHJvcGVydHkgJ2NvbnRlbnQgc3BhY2UnICgnZHduZCcpICdkd25kJyAtLSAndGhlIHdpbmRvdyB0aGF0IHdvdWxkIG9wZW4gaWYgdGhlIGl0ZW0gd2FzIG9wZW5lZCcgW10KLSMgICAgICAgIHByb3BlcnR5ICdjcmVhdGlvbiBkYXRlJyAoJ2NydGQnKSAnbGR0ICcgLS0gJ3RoZSBkYXRlIG9uIHdoaWNoIHRoZSBpdGVtIHdhcyBjcmVhdGVkJyBbXQotIyAgICAgICAgcHJvcGVydHkgJ2Rpc2snICgnY2RpcycpICdvYmogJyAtLSAndGhlIGRpc2sgb24gd2hpY2ggdGhlIGl0ZW0gaXMgc3RvcmVkJyBbXQotIyAgICAgICAgcHJvcGVydHkgJ2ZvbGRlcicgKCdjZm9sJykgJ29iaiAnIC0tICd0aGUgZm9sZGVyIGluIHdoaWNoIHRoZSBpdGVtIGlzIHN0b3JlZCcgW10KLSMgICAgICAgIHByb3BlcnR5ICdpY29uJyAoJ2lpbWcnKSAnaWZhbScgLS0gJ3RoZSBpY29uIGJpdG1hcCBvZiB0aGUgaXRlbScgW211dGFibGVdCi0jICAgICAgICBwcm9wZXJ0eSAnaWQnICgnSUQgICcpICdsb25nJyAtLSAnYW4gaWQgdGhhdCBpZGVudGlmaWVzIHRoZSBpdGVtJyBbXQotIyAgICAgICAgcHJvcGVydHkgJ2luZm9ybWF0aW9uIHdpbmRvdycgKCdpd25kJykgJ29iaiAnIC0tICd0aGUgaW5mb3JtYXRpb24gd2luZG93IGZvciB0aGUgaXRlbScgW10KLSMgICAgICAgIHByb3BlcnR5ICdraW5kJyAoJ2tpbmQnKSAnaXR4dCcgLS0gJ3RoZSBraW5kIG9mIHRoZSBpdGVtJyBbXQotIyAgICAgICAgcHJvcGVydHkgJ2xhYmVsIGluZGV4JyAoJ2xhYmknKSAnbG9uZycgLS0gJ3RoZSBsYWJlbCBvZiB0aGUgaXRlbScgW211dGFibGVdCi0jICAgICAgICBwcm9wZXJ0eSAnbW9kaWZpY2F0aW9uIGRhdGUnICgnbW9kZCcpICdsZHQgJyAtLSAndGhlIGRhdGUgb24gd2hpY2ggdGhlIGl0ZW0gd2FzIGxhc3QgbW9kaWZpZWQnIFtdCi0jICAgICAgICBwcm9wZXJ0eSAnbmFtZScgKCdwbmFtJykgJ2l0eHQnIC0tICd0aGUgbmFtZSBvZiB0aGUgaXRlbScgW211dGFibGVdCi0jICAgICAgICBwcm9wZXJ0eSAncGh5c2ljYWwgc2l6ZScgKCdwaHlzJykgJ2xvbmcnIC0tICd0aGUgYWN0dWFsIHNwYWNlIHVzZWQgYnkgdGhlIGl0ZW0gb24gZGlzaycgW10KLSMgICAgICAgIHByb3BlcnR5ICdwb3NpdGlvbicgKCdwb3NuJykgJ1FEcHQnIC0tICd0aGUgcG9zaXRpb24gb2YgdGhlIGl0ZW0gd2l0aGluIGl0cyBwYXJlbnQgd2luZG93JyBbbXV0YWJsZV0KLSMgICAgICAgIHByb3BlcnR5ICdzZWxlY3RlZCcgKCdpc3NsJykgJ2Jvb2wnIC0tICdJcyB0aGUgaXRlbSBzZWxlY3RlZD8nIFttdXRhYmxlXQotIyAgICAgICAgcHJvcGVydHkgJ3NpemUnICgncHRzeicpICdsb25nJyAtLSAndGhlIGxvZ2ljYWwgc2l6ZSBvZiB0aGUgaXRlbScgW10KLSMgICAgICAgIHByb3BlcnR5ICd3aW5kb3cnICgnY3dpbicpICdjd2luJyAtLSAndGhlIHdpbmRvdyB0aGF0IHdvdWxkIG9wZW4gaWYgdGhlIGl0ZW0gd2FzIG9wZW5lZCcgW10KLQotIyAgICBDbGFzcyAnaXRlbXMnICgnY29iaicpIC0tICdldmVyeSBpdGVtJwotIyAgICAgICAgcHJvcGVydHkgJycgKCdjQCMhJykgJ3R5cGUnIC0tICcnIFswXQotCi0jICAgIENsYXNzICdwcm9jZXNzJyAoJ3ByY3MnKSAtLSAnQSBwcm9jZXNzIHJ1bm5pbmcgb24gdGhpcyBNYWNpbnRvc2gnCi0jICAgICAgICBwcm9wZXJ0eSAnY3JlYXRvciB0eXBlJyAoJ2ZjcnQnKSAndHlwZScgLS0gJ3RoZSBjcmVhdG9yIHR5cGUgb2YgdGhpcyBwcm9jZXNzJyBbXQotIyAgICAgICAgcHJvcGVydHkgJ2ZpbGUnICgnZmlsZScpICdvYmogJyAtLSAndGhlIGZpbGUgdGhhdCBsYXVuY2hlZCB0aGlzIHByb2Nlc3MnIFtdCi0jICAgICAgICBwcm9wZXJ0eSAnZmlsZSB0eXBlJyAoJ2ZpdHAnKSAndHlwZScgLS0gJ3RoZSBmaWxlIHR5cGUgb2YgdGhlIGZpbGUgdGhhdCBsYXVuY2hlZCB0aGlzIHByb2Nlc3MnIFtdCi0jICAgICAgICBwcm9wZXJ0eSAnZnJvbnRtb3N0JyAoJ3Bpc2YnKSAnYm9vbCcgLS0gJ0lzIHRoaXMgdGhlIGZyb250bW9zdCBhcHBsaWNhdGlvbj8nIFttdXRhYmxlXQotIyAgICAgICAgcHJvcGVydHkgJ25hbWUnICgncG5hbScpICdpdHh0JyAtLSAndGhlIG5hbWUgb2YgdGhlIHByb2Nlc3MnIFtdCi0jICAgICAgICBwcm9wZXJ0eSAncGFydGl0aW9uIHNpemUnICgnYXBwdCcpICdsb25nJyAtLSAndGhlIHNpemUgb2YgdGhlIHBhcnRpdGlvbiB0aGF0IHRoaXMgYXBwbGljYXRpb24gd2FzIGxhdW5jaGVkIHdpdGgnIFtdCi0jICAgICAgICBwcm9wZXJ0eSAncGFydGl0aW9uIHNwYWNlIHVzZWQnICgncHVzZCcpICdsb25nJyAtLSAndGhlIG51bWJlciBvZiBieXRlcyBjdXJyZW50bHkgdXNlZCBpbiB0aGlzIHBhcnRpdGlvbicgW10KLSMgICAgICAgIHByb3BlcnR5ICdyZW1vdGUgZXZlbnRzJyAoJ3JldnQnKSAnYm9vbCcgLS0gJ1dpbGwgdGhpcyBwcm9jZXNzIGFjY2VwdHMgcmVtb3RlIGV2ZW50cz8nIFtdCi0jICAgICAgICBwcm9wZXJ0eSAnc2NyaXB0YWJsZScgKCdpc2FiJykgJ2Jvb2wnIC0tICdJcyB0aGlzIHByb2Nlc3MgaGlnaC1sZXZlbCBldmVudCBhd2FyZSAoYWNjZXB0cyBvcGVuIGFwcGxpY2F0aW9uLCBvcGVuIGRvY3VtZW50LCBwcmludCBkb2N1bWVudCwgYW5kIHF1aXQpPycgW10KLSMgICAgICAgIHByb3BlcnR5ICd2aXNpYmxlJyAoJ3B2aXMnKSAnYm9vbCcgLS0gIklzIHRoaXMgcHJvY2VzcycgbGF5ZXIgdmlzaWJsZT8iIFttdXRhYmxlXQotCi0jICAgIENsYXNzICdwcm9jZXNzZXMnICgncHJjcycpIC0tICdldmVyeSBwcm9jZXNzJwotIyAgICAgICAgcHJvcGVydHkgJycgKCdjQCMhJykgJ3R5cGUnIC0tICcnIFswXQotCi0jICAgIENsYXNzICdzaGFyYWJsZSBjb250YWluZXInICgnc2N0cicpIC0tICdBIGNvbnRhaW5lciB0aGF0IG1heSBiZSBzaGFyZWQgKGRpc2tzIGFuZCBmb2xkZXJzKScKLSMgICAgICAgIHByb3BlcnR5ICdleHBvcnRlZCcgKCdzZXhwJykgJ2Jvb2wnIC0tICdJcyB0aGlzIGZvbGRlciBhIHNoYXJlIHBvaW50IG9yIGluc2lkZSBhIHNoYXJlIHBvaW50PycgW10KLSMgICAgICAgIHByb3BlcnR5ICdncm91cCcgKCdzZ3JwJykgJ2l0eHQnIC0tICd0aGUgdXNlciBvciBncm91cCB0aGF0IGhhcyBzcGVjaWFsIGFjY2VzcyB0byB0aGUgZm9sZGVyJyBbbXV0YWJsZV0KLSMgICAgICAgIHByb3BlcnR5ICdncm91cCBwcml2aWxlZ2VzJyAoJ2dwcHInKSAncHJpdicgLS0gJ3RoZSBzZWUgZm9sZGVycy9zZWUgZmlsZXMvbWFrZSBjaGFuZ2VzIHByaXZpbGVnZXMgZm9yIHRoZSBncm91cCcgW211dGFibGVdCi0jICAgICAgICBwcm9wZXJ0eSAnZ3Vlc3QgcHJpdmlsZWdlcycgKCdnc3RwJykgJ3ByaXYnIC0tICd0aGUgc2VlIGZvbGRlcnMvc2VlIGZpbGVzL21ha2UgY2hhbmdlcyBwcml2aWxlZ2VzIGZvciBldmVyeW9uZScgW211dGFibGVdCi0jICAgICAgICBwcm9wZXJ0eSAnaW5oZXJpdGVkIHByaXZpbGVnZXMnICgnaXBydicpICdib29sJyAtLSAnQXJlIHRoZSBwcml2aWxlZ2VzIG9mIHRoaXMgaXRlbSBhbHdheXMgdGhlIHNhbWUgYXMgdGhlIGNvbnRhaW5lciBpdCBpcyBzdG9yZWQgaW4/JyBbbXV0YWJsZV0KLSMgICAgICAgIHByb3BlcnR5ICdtb3VudGVkJyAoJ3Ntb3UnKSAnYm9vbCcgLS0gIklzIHRoaXMgZm9sZGVyIG1vdW50ZWQgb24gYW5vdGhlciBtYWNoaW5lJ3MgZGVza3RvcD8iIFtdCi0jICAgICAgICBwcm9wZXJ0eSAnb3duZXInICgnc293bicpICdpdHh0JyAtLSAndGhlIHVzZXIgdGhhdCBvd25zIHRoaXMgZm9sZGVyJyBbbXV0YWJsZV0KLSMgICAgICAgIHByb3BlcnR5ICdvd25lciBwcml2aWxlZ2VzJyAoJ293bnInKSAncHJpdicgLS0gJ3RoZSBzZWUgZm9sZGVycy9zZWUgZmlsZXMvbWFrZSBjaGFuZ2VzIHByaXZpbGVnZXMgZm9yIHRoZSBvd25lcicgW211dGFibGVdCi0jICAgICAgICBwcm9wZXJ0eSAncHJvdGVjdGVkJyAoJ3Nwcm8nKSAnYm9vbCcgLS0gJ0lzIGNvbnRhaW5lciBwcm90ZWN0ZWQgZnJvbSBiZWluZyBtb3ZlZCwgcmVuYW1lZCBvciBkZWxldGVkPycgW211dGFibGVdCi0jICAgICAgICBwcm9wZXJ0eSAnc2hhcmVkJyAoJ3NoYXInKSAnYm9vbCcgLS0gJ0lzIGNvbnRhaW5lciBhIHNoYXJlIHBvaW50PycgW211dGFibGVdCi0jICAgICAgICBwcm9wZXJ0eSAnc2hhcmluZyB3aW5kb3cnICgnc3duZCcpICdvYmogJyAtLSAndGhlIHNoYXJpbmcgd2luZG93IGZvciB0aGUgY29udGFpbmVyJyBbXQotIyAgICAgICAgZWxlbWVudCAnZHN1dCcgYXMgWydpbmR4JywgJ25hbWUnXQotIyAgICAgICAgZWxlbWVudCAnYWxpYScgYXMgWydpbmR4JywgJ25hbWUnXQotIyAgICAgICAgZWxlbWVudCAnYXBwZicgYXMgWydpbmR4JywgJ25hbWUnXQotIyAgICAgICAgZWxlbWVudCAnY3RucicgYXMgWydpbmR4JywgJ25hbWUnXQotIyAgICAgICAgZWxlbWVudCAnY2NkdicgYXMgWydpbmR4JywgJ25hbWUnXQotIyAgICAgICAgZWxlbWVudCAnZGFmaScgYXMgWydpbmR4JywgJ25hbWUnXQotIyAgICAgICAgZWxlbWVudCAnZG9jZicgYXMgWydpbmR4JywgJ25hbWUnXQotIyAgICAgICAgZWxlbWVudCAnZmlsZScgYXMgWydpbmR4JywgJ25hbWUnXQotIyAgICAgICAgZWxlbWVudCAnY2ZvbCcgYXMgWydpbmR4JywgJ25hbWUnXQotIyAgICAgICAgZWxlbWVudCAnZm50ZicgYXMgWydpbmR4JywgJ25hbWUnXQotIyAgICAgICAgZWxlbWVudCAnZnN1dCcgYXMgWydpbmR4JywgJ25hbWUnXQotIyAgICAgICAgZWxlbWVudCAnY29iaicgYXMgWydpbmR4JywgJ25hbWUnXQotIyAgICAgICAgZWxlbWVudCAnc2N0cicgYXMgWydpbmR4JywgJ25hbWUnXQotIyAgICAgICAgZWxlbWVudCAnc25kZicgYXMgWydpbmR4JywgJ25hbWUnXQotIyAgICAgICAgZWxlbWVudCAnc3RjcycgYXMgWydpbmR4JywgJ25hbWUnXQotCi0jICAgIENsYXNzICdzaGFyYWJsZSBjb250YWluZXJzJyAoJ3NjdHInKSAtLSAnZXZlcnkgc2hhcmFibGUgY29udGFpbmVyJwotIyAgICAgICAgcHJvcGVydHkgJycgKCdjQCMhJykgJ3R5cGUnIC0tICcnIFswXQotCi0jICAgIENsYXNzICdzaGFyaW5nIHByaXZpbGVnZXMnICgncHJpdicpIC0tICdBIHNldCBvZiBzaGFyaW5nIHByb3BlcnRpZXMnCi0jICAgICAgICBwcm9wZXJ0eSAnbWFrZSBjaGFuZ2VzJyAoJ3BydncnKSAnYm9vbCcgLS0gJ3ByaXZpbGVnZXMgdG8gbWFrZSBjaGFuZ2VzJyBbbXV0YWJsZV0KLSMgICAgICAgIHByb3BlcnR5ICdzZWUgZmlsZXMnICgncHJ2cicpICdib29sJyAtLSAncHJpdmlsZWdlcyB0byBzZWUgZmlsZXMnIFttdXRhYmxlXQotIyAgICAgICAgcHJvcGVydHkgJ3NlZSBmb2xkZXJzJyAoJ3BydnMnKSAnYm9vbCcgLS0gJ3ByaXZpbGVnZXMgdG8gc2VlIGZvbGRlcnMnIFttdXRhYmxlXQotCi0jICAgIENsYXNzICdzaGFyaW5nIHdpbmRvdycgKCdzd25kJykgLS0gJ0Egc2hhcmluZyB3aW5kb3cgKG9wZW5lZCBieSBcMzIyU2hhcmluZ1wzMTFcMzIzKScKLSMgICAgICAgIHByb3BlcnR5ICdjb250YWluZXInICgnY3RucicpICdvYmogJyAtLSAndGhlIGNvbnRhaW5lciB0aGF0IHRoaXMgd2luZG93IHdhcyBvcGVuZWQgZnJvbScgW10KLSMgICAgICAgIHByb3BlcnR5ICdleHBvcnRlZCcgKCdzZXhwJykgJ2Jvb2wnIC0tICdJcyB0aGlzIGNvbnRhaW5lciBhIHNoYXJlIHBvaW50IG9yIGluc2lkZSBhIHNoYXJlIHBvaW50PycgW10KLSMgICAgICAgIHByb3BlcnR5ICdmb2xkZXInICgnY2ZvbCcpICdvYmogJyAtLSAndGhlIGZvbGRlciB0aGF0IHRoaXMgd2luZG93IHdhcyBvcGVuZWQgZnJvbScgW10KLSMgICAgICAgIHByb3BlcnR5ICdncm91cCcgKCdzZ3JwJykgJ2l0eHQnIC0tICd0aGUgdXNlciBvciBncm91cCB0aGF0IGhhcyBzcGVjaWFsIGFjY2VzcyB0byB0aGUgY29udGFpbmVyJyBbbXV0YWJsZV0KLSMgICAgICAgIHByb3BlcnR5ICdncm91cCBwcml2aWxlZ2VzJyAoJ2dwcHInKSAncHJpdicgLS0gJ3RoZSBzZWUgZm9sZGVycy9zZWUgZmlsZXMvbWFrZSBjaGFuZ2VzIHByaXZpbGVnZXMgZm9yIHRoZSBncm91cCcgW211dGFibGVdCi0jICAgICAgICBwcm9wZXJ0eSAnZ3Vlc3QgcHJpdmlsZWdlcycgKCdnc3RwJykgJ3ByaXYnIC0tICd0aGUgc2VlIGZvbGRlcnMvc2VlIGZpbGVzL21ha2UgY2hhbmdlcyBwcml2aWxlZ2VzIGZvciBldmVyeW9uZScgW211dGFibGVdCi0jICAgICAgICBwcm9wZXJ0eSAnaW5oZXJpdGVkIHByaXZpbGVnZXMnICgnaXBydicpICdib29sJyAtLSAnQXJlIHRoZSBwcml2aWxlZ2VzIG9mIHRoaXMgaXRlbSBhbHdheXMgdGhlIHNhbWUgYXMgdGhlIGNvbnRhaW5lciBpdCBpcyBzdG9yZWQgaW4/JyBbbXV0YWJsZV0KLSMgICAgICAgIHByb3BlcnR5ICdpdGVtJyAoJ2NvYmonKSAnb2JqICcgLS0gJ3RoZSBpdGVtIHRoYXQgdGhpcyB3aW5kb3cgd2FzIG9wZW5lZCBmcm9tJyBbXQotIyAgICAgICAgcHJvcGVydHkgJ21vdW50ZWQnICgnc21vdScpICdib29sJyAtLSAiSXMgdGhpcyBjb250YWluZXIgbW91bnRlZCBvbiBhbm90aGVyIG1hY2hpbmUncyBkZXNrdG9wPyIgW10KLSMgICAgICAgIHByb3BlcnR5ICdvd25lcicgKCdzb3duJykgJ2l0eHQnIC0tICd0aGUgdXNlciB0aGF0IG93bnMgdGhlIGNvbnRhaW5lcicgW211dGFibGVdCi0jICAgICAgICBwcm9wZXJ0eSAnb3duZXIgcHJpdmlsZWdlcycgKCdvd25yJykgJ3ByaXYnIC0tICd0aGUgc2VlIGZvbGRlcnMvc2VlIGZpbGVzL21ha2UgY2hhbmdlcyBwcml2aWxlZ2VzIGZvciB0aGUgb3duZXInIFttdXRhYmxlXQotIyAgICAgICAgcHJvcGVydHkgJ3Byb3RlY3RlZCcgKCdzcHJvJykgJ2Jvb2wnIC0tICdJcyBjb250YWluZXIgcHJvdGVjdGVkIGZyb20gYmVpbmcgbW92ZWQsIHJlbmFtZWQgb3IgZGVsZXRlZD8nIFttdXRhYmxlXQotIyAgICAgICAgcHJvcGVydHkgJ3NoYXJhYmxlIGNvbnRhaW5lcicgKCdzY3RyJykgJ29iaiAnIC0tICd0aGUgc2hhcmFibGUgY29udGFpbmVyIHRoYXQgdGhpcyB3aW5kb3cgd2FzIG9wZW5lZCBmcm9tJyBbXQotIyAgICAgICAgcHJvcGVydHkgJ3NoYXJlZCcgKCdzaGFyJykgJ2Jvb2wnIC0tICdJcyBjb250YWluZXIgYSBzaGFyZSBwb2ludD8nIFttdXRhYmxlXQotCi0jICAgIENsYXNzICdzaGFyaW5nIHdpbmRvd3MnICgnc3duZCcpIC0tICdldmVyeSBzaGFyaW5nIHdpbmRvdycKLSMgICAgICAgIHByb3BlcnR5ICcnICgnY0AjIScpICd0eXBlJyAtLSAnJyBbMF0KLQotIyAgICBDbGFzcyAnc291bmQgZmlsZScgKCdzbmRmJykgLS0gJ1RoaXMgY2xhc3MgcmVwcmVzZW50cyBzb3VuZCBmaWxlcycKLQotIyAgICBDbGFzcyAnc291bmQgZmlsZXMnICgnc25kZicpIC0tICdldmVyeSBzb3VuZCBmaWxlJwotIyAgICAgICAgcHJvcGVydHkgJycgKCdjQCMhJykgJ3R5cGUnIC0tICcnIFswXQotCi0jICAgIENsYXNzICdzdGF0dXMgd2luZG93JyAoJ3F3bmQnKSAtLSAnVGhlc2Ugd2luZG93cyBhcmUgcHJvZ3Jlc3MgZGlhbG9ncyAoY29weSB3aW5kb3csIHJlYnVpbGQgZGVza3RvcCBkYXRhYmFzZSwgZW1wdHkgdHJhc2gpJwotCi0jICAgIENsYXNzICdzdGF0dXMgd2luZG93cycgKCdxd25kJykgLS0gJ2V2ZXJ5IHN0YXR1cyB3aW5kb3cnCi0jICAgICAgICBwcm9wZXJ0eSAnJyAoJ2NAIyEnKSAndHlwZScgLS0gJycgWzBdCi0KLSMgICAgQ2xhc3MgJ3N1aXRjYXNlJyAoJ3N0Y3MnKSAtLSAnQSBmb250IG9yIGRlc2sgYWNjZXNzb3J5IHN1aXRjYXNlJwotIyAgICAgICAgZWxlbWVudCAnY29iaicgYXMgWydpbmR4JywgJ25hbWUnXQotCi0jICAgIENsYXNzICdzdWl0Y2FzZXMnICgnc3RjcycpIC0tICdldmVyeSBzdWl0Y2FzZScKLSMgICAgICAgIHByb3BlcnR5ICcnICgnY0AjIScpICd0eXBlJyAtLSAnJyBbMF0KLQotIyAgICBDbGFzcyAndHJhc2gtb2JqZWN0JyAoJ2N0cnMnKSAtLSAnVHJhc2gtb2JqZWN0IGlzIHRoZSBjbGFzcyBvZiB0aGUgXDMyMnRyYXNoXDMyMyBvYmplY3QnCi0jICAgICAgICBwcm9wZXJ0eSAnd2FybiBiZWZvcmUgZW1wdHlpbmcnICgnd2FybicpICdib29sJyAtLSAnSXMgYSBkaWFsb2cgZGlzcGxheWVkIHdoZW4gXDMyMkVtcHR5IHRyYXNoXDMxMVwzMjMgaXMgc2VsZWN0ZWQ/JyBbbXV0YWJsZV0KLSMgICAgICAgIGVsZW1lbnQgJ2RzdXQnIGFzIFsnaW5keCcsICduYW1lJ10KLSMgICAgICAgIGVsZW1lbnQgJ2FsaWEnIGFzIFsnaW5keCcsICduYW1lJ10KLSMgICAgICAgIGVsZW1lbnQgJ2FwcGYnIGFzIFsnaW5keCcsICduYW1lJ10KLSMgICAgICAgIGVsZW1lbnQgJ2N0bnInIGFzIFsnaW5keCcsICduYW1lJ10KLSMgICAgICAgIGVsZW1lbnQgJ2NjZHYnIGFzIFsnaW5keCcsICduYW1lJ10KLSMgICAgICAgIGVsZW1lbnQgJ2RhZmknIGFzIFsnaW5keCcsICduYW1lJ10KLSMgICAgICAgIGVsZW1lbnQgJ2RvY2YnIGFzIFsnaW5keCcsICduYW1lJ10KLSMgICAgICAgIGVsZW1lbnQgJ2ZpbGUnIGFzIFsnaW5keCcsICduYW1lJ10KLSMgICAgICAgIGVsZW1lbnQgJ2Nmb2wnIGFzIFsnaW5keCcsICduYW1lJ10KLSMgICAgICAgIGVsZW1lbnQgJ2ZudGYnIGFzIFsnaW5keCcsICduYW1lJ10KLSMgICAgICAgIGVsZW1lbnQgJ2ZzdXQnIGFzIFsnaW5keCcsICduYW1lJ10KLSMgICAgICAgIGVsZW1lbnQgJ2NvYmonIGFzIFsnaW5keCcsICduYW1lJ10KLSMgICAgICAgIGVsZW1lbnQgJ3NjdHInIGFzIFsnaW5keCcsICduYW1lJ10KLSMgICAgICAgIGVsZW1lbnQgJ3NuZGYnIGFzIFsnaW5keCcsICduYW1lJ10KLSMgICAgICAgIGVsZW1lbnQgJ3N0Y3MnIGFzIFsnaW5keCcsICduYW1lJ10KLQotIyAgICBDbGFzcyAndXNlcicgKCdjdXNlJykgLS0gJ0EgVXNlciBpbiB0aGUgVXNlcnMgYW5kIEdyb3VwcyBjb250cm9sIHBhbmVsJwotIyAgICAgICAgcHJvcGVydHkgJ2JvdW5kcycgKCdwYm5kJykgJ3FkcnQnIC0tICd0aGUgYm91bmRpbmcgcmVjdGFuZ2xlIG9mIHRoZSB1c2VyJyBbbXV0YWJsZV0KLSMgICAgICAgIHByb3BlcnR5ICdpY29uJyAoJ2lpbWcnKSAnaWZhbScgLS0gJ3RoZSBpY29uIGJpdG1hcCBvZiB0aGUgdXNlcicgW211dGFibGVdCi0jICAgICAgICBwcm9wZXJ0eSAnbGFiZWwgaW5kZXgnICgnbGFiaScpICdsb25nJyAtLSAndGhlIGxhYmVsIG9mIHRoZSB1c2VyJyBbbXV0YWJsZV0KLSMgICAgICAgIHByb3BlcnR5ICduYW1lJyAoJ3BuYW0nKSAnaXR4dCcgLS0gJ3RoZSBuYW1lIG9mIHRoZSB1c2VyJyBbbXV0YWJsZV0KLSMgICAgICAgIHByb3BlcnR5ICdwb3NpdGlvbicgKCdwb3NuJykgJ1FEcHQnIC0tICd0aGUgcG9zaXRpb24gb2YgdGhlIHVzZXIgd2l0aGluIGl0cyBwYXJlbnQgd2luZG93JyBbbXV0YWJsZV0KLQotIyAgICBDbGFzcyAndXNlcnMnICgnY3VzZScpIC0tICdldmVyeSB1c2VyJwotIyAgICAgICAgcHJvcGVydHkgJycgKCdjQCMhJykgJ3R5cGUnIC0tICcnIFswXQotCi0jICAgIENsYXNzICd3aW5kb3cnICgnY3dpbicpIC0tICdBIHdpbmRvdycKLQotIyAgICBDbGFzcyAnd2luZG93cycgKCdjd2luJykgLS0gJ2V2ZXJ5IHdpbmRvdycKLSMgICAgICAgIHByb3BlcnR5ICcnICgnY0AjIScpICd0eXBlJyAtLSAnJyBbMF0KZGlmZiAtLWdpdCBhL01hYy9MaWIvdG9vbGJveC9NZXRyb3dlcmtzX1NoZWxsX1N1aXRlLnB5IGIvTWFjL0xpYi90b29sYm94L01ldHJvd2Vya3NfU2hlbGxfU3VpdGUucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDg4YmNkZjkuLjAwMDAwMDAKLS0tIGEvTWFjL0xpYi90b29sYm94L01ldHJvd2Vya3NfU2hlbGxfU3VpdGUucHkKKysrIC9kZXYvbnVsbApAQCAtMSw5OTIgKzAsMCBAQAotIiIiU3VpdGUgTWV0cm93ZXJrcyBTaGVsbCBTdWl0ZTogRXZlbnRzIHN1cHBvcnRlZCBieSB0aGUgTWV0cm93ZXJrcyBQcm9qZWN0IFNoZWxsCi1MZXZlbCAxLCB2ZXJzaW9uIDEKLQotR2VuZXJhdGVkIGZyb20gZmxhcDpNZXRyb3dlcmtzOk1ldHJvd2Vya3MgQ29kZVdhcnJpb3I6Q29kZVdhcnJpb3IgSURFIDEuNy40Ci1BRVRFL0FFVVQgcmVzb3VyY2UgdmVyc2lvbiAxLzAsIGxhbmd1YWdlIDAsIHNjcmlwdCAwCi0iIiIKLQotaW1wb3J0IGFldG9vbHMKLWltcG9ydCBNYWNPUwotCi1fY29kZSA9ICdNTVBSJwotCi1fRW51bV9zYXZvID0gewotCSd5ZXMnIDogJ3llcyAnLAkjIFNhdmUgY2hhbmdlcwotCSdubycgOiAnbm8gICcsCSMgRG8gbm90IHNhdmUgY2hhbmdlcwotCSdhc2snIDogJ2FzayAnLAkjIEFzayB0aGUgdXNlciB3aGV0aGVyIHRvIHNhdmUKLX0KLQotX0VudW1fRXJyVCA9IHsKLQknaW5mb3JtYXRpb24nIDogJ0VySW4nLAkjIAotCSdjb21waWxlcl93YXJuaW5nJyA6ICdFckNXJywJIyAKLQknY29tcGlsZXJfZXJyb3InIDogJ0VyQ0UnLAkjIAotCSdkZWZpbml0aW9uJyA6ICdFckRmJywJIyAKLQknbGlua2VyX3dhcm5pbmcnIDogJ0VyTFcnLAkjIAotCSdsaW5rZXJfZXJyb3InIDogJ0VyTEUnLAkjIAotCSdmaW5kX3Jlc3VsdCcgOiAnRXJGbicsCSMgCi0JJ2dlbmVyaWNfZXJyb3InIDogJ0VyR24nLAkjIAotfQotCi1fRW51bV9Nb2RlID0gewotCSdSZWFkV3JpdGUnIDogJ1JkV3InLAkjIFRoZSBmaWxlIGlzIG9wZW4gd2l0aCByZWFkL3dyaXRlIHByaXZpbGVnZXMKLQknUmVhZE9ubHknIDogJ1JlYWQnLAkjIFRoZSBmaWxlIGlzIG9wZW4gd2l0aCByZWFkL29ubHkgcHJpdmlsZWdlcwotCSdDaGVja2VkT3V0X1JlYWRXcml0ZScgOiAnQ2tSVycsCSMgVGhlIGZpbGUgaXMgY2hlY2tlZCBvdXQgd2l0aCByZWFkL3dyaXRlIHByaXZpbGVnZXMKLQknQ2hlY2tlZE91dF9SZWFkT25seScgOiAnQ2tSTycsCSMgVGhlIGZpbGUgaXMgY2hlY2tlZCBvdXQgd2l0aCByZWFkL29ubHkgcHJpdmlsZWdlcwotCSdDaGVja2VkT3V0X1JlYWRNb2RpZnknIDogJ0NrUk0nLAkjIFRoZSBmaWxlIGlzIGNoZWNrZWQgb3V0IHdpdGggcmVhZC9tb2RpZnkgcHJpdmlsZWdlcwotCSdMb2NrZWQnIDogJ0xvY2snLAkjIFRoZSBmaWxlIGlzIGxvY2tlZCBvbiBkaXNrCi0JJ05vbmUnIDogJ05vbmUnLAkjIFRoZSBmaWxlIGlzIG5ldwotfQotCi1fRW51bV9TcmNUID0gewotCSdzb3VyY2UnIDogJ0ZUeHQnLAkjIEEgc291cmNlIGZpbGUgKC5jLCAuY3AsIC5wLCBldGMpLgotCSd1bmtub3duJyA6ICdGVW5rJywJIyBBbiB1bmtub3duIGZpbGUgdHlwZS4KLX0KLQotX0VudW1fUFBybSA9IHsKLQknYWJzb2x1dGUnIDogJ0Fic28nLAkjIEFuIGFic29sdXRlIHBhdGggbmFtZSwgaW5jbHVkaW5nIHZvbHVtZSBuYW1lLgotCSdwcm9qZWN0X3JlbGF0aXZlJyA6ICdQUmVsJywJIyBBIHBhdGggcmVsYXRpdmUgdG8gdGhlIGN1cnJlbnQgcHJvamVjdLlzIGZvbGRlci4KLQknc2hlbGxfcmVsYXRpdmUnIDogJ1NSZWwnLAkjIEEgcGF0aCByZWxhdGl2ZSB0byB0aGUgQ29kZVdhcnJpb3KBIGZvbGRlci4KLX0KLQotX0VudW1fUmVmUCA9IHsKLQknVGhpbmtfUmVmZXJlbmNlJyA6ICdEYW5SJywJIyAKLQknUXVpY2tWaWV3JyA6ICdBTFRWJywJIyAKLX0KLQotX0VudW1fTGFuZyA9IHsKLQknQycgOiAnTEMgICcsCSMgCi0JJ0NfMmJfXzJiXycgOiAnTEMrKycsCSMgCi0JJ1Bhc2NhbCcgOiAnTFAgICcsCSMgCi0JJ09iamVjdF9QYXNjYWwnIDogJ0xQKysnLAkjIAotCSdKYXZhJyA6ICdMSmF2JywJIyAKLQknQXNzZW1ibGVyJyA6ICdMQXNtJywJIyAKLQknVW5rbm93bicgOiAnTD8gICcsCSMgCi19Ci0KLV9FbnVtX0FjY2UgPSB7Ci0JJ3B1YmxpYycgOiAnUHVibCcsCSMgCi0JJ3Byb3RlY3RlZCcgOiAnUHJvdCcsCSMgCi0JJ3ByaXZhdGUnIDogJ1ByaXYnLAkjIAotfQotCi1jbGFzcyBNZXRyb3dlcmtzX1NoZWxsX1N1aXRlOgotCi0JX2FyZ21hcF9BZGRfRmlsZXMgPSB7Ci0JCSdUb19TZWdtZW50JyA6ICdTZWdtJywKLQl9Ci0KLQlkZWYgQWRkX0ZpbGVzKHNlbGYsIF9vYmplY3QsIF9hdHRyaWJ1dGVzPXt9LCAqKl9hcmd1bWVudHMpOgotCQkiIiJBZGQgRmlsZXM6IEFkZCB0aGUgc3BlY2lmaWVkIGZpbGUocykgdG8gdGhlIGN1cnJlbnQgcHJvamVjdAotCQlSZXF1aXJlZCBhcmd1bWVudDogTGlzdCBvZiBmaWxlcyB0byBhZGQKLQkJS2V5d29yZCBhcmd1bWVudCBUb19TZWdtZW50OiBTZWdtZW50IG51bWJlciBpbnRvIHdoaWNoIHRvIGFkZCB0aGUgZmlsZShzKQotCQlLZXl3b3JkIGFyZ3VtZW50IF9hdHRyaWJ1dGVzOiBBcHBsZUV2ZW50IGF0dHJpYnV0ZSBkaWN0aW9uYXJ5Ci0JCVJldHVybnM6IEVycm9yIGNvZGUgZm9yIGVhY2ggZmlsZSBhZGRlZAotCQkiIiIKLQkJX2NvZGUgPSAnTU1QUicKLQkJX3N1YmNvZGUgPSAnQWRkRicKLQotCQlhZXRvb2xzLmtleXN1YnN0KF9hcmd1bWVudHMsIHNlbGYuX2FyZ21hcF9BZGRfRmlsZXMpCi0JCV9hcmd1bWVudHNbJy0tLS0nXSA9IF9vYmplY3QKLQotCi0JCV9yZXBseSwgX2FyZ3VtZW50cywgX2F0dHJpYnV0ZXMgPSBzZWxmLnNlbmQoX2NvZGUsIF9zdWJjb2RlLAotCQkJCV9hcmd1bWVudHMsIF9hdHRyaWJ1dGVzKQotCQlpZiBfYXJndW1lbnRzLmhhc19rZXkoJ2Vycm4nKToKLQkJCXJhaXNlIGFldG9vbHMuRXJyb3IsIGFldG9vbHMuZGVjb2RlZXJyb3IoX2FyZ3VtZW50cykKLQkJIyBYWFhYIE9wdGlvbmFsbHkgZGVjb2RlIHJlc3VsdAotCQlpZiBfYXJndW1lbnRzLmhhc19rZXkoJy0tLS0nKToKLQkJCXJldHVybiBfYXJndW1lbnRzWyctLS0tJ10KLQotCV9hcmdtYXBfQ2hlY2tfU3ludGF4ID0gewotCQknRXh0ZXJuYWxFZGl0b3InIDogJ0VycnMnLAotCX0KLQotCWRlZiBDaGVja19TeW50YXgoc2VsZiwgX29iamVjdCwgX2F0dHJpYnV0ZXM9e30sICoqX2FyZ3VtZW50cyk6Ci0JCSIiIkNoZWNrIFN5bnRheDogQ2hlY2sgdGhlIHN5bnRheCBvZiB0aGUgc3BlY2lmaWVkIGZpbGUocykKLQkJUmVxdWlyZWQgYXJndW1lbnQ6IExpc3Qgb2YgZmlsZXMgdG8gY2hlY2sgdGhlIHN5bnRheCBvZgotCQlLZXl3b3JkIGFyZ3VtZW50IEV4dGVybmFsRWRpdG9yOiBTaG91bGQgdGhlIGNvbnRlbnRzIG9mIHRoZSBtZXNzYWdlIHdpbmRvdyBiZSByZXR1cm5lZCB0byB0aGUgY2FsbGVyPwotCQlLZXl3b3JkIGFyZ3VtZW50IF9hdHRyaWJ1dGVzOiBBcHBsZUV2ZW50IGF0dHJpYnV0ZSBkaWN0aW9uYXJ5Ci0JCVJldHVybnM6IEVycm9ycyBmb3IgZWFjaCBmaWxlIHdob3NlIHN5bnRheCB3YXMgY2hlY2tlZAotCQkiIiIKLQkJX2NvZGUgPSAnTU1QUicKLQkJX3N1YmNvZGUgPSAnQ2hlaycKLQotCQlhZXRvb2xzLmtleXN1YnN0KF9hcmd1bWVudHMsIHNlbGYuX2FyZ21hcF9DaGVja19TeW50YXgpCi0JCV9hcmd1bWVudHNbJy0tLS0nXSA9IF9vYmplY3QKLQotCi0JCV9yZXBseSwgX2FyZ3VtZW50cywgX2F0dHJpYnV0ZXMgPSBzZWxmLnNlbmQoX2NvZGUsIF9zdWJjb2RlLAotCQkJCV9hcmd1bWVudHMsIF9hdHRyaWJ1dGVzKQotCQlpZiBfYXJndW1lbnRzLmhhc19rZXkoJ2Vycm4nKToKLQkJCXJhaXNlIGFldG9vbHMuRXJyb3IsIGFldG9vbHMuZGVjb2RlZXJyb3IoX2FyZ3VtZW50cykKLQkJIyBYWFhYIE9wdGlvbmFsbHkgZGVjb2RlIHJlc3VsdAotCQlpZiBfYXJndW1lbnRzLmhhc19rZXkoJy0tLS0nKToKLQkJCXJldHVybiBfYXJndW1lbnRzWyctLS0tJ10KLQotCWRlZiBDbG9zZV9Qcm9qZWN0KHNlbGYsIF9ub19vYmplY3Q9Tm9uZSwgX2F0dHJpYnV0ZXM9e30sICoqX2FyZ3VtZW50cyk6Ci0JCSIiIkNsb3NlIFByb2plY3Q6IENsb3NlIHRoZSBjdXJyZW50IHByb2plY3QKLQkJS2V5d29yZCBhcmd1bWVudCBfYXR0cmlidXRlczogQXBwbGVFdmVudCBhdHRyaWJ1dGUgZGljdGlvbmFyeQotCQkiIiIKLQkJX2NvZGUgPSAnTU1QUicKLQkJX3N1YmNvZGUgPSAnQ2xzUCcKLQotCQlpZiBfYXJndW1lbnRzOiByYWlzZSBUeXBlRXJyb3IsICdObyBvcHRpb25hbCBhcmdzIGV4cGVjdGVkJwotCQlpZiBfbm9fb2JqZWN0ICE9IE5vbmU6IHJhaXNlIFR5cGVFcnJvciwgJ05vIGRpcmVjdCBhcmcgZXhwZWN0ZWQnCi0KLQotCQlfcmVwbHksIF9hcmd1bWVudHMsIF9hdHRyaWJ1dGVzID0gc2VsZi5zZW5kKF9jb2RlLCBfc3ViY29kZSwKLQkJCQlfYXJndW1lbnRzLCBfYXR0cmlidXRlcykKLQkJaWYgX2FyZ3VtZW50cy5oYXNfa2V5KCdlcnJuJyk6Ci0JCQlyYWlzZSBhZXRvb2xzLkVycm9yLCBhZXRvb2xzLmRlY29kZWVycm9yKF9hcmd1bWVudHMpCi0JCSMgWFhYWCBPcHRpb25hbGx5IGRlY29kZSByZXN1bHQKLQkJaWYgX2FyZ3VtZW50cy5oYXNfa2V5KCctLS0tJyk6Ci0JCQlyZXR1cm4gX2FyZ3VtZW50c1snLS0tLSddCi0KLQlfYXJnbWFwX0Nsb3NlX1dpbmRvdyA9IHsKLQkJJ1NhdmluZycgOiAnc2F2bycsCi0JfQotCi0JZGVmIENsb3NlX1dpbmRvdyhzZWxmLCBfb2JqZWN0LCBfYXR0cmlidXRlcz17fSwgKipfYXJndW1lbnRzKToKLQkJIiIiQ2xvc2UgV2luZG93OiBDbG9zZSB0aGUgd2luZG93cyBzaG93aW5nIHRoZSBzcGVjaWZpZWQgZmlsZXMKLQkJUmVxdWlyZWQgYXJndW1lbnQ6IFRoZSBmaWxlcyB0byBjbG9zZQotCQlLZXl3b3JkIGFyZ3VtZW50IFNhdmluZzogV2hldGhlciB0byBzYXZlIGNoYW5nZXMgdG8gZWFjaCBmaWxlIGJlZm9yZSBjbG9zaW5nIGl0cyB3aW5kb3cKLQkJS2V5d29yZCBhcmd1bWVudCBfYXR0cmlidXRlczogQXBwbGVFdmVudCBhdHRyaWJ1dGUgZGljdGlvbmFyeQotCQkiIiIKLQkJX2NvZGUgPSAnTU1QUicKLQkJX3N1YmNvZGUgPSAnQ2xzVycKLQotCQlhZXRvb2xzLmtleXN1YnN0KF9hcmd1bWVudHMsIHNlbGYuX2FyZ21hcF9DbG9zZV9XaW5kb3cpCi0JCV9hcmd1bWVudHNbJy0tLS0nXSA9IF9vYmplY3QKLQotCQlhZXRvb2xzLmVudW1zdWJzdChfYXJndW1lbnRzLCAnc2F2bycsIF9FbnVtX3Nhdm8pCi0KLQkJX3JlcGx5LCBfYXJndW1lbnRzLCBfYXR0cmlidXRlcyA9IHNlbGYuc2VuZChfY29kZSwgX3N1YmNvZGUsCi0JCQkJX2FyZ3VtZW50cywgX2F0dHJpYnV0ZXMpCi0JCWlmIF9hcmd1bWVudHMuaGFzX2tleSgnZXJybicpOgotCQkJcmFpc2UgYWV0b29scy5FcnJvciwgYWV0b29scy5kZWNvZGVlcnJvcihfYXJndW1lbnRzKQotCQkjIFhYWFggT3B0aW9uYWxseSBkZWNvZGUgcmVzdWx0Ci0JCWlmIF9hcmd1bWVudHMuaGFzX2tleSgnLS0tLScpOgotCQkJcmV0dXJuIF9hcmd1bWVudHNbJy0tLS0nXQotCi0JX2FyZ21hcF9Db21waWxlID0gewotCQknRXh0ZXJuYWxFZGl0b3InIDogJ0VycnMnLAotCX0KLQotCWRlZiBDb21waWxlKHNlbGYsIF9vYmplY3QsIF9hdHRyaWJ1dGVzPXt9LCAqKl9hcmd1bWVudHMpOgotCQkiIiJDb21waWxlOiBDb21waWxlIHRoZSBzcGVjaWZpZWQgZmlsZShzKQotCQlSZXF1aXJlZCBhcmd1bWVudDogTGlzdCBvZiBmaWxlcyB0byBjb21waWxlCi0JCUtleXdvcmQgYXJndW1lbnQgRXh0ZXJuYWxFZGl0b3I6IFNob3VsZCB0aGUgY29udGVudHMgb2YgdGhlIG1lc3NhZ2Ugd2luZG93IGJlIHJldHVybmVkIHRvIHRoZSBjYWxsZXI/Ci0JCUtleXdvcmQgYXJndW1lbnQgX2F0dHJpYnV0ZXM6IEFwcGxlRXZlbnQgYXR0cmlidXRlIGRpY3Rpb25hcnkKLQkJUmV0dXJuczogRXJyb3JzIGZvciBlYWNoIGZpbGUgY29tcGlsZWQKLQkJIiIiCi0JCV9jb2RlID0gJ01NUFInCi0JCV9zdWJjb2RlID0gJ0NvbXAnCi0KLQkJYWV0b29scy5rZXlzdWJzdChfYXJndW1lbnRzLCBzZWxmLl9hcmdtYXBfQ29tcGlsZSkKLQkJX2FyZ3VtZW50c1snLS0tLSddID0gX29iamVjdAotCi0KLQkJX3JlcGx5LCBfYXJndW1lbnRzLCBfYXR0cmlidXRlcyA9IHNlbGYuc2VuZChfY29kZSwgX3N1YmNvZGUsCi0JCQkJX2FyZ3VtZW50cywgX2F0dHJpYnV0ZXMpCi0JCWlmIF9hcmd1bWVudHMuaGFzX2tleSgnZXJybicpOgotCQkJcmFpc2UgYWV0b29scy5FcnJvciwgYWV0b29scy5kZWNvZGVlcnJvcihfYXJndW1lbnRzKQotCQkjIFhYWFggT3B0aW9uYWxseSBkZWNvZGUgcmVzdWx0Ci0JCWlmIF9hcmd1bWVudHMuaGFzX2tleSgnLS0tLScpOgotCQkJcmV0dXJuIF9hcmd1bWVudHNbJy0tLS0nXQotCi0JX2FyZ21hcF9DcmVhdGVfUHJvamVjdCA9IHsKLQkJJ2Zyb21fc3RhdGlvbmVyeScgOiAnVG1wbCcsCi0JfQotCi0JZGVmIENyZWF0ZV9Qcm9qZWN0KHNlbGYsIF9vYmplY3QsIF9hdHRyaWJ1dGVzPXt9LCAqKl9hcmd1bWVudHMpOgotCQkiIiJDcmVhdGUgUHJvamVjdDogQ3JlYXRlIGEgbmV3IHByb2plY3QgZmlsZQotCQlSZXF1aXJlZCBhcmd1bWVudDogTmV3IHByb2plY3QgZmlsZSBzcGVjaWZpZXIKLQkJS2V5d29yZCBhcmd1bWVudCBmcm9tX3N0YXRpb25lcnk6IHVuZG9jdW1lbnRlZCwgdHlwZWNvZGUgJ2FsaXMnCi0JCUtleXdvcmQgYXJndW1lbnQgX2F0dHJpYnV0ZXM6IEFwcGxlRXZlbnQgYXR0cmlidXRlIGRpY3Rpb25hcnkKLQkJIiIiCi0JCV9jb2RlID0gJ01NUFInCi0JCV9zdWJjb2RlID0gJ05ld1AnCi0KLQkJYWV0b29scy5rZXlzdWJzdChfYXJndW1lbnRzLCBzZWxmLl9hcmdtYXBfQ3JlYXRlX1Byb2plY3QpCi0JCV9hcmd1bWVudHNbJy0tLS0nXSA9IF9vYmplY3QKLQotCi0JCV9yZXBseSwgX2FyZ3VtZW50cywgX2F0dHJpYnV0ZXMgPSBzZWxmLnNlbmQoX2NvZGUsIF9zdWJjb2RlLAotCQkJCV9hcmd1bWVudHMsIF9hdHRyaWJ1dGVzKQotCQlpZiBfYXJndW1lbnRzLmhhc19rZXkoJ2Vycm4nKToKLQkJCXJhaXNlIGFldG9vbHMuRXJyb3IsIGFldG9vbHMuZGVjb2RlZXJyb3IoX2FyZ3VtZW50cykKLQkJIyBYWFhYIE9wdGlvbmFsbHkgZGVjb2RlIHJlc3VsdAotCQlpZiBfYXJndW1lbnRzLmhhc19rZXkoJy0tLS0nKToKLQkJCXJldHVybiBfYXJndW1lbnRzWyctLS0tJ10KLQotCWRlZiBHZXRfRGVmaW5pdGlvbihzZWxmLCBfb2JqZWN0LCBfYXR0cmlidXRlcz17fSwgKipfYXJndW1lbnRzKToKLQkJIiIiR2V0IERlZmluaXRpb246IFJldHVybnMgdGhlIGxvY2F0aW9uKHMpIG9mIGEgZ2xvYmFsbHkgc2NvcGVkIGZ1bmN0aW9uIG9yIGRhdGEgb2JqZWN0LgotCQlSZXF1aXJlZCBhcmd1bWVudDogdW5kb2N1bWVudGVkLCB0eXBlY29kZSAnVEVYVCcKLQkJS2V5d29yZCBhcmd1bWVudCBfYXR0cmlidXRlczogQXBwbGVFdmVudCBhdHRyaWJ1dGUgZGljdGlvbmFyeQotCQlSZXR1cm5zOiB1bmRvY3VtZW50ZWQsIHR5cGVjb2RlICdGRGVmJwotCQkiIiIKLQkJX2NvZGUgPSAnTU1QUicKLQkJX3N1YmNvZGUgPSAnR0RlZicKLQotCQlpZiBfYXJndW1lbnRzOiByYWlzZSBUeXBlRXJyb3IsICdObyBvcHRpb25hbCBhcmdzIGV4cGVjdGVkJwotCQlfYXJndW1lbnRzWyctLS0tJ10gPSBfb2JqZWN0Ci0KLQotCQlfcmVwbHksIF9hcmd1bWVudHMsIF9hdHRyaWJ1dGVzID0gc2VsZi5zZW5kKF9jb2RlLCBfc3ViY29kZSwKLQkJCQlfYXJndW1lbnRzLCBfYXR0cmlidXRlcykKLQkJaWYgX2FyZ3VtZW50cy5oYXNfa2V5KCdlcnJuJyk6Ci0JCQlyYWlzZSBhZXRvb2xzLkVycm9yLCBhZXRvb2xzLmRlY29kZWVycm9yKF9hcmd1bWVudHMpCi0JCSMgWFhYWCBPcHRpb25hbGx5IGRlY29kZSByZXN1bHQKLQkJaWYgX2FyZ3VtZW50cy5oYXNfa2V5KCctLS0tJyk6Ci0JCQlyZXR1cm4gX2FyZ3VtZW50c1snLS0tLSddCi0KLQlkZWYgR2V0X09wZW5fRG9jdW1lbnRzKHNlbGYsIF9ub19vYmplY3Q9Tm9uZSwgX2F0dHJpYnV0ZXM9e30sICoqX2FyZ3VtZW50cyk6Ci0JCSIiIkdldCBPcGVuIERvY3VtZW50czogUmV0dXJucyB0aGUgbGlzdCBvZiBvcGVuIGRvY3VtZW50cwotCQlLZXl3b3JkIGFyZ3VtZW50IF9hdHRyaWJ1dGVzOiBBcHBsZUV2ZW50IGF0dHJpYnV0ZSBkaWN0aW9uYXJ5Ci0JCVJldHVybnM6IFRoZSBsaXN0IG9mIGRvY3VtZW50cwotCQkiIiIKLQkJX2NvZGUgPSAnTU1QUicKLQkJX3N1YmNvZGUgPSAnR0RvYycKLQotCQlpZiBfYXJndW1lbnRzOiByYWlzZSBUeXBlRXJyb3IsICdObyBvcHRpb25hbCBhcmdzIGV4cGVjdGVkJwotCQlpZiBfbm9fb2JqZWN0ICE9IE5vbmU6IHJhaXNlIFR5cGVFcnJvciwgJ05vIGRpcmVjdCBhcmcgZXhwZWN0ZWQnCi0KLQotCQlfcmVwbHksIF9hcmd1bWVudHMsIF9hdHRyaWJ1dGVzID0gc2VsZi5zZW5kKF9jb2RlLCBfc3ViY29kZSwKLQkJCQlfYXJndW1lbnRzLCBfYXR0cmlidXRlcykKLQkJaWYgX2FyZ3VtZW50cy5oYXNfa2V5KCdlcnJuJyk6Ci0JCQlyYWlzZSBhZXRvb2xzLkVycm9yLCBhZXRvb2xzLmRlY29kZWVycm9yKF9hcmd1bWVudHMpCi0JCSMgWFhYWCBPcHRpb25hbGx5IGRlY29kZSByZXN1bHQKLQkJaWYgX2FyZ3VtZW50cy5oYXNfa2V5KCctLS0tJyk6Ci0JCQlyZXR1cm4gX2FyZ3VtZW50c1snLS0tLSddCi0KLQlfYXJnbWFwX0dldF9QcmVmZXJlbmNlcyA9IHsKLQkJJ29mJyA6ICdQUmVjJywKLQkJJ2Zyb21fcGFuZWwnIDogJ1BOYW0nLAotCX0KLQotCWRlZiBHZXRfUHJlZmVyZW5jZXMoc2VsZiwgX25vX29iamVjdD1Ob25lLCBfYXR0cmlidXRlcz17fSwgKipfYXJndW1lbnRzKToKLQkJIiIiR2V0IFByZWZlcmVuY2VzOiBHZXQgdGhlIHByZWZlcmVuY2VzIGZvciB0aGUgY3VycmVudCBwcm9qZWN0Ci0JCUtleXdvcmQgYXJndW1lbnQgb2Y6IE5hbWVzIG9mIHJlcXVlc3RlZCBwcmVmZXJlbmNlcwotCQlLZXl3b3JkIGFyZ3VtZW50IGZyb21fcGFuZWw6IE5hbWUgb2YgdGhlIHByZWZlcmVuY2UgcGFuZWwKLQkJS2V5d29yZCBhcmd1bWVudCBfYXR0cmlidXRlczogQXBwbGVFdmVudCBhdHRyaWJ1dGUgZGljdGlvbmFyeQotCQlSZXR1cm5zOiBUaGUgcmVxdWVzdGVkIHByZWZlcmVuY2VzCi0JCSIiIgotCQlfY29kZSA9ICdNTVBSJwotCQlfc3ViY29kZSA9ICdHcmVmJwotCi0JCWFldG9vbHMua2V5c3Vic3QoX2FyZ3VtZW50cywgc2VsZi5fYXJnbWFwX0dldF9QcmVmZXJlbmNlcykKLQkJaWYgX25vX29iamVjdCAhPSBOb25lOiByYWlzZSBUeXBlRXJyb3IsICdObyBkaXJlY3QgYXJnIGV4cGVjdGVkJwotCi0KLQkJX3JlcGx5LCBfYXJndW1lbnRzLCBfYXR0cmlidXRlcyA9IHNlbGYuc2VuZChfY29kZSwgX3N1YmNvZGUsCi0JCQkJX2FyZ3VtZW50cywgX2F0dHJpYnV0ZXMpCi0JCWlmIF9hcmd1bWVudHMuaGFzX2tleSgnZXJybicpOgotCQkJcmFpc2UgYWV0b29scy5FcnJvciwgYWV0b29scy5kZWNvZGVlcnJvcihfYXJndW1lbnRzKQotCQkjIFhYWFggT3B0aW9uYWxseSBkZWNvZGUgcmVzdWx0Ci0JCWlmIF9hcmd1bWVudHMuaGFzX2tleSgnLS0tLScpOgotCQkJcmV0dXJuIF9hcmd1bWVudHNbJy0tLS0nXQotCi0JX2FyZ21hcF9HZXRfUHJvamVjdF9GaWxlID0gewotCQknU2VnbWVudCcgOiAnU2VnbScsCi0JfQotCi0JZGVmIEdldF9Qcm9qZWN0X0ZpbGUoc2VsZiwgX29iamVjdCwgX2F0dHJpYnV0ZXM9e30sICoqX2FyZ3VtZW50cyk6Ci0JCSIiIkdldCBQcm9qZWN0IEZpbGU6IFJldHVybnMgYSBkZXNjcmlwdGlvbiBvZiBhIGZpbGUgaW4gdGhlIHByb2plY3Qgd2luZG93LgotCQlSZXF1aXJlZCBhcmd1bWVudDogVGhlIGluZGV4IG9mIHRoZSBmaWxlIHdpdGhpbiBpdHMgc2VnbWVudC4KLQkJS2V5d29yZCBhcmd1bWVudCBTZWdtZW50OiBUaGUgc2VnbWVudCBjb250YWluaW5nIHRoZSBmaWxlLgotCQlLZXl3b3JkIGFyZ3VtZW50IF9hdHRyaWJ1dGVzOiBBcHBsZUV2ZW50IGF0dHJpYnV0ZSBkaWN0aW9uYXJ5Ci0JCVJldHVybnM6IHVuZG9jdW1lbnRlZCwgdHlwZWNvZGUgJ1NyY0YnCi0JCSIiIgotCQlfY29kZSA9ICdNTVBSJwotCQlfc3ViY29kZSA9ICdHRmlsJwotCi0JCWFldG9vbHMua2V5c3Vic3QoX2FyZ3VtZW50cywgc2VsZi5fYXJnbWFwX0dldF9Qcm9qZWN0X0ZpbGUpCi0JCV9hcmd1bWVudHNbJy0tLS0nXSA9IF9vYmplY3QKLQotCi0JCV9yZXBseSwgX2FyZ3VtZW50cywgX2F0dHJpYnV0ZXMgPSBzZWxmLnNlbmQoX2NvZGUsIF9zdWJjb2RlLAotCQkJCV9hcmd1bWVudHMsIF9hdHRyaWJ1dGVzKQotCQlpZiBfYXJndW1lbnRzLmhhc19rZXkoJ2Vycm4nKToKLQkJCXJhaXNlIGFldG9vbHMuRXJyb3IsIGFldG9vbHMuZGVjb2RlZXJyb3IoX2FyZ3VtZW50cykKLQkJIyBYWFhYIE9wdGlvbmFsbHkgZGVjb2RlIHJlc3VsdAotCQlpZiBfYXJndW1lbnRzLmhhc19rZXkoJy0tLS0nKToKLQkJCXJldHVybiBfYXJndW1lbnRzWyctLS0tJ10KLQotCWRlZiBHZXRfUHJvamVjdF9TcGVjaWZpZXIoc2VsZiwgX25vX29iamVjdD1Ob25lLCBfYXR0cmlidXRlcz17fSwgKipfYXJndW1lbnRzKToKLQkJIiIiR2V0IFByb2plY3QgU3BlY2lmaWVyOiBSZXR1cm4gdGhlIEZpbGUgU3BlY2lmaWVyIGZvciB0aGUgY3VycmVudCBwcm9qZWN0Ci0JCUtleXdvcmQgYXJndW1lbnQgX2F0dHJpYnV0ZXM6IEFwcGxlRXZlbnQgYXR0cmlidXRlIGRpY3Rpb25hcnkKLQkJUmV0dXJuczogRmlsZSBTcGVjaWZpZXIgZm9yIHRoZSBjdXJyZW50IHByb2plY3QKLQkJIiIiCi0JCV9jb2RlID0gJ01NUFInCi0JCV9zdWJjb2RlID0gJ0dldFAnCi0KLQkJaWYgX2FyZ3VtZW50czogcmFpc2UgVHlwZUVycm9yLCAnTm8gb3B0aW9uYWwgYXJncyBleHBlY3RlZCcKLQkJaWYgX25vX29iamVjdCAhPSBOb25lOiByYWlzZSBUeXBlRXJyb3IsICdObyBkaXJlY3QgYXJnIGV4cGVjdGVkJwotCi0KLQkJX3JlcGx5LCBfYXJndW1lbnRzLCBfYXR0cmlidXRlcyA9IHNlbGYuc2VuZChfY29kZSwgX3N1YmNvZGUsCi0JCQkJX2FyZ3VtZW50cywgX2F0dHJpYnV0ZXMpCi0JCWlmIF9hcmd1bWVudHMuaGFzX2tleSgnZXJybicpOgotCQkJcmFpc2UgYWV0b29scy5FcnJvciwgYWV0b29scy5kZWNvZGVlcnJvcihfYXJndW1lbnRzKQotCQkjIFhYWFggT3B0aW9uYWxseSBkZWNvZGUgcmVzdWx0Ci0JCWlmIF9hcmd1bWVudHMuaGFzX2tleSgnLS0tLScpOgotCQkJcmV0dXJuIF9hcmd1bWVudHNbJy0tLS0nXQotCi0JZGVmIEdldF9TZWdtZW50cyhzZWxmLCBfbm9fb2JqZWN0PU5vbmUsIF9hdHRyaWJ1dGVzPXt9LCAqKl9hcmd1bWVudHMpOgotCQkiIiJHZXQgU2VnbWVudHM6IFJldHVybnMgYSBkZXNjcmlwdGlvbiBvZiBlYWNoIHNlZ21lbnQgaW4gdGhlIHByb2plY3QuCi0JCUtleXdvcmQgYXJndW1lbnQgX2F0dHJpYnV0ZXM6IEFwcGxlRXZlbnQgYXR0cmlidXRlIGRpY3Rpb25hcnkKLQkJUmV0dXJuczogdW5kb2N1bWVudGVkLCB0eXBlY29kZSAnU2VnICcKLQkJIiIiCi0JCV9jb2RlID0gJ01NUFInCi0JCV9zdWJjb2RlID0gJ0dTZWcnCi0KLQkJaWYgX2FyZ3VtZW50czogcmFpc2UgVHlwZUVycm9yLCAnTm8gb3B0aW9uYWwgYXJncyBleHBlY3RlZCcKLQkJaWYgX25vX29iamVjdCAhPSBOb25lOiByYWlzZSBUeXBlRXJyb3IsICdObyBkaXJlY3QgYXJnIGV4cGVjdGVkJwotCi0KLQkJX3JlcGx5LCBfYXJndW1lbnRzLCBfYXR0cmlidXRlcyA9IHNlbGYuc2VuZChfY29kZSwgX3N1YmNvZGUsCi0JCQkJX2FyZ3VtZW50cywgX2F0dHJpYnV0ZXMpCi0JCWlmIF9hcmd1bWVudHMuaGFzX2tleSgnZXJybicpOgotCQkJcmFpc2UgYWV0b29scy5FcnJvciwgYWV0b29scy5kZWNvZGVlcnJvcihfYXJndW1lbnRzKQotCQkjIFhYWFggT3B0aW9uYWxseSBkZWNvZGUgcmVzdWx0Ci0JCWlmIF9hcmd1bWVudHMuaGFzX2tleSgnLS0tLScpOgotCQkJcmV0dXJuIF9hcmd1bWVudHNbJy0tLS0nXQotCi0JZGVmIEdvdG9fRnVuY3Rpb24oc2VsZiwgX29iamVjdCwgX2F0dHJpYnV0ZXM9e30sICoqX2FyZ3VtZW50cyk6Ci0JCSIiIkdvdG8gRnVuY3Rpb246IEdvdG8gU3BlY2lmaWVkIEZ1bmN0aW9uIE5hbWUKLQkJUmVxdWlyZWQgYXJndW1lbnQ6IHVuZG9jdW1lbnRlZCwgdHlwZWNvZGUgJ1RFWFQnCi0JCUtleXdvcmQgYXJndW1lbnQgX2F0dHJpYnV0ZXM6IEFwcGxlRXZlbnQgYXR0cmlidXRlIGRpY3Rpb25hcnkKLQkJIiIiCi0JCV9jb2RlID0gJ01NUFInCi0JCV9zdWJjb2RlID0gJ0dvRm4nCi0KLQkJaWYgX2FyZ3VtZW50czogcmFpc2UgVHlwZUVycm9yLCAnTm8gb3B0aW9uYWwgYXJncyBleHBlY3RlZCcKLQkJX2FyZ3VtZW50c1snLS0tLSddID0gX29iamVjdAotCi0KLQkJX3JlcGx5LCBfYXJndW1lbnRzLCBfYXR0cmlidXRlcyA9IHNlbGYuc2VuZChfY29kZSwgX3N1YmNvZGUsCi0JCQkJX2FyZ3VtZW50cywgX2F0dHJpYnV0ZXMpCi0JCWlmIF9hcmd1bWVudHMuaGFzX2tleSgnZXJybicpOgotCQkJcmFpc2UgYWV0b29scy5FcnJvciwgYWV0b29scy5kZWNvZGVlcnJvcihfYXJndW1lbnRzKQotCQkjIFhYWFggT3B0aW9uYWxseSBkZWNvZGUgcmVzdWx0Ci0JCWlmIF9hcmd1bWVudHMuaGFzX2tleSgnLS0tLScpOgotCQkJcmV0dXJuIF9hcmd1bWVudHNbJy0tLS0nXQotCi0JZGVmIEdvdG9fTGluZShzZWxmLCBfb2JqZWN0LCBfYXR0cmlidXRlcz17fSwgKipfYXJndW1lbnRzKToKLQkJIiIiR290byBMaW5lOiBHb3RvIFNwZWNpZmllZCBMaW5lIE51bWJlcgotCQlSZXF1aXJlZCBhcmd1bWVudDogVGhlIHJlcXVlc3RlZCBzb3VyY2UgZmlsZSBsaW5lIG51bWJlcgotCQlLZXl3b3JkIGFyZ3VtZW50IF9hdHRyaWJ1dGVzOiBBcHBsZUV2ZW50IGF0dHJpYnV0ZSBkaWN0aW9uYXJ5Ci0JCSIiIgotCQlfY29kZSA9ICdNTVBSJwotCQlfc3ViY29kZSA9ICdHb0xuJwotCi0JCWlmIF9hcmd1bWVudHM6IHJhaXNlIFR5cGVFcnJvciwgJ05vIG9wdGlvbmFsIGFyZ3MgZXhwZWN0ZWQnCi0JCV9hcmd1bWVudHNbJy0tLS0nXSA9IF9vYmplY3QKLQotCi0JCV9yZXBseSwgX2FyZ3VtZW50cywgX2F0dHJpYnV0ZXMgPSBzZWxmLnNlbmQoX2NvZGUsIF9zdWJjb2RlLAotCQkJCV9hcmd1bWVudHMsIF9hdHRyaWJ1dGVzKQotCQlpZiBfYXJndW1lbnRzLmhhc19rZXkoJ2Vycm4nKToKLQkJCXJhaXNlIGFldG9vbHMuRXJyb3IsIGFldG9vbHMuZGVjb2RlZXJyb3IoX2FyZ3VtZW50cykKLQkJIyBYWFhYIE9wdGlvbmFsbHkgZGVjb2RlIHJlc3VsdAotCQlpZiBfYXJndW1lbnRzLmhhc19rZXkoJy0tLS0nKToKLQkJCXJldHVybiBfYXJndW1lbnRzWyctLS0tJ10KLQotCWRlZiBJc19Jbl9Qcm9qZWN0KHNlbGYsIF9vYmplY3QsIF9hdHRyaWJ1dGVzPXt9LCAqKl9hcmd1bWVudHMpOgotCQkiIiJJcyBJbiBQcm9qZWN0OiBXaGV0aGVyIG9yIG5vdCB0aGUgc3BlY2lmaWVkIGZpbGUocykgaXMgaW4gdGhlIGN1cnJlbnQgcHJvamVjdAotCQlSZXF1aXJlZCBhcmd1bWVudDogTGlzdCBvZiBmaWxlcyB0byBjaGVjayBmb3IgcHJvamVjdCBtZW1iZXJzaGlwCi0JCUtleXdvcmQgYXJndW1lbnQgX2F0dHJpYnV0ZXM6IEFwcGxlRXZlbnQgYXR0cmlidXRlIGRpY3Rpb25hcnkKLQkJUmV0dXJuczogUmVzdWx0IGNvZGUgZm9yIGVhY2ggZmlsZQotCQkiIiIKLQkJX2NvZGUgPSAnTU1QUicKLQkJX3N1YmNvZGUgPSAnRkluUCcKLQotCQlpZiBfYXJndW1lbnRzOiByYWlzZSBUeXBlRXJyb3IsICdObyBvcHRpb25hbCBhcmdzIGV4cGVjdGVkJwotCQlfYXJndW1lbnRzWyctLS0tJ10gPSBfb2JqZWN0Ci0KLQotCQlfcmVwbHksIF9hcmd1bWVudHMsIF9hdHRyaWJ1dGVzID0gc2VsZi5zZW5kKF9jb2RlLCBfc3ViY29kZSwKLQkJCQlfYXJndW1lbnRzLCBfYXR0cmlidXRlcykKLQkJaWYgX2FyZ3VtZW50cy5oYXNfa2V5KCdlcnJuJyk6Ci0JCQlyYWlzZSBhZXRvb2xzLkVycm9yLCBhZXRvb2xzLmRlY29kZWVycm9yKF9hcmd1bWVudHMpCi0JCSMgWFhYWCBPcHRpb25hbGx5IGRlY29kZSByZXN1bHQKLQkJaWYgX2FyZ3VtZW50cy5oYXNfa2V5KCctLS0tJyk6Ci0JCQlyZXR1cm4gX2FyZ3VtZW50c1snLS0tLSddCi0KLQlfYXJnbWFwX01ha2VfUHJvamVjdCA9IHsKLQkJJ0V4dGVybmFsRWRpdG9yJyA6ICdFcnJzJywKLQl9Ci0KLQlkZWYgTWFrZV9Qcm9qZWN0KHNlbGYsIF9ub19vYmplY3Q9Tm9uZSwgX2F0dHJpYnV0ZXM9e30sICoqX2FyZ3VtZW50cyk6Ci0JCSIiIk1ha2UgUHJvamVjdDogTWFrZSB0aGUgY3VycmVudCBwcm9qZWN0Ci0JCUtleXdvcmQgYXJndW1lbnQgRXh0ZXJuYWxFZGl0b3I6IFNob3VsZCB0aGUgY29udGVudHMgb2YgdGhlIG1lc3NhZ2Ugd2luZG93IGJlIHJldHVybmVkIHRvIHRoZSBjYWxsZXI/Ci0JCUtleXdvcmQgYXJndW1lbnQgX2F0dHJpYnV0ZXM6IEFwcGxlRXZlbnQgYXR0cmlidXRlIGRpY3Rpb25hcnkKLQkJUmV0dXJuczogRXJyb3JzIHRoYXQgb2NjdXJyZWQgd2hpbGUgbWFraW5nIHRoZSBwcm9qZWN0Ci0JCSIiIgotCQlfY29kZSA9ICdNTVBSJwotCQlfc3ViY29kZSA9ICdNYWtlJwotCi0JCWFldG9vbHMua2V5c3Vic3QoX2FyZ3VtZW50cywgc2VsZi5fYXJnbWFwX01ha2VfUHJvamVjdCkKLQkJaWYgX25vX29iamVjdCAhPSBOb25lOiByYWlzZSBUeXBlRXJyb3IsICdObyBkaXJlY3QgYXJnIGV4cGVjdGVkJwotCi0KLQkJX3JlcGx5LCBfYXJndW1lbnRzLCBfYXR0cmlidXRlcyA9IHNlbGYuc2VuZChfY29kZSwgX3N1YmNvZGUsCi0JCQkJX2FyZ3VtZW50cywgX2F0dHJpYnV0ZXMpCi0JCWlmIF9hcmd1bWVudHMuaGFzX2tleSgnZXJybicpOgotCQkJcmFpc2UgYWV0b29scy5FcnJvciwgYWV0b29scy5kZWNvZGVlcnJvcihfYXJndW1lbnRzKQotCQkjIFhYWFggT3B0aW9uYWxseSBkZWNvZGUgcmVzdWx0Ci0JCWlmIF9hcmd1bWVudHMuaGFzX2tleSgnLS0tLScpOgotCQkJcmV0dXJuIF9hcmd1bWVudHNbJy0tLS0nXQotCi0JX2FyZ21hcF9QcmVjb21waWxlID0gewotCQknU2F2aW5nX0FzJyA6ICdUYXJnJywKLQkJJ0V4dGVybmFsRWRpdG9yJyA6ICdFcnJzJywKLQl9Ci0KLQlkZWYgUHJlY29tcGlsZShzZWxmLCBfb2JqZWN0LCBfYXR0cmlidXRlcz17fSwgKipfYXJndW1lbnRzKToKLQkJIiIiUHJlY29tcGlsZTogUHJlY29tcGlsZSB0aGUgc3BlY2lmaWVkIGZpbGUgdG8gdGhlIHNwZWNpZmllZCBkZXN0aW5hdGlvbiBmaWxlCi0JCVJlcXVpcmVkIGFyZ3VtZW50OiBGaWxlIHRvIHByZWNvbXBpbGUKLQkJS2V5d29yZCBhcmd1bWVudCBTYXZpbmdfQXM6IERlc3RpbmF0aW9uIGZpbGUgZm9yIHByZWNvbXBpbGVkIGhlYWRlcgotCQlLZXl3b3JkIGFyZ3VtZW50IEV4dGVybmFsRWRpdG9yOiBTaG91bGQgdGhlIGNvbnRlbnRzIG9mIHRoZSBtZXNzYWdlIHdpbmRvdyBiZSByZXR1cm5lZCB0byB0aGUgY2FsbGVyPwotCQlLZXl3b3JkIGFyZ3VtZW50IF9hdHRyaWJ1dGVzOiBBcHBsZUV2ZW50IGF0dHJpYnV0ZSBkaWN0aW9uYXJ5Ci0JCVJldHVybnM6IEVycm9ycyBmb3IgdGhlIHByZWNvbXBpbGVkIGZpbGUKLQkJIiIiCi0JCV9jb2RlID0gJ01NUFInCi0JCV9zdWJjb2RlID0gJ1ByZUMnCi0KLQkJYWV0b29scy5rZXlzdWJzdChfYXJndW1lbnRzLCBzZWxmLl9hcmdtYXBfUHJlY29tcGlsZSkKLQkJX2FyZ3VtZW50c1snLS0tLSddID0gX29iamVjdAotCi0KLQkJX3JlcGx5LCBfYXJndW1lbnRzLCBfYXR0cmlidXRlcyA9IHNlbGYuc2VuZChfY29kZSwgX3N1YmNvZGUsCi0JCQkJX2FyZ3VtZW50cywgX2F0dHJpYnV0ZXMpCi0JCWlmIF9hcmd1bWVudHMuaGFzX2tleSgnZXJybicpOgotCQkJcmFpc2UgYWV0b29scy5FcnJvciwgYWV0b29scy5kZWNvZGVlcnJvcihfYXJndW1lbnRzKQotCQkjIFhYWFggT3B0aW9uYWxseSBkZWNvZGUgcmVzdWx0Ci0JCWlmIF9hcmd1bWVudHMuaGFzX2tleSgnLS0tLScpOgotCQkJcmV0dXJuIF9hcmd1bWVudHNbJy0tLS0nXQotCi0JX2FyZ21hcF9QcmVwcm9jZXNzID0gewotCQknRXh0ZXJuYWxFZGl0b3InIDogJ0VycnMnLAotCX0KLQotCWRlZiBQcmVwcm9jZXNzKHNlbGYsIF9vYmplY3QsIF9hdHRyaWJ1dGVzPXt9LCAqKl9hcmd1bWVudHMpOgotCQkiIiJQcmVwcm9jZXNzOiBQcmVwcm9jZXNzZXMgdGhlIHNwZWNpZmllZCBmaWxlKHMpCi0JCVJlcXVpcmVkIGFyZ3VtZW50OiB1bmRvY3VtZW50ZWQsIHR5cGVjb2RlICdhbGlzJwotCQlLZXl3b3JkIGFyZ3VtZW50IEV4dGVybmFsRWRpdG9yOiB1bmRvY3VtZW50ZWQsIHR5cGVjb2RlICdib29sJwotCQlLZXl3b3JkIGFyZ3VtZW50IF9hdHRyaWJ1dGVzOiBBcHBsZUV2ZW50IGF0dHJpYnV0ZSBkaWN0aW9uYXJ5Ci0JCVJldHVybnM6IEVycm9ycyBmb3IgZWFjaCBwcmVwcm9jZXNzZWQgZmlsZQotCQkiIiIKLQkJX2NvZGUgPSAnTU1QUicKLQkJX3N1YmNvZGUgPSAnUHJlUCcKLQotCQlhZXRvb2xzLmtleXN1YnN0KF9hcmd1bWVudHMsIHNlbGYuX2FyZ21hcF9QcmVwcm9jZXNzKQotCQlfYXJndW1lbnRzWyctLS0tJ10gPSBfb2JqZWN0Ci0KLQotCQlfcmVwbHksIF9hcmd1bWVudHMsIF9hdHRyaWJ1dGVzID0gc2VsZi5zZW5kKF9jb2RlLCBfc3ViY29kZSwKLQkJCQlfYXJndW1lbnRzLCBfYXR0cmlidXRlcykKLQkJaWYgX2FyZ3VtZW50cy5oYXNfa2V5KCdlcnJuJyk6Ci0JCQlyYWlzZSBhZXRvb2xzLkVycm9yLCBhZXRvb2xzLmRlY29kZWVycm9yKF9hcmd1bWVudHMpCi0JCSMgWFhYWCBPcHRpb25hbGx5IGRlY29kZSByZXN1bHQKLQkJaWYgX2FyZ3VtZW50cy5oYXNfa2V5KCctLS0tJyk6Ci0JCQlyZXR1cm4gX2FyZ3VtZW50c1snLS0tLSddCi0KLQlkZWYgUmVtb3ZlX0JpbmFyaWVzKHNlbGYsIF9ub19vYmplY3Q9Tm9uZSwgX2F0dHJpYnV0ZXM9e30sICoqX2FyZ3VtZW50cyk6Ci0JCSIiIlJlbW92ZSBCaW5hcmllczogUmVtb3ZlIHRoZSBiaW5hcnkgb2JqZWN0IGNvZGUgZnJvbSB0aGUgY3VycmVudCBwcm9qZWN0Ci0JCUtleXdvcmQgYXJndW1lbnQgX2F0dHJpYnV0ZXM6IEFwcGxlRXZlbnQgYXR0cmlidXRlIGRpY3Rpb25hcnkKLQkJIiIiCi0JCV9jb2RlID0gJ01NUFInCi0JCV9zdWJjb2RlID0gJ1JlbUInCi0KLQkJaWYgX2FyZ3VtZW50czogcmFpc2UgVHlwZUVycm9yLCAnTm8gb3B0aW9uYWwgYXJncyBleHBlY3RlZCcKLQkJaWYgX25vX29iamVjdCAhPSBOb25lOiByYWlzZSBUeXBlRXJyb3IsICdObyBkaXJlY3QgYXJnIGV4cGVjdGVkJwotCi0KLQkJX3JlcGx5LCBfYXJndW1lbnRzLCBfYXR0cmlidXRlcyA9IHNlbGYuc2VuZChfY29kZSwgX3N1YmNvZGUsCi0JCQkJX2FyZ3VtZW50cywgX2F0dHJpYnV0ZXMpCi0JCWlmIF9hcmd1bWVudHMuaGFzX2tleSgnZXJybicpOgotCQkJcmFpc2UgYWV0b29scy5FcnJvciwgYWV0b29scy5kZWNvZGVlcnJvcihfYXJndW1lbnRzKQotCQkjIFhYWFggT3B0aW9uYWxseSBkZWNvZGUgcmVzdWx0Ci0JCWlmIF9hcmd1bWVudHMuaGFzX2tleSgnLS0tLScpOgotCQkJcmV0dXJuIF9hcmd1bWVudHNbJy0tLS0nXQotCi0JZGVmIFJlbW92ZV9GaWxlcyhzZWxmLCBfb2JqZWN0LCBfYXR0cmlidXRlcz17fSwgKipfYXJndW1lbnRzKToKLQkJIiIiUmVtb3ZlIEZpbGVzOiBSZW1vdmUgdGhlIHNwZWNpZmllZCBmaWxlKHMpIGZyb20gdGhlIGN1cnJlbnQgcHJvamVjdAotCQlSZXF1aXJlZCBhcmd1bWVudDogTGlzdCBvZiBmaWxlcyB0byByZW1vdmUKLQkJS2V5d29yZCBhcmd1bWVudCBfYXR0cmlidXRlczogQXBwbGVFdmVudCBhdHRyaWJ1dGUgZGljdGlvbmFyeQotCQlSZXR1cm5zOiBFcnJvciBjb2RlIGZvciBlYWNoIGZpbGUgcmVtb3ZlZAotCQkiIiIKLQkJX2NvZGUgPSAnTU1QUicKLQkJX3N1YmNvZGUgPSAnUmVtRicKLQotCQlpZiBfYXJndW1lbnRzOiByYWlzZSBUeXBlRXJyb3IsICdObyBvcHRpb25hbCBhcmdzIGV4cGVjdGVkJwotCQlfYXJndW1lbnRzWyctLS0tJ10gPSBfb2JqZWN0Ci0KLQotCQlfcmVwbHksIF9hcmd1bWVudHMsIF9hdHRyaWJ1dGVzID0gc2VsZi5zZW5kKF9jb2RlLCBfc3ViY29kZSwKLQkJCQlfYXJndW1lbnRzLCBfYXR0cmlidXRlcykKLQkJaWYgX2FyZ3VtZW50cy5oYXNfa2V5KCdlcnJuJyk6Ci0JCQlyYWlzZSBhZXRvb2xzLkVycm9yLCBhZXRvb2xzLmRlY29kZWVycm9yKF9hcmd1bWVudHMpCi0JCSMgWFhYWCBPcHRpb25hbGx5IGRlY29kZSByZXN1bHQKLQkJaWYgX2FyZ3VtZW50cy5oYXNfa2V5KCctLS0tJyk6Ci0JCQlyZXR1cm4gX2FyZ3VtZW50c1snLS0tLSddCi0KLQlkZWYgUmVzZXRfRmlsZV9QYXRocyhzZWxmLCBfbm9fb2JqZWN0PU5vbmUsIF9hdHRyaWJ1dGVzPXt9LCAqKl9hcmd1bWVudHMpOgotCQkiIiJSZXNldCBGaWxlIFBhdGhzOiBSZXNldHMgYWNjZXNzIHBhdGhzIGZvciBhbGwgZmlsZXMgYmVsb25naW5nIHRvIG9wZW4gcHJvamVjdC4KLQkJS2V5d29yZCBhcmd1bWVudCBfYXR0cmlidXRlczogQXBwbGVFdmVudCBhdHRyaWJ1dGUgZGljdGlvbmFyeQotCQkiIiIKLQkJX2NvZGUgPSAnTU1QUicKLQkJX3N1YmNvZGUgPSAnUmVGUCcKLQotCQlpZiBfYXJndW1lbnRzOiByYWlzZSBUeXBlRXJyb3IsICdObyBvcHRpb25hbCBhcmdzIGV4cGVjdGVkJwotCQlpZiBfbm9fb2JqZWN0ICE9IE5vbmU6IHJhaXNlIFR5cGVFcnJvciwgJ05vIGRpcmVjdCBhcmcgZXhwZWN0ZWQnCi0KLQotCQlfcmVwbHksIF9hcmd1bWVudHMsIF9hdHRyaWJ1dGVzID0gc2VsZi5zZW5kKF9jb2RlLCBfc3ViY29kZSwKLQkJCQlfYXJndW1lbnRzLCBfYXR0cmlidXRlcykKLQkJaWYgX2FyZ3VtZW50cy5oYXNfa2V5KCdlcnJuJyk6Ci0JCQlyYWlzZSBhZXRvb2xzLkVycm9yLCBhZXRvb2xzLmRlY29kZWVycm9yKF9hcmd1bWVudHMpCi0JCSMgWFhYWCBPcHRpb25hbGx5IGRlY29kZSByZXN1bHQKLQkJaWYgX2FyZ3VtZW50cy5oYXNfa2V5KCctLS0tJyk6Ci0JCQlyZXR1cm4gX2FyZ3VtZW50c1snLS0tLSddCi0KLQlfYXJnbWFwX1J1bl9Qcm9qZWN0ID0gewotCQknRXh0ZXJuYWxFZGl0b3InIDogJ0VycnMnLAotCQknU291cmNlRGVidWdnZXInIDogJ0RlQmcnLAotCX0KLQotCWRlZiBSdW5fUHJvamVjdChzZWxmLCBfbm9fb2JqZWN0PU5vbmUsIF9hdHRyaWJ1dGVzPXt9LCAqKl9hcmd1bWVudHMpOgotCQkiIiJSdW4gUHJvamVjdDogUnVuIHRoZSBjdXJyZW50IHByb2plY3QKLQkJS2V5d29yZCBhcmd1bWVudCBFeHRlcm5hbEVkaXRvcjogU2hvdWxkIHRoZSBjb250ZW50cyBvZiB0aGUgbWVzc2FnZSB3aW5kb3cgYmUgcmV0dXJuZWQgdG8gdGhlIGNhbGxlcj8KLQkJS2V5d29yZCBhcmd1bWVudCBTb3VyY2VEZWJ1Z2dlcjogUnVuIHRoZSBhcHBsaWNhdGlvbiB1bmRlciB0aGUgY29udHJvbCBvZiB0aGUgc291cmNlLWxldmVsIGRlYnVnZ2VyCi0JCUtleXdvcmQgYXJndW1lbnQgX2F0dHJpYnV0ZXM6IEFwcGxlRXZlbnQgYXR0cmlidXRlIGRpY3Rpb25hcnkKLQkJUmV0dXJuczogRXJyb3JzIHRoYXQgb2NjdXJyZWQgd2hlbiBydW5uaW5nIHRoZSBwcm9qZWN0Ci0JCSIiIgotCQlfY29kZSA9ICdNTVBSJwotCQlfc3ViY29kZSA9ICdSdW5QJwotCi0JCWFldG9vbHMua2V5c3Vic3QoX2FyZ3VtZW50cywgc2VsZi5fYXJnbWFwX1J1bl9Qcm9qZWN0KQotCQlpZiBfbm9fb2JqZWN0ICE9IE5vbmU6IHJhaXNlIFR5cGVFcnJvciwgJ05vIGRpcmVjdCBhcmcgZXhwZWN0ZWQnCi0KLQotCQlfcmVwbHksIF9hcmd1bWVudHMsIF9hdHRyaWJ1dGVzID0gc2VsZi5zZW5kKF9jb2RlLCBfc3ViY29kZSwKLQkJCQlfYXJndW1lbnRzLCBfYXR0cmlidXRlcykKLQkJaWYgX2FyZ3VtZW50cy5oYXNfa2V5KCdlcnJuJyk6Ci0JCQlyYWlzZSBhZXRvb2xzLkVycm9yLCBhZXRvb2xzLmRlY29kZWVycm9yKF9hcmd1bWVudHMpCi0JCSMgWFhYWCBPcHRpb25hbGx5IGRlY29kZSByZXN1bHQKLQkJaWYgX2FyZ3VtZW50cy5oYXNfa2V5KCctLS0tJyk6Ci0JCQlyZXR1cm4gX2FyZ3VtZW50c1snLS0tLSddCi0KLQlkZWYgU2F2ZV9FcnJvcl9XaW5kb3dfQXMoc2VsZiwgX29iamVjdCwgX2F0dHJpYnV0ZXM9e30sICoqX2FyZ3VtZW50cyk6Ci0JCSIiIlNhdmUgRXJyb3IgV2luZG93IEFzOiBTYXZlcyB0aGUgRXJyb3JzICYgV2FybmluZ3Mgd2luZG93IGFzIGEgdGV4dCBmaWxlCi0JCVJlcXVpcmVkIGFyZ3VtZW50OiBEZXN0aW5hdGlvbiBmaWxlIGZvciBTYXZlIE1lc3NhZ2UgV2luZG93IEFzCi0JCUtleXdvcmQgYXJndW1lbnQgX2F0dHJpYnV0ZXM6IEFwcGxlRXZlbnQgYXR0cmlidXRlIGRpY3Rpb25hcnkKLQkJIiIiCi0JCV9jb2RlID0gJ01NUFInCi0JCV9zdWJjb2RlID0gJ1N2TXMnCi0KLQkJaWYgX2FyZ3VtZW50czogcmFpc2UgVHlwZUVycm9yLCAnTm8gb3B0aW9uYWwgYXJncyBleHBlY3RlZCcKLQkJX2FyZ3VtZW50c1snLS0tLSddID0gX29iamVjdAotCi0KLQkJX3JlcGx5LCBfYXJndW1lbnRzLCBfYXR0cmlidXRlcyA9IHNlbGYuc2VuZChfY29kZSwgX3N1YmNvZGUsCi0JCQkJX2FyZ3VtZW50cywgX2F0dHJpYnV0ZXMpCi0JCWlmIF9hcmd1bWVudHMuaGFzX2tleSgnZXJybicpOgotCQkJcmFpc2UgYWV0b29scy5FcnJvciwgYWV0b29scy5kZWNvZGVlcnJvcihfYXJndW1lbnRzKQotCQkjIFhYWFggT3B0aW9uYWxseSBkZWNvZGUgcmVzdWx0Ci0JCWlmIF9hcmd1bWVudHMuaGFzX2tleSgnLS0tLScpOgotCQkJcmV0dXJuIF9hcmd1bWVudHNbJy0tLS0nXQotCi0JX2FyZ21hcF9TZXRfTW9kaWZpY2F0aW9uX0RhdGUgPSB7Ci0JCSd0bycgOiAnTURhdCcsCi0JfQotCi0JZGVmIFNldF9Nb2RpZmljYXRpb25fRGF0ZShzZWxmLCBfb2JqZWN0LCBfYXR0cmlidXRlcz17fSwgKipfYXJndW1lbnRzKToKLQkJIiIiU2V0IE1vZGlmaWNhdGlvbiBEYXRlOiBDaGFuZ2VzIHRoZSBpbnRlcm5hbCBtb2RpZmljYXRpb24gZGF0ZSBvZiB0aGUgc3BlY2lmaWVkIGZpbGUocykKLQkJUmVxdWlyZWQgYXJndW1lbnQ6IExpc3Qgb2YgZmlsZXMKLQkJS2V5d29yZCBhcmd1bWVudCB0bzogdW5kb2N1bWVudGVkLCB0eXBlY29kZSAnbGR0ICcKLQkJS2V5d29yZCBhcmd1bWVudCBfYXR0cmlidXRlczogQXBwbGVFdmVudCBhdHRyaWJ1dGUgZGljdGlvbmFyeQotCQlSZXR1cm5zOiBFcnJvciBjb2RlIGZvciBlYWNoIG1vZGlmaWVkIGZpbGUKLQkJIiIiCi0JCV9jb2RlID0gJ01NUFInCi0JCV9zdWJjb2RlID0gJ1NNb2QnCi0KLQkJYWV0b29scy5rZXlzdWJzdChfYXJndW1lbnRzLCBzZWxmLl9hcmdtYXBfU2V0X01vZGlmaWNhdGlvbl9EYXRlKQotCQlfYXJndW1lbnRzWyctLS0tJ10gPSBfb2JqZWN0Ci0KLQotCQlfcmVwbHksIF9hcmd1bWVudHMsIF9hdHRyaWJ1dGVzID0gc2VsZi5zZW5kKF9jb2RlLCBfc3ViY29kZSwKLQkJCQlfYXJndW1lbnRzLCBfYXR0cmlidXRlcykKLQkJaWYgX2FyZ3VtZW50cy5oYXNfa2V5KCdlcnJuJyk6Ci0JCQlyYWlzZSBhZXRvb2xzLkVycm9yLCBhZXRvb2xzLmRlY29kZWVycm9yKF9hcmd1bWVudHMpCi0JCSMgWFhYWCBPcHRpb25hbGx5IGRlY29kZSByZXN1bHQKLQkJaWYgX2FyZ3VtZW50cy5oYXNfa2V5KCctLS0tJyk6Ci0JCQlyZXR1cm4gX2FyZ3VtZW50c1snLS0tLSddCi0KLQlfYXJnbWFwX1NldF9QcmVmZXJlbmNlcyA9IHsKLQkJJ29mX3BhbmVsJyA6ICdQTmFtJywKLQkJJ3RvJyA6ICdQUmVjJywKLQl9Ci0KLQlkZWYgU2V0X1ByZWZlcmVuY2VzKHNlbGYsIF9ub19vYmplY3Q9Tm9uZSwgX2F0dHJpYnV0ZXM9e30sICoqX2FyZ3VtZW50cyk6Ci0JCSIiIlNldCBQcmVmZXJlbmNlczogU2V0IHRoZSBwcmVmZXJlbmNlcyBmb3IgdGhlIGN1cnJlbnQgcHJvamVjdAotCQlLZXl3b3JkIGFyZ3VtZW50IG9mX3BhbmVsOiBOYW1lIG9mIHRoZSBwcmVmZXJlbmNlIHBhbmVsCi0JCUtleXdvcmQgYXJndW1lbnQgdG86IFByZWZlcmVuY2VzIHNldHRpbmdzCi0JCUtleXdvcmQgYXJndW1lbnQgX2F0dHJpYnV0ZXM6IEFwcGxlRXZlbnQgYXR0cmlidXRlIGRpY3Rpb25hcnkKLQkJIiIiCi0JCV9jb2RlID0gJ01NUFInCi0JCV9zdWJjb2RlID0gJ1ByZWYnCi0KLQkJYWV0b29scy5rZXlzdWJzdChfYXJndW1lbnRzLCBzZWxmLl9hcmdtYXBfU2V0X1ByZWZlcmVuY2VzKQotCQlpZiBfbm9fb2JqZWN0ICE9IE5vbmU6IHJhaXNlIFR5cGVFcnJvciwgJ05vIGRpcmVjdCBhcmcgZXhwZWN0ZWQnCi0KLQotCQlfcmVwbHksIF9hcmd1bWVudHMsIF9hdHRyaWJ1dGVzID0gc2VsZi5zZW5kKF9jb2RlLCBfc3ViY29kZSwKLQkJCQlfYXJndW1lbnRzLCBfYXR0cmlidXRlcykKLQkJaWYgX2FyZ3VtZW50cy5oYXNfa2V5KCdlcnJuJyk6Ci0JCQlyYWlzZSBhZXRvb2xzLkVycm9yLCBhZXRvb2xzLmRlY29kZWVycm9yKF9hcmd1bWVudHMpCi0JCSMgWFhYWCBPcHRpb25hbGx5IGRlY29kZSByZXN1bHQKLQkJaWYgX2FyZ3VtZW50cy5oYXNfa2V5KCctLS0tJyk6Ci0JCQlyZXR1cm4gX2FyZ3VtZW50c1snLS0tLSddCi0KLQlfYXJnbWFwX1NldF9Qcm9qZWN0X0ZpbGUgPSB7Ci0JCSd0bycgOiAnU3JjUycsCi0JfQotCi0JZGVmIFNldF9Qcm9qZWN0X0ZpbGUoc2VsZiwgX29iamVjdCwgX2F0dHJpYnV0ZXM9e30sICoqX2FyZ3VtZW50cyk6Ci0JCSIiIlNldCBQcm9qZWN0IEZpbGU6IENoYW5nZXMgdGhlIHNldHRpbmdzIGZvciBhIGdpdmVuIGZpbGUgaW4gdGhlIHByb2plY3QuCi0JCVJlcXVpcmVkIGFyZ3VtZW50OiBUaGUgbmFtZSBvZiB0aGUgZmlsZQotCQlLZXl3b3JkIGFyZ3VtZW50IHRvOiBUaGUgbmV3IHNldHRpbmdzIGZvciB0aGUgZmlsZQotCQlLZXl3b3JkIGFyZ3VtZW50IF9hdHRyaWJ1dGVzOiBBcHBsZUV2ZW50IGF0dHJpYnV0ZSBkaWN0aW9uYXJ5Ci0JCSIiIgotCQlfY29kZSA9ICdNTVBSJwotCQlfc3ViY29kZSA9ICdTRmlsJwotCi0JCWFldG9vbHMua2V5c3Vic3QoX2FyZ3VtZW50cywgc2VsZi5fYXJnbWFwX1NldF9Qcm9qZWN0X0ZpbGUpCi0JCV9hcmd1bWVudHNbJy0tLS0nXSA9IF9vYmplY3QKLQotCi0JCV9yZXBseSwgX2FyZ3VtZW50cywgX2F0dHJpYnV0ZXMgPSBzZWxmLnNlbmQoX2NvZGUsIF9zdWJjb2RlLAotCQkJCV9hcmd1bWVudHMsIF9hdHRyaWJ1dGVzKQotCQlpZiBfYXJndW1lbnRzLmhhc19rZXkoJ2Vycm4nKToKLQkJCXJhaXNlIGFldG9vbHMuRXJyb3IsIGFldG9vbHMuZGVjb2RlZXJyb3IoX2FyZ3VtZW50cykKLQkJIyBYWFhYIE9wdGlvbmFsbHkgZGVjb2RlIHJlc3VsdAotCQlpZiBfYXJndW1lbnRzLmhhc19rZXkoJy0tLS0nKToKLQkJCXJldHVybiBfYXJndW1lbnRzWyctLS0tJ10KLQotCV9hcmdtYXBfU2V0X1NlZ21lbnQgPSB7Ci0JCSd0bycgOiAnU2VnbScsCi0JfQotCi0JZGVmIFNldF9TZWdtZW50KHNlbGYsIF9vYmplY3QsIF9hdHRyaWJ1dGVzPXt9LCAqKl9hcmd1bWVudHMpOgotCQkiIiJTZXQgU2VnbWVudDogQ2hhbmdlcyB0aGUgbmFtZSBhbmQgYXR0cmlidXRlcyBvZiBhIHNlZ21lbnQuCi0JCVJlcXVpcmVkIGFyZ3VtZW50OiBUaGUgc2VnbWVudCB0byBjaGFuZ2UKLQkJS2V5d29yZCBhcmd1bWVudCB0bzogVGhlIG5ldyBuYW1lIGFuZCBhdHRyaWJ1dGVzIGZvciB0aGUgc2VnbWVudC4KLQkJS2V5d29yZCBhcmd1bWVudCBfYXR0cmlidXRlczogQXBwbGVFdmVudCBhdHRyaWJ1dGUgZGljdGlvbmFyeQotCQkiIiIKLQkJX2NvZGUgPSAnTU1QUicKLQkJX3N1YmNvZGUgPSAnU1NlZycKLQotCQlhZXRvb2xzLmtleXN1YnN0KF9hcmd1bWVudHMsIHNlbGYuX2FyZ21hcF9TZXRfU2VnbWVudCkKLQkJX2FyZ3VtZW50c1snLS0tLSddID0gX29iamVjdAotCi0KLQkJX3JlcGx5LCBfYXJndW1lbnRzLCBfYXR0cmlidXRlcyA9IHNlbGYuc2VuZChfY29kZSwgX3N1YmNvZGUsCi0JCQkJX2FyZ3VtZW50cywgX2F0dHJpYnV0ZXMpCi0JCWlmIF9hcmd1bWVudHMuaGFzX2tleSgnZXJybicpOgotCQkJcmFpc2UgYWV0b29scy5FcnJvciwgYWV0b29scy5kZWNvZGVlcnJvcihfYXJndW1lbnRzKQotCQkjIFhYWFggT3B0aW9uYWxseSBkZWNvZGUgcmVzdWx0Ci0JCWlmIF9hcmd1bWVudHMuaGFzX2tleSgnLS0tLScpOgotCQkJcmV0dXJuIF9hcmd1bWVudHNbJy0tLS0nXQotCi0JZGVmIFRvdWNoKHNlbGYsIF9vYmplY3QsIF9hdHRyaWJ1dGVzPXt9LCAqKl9hcmd1bWVudHMpOgotCQkiIiJUb3VjaDogRm9yY2UgcmVjb21waWxhdGlvbiBvZiB0aGUgc3BlY2lmaWVkIGZpbGUocykKLQkJUmVxdWlyZWQgYXJndW1lbnQ6IExpc3Qgb2YgZmlsZXMgdG8gY29tcGlsZQotCQlLZXl3b3JkIGFyZ3VtZW50IF9hdHRyaWJ1dGVzOiBBcHBsZUV2ZW50IGF0dHJpYnV0ZSBkaWN0aW9uYXJ5Ci0JCVJldHVybnM6IEVycm9yIGNvZGUgZm9yIGVhY2ggZmlsZSB0b3VjaGVkCi0JCSIiIgotCQlfY29kZSA9ICdNTVBSJwotCQlfc3ViY29kZSA9ICdUb2NoJwotCi0JCWlmIF9hcmd1bWVudHM6IHJhaXNlIFR5cGVFcnJvciwgJ05vIG9wdGlvbmFsIGFyZ3MgZXhwZWN0ZWQnCi0JCV9hcmd1bWVudHNbJy0tLS0nXSA9IF9vYmplY3QKLQotCi0JCV9yZXBseSwgX2FyZ3VtZW50cywgX2F0dHJpYnV0ZXMgPSBzZWxmLnNlbmQoX2NvZGUsIF9zdWJjb2RlLAotCQkJCV9hcmd1bWVudHMsIF9hdHRyaWJ1dGVzKQotCQlpZiBfYXJndW1lbnRzLmhhc19rZXkoJ2Vycm4nKToKLQkJCXJhaXNlIGFldG9vbHMuRXJyb3IsIGFldG9vbHMuZGVjb2RlZXJyb3IoX2FyZ3VtZW50cykKLQkJIyBYWFhYIE9wdGlvbmFsbHkgZGVjb2RlIHJlc3VsdAotCQlpZiBfYXJndW1lbnRzLmhhc19rZXkoJy0tLS0nKToKLQkJCXJldHVybiBfYXJndW1lbnRzWyctLS0tJ10KLQotCV9hcmdtYXBfVXBkYXRlX1Byb2plY3QgPSB7Ci0JCSdFeHRlcm5hbEVkaXRvcicgOiAnRXJycycsCi0JfQotCi0JZGVmIFVwZGF0ZV9Qcm9qZWN0KHNlbGYsIF9ub19vYmplY3Q9Tm9uZSwgX2F0dHJpYnV0ZXM9e30sICoqX2FyZ3VtZW50cyk6Ci0JCSIiIlVwZGF0ZSBQcm9qZWN0OiBVcGRhdGUgdGhlIGN1cnJlbnQgcHJvamVjdAotCQlLZXl3b3JkIGFyZ3VtZW50IEV4dGVybmFsRWRpdG9yOiBTaG91bGQgdGhlIGNvbnRlbnRzIG9mIHRoZSBtZXNzYWdlIHdpbmRvdyBiZSByZXR1cm5lZCB0byB0aGUgY2FsbGVyPwotCQlLZXl3b3JkIGFyZ3VtZW50IF9hdHRyaWJ1dGVzOiBBcHBsZUV2ZW50IGF0dHJpYnV0ZSBkaWN0aW9uYXJ5Ci0JCVJldHVybnM6IEVycm9ycyB0aGF0IG9jY3VycmVkIHdoaWxlIHVwZGF0aW5nIHRoZSBwcm9qZWN0Ci0JCSIiIgotCQlfY29kZSA9ICdNTVBSJwotCQlfc3ViY29kZSA9ICdVcGRQJwotCi0JCWFldG9vbHMua2V5c3Vic3QoX2FyZ3VtZW50cywgc2VsZi5fYXJnbWFwX1VwZGF0ZV9Qcm9qZWN0KQotCQlpZiBfbm9fb2JqZWN0ICE9IE5vbmU6IHJhaXNlIFR5cGVFcnJvciwgJ05vIGRpcmVjdCBhcmcgZXhwZWN0ZWQnCi0KLQotCQlfcmVwbHksIF9hcmd1bWVudHMsIF9hdHRyaWJ1dGVzID0gc2VsZi5zZW5kKF9jb2RlLCBfc3ViY29kZSwKLQkJCQlfYXJndW1lbnRzLCBfYXR0cmlidXRlcykKLQkJaWYgX2FyZ3VtZW50cy5oYXNfa2V5KCdlcnJuJyk6Ci0JCQlyYWlzZSBhZXRvb2xzLkVycm9yLCBhZXRvb2xzLmRlY29kZWVycm9yKF9hcmd1bWVudHMpCi0JCSMgWFhYWCBPcHRpb25hbGx5IGRlY29kZSByZXN1bHQKLQkJaWYgX2FyZ3VtZW50cy5oYXNfa2V5KCctLS0tJyk6Ci0JCQlyZXR1cm4gX2FyZ3VtZW50c1snLS0tLSddCi0KLQlkZWYgT3Blbl9icm93c2VyKHNlbGYsIF9vYmplY3QsIF9hdHRyaWJ1dGVzPXt9LCAqKl9hcmd1bWVudHMpOgotCQkiIiJPcGVuIGJyb3dzZXI6IERpc3BsYXkgYSBjbGFzcywgbWVtYmVyIGZ1bmN0aW9uLCBvciBkYXRhIG1lbWJlciBvYmplY3QgaW4gYSBzaW5nbGUgY2xhc3MgYnJvd3NlciB3aW5kb3cKLQkJUmVxdWlyZWQgYXJndW1lbnQ6IGFuIEFFIG9iamVjdCByZWZlcmVuY2UKLQkJS2V5d29yZCBhcmd1bWVudCBfYXR0cmlidXRlczogQXBwbGVFdmVudCBhdHRyaWJ1dGUgZGljdGlvbmFyeQotCQkiIiIKLQkJX2NvZGUgPSAnTU1QUicKLQkJX3N1YmNvZGUgPSAnQnJvdycKLQotCQlpZiBfYXJndW1lbnRzOiByYWlzZSBUeXBlRXJyb3IsICdObyBvcHRpb25hbCBhcmdzIGV4cGVjdGVkJwotCQlfYXJndW1lbnRzWyctLS0tJ10gPSBfb2JqZWN0Ci0KLQotCQlfcmVwbHksIF9hcmd1bWVudHMsIF9hdHRyaWJ1dGVzID0gc2VsZi5zZW5kKF9jb2RlLCBfc3ViY29kZSwKLQkJCQlfYXJndW1lbnRzLCBfYXR0cmlidXRlcykKLQkJaWYgX2FyZ3VtZW50cy5oYXNfa2V5KCdlcnJuJyk6Ci0JCQlyYWlzZSBhZXRvb2xzLkVycm9yLCBhZXRvb2xzLmRlY29kZWVycm9yKF9hcmd1bWVudHMpCi0JCSMgWFhYWCBPcHRpb25hbGx5IGRlY29kZSByZXN1bHQKLQkJaWYgX2FyZ3VtZW50cy5oYXNfa2V5KCctLS0tJyk6Ci0JCQlyZXR1cm4gX2FyZ3VtZW50c1snLS0tLSddCi0KLQlkZWYgR2V0X25vbnNpbXBsZV9jbGFzc2VzKHNlbGYsIF9ub19vYmplY3Q9Tm9uZSwgX2F0dHJpYnV0ZXM9e30sICoqX2FyZ3VtZW50cyk6Ci0JCSIiIkdldCBub25zaW1wbGUgY2xhc3NlczogUmV0dXJucyBhbiBhbHBoYWJldGljYWwgbGlzdCBvZiBjbGFzc2VzIHdpdGggbWVtYmVyIGZ1bmN0aW9ucywgYmFzZXMgY2xhc3Nlcywgb3Igc3ViY2xhc3NlcwotCQlLZXl3b3JkIGFyZ3VtZW50IF9hdHRyaWJ1dGVzOiBBcHBsZUV2ZW50IGF0dHJpYnV0ZSBkaWN0aW9uYXJ5Ci0JCVJldHVybnM6IHVuZG9jdW1lbnRlZCwgdHlwZWNvZGUgJ2xpc3QnCi0JCSIiIgotCQlfY29kZSA9ICdNTVBSJwotCQlfc3ViY29kZSA9ICdOc0NsJwotCi0JCWlmIF9hcmd1bWVudHM6IHJhaXNlIFR5cGVFcnJvciwgJ05vIG9wdGlvbmFsIGFyZ3MgZXhwZWN0ZWQnCi0JCWlmIF9ub19vYmplY3QgIT0gTm9uZTogcmFpc2UgVHlwZUVycm9yLCAnTm8gZGlyZWN0IGFyZyBleHBlY3RlZCcKLQotCi0JCV9yZXBseSwgX2FyZ3VtZW50cywgX2F0dHJpYnV0ZXMgPSBzZWxmLnNlbmQoX2NvZGUsIF9zdWJjb2RlLAotCQkJCV9hcmd1bWVudHMsIF9hdHRyaWJ1dGVzKQotCQlpZiBfYXJndW1lbnRzLmhhc19rZXkoJ2Vycm4nKToKLQkJCXJhaXNlIGFldG9vbHMuRXJyb3IsIGFldG9vbHMuZGVjb2RlZXJyb3IoX2FyZ3VtZW50cykKLQkJIyBYWFhYIE9wdGlvbmFsbHkgZGVjb2RlIHJlc3VsdAotCQlpZiBfYXJndW1lbnRzLmhhc19rZXkoJy0tLS0nKToKLQkJCXJldHVybiBfYXJndW1lbnRzWyctLS0tJ10KLQotCWRlZiBHZXRfbWVtYmVyX2Z1bmN0aW9uX25hbWVzKHNlbGYsIF9vYmplY3QsIF9hdHRyaWJ1dGVzPXt9LCAqKl9hcmd1bWVudHMpOgotCQkiIiJHZXQgbWVtYmVyIGZ1bmN0aW9uIG5hbWVzOiBSZXR1cm5zIGEgbGlzdCBjb250YWluaW5nIHRoZSBuYW1lcyBvZiBhbGwgdGhlIG1lbWJlciBmdW5jdGlvbnMgb2YgYSBjbGFzcyBvYmplY3QKLQkJUmVxdWlyZWQgYXJndW1lbnQ6IG11c3QgYmUgYSBjbGFzcyBvYmplY3QKLQkJS2V5d29yZCBhcmd1bWVudCBfYXR0cmlidXRlczogQXBwbGVFdmVudCBhdHRyaWJ1dGUgZGljdGlvbmFyeQotCQlSZXR1cm5zOiB1bmRvY3VtZW50ZWQsIHR5cGVjb2RlICdsaXN0JwotCQkiIiIKLQkJX2NvZGUgPSAnTU1QUicKLQkJX3N1YmNvZGUgPSAnTWJGTicKLQotCQlpZiBfYXJndW1lbnRzOiByYWlzZSBUeXBlRXJyb3IsICdObyBvcHRpb25hbCBhcmdzIGV4cGVjdGVkJwotCQlfYXJndW1lbnRzWyctLS0tJ10gPSBfb2JqZWN0Ci0KLQotCQlfcmVwbHksIF9hcmd1bWVudHMsIF9hdHRyaWJ1dGVzID0gc2VsZi5zZW5kKF9jb2RlLCBfc3ViY29kZSwKLQkJCQlfYXJndW1lbnRzLCBfYXR0cmlidXRlcykKLQkJaWYgX2FyZ3VtZW50cy5oYXNfa2V5KCdlcnJuJyk6Ci0JCQlyYWlzZSBhZXRvb2xzLkVycm9yLCBhZXRvb2xzLmRlY29kZWVycm9yKF9hcmd1bWVudHMpCi0JCSMgWFhYWCBPcHRpb25hbGx5IGRlY29kZSByZXN1bHQKLQkJaWYgX2FyZ3VtZW50cy5oYXNfa2V5KCctLS0tJyk6Ci0JCQlyZXR1cm4gX2FyZ3VtZW50c1snLS0tLSddCi0KLQotIyAgICBDbGFzcyAnQWNjZXNzIFBhdGhzJyAoJ1BBVEgnKSAtLSAnQ29udGFpbnMgdGhlIGRlZmluaXRpb25zIG9mIGEgcHJvamVjdFwzMjVzIGFjY2VzcyAoc2VhcmNoKSBwYXRocy4nCi0jICAgICAgICBwcm9wZXJ0eSAnVXNlciBQYXRocycgKCdQQTAxJykgJ1BJbmYnIC0tICdUbyBhZGQgYW4gYWNjZXNzIHBhdGggZm9yIHRoZSBzb3VyY2UgZmlsZXMuJyBbbXV0YWJsZSBsaXN0XQotIyAgICAgICAgcHJvcGVydHkgJ1N5c3RlbSBQYXRocycgKCdQQTAzJykgJ1BJbmYnIC0tICdUbyBhZGQgYW4gYWNjZXNzIHBhdGggZm9yIHRoZSBpbmNsdWRlIGZpbGVzLiAoTm90IHN1cHBvcnRlZCBpbiBQYXNjYWwpJyBbbXV0YWJsZSBsaXN0XQotIyAgICAgICAgcHJvcGVydHkgJ0Fsd2F5cyBGdWxsIFNlYXJjaCcgKCdQQTAyJykgJ2Jvb2wnIC0tICdUbyBmb3JjZSB0aGUgY29tcGlsZXIgdG8gc2VhcmNoIGZvciBzeXN0ZW0gaW5jbHVkZXMgbGlrZSBpdCBzZWFyY2hlcyBmb3IgdXNlciBpbmNsdWRlcy4nIFttdXRhYmxlXQotCi0jICAgIENsYXNzICdFZGl0b3InICgnRURUUicpIC0tICcnCi0jICAgICAgICBwcm9wZXJ0eSAnRmxhc2ggZGVsYXknICgnRUQwMScpICdsb25nJyAtLSAnVGhlIGFtb3VudCBvZiB0aW1lLCBpbiBzaXh0aWV0aHMgb2YgYSBzZWNvbmQsIHRoZSBlZGl0b3IgaGlnaGxpZ2h0cyBhIG1hdGNoaW5nIGJyYWNrZXQuJyBbbXV0YWJsZV0KLSMgICAgICAgIHByb3BlcnR5ICdEeW5hbWljIHNjcm9sbCcgKCdFRDAyJykgJ2Jvb2wnIC0tICdEaXNwbGF5IGEgd2luZG93XDMyNXMgY29udGVudHMgYXMgeW91IG1vdmUgdGhlIHNjcm9sbCBib3guJyBbbXV0YWJsZV0KLSMgICAgICAgIHByb3BlcnR5ICdCYWxhbmNlJyAoJ0VEMDMnKSAnYm9vbCcgLS0gJ0ZsYXNoIHRoZSBtYXRjaGluZyBvcGVuaW5nIGJyYWNrZXQgd2hlbiB5b3UgdHlwZSBhIGNsb3NpbmcgYnJhY2tldC4nIFttdXRhYmxlXQotIyAgICAgICAgcHJvcGVydHkgJ1VzZSBEcmFnICYgRHJvcCBFZGl0aW5nJyAoJ0VEMDQnKSAnYm9vbCcgLS0gJ1VzZSBEcmFnICYgRHJvcCB0ZXh0IGVkaXRpbmcuJyBbbXV0YWJsZV0KLSMgICAgICAgIHByb3BlcnR5ICdTYXZlIG9uIHVwZGF0ZScgKCdFRDA1JykgJ2Jvb2wnIC0tICdTYXZlIGFsbCBlZGl0b3Igd2luZG93cyBhdXRvbWF0aWNhbGx5IHdoZW4geW91IGNob29zZSB0aGUgVXBkYXRlIGNvbW1hbmQuJyBbbXV0YWJsZV0KLSMgICAgICAgIHByb3BlcnR5ICdTb3J0IEZ1bmN0aW9uIFBvcHVwJyAoJ0VEMDYnKSAnYm9vbCcgLS0gJycgW211dGFibGVdCi0jICAgICAgICBwcm9wZXJ0eSAnVXNlIE11bHRpcGxlIFVuZG8nICgnRUQwNycpICdib29sJyAtLSAnJyBbbXV0YWJsZV0KLSMgICAgICAgIHByb3BlcnR5ICdSZW1lbWJlciBmb250JyAoJ0VEMDgnKSAnYm9vbCcgLS0gJ0Rpc3BsYXkgYSBzb3VyY2UgZmlsZSB3aXRoIGl0cyBvd24gZm9udCBzZXR0aW5ncy4nIFttdXRhYmxlXQotIyAgICAgICAgcHJvcGVydHkgJ1JlbWVtYmVyIHNlbGVjdGlvbicgKCdFRDA5JykgJ2Jvb2wnIC0tICdSZXN0b3JlIHRoZSBwcmV2aW91cyBzZWxlY3Rpb24gaW4gYSBmaWxlIHdoZW4geW91IG9wZW4gaXQuJyBbbXV0YWJsZV0KLSMgICAgICAgIHByb3BlcnR5ICdSZW1lbWJlciB3aW5kb3cnICgnRUQxMCcpICdib29sJyAtLSAnUmVzdG9yZSB0aGUgbGFzdCBzaXplIGFuZCBwb3NpdGlvbiBmb3IgYSBzb3VyY2UgZmlsZSB3aW5kb3cgd2hlbiB5b3Ugb3BlbiBpdC4nIFttdXRhYmxlXQotIyAgICAgICAgcHJvcGVydHkgJ01haW4gVGV4dCBDb2xvcicgKCdFRDEyJykgJ2NSR0InIC0tICdNYWluLCBkZWZhdWx0LCBjb2xvciBmb3IgdGV4dC4nIFttdXRhYmxlXQotIyAgICAgICAgcHJvcGVydHkgJ0JhY2tncm91bmQgQ29sb3InICgnRUQxMycpICdjUkdCJyAtLSAnQ29sb3Igb2YgdGhlIGJhY2tncm91bmQgb2YgZWRpdG9yIHdpbmRvd3MuJyBbbXV0YWJsZV0KLSMgICAgICAgIHByb3BlcnR5ICdDb250ZXh0IFBvcHVwIERlbGF5JyAoJ0VEMTQnKSAnYm9vbCcgLS0gJ1RoZSBhbW91bnQgb2YgdGltZSwgaW4gc2l4dGlldGhzIG9mIGEgc2Vjb25kLCBiZWZvcmUgdGhlIGNvbnRleHQgcG9wdXAgaXMgZGlzcGxheWVkIGlmIHlvdSBjbGljayBhbmQgaG9sZCBvbiBhIGJyb3dzZXIgc3ltYm9sLicgW211dGFibGVdCi0KLSMgICAgQ2xhc3MgJ1N5bnRheCBDb2xvcmluZycgKCdTTlRYJykgLS0gJycKLSMgICAgICAgIHByb3BlcnR5ICdTeW50YXggY29sb3JpbmcnICgnR0gwMScpICdib29sJyAtLSAnTWFyayBrZXl3b3JkcyBhbmQgY29tbWVudHMgd2l0aCBjb2xvci4nIFttdXRhYmxlXQotIyAgICAgICAgcHJvcGVydHkgJ0NvbW1lbnQgY29sb3InICgnR0gwMicpICdjUkdCJyAtLSAnVGhlIGNvbG9yIGZvciBjb21tZW50cy4nIFttdXRhYmxlXQotIyAgICAgICAgcHJvcGVydHkgJ0tleXdvcmQgY29sb3InICgnR0gwMycpICdjUkdCJyAtLSAnVGhlIGNvbG9yIGZvciBsYW5ndWFnZSBrZXl3b3Jkcy4nIFttdXRhYmxlXQotIyAgICAgICAgcHJvcGVydHkgJ1N0cmluZyBjb2xvcicgKCdHSDA0JykgJ2NSR0InIC0tICdUaGUgY29sb3IgZm9yIHN0cmluZ3MuJyBbbXV0YWJsZV0KLSMgICAgICAgIHByb3BlcnR5ICdDdXN0b20gY29sb3IgMScgKCdHSDA1JykgJ2NSR0InIC0tICdUaGUgY29sb3IgZm9yIHRoZSBmaXJzdCBzZXQgb2YgY3VzdG9tIGtleXdvcmRzLicgW211dGFibGVdCi0jICAgICAgICBwcm9wZXJ0eSAnQ3VzdG9tIGNvbG9yIDInICgnR0gwNicpICdjUkdCJyAtLSAnVGhlIGNvbG9yIGZvciB0aGUgc2Vjb25kIHNldCBjdXN0b20ga2V5d29yZHMuJyBbbXV0YWJsZV0KLSMgICAgICAgIHByb3BlcnR5ICdDdXN0b20gY29sb3IgMycgKCdHSDA3JykgJ2NSR0InIC0tICdUaGUgY29sb3IgZm9yIHRoZSB0aGlyZCBzZXQgb2YgY3VzdG9tIGtleXdvcmRzLicgW211dGFibGVdCi0jICAgICAgICBwcm9wZXJ0eSAnQ3VzdG9tIGNvbG9yIDQnICgnR0gwOCcpICdjUkdCJyAtLSAnVGhlIGNvbG9yIGZvciB0aGUgZm91cnRoIHNldCBvZiBjdXN0b20ga2V5d29yZHMuJyBbbXV0YWJsZV0KLQotIyAgICBDbGFzcyAnQ3VzdG9tIEtleXdvcmRzJyAoJ0NVS1cnKSAtLSAnJwotIyAgICAgICAgcHJvcGVydHkgJ0N1c3RvbSBjb2xvciAxJyAoJ0tXMDEnKSAnY1JHQicgLS0gJ1RoZSBjb2xvciBmb3IgdGhlIGZpcnN0IHNldCBvZiBjdXN0b20ga2V5d29yZHMuJyBbbXV0YWJsZV0KLSMgICAgICAgIHByb3BlcnR5ICdDdXN0b20gY29sb3IgMicgKCdLVzAyJykgJ2NSR0InIC0tICdUaGUgY29sb3IgZm9yIHRoZSBzZWNvbmQgc2V0IGN1c3RvbSBrZXl3b3Jkcy4nIFttdXRhYmxlXQotIyAgICAgICAgcHJvcGVydHkgJ0N1c3RvbSBjb2xvciAzJyAoJ0tXMDMnKSAnY1JHQicgLS0gJ1RoZSBjb2xvciBmb3IgdGhlIHRoaXJkIHNldCBvZiBjdXN0b20ga2V5d29yZHMuJyBbbXV0YWJsZV0KLSMgICAgICAgIHByb3BlcnR5ICdDdXN0b20gY29sb3IgNCcgKCdLVzA0JykgJ2NSR0InIC0tICdUaGUgY29sb3IgZm9yIHRoZSBmb3VydGggc2V0IG9mIGN1c3RvbSBrZXl3b3Jkcy4nIFttdXRhYmxlXQotCi0jICAgIENsYXNzICdCcm93c2VyIENvbG9yaW5nJyAoJ0JSS1cnKSAtLSAnQ29sb3JzIGZvciBCcm93c2VyIHN5bWJvbHMuJwotIyAgICAgICAgcHJvcGVydHkgJ0Jyb3dzZXIgS2V5d29yZHMnICgnQlcwMCcpICdib29sJyAtLSAnTWFyayBCcm93c2VyIHN5bWJvbHMgd2l0aCBjb2xvci4nIFttdXRhYmxlXQotIyAgICAgICAgcHJvcGVydHkgJ0NsYXNzZXMgQ29sb3InICgnQlcwMScpICdjUkdCJyAtLSAnVGhlIGNvbG9yIGZvciBjbGFzc2VzLicgW211dGFibGVdCi0jICAgICAgICBwcm9wZXJ0eSAnQ29uc3RhbnRzIENvbG9yJyAoJ0JXMDInKSAnY1JHQicgLS0gJ1RoZSBjb2xvciBmb3IgY29uc3RhbnRzLicgW211dGFibGVdCi0jICAgICAgICBwcm9wZXJ0eSAnRW51bXMgQ29sb3InICgnQlcwMycpICdjUkdCJyAtLSAnVGhlIGNvbG9yIGZvciBlbnVtcy4nIFttdXRhYmxlXQotIyAgICAgICAgcHJvcGVydHkgJ0Z1bmN0aW9ucyBDb2xvcicgKCdCVzA0JykgJ2NSR0InIC0tICdTZXQgY29sb3IgZm9yIGZ1bmN0aW9ucy4nIFttdXRhYmxlXQotIyAgICAgICAgcHJvcGVydHkgJ0dsb2JhbHMgQ29sb3InICgnQlcwNScpICdjUkdCJyAtLSAnVGhlIGNvbG9yIGZvciBnbG9iYWxzJyBbbXV0YWJsZV0KLSMgICAgICAgIHByb3BlcnR5ICdNYWNyb3MgQ29sb3InICgnQlcwNicpICdjUkdCJyAtLSAnVGhlIGNvbG9yIGZvciBtYWNyb3MuJyBbbXV0YWJsZV0KLSMgICAgICAgIHByb3BlcnR5ICdUZW1wbGF0ZXMgQ29sb3InICgnQlcwNycpICdjUkdCJyAtLSAnU2V0IGNvbG9yIGZvciB0ZW1wbGF0ZXMuJyBbbXV0YWJsZV0KLSMgICAgICAgIHByb3BlcnR5ICdUeXBlZGVmcyBDb2xvcicgKCdCVzA4JykgJ2NSR0InIC0tICdUaGUgY29sb3IgZm9yIHR5cGVkZWZzLicgW211dGFibGVdCi0KLSMgICAgQ2xhc3MgJ0Vycm9yIEluZm9ybWF0aW9uJyAoJ0Vyck0nKSAtLSAnRGVzY3JpYmVzIGEgc2luZ2xlIGVycm9yIG9yIHdhcm5pbmcgZnJvbSB0aGUgY29tcGlsZXIgb3IgdGhlIGxpbmtlci4nCi0jICAgICAgICBwcm9wZXJ0eSAna2luZCcgKCdFcnJUJykgJ0VyclQnIC0tICdUaGUgdHlwZSBvZiBlcnJvciBvciB3YXJuaW5nLicgW2VudW1dCi0jICAgICAgICBwcm9wZXJ0eSAnbWVzc2FnZScgKCdFcnJTJykgJ1RFWFQnIC0tICdUaGUgZXJyb3Igb3Igd2FybmluZyBtZXNzYWdlLicgW10KLSMgICAgICAgIHByb3BlcnR5ICdkaXNrIGZpbGUnICgnZmlsZScpICdmc3MgJyAtLSAnVGhlIGZpbGUgd2hlcmUgdGhlIGVycm9yIG9jY3VycmVkLiAgTWF5IG5vdCBiZSByZXR1cm5lZCBmb3IgY2VydGFpbiBraW5kcyBvZiBlcnJvcnMgKGVnLCBsaW5rIGVycm9ycykuJyBbXQotIyAgICAgICAgcHJvcGVydHkgJ2xpbmVOdW1iZXInICgnRXJyTCcpICdsb25nJyAtLSAnVGhlIGxpbmUgaW4gdGhlIGZpbGUgd2hlcmUgdGhlIGVycm9yIG9jY3VycmVkLiAgTWF5IG5vdCBiZSByZXR1cm5lZCBmb3IgY2VydGFpbiBraW5kcyBvZiBlcnJvcnMgKGVnLCBsaW5rIGVycm9ycykuJyBbXQotCi0jICAgIENsYXNzICdFeHRyYXMnICgnR1hUUicpIC0tICcnCi0jICAgICAgICBwcm9wZXJ0eSAnQ29tcGxldGlvbiBzb3VuZCcgKCdFWDAxJykgJ2Jvb2wnIC0tICdQbGF5IGEgc291bmQgd2hlbiBmaW5pc2hlZCBhIEJyaW5nIFVwIFRvIERhdGUgb3IgTWFrZSBjb21tYW5kLicgW211dGFibGVdCi0jICAgICAgICBwcm9wZXJ0eSAnU3VjY2VzcyBzb3VuZCcgKCdFWDAyJykgJ1RFWFQnIC0tICdUaGUgc291bmQgQ29kZVdhcnJpb3IgcGxheXMgd2hlbiBpdCBzdWNjZXNzZnVsbHkgZmluaXNoZXMgYSBCcmluZyBVcCBUbyBEYXRlIG9yIE1ha2UgY29tbWFuZC4nIFttdXRhYmxlXQotIyAgICAgICAgcHJvcGVydHkgJ0ZhaWx1cmUgc291bmQnICgnRVgwMycpICdURVhUJyAtLSAnVGhlIHNvdW5kIENvZGVXYXJyaW9yIHBsYXlzIHdoZW4gaXQgY2Fubm90IGZpbmlzaCBhIEJyaW5nIFVwIFRvIERhdGUgb3IgTWFrZSBjb21tYW5kLicgW211dGFibGVdCi0jICAgICAgICBwcm9wZXJ0eSAnRnVsbCBzY3JlZW4gem9vbScgKCdFWDA3JykgJ2Jvb2wnIC0tICdab29tIHdpbmRvd3MgdG8gdGhlIGZ1bGwgc2NyZWVuIHdpZHRoLicgW211dGFibGVdCi0jICAgICAgICBwcm9wZXJ0eSAnRXh0ZXJuYWwgcmVmZXJlbmNlJyAoJ0VYMDgnKSAnUmVmUCcgLS0gJ1doaWNoIG9uLWxpbmUgZnVuY3Rpb24gcmVmZXJlbmNlIHRvIHVzZS4nIFttdXRhYmxlIGVudW1dCi0jICAgICAgICBwcm9wZXJ0eSAnVXNlIFNjcmlwdCBNZW51JyAoJ0VYMTInKSAnYm9vbCcgLS0gJ0NvbnRyb2xzIHRoZSB1c2Ugb2YgdGhlIEFwcGxlU2NyaXB0IG1lbnUnIFttdXRhYmxlXQotIyAgICAgICAgcHJvcGVydHkgJ1VzZSBFZGl0b3IgRXh0ZW5zaW9ucycgKCdFWDEwJykgJ2Jvb2wnIC0tICdDb250cm9scyB0aGUgdXNlIG9mIHRoZSBFZGl0b3IgRXh0ZW5zaW9ucyBtZW51JyBbbXV0YWJsZV0KLSMgICAgICAgIHByb3BlcnR5ICdVc2UgRXh0ZXJuYWwgRWRpdG9yJyAoJ0VYMTEnKSAnYm9vbCcgLS0gJ0NvbnRyb2xzIHdoZXRoZXIgQ29kZVdhcnJpb3IgdXNlcyBpdHMgb3duIGludGVncmF0ZWQgZWRpdG9yIG9yIGFuIGV4dGVybmFsIGFwcGxpY2F0aW9uIGZvciBlZGl0aW5nIHRleHQgZmlsZXMuJyBbbXV0YWJsZV0KLSMgICAgICAgIHByb3BlcnR5ICdIb25vciBQcm9qZWN0b3IgU3RhdGUgZm9yIFByb2plY3RzJyAoJ0VYMTMnKSAnYm9vbCcgLS0gJ0NvbnRyb2xzIHdoZXRoZXIgQ29kZVdhcnJpb3Igb3BlbnMgZmlsZXMgc2V0IHRvIHJlYWQtb25seSBieSBQcm9qZWN0b3IuJyBbbXV0YWJsZV0KLQotIyAgICBDbGFzcyAnQnVpbGQgRXh0cmFzJyAoJ0xYVFInKSAtLSAnJwotIyAgICAgICAgcHJvcGVydHkgJ0Jyb3dzZXIgYWN0aXZlJyAoJ0VYMDknKSAnYm9vbCcgLS0gJ0FsbG93IHRoZSBjb2xsZWN0aW9uIG9mIGJyb3dzZXIgaW5mb3JtYXRpb24uJyBbbXV0YWJsZV0KLSMgICAgICAgIHByb3BlcnR5ICdNb2RpZmljYXRpb24gZGF0ZSBjYWNoaW5nJyAoJ0VYMDQnKSAnYm9vbCcgLS0gJycgW211dGFibGVdCi0jICAgICAgICBwcm9wZXJ0eSAnR2VuZXJhdGUgTWFwJyAoJ0VYMDUnKSAnYm9vbCcgLS0gJ0dlbmVyYXRlIGEgUGFzY2FsIE1ha2UgbWFwIGZpbGUuJyBbbXV0YWJsZV0KLSMgICAgICAgIHByb3BlcnR5ICdTdG9yZSBhbmFseXNpcyByZXN1bHRzJyAoJ0VYMDYnKSAnYm9vbCcgLS0gJycgW211dGFibGVdCi0KLSMgICAgQ2xhc3MgJ0ZvbnQnICgnbUZOVCcpIC0tICcnCi0jICAgICAgICBwcm9wZXJ0eSAnQXV0byBpbmRlbnQnICgnRk4wMScpICdib29sJyAtLSAnSW5kZW50IG5ldyBsaW5lcyBhdXRvbWF0aWNhbGx5LicgW211dGFibGVdCi0jICAgICAgICBwcm9wZXJ0eSAnVGFiIHNpemUnICgnRk4wMicpICdzaG9yJyAtLSAnJyBbbXV0YWJsZV0KLSMgICAgICAgIHByb3BlcnR5ICdUZXh0IGZvbnQnICgncHR4ZicpICdURVhUJyAtLSAnVGhlIGZvbnQgdXNlZCBpbiBlZGl0aW5nIHdpbmRvd3MuJyBbbXV0YWJsZV0KLSMgICAgICAgIHByb3BlcnR5ICdUZXh0IHNpemUnICgncHRwcycpICdzaG9yJyAtLSAnVGhlIHNpemUgb2YgdGhlIHRleHQgaW4gYW4gZWRpdGluZyB3aW5kb3cuJyBbbXV0YWJsZV0KLQotIyAgICBDbGFzcyAnRnVuY3Rpb24gSW5mb3JtYXRpb24nICgnRkRlZicpIC0tICdEZXNjcmliZXMgdGhlIGxvY2F0aW9uIG9mIGFueSBmdW5jdGlvbiBvciBnbG9iYWwgZGF0YSBkZWZpbml0aW9uIHdpdGhpbiB0aGUgY3VycmVudCBwcm9qZWN0LicKLSMgICAgICAgIHByb3BlcnR5ICdkaXNrIGZpbGUnICgnZmlsZScpICdmc3MgJyAtLSAnVGhlIGxvY2F0aW9uIG9uIGRpc2sgb2YgdGhlIGZpbGUgY29udGFpbmluZyB0aGUgZGVmaW5pdGlvbi4nIFtdCi0jICAgICAgICBwcm9wZXJ0eSAnbGluZU51bWJlcicgKCdFcnJMJykgJ2xvbmcnIC0tICdUaGUgbGluZSBudW1iZXIgd2hlcmUgdGhlIGRlZmluaXRpb24gYmVnaW5zLicgW10KLQotIyAgICBDbGFzcyAnUGF0aCBJbmZvcm1hdGlvbicgKCdQSW5mJykgLS0gJ0NvbnRhaW5zIGFsbCBvZiB0aGUgcGFyYW1ldGVycyB0aGF0IGRlc2NyaWJlIGFuIGFjY2VzcyBwYXRoLicKLSMgICAgICAgIHByb3BlcnR5ICduYW1lJyAoJ3BuYW0nKSAnVEVYVCcgLS0gJ1RoZSBhY3R1YWwgcGF0aCBuYW1lLicgW211dGFibGVdCi0jICAgICAgICBwcm9wZXJ0eSAncmVjdXJzaXZlJyAoJ1JlY3UnKSAnYm9vbCcgLS0gJ1dpbGwgdGhlIHBhdGggYmUgc2VhcmNoZWQgcmVjdXJzaXZlbHk/ICAoRGVmYXVsdCBpcyB0cnVlKScgW211dGFibGVdCi0jICAgICAgICBwcm9wZXJ0eSAnb3JpZ2luJyAoJ09yaWcnKSAnUFBybScgLS0gJycgW211dGFibGUgZW51bV0KLQotIyAgICBDbGFzcyAnUHJvamVjdEZpbGUnICgnU3JjRicpIC0tICdBIGZpbGUgY29udGFpbmVkIGluIGEgcHJvamVjdCcKLSMgICAgICAgIHByb3BlcnR5ICdmaWxldHlwZScgKCdTcmNUJykgJ1NyY1QnIC0tICdXaGF0IGtpbmQgb2YgZmlsZSBpcyB0aGlzID8nIFtlbnVtXQotIyAgICAgICAgcHJvcGVydHkgJ25hbWUnICgncG5hbScpICdURVhUJyAtLSAnVGhlIGZpbGVcMzI1cyBuYW1lJyBbXQotIyAgICAgICAgcHJvcGVydHkgJ2Rpc2sgZmlsZScgKCdmaWxlJykgJ2ZzcyAnIC0tICdUaGUgZmlsZVwzMjVzIGxvY2F0aW9uIG9uIGRpc2snIFtdCi0jICAgICAgICBwcm9wZXJ0eSAnY29kZXNpemUnICgnQ1NpeicpICdsb25nJyAtLSAnVGhlIHNpemUgb2YgdGhpcyBmaWxlXDMyNXMgY29kZS4nIFtdCi0jICAgICAgICBwcm9wZXJ0eSAnZGF0YXNpemUnICgnRFNpeicpICdsb25nJyAtLSAnVGhlIHNpemUgb2YgdGhpcyBmaWxlXDMyNXMgZGF0YS4nIFtdCi0jICAgICAgICBwcm9wZXJ0eSAndXAgdG8gZGF0ZScgKCdVcFREJykgJ2Jvb2wnIC0tICdIYXMgdGhlIGZpbGUgYmVlbiBjb21waWxlZCBzaW5jZSBpdHMgbGFzdCBtb2RpZmljYXRpb24gPycgW10KLSMgICAgICAgIHByb3BlcnR5ICdzeW1ib2xzJyAoJ1N5bUcnKSAnYm9vbCcgLS0gJ0FyZSBkZWJ1Z2dpbmcgc3ltYm9scyBnZW5lcmF0ZWQgZm9yIHRoaXMgZmlsZSA/JyBbbXV0YWJsZV0KLSMgICAgICAgIHByb3BlcnR5ICd3ZWFrIGxpbmsnICgnV2VhaycpICdib29sJyAtLSAnSXMgdGhpcyBmaWxlIGltcG9ydGVkIHdlYWtseSBpbnRvIHRoZSBwcm9qZWN0ID8gW1Bvd2VyUEMgb25seV0nIFttdXRhYmxlXQotIyAgICAgICAgcHJvcGVydHkgJ2luaXRpYWxpemUgYmVmb3JlJyAoJ0Jmb3InKSAnYm9vbCcgLS0gJ0ludGlhaWxpemUgdGhlIHNoYXJlZCBsaWJyYXJ5IGJlZm9yZSB0aGUgbWFpbiBhcHBsaWNhdGlvbi4nIFttdXRhYmxlXQotIyAgICAgICAgcHJvcGVydHkgJ2luY2x1ZGVzJyAoJ0luY0YnKSAnZnNzICcgLS0gJycgW10KLQotIyAgICBDbGFzcyAnU2VnbWVudCcgKCdTZWcgJykgLS0gJ0Egc2VnbWVudCBvciBncm91cCBpbiB0aGUgcHJvamVjdCcKLSMgICAgICAgIHByb3BlcnR5ICduYW1lJyAoJ3BuYW0nKSAnVEVYVCcgLS0gJycgW211dGFibGVdCi0jICAgICAgICBwcm9wZXJ0eSAnZmlsZWNvdW50JyAoJ051bUYnKSAnc2hvcicgLS0gJycgW10KLSMgICAgICAgIHByb3BlcnR5ICdwcmVsb2FkZWQnICgnUHJlbCcpICdib29sJyAtLSAnSXMgdGhlIHNlZ21lbnQgcHJlbG9hZGVkID8gWzY4SyBvbmx5XScgW211dGFibGVdCi0jICAgICAgICBwcm9wZXJ0eSAncHJvdGVjdGVkJyAoJ1Byb3QnKSAnYm9vbCcgLS0gJ0lzIHRoZSBzZWdtZW50IHByb3RlY3RlZCA/IFs2OEsgb25seV0nIFttdXRhYmxlXQotIyAgICAgICAgcHJvcGVydHkgJ2xvY2tlZCcgKCdQTGNrJykgJ2Jvb2wnIC0tICdJcyB0aGUgc2VnbWVudCBsb2NrZWQgPyBbNjhLIG9ubHldJyBbbXV0YWJsZV0KLSMgICAgICAgIHByb3BlcnR5ICdwdXJnZWFibGUnICgnUHVyZycpICdib29sJyAtLSAnSXMgdGhlIHNlZ21lbnQgcHVyZ2VhYmxlID8gWzY4SyBvbmx5XScgW211dGFibGVdCi0jICAgICAgICBwcm9wZXJ0eSAnc3lzdGVtIGhlYXAnICgnU3lzSCcpICdib29sJyAtLSAnSXMgdGhlIHNlZ21lbnQgbG9hZGVkIGludG8gdGhlIHN5c3RlbSBoZWFwID8gWzY4SyBvbmx5XScgW211dGFibGVdCi0KLSMgICAgQ2xhc3MgJ1RhcmdldCcgKCdUQVJHJykgLS0gJ0NvbnRhaW5zIHRoZSBkZWZpbml0aW9ucyBvZiBhIHByb2plY3RcMzI1cyB0YXJnZXQuJwotIyAgICAgICAgcHJvcGVydHkgJ0N1cnJlbnQgVGFyZ2V0JyAoJ1RBMDEnKSAnVEVYVCcgLS0gJ1RoZSBuYW1lIG9mIHRoZSBjdXJyZW50IHRhcmdldC4nIFttdXRhYmxlXQotIyAgICAgICAgcHJvcGVydHkgJ01hcHBpbmdzJyAoJ1RBMDgnKSAnVEluZicgLS0gJycgW211dGFibGUgbGlzdF0KLQotIyAgICBDbGFzcyAnVGFyZ2V0IEluZm9ybWF0aW9uJyAoJ1RJbmYnKSAtLSAnJwotIyAgICAgICAgcHJvcGVydHkgJ0ZpbGUgVHlwZScgKCdQUjA0JykgJ1RFWFQnIC0tICcnIFttdXRhYmxlXQotIyAgICAgICAgcHJvcGVydHkgJ0V4dGVuc2lvbicgKCdUQTAyJykgJ1RFWFQnIC0tICcnIFttdXRhYmxlXQotIyAgICAgICAgcHJvcGVydHkgJ1ByZWNvbXBpbGVkJyAoJ1RBMDMnKSAnYm9vbCcgLS0gJycgW211dGFibGVdCi0jICAgICAgICBwcm9wZXJ0eSAnUmVzb3VyY2UgRmlsZScgKCdUQTA0JykgJ2Jvb2wnIC0tICcnIFttdXRhYmxlXQotIyAgICAgICAgcHJvcGVydHkgJ0xhdW5jaGFibGUnICgnVEEwNScpICdib29sJyAtLSAnJyBbbXV0YWJsZV0KLSMgICAgICAgIHByb3BlcnR5ICdJZ25vcmVkIGJ5IE1ha2UnICgnVEEwNicpICdib29sJyAtLSAnJyBbbXV0YWJsZV0KLSMgICAgICAgIHByb3BlcnR5ICdDb21waWxlcicgKCdUQTA3JykgJ1RFWFQnIC0tICcnIFttdXRhYmxlXQotCi0jICAgIENsYXNzICdjbGFzcycgKCdDbGFzJykgLS0gJ0EgY2xhc3MsIHN0cnVjdCwgb3IgcmVjb3JkIHR5cGUgaW4gdGhlIGN1cnJlbnQgcHJvamVjdCcKLSMgICAgICAgIHByb3BlcnR5ICduYW1lJyAoJ3BuYW0nKSAnVEVYVCcgLS0gJycgW10KLSMgICAgICAgIHByb3BlcnR5ICdsYW5ndWFnZScgKCdMYW5nJykgJ0xhbmcnIC0tICdJbXBsZW1lbnRhdGlvbiBsYW5ndWFnZSBvZiB0aGlzIGNsYXNzJyBbZW51bV0KLSMgICAgICAgIHByb3BlcnR5ICdkZWNsYXJhdGlvbiBmaWxlJyAoJ0RjRmwnKSAnZnNzICcgLS0gJ1NvdXJjZSBmaWxlIGNvbnRhaW5pbmcgdGhlIGNsYXNzIGRlY2xhcmF0aW9uJyBbXQotIyAgICAgICAgcHJvcGVydHkgJ2RlY2xhcmF0aW9uIHN0YXJ0IG9mZnNldCcgKCdEY1N0JykgJ2xvbmcnIC0tICdTdGFydCBvZiBjbGFzcyBkZWNsYXJhdGlvbiBzb3VyY2UgY29kZScgW10KLSMgICAgICAgIHByb3BlcnR5ICdkZWNsYXJhdGlvbiBlbmQgb2Zmc2V0JyAoJ0RjRW4nKSAnbG9uZycgLS0gJ0VuZCBvZiBjbGFzcyBkZWNsYXJhdGlvbicgW10KLSMgICAgICAgIHByb3BlcnR5ICdzdWJjbGFzc2VzJyAoJ1N1YkMnKSAnQ2xhcycgLS0gJ3RoZSBpbW1lZGlhdGUgc3ViY2xhc3NlcyBvZiB0aGlzIGNsYXNzJyBbbGlzdF0KLSMgICAgICAgIHByb3BlcnR5ICdhbGwgc3ViY2xhc3NlcycgKCdTdWJBJykgJ0NsYXMnIC0tICd0aGUgY2xhc3NlcyBkaXJlY3RseSBvciBpbmRpcmVjdGx5IGRlcml2ZWQgZnJvbSB0aGlzIGNsYXNzJyBbbGlzdF0KLSMgICAgICAgIGVsZW1lbnQgJ0JzQ2wnIGFzIFsnaW5keCddCi0jICAgICAgICBlbGVtZW50ICdNYkZuJyBhcyBbJ2luZHgnLCAnbmFtZSddCi0jICAgICAgICBlbGVtZW50ICdEdE1iJyBhcyBbJ2luZHgnLCAnbmFtZSddCi0KLSMgICAgQ2xhc3MgJ2NsYXNzZXMnICgnQ2xhcycpIC0tICcnCi0jICAgICAgICBwcm9wZXJ0eSAnJyAoJ2NAIyEnKSAndHlwZScgLS0gJycgWzBdCi0KLSMgICAgQ2xhc3MgJ21lbWJlciBmdW5jdGlvbicgKCdNYkZuJykgLS0gJ0EgY2xhc3MgbWVtYmVyIGZ1bmN0aW9uIG9yIG1ldGhvZC4nCi0jICAgICAgICBwcm9wZXJ0eSAnbmFtZScgKCdwbmFtJykgJ1RFWFQnIC0tICcnIFtdCi0jICAgICAgICBwcm9wZXJ0eSAnYWNjZXNzJyAoJ0FjY2UnKSAnQWNjZScgLS0gJycgW2VudW1dCi0jICAgICAgICBwcm9wZXJ0eSAndmlydHVhbCcgKCdWaXJ0JykgJ2Jvb2wnIC0tICcnIFtdCi0jICAgICAgICBwcm9wZXJ0eSAnc3RhdGljJyAoJ1N0YXQnKSAnYm9vbCcgLS0gJycgW10KLSMgICAgICAgIHByb3BlcnR5ICdkZWNsYXJhdGlvbiBmaWxlJyAoJ0RjRmwnKSAnZnNzICcgLS0gJ1NvdXJjZSBmaWxlIGNvbnRhaW5pbmcgdGhlIG1lbWJlciBmdW5jdGlvbiBkZWNsYXJhdGlvbicgW10KLSMgICAgICAgIHByb3BlcnR5ICdkZWNsYXJhdGlvbiBzdGFydCBvZmZzZXQnICgnRGNTdCcpICdsb25nJyAtLSAnc3RhcnQgb2YgbWVtYmVyIGZ1bmN0aW9uIGRlY2xhcmF0aW9uIHNvdXJjZSBjb2RlJyBbXQotIyAgICAgICAgcHJvcGVydHkgJ2RlY2xhcmF0aW9uIGVuZCBvZmZzZXQnICgnRGNFbicpICdsb25nJyAtLSAnZW5kIG9mIG1lbWJlciBmdW5jdGlvbiBkZWNsYXJhdGlvbicgW10KLSMgICAgICAgIHByb3BlcnR5ICdpbXBsZW1lbnRhdGlvbiBmaWxlJyAoJ0RmRmwnKSAnZnNzICcgLS0gJ1NvdXJjZSBmaWxlIGNvbnRhaW5pbmcgdGhlIG1lbWJlciBmdW5jdGlvbiBkZWZpbml0aW9uJyBbXQotIyAgICAgICAgcHJvcGVydHkgJ2ltcGxlbWVudGF0aW9uIHN0YXJ0IG9mZnNldCcgKCdEZlN0JykgJ2xvbmcnIC0tICdzdGFydCBvZiBtZW1iZXIgZnVuY3Rpb24gZGVmaW5pdGlvbiBzb3VyY2UgY29kZScgW10KLSMgICAgICAgIHByb3BlcnR5ICdpbXBsZW1lbnRhdGlvbiBlbmQgb2Zmc2V0JyAoJ0RmRW4nKSAnbG9uZycgLS0gJ2VuZCBvZiBtZW1iZXIgZnVuY3Rpb24gZGVmaW5pdGlvbicgW10KLQotIyAgICBDbGFzcyAnbWVtYmVyIGZ1bmN0aW9ucycgKCdNYkZuJykgLS0gJycKLSMgICAgICAgIHByb3BlcnR5ICcnICgnY0AjIScpICd0eXBlJyAtLSAnJyBbMF0KLQotIyAgICBDbGFzcyAnZGF0YSBtZW1iZXInICgnRHRNYicpIC0tICdBIGNsYXNzIGRhdGEgbWVtYmVyIG9yIGZpZWxkJwotIyAgICAgICAgcHJvcGVydHkgJ25hbWUnICgncG5hbScpICdURVhUJyAtLSAnJyBbXQotIyAgICAgICAgcHJvcGVydHkgJ2FjY2VzcycgKCdBY2NlJykgJ0FjY2UnIC0tICcnIFtlbnVtXQotIyAgICAgICAgcHJvcGVydHkgJ3N0YXRpYycgKCdTdGF0JykgJ2Jvb2wnIC0tICcnIFtdCi0jICAgICAgICBwcm9wZXJ0eSAnZGVjbGFyYXRpb24gc3RhcnQgb2Zmc2V0JyAoJ0RjU3QnKSAnbG9uZycgLS0gJycgW10KLSMgICAgICAgIHByb3BlcnR5ICdkZWNsYXJhdGlvbiBlbmQgb2Zmc2V0JyAoJ0RjRW4nKSAnbG9uZycgLS0gJycgW10KLQotIyAgICBDbGFzcyAnZGF0YSBtZW1iZXJzJyAoJ0R0TWInKSAtLSAnJwotIyAgICAgICAgcHJvcGVydHkgJycgKCdjQCMhJykgJ3R5cGUnIC0tICcnIFswXQotCi0jICAgIENsYXNzICdiYXNlIGNsYXNzJyAoJ0JzQ2wnKSAtLSAnQSBiYXNlIGNsYXNzIG9yIHN1cGVyIGNsYXNzIG9mIGEgY2xhc3MnCi0jICAgICAgICBwcm9wZXJ0eSAnY2xhc3MnICgnQ2xhcycpICdvYmogJyAtLSAnVGhlIGNsYXNzIG9iamVjdCBjb3JyZXNwb25kaW5nIHRvIHRoaXMgYmFzZSBjbGFzcycgW10KLSMgICAgICAgIHByb3BlcnR5ICdhY2Nlc3MnICgnQWNjZScpICdBY2NlJyAtLSAnJyBbZW51bV0KLSMgICAgICAgIHByb3BlcnR5ICd2aXJ0dWFsJyAoJ1ZpcnQnKSAnYm9vbCcgLS0gJycgW10KLQotIyAgICBDbGFzcyAnYmFzZSBjbGFzc2VzJyAoJ0JzQ2wnKSAtLSAnJwotIyAgICAgICAgcHJvcGVydHkgJycgKCdjQCMhJykgJ3R5cGUnIC0tICcnIFswIGVudW1dCi0KLSMgICAgQ2xhc3MgJ2Jyb3dzZXIgY2F0YWxvZycgKCdDYXRhJykgLS0gJ1RoZSBicm93c2VyIHN5bWJvbCBjYXRhbG9nIGZvciB0aGUgY3VycmVudCBwcm9qZWN0JwotIyAgICAgICAgZWxlbWVudCAnQ2xhcycgYXMgWydpbmR4JywgJ25hbWUnXQotCi0jICAgIENsYXNzICdWQ1MgU2V0dXAnICgnVkNTcycpIC0tICdUaGUgdmVyc2lvbiBjb250cm9sIHN5c3RlbSBwZXJmZXJlbmNlcy4nCi0jICAgICAgICBwcm9wZXJ0eSAnVkNTIEFjdGl2ZScgKCdWQzAxJykgJ2Jvb2wnIC0tICdVc2UgVmVyc2lvbiBDb250cm9sJyBbbXV0YWJsZV0KLSMgICAgICAgIHByb3BlcnR5ICdDb25uZWN0aW9uIE1ldGhvZCcgKCdWQzAyJykgJ1RFWFQnIC0tICdOYW1lIG9mIFZlcnNpb24gQ29udHJvbCBTeXN0ZW0gdG8gdXNlLicgW211dGFibGVdCi0jICAgICAgICBwcm9wZXJ0eSAnVXNlcm5hbWUnICgnVkMwMycpICdURVhUJyAtLSAnVGhlIHVzZXIgbmFtZSBmb3IgdGhlIFZDUy4nIFttdXRhYmxlXQotIyAgICAgICAgcHJvcGVydHkgJ1Bhc3N3b3JkJyAoJ1ZDMDQnKSAnVEVYVCcgLS0gJ1RoZSBwYXNzd29yZCBmb3IgdGhlIFZDUy4nIFttdXRhYmxlXQotIyAgICAgICAgcHJvcGVydHkgJ0F1dG8gQ29ubmVjdCcgKCdWQzA1JykgJ2Jvb2wnIC0tICdBdXRvbWF0aWNhbGx5IGNvbm5lY3QgdG8gZGF0YWJhc2Ugd2hlbiBzdGFydGluZy4nIFttdXRhYmxlXQotIyAgICAgICAgcHJvcGVydHkgJ1N0b3JlIFBhc3N3b3JkJyAoJ1ZDMDYnKSAnYm9vbCcgLS0gJ1N0b3JlIHRoZSBwYXNzd29yZC4nIFttdXRhYmxlXQotIyAgICAgICAgcHJvcGVydHkgJ0Fsd2F5cyBQcm9tcHQnICgnVkMwNycpICdib29sJyAtLSAnQWx3YXlzIHNob3cgbG9naW4gZGlhbG9nJyBbbXV0YWJsZV0KLSMgICAgICAgIHByb3BlcnR5ICdNb3VudCBWb2x1bWUnICgnVkMwOCcpICdib29sJyAtLSAiQXR0ZW1wdCB0byBtb3VudCB0aGUgZGF0YWJhc2Ugdm9sdW1lIGlmIGl0IGlzbid0IGF2YWlsYWJsZS4iIFttdXRhYmxlXQotIyAgICAgICAgcHJvcGVydHkgJ0RhdGFiYXNlIFBhdGgnICgnVkMwOScpICdQSW5mJyAtLSAnUGF0aCB0byB0aGUgVkNTIGRhdGFiYXNlLicgW211dGFibGVdCi0jICAgICAgICBwcm9wZXJ0eSAnTG9jYWwgUm9vdCcgKCdWQzEwJykgJ1BJbmYnIC0tICdQYXRoIHRvIHRoZSBsb2NhbCBkaXJlY3RvcnkgdG8gY2hlY2tvdXQgdG8uJyBbbXV0YWJsZV0K