From mboxrd@z Thu Jan 1 00:00:00 1970 From: Chong Li Subject: [PATCH v7 for Xen 4.7 4/4] xl: enable per-VCPU parameter settings for RTDS scheduler Date: Wed, 16 Mar 2016 11:47:51 -0500 Message-ID: <1458146871-2813-5-git-send-email-lichong659@gmail.com> References: <1458146871-2813-1-git-send-email-lichong659@gmail.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <1458146871-2813-1-git-send-email-lichong659@gmail.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: xen-devel@lists.xen.org Cc: Chong Li , wei.liu2@citrix.com, Sisu Xi , george.dunlap@eu.citrix.com, dario.faggioli@citrix.com, Meng Xu , lichong659@gmail.com, dgolomb@seas.upenn.edu List-Id: xen-devel@lists.xenproject.org Q2hhbmdlIG1haW5fc2NoZWRfcnRkcyBhbmQgcmVsYXRlZCBvdXRwdXQgZnVuY3Rpb25zIHRvIHN1 cHBvcnQKcGVyLVZDUFUgc2V0dGluZ3MuCgpTaWduZWQtb2ZmLWJ5OiBDaG9uZyBMaSA8Y2hvbmcu bGlAd3VzdGwuZWR1PgpTaWduZWQtb2ZmLWJ5OiBNZW5nIFh1IDxtZW5neHVAY2lzLnVwZW5uLmVk dT4KU2lnbmVkLW9mZi1ieTogU2lzdSBYaSA8eGlzaXN1QGdtYWlsLmNvbT4KCi0tLQpDaGFuZ2Vz IG9uIFBBVENIIHY2OgoxKSBNb3JlIGV4cGxhaW4gaW4geGwucG9kLjEgYW5kIGNtZHRhYmxlLmMK MikgUmVzb2x2ZSBzb21lIGNvZGluZyBzeXRsZSBpc3N1ZXMKCkNoYW5nZXMgb24gUEFUQ0ggdjU6 CjEpIEFkZCBzY2hlZF92Y3B1X3NldF9hbGwoKSBmb3IgdGhlIGNhc2VzIHRoYXQgYWxsIHZjcHVz IG9mIGEKZG9tYWluIG5lZWQgdG8gYmUgY2hhbmdlZCB0b2dldGhlci4KCkNoYW5nZXMgb24gUEFU Q0ggdjQ6CjEpIENvZGluZyBzdHlsZSBjaGFuZ2VzCgpDaGFuZ2VzIG9uIFBBVENIIHYzOgoxKSBT dXBwb3J0IGNvbW1hbmRzLCBlLmcuLCAieGwgc2NoZWQtcnRkcyAtZCB2bTEiIHRvIG91dHB1dCB0 aGUKZGVmYXVsdCBzY2hlZHVsaW5nIHBhcmFtZXRlcnMKCkNoYW5nZXMgb24gUEFUQ0ggdjI6CjEp IFJlbW92ZSBwZXItZG9tYWluIG91dHB1dCBmdW5jdGlvbnMgZm9yIFJURFMgc2NoZWR1bGVyLgoK MikgVXNlcnMgbm93IHVzZSAnLXYgYWxsJyB0byBzcGVjaWZ5IGFsbCBWQ1BVcy4KCjMpIFN1cHBv cnQgb3V0cHV0dGluZyBhIHN1YnNldCBvZiB0aGUgcGFyYW1ldGVycyBvZiB0aGUgVkNQVXMKb2Yg YSBzcGVjaWZpYyBkb21haW4uCgo0KSBXaGVuIHNldHRpbmcgYWxsIFZDUFVzIHdpdGggdGhlIHNh bWUgcGFyYW1ldGVycyAoYnkgb25seSBvbmUKY29tbWFuZCksIG5vIHBlci1kb21haW4gZnVuY3Rp b24gaXMgaW52b2tlZC4KCkNDOiA8ZGFyaW8uZmFnZ2lvbGlAY2l0cml4LmNvbT4KQ0M6IDxnZW9y Z2UuZHVubGFwQGV1LmNpdHJpeC5jb20+CkNDOiA8ZGdvbG9tYkBzZWFzLnVwZW5uLmVkdT4KQ0M6 IDxtZW5neHVAY2lzLnVwZW5uLmVkdT4KQ0M6IDx3ZWkubGl1MkBjaXRyaXguY29tPgpDQzogPGxp Y2hvbmc2NTlAZ21haWwuY29tPgotLS0KIGRvY3MvbWFuL3hsLnBvZC4xICAgICAgICAgfCAgMzgg KysrKysrCiB0b29scy9saWJ4bC94bF9jbWRpbXBsLmMgIHwgMzAxICsrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0KIHRvb2xzL2xpYnhsL3hsX2NtZHRhYmxlLmMg fCAgMTYgKystCiAzIGZpbGVzIGNoYW5nZWQsIDMyMCBpbnNlcnRpb25zKCspLCAzNSBkZWxldGlv bnMoLSkKCmRpZmYgLS1naXQgYS9kb2NzL21hbi94bC5wb2QuMSBiL2RvY3MvbWFuL3hsLnBvZC4x CmluZGV4IDQyNzljN2MuLjFhOGFhY2QgMTAwNjQ0Ci0tLSBhL2RvY3MvbWFuL3hsLnBvZC4xCisr KyBiL2RvY3MvbWFuL3hsLnBvZC4xCkBAIC0xMDUxLDYgKzEwNTEsMTAgQEAgQjxPUFRJT05TPgog U3BlY2lmeSBkb21haW4gZm9yIHdoaWNoIHNjaGVkdWxlciBwYXJhbWV0ZXJzIGFyZSB0byBiZSBt b2RpZmllZCBvciByZXRyaWV2ZWQuCiBNYW5kYXRvcnkgZm9yIG1vZGlmeWluZyBzY2hlZHVsZXIg cGFyYW1ldGVycy4KIAorPWl0ZW0gQjwtdiBWQ1BVSUQvYWxsPiwgQjwtLXZjcHVpZD1WQ1BVSUQv YWxsPgorCitTcGVjaWZ5IHZjcHUgZm9yIHdoaWNoIHNjaGVkdWxlciBwYXJhbWV0ZXJzIGFyZSB0 byBiZSBtb2RpZmllZCBvciByZXRyaWV2ZWQuCisKID1pdGVtIEI8LXAgUEVSSU9EPiwgQjwtLXBl cmlvZD1QRVJJT0Q+CiAKIFBlcmlvZCBvZiB0aW1lLCBpbiBtaWNyb3NlY29uZHMsIG92ZXIgd2hp Y2ggdG8gcmVwbGVuaXNoIHRoZSBidWRnZXQuCkBAIC0xMDY2LDYgKzEwNzAsNDAgQEAgUmVzdHJp Y3Qgb3V0cHV0IHRvIGRvbWFpbnMgaW4gdGhlIHNwZWNpZmllZCBjcHVwb29sLgogCiA9YmFjawog CitCPEVYQU1QTEVTPgorCis9b3ZlciA0CisKKz1pdGVtIEI8LWQgW2RvbWlkXT4KKworTGlzdCBk ZWZhdWx0IHBlci1kb21haW4gcGFyYW1zIGZvciBhIGRvbWFpbgorCis9aXRlbSBCPC1kIFtkb21p ZF0gW3BhcmFtcyAocGVyaW9kIGFuZCBidWRnZXQpXT4KKworU2V0IHBlci1kb21haW4gcGFyYW1z IGZvciBhIGRvbWFpbgorCis9aXRlbSBCPC1kIFtkb21pZF0gLXYgW3ZjcHVpZF0gLXYgW3ZjcHVp ZF0gLi4uPgorCitMaXN0IHBlci1WQ1BVIHBhcmFtcyBmb3IgYSBkb21haW4KKworPWl0ZW0gQjwt ZCBbZG9taWRdIC12IGFsbD4KKworTGlzdCBhbGwgcGVyLVZDUFUgcGFyYW1zIGZvciBhIGRvbWFp bgorCis9aXRlbSBCPC12IGFsbD4KKworTGlzdCBhbGwgcGVyLVZDUFUgcGFyYW1zIGZvciBhbGwg ZG9tYWlucworCis9aXRlbSBCPC1kIFtkb21pZF0gLXYgW3ZjcHVpZF0gW3BhcmFtc10gLXYgW3Zj cHVpZF0gW3BhcmFtc10gLi4uPgorCitTZXQgcGVyLVZDUFUgcGFyYW1zIGZvciBhIGRvbWFpbgor Cis9aXRlbSBCPC1kIFtkb21pZF0gLXYgYWxsIFtwYXJhbXNdPgorCitTZXQgYWxsIHBlci1WQ1BV IHBhcmFtcyBmb3IgYSBkb21haW4KKworPWJhY2sKKwogPWJhY2sKIAogPWhlYWQxIENQVVBPT0xT IENPTU1BTkRTCmRpZmYgLS1naXQgYS90b29scy9saWJ4bC94bF9jbWRpbXBsLmMgYi90b29scy9s aWJ4bC94bF9jbWRpbXBsLmMKaW5kZXggMmI2MzcxZC4uMTMxNTQxZiAxMDA2NDQKLS0tIGEvdG9v bHMvbGlieGwveGxfY21kaW1wbC5jCisrKyBiL3Rvb2xzL2xpYnhsL3hsX2NtZGltcGwuYwpAQCAt NTgyMyw2ICs1ODIzLDUyIEBAIHN0YXRpYyBpbnQgc2NoZWRfZG9tYWluX3NldChpbnQgZG9taWQs IGNvbnN0IGxpYnhsX2RvbWFpbl9zY2hlZF9wYXJhbXMgKnNjaW5mbykKICAgICByZXR1cm4gMDsK IH0KIAorc3RhdGljIGludCBzY2hlZF92Y3B1X2dldChsaWJ4bF9zY2hlZHVsZXIgc2NoZWQsIGlu dCBkb21pZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgbGlieGxfdmNwdV9zY2hlZF9wYXJh bXMgKnNjaW5mbykKK3sKKyAgICBpbnQgcmM7CisKKyAgICByYyA9IGxpYnhsX3ZjcHVfc2NoZWRf cGFyYW1zX2dldChjdHgsIGRvbWlkLCBzY2luZm8pOworICAgIGlmIChyYykgeworICAgICAgICBm cHJpbnRmKHN0ZGVyciwgImxpYnhsX3ZjcHVfc2NoZWRfcGFyYW1zX2dldCBmYWlsZWQuXG4iKTsK KyAgICAgICAgZXhpdCgtMSk7CisgICAgfQorICAgIGlmIChzY2luZm8tPnNjaGVkICE9IHNjaGVk KSB7CisgICAgICAgIGZwcmludGYoc3RkZXJyLCAibGlieGxfdmNwdV9zY2hlZF9wYXJhbXNfZ2V0 IHJldHVybmVkICVzIG5vdCAlcy5cbiIsCisgICAgICAgICAgICAgICAgbGlieGxfc2NoZWR1bGVy X3RvX3N0cmluZyhzY2luZm8tPnNjaGVkKSwKKyAgICAgICAgICAgICAgICBsaWJ4bF9zY2hlZHVs ZXJfdG9fc3RyaW5nKHNjaGVkKSk7CisgICAgICAgIHJldHVybiAxOworICAgIH0KKworICAgIHJl dHVybiAwOworfQorCitzdGF0aWMgaW50IHNjaGVkX3ZjcHVfc2V0KGludCBkb21pZCwgY29uc3Qg bGlieGxfdmNwdV9zY2hlZF9wYXJhbXMgKnNjaW5mbykKK3sKKyAgICBpbnQgcmM7CisKKyAgICBy YyA9IGxpYnhsX3ZjcHVfc2NoZWRfcGFyYW1zX3NldChjdHgsIGRvbWlkLCBzY2luZm8pOworICAg IGlmIChyYykgeworICAgICAgICBmcHJpbnRmKHN0ZGVyciwgImxpYnhsX3ZjcHVfc2NoZWRfcGFy YW1zX3NldCBmYWlsZWQuXG4iKTsKKyAgICAgICAgZXhpdCgtMSk7CisgICAgfQorCisgICAgcmV0 dXJuIHJjOworfQorCitzdGF0aWMgaW50IHNjaGVkX3ZjcHVfc2V0X2FsbChpbnQgZG9taWQsIGNv bnN0IGxpYnhsX3ZjcHVfc2NoZWRfcGFyYW1zICpzY2luZm8pCit7CisgICAgaW50IHJjOworCisg ICAgcmMgPSBsaWJ4bF92Y3B1X3NjaGVkX3BhcmFtc19zZXRfYWxsKGN0eCwgZG9taWQsIHNjaW5m byk7CisgICAgaWYgKHJjKSB7CisgICAgICAgIGZwcmludGYoc3RkZXJyLCAibGlieGxfdmNwdV9z Y2hlZF9wYXJhbXNfc2V0IGZhaWxlZC5cbiIpOworICAgICAgICBleGl0KC0xKTsKKyAgICB9CisK KyAgICByZXR1cm4gcmM7Cit9CisKIHN0YXRpYyBpbnQgc2NoZWRfY3JlZGl0X3BhcmFtc19zZXQo aW50IHBvb2xpZCwgbGlieGxfc2NoZWRfY3JlZGl0X3BhcmFtcyAqc2NpbmZvKQogewogICAgIGlm IChsaWJ4bF9zY2hlZF9jcmVkaXRfcGFyYW1zX3NldChjdHgsIHBvb2xpZCwgc2NpbmZvKSkgewpA QCAtNTk0Miw2ICs1OTg4LDM3IEBAIHN0YXRpYyBpbnQgc2NoZWRfcnRkc19kb21haW5fb3V0cHV0 KAogICAgIHJldHVybiAwOwogfQogCitzdGF0aWMgaW50IHNjaGVkX3J0ZHNfdmNwdV9vdXRwdXQo aW50IGRvbWlkLCBsaWJ4bF92Y3B1X3NjaGVkX3BhcmFtcyAqc2NpbmZvKQoreworICAgIGNoYXIg KmRvbW5hbWU7CisgICAgaW50IHJjID0gMDsKKyAgICBpbnQgaTsKKworICAgIGlmIChkb21pZCA8 IDApIHsKKyAgICAgICAgcHJpbnRmKCIlLTMzcyAlNHMgJTRzICU5cyAlOXNcbiIsICJOYW1lIiwg IklEIiwKKyAgICAgICAgICAgICAgICJWQ1BVIiwgIlBlcmlvZCIsICJCdWRnZXQiKTsKKyAgICAg ICAgcmV0dXJuIDA7CisgICAgfQorCisgICAgcmMgPSBzY2hlZF92Y3B1X2dldChMSUJYTF9TQ0hF RFVMRVJfUlREUywgZG9taWQsIHNjaW5mbyk7CisgICAgaWYgKHJjKQorICAgICAgICBnb3RvIG91 dDsKKworICAgIGRvbW5hbWUgPSBsaWJ4bF9kb21pZF90b19uYW1lKGN0eCwgZG9taWQpOworICAg IGZvciAoIGkgPSAwOyBpIDwgc2NpbmZvLT5udW1fdmNwdXM7IGkrKyApIHsKKyAgICAgICAgcHJp bnRmKCIlLTMzcyAlNGQgJTRkICU5IlBSSXUzMiIgJTkiUFJJdTMyIlxuIiwKKyAgICAgICAgICAg ICAgIGRvbW5hbWUsCisgICAgICAgICAgICAgICBkb21pZCwKKyAgICAgICAgICAgICAgIHNjaW5m by0+dmNwdXNbaV0udmNwdWlkLAorICAgICAgICAgICAgICAgc2NpbmZvLT52Y3B1c1tpXS5wZXJp b2QsCisgICAgICAgICAgICAgICBzY2luZm8tPnZjcHVzW2ldLmJ1ZGdldCk7CisgICAgfQorICAg IGZyZWUoZG9tbmFtZSk7CisKK291dDoKKyAgICByZXR1cm4gcmM7Cit9CisKIHN0YXRpYyBpbnQg c2NoZWRfcnRkc19wb29sX291dHB1dCh1aW50MzJfdCBwb29saWQpCiB7CiAgICAgY2hhciAqcG9v bG5hbWU7CkBAIC02MDE1LDYgKzYwOTIsNjUgQEAgc3RhdGljIGludCBzY2hlZF9kb21haW5fb3V0 cHV0KGxpYnhsX3NjaGVkdWxlciBzY2hlZCwgaW50ICgqb3V0cHV0KShpbnQpLAogICAgIHJldHVy biAwOwogfQogCitzdGF0aWMgaW50IHNjaGVkX3ZjcHVfb3V0cHV0KGxpYnhsX3NjaGVkdWxlciBz Y2hlZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50ICgqb3V0cHV0KShpbnQsIGxp YnhsX3ZjcHVfc2NoZWRfcGFyYW1zICopLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBp bnQgKCpwb29sb3V0cHV0KSh1aW50MzJfdCksIGNvbnN0IGNoYXIgKmNwdXBvb2wpCit7CisgICAg bGlieGxfZG9taW5mbyAqaW5mbzsKKyAgICBsaWJ4bF9jcHVwb29saW5mbyAqcG9vbGluZm8gPSBO VUxMOworICAgIHVpbnQzMl90IHBvb2xpZDsKKyAgICBpbnQgbmJfZG9tYWluLCBuX3Bvb2xzID0g MCwgaSwgcDsKKyAgICBpbnQgcmMgPSAwOworCisgICAgaWYgKGNwdXBvb2wpIHsKKyAgICAgICAg aWYgKGxpYnhsX2NwdXBvb2xfcXVhbGlmaWVyX3RvX2NwdXBvb2xpZChjdHgsIGNwdXBvb2wsICZw b29saWQsIE5VTEwpCisgICAgICAgICAgICB8fCAhbGlieGxfY3B1cG9vbGlkX2lzX3ZhbGlkKGN0 eCwgcG9vbGlkKSkgeworICAgICAgICAgICAgZnByaW50ZihzdGRlcnIsICJ1bmtub3duIGNwdXBv b2wgXCclc1wnXG4iLCBjcHVwb29sKTsKKyAgICAgICAgICAgIHJldHVybiAtRVJST1JfRkFJTDsK KyAgICAgICAgfQorICAgIH0KKworICAgIGluZm8gPSBsaWJ4bF9saXN0X2RvbWFpbihjdHgsICZu Yl9kb21haW4pOworICAgIGlmICghaW5mbykgeworICAgICAgICBmcHJpbnRmKHN0ZGVyciwgImxp YnhsX2xpc3RfZG9tYWluIGZhaWxlZC5cbiIpOworICAgICAgICByZXR1cm4gMTsKKyAgICB9Cisg ICAgcG9vbGluZm8gPSBsaWJ4bF9saXN0X2NwdXBvb2woY3R4LCAmbl9wb29scyk7CisgICAgaWYg KCFwb29saW5mbykgeworICAgICAgICBmcHJpbnRmKHN0ZGVyciwgImVycm9yIGdldHRpbmcgY3B1 cG9vbCBpbmZvXG4iKTsKKyAgICAgICAgbGlieGxfZG9taW5mb19saXN0X2ZyZWUoaW5mbywgbmJf ZG9tYWluKTsKKyAgICAgICAgcmV0dXJuIC1FUlJPUl9OT01FTTsKKyAgICB9CisKKyAgICBmb3Ig KHAgPSAwOyAhcmMgJiYgKHAgPCBuX3Bvb2xzKTsgcCsrKSB7CisgICAgICAgIGlmICgocG9vbGlu Zm9bcF0uc2NoZWQgIT0gc2NoZWQpIHx8CisgICAgICAgICAgICAoY3B1cG9vbCAmJiAocG9vbGlk ICE9IHBvb2xpbmZvW3BdLnBvb2xpZCkpKQorICAgICAgICAgICAgY29udGludWU7CisKKyAgICAg ICAgcG9vbG91dHB1dChwb29saW5mb1twXS5wb29saWQpOworCisgICAgICAgIGxpYnhsX3ZjcHVf c2NoZWRfcGFyYW1zIHNjaW5mb19vdXQ7CisgICAgICAgIGxpYnhsX3ZjcHVfc2NoZWRfcGFyYW1z X2luaXQoJnNjaW5mb19vdXQpOworICAgICAgICBvdXRwdXQoLTEsICZzY2luZm9fb3V0KTsKKyAg ICAgICAgbGlieGxfdmNwdV9zY2hlZF9wYXJhbXNfZGlzcG9zZSgmc2NpbmZvX291dCk7CisgICAg ICAgIGZvciAoaSA9IDA7IGkgPCBuYl9kb21haW47IGkrKykgeworICAgICAgICAgICAgaWYgKGlu Zm9baV0uY3B1cG9vbCAhPSBwb29saW5mb1twXS5wb29saWQpCisgICAgICAgICAgICAgICAgY29u dGludWU7CisgICAgICAgICAgICBsaWJ4bF92Y3B1X3NjaGVkX3BhcmFtcyBzY2luZm87CisgICAg ICAgICAgICBsaWJ4bF92Y3B1X3NjaGVkX3BhcmFtc19pbml0KCZzY2luZm8pOworICAgICAgICAg ICAgc2NpbmZvLm51bV92Y3B1cyA9IDA7CisgICAgICAgICAgICByYyA9IG91dHB1dChpbmZvW2ld LmRvbWlkLCAmc2NpbmZvKTsKKyAgICAgICAgICAgIGxpYnhsX3ZjcHVfc2NoZWRfcGFyYW1zX2Rp c3Bvc2UoJnNjaW5mbyk7CisgICAgICAgICAgICBpZiAocmMpCisgICAgICAgICAgICAgICAgYnJl YWs7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBsaWJ4bF9jcHVwb29saW5mb19saXN0X2ZyZWUo cG9vbGluZm8sIG5fcG9vbHMpOworICAgIGxpYnhsX2RvbWluZm9fbGlzdF9mcmVlKGluZm8sIG5i X2RvbWFpbik7CisgICAgcmV0dXJuIDA7Cit9CisKIC8qIAogICogPG5vdGhpbmc+ICAgICAgICAg ICAgIDogTGlzdCBhbGwgZG9tYWluIHBhcmFtcyBhbmQgc2NoZWQgcGFyYW1zIGZyb20gYWxsIHBv b2xzCiAgKiAtZCBbZG9taWRdICAgICAgICAgICAgOiBMaXN0IGRvbWFpbiBwYXJhbXMgZm9yIGRv bWFpbgpAQCAtNjIxNSw4NCArNjM1MSwxODMgQEAgaW50IG1haW5fc2NoZWRfY3JlZGl0MihpbnQg YXJnYywgY2hhciAqKmFyZ3YpCiAKIC8qCiAgKiA8bm90aGluZz4gICAgICAgICAgICA6IExpc3Qg YWxsIGRvbWFpbiBwYXJhbXRlcnMgYW5kIHNjaGVkIHBhcmFtcwotICogLWQgW2RvbWlkXSAgICAg ICAgICAgOiBMaXN0IGRvbWFpbiBwYXJhbXMgZm9yIGRvbWFpbgorICogLWQgW2RvbWlkXSAgICAg ICAgICAgOiBMaXN0IGRlZmF1bHQgZG9tYWluIHBhcmFtcyBmb3IgZG9tYWluCiAgKiAtZCBbZG9t aWRdIFtwYXJhbXNdICA6IFNldCBkb21haW4gcGFyYW1zIGZvciBkb21haW4KKyAqIC1kIFtkb21p ZF0gLXYgW3ZjcHVpZCAxXSAtdiBbdmNwdWlkIDJdIC4uLiAgOgorICogTGlzdCBwZXItVkNQVSBw YXJhbXMgZm9yIGRvbWFpbgorICogLWQgW2RvbWlkXSAtdiBhbGwgIDogTGlzdCBhbGwgcGVyLVZD UFUgcGFyYW1zIGZvciBkb21haW4KKyAqIC12IGFsbCAgOiBMaXN0IGFsbCBwZXItVkNQVSBwYXJh bXMgZm9yIGFsbCBkb21haW5zCisgKiAtZCBbZG9taWRdIC12IFt2Y3B1aWQgMV0gW3BhcmFtc10g LXYgW3ZjcHVpZCAyXSBbcGFyYW1zXSAuLi4gIDoKKyAqIFNldCBwZXItVkNQVSBwYXJhbXMgZm9y IGRvbWFpbgorICogLWQgW2RvbWlkXSAtdiBhbGwgW3BhcmFtc10gIDogU2V0IGFsbCBwZXItVkNQ VSBwYXJhbXMgZm9yIGRvbWFpbgogICovCiBpbnQgbWFpbl9zY2hlZF9ydGRzKGludCBhcmdjLCBj aGFyICoqYXJndikKIHsKICAgICBjb25zdCBjaGFyICpkb20gPSBOVUxMOwogICAgIGNvbnN0IGNo YXIgKmNwdXBvb2wgPSBOVUxMOwotICAgIGludCBwZXJpb2QgPSAwOyAvKiBwZXJpb2QgaXMgaW4g bWljcm9zZWNvbmQgKi8KLSAgICBpbnQgYnVkZ2V0ID0gMDsgLyogYnVkZ2V0IGlzIGluIG1pY3Jv c2Vjb25kICovCisgICAgaW50ICp2Y3B1cyA9IChpbnQgKil4bWFsbG9jKHNpemVvZihpbnQpKTsg LyogSURzIG9mIFZDUFVzIHRoYXQgY2hhbmdlICovCisgICAgaW50ICpwZXJpb2RzID0gKGludCAq KXhtYWxsb2Moc2l6ZW9mKGludCkpOyAvKiBwZXJpb2QgaXMgaW4gbWljcm9zZWNvbmQgKi8KKyAg ICBpbnQgKmJ1ZGdldHMgPSAoaW50ICopeG1hbGxvYyhzaXplb2YoaW50KSk7IC8qIGJ1ZGdldCBp cyBpbiBtaWNyb3NlY29uZCAqLworICAgIGludCB2X3NpemUgPSAxOyAvKiBzaXplIG9mIHZjcHVz IGFycmF5ICovCisgICAgaW50IHBfc2l6ZSA9IDE7IC8qIHNpemUgb2YgcGVyaW9kcyBhcnJheSAq LworICAgIGludCBiX3NpemUgPSAxOyAvKiBzaXplIG9mIGJ1ZGdldHMgYXJyYXkgKi8KKyAgICBp bnQgdl9pbmRleCA9IDA7IC8qIGluZGV4IGluIHZjcHVzIGFycmF5ICovCisgICAgaW50IHBfaW5k ZXggPTA7IC8qIGluZGV4IGluIHBlcmlvZHMgYXJyYXkgKi8KKyAgICBpbnQgYl9pbmRleCA9MDsg LyogaW5kZXggZm9yIGluIGJ1ZGdldHMgYXJyYXkgKi8KICAgICBib29sIG9wdF9wID0gZmFsc2U7 CiAgICAgYm9vbCBvcHRfYiA9IGZhbHNlOwotICAgIGludCBvcHQsIHJjOworICAgIGJvb2wgb3B0 X3YgPSBmYWxzZTsKKyAgICBib29sIG9wdF9hbGwgPSBmYWxzZTsgLyogb3V0cHV0IHBlci1kb20g cGFyYW1ldGVycyAqLworICAgIGludCBvcHQsIGksIHJjOwogICAgIHN0YXRpYyBzdHJ1Y3Qgb3B0 aW9uIG9wdHNbXSA9IHsKICAgICAgICAgeyJkb21haW4iLCAxLCAwLCAnZCd9LAogICAgICAgICB7 InBlcmlvZCIsIDEsIDAsICdwJ30sCiAgICAgICAgIHsiYnVkZ2V0IiwgMSwgMCwgJ2InfSwKKyAg ICAgICAgeyJ2Y3B1aWQiLDEsIDAsICd2J30sCiAgICAgICAgIHsiY3B1cG9vbCIsIDEsIDAsICdj J30sCiAgICAgICAgIENPTU1PTl9MT05HX09QVFMKICAgICB9OwogCi0gICAgU1dJVENIX0ZPUkVB Q0hfT1BUKG9wdCwgImQ6cDpiOmM6Iiwgb3B0cywgInNjaGVkLXJ0ZHMiLCAwKSB7CisgICAgU1dJ VENIX0ZPUkVBQ0hfT1BUKG9wdCwgImQ6cDpiOnY6YyIsIG9wdHMsICJzY2hlZC1ydGRzIiwgMCkg ewogICAgIGNhc2UgJ2QnOgogICAgICAgICBkb20gPSBvcHRhcmc7CiAgICAgICAgIGJyZWFrOwog ICAgIGNhc2UgJ3AnOgotICAgICAgICBwZXJpb2QgPSBzdHJ0b2wob3B0YXJnLCBOVUxMLCAxMCk7 CisgICAgICAgIGlmIChwX2luZGV4ID49IHBfc2l6ZSkgeworICAgICAgICAgICAgLyogcGVyaW9k cyBhcnJheSBpcyBmdWxsCisgICAgICAgICAgICAgKiBkb3VibGUgdGhlIGFycmF5IHNpemUgZm9y IG5ldyBlbGVtZW50cworICAgICAgICAgICAgICovCisgICAgICAgICAgICBwX3NpemUgKj0gMjsK KyAgICAgICAgICAgIHBlcmlvZHMgPSB4cmVhbGxvYyhwZXJpb2RzLCBwX3NpemUpOworICAgICAg ICB9CisgICAgICAgIHBlcmlvZHNbcF9pbmRleCsrXSA9IHN0cnRvbChvcHRhcmcsIE5VTEwsIDEw KTsKICAgICAgICAgb3B0X3AgPSAxOwogICAgICAgICBicmVhazsKICAgICBjYXNlICdiJzoKLSAg ICAgICAgYnVkZ2V0ID0gc3RydG9sKG9wdGFyZywgTlVMTCwgMTApOworICAgICAgICBpZiAoYl9p bmRleCA+PSBiX3NpemUpIHsgLyogYnVkZ2V0cyBhcnJheSBpcyBmdWxsICovCisgICAgICAgICAg ICBiX3NpemUgKj0gMjsKKyAgICAgICAgICAgIGJ1ZGdldHMgPSB4cmVhbGxvYyhidWRnZXRzLCBi X3NpemUpOworICAgICAgICB9CisgICAgICAgIGJ1ZGdldHNbYl9pbmRleCsrXSA9IHN0cnRvbChv cHRhcmcsIE5VTEwsIDEwKTsKICAgICAgICAgb3B0X2IgPSAxOwogICAgICAgICBicmVhazsKKyAg ICBjYXNlICd2JzoKKyAgICAgICAgaWYgKCFzdHJjbXAob3B0YXJnLCAiYWxsIikpIHsgLyogZ2V0 IG9yIHNldCBhbGwgdmNwdXMgb2YgYSBkb21haW4gKi8KKyAgICAgICAgICAgIG9wdF9hbGwgPSAx OworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgaWYgKHZfaW5kZXggPj0g dl9zaXplKSB7IC8qIHZjcHVzIGFycmF5IGlzIGZ1bGwgKi8KKyAgICAgICAgICAgIHZfc2l6ZSAq PSAyOworICAgICAgICAgICAgdmNwdXMgPSB4cmVhbGxvYyh2Y3B1cywgdl9zaXplKTsKKyAgICAg ICAgfQorICAgICAgICB2Y3B1c1t2X2luZGV4KytdID0gc3RydG9sKG9wdGFyZywgTlVMTCwgMTAp OworICAgICAgICBvcHRfdiA9IDE7CisgICAgICAgIGJyZWFrOwogICAgIGNhc2UgJ2MnOgogICAg ICAgICBjcHVwb29sID0gb3B0YXJnOwogICAgICAgICBicmVhazsKICAgICB9CiAKLSAgICBpZiAo Y3B1cG9vbCAmJiAoZG9tIHx8IG9wdF9wIHx8IG9wdF9iKSkgeworICAgIGlmIChjcHVwb29sICYm IChkb20gfHwgb3B0X3AgfHwgb3B0X2IgfHwgb3B0X3YgfHwgb3B0X2FsbCkpIHsKICAgICAgICAg ZnByaW50ZihzdGRlcnIsICJTcGVjaWZ5aW5nIGEgY3B1cG9vbCBpcyBub3QgYWxsb3dlZCB3aXRo ICIKICAgICAgICAgICAgICAgICAib3RoZXIgb3B0aW9ucy5cbiIpOwotICAgICAgICByZXR1cm4g RVhJVF9GQUlMVVJFOworICAgICAgICByYyA9IEVYSVRfRkFJTFVSRTsKKyAgICAgICAgZ290byBv dXQ7CiAgICAgfQotICAgIGlmICghZG9tICYmIChvcHRfcCB8fCBvcHRfYikpIHsKLSAgICAgICAg ZnByaW50ZihzdGRlcnIsICJNdXN0IHNwZWNpZnkgYSBkb21haW4uXG4iKTsKLSAgICAgICAgcmV0 dXJuIEVYSVRfRkFJTFVSRTsKKyAgICBpZiAoIWRvbSAmJiAob3B0X3AgfHwgb3B0X2IgfHwgb3B0 X3YpKSB7CisgICAgICAgIGZwcmludGYoc3RkZXJyLCAiTWlzc2luZyBwYXJhbWV0ZXJzLlxuIik7 CisgICAgICAgIHJjID0gRVhJVF9GQUlMVVJFOworICAgICAgICBnb3RvIG91dDsKICAgICB9Ci0g ICAgaWYgKG9wdF9wICE9IG9wdF9iKSB7Ci0gICAgICAgIGZwcmludGYoc3RkZXJyLCAiTXVzdCBz cGVjaWZ5IHBlcmlvZCBhbmQgYnVkZ2V0XG4iKTsKLSAgICAgICAgcmV0dXJuIEVYSVRfRkFJTFVS RTsKKyAgICBpZiAoZG9tICYmICFvcHRfdiAmJiAhb3B0X2FsbCAmJiAob3B0X3AgfHwgb3B0X2Ip KSB7CisgICAgICAgIGZwcmludGYoc3RkZXJyLCAiTXVzdCBzcGVjaWZ5IFZDUFUuXG4iKTsKKyAg ICAgICAgcmMgPSBFWElUX0ZBSUxVUkU7CisgICAgICAgIGdvdG8gb3V0OworICAgIH0KKyAgICBp ZiAob3B0X3YgJiYgb3B0X2FsbCkgeworICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIkluY29ycmVj dCBWQ1BVIElEcy5cbiIpOworICAgICAgICByYyA9IEVYSVRfRkFJTFVSRTsKKyAgICAgICAgZ290 byBvdXQ7CisgICAgfQorICAgIGlmICgoKHZfaW5kZXggPiBiX2luZGV4KSAmJiBvcHRfYikgfHwg KCh2X2luZGV4ID4gcF9pbmRleCkgJiYgb3B0X3ApCisgICAgICAgIHx8IHBfaW5kZXggIT0gYl9p bmRleCkgeworICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIkluY29ycmVjdCBudW1iZXIgb2YgcGVy aW9kIGFuZCBidWRnZXRcbiIpOworICAgICAgICByYyA9IEVYSVRfRkFJTFVSRTsKKyAgICAgICAg Z290byBvdXQ7CiAgICAgfQogCi0gICAgaWYgKCFkb20pIHsgLyogbGlzdCBhbGwgZG9tYWluJ3Mg cnQgc2NoZWR1bGVyIGluZm8gKi8KLSAgICAgICAgaWYgKHNjaGVkX2RvbWFpbl9vdXRwdXQoTElC WExfU0NIRURVTEVSX1JURFMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjaGVk X3J0ZHNfZG9tYWluX291dHB1dCwKKyAgICBpZiAoKCFkb20pICYmIG9wdF9hbGwpIHsKKyAgICAg ICAgLyogZ2V0IGFsbCBkb21haW4ncyBwZXItdmNwdSBydGRzIHNjaGVkdWxlciBwYXJhbWV0ZXJz ICovCisgICAgICAgIHJjID0gLXNjaGVkX3ZjcHVfb3V0cHV0KExJQlhMX1NDSEVEVUxFUl9SVERT LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzY2hlZF9ydGRzX3ZjcHVfb3V0cHV0 LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzY2hlZF9ydGRzX3Bvb2xfb3V0cHV0 LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcHVwb29sKSkKLSAgICAgICAgICAg IHJldHVybiBFWElUX0ZBSUxVUkU7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNw dXBvb2wpOworICAgICAgICBnb3RvIG91dDsKKyAgICB9IGVsc2UgaWYgKCFkb20gJiYgIW9wdF9h bGwpIHsKKyAgICAgICAgLyogbGlzdCBhbGwgZG9tYWluJ3MgZGVmYXVsdCBzY2hlZHVsaW5nIHBh cmFtZXRlcnMgKi8KKyAgICAgICAgcmMgPSAtc2NoZWRfZG9tYWluX291dHB1dChMSUJYTF9TQ0hF RFVMRVJfUlREUywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzY2hlZF9ydGRz X2RvbWFpbl9vdXRwdXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NoZWRf cnRkc19wb29sX291dHB1dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcHVw b29sKTsKKyAgICAgICAgZ290byBvdXQ7CiAgICAgfSBlbHNlIHsKICAgICAgICAgdWludDMyX3Qg ZG9taWQgPSBmaW5kX2RvbWFpbihkb20pOwotICAgICAgICBpZiAoIW9wdF9wICYmICFvcHRfYikg eyAvKiBvdXRwdXQgcnQgc2NoZWR1bGVyIGluZm8gKi8KKyAgICAgICAgaWYgKCFvcHRfdiAmJiAh b3B0X2FsbCkgeyAvKiBvdXRwdXQgZGVmYXVsdCBzY2hlZHVsaW5nIHBhcmFtZXRlcnMgKi8KICAg ICAgICAgICAgIHNjaGVkX3J0ZHNfZG9tYWluX291dHB1dCgtMSk7Ci0gICAgICAgICAgICBpZiAo c2NoZWRfcnRkc19kb21haW5fb3V0cHV0KGRvbWlkKSkKLSAgICAgICAgICAgICAgICByZXR1cm4g RVhJVF9GQUlMVVJFOwotICAgICAgICB9IGVsc2UgeyAvKiBzZXQgcnQgc2NoZWR1bGVyIHBhcmFt YXRlcnMgKi8KLSAgICAgICAgICAgIGxpYnhsX2RvbWFpbl9zY2hlZF9wYXJhbXMgc2NpbmZvOwot ICAgICAgICAgICAgbGlieGxfZG9tYWluX3NjaGVkX3BhcmFtc19pbml0KCZzY2luZm8pOworICAg ICAgICAgICAgcmMgPSAtc2NoZWRfcnRkc19kb21haW5fb3V0cHV0KGRvbWlkKTsKKyAgICAgICAg ICAgIGdvdG8gb3V0OworICAgICAgICB9IGVsc2UgaWYgKCFvcHRfcCAmJiAhb3B0X2IpIHsKKyAg ICAgICAgICAgIC8qIGdldCBwZXItdmNwdSBydGRzIHNjaGVkdWxpbmcgcGFyYW1ldGVycyAqLwor ICAgICAgICAgICAgbGlieGxfdmNwdV9zY2hlZF9wYXJhbXMgc2NpbmZvOworICAgICAgICAgICAg bGlieGxfdmNwdV9zY2hlZF9wYXJhbXNfaW5pdCgmc2NpbmZvKTsKKyAgICAgICAgICAgIHNjaGVk X3J0ZHNfdmNwdV9vdXRwdXQoLTEsICZzY2luZm8pOworICAgICAgICAgICAgc2NpbmZvLm51bV92 Y3B1cyA9IHZfaW5kZXg7CisgICAgICAgICAgICBpZiAodl9pbmRleCA+IDApCisgICAgICAgICAg ICAgICAgc2NpbmZvLnZjcHVzID0gKGxpYnhsX3NjaGVkX3BhcmFtcyAqKQorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHhtYWxsb2Moc2l6ZW9mKGxpYnhsX3NjaGVkX3BhcmFtcykgKiAo dl9pbmRleCkpOworICAgICAgICAgICAgZm9yIChpID0gMDsgaSA8IHZfaW5kZXg7IGkrKykKKyAg ICAgICAgICAgICAgICBzY2luZm8udmNwdXNbaV0udmNwdWlkID0gdmNwdXNbaV07CisgICAgICAg ICAgICByYyA9IC1zY2hlZF9ydGRzX3ZjcHVfb3V0cHV0KGRvbWlkLCAmc2NpbmZvKTsKKyAgICAg ICAgICAgIGxpYnhsX3ZjcHVfc2NoZWRfcGFyYW1zX2Rpc3Bvc2UoJnNjaW5mbyk7CisgICAgICAg ICAgICBnb3RvIG91dDsKKyAgICB9IGVsc2UgaWYgKG9wdF92IHx8IG9wdF9hbGwpIHsKKyAgICAg ICAgICAgIC8qIHNldCBwZXItdmNwdSBydGRzIHNjaGVkdWxpbmcgcGFyYW1ldGVycyAqLworICAg ICAgICAgICAgbGlieGxfdmNwdV9zY2hlZF9wYXJhbXMgc2NpbmZvOworICAgICAgICAgICAgbGli eGxfdmNwdV9zY2hlZF9wYXJhbXNfaW5pdCgmc2NpbmZvKTsKICAgICAgICAgICAgIHNjaW5mby5z Y2hlZCA9IExJQlhMX1NDSEVEVUxFUl9SVERTOwotICAgICAgICAgICAgc2NpbmZvLnBlcmlvZCA9 IHBlcmlvZDsKLSAgICAgICAgICAgIHNjaW5mby5idWRnZXQgPSBidWRnZXQ7CisgICAgICAgICAg ICBpZiAodl9pbmRleCA+IDApIHsKKyAgICAgICAgICAgICAgICBzY2luZm8ubnVtX3ZjcHVzID0g dl9pbmRleDsKKyAgICAgICAgICAgICAgICBzY2luZm8udmNwdXMgPSAobGlieGxfc2NoZWRfcGFy YW1zICopCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeG1hbGxvYyhzaXplb2YobGli eGxfc2NoZWRfcGFyYW1zKSAqICh2X2luZGV4KSk7CisgICAgICAgICAgICAgICAgZm9yIChpID0g MDsgaSA8IHZfaW5kZXg7IGkrKykgeworICAgICAgICAgICAgICAgICAgICBzY2luZm8udmNwdXNb aV0udmNwdWlkID0gdmNwdXNbaV07CisgICAgICAgICAgICAgICAgICAgIHNjaW5mby52Y3B1c1tp XS5wZXJpb2QgPSBwZXJpb2RzW2ldOworICAgICAgICAgICAgICAgICAgICBzY2luZm8udmNwdXNb aV0uYnVkZ2V0ID0gYnVkZ2V0c1tpXTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAg ICAgcmMgPSBzY2hlZF92Y3B1X3NldChkb21pZCwgJnNjaW5mbyk7CisgICAgICAgICAgICB9IGVs c2UgeyAvKiBzZXQgcGFyYW1zIGZvciBhbGwgdmNwdXMgKi8KKyAgICAgICAgICAgICAgICBzY2lu Zm8ubnVtX3ZjcHVzID0gMTsKKyAgICAgICAgICAgICAgICBzY2luZm8udmNwdXMgPSAobGlieGxf c2NoZWRfcGFyYW1zICopCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeG1hbGxvYyhz aXplb2YobGlieGxfc2NoZWRfcGFyYW1zKSk7CisgICAgICAgICAgICAgICAgc2NpbmZvLnZjcHVz WzBdLnBlcmlvZCA9IHBlcmlvZHNbMF07CisgICAgICAgICAgICAgICAgc2NpbmZvLnZjcHVzWzBd LmJ1ZGdldCA9IGJ1ZGdldHNbMF07CisgICAgICAgICAgICAgICAgcmMgPSBzY2hlZF92Y3B1X3Nl dF9hbGwoZG9taWQsICZzY2luZm8pOworICAgICAgICAgICAgfQogCi0gICAgICAgICAgICByYyA9 IHNjaGVkX2RvbWFpbl9zZXQoZG9taWQsICZzY2luZm8pOwotICAgICAgICAgICAgbGlieGxfZG9t YWluX3NjaGVkX3BhcmFtc19kaXNwb3NlKCZzY2luZm8pOwotICAgICAgICAgICAgaWYgKHJjKQot ICAgICAgICAgICAgICAgIHJldHVybiBFWElUX0ZBSUxVUkU7CisgICAgICAgICAgICBsaWJ4bF92 Y3B1X3NjaGVkX3BhcmFtc19kaXNwb3NlKCZzY2luZm8pOworICAgICAgICAgICAgaWYgKHJjKSB7 CisgICAgICAgICAgICAgICAgcmMgPSAtcmM7CisgICAgICAgICAgICAgICAgZ290byBvdXQ7Cisg ICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9CiAKLSAgICByZXR1cm4gRVhJVF9TVUNDRVNT OworICAgIHJjID0gRVhJVF9TVUNDRVNTOworb3V0OgorICAgIGZyZWUodmNwdXMpOworICAgIGZy ZWUocGVyaW9kcyk7CisgICAgZnJlZShidWRnZXRzKTsKKyAgICByZXR1cm4gcmM7CiB9CiAKIGlu dCBtYWluX2RvbWlkKGludCBhcmdjLCBjaGFyICoqYXJndikKZGlmZiAtLWdpdCBhL3Rvb2xzL2xp YnhsL3hsX2NtZHRhYmxlLmMgYi90b29scy9saWJ4bC94bF9jbWR0YWJsZS5jCmluZGV4IGZkYzFh YzYuLjM0ZjUyNjIgMTAwNjQ0Ci0tLSBhL3Rvb2xzL2xpYnhsL3hsX2NtZHRhYmxlLmMKKysrIGIv dG9vbHMvbGlieGwveGxfY21kdGFibGUuYwpAQCAtMjY4LDEwICsyNjgsMjIgQEAgc3RydWN0IGNt ZF9zcGVjIGNtZF90YWJsZVtdID0gewogICAgIHsgInNjaGVkLXJ0ZHMiLAogICAgICAgJm1haW5f c2NoZWRfcnRkcywgMCwgMSwKICAgICAgICJHZXQvc2V0IHJ0ZHMgc2NoZWR1bGVyIHBhcmFtZXRl cnMiLAotICAgICAgIlstZCA8RG9tYWluPiBbLXBbPVBFUklPRF1dIFstYls9QlVER0VUXV1dIiwK KyAgICAgICJbLWQgPERvbWFpbj4gWy12Wz1WQ1BVSUQvYWxsXV0gWy1wWz1QRVJJT0RdXSBbLWJb PUJVREdFVF1dXSIsCiAgICAgICAiLWQgRE9NQUlOLCAtLWRvbWFpbj1ET01BSU4gICAgIERvbWFp biB0byBtb2RpZnlcbiIKKyAgICAgICItdiBWQ1BVSUQvYWxsLCAtLXZjcHVpZD1WQ1BVSUQvYWxs ICAgIFZDUFUgdG8gbW9kaWZ5IG9yIG91dHB1dDtcbiIKKyAgICAgICIgICAgICAgICAgICAgICBV c2luZyAnLXYgYWxsJyB0byBtb2RpZnkvb3V0cHV0IGFsbCB2Y3B1c1xuIgogICAgICAgIi1wIFBF UklPRCwgLS1wZXJpb2Q9UEVSSU9EICAgICBQZXJpb2QgKHVzKVxuIgotICAgICAgIi1iIEJVREdF VCwgLS1idWRnZXQ9QlVER0VUICAgICBCdWRnZXQgKHVzKVxuIgorICAgICAgIi1iIEJVREdFVCwg LS1idWRnZXQ9QlVER0VUICAgICBCdWRnZXQgKHVzKVxuXG4iCisgICAgICAiRXhhbXBsZXM6XG5c biIKKyAgICAgICItZCBbZG9taWRdICAgICAgICAgICA6IExpc3QgZGVmYXVsdCBwZXItZG9tYWlu IHBhcmFtcyBmb3IgYSBkb21haW5cbiIKKyAgICAgICItZCBbZG9taWRdIFtwYXJhbXMgKHBlcmlv ZCBhbmQgYnVkZ2V0KV0gIDogU2V0IHBlci1kb21haW4gcGFyYW1zIGZvciBhIGRvbWFpblxuIgor ICAgICAgIi1kIFtkb21pZF0gLXYgW3ZjcHVpZF0gLXYgW3ZjcHVpZF0gLi4uICA6ICIKKyAgICAg ICJMaXN0IHBlci1WQ1BVIHBhcmFtcyBmb3IgYSBkb21haW5cbiIKKyAgICAgICItZCBbZG9taWRd IC12IGFsbCAgOiBMaXN0IGFsbCBwZXItVkNQVSBwYXJhbXMgZm9yIGEgZG9tYWluXG4iCisgICAg ICAiLXYgYWxsICA6IExpc3QgYWxsIHBlci1WQ1BVIHBhcmFtcyBmb3IgYWxsIGRvbWFpbnNcbiIK KyAgICAgICItZCBbZG9taWRdIC12IFt2Y3B1aWRdIFtwYXJhbXNdIC12IFt2Y3B1aWRdIFtwYXJh bXNdIC4uLiAgOiAiCisgICAgICAiU2V0IHBlci1WQ1BVIHBhcmFtcyBmb3IgYSBkb21haW5cbiIK KyAgICAgICItZCBbZG9taWRdIC12IGFsbCBbcGFyYW1zXSAgOiBTZXQgYWxsIHBlci1WQ1BVIHBh cmFtcyBmb3IgYSBkb21haW5cbiIKICAgICB9LAogICAgIHsgImRvbWlkIiwKICAgICAgICZtYWlu X2RvbWlkLCAwLCAwLAotLSAKMS45LjEKCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fXwpYZW4tZGV2ZWwgbWFpbGluZyBsaXN0Clhlbi1kZXZlbEBsaXN0cy54 ZW4ub3JnCmh0dHA6Ly9saXN0cy54ZW4ub3JnL3hlbi1kZXZlbAo=