<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!DOCTYPE bugzilla SYSTEM "https://bugs.webkit.org/page.cgi?id=bugzilla.dtd">

<bugzilla version="5.0.4.1"
          urlbase="https://bugs.webkit.org/"
          
          maintainer="admin@webkit.org"
>

    <bug>
          <bug_id>187798</bug_id>
          
          <creation_ts>2018-07-19 04:54:28 -0700</creation_ts>
          <short_desc>[GLIB] jsc_context_evaluate_in_object() should receive an instance when a JSCClass is given</short_desc>
          <delta_ts>2018-07-19 23:12:17 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>Gtk, InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Carlos Garcia Campos">cgarcia</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>bugs-noreply</cc>
    
    <cc>mcatanzaro</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1443332</commentid>
    <comment_count>0</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2018-07-19 04:54:28 -0700</bug_when>
    <thetext>Because a JSCClass is pretty much useless without an instance in this case. It should be similar to jsc_value_new_object() because indeed we are creating a new object. This makes destroy function and vtable functions to work.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1443334</commentid>
    <comment_count>1</comment_count>
      <attachid>345342</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2018-07-19 05:01:19 -0700</bug_when>
    <thetext>Created attachment 345342
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1443697</commentid>
    <comment_count>2</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2018-07-19 23:11:55 -0700</bug_when>
    <thetext>Committed r234025: &lt;https://trac.webkit.org/changeset/234025&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1443699</commentid>
    <comment_count>3</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2018-07-19 23:12:17 -0700</bug_when>
    <thetext>&lt;rdar://problem/42416631&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>345342</attachid>
            <date>2018-07-19 05:01:19 -0700</date>
            <delta_ts>2018-07-19 06:09:21 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>jsc-glib-evaluate-in-object-instance.diff</filename>
            <type>text/plain</type>
            <size>41284</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvZ2xpYi9KU0FQSVdyYXBwZXJH
bG9iYWxPYmplY3QuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9nbGliL0pTQVBJV3Jh
cHBlckdsb2JhbE9iamVjdC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAuLjZhZTE5NDViMmZlCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L0FQSS9nbGliL0pTQVBJV3JhcHBlckdsb2JhbE9iamVjdC5jcHAKQEAgLTAsMCArMSw5MSBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBJZ2FsaWEgUy5MLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVk
ZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiSlNBUElXcmFwcGVyR2xvYmFsT2JqZWN0LmgiCisKKyNp
bmNsdWRlICJKU0NJbmxpbmVzLmgiCisjaW5jbHVkZSAiSlNDYWxsYmFja09iamVjdC5oIgorI2lu
Y2x1ZGUgIlN0cnVjdHVyZS5oIgorI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgorCitj
bGFzcyBKU0FQSVdyYXBwZXJHbG9iYWxPYmplY3RIYW5kbGVPd25lciA6IHB1YmxpYyBKU0M6Oldl
YWtIYW5kbGVPd25lciB7CitwdWJsaWM6CisgICAgdm9pZCBmaW5hbGl6ZShKU0M6OkhhbmRsZTxK
U0M6OlVua25vd24+LCB2b2lkKikgb3ZlcnJpZGU7Cit9OworCitzdGF0aWMgSlNBUElXcmFwcGVy
R2xvYmFsT2JqZWN0SGFuZGxlT3duZXIqIGpzQVBJV3JhcHBlckdsb2JhbE9iamVjdEhhbmRsZU93
bmVyKCkKK3sKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8SlNBUElXcmFwcGVyR2xvYmFsT2Jq
ZWN0SGFuZGxlT3duZXI+IGpzV3JhcHBlckdsb2JhbE9iamVjdEhhbmRsZU93bmVyOworICAgIHJl
dHVybiAmanNXcmFwcGVyR2xvYmFsT2JqZWN0SGFuZGxlT3duZXIuZ2V0KCk7Cit9CisKK3ZvaWQg
SlNBUElXcmFwcGVyR2xvYmFsT2JqZWN0SGFuZGxlT3duZXI6OmZpbmFsaXplKEpTQzo6SGFuZGxl
PEpTQzo6VW5rbm93bj4gaGFuZGxlLCB2b2lkKikKK3sKKyAgICBhdXRvKiB3cmFwcGVyT2JqZWN0
ID0gc3RhdGljX2Nhc3Q8SlNDOjpKU0FQSVdyYXBwZXJHbG9iYWxPYmplY3QqPihoYW5kbGUuZ2V0
KCkuYXNDZWxsKCkpOworICAgIGlmICghd3JhcHBlck9iamVjdC0+d3JhcHBlZE9iamVjdCgpKQor
ICAgICAgICByZXR1cm47CisKKyAgICBKU0M6OkhlYXA6OmhlYXAod3JhcHBlck9iamVjdCktPnJl
bGVhc2VTb29uKHN0ZDo6dW5pcXVlX3B0cjxKU0M6OkpTQ0dMaWJXcmFwcGVyT2JqZWN0Pih3cmFw
cGVyT2JqZWN0LT53cmFwcGVkT2JqZWN0KCkpKTsKKyAgICBKU0M6OldlYWtTZXQ6OmRlYWxsb2Nh
dGUoSlNDOjpXZWFrSW1wbDo6YXNXZWFrSW1wbChoYW5kbGUuc2xvdCgpKSk7Cit9CisKK25hbWVz
cGFjZSBKU0MgeworCit0ZW1wbGF0ZSA8PiBjb25zdCBDbGFzc0luZm8gSlNDYWxsYmFja09iamVj
dDxKU0FQSVdyYXBwZXJHbG9iYWxPYmplY3Q+OjpzX2luZm8gPSB7ICJKU0FQSVdyYXBwZXJHbG9i
YWxPYmplY3QiLCAmQmFzZTo6c19pbmZvLCBudWxscHRyLCBudWxscHRyLCBDUkVBVEVfTUVUSE9E
X1RBQkxFKEpTQ2FsbGJhY2tPYmplY3QpIH07CisKK3RlbXBsYXRlPD4gY29uc3QgYm9vbCBKU0Nh
bGxiYWNrT2JqZWN0PEpTQVBJV3JhcHBlckdsb2JhbE9iamVjdD46Om5lZWRzRGVzdHJ1Y3Rpb24g
PSBmYWxzZTsKKwordGVtcGxhdGUgPD4KK1N0cnVjdHVyZSogSlNDYWxsYmFja09iamVjdDxKU0FQ
SVdyYXBwZXJHbG9iYWxPYmplY3Q+OjpjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9i
amVjdCosIEpTVmFsdWUgcHJvdG8pCit7CisgICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKHZt
LCBudWxscHRyLCBwcm90bywgVHlwZUluZm8oR2xvYmFsT2JqZWN0VHlwZSwgU3RydWN0dXJlRmxh
Z3MpLCAmc19pbmZvKTsKK30KKwordGVtcGxhdGU8PgorSlNDYWxsYmFja09iamVjdDxKU0FQSVdy
YXBwZXJHbG9iYWxPYmplY3Q+KiBKU0NhbGxiYWNrT2JqZWN0PEpTQVBJV3JhcHBlckdsb2JhbE9i
amVjdD46OmNyZWF0ZShWTSYgdm0sIEpTQ2xhc3NSZWYgY2xhc3NSZWYsIFN0cnVjdHVyZSogc3Ry
dWN0dXJlKQoreworICAgIEpTQ2FsbGJhY2tPYmplY3Q8SlNBUElXcmFwcGVyR2xvYmFsT2JqZWN0
PiogY2FsbGJhY2tPYmplY3QgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxKU0NhbGxiYWNr
T2JqZWN0PEpTQVBJV3JhcHBlckdsb2JhbE9iamVjdD4+KHZtLmhlYXApKSBKU0NhbGxiYWNrT2Jq
ZWN0KHZtLCBjbGFzc1JlZiwgc3RydWN0dXJlKTsKKyAgICBjYWxsYmFja09iamVjdC0+ZmluaXNo
Q3JlYXRpb24odm0pOworICAgIHJldHVybiBjYWxsYmFja09iamVjdDsKK30KKworSlNBUElXcmFw
cGVyR2xvYmFsT2JqZWN0OjpKU0FQSVdyYXBwZXJHbG9iYWxPYmplY3QoVk0mIHZtLCBTdHJ1Y3R1
cmUqIHN0cnVjdHVyZSkKKyAgICA6IEJhc2Uodm0sIHN0cnVjdHVyZSkKK3sKK30KKwordm9pZCBK
U0FQSVdyYXBwZXJHbG9iYWxPYmplY3Q6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSkKK3sKKyAgICBC
YXNlOjpmaW5pc2hDcmVhdGlvbih2bSk7CisgICAgV2Vha1NldDo6YWxsb2NhdGUodGhpcywganNB
UElXcmFwcGVyR2xvYmFsT2JqZWN0SGFuZGxlT3duZXIoKSwgMCk7IC8vIEJhbGFuY2VkIGluIEpT
QVBJV3JhcHBlckdsb2JhbE9iamVjdEhhbmRsZU93bmVyOjpmaW5hbGl6ZS4KK30KKwordm9pZCBK
U0FQSVdyYXBwZXJHbG9iYWxPYmplY3Q6OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBKU0M6
OlNsb3RWaXNpdG9yJiB2aXNpdG9yKQoreworICAgIEJhc2U6OnZpc2l0Q2hpbGRyZW4oY2VsbCwg
dmlzaXRvcik7Cit9CisKK30gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0FQSS9nbGliL0pTQVBJV3JhcHBlckdsb2JhbE9iamVjdC5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL0FQSS9nbGliL0pTQVBJV3JhcHBlckdsb2JhbE9iamVjdC5oCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi45YTNmMGM2ZWFjZgotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvZ2xpYi9KU0FQSVdyYXBwZXJHbG9i
YWxPYmplY3QuaApAQCAtMCwwICsxLDUyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4IEln
YWxpYSBTLkwuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
KyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisg
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiSlNCYXNlLmgi
CisjaW5jbHVkZSAiSlNDR0xpYldyYXBwZXJPYmplY3QuaCIKKyNpbmNsdWRlICJKU0NQb2lzb24u
aCIKKyNpbmNsdWRlICJKU0dsb2JhbE9iamVjdC5oIgorCituYW1lc3BhY2UgSlNDIHsKKworY2xh
c3MgSlNBUElXcmFwcGVyR2xvYmFsT2JqZWN0IDogcHVibGljIEpTR2xvYmFsT2JqZWN0IHsKK3B1
YmxpYzoKKyAgICB0eXBlZGVmIEpTR2xvYmFsT2JqZWN0IEJhc2U7CisKKyAgICB2b2lkIGZpbmlz
aENyZWF0aW9uKFZNJik7CisgICAgc3RhdGljIHZvaWQgdmlzaXRDaGlsZHJlbihKU0NlbGwqLCBK
U0M6OlNsb3RWaXNpdG9yJik7CisKKyAgICBKU0NHTGliV3JhcHBlck9iamVjdCogd3JhcHBlZE9i
amVjdCgpIGNvbnN0IHsgcmV0dXJuIG1fd3JhcHBlZE9iamVjdDsgfQorICAgIHZvaWQgc2V0V3Jh
cHBlZE9iamVjdChKU0NHTGliV3JhcHBlck9iamVjdCogd3JhcHBlZE9iamVjdCkgeyBtX3dyYXBw
ZWRPYmplY3QgPSB3cmFwcGVkT2JqZWN0OyB9CisKK3Byb3RlY3RlZDoKKyAgICBKU0FQSVdyYXBw
ZXJHbG9iYWxPYmplY3QoVk0mLCBTdHJ1Y3R1cmUqKTsKKworcHJpdmF0ZToKKyAgICBKU0NHTGli
V3JhcHBlck9iamVjdCogbV93cmFwcGVkT2JqZWN0OworfTsKKworfSAvLyBuYW1lc3BhY2UgSlND
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL2dsaWIvSlNDQ2xhc3MuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9nbGliL0pTQ0NsYXNzLmNwcAppbmRleCBlNzZm
YmJmODU4ZS4uOTVlMmEwY2MyNWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9B
UEkvZ2xpYi9KU0NDbGFzcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9nbGli
L0pTQ0NsYXNzLmNwcApAQCAtMjEsNiArMjEsNyBAQAogI2luY2x1ZGUgIkpTQ0NsYXNzLmgiCiAK
ICNpbmNsdWRlICJBUElDYXN0LmgiCisjaW5jbHVkZSAiSlNBUElXcmFwcGVyR2xvYmFsT2JqZWN0
LmgiCiAjaW5jbHVkZSAiSlNBUElXcmFwcGVyT2JqZWN0LmgiCiAjaW5jbHVkZSAiSlNDQ2FsbGJh
Y2tGdW5jdGlvbi5oIgogI2luY2x1ZGUgIkpTQ0NsYXNzUHJpdmF0ZS5oIgpAQCAtMTA4LDIyICsx
MDksNDggQEAgcHJpdmF0ZToKICAgICBHUmVmUHRyPEpTQ0V4Y2VwdGlvbj4gbV9zYXZlZEV4Y2Vw
dGlvbjsKIH07CiAKK3N0YXRpYyBib29sIGlzV3JhcHBlZE9iamVjdChKU0M6OkpTT2JqZWN0KiBq
c09iamVjdCkKK3sKKyAgICBKU0M6OkV4ZWNTdGF0ZSogZXhlYyA9IGpzT2JqZWN0LT5nbG9iYWxP
YmplY3QoKS0+Z2xvYmFsRXhlYygpOworICAgIGlmIChqc09iamVjdC0+aXNHbG9iYWxPYmplY3Qo
KSkKKyAgICAgICAgcmV0dXJuIGpzT2JqZWN0LT5pbmhlcml0czxKU0M6OkpTQ2FsbGJhY2tPYmpl
Y3Q8SlNDOjpKU0FQSVdyYXBwZXJHbG9iYWxPYmplY3Q+PihleGVjLT52bSgpKTsKKyAgICByZXR1
cm4ganNPYmplY3QtPmluaGVyaXRzPEpTQzo6SlNDYWxsYmFja09iamVjdDxKU0M6OkpTQVBJV3Jh
cHBlck9iamVjdD4+KGV4ZWMtPnZtKCkpOworfQorCitzdGF0aWMgSlNDbGFzc1JlZiB3cmFwcGVk
T2JqZWN0Q2xhc3MoSlNDOjpKU09iamVjdCoganNPYmplY3QpCit7CisgICAgQVNTRVJUKGlzV3Jh
cHBlZE9iamVjdChqc09iamVjdCkpOworICAgIGlmIChqc09iamVjdC0+aXNHbG9iYWxPYmplY3Qo
KSkKKyAgICAgICAgcmV0dXJuIEpTQzo6anNDYXN0PEpTQzo6SlNDYWxsYmFja09iamVjdDxKU0M6
OkpTQVBJV3JhcHBlckdsb2JhbE9iamVjdD4qPihqc09iamVjdCktPmNsYXNzUmVmKCk7CisgICAg
cmV0dXJuIEpTQzo6anNDYXN0PEpTQzo6SlNDYWxsYmFja09iamVjdDxKU0M6OkpTQVBJV3JhcHBl
ck9iamVjdD4qPihqc09iamVjdCktPmNsYXNzUmVmKCk7Cit9CisKK3N0YXRpYyBHUmVmUHRyPEpT
Q0NvbnRleHQ+IGpzY0NvbnRleHRGb3JPYmplY3QoSlNDOjpKU09iamVjdCoganNPYmplY3QpCit7
CisgICAgQVNTRVJUKGlzV3JhcHBlZE9iamVjdChqc09iamVjdCkpOworICAgIEpTQzo6RXhlY1N0
YXRlKiBleGVjID0ganNPYmplY3QtPmdsb2JhbE9iamVjdCgpLT5nbG9iYWxFeGVjKCk7CisgICAg
aWYgKGpzT2JqZWN0LT5pc0dsb2JhbE9iamVjdCgpKSB7CisgICAgICAgIGlmIChhdXRvKiBnbG9i
YWxTY29wZUV4dGVuc2lvbiA9IGV4ZWMtPnZtRW50cnlHbG9iYWxPYmplY3QoKS0+Z2xvYmFsU2Nv
cGVFeHRlbnNpb24oKSkKKyAgICAgICAgICAgIGV4ZWMgPSBKU0M6OkpTU2NvcGU6Om9iamVjdEF0
U2NvcGUoZ2xvYmFsU2NvcGVFeHRlbnNpb24pLT5nbG9iYWxPYmplY3QoKS0+Z2xvYmFsRXhlYygp
OworICAgIH0KKyAgICByZXR1cm4ganNjQ29udGV4dEdldE9yQ3JlYXRlKHRvR2xvYmFsUmVmKGV4
ZWMpKTsKK30KKwogc3RhdGljIEpTVmFsdWVSZWYgZ2V0UHJvcGVydHkoSlNDb250ZXh0UmVmIGNh
bGxlckNvbnRleHQsIEpTT2JqZWN0UmVmIG9iamVjdCwgSlNTdHJpbmdSZWYgcHJvcGVydHlOYW1l
LCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pCiB7CiAgICAgSlNDOjpKU0xvY2tIb2xkZXIgbG9ja2Vy
KHRvSlMoY2FsbGVyQ29udGV4dCkpOwogICAgIGF1dG8qIGpzT2JqZWN0ID0gdG9KUyhvYmplY3Qp
OwotICAgIGF1dG8gY29udGV4dCA9IGpzY0NvbnRleHRHZXRPckNyZWF0ZSh0b0dsb2JhbFJlZihq
c09iamVjdC0+Z2xvYmFsT2JqZWN0KCktPmdsb2JhbEV4ZWMoKSkpOwotICAgIGF1dG8qIGpzQ29u
dGV4dCA9IGpzY0NvbnRleHRHZXRKU0NvbnRleHQoY29udGV4dC5nZXQoKSk7Ci0gICAgaWYgKCFq
c09iamVjdC0+aW5oZXJpdHM8SlNDOjpKU0NhbGxiYWNrT2JqZWN0PEpTQzo6SlNBUElXcmFwcGVy
T2JqZWN0Pj4odG9KUyhqc0NvbnRleHQpLT52bSgpKSkKKyAgICBpZiAoIWlzV3JhcHBlZE9iamVj
dChqc09iamVjdCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCisgICAgYXV0byBjb250ZXh0
ID0ganNjQ29udGV4dEZvck9iamVjdChqc09iamVjdCk7CiAgICAgZ3BvaW50ZXIgaW5zdGFuY2Ug
PSBqc2NDb250ZXh0V3JhcHBlZE9iamVjdChjb250ZXh0LmdldCgpLCBvYmplY3QpOwogICAgIGlm
ICghaW5zdGFuY2UpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgVlRhYmxlRXhjZXB0
aW9uSGFuZGxlciBleGNlcHRpb25IYW5kbGVyKGNvbnRleHQuZ2V0KCksIGV4Y2VwdGlvbik7CiAK
LSAgICBKU0NsYXNzUmVmIGpzQ2xhc3MgPSBKU0M6OmpzQ2FzdDxKU0M6OkpTQ2FsbGJhY2tPYmpl
Y3Q8SlNDOjpKU0FQSVdyYXBwZXJPYmplY3Q+Kj4oanNPYmplY3QpLT5jbGFzc1JlZigpOworICAg
IEpTQ2xhc3NSZWYganNDbGFzcyA9IHdyYXBwZWRPYmplY3RDbGFzcyhqc09iamVjdCk7CiAgICAg
Zm9yIChhdXRvKiBqc2NDbGFzcyA9IGpzY0NvbnRleHRHZXRSZWdpc3RlcmVkQ2xhc3MoY29udGV4
dC5nZXQoKSwganNDbGFzcyk7IGpzY0NsYXNzOyBqc2NDbGFzcyA9IGpzY0NsYXNzLT5wcml2LT5w
YXJlbnRDbGFzcykgewogICAgICAgICBpZiAoIWpzY0NsYXNzLT5wcml2LT52dGFibGUpCiAgICAg
ICAgICAgICBjb250aW51ZTsKQEAgLTE0MCwxMSArMTY3LDEwIEBAIHN0YXRpYyBib29sIHNldFBy
b3BlcnR5KEpTQ29udGV4dFJlZiBjYWxsZXJDb250ZXh0LCBKU09iamVjdFJlZiBvYmplY3QsIEpT
U3RyaW5nCiB7CiAgICAgSlNDOjpKU0xvY2tIb2xkZXIgbG9ja2VyKHRvSlMoY2FsbGVyQ29udGV4
dCkpOwogICAgIGF1dG8qIGpzT2JqZWN0ID0gdG9KUyhvYmplY3QpOwotICAgIGF1dG8gY29udGV4
dCA9IGpzY0NvbnRleHRHZXRPckNyZWF0ZSh0b0dsb2JhbFJlZihqc09iamVjdC0+Z2xvYmFsT2Jq
ZWN0KCktPmdsb2JhbEV4ZWMoKSkpOwotICAgIGF1dG8qIGpzQ29udGV4dCA9IGpzY0NvbnRleHRH
ZXRKU0NvbnRleHQoY29udGV4dC5nZXQoKSk7Ci0gICAgaWYgKCFqc09iamVjdC0+aW5oZXJpdHM8
SlNDOjpKU0NhbGxiYWNrT2JqZWN0PEpTQzo6SlNBUElXcmFwcGVyT2JqZWN0Pj4odG9KUyhqc0Nv
bnRleHQpLT52bSgpKSkKKyAgICBpZiAoIWlzV3JhcHBlZE9iamVjdChqc09iamVjdCkpCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKIAorICAgIGF1dG8gY29udGV4dCA9IGpzY0NvbnRleHRGb3JPYmpl
Y3QoanNPYmplY3QpOwogICAgIGdwb2ludGVyIGluc3RhbmNlID0ganNjQ29udGV4dFdyYXBwZWRP
YmplY3QoY29udGV4dC5nZXQoKSwgb2JqZWN0KTsKICAgICBpZiAoIWluc3RhbmNlKQogICAgICAg
ICByZXR1cm4gZmFsc2U7CkBAIC0xNTIsNyArMTc4LDcgQEAgc3RhdGljIGJvb2wgc2V0UHJvcGVy
dHkoSlNDb250ZXh0UmVmIGNhbGxlckNvbnRleHQsIEpTT2JqZWN0UmVmIG9iamVjdCwgSlNTdHJp
bmcKICAgICBWVGFibGVFeGNlcHRpb25IYW5kbGVyIGV4Y2VwdGlvbkhhbmRsZXIoY29udGV4dC5n
ZXQoKSwgZXhjZXB0aW9uKTsKIAogICAgIEdSZWZQdHI8SlNDVmFsdWU+IHByb3BlcnR5VmFsdWU7
Ci0gICAgSlNDbGFzc1JlZiBqc0NsYXNzID0gSlNDOjpqc0Nhc3Q8SlNDOjpKU0NhbGxiYWNrT2Jq
ZWN0PEpTQzo6SlNBUElXcmFwcGVyT2JqZWN0Pio+KGpzT2JqZWN0KS0+Y2xhc3NSZWYoKTsKKyAg
ICBKU0NsYXNzUmVmIGpzQ2xhc3MgPSB3cmFwcGVkT2JqZWN0Q2xhc3MoanNPYmplY3QpOwogICAg
IGZvciAoYXV0byoganNjQ2xhc3MgPSBqc2NDb250ZXh0R2V0UmVnaXN0ZXJlZENsYXNzKGNvbnRl
eHQuZ2V0KCksIGpzQ2xhc3MpOyBqc2NDbGFzczsganNjQ2xhc3MgPSBqc2NDbGFzcy0+cHJpdi0+
cGFyZW50Q2xhc3MpIHsKICAgICAgICAgaWYgKCFqc2NDbGFzcy0+cHJpdi0+dnRhYmxlKQogICAg
ICAgICAgICAgY29udGludWU7CkBAIC0xNzEsMTYgKzE5NywxNSBAQCBzdGF0aWMgYm9vbCBoYXNQ
cm9wZXJ0eShKU0NvbnRleHRSZWYgY2FsbGVyQ29udGV4dCwgSlNPYmplY3RSZWYgb2JqZWN0LCBK
U1N0cmluZwogewogICAgIEpTQzo6SlNMb2NrSG9sZGVyIGxvY2tlcih0b0pTKGNhbGxlckNvbnRl
eHQpKTsKICAgICBhdXRvKiBqc09iamVjdCA9IHRvSlMob2JqZWN0KTsKLSAgICBhdXRvIGNvbnRl
eHQgPSBqc2NDb250ZXh0R2V0T3JDcmVhdGUodG9HbG9iYWxSZWYoanNPYmplY3QtPmdsb2JhbE9i
amVjdCgpLT5nbG9iYWxFeGVjKCkpKTsKLSAgICBhdXRvKiBqc0NvbnRleHQgPSBqc2NDb250ZXh0
R2V0SlNDb250ZXh0KGNvbnRleHQuZ2V0KCkpOwotICAgIGlmICghanNPYmplY3QtPmluaGVyaXRz
PEpTQzo6SlNDYWxsYmFja09iamVjdDxKU0M6OkpTQVBJV3JhcHBlck9iamVjdD4+KHRvSlMoanND
b250ZXh0KS0+dm0oKSkpCisgICAgaWYgKCFpc1dyYXBwZWRPYmplY3QoanNPYmplY3QpKQogICAg
ICAgICByZXR1cm4gZmFsc2U7CiAKKyAgICBhdXRvIGNvbnRleHQgPSBqc2NDb250ZXh0Rm9yT2Jq
ZWN0KGpzT2JqZWN0KTsKICAgICBncG9pbnRlciBpbnN0YW5jZSA9IGpzY0NvbnRleHRXcmFwcGVk
T2JqZWN0KGNvbnRleHQuZ2V0KCksIG9iamVjdCk7CiAgICAgaWYgKCFpbnN0YW5jZSkKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogCi0gICAgSlNDbGFzc1JlZiBqc0NsYXNzID0gSlNDOjpqc0Nhc3Q8
SlNDOjpKU0NhbGxiYWNrT2JqZWN0PEpTQzo6SlNBUElXcmFwcGVyT2JqZWN0Pio+KGpzT2JqZWN0
KS0+Y2xhc3NSZWYoKTsKKyAgICBKU0NsYXNzUmVmIGpzQ2xhc3MgPSB3cmFwcGVkT2JqZWN0Q2xh
c3MoanNPYmplY3QpOwogICAgIGZvciAoYXV0byoganNjQ2xhc3MgPSBqc2NDb250ZXh0R2V0UmVn
aXN0ZXJlZENsYXNzKGNvbnRleHQuZ2V0KCksIGpzQ2xhc3MpOyBqc2NDbGFzczsganNjQ2xhc3Mg
PSBqc2NDbGFzcy0+cHJpdi0+cGFyZW50Q2xhc3MpIHsKICAgICAgICAgaWYgKCFqc2NDbGFzcy0+
cHJpdi0+dnRhYmxlKQogICAgICAgICAgICAgY29udGludWU7CkBAIC0xOTgsMTggKzIyMywxNyBA
QCBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eShKU0NvbnRleHRSZWYgY2FsbGVyQ29udGV4dCwg
SlNPYmplY3RSZWYgb2JqZWN0LCBKU1N0cgogewogICAgIEpTQzo6SlNMb2NrSG9sZGVyIGxvY2tl
cih0b0pTKGNhbGxlckNvbnRleHQpKTsKICAgICBhdXRvKiBqc09iamVjdCA9IHRvSlMob2JqZWN0
KTsKLSAgICBhdXRvIGNvbnRleHQgPSBqc2NDb250ZXh0R2V0T3JDcmVhdGUodG9HbG9iYWxSZWYo
anNPYmplY3QtPmdsb2JhbE9iamVjdCgpLT5nbG9iYWxFeGVjKCkpKTsKLSAgICBhdXRvKiBqc0Nv
bnRleHQgPSBqc2NDb250ZXh0R2V0SlNDb250ZXh0KGNvbnRleHQuZ2V0KCkpOwotICAgIGlmICgh
anNPYmplY3QtPmluaGVyaXRzPEpTQzo6SlNDYWxsYmFja09iamVjdDxKU0M6OkpTQVBJV3JhcHBl
ck9iamVjdD4+KHRvSlMoanNDb250ZXh0KS0+dm0oKSkpCisgICAgaWYgKCFpc1dyYXBwZWRPYmpl
Y3QoanNPYmplY3QpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKKyAgICBhdXRvIGNvbnRleHQg
PSBqc2NDb250ZXh0Rm9yT2JqZWN0KGpzT2JqZWN0KTsKICAgICBncG9pbnRlciBpbnN0YW5jZSA9
IGpzY0NvbnRleHRXcmFwcGVkT2JqZWN0KGNvbnRleHQuZ2V0KCksIG9iamVjdCk7CiAgICAgaWYg
KCFpbnN0YW5jZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgVlRhYmxlRXhjZXB0aW9u
SGFuZGxlciBleGNlcHRpb25IYW5kbGVyKGNvbnRleHQuZ2V0KCksIGV4Y2VwdGlvbik7CiAKLSAg
ICBKU0NsYXNzUmVmIGpzQ2xhc3MgPSBKU0M6OmpzQ2FzdDxKU0M6OkpTQ2FsbGJhY2tPYmplY3Q8
SlNDOjpKU0FQSVdyYXBwZXJPYmplY3Q+Kj4oanNPYmplY3QpLT5jbGFzc1JlZigpOworICAgIEpT
Q2xhc3NSZWYganNDbGFzcyA9IHdyYXBwZWRPYmplY3RDbGFzcyhqc09iamVjdCk7CiAgICAgZm9y
IChhdXRvKiBqc2NDbGFzcyA9IGpzY0NvbnRleHRHZXRSZWdpc3RlcmVkQ2xhc3MoY29udGV4dC5n
ZXQoKSwganNDbGFzcyk7IGpzY0NsYXNzOyBqc2NDbGFzcyA9IGpzY0NsYXNzLT5wcml2LT5wYXJl
bnRDbGFzcykgewogICAgICAgICBpZiAoIWpzY0NsYXNzLT5wcml2LT52dGFibGUpCiAgICAgICAg
ICAgICBjb250aW51ZTsKQEAgLTIyNiwxNiArMjUwLDE1IEBAIHN0YXRpYyB2b2lkIGdldFByb3Bl
cnR5TmFtZXMoSlNDb250ZXh0UmVmIGNhbGxlckNvbnRleHQsIEpTT2JqZWN0UmVmIG9iamVjdCwg
SlNQCiB7CiAgICAgSlNDOjpKU0xvY2tIb2xkZXIgbG9ja2VyKHRvSlMoY2FsbGVyQ29udGV4dCkp
OwogICAgIGF1dG8qIGpzT2JqZWN0ID0gdG9KUyhvYmplY3QpOwotICAgIGF1dG8gY29udGV4dCA9
IGpzY0NvbnRleHRHZXRPckNyZWF0ZSh0b0dsb2JhbFJlZihqc09iamVjdC0+Z2xvYmFsT2JqZWN0
KCktPmdsb2JhbEV4ZWMoKSkpOwotICAgIGF1dG8qIGpzQ29udGV4dCA9IGpzY0NvbnRleHRHZXRK
U0NvbnRleHQoY29udGV4dC5nZXQoKSk7Ci0gICAgaWYgKCFqc09iamVjdC0+aW5oZXJpdHM8SlND
OjpKU0NhbGxiYWNrT2JqZWN0PEpTQzo6SlNBUElXcmFwcGVyT2JqZWN0Pj4odG9KUyhqc0NvbnRl
eHQpLT52bSgpKSkKKyAgICBpZiAoIWlzV3JhcHBlZE9iamVjdChqc09iamVjdCkpCiAgICAgICAg
IHJldHVybjsKIAorICAgIGF1dG8gY29udGV4dCA9IGpzY0NvbnRleHRGb3JPYmplY3QoanNPYmpl
Y3QpOwogICAgIGdwb2ludGVyIGluc3RhbmNlID0ganNjQ29udGV4dFdyYXBwZWRPYmplY3QoY29u
dGV4dC5nZXQoKSwgb2JqZWN0KTsKICAgICBpZiAoIWluc3RhbmNlKQogICAgICAgICByZXR1cm47
CiAKLSAgICBKU0NsYXNzUmVmIGpzQ2xhc3MgPSBKU0M6OmpzQ2FzdDxKU0M6OkpTQ2FsbGJhY2tP
YmplY3Q8SlNDOjpKU0FQSVdyYXBwZXJPYmplY3Q+Kj4oanNPYmplY3QpLT5jbGFzc1JlZigpOwor
ICAgIEpTQ2xhc3NSZWYganNDbGFzcyA9IHdyYXBwZWRPYmplY3RDbGFzcyhqc09iamVjdCk7CiAg
ICAgZm9yIChhdXRvKiBqc2NDbGFzcyA9IGpzY0NvbnRleHRHZXRSZWdpc3RlcmVkQ2xhc3MoY29u
dGV4dC5nZXQoKSwganNDbGFzcyk7IGpzY0NsYXNzOyBqc2NDbGFzcyA9IGpzY0NsYXNzLT5wcml2
LT5wYXJlbnRDbGFzcykgewogICAgICAgICBpZiAoIWpzY0NsYXNzLT5wcml2LT52dGFibGUpCiAg
ICAgICAgICAgICBjb250aW51ZTsKQEAgLTQ4Niw2ICs1MDksMTIgQEAgSlNDOjpKU09iamVjdCog
anNjQ2xhc3NHZXRPckNyZWF0ZUpTV3JhcHBlcihKU0NDbGFzcyoganNjQ2xhc3MsIGdwb2ludGVy
IHdyYXBwZWQKICAgICByZXR1cm4ganNjQ29udGV4dEdldE9yQ3JlYXRlSlNXcmFwcGVyKHByaXYt
PmNvbnRleHQsIHByaXYtPmpzQ2xhc3MsIHRvUmVmKHByaXYtPnByb3RvdHlwZS5nZXQoKSksIHdy
YXBwZWRPYmplY3QsIHByaXYtPmRlc3Ryb3lGdW5jdGlvbik7CiB9CiAKK0pTR2xvYmFsQ29udGV4
dFJlZiBqc2NDbGFzc0NyZWF0ZUNvbnRleHRXaXRoSlNXcmFwcGVyKEpTQ0NsYXNzKiBqc2NDbGFz
cywgZ3BvaW50ZXIgd3JhcHBlZE9iamVjdCkKK3sKKyAgICBKU0NDbGFzc1ByaXZhdGUqIHByaXYg
PSBqc2NDbGFzcy0+cHJpdjsKKyAgICByZXR1cm4ganNjQ29udGV4dENyZWF0ZUNvbnRleHRXaXRo
SlNXcmFwcGVyKHByaXYtPmNvbnRleHQsIHByaXYtPmpzQ2xhc3MsIHRvUmVmKHByaXYtPnByb3Rv
dHlwZS5nZXQoKSksIHdyYXBwZWRPYmplY3QsIHByaXYtPmRlc3Ryb3lGdW5jdGlvbik7Cit9CisK
IHZvaWQganNjQ2xhc3NJbnZhbGlkYXRlKEpTQ0NsYXNzKiBqc2NDbGFzcykKIHsKICAgICBqc2ND
bGFzcy0+cHJpdi0+Y29udGV4dCA9IG51bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvQVBJL2dsaWIvSlNDQ2xhc3NQcml2YXRlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQVBJL2dsaWIvSlNDQ2xhc3NQcml2YXRlLmgKaW5kZXggOGNiYzYwYTZkMmEuLjg0YTVkNGIw
OGE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL2dsaWIvSlNDQ2xhc3NQ
cml2YXRlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9nbGliL0pTQ0NsYXNzUHJp
dmF0ZS5oCkBAIC0yOCw0ICsyOCw1IEBACiBHUmVmUHRyPEpTQ0NsYXNzPiBqc2NDbGFzc0NyZWF0
ZShKU0NDb250ZXh0KiwgY29uc3QgY2hhciosIEpTQ0NsYXNzKiwgSlNDQ2xhc3NWVGFibGUqLCBH
RGVzdHJveU5vdGlmeSk7CiBKU0NsYXNzUmVmIGpzY0NsYXNzR2V0SlNDbGFzcyhKU0NDbGFzcyop
OwogSlNDOjpKU09iamVjdCoganNjQ2xhc3NHZXRPckNyZWF0ZUpTV3JhcHBlcihKU0NDbGFzcyos
IGdwb2ludGVyKTsKK0pTR2xvYmFsQ29udGV4dFJlZiBqc2NDbGFzc0NyZWF0ZUNvbnRleHRXaXRo
SlNXcmFwcGVyKEpTQ0NsYXNzKiwgZ3BvaW50ZXIpOwogdm9pZCBqc2NDbGFzc0ludmFsaWRhdGUo
SlNDQ2xhc3MqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvZ2xpYi9K
U0NDb250ZXh0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvZ2xpYi9KU0NDb250ZXh0
LmNwcAppbmRleCAwZDFkOTAzMjY5YS4uNTU0YmYwY2RjNTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9BUEkvZ2xpYi9KU0NDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvQVBJL2dsaWIvSlNDQ29udGV4dC5jcHAKQEAgLTIzNyw2ICsyMzcsMTEgQEAgSlND
OjpKU09iamVjdCoganNjQ29udGV4dEdldE9yQ3JlYXRlSlNXcmFwcGVyKEpTQ0NvbnRleHQqIGNv
bnRleHQsIEpTQ2xhc3NSZWYganMKICAgICByZXR1cm4gd3JhcHBlck1hcChjb250ZXh0KS5jcmVh
dGVKU1dyYXBwcGVyKGNvbnRleHQtPnByaXYtPmpzQ29udGV4dC5nZXQoKSwganNDbGFzcywgcHJv
dG90eXBlLCB3cmFwcGVkT2JqZWN0LCBkZXN0cm95RnVuY3Rpb24pOwogfQogCitKU0dsb2JhbENv
bnRleHRSZWYganNjQ29udGV4dENyZWF0ZUNvbnRleHRXaXRoSlNXcmFwcGVyKEpTQ0NvbnRleHQq
IGNvbnRleHQsIEpTQ2xhc3NSZWYganNDbGFzcywgSlNWYWx1ZVJlZiBwcm90b3R5cGUsIGdwb2lu
dGVyIHdyYXBwZWRPYmplY3QsIEdEZXN0cm95Tm90aWZ5IGRlc3Ryb3lGdW5jdGlvbikKK3sKKyAg
ICByZXR1cm4gd3JhcHBlck1hcChjb250ZXh0KS5jcmVhdGVDb250ZXh0V2l0aEpTV3JhcHBwZXIo
anNjVmlydHVhbE1hY2hpbmVHZXRDb250ZXh0R3JvdXAoY29udGV4dC0+cHJpdi0+dm0uZ2V0KCkp
LCBqc0NsYXNzLCBwcm90b3R5cGUsIHdyYXBwZWRPYmplY3QsIGRlc3Ryb3lGdW5jdGlvbik7Cit9
CisKIGdwb2ludGVyIGpzY0NvbnRleHRXcmFwcGVkT2JqZWN0KEpTQ0NvbnRleHQqIGNvbnRleHQs
IEpTT2JqZWN0UmVmIGpzT2JqZWN0KQogewogICAgIHJldHVybiB3cmFwcGVyTWFwKGNvbnRleHQp
LndyYXBwZWRPYmplY3QoY29udGV4dC0+cHJpdi0+anNDb250ZXh0LmdldCgpLCBqc09iamVjdCk7
CkBAIC03OTUsNiArODAwLDcgQEAgSlNDVmFsdWUqIGpzY19jb250ZXh0X2V2YWx1YXRlX3dpdGhf
c291cmNlX3VyaShKU0NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBjaGFyKgogICogQGNvbnRleHQ6
IGEgI0pTQ0NvbnRleHQKICAqIEBjb2RlOiBhIEphdmFTY3JpcHQgc2NyaXB0IHRvIGV2YWx1YXRl
CiAgKiBAbGVuZ3RoOiBsZW5ndGggb2YgQGNvZGUsIG9yIC0xIGlmIEBjb2RlIGlzIGEgbnVsLXRl
cm1pbmF0ZWQgc3RyaW5nCisgKiBAb2JqZWN0X2luc3RhbmNlOiAobnVsbGFibGUpOiBhbiBvYmpl
Y3QgaW5zdGFuY2UKICAqIEBvYmplY3RfY2xhc3M6IChudWxsYWJsZSk6IGEgI0pTQ0NsYXNzIG9y
ICVOVUxMIHRvIHVzZSB0aGUgZGVmYXVsdAogICogQHVyaTogdGhlIHNvdXJjZSBVUkkKICAqIEBs
aW5lX251bWJlcjogdGhlIHN0YXJ0aW5nIGxpbmUgbnVtYmVyCkBAIC04MDIsMTkgKzgwOCwyMSBA
QCBKU0NWYWx1ZSoganNjX2NvbnRleHRfZXZhbHVhdGVfd2l0aF9zb3VyY2VfdXJpKEpTQ0NvbnRl
eHQqIGNvbnRleHQsIGNvbnN0IGNoYXIqCiAgKgogICogRXZhbHVhdGUgQGNvZGUgYW5kIGNyZWF0
ZSBhbiBuZXcgb2JqZWN0IHdoZXJlIHN5bWJvbHMgZGVmaW5lZCBpbiBAY29kZSB3aWxsIGJlIGFk
ZGVkIGFzIHByb3BlcnRpZXMsCiAgKiBpbnN0ZWFkIG9mIGJlaW5nIGFkZGVkIHRvIEBjb250ZXh0
IGdsb2JhbCBvYmplY3QuIFRoZSBuZXcgb2JqZWN0IGlzIHJldHVybmVkIGFzIEBvYmplY3QgcGFy
YW1ldGVyLgorICogU2ltaWxhciB0byBob3cganNjX3ZhbHVlX25ld19vYmplY3QoKSB3b3Jrcywg
aWYgQG9iamVjdF9pbnN0YW5jZSBpcyBub3QgJU5VTEwgQG9iamVjdF9jbGFzcyBtdXN0IGJlIHBy
b3ZpZGVkIHRvby4KICAqIFRoZSBAbGluZV9udW1iZXIgaXMgdGhlIHN0YXJ0aW5nIGxpbmUgbnVt
YmVyIGluIEB1cmk7IHRoZSB2YWx1ZSBpcyBvbmUtYmFzZWQgc28gdGhlIGZpcnN0IGxpbmUgaXMg
MS4KICAqIEB1cmkgYW5kIEBsaW5lX251bWJlciB3aWxsIGJlIHNob3duIGluIGV4Y2VwdGlvbnMg
YW5kIHRoZXkgZG9uJ3QgYWZmZWN0IHRoZSBiZWhhdmlvciBvZiB0aGUgc2NyaXB0LgogICoKICAq
IFJldHVybnM6ICh0cmFuc2ZlciBmdWxsKTogYSAjSlNDVmFsdWUgcmVwcmVzZW50aW5nIHRoZSBs
YXN0IHZhbHVlIGdlbmVyYXRlZCBieSB0aGUgc2NyaXB0LgogICovCi1KU0NWYWx1ZSoganNjX2Nv
bnRleHRfZXZhbHVhdGVfaW5fb2JqZWN0KEpTQ0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IGNoYXIq
IGNvZGUsIGdzc2l6ZSBsZW5ndGgsIEpTQ0NsYXNzKiBvYmplY3RDbGFzcywgY29uc3QgY2hhciog
dXJpLCB1bnNpZ25lZCBsaW5lTnVtYmVyLCBKU0NWYWx1ZSoqIG9iamVjdCkKK0pTQ1ZhbHVlKiBq
c2NfY29udGV4dF9ldmFsdWF0ZV9pbl9vYmplY3QoSlNDQ29udGV4dCogY29udGV4dCwgY29uc3Qg
Y2hhciogY29kZSwgZ3NzaXplIGxlbmd0aCwgZ3BvaW50ZXIgaW5zdGFuY2UsIEpTQ0NsYXNzKiBv
YmplY3RDbGFzcywgY29uc3QgY2hhciogdXJpLCB1bnNpZ25lZCBsaW5lTnVtYmVyLCBKU0NWYWx1
ZSoqIG9iamVjdCkKIHsKICAgICBnX3JldHVybl92YWxfaWZfZmFpbChKU0NfSVNfQ09OVEVYVChj
b250ZXh0KSwgbnVsbHB0cik7CiAgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoY29kZSwgbnVsbHB0
cik7Ci0gICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoIW9iamVjdENsYXNzIHx8IEpTQ19JU19DTEFT
UyhvYmplY3RDbGFzcyksIG51bGxwdHIpOworICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKCFpbnN0
YW5jZSB8fCBKU0NfSVNfQ0xBU1Mob2JqZWN0Q2xhc3MpLCBudWxscHRyKTsKICAgICBnX3JldHVy
bl92YWxfaWZfZmFpbChvYmplY3QgJiYgISpvYmplY3QsIG51bGxwdHIpOwogCi0gICAgSlNSZXRh
aW5QdHI8SlNHbG9iYWxDb250ZXh0UmVmPiBvYmplY3RDb250ZXh0KEFkb3B0LCBKU0dsb2JhbENv
bnRleHRDcmVhdGVJbkdyb3VwKGpzY1ZpcnR1YWxNYWNoaW5lR2V0Q29udGV4dEdyb3VwKGNvbnRl
eHQtPnByaXYtPnZtLmdldCgpKSwgb2JqZWN0Q2xhc3MgPyBqc2NDbGFzc0dldEpTQ2xhc3Mob2Jq
ZWN0Q2xhc3MpIDogbnVsbHB0cikpOworICAgIEpTUmV0YWluUHRyPEpTR2xvYmFsQ29udGV4dFJl
Zj4gb2JqZWN0Q29udGV4dChBZG9wdCwKKyAgICAgICAgaW5zdGFuY2UgPyBqc2NDbGFzc0NyZWF0
ZUNvbnRleHRXaXRoSlNXcmFwcGVyKG9iamVjdENsYXNzLCBpbnN0YW5jZSkgOiBKU0dsb2JhbENv
bnRleHRDcmVhdGVJbkdyb3VwKGpzY1ZpcnR1YWxNYWNoaW5lR2V0Q29udGV4dEdyb3VwKGNvbnRl
eHQtPnByaXYtPnZtLmdldCgpKSwgbnVsbHB0cikpOwogICAgIEpTQzo6RXhlY1N0YXRlKiBleGVj
ID0gdG9KUyhvYmplY3RDb250ZXh0LmdldCgpKTsKICAgICBhdXRvKiBqc09iamVjdCA9IGV4ZWMt
PnZtRW50cnlHbG9iYWxPYmplY3QoKTsKICAgICBqc09iamVjdC0+c2V0R2xvYmFsU2NvcGVFeHRl
bnNpb24oSlNDOjpKU1dpdGhTY29wZTo6Y3JlYXRlKGV4ZWMtPnZtKCksIGpzT2JqZWN0LCBqc09i
amVjdC0+Z2xvYmFsU2NvcGUoKSwgdG9KUyhKU0NvbnRleHRHZXRHbG9iYWxPYmplY3QoY29udGV4
dC0+cHJpdi0+anNDb250ZXh0LmdldCgpKSkpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9BUEkvZ2xpYi9KU0NDb250ZXh0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJ
L2dsaWIvSlNDQ29udGV4dC5oCmluZGV4IGVlZDdlNzU2YTAwLi5mMzBkNGU2MzQ2MSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9nbGliL0pTQ0NvbnRleHQuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL2dsaWIvSlNDQ29udGV4dC5oCkBAIC0xMzIsNiArMTMy
LDcgQEAgSlNDX0FQSSBKU0NWYWx1ZSAqCiBqc2NfY29udGV4dF9ldmFsdWF0ZV9pbl9vYmplY3Qg
ICAgICAgKEpTQ0NvbnRleHQgICAgICAgICAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAgICAgICAgICpjb2RlLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBnc3NpemUgICAgICAgICAgICAgIGxlbmd0aCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3BvaW50ZXIgICAgICAgICAgICBv
YmplY3RfaW5zdGFuY2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEpT
Q0NsYXNzICAgICAgICAgICAqb2JqZWN0X2NsYXNzLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBjaGFyICAgICAgICAgKnVyaSwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgZ3VpbnQgICAgICAgICAgICAgICBsaW5lX251bWJlciwKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvZ2xpYi9KU0NDb250ZXh0UHJpdmF0
ZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9nbGliL0pTQ0NvbnRleHRQcml2YXRlLmgK
aW5kZXggNjYxYzNkZjA4MDYuLmZjNzI3MGVkNTJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvQVBJL2dsaWIvSlNDQ29udGV4dFByaXZhdGUuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvQVBJL2dsaWIvSlNDQ29udGV4dFByaXZhdGUuaApAQCAtMzEsNiArMzEsNyBAQCBH
UmVmUHRyPEpTQ1ZhbHVlPiBqc2NDb250ZXh0R2V0T3JDcmVhdGVWYWx1ZShKU0NDb250ZXh0Kiwg
SlNWYWx1ZVJlZik7CiB2b2lkIGpzY0NvbnRleHRWYWx1ZURlc3Ryb3llZChKU0NDb250ZXh0Kiwg
SlNWYWx1ZVJlZik7CiBKU0M6OkpTT2JqZWN0KiBqc2NDb250ZXh0R2V0SlNXcmFwcGVyKEpTQ0Nv
bnRleHQqLCBncG9pbnRlcik7CiBKU0M6OkpTT2JqZWN0KiBqc2NDb250ZXh0R2V0T3JDcmVhdGVK
U1dyYXBwZXIoSlNDQ29udGV4dCosIEpTQ2xhc3NSZWYsIEpTVmFsdWVSZWYgcHJvdG90eXBlID0g
bnVsbHB0ciwgZ3BvaW50ZXIgPSBudWxscHRyLCBHRGVzdHJveU5vdGlmeSA9IG51bGxwdHIpOwor
SlNHbG9iYWxDb250ZXh0UmVmIGpzY0NvbnRleHRDcmVhdGVDb250ZXh0V2l0aEpTV3JhcHBlcihK
U0NDb250ZXh0KiwgSlNDbGFzc1JlZiwgSlNWYWx1ZVJlZiBwcm90b3R5cGUgPSBudWxscHRyLCBn
cG9pbnRlciA9IG51bGxwdHIsIEdEZXN0cm95Tm90aWZ5ID0gbnVsbHB0cik7CiBncG9pbnRlciBq
c2NDb250ZXh0V3JhcHBlZE9iamVjdChKU0NDb250ZXh0KiwgSlNPYmplY3RSZWYpOwogSlNDQ2xh
c3MqIGpzY0NvbnRleHRHZXRSZWdpc3RlcmVkQ2xhc3MoSlNDQ29udGV4dCosIEpTQ2xhc3NSZWYp
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL2dsaWIvSlNDV3JhcHBl
ck1hcC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL2dsaWIvSlNDV3JhcHBlck1hcC5j
cHAKaW5kZXggODkzY2U2ZjdhZDcuLjExYmI3YzBiODczIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQVBJL2dsaWIvSlNDV3JhcHBlck1hcC5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL0FQSS9nbGliL0pTQ1dyYXBwZXJNYXAuY3BwCkBAIC0yMSw2ICsyMSw3IEBACiAj
aW5jbHVkZSAiSlNDV3JhcHBlck1hcC5oIgogCiAjaW5jbHVkZSAiQVBJQ2FzdC5oIgorI2luY2x1
ZGUgIkpTQVBJV3JhcHBlckdsb2JhbE9iamVjdC5oIgogI2luY2x1ZGUgIkpTQVBJV3JhcHBlck9i
amVjdC5oIgogI2luY2x1ZGUgIkpTQ0NsYXNzUHJpdmF0ZS5oIgogI2luY2x1ZGUgIkpTQ0NvbnRl
eHRQcml2YXRlLmgiCkBAIC05MSw2ICs5MiwyNiBAQCBKU09iamVjdCogV3JhcHBlck1hcDo6Y3Jl
YXRlSlNXcmFwcHBlcihKU0dsb2JhbENvbnRleHRSZWYganNDb250ZXh0LCBKU0NsYXNzUmVmCiAg
ICAgcmV0dXJuIG9iamVjdDsKIH0KIAorSlNHbG9iYWxDb250ZXh0UmVmIFdyYXBwZXJNYXA6OmNy
ZWF0ZUNvbnRleHRXaXRoSlNXcmFwcHBlcihKU0NvbnRleHRHcm91cFJlZiBqc0dyb3VwLCBKU0Ns
YXNzUmVmIGpzQ2xhc3MsIEpTVmFsdWVSZWYgcHJvdG90eXBlLCBncG9pbnRlciB3cmFwcGVkT2Jq
ZWN0LCBHRGVzdHJveU5vdGlmeSBkZXN0cm95RnVuY3Rpb24pCit7CisgICAgUmVmPFZNPiB2bSgq
dG9KUyhqc0dyb3VwKSk7CisgICAgSlNMb2NrSG9sZGVyIGxvY2tlcih2bS5wdHIoKSk7CisgICAg
YXV0byogZ2xvYmFsT2JqZWN0ID0gSlNDYWxsYmFja09iamVjdDxKU0FQSVdyYXBwZXJHbG9iYWxP
YmplY3Q+OjpjcmVhdGUodm0uZ2V0KCksIGpzQ2xhc3MsIEpTQ2FsbGJhY2tPYmplY3Q8SlNBUElX
cmFwcGVyR2xvYmFsT2JqZWN0Pjo6Y3JlYXRlU3RydWN0dXJlKHZtLmdldCgpLCBudWxscHRyLCBq
c051bGwoKSkpOworICAgIGlmICh3cmFwcGVkT2JqZWN0KSB7CisgICAgICAgIGdsb2JhbE9iamVj
dC0+c2V0V3JhcHBlZE9iamVjdChuZXcgSlNDOjpKU0NHTGliV3JhcHBlck9iamVjdCh3cmFwcGVk
T2JqZWN0LCBkZXN0cm95RnVuY3Rpb24pKTsKKyAgICAgICAgbV9jYWNoZWRKU1dyYXBwZXJzLT5z
ZXQod3JhcHBlZE9iamVjdCwgZ2xvYmFsT2JqZWN0KTsKKyAgICB9CisgICAgRXhlY1N0YXRlKiBl
eGVjID0gZ2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVjKCk7CisgICAgaWYgKHByb3RvdHlwZSkKKyAg
ICAgICAgZ2xvYmFsT2JqZWN0LT5yZXNldFByb3RvdHlwZSh2bS5nZXQoKSwgdG9KUyhleGVjLCBw
cm90b3R5cGUpKTsKKyAgICBlbHNlIGlmIChhdXRvIGpzUHJvdG90eXBlID0ganNDbGFzcy0+cHJv
dG90eXBlKGV4ZWMpKQorICAgICAgICBnbG9iYWxPYmplY3QtPnJlc2V0UHJvdG90eXBlKHZtLmdl
dCgpLCBqc1Byb3RvdHlwZSk7CisgICAgZWxzZQorICAgICAgICBnbG9iYWxPYmplY3QtPnJlc2V0
UHJvdG90eXBlKHZtLmdldCgpLCBqc051bGwoKSk7CisKKyAgICByZXR1cm4gSlNHbG9iYWxDb250
ZXh0UmV0YWluKHRvR2xvYmFsUmVmKGV4ZWMpKTsKK30KKwogSlNPYmplY3QqIFdyYXBwZXJNYXA6
OmpzV3JhcHBlcihncG9pbnRlciB3cmFwcGVkT2JqZWN0KSBjb25zdAogewogICAgIGlmICghd3Jh
cHBlZE9iamVjdCkKQEAgLTEwOCw2ICsxMjksMTAgQEAgZ3BvaW50ZXIgV3JhcHBlck1hcDo6d3Jh
cHBlZE9iamVjdChKU0dsb2JhbENvbnRleHRSZWYganNDb250ZXh0LCBKU09iamVjdFJlZiBqc08K
ICAgICAgICAgaWYgKGF1dG8qIHdyYXBwZXIgPSBKU0M6OmpzQ2FzdDxKU0M6OkpTQVBJV3JhcHBl
ck9iamVjdCo+KG9iamVjdCktPndyYXBwZWRPYmplY3QoKSkKICAgICAgICAgICAgIHJldHVybiBz
dGF0aWNfY2FzdDxKU0M6OkpTQ0dMaWJXcmFwcGVyT2JqZWN0Kj4od3JhcHBlciktPm9iamVjdCgp
OwogICAgIH0KKyAgICBpZiAob2JqZWN0LT5pbmhlcml0cyh2bSwgSlNDOjpKU0NhbGxiYWNrT2Jq
ZWN0PEpTQzo6SlNBUElXcmFwcGVyR2xvYmFsT2JqZWN0Pjo6aW5mbygpKSkgeworICAgICAgICBp
ZiAoYXV0byogd3JhcHBlciA9IEpTQzo6anNDYXN0PEpTQzo6SlNBUElXcmFwcGVyR2xvYmFsT2Jq
ZWN0Kj4ob2JqZWN0KS0+d3JhcHBlZE9iamVjdCgpKQorICAgICAgICAgICAgcmV0dXJuIHdyYXBw
ZXItPm9iamVjdCgpOworICAgIH0KICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9nbGliL0pTQ1dyYXBwZXJNYXAuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9BUEkvZ2xpYi9KU0NXcmFwcGVyTWFwLmgKaW5kZXggNzZlZjRkNTBi
ZjUuLjUyOTJlMTQ0ZDBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL2ds
aWIvSlNDV3JhcHBlck1hcC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvZ2xpYi9K
U0NXcmFwcGVyTWFwLmgKQEAgLTQ4LDYgKzQ4LDcgQEAgcHVibGljOgogICAgIEpTQ0NsYXNzKiBy
ZWdpc3RlcmVkQ2xhc3MoSlNDbGFzc1JlZikgY29uc3Q7CiAKICAgICBKU09iamVjdCogY3JlYXRl
SlNXcmFwcHBlcihKU0dsb2JhbENvbnRleHRSZWYsIEpTQ2xhc3NSZWYsIEpTVmFsdWVSZWYgcHJv
dG90eXBlLCBncG9pbnRlciwgR0Rlc3Ryb3lOb3RpZnkpOworICAgIEpTR2xvYmFsQ29udGV4dFJl
ZiBjcmVhdGVDb250ZXh0V2l0aEpTV3JhcHBwZXIoSlNDb250ZXh0R3JvdXBSZWYsIEpTQ2xhc3NS
ZWYsIEpTVmFsdWVSZWYgcHJvdG90eXBlLCBncG9pbnRlciwgR0Rlc3Ryb3lOb3RpZnkpOwogICAg
IEpTT2JqZWN0KiBqc1dyYXBwZXIoZ3BvaW50ZXIgd3JhcHBlZE9iamVjdCkgY29uc3Q7CiAgICAg
Z3BvaW50ZXIgd3JhcHBlZE9iamVjdChKU0dsb2JhbENvbnRleHRSZWYsIEpTT2JqZWN0UmVmKSBj
b25zdDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKaW5kZXggZjI1YTc1Y2I5ZGYuLjI3NzBmOGJi
YmRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw1MCBAQAorMjAxOC0wNy0x
OSAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CisKKyAgICAgICAg
W0dMSUJdIGpzY19jb250ZXh0X2V2YWx1YXRlX2luX29iamVjdCgpIHNob3VsZCByZWNlaXZlIGFu
IGluc3RhbmNlIHdoZW4gYSBKU0NDbGFzcyBpcyBnaXZlbgorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTg3Nzk4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQmVjYXVzZSBhIEpTQ0NsYXNzIGlzIHByZXR0eSBt
dWNoIHVzZWxlc3Mgd2l0aG91dCBhbiBpbnN0YW5jZSBpbiB0aGlzIGNhc2UuIEl0IHNob3VsZCBi
ZSBzaW1pbGFyIHRvCisgICAgICAgIGpzY192YWx1ZV9uZXdfb2JqZWN0KCkgYmVjYXVzZSBpbmRl
ZWQgd2UgYXJlIGNyZWF0aW5nIGEgbmV3IG9iamVjdC4gVGhpcyBtYWtlcyBkZXN0cm95IGZ1bmN0
aW9uIGFuZCB2dGFibGUKKyAgICAgICAgZnVuY3Rpb25zIHRvIHdvcmsuIFdlIGNhbid0IHVzZSBK
U0FQSVdyYXBwZXJPYmplY3QgdG8gd3JhcCB0aGlzIG9iamVjdCwgYmVjYXVzZSBpdCdzIGEgZ2xv
YmFsIG9iamVjdCwgc28gdGhpcworICAgICAgICBwYXRjaCBhZGRzIEpTQVBJV3JhcHBlckdsb2Jh
bE9iamVjdCBvciB0aGF0LgorCisgICAgICAgICogQVBJL2dsaWIvSlNBUElXcmFwcGVyR2xvYmFs
T2JqZWN0LmNwcDogQWRkZWQuCisgICAgICAgIChqc0FQSVdyYXBwZXJHbG9iYWxPYmplY3RIYW5k
bGVPd25lcik6CisgICAgICAgIChKU0FQSVdyYXBwZXJHbG9iYWxPYmplY3RIYW5kbGVPd25lcjo6
ZmluYWxpemUpOgorICAgICAgICAoSlNDOjpKU0NhbGxiYWNrT2JqZWN0PEpTQVBJV3JhcHBlckds
b2JhbE9iamVjdD46OmNyZWF0ZVN0cnVjdHVyZSk6CisgICAgICAgIChKU0M6OkpTQ2FsbGJhY2tP
YmplY3Q8SlNBUElXcmFwcGVyR2xvYmFsT2JqZWN0Pjo6Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6
SlNBUElXcmFwcGVyR2xvYmFsT2JqZWN0OjpKU0FQSVdyYXBwZXJHbG9iYWxPYmplY3QpOgorICAg
ICAgICAoSlNDOjpKU0FQSVdyYXBwZXJHbG9iYWxPYmplY3Q6OmZpbmlzaENyZWF0aW9uKToKKyAg
ICAgICAgKEpTQzo6SlNBUElXcmFwcGVyR2xvYmFsT2JqZWN0Ojp2aXNpdENoaWxkcmVuKToKKyAg
ICAgICAgKiBBUEkvZ2xpYi9KU0FQSVdyYXBwZXJHbG9iYWxPYmplY3QuaDogQWRkZWQuCisgICAg
ICAgIChKU0M6OkpTQVBJV3JhcHBlckdsb2JhbE9iamVjdDo6d3JhcHBlZE9iamVjdCBjb25zdCk6
CisgICAgICAgIChKU0M6OkpTQVBJV3JhcHBlckdsb2JhbE9iamVjdDo6c2V0V3JhcHBlZE9iamVj
dCk6CisgICAgICAgICogQVBJL2dsaWIvSlNDQ2xhc3MuY3BwOgorICAgICAgICAoaXNXcmFwcGVk
T2JqZWN0KTogSGVscGVyIHRvIGNoZWNrIGlmIHRoZSBnaXZlbiBvYmplY3QgaXMgYSBKU0FQSVdy
YXBwZXJPYmplY3Qgb3IgSlNBUElXcmFwcGVyR2xvYmFsT2JqZWN0LgorICAgICAgICAod3JhcHBl
ZE9iamVjdENsYXNzKTogUmV0dXJuIHRoZSBjbGFzcyBvZiBhIHdyYXBwZWQgb2JqZWN0LgorICAg
ICAgICAoanNjQ29udGV4dEZvck9iamVjdCk6IEdldCB0aGUgZXhlY3V0aW9uIGNvbnRleHQgb2Yg
YW4gb2JqZWN0LiBJZiB0aGUgb2JqZWN0IGlzIGEgSlNBUElXcmFwcGVyR2xvYmFsT2JqZWN0LCB0
aGUKKyAgICAgICAgc2NvcGUgZXh0ZW5zaW9uIGdsb2JhbCBvYmplY3QgaXMgdXNlZCBpbnN0ZWFk
LgorICAgICAgICAoZ2V0UHJvcGVydHkpOiBVc2UgaXNXcmFwcGVkT2JqZWN0LCB3cmFwcGVkT2Jq
ZWN0Q2xhc3MgYW5kIGpzY0NvbnRleHRGb3JPYmplY3QuCisgICAgICAgIChzZXRQcm9wZXJ0eSk6
IERpdHRvLgorICAgICAgICAoaGFzUHJvcGVydHkpOiBEaXR0by4KKyAgICAgICAgKGRlbGV0ZVBy
b3BlcnR5KTogRGl0dG8uCisgICAgICAgIChnZXRQcm9wZXJ0eU5hbWVzKTogRGl0dG8uCisgICAg
ICAgIChqc2NDbGFzc0NyZWF0ZUNvbnRleHRXaXRoSlNXcmFwcGVyKTogQ2FsbCBqc2NDb250ZXh0
Q3JlYXRlQ29udGV4dFdpdGhKU1dyYXBwZXIoKS4KKyAgICAgICAgKiBBUEkvZ2xpYi9KU0NDbGFz
c1ByaXZhdGUuaDoKKyAgICAgICAgKiBBUEkvZ2xpYi9KU0NDb250ZXh0LmNwcDoKKyAgICAgICAg
KGpzY0NvbnRleHRDcmVhdGVDb250ZXh0V2l0aEpTV3JhcHBlcik6IENhbGwgV3JhcHBlck1hcDo6
Y3JlYXRlQ29udGV4dFdpdGhKU1dyYXBwcGVyKCkuCisgICAgICAgIChqc2NfY29udGV4dF9ldmFs
dWF0ZV9pbl9vYmplY3QpOiBVc2UganNjQ2xhc3NDcmVhdGVDb250ZXh0V2l0aEpTV3JhcHBlcigp
IHdoZW4gYSBKU0NDbGFzcyBpcyBnaXZlbi4KKyAgICAgICAgKiBBUEkvZ2xpYi9KU0NDb250ZXh0
Lmg6CisgICAgICAgICogQVBJL2dsaWIvSlNDQ29udGV4dFByaXZhdGUuaDoKKyAgICAgICAgKiBB
UEkvZ2xpYi9KU0NXcmFwcGVyTWFwLmNwcDoKKyAgICAgICAgKEpTQzo6V3JhcHBlck1hcDo6Y3Jl
YXRlQ29udGV4dFdpdGhKU1dyYXBwcGVyKTogQ3JlYXRlIHRoZSBuZXcgY29udGV4dCBmb3IganNj
X2NvbnRleHRfZXZhbHVhdGVfaW5fb2JqZWN0KCkgaGVyZQorICAgICAgICB3aGVuIGEgSlNDQ2xh
c3MgaXMgdXNlZCB0byBjcmVhdGUgdGhlIEpTQVBJV3JhcHBlckdsb2JhbE9iamVjdC4KKyAgICAg
ICAgKEpTQzo6V3JhcHBlck1hcDo6d3JhcHBlZE9iamVjdCBjb25zdCk6IFJldHVybiB0aGUgd3Jh
cHBlZCBvYmplY3QgYWxzbyBpbiBjYXNlIG9mIEpTQVBJV3JhcHBlckdsb2JhbE9iamVjdC4KKyAg
ICAgICAgKiBBUEkvZ2xpYi9KU0NXcmFwcGVyTWFwLmg6CisgICAgICAgICogR0xpYi5jbWFrZToK
KwogMjAxOC0wNy0xOCAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+
CiAKICAgICAgICAgW0dMSUJdIEFkZCBqc2NfY29udGV4dF9jaGVja19zeW50YXgoKSB0byBHTGli
IEFQSQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0dMaWIuY21ha2UgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvR0xpYi5jbWFrZQppbmRleCAyNDNlZjNkYTAzNS4uZGM4NWY0ZTdj
NTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9HTGliLmNtYWtlCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9HTGliLmNtYWtlCkBAIC0yLDYgKzIsNyBAQCBmaWxlKE1BS0Vf
RElSRUNUT1JZICR7Rk9SV0FSRElOR19IRUFERVJTX0RJUn0vSmF2YVNjcmlwdENvcmUvZ2xpYikK
IGZpbGUoTUFLRV9ESVJFQ1RPUlkgJHtERVJJVkVEX1NPVVJDRVNfSkFWQVNDUklQQ09SRV9HTElC
X0FQSV9ESVJ9KQogCiBsaXN0KEFQUEVORCBKYXZhU2NyaXB0Q29yZV9TT1VSQ0VTCisgICAgQVBJ
L2dsaWIvSlNBUElXcmFwcGVyR2xvYmFsT2JqZWN0LmNwcAogICAgIEFQSS9nbGliL0pTQVBJV3Jh
cHBlck9iamVjdEdMaWIuY3BwCiAgICAgQVBJL2dsaWIvSlNDQ2FsbGJhY2tGdW5jdGlvbi5jcHAK
ICAgICBBUEkvZ2xpYi9KU0NDbGFzcy5jcHAKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBi
L1Rvb2xzL0NoYW5nZUxvZwppbmRleCAxZGUyNzc4MzczOC4uZDhiYTUwODIyM2EgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNiBA
QAorMjAxOC0wNy0xOSAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+
CisKKyAgICAgICAgW0dMSUJdIGpzY19jb250ZXh0X2V2YWx1YXRlX2luX29iamVjdCgpIHNob3Vs
ZCByZWNlaXZlIGFuIGluc3RhbmNlIHdoZW4gYSBKU0NDbGFzcyBpcyBnaXZlbgorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTg3Nzk4CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVXBkYXRlIHRlc3QgY2FzZXMg
dG8gdGhlIG5ldyBBUEkgYW5kIHVzZSBhIGRlc3Ryb3kgZnVuY3Rpb24gYW5kIHZ0YWJsZSBpbiB0
aGUgdGVzdCBjYXNlIG9mIGNhbGxpbmcKKyAgICAgICAganNjX2NvbnRleHRfZXZhbHVhdGVfaW5f
b2JqZWN0KCkgd2l0aCBhIEpTQ0NsYXNzLgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0
cy9KYXZhU2NyaXB0Q29yZS9nbGliL1Rlc3RKU0MuY3BwOgorICAgICAgICAodGVzdEpTQ0V2YWx1
YXRlSW5PYmplY3QpOgorCiAyMDE4LTA3LTE4ICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJj
aWFAaWdhbGlhLmNvbT4KIAogICAgICAgICBbR0xJQl0gQWRkIGpzY19jb250ZXh0X2NoZWNrX3N5
bnRheCgpIHRvIEdMaWIgQVBJCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L0phdmFTY3JpcHRDb3JlL2dsaWIvVGVzdEpTQy5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL0phdmFTY3JpcHRDb3JlL2dsaWIvVGVzdEpTQy5jcHAKaW5kZXggOGYzYzk1NWRmMWYuLjRh
Y2E4ZTIzZTc4IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL0phdmFTY3Jp
cHRDb3JlL2dsaWIvVGVzdEpTQy5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9K
YXZhU2NyaXB0Q29yZS9nbGliL1Rlc3RKU0MuY3BwCkBAIC02MDcsMTE2ICs2MDcsMTYwIEBAIHN0
YXRpYyB2b2lkIHRlc3RKU0NHbG9iYWxPYmplY3QoKQogICAgIGdfYXNzZXJ0X3RydWUod2luZG93
Mi5nZXQoKSA9PSBnbG9iYWxPYmplY3QuZ2V0KCkpOwogfQogCit0eXBlZGVmIHN0cnVjdCB7Cisg
ICAgY29uc3QgY2hhciogbmFtZTsKKyAgICBib29sIHdhc0RlbGV0ZWQ7Cit9IE1vZHVsZTsKKwor
c3RhdGljIEpTQ0NsYXNzVlRhYmxlIG1vZHVsZVZUYWJsZSA9IHsKKyAgICAvLyBnZXRfcHJvcGVy
dHkKKyAgICBbXShKU0NDbGFzcyoganNjQ2xhc3MsIEpTQ0NvbnRleHQqIGNvbnRleHQsIGdwb2lu
dGVyIGluc3RhbmNlLCBjb25zdCBjaGFyKiBuYW1lKSAtPiBKU0NWYWx1ZSogeworICAgICAgICBh
dXRvKiBjaGVja2VyID0gc3RhdGljX2Nhc3Q8TGVha0NoZWNrZXIqPihnX29iamVjdF9nZXRfZGF0
YShHX09CSkVDVChqc2NDbGFzcyksICJsZWFrLWNoZWNrZXIiKSk7CisgICAgICAgIGNoZWNrZXIt
PndhdGNoKGNvbnRleHQpOworCisgICAgICAgIGlmIChnX3N0cmNtcDAobmFtZSwgIm5hbWUiKSkK
KyAgICAgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgICAgIGF1dG8qIG1vZHVsZSA9IHN0
YXRpY19jYXN0PE1vZHVsZSo+KGluc3RhbmNlKTsKKyAgICAgICAgYXV0byogcmV0dXJuVmFsdWUg
PSBqc2NfdmFsdWVfbmV3X3N0cmluZyhjb250ZXh0LCBtb2R1bGUtPm5hbWUpOworICAgICAgICBj
aGVja2VyLT53YXRjaChyZXR1cm5WYWx1ZSk7CisgICAgICAgIHJldHVybiByZXR1cm5WYWx1ZTsK
KyAgICB9LAorICAgIC8vIHNldF9wcm9wZXJ0eQorICAgIG51bGxwdHIsCisgICAgLy8gaGFzX3By
b3BlcnR5CisgICAgbnVsbHB0ciwKKyAgICAvLyBkZWxldGVfcHJvcGVydHkKKyAgICBudWxscHRy
LAorICAgIC8vIGVudW1lcmF0ZV9wcm9wZXJ0aWVzCisgICAgbnVsbHB0ciwKKyAgICAvLyBwYWRk
aW5nCisgICAgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0cgorfTsKKwogc3RhdGlj
IHZvaWQgdGVzdEpTQ0V2YWx1YXRlSW5PYmplY3QoKQogewotICAgIExlYWtDaGVja2VyIGNoZWNr
ZXI7Ci0gICAgR1JlZlB0cjxKU0NDb250ZXh0PiBjb250ZXh0ID0gYWRvcHRHUmVmKGpzY19jb250
ZXh0X25ldygpKTsKLSAgICBjaGVja2VyLndhdGNoKGNvbnRleHQuZ2V0KCkpOwotICAgIEV4Y2Vw
dGlvbkhhbmRsZXIgZXhjZXB0aW9uSGFuZGxlcihjb250ZXh0LmdldCgpKTsKKyAgICBNb2R1bGUg
bW9kdWxlT2JqZWN0ID0geyAiTW9kdWxlV2l0aENsYXNzIiwgZmFsc2UgfTsKKyAgICB7CisgICAg
ICAgIExlYWtDaGVja2VyIGNoZWNrZXI7CisgICAgICAgIEdSZWZQdHI8SlNDQ29udGV4dD4gY29u
dGV4dCA9IGFkb3B0R1JlZihqc2NfY29udGV4dF9uZXcoKSk7CisgICAgICAgIGNoZWNrZXIud2F0
Y2goY29udGV4dC5nZXQoKSk7CisgICAgICAgIEV4Y2VwdGlvbkhhbmRsZXIgZXhjZXB0aW9uSGFu
ZGxlcihjb250ZXh0LmdldCgpKTsKIAotICAgIEdSZWZQdHI8SlNDVmFsdWU+IHJlc3VsdCA9IGFk
b3B0R1JlZihqc2NfY29udGV4dF9ldmFsdWF0ZShjb250ZXh0LmdldCgpLCAiZyA9IDU0OyBmdW5j
dGlvbiBmb28oKSB7IHJldHVybiA0MjsgfSIsIC0xKSk7Ci0gICAgY2hlY2tlci53YXRjaChyZXN1
bHQuZ2V0KCkpOworICAgICAgICBHUmVmUHRyPEpTQ1ZhbHVlPiByZXN1bHQgPSBhZG9wdEdSZWYo
anNjX2NvbnRleHRfZXZhbHVhdGUoY29udGV4dC5nZXQoKSwgImcgPSA1NDsgZnVuY3Rpb24gZm9v
KCkgeyByZXR1cm4gNDI7IH0iLCAtMSkpOworICAgICAgICBjaGVja2VyLndhdGNoKHJlc3VsdC5n
ZXQoKSk7CiAKLSAgICBHUmVmUHRyPEpTQ1ZhbHVlPiBnbG9iYWxPYmplY3QgPSBhZG9wdEdSZWYo
anNjX2NvbnRleHRfZ2V0X2dsb2JhbF9vYmplY3QoY29udGV4dC5nZXQoKSkpOwotICAgIGNoZWNr
ZXIud2F0Y2goZ2xvYmFsT2JqZWN0LmdldCgpKTsKKyAgICAgICAgR1JlZlB0cjxKU0NWYWx1ZT4g
Z2xvYmFsT2JqZWN0ID0gYWRvcHRHUmVmKGpzY19jb250ZXh0X2dldF9nbG9iYWxfb2JqZWN0KGNv
bnRleHQuZ2V0KCkpKTsKKyAgICAgICAgY2hlY2tlci53YXRjaChnbG9iYWxPYmplY3QuZ2V0KCkp
OwogCi0gICAgR1JlZlB0cjxKU0NWYWx1ZT4gcm9vdEZvbyA9IGFkb3B0R1JlZihqc2NfdmFsdWVf
b2JqZWN0X2dldF9wcm9wZXJ0eShnbG9iYWxPYmplY3QuZ2V0KCksICJmb28iKSk7Ci0gICAgY2hl
Y2tlci53YXRjaChyb290Rm9vLmdldCgpKTsKLSAgICBnX2Fzc2VydChqc2NfdmFsdWVfaXNfZnVu
Y3Rpb24ocm9vdEZvby5nZXQoKSkpOwotICAgIHJlc3VsdCA9IGFkb3B0R1JlZihqc2NfdmFsdWVf
ZnVuY3Rpb25fY2FsbChyb290Rm9vLmdldCgpLCBHX1RZUEVfTk9ORSkpOwotICAgIGNoZWNrZXIu
d2F0Y2gocmVzdWx0LmdldCgpKTsKLSAgICBnX2Fzc2VydF90cnVlKGpzY192YWx1ZV9pc19udW1i
ZXIocmVzdWx0LmdldCgpKSk7Ci0gICAgZ19hc3NlcnRfY21waW50KGpzY192YWx1ZV90b19pbnQz
MihyZXN1bHQuZ2V0KCkpLCA9PSwgNDIpOwotICAgIEdSZWZQdHI8SlNDVmFsdWU+IHZhbHVlID0g
YWRvcHRHUmVmKGpzY19jb250ZXh0X2V2YWx1YXRlKGNvbnRleHQuZ2V0KCksICJmb28oKSIsIC0x
KSk7Ci0gICAgY2hlY2tlci53YXRjaCh2YWx1ZS5nZXQoKSk7Ci0gICAgZ19hc3NlcnRfdHJ1ZSh2
YWx1ZS5nZXQoKSA9PSByZXN1bHQuZ2V0KCkpOworICAgICAgICBHUmVmUHRyPEpTQ1ZhbHVlPiBy
b290Rm9vID0gYWRvcHRHUmVmKGpzY192YWx1ZV9vYmplY3RfZ2V0X3Byb3BlcnR5KGdsb2JhbE9i
amVjdC5nZXQoKSwgImZvbyIpKTsKKyAgICAgICAgY2hlY2tlci53YXRjaChyb290Rm9vLmdldCgp
KTsKKyAgICAgICAgZ19hc3NlcnQoanNjX3ZhbHVlX2lzX2Z1bmN0aW9uKHJvb3RGb28uZ2V0KCkp
KTsKKyAgICAgICAgcmVzdWx0ID0gYWRvcHRHUmVmKGpzY192YWx1ZV9mdW5jdGlvbl9jYWxsKHJv
b3RGb28uZ2V0KCksIEdfVFlQRV9OT05FKSk7CisgICAgICAgIGNoZWNrZXIud2F0Y2gocmVzdWx0
LmdldCgpKTsKKyAgICAgICAgZ19hc3NlcnRfdHJ1ZShqc2NfdmFsdWVfaXNfbnVtYmVyKHJlc3Vs
dC5nZXQoKSkpOworICAgICAgICBnX2Fzc2VydF9jbXBpbnQoanNjX3ZhbHVlX3RvX2ludDMyKHJl
c3VsdC5nZXQoKSksID09LCA0Mik7CisgICAgICAgIEdSZWZQdHI8SlNDVmFsdWU+IHZhbHVlID0g
YWRvcHRHUmVmKGpzY19jb250ZXh0X2V2YWx1YXRlKGNvbnRleHQuZ2V0KCksICJmb28oKSIsIC0x
KSk7CisgICAgICAgIGNoZWNrZXIud2F0Y2godmFsdWUuZ2V0KCkpOworICAgICAgICBnX2Fzc2Vy
dF90cnVlKHZhbHVlLmdldCgpID09IHJlc3VsdC5nZXQoKSk7CiAKLSAgICBHUmVmUHRyPEpTQ1Zh
bHVlPiBtb2R1bGU7Ci0gICAgcmVzdWx0ID0gYWRvcHRHUmVmKGpzY19jb250ZXh0X2V2YWx1YXRl
X2luX29iamVjdChjb250ZXh0LmdldCgpLCAiZnVuY3Rpb24gYmFyKCkgeyByZXR1cm4gZzsgfSIs
IC0xLCBudWxscHRyLCBudWxscHRyLCAxLCAmbW9kdWxlLm91dFB0cigpKSk7Ci0gICAgY2hlY2tl
ci53YXRjaChyZXN1bHQuZ2V0KCkpOwotICAgIGNoZWNrZXIud2F0Y2gobW9kdWxlLmdldCgpKTsK
LSAgICBnX2Fzc2VydF90cnVlKEpTQ19JU19WQUxVRShtb2R1bGUuZ2V0KCkpKTsKLSAgICBnX2Fz
c2VydF90cnVlKGpzY192YWx1ZV9pc19vYmplY3QobW9kdWxlLmdldCgpKSk7Ci0gICAgR1VuaXF1
ZVB0cjxjaGFyPiB2YWx1ZVN0cmluZyhqc2NfdmFsdWVfdG9fc3RyaW5nKG1vZHVsZS5nZXQoKSkp
OwotICAgIGdfYXNzZXJ0X2NtcHN0cih2YWx1ZVN0cmluZy5nZXQoKSwgPT0sICJbb2JqZWN0IEds
b2JhbE9iamVjdF0iKTsKLSAgICBqc2NfY29udGV4dF9zZXRfdmFsdWUoY29udGV4dC5nZXQoKSwg
Im1vZHVsZSIsIG1vZHVsZS5nZXQoKSk7Ci0KLSAgICBHUmVmUHRyPEpTQ1ZhbHVlPiBiYXIgPSBh
ZG9wdEdSZWYoanNjX3ZhbHVlX29iamVjdF9nZXRfcHJvcGVydHkobW9kdWxlLmdldCgpLCAiYmFy
IikpOwotICAgIGNoZWNrZXIud2F0Y2goYmFyLmdldCgpKTsKLSAgICBnX2Fzc2VydF90cnVlKGpz
Y192YWx1ZV9pc19mdW5jdGlvbihiYXIuZ2V0KCkpKTsKLSAgICByZXN1bHQgPSBhZG9wdEdSZWYo
anNjX3ZhbHVlX2Z1bmN0aW9uX2NhbGwoYmFyLmdldCgpLCBHX1RZUEVfTk9ORSkpOwotICAgIGNo
ZWNrZXIud2F0Y2gocmVzdWx0LmdldCgpKTsKLSAgICBnX2Fzc2VydF90cnVlKGpzY192YWx1ZV9p
c19udW1iZXIocmVzdWx0LmdldCgpKSk7Ci0gICAgZ19hc3NlcnRfY21waW50KGpzY192YWx1ZV90
b19pbnQzMihyZXN1bHQuZ2V0KCkpLCA9PSwgNTQpOwotICAgIHZhbHVlID0gYWRvcHRHUmVmKGpz
Y19jb250ZXh0X2V2YWx1YXRlKGNvbnRleHQuZ2V0KCksICJtb2R1bGUuYmFyKCkiLCAtMSkpOwot
ICAgIGNoZWNrZXIud2F0Y2godmFsdWUuZ2V0KCkpOwotICAgIGdfYXNzZXJ0X3RydWUodmFsdWUu
Z2V0KCkgPT0gcmVzdWx0LmdldCgpKTsKKyAgICAgICAgR1JlZlB0cjxKU0NWYWx1ZT4gbW9kdWxl
OworICAgICAgICByZXN1bHQgPSBhZG9wdEdSZWYoanNjX2NvbnRleHRfZXZhbHVhdGVfaW5fb2Jq
ZWN0KGNvbnRleHQuZ2V0KCksICJmdW5jdGlvbiBiYXIoKSB7IHJldHVybiBnOyB9IiwgLTEsIG51
bGxwdHIsIG51bGxwdHIsIG51bGxwdHIsIDEsICZtb2R1bGUub3V0UHRyKCkpKTsKKyAgICAgICAg
Y2hlY2tlci53YXRjaChyZXN1bHQuZ2V0KCkpOworICAgICAgICBjaGVja2VyLndhdGNoKG1vZHVs
ZS5nZXQoKSk7CisgICAgICAgIGdfYXNzZXJ0X3RydWUoSlNDX0lTX1ZBTFVFKG1vZHVsZS5nZXQo
KSkpOworICAgICAgICBnX2Fzc2VydF90cnVlKGpzY192YWx1ZV9pc19vYmplY3QobW9kdWxlLmdl
dCgpKSk7CisgICAgICAgIEdVbmlxdWVQdHI8Y2hhcj4gdmFsdWVTdHJpbmcoanNjX3ZhbHVlX3Rv
X3N0cmluZyhtb2R1bGUuZ2V0KCkpKTsKKyAgICAgICAgZ19hc3NlcnRfY21wc3RyKHZhbHVlU3Ry
aW5nLmdldCgpLCA9PSwgIltvYmplY3QgR2xvYmFsT2JqZWN0XSIpOworICAgICAgICBqc2NfY29u
dGV4dF9zZXRfdmFsdWUoY29udGV4dC5nZXQoKSwgIm1vZHVsZSIsIG1vZHVsZS5nZXQoKSk7CiAK
LSAgICBiYXIgPSBhZG9wdEdSZWYoanNjX2NvbnRleHRfZ2V0X3ZhbHVlKGNvbnRleHQuZ2V0KCks
ICJiYXIiKSk7Ci0gICAgY2hlY2tlci53YXRjaChiYXIuZ2V0KCkpOwotICAgIGdfYXNzZXJ0X3Ry
dWUoanNjX3ZhbHVlX2lzX3VuZGVmaW5lZChiYXIuZ2V0KCkpKTsKKyAgICAgICAgR1JlZlB0cjxK
U0NWYWx1ZT4gYmFyID0gYWRvcHRHUmVmKGpzY192YWx1ZV9vYmplY3RfZ2V0X3Byb3BlcnR5KG1v
ZHVsZS5nZXQoKSwgImJhciIpKTsKKyAgICAgICAgY2hlY2tlci53YXRjaChiYXIuZ2V0KCkpOwor
ICAgICAgICBnX2Fzc2VydF90cnVlKGpzY192YWx1ZV9pc19mdW5jdGlvbihiYXIuZ2V0KCkpKTsK
KyAgICAgICAgcmVzdWx0ID0gYWRvcHRHUmVmKGpzY192YWx1ZV9mdW5jdGlvbl9jYWxsKGJhci5n
ZXQoKSwgR19UWVBFX05PTkUpKTsKKyAgICAgICAgY2hlY2tlci53YXRjaChyZXN1bHQuZ2V0KCkp
OworICAgICAgICBnX2Fzc2VydF90cnVlKGpzY192YWx1ZV9pc19udW1iZXIocmVzdWx0LmdldCgp
KSk7CisgICAgICAgIGdfYXNzZXJ0X2NtcGludChqc2NfdmFsdWVfdG9faW50MzIocmVzdWx0Lmdl
dCgpKSwgPT0sIDU0KTsKKyAgICAgICAgdmFsdWUgPSBhZG9wdEdSZWYoanNjX2NvbnRleHRfZXZh
bHVhdGUoY29udGV4dC5nZXQoKSwgIm1vZHVsZS5iYXIoKSIsIC0xKSk7CisgICAgICAgIGNoZWNr
ZXIud2F0Y2godmFsdWUuZ2V0KCkpOworICAgICAgICBnX2Fzc2VydF90cnVlKHZhbHVlLmdldCgp
ID09IHJlc3VsdC5nZXQoKSk7CiAKLSAgICBKU0NDbGFzcyoganNjQ2xhc3MgPSBqc2NfY29udGV4
dF9yZWdpc3Rlcl9jbGFzcyhjb250ZXh0LmdldCgpLCAiTW9kdWxlIiwgbnVsbHB0ciwgbnVsbHB0
ciwgbnVsbHB0cik7Ci0gICAgY2hlY2tlci53YXRjaChqc2NDbGFzcyk7Ci0gICAgR1JlZlB0cjxK
U0NWYWx1ZT4gbW9kdWxlV2l0aENsYXNzOwotICAgIHJlc3VsdCA9IGFkb3B0R1JlZihqc2NfY29u
dGV4dF9ldmFsdWF0ZV9pbl9vYmplY3QoY29udGV4dC5nZXQoKSwgImZ1bmN0aW9uIGJheigpIHsg
cmV0dXJuIGZvbygpOyB9IiwgLTEsIGpzY0NsYXNzLCBudWxscHRyLCAxLCAmbW9kdWxlV2l0aENs
YXNzLm91dFB0cigpKSk7Ci0gICAgY2hlY2tlci53YXRjaChyZXN1bHQuZ2V0KCkpOwotICAgIGNo
ZWNrZXIud2F0Y2gobW9kdWxlV2l0aENsYXNzLmdldCgpKTsKLSAgICBnX2Fzc2VydF90cnVlKEpT
Q19JU19WQUxVRShtb2R1bGVXaXRoQ2xhc3MuZ2V0KCkpKTsKLSAgICBnX2Fzc2VydF90cnVlKGpz
Y192YWx1ZV9pc19vYmplY3QobW9kdWxlV2l0aENsYXNzLmdldCgpKSk7Ci0gICAgdmFsdWVTdHJp
bmcucmVzZXQoanNjX3ZhbHVlX3RvX3N0cmluZyhtb2R1bGVXaXRoQ2xhc3MuZ2V0KCkpKTsKLSAg
ICBnX2Fzc2VydF9jbXBzdHIodmFsdWVTdHJpbmcuZ2V0KCksID09LCAiW29iamVjdCBNb2R1bGVd
Iik7Ci0gICAganNjX2NvbnRleHRfc2V0X3ZhbHVlKGNvbnRleHQuZ2V0KCksICJtb2R1bGVXaXRo
Q2xhc3MiLCBtb2R1bGVXaXRoQ2xhc3MuZ2V0KCkpOwotCi0gICAgR1JlZlB0cjxKU0NWYWx1ZT4g
YmF6ID0gYWRvcHRHUmVmKGpzY192YWx1ZV9vYmplY3RfZ2V0X3Byb3BlcnR5KG1vZHVsZVdpdGhD
bGFzcy5nZXQoKSwgImJheiIpKTsKLSAgICBjaGVja2VyLndhdGNoKGJhei5nZXQoKSk7Ci0gICAg
Z19hc3NlcnRfdHJ1ZShqc2NfdmFsdWVfaXNfZnVuY3Rpb24oYmF6LmdldCgpKSk7Ci0gICAgcmVz
dWx0ID0gYWRvcHRHUmVmKGpzY192YWx1ZV9mdW5jdGlvbl9jYWxsKGJhei5nZXQoKSwgR19UWVBF
X05PTkUpKTsKLSAgICBjaGVja2VyLndhdGNoKHJlc3VsdC5nZXQoKSk7Ci0gICAgZ19hc3NlcnRf
dHJ1ZShqc2NfdmFsdWVfaXNfbnVtYmVyKHJlc3VsdC5nZXQoKSkpOwotICAgIGdfYXNzZXJ0X2Nt
cGludChqc2NfdmFsdWVfdG9faW50MzIocmVzdWx0LmdldCgpKSwgPT0sIDQyKTsKLSAgICB2YWx1
ZSA9IGFkb3B0R1JlZihqc2NfY29udGV4dF9ldmFsdWF0ZShjb250ZXh0LmdldCgpLCAibW9kdWxl
V2l0aENsYXNzLmJheigpIiwgLTEpKTsKLSAgICBjaGVja2VyLndhdGNoKHZhbHVlLmdldCgpKTsK
LSAgICBnX2Fzc2VydF90cnVlKHZhbHVlLmdldCgpID09IHJlc3VsdC5nZXQoKSk7CisgICAgICAg
IGJhciA9IGFkb3B0R1JlZihqc2NfY29udGV4dF9nZXRfdmFsdWUoY29udGV4dC5nZXQoKSwgImJh
ciIpKTsKKyAgICAgICAgY2hlY2tlci53YXRjaChiYXIuZ2V0KCkpOworICAgICAgICBnX2Fzc2Vy
dF90cnVlKGpzY192YWx1ZV9pc191bmRlZmluZWQoYmFyLmdldCgpKSk7CiAKLSAgICBiYXIgPSBh
ZG9wdEdSZWYoanNjX3ZhbHVlX29iamVjdF9nZXRfcHJvcGVydHkobW9kdWxlV2l0aENsYXNzLmdl
dCgpLCAiYmFyIikpOwotICAgIGNoZWNrZXIud2F0Y2goYmFyLmdldCgpKTsKLSAgICBnX2Fzc2Vy
dF90cnVlKGpzY192YWx1ZV9pc191bmRlZmluZWQoYmFyLmdldCgpKSk7CisgICAgICAgIEpTQ0Ns
YXNzKiBqc2NDbGFzcyA9IGpzY19jb250ZXh0X3JlZ2lzdGVyX2NsYXNzKGNvbnRleHQuZ2V0KCks
ICJNb2R1bGUiLCBudWxscHRyLCAmbW9kdWxlVlRhYmxlLCBbXShncG9pbnRlciBtb2R1bGUpIHsK
KyAgICAgICAgICAgIHN0YXRpY19jYXN0PE1vZHVsZSo+KG1vZHVsZSktPndhc0RlbGV0ZWQgPSB0
cnVlOworICAgICAgICB9KTsKKyAgICAgICAgY2hlY2tlci53YXRjaChqc2NDbGFzcyk7CisgICAg
ICAgIGdfb2JqZWN0X3NldF9kYXRhKEdfT0JKRUNUKGpzY0NsYXNzKSwgImxlYWstY2hlY2tlciIs
ICZjaGVja2VyKTsKKyAgICAgICAgR1JlZlB0cjxKU0NWYWx1ZT4gbW9kdWxlV2l0aENsYXNzOwor
ICAgICAgICByZXN1bHQgPSBhZG9wdEdSZWYoanNjX2NvbnRleHRfZXZhbHVhdGVfaW5fb2JqZWN0
KGNvbnRleHQuZ2V0KCksICJmdW5jdGlvbiBiYXooKSB7IHJldHVybiBmb28oKTsgfSIsIC0xLCAm
bW9kdWxlT2JqZWN0LCBqc2NDbGFzcywgbnVsbHB0ciwgMSwgJm1vZHVsZVdpdGhDbGFzcy5vdXRQ
dHIoKSkpOworICAgICAgICBjaGVja2VyLndhdGNoKHJlc3VsdC5nZXQoKSk7CisgICAgICAgIGNo
ZWNrZXIud2F0Y2gobW9kdWxlV2l0aENsYXNzLmdldCgpKTsKKyAgICAgICAgZ19hc3NlcnRfdHJ1
ZShKU0NfSVNfVkFMVUUobW9kdWxlV2l0aENsYXNzLmdldCgpKSk7CisgICAgICAgIGdfYXNzZXJ0
X3RydWUoanNjX3ZhbHVlX2lzX29iamVjdChtb2R1bGVXaXRoQ2xhc3MuZ2V0KCkpKTsKKyAgICAg
ICAgdmFsdWVTdHJpbmcucmVzZXQoanNjX3ZhbHVlX3RvX3N0cmluZyhtb2R1bGVXaXRoQ2xhc3Mu
Z2V0KCkpKTsKKyAgICAgICAgZ19hc3NlcnRfY21wc3RyKHZhbHVlU3RyaW5nLmdldCgpLCA9PSwg
IltvYmplY3QgTW9kdWxlXSIpOworICAgICAgICBqc2NfY29udGV4dF9zZXRfdmFsdWUoY29udGV4
dC5nZXQoKSwgIm1vZHVsZVdpdGhDbGFzcyIsIG1vZHVsZVdpdGhDbGFzcy5nZXQoKSk7CisKKyAg
ICAgICAgR1JlZlB0cjxKU0NWYWx1ZT4gbmFtZSA9IGFkb3B0R1JlZihqc2NfdmFsdWVfb2JqZWN0
X2dldF9wcm9wZXJ0eShtb2R1bGVXaXRoQ2xhc3MuZ2V0KCksICJuYW1lIikpOworICAgICAgICBj
aGVja2VyLndhdGNoKG5hbWUuZ2V0KCkpOworICAgICAgICBnX2Fzc2VydF90cnVlKGpzY192YWx1
ZV9pc19zdHJpbmcobmFtZS5nZXQoKSkpOworICAgICAgICB2YWx1ZVN0cmluZy5yZXNldChqc2Nf
dmFsdWVfdG9fc3RyaW5nKG5hbWUuZ2V0KCkpKTsKKyAgICAgICAgZ19hc3NlcnRfY21wc3RyKHZh
bHVlU3RyaW5nLmdldCgpLCA9PSwgIk1vZHVsZVdpdGhDbGFzcyIpOworCisgICAgICAgIEdSZWZQ
dHI8SlNDVmFsdWU+IGJheiA9IGFkb3B0R1JlZihqc2NfdmFsdWVfb2JqZWN0X2dldF9wcm9wZXJ0
eShtb2R1bGVXaXRoQ2xhc3MuZ2V0KCksICJiYXoiKSk7CisgICAgICAgIGNoZWNrZXIud2F0Y2go
YmF6LmdldCgpKTsKKyAgICAgICAgZ19hc3NlcnRfdHJ1ZShqc2NfdmFsdWVfaXNfZnVuY3Rpb24o
YmF6LmdldCgpKSk7CisgICAgICAgIHJlc3VsdCA9IGFkb3B0R1JlZihqc2NfdmFsdWVfZnVuY3Rp
b25fY2FsbChiYXouZ2V0KCksIEdfVFlQRV9OT05FKSk7CisgICAgICAgIGNoZWNrZXIud2F0Y2go
cmVzdWx0LmdldCgpKTsKKyAgICAgICAgZ19hc3NlcnRfdHJ1ZShqc2NfdmFsdWVfaXNfbnVtYmVy
KHJlc3VsdC5nZXQoKSkpOworICAgICAgICBnX2Fzc2VydF9jbXBpbnQoanNjX3ZhbHVlX3RvX2lu
dDMyKHJlc3VsdC5nZXQoKSksID09LCA0Mik7CisgICAgICAgIHZhbHVlID0gYWRvcHRHUmVmKGpz
Y19jb250ZXh0X2V2YWx1YXRlKGNvbnRleHQuZ2V0KCksICJtb2R1bGVXaXRoQ2xhc3MuYmF6KCki
LCAtMSkpOworICAgICAgICBjaGVja2VyLndhdGNoKHZhbHVlLmdldCgpKTsKKyAgICAgICAgZ19h
c3NlcnRfdHJ1ZSh2YWx1ZS5nZXQoKSA9PSByZXN1bHQuZ2V0KCkpOwogCi0gICAgYmF6ID0gYWRv
cHRHUmVmKGpzY192YWx1ZV9vYmplY3RfZ2V0X3Byb3BlcnR5KG1vZHVsZS5nZXQoKSwgImJheiIp
KTsKLSAgICBjaGVja2VyLndhdGNoKGJhei5nZXQoKSk7Ci0gICAgZ19hc3NlcnRfdHJ1ZShqc2Nf
dmFsdWVfaXNfdW5kZWZpbmVkKGJhei5nZXQoKSkpOworICAgICAgICBiYXIgPSBhZG9wdEdSZWYo
anNjX3ZhbHVlX29iamVjdF9nZXRfcHJvcGVydHkobW9kdWxlV2l0aENsYXNzLmdldCgpLCAiYmFy
IikpOworICAgICAgICBjaGVja2VyLndhdGNoKGJhci5nZXQoKSk7CisgICAgICAgIGdfYXNzZXJ0
X3RydWUoanNjX3ZhbHVlX2lzX3VuZGVmaW5lZChiYXIuZ2V0KCkpKTsKIAotICAgIGJheiA9IGFk
b3B0R1JlZihqc2NfY29udGV4dF9nZXRfdmFsdWUoY29udGV4dC5nZXQoKSwgImJheiIpKTsKLSAg
ICBjaGVja2VyLndhdGNoKGJhei5nZXQoKSk7Ci0gICAgZ19hc3NlcnRfdHJ1ZShqc2NfdmFsdWVf
aXNfdW5kZWZpbmVkKGJhei5nZXQoKSkpOworICAgICAgICBiYXogPSBhZG9wdEdSZWYoanNjX3Zh
bHVlX29iamVjdF9nZXRfcHJvcGVydHkobW9kdWxlLmdldCgpLCAiYmF6IikpOworICAgICAgICBj
aGVja2VyLndhdGNoKGJhei5nZXQoKSk7CisgICAgICAgIGdfYXNzZXJ0X3RydWUoanNjX3ZhbHVl
X2lzX3VuZGVmaW5lZChiYXouZ2V0KCkpKTsKIAotICAgIEdSZWZQdHI8SlNDVmFsdWU+IGpzTmFt
ZXNwYWNlID0gYWRvcHRHUmVmKGpzY192YWx1ZV9uZXdfb2JqZWN0KGNvbnRleHQuZ2V0KCksIG51
bGxwdHIsIG51bGxwdHIpKTsKLSAgICBjaGVja2VyLndhdGNoKGpzTmFtZXNwYWNlLmdldCgpKTsK
LSAgICBqc2NfY29udGV4dF9zZXRfdmFsdWUoY29udGV4dC5nZXQoKSwgIndrIiwganNOYW1lc3Bh
Y2UuZ2V0KCkpOworICAgICAgICBiYXogPSBhZG9wdEdSZWYoanNjX2NvbnRleHRfZ2V0X3ZhbHVl
KGNvbnRleHQuZ2V0KCksICJiYXoiKSk7CisgICAgICAgIGNoZWNrZXIud2F0Y2goYmF6LmdldCgp
KTsKKyAgICAgICAgZ19hc3NlcnRfdHJ1ZShqc2NfdmFsdWVfaXNfdW5kZWZpbmVkKGJhei5nZXQo
KSkpOwogCi0gICAgR1JlZlB0cjxKU0NWYWx1ZT4gbW9kdWxlSW5XazsKLSAgICByZXN1bHQgPSBh
ZG9wdEdSZWYoanNjX2NvbnRleHRfZXZhbHVhdGVfaW5fb2JqZWN0KGNvbnRleHQuZ2V0KCksICJm
dW5jdGlvbiBiYXIoKSB7IHJldHVybiBnOyB9IiwgLTEsIG51bGxwdHIsIG51bGxwdHIsIDEsICZt
b2R1bGVJbldrLm91dFB0cigpKSk7Ci0gICAgY2hlY2tlci53YXRjaChyZXN1bHQuZ2V0KCkpOwot
ICAgIGNoZWNrZXIud2F0Y2gobW9kdWxlSW5Xay5nZXQoKSk7Ci0gICAgZ19hc3NlcnRfdHJ1ZShK
U0NfSVNfVkFMVUUobW9kdWxlSW5Xay5nZXQoKSkpOwotICAgIGdfYXNzZXJ0X3RydWUoanNjX3Zh
bHVlX2lzX29iamVjdChtb2R1bGVJbldrLmdldCgpKSk7Ci0gICAganNjX3ZhbHVlX29iamVjdF9z
ZXRfcHJvcGVydHkoanNOYW1lc3BhY2UuZ2V0KCksICJtb2R1bGVJbldrIiwgbW9kdWxlSW5Xay5n
ZXQoKSk7CisgICAgICAgIEdSZWZQdHI8SlNDVmFsdWU+IGpzTmFtZXNwYWNlID0gYWRvcHRHUmVm
KGpzY192YWx1ZV9uZXdfb2JqZWN0KGNvbnRleHQuZ2V0KCksIG51bGxwdHIsIG51bGxwdHIpKTsK
KyAgICAgICAgY2hlY2tlci53YXRjaChqc05hbWVzcGFjZS5nZXQoKSk7CisgICAgICAgIGpzY19j
b250ZXh0X3NldF92YWx1ZShjb250ZXh0LmdldCgpLCAid2siLCBqc05hbWVzcGFjZS5nZXQoKSk7
CiAKLSAgICBiYXIgPSBhZG9wdEdSZWYoanNjX3ZhbHVlX29iamVjdF9nZXRfcHJvcGVydHkobW9k
dWxlSW5Xay5nZXQoKSwgImJhciIpKTsKLSAgICBjaGVja2VyLndhdGNoKGJhci5nZXQoKSk7Ci0g
ICAgZ19hc3NlcnRfdHJ1ZShqc2NfdmFsdWVfaXNfZnVuY3Rpb24oYmFyLmdldCgpKSk7Ci0gICAg
cmVzdWx0ID0gYWRvcHRHUmVmKGpzY192YWx1ZV9mdW5jdGlvbl9jYWxsKGJhci5nZXQoKSwgR19U
WVBFX05PTkUpKTsKLSAgICBjaGVja2VyLndhdGNoKHJlc3VsdC5nZXQoKSk7Ci0gICAgZ19hc3Nl
cnRfdHJ1ZShqc2NfdmFsdWVfaXNfbnVtYmVyKHJlc3VsdC5nZXQoKSkpOwotICAgIGdfYXNzZXJ0
X2NtcGludChqc2NfdmFsdWVfdG9faW50MzIocmVzdWx0LmdldCgpKSwgPT0sIDU0KTsKLSAgICB2
YWx1ZSA9IGFkb3B0R1JlZihqc2NfY29udGV4dF9ldmFsdWF0ZShjb250ZXh0LmdldCgpLCAid2su
bW9kdWxlSW5Xay5iYXIoKSIsIC0xKSk7Ci0gICAgY2hlY2tlci53YXRjaCh2YWx1ZS5nZXQoKSk7
Ci0gICAgZ19hc3NlcnRfdHJ1ZSh2YWx1ZS5nZXQoKSA9PSByZXN1bHQuZ2V0KCkpOworICAgICAg
ICBHUmVmUHRyPEpTQ1ZhbHVlPiBtb2R1bGVJbldrOworICAgICAgICByZXN1bHQgPSBhZG9wdEdS
ZWYoanNjX2NvbnRleHRfZXZhbHVhdGVfaW5fb2JqZWN0KGNvbnRleHQuZ2V0KCksICJmdW5jdGlv
biBiYXIoKSB7IHJldHVybiBnOyB9IiwgLTEsIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIsIDEs
ICZtb2R1bGVJbldrLm91dFB0cigpKSk7CisgICAgICAgIGNoZWNrZXIud2F0Y2gocmVzdWx0Lmdl
dCgpKTsKKyAgICAgICAgY2hlY2tlci53YXRjaChtb2R1bGVJbldrLmdldCgpKTsKKyAgICAgICAg
Z19hc3NlcnRfdHJ1ZShKU0NfSVNfVkFMVUUobW9kdWxlSW5Xay5nZXQoKSkpOworICAgICAgICBn
X2Fzc2VydF90cnVlKGpzY192YWx1ZV9pc19vYmplY3QobW9kdWxlSW5Xay5nZXQoKSkpOworICAg
ICAgICBqc2NfdmFsdWVfb2JqZWN0X3NldF9wcm9wZXJ0eShqc05hbWVzcGFjZS5nZXQoKSwgIm1v
ZHVsZUluV2siLCBtb2R1bGVJbldrLmdldCgpKTsKIAotICAgIG1vZHVsZUluV2sgPSBhZG9wdEdS
ZWYoanNjX2NvbnRleHRfZ2V0X3ZhbHVlKGNvbnRleHQuZ2V0KCksICJtb2R1bGVJbldrIikpOwot
ICAgIGNoZWNrZXIud2F0Y2gobW9kdWxlSW5Xay5nZXQoKSk7Ci0gICAgZ19hc3NlcnRfdHJ1ZShq
c2NfdmFsdWVfaXNfdW5kZWZpbmVkKG1vZHVsZUluV2suZ2V0KCkpKTsKKyAgICAgICAgYmFyID0g
YWRvcHRHUmVmKGpzY192YWx1ZV9vYmplY3RfZ2V0X3Byb3BlcnR5KG1vZHVsZUluV2suZ2V0KCks
ICJiYXIiKSk7CisgICAgICAgIGNoZWNrZXIud2F0Y2goYmFyLmdldCgpKTsKKyAgICAgICAgZ19h
c3NlcnRfdHJ1ZShqc2NfdmFsdWVfaXNfZnVuY3Rpb24oYmFyLmdldCgpKSk7CisgICAgICAgIHJl
c3VsdCA9IGFkb3B0R1JlZihqc2NfdmFsdWVfZnVuY3Rpb25fY2FsbChiYXIuZ2V0KCksIEdfVFlQ
RV9OT05FKSk7CisgICAgICAgIGNoZWNrZXIud2F0Y2gocmVzdWx0LmdldCgpKTsKKyAgICAgICAg
Z19hc3NlcnRfdHJ1ZShqc2NfdmFsdWVfaXNfbnVtYmVyKHJlc3VsdC5nZXQoKSkpOworICAgICAg
ICBnX2Fzc2VydF9jbXBpbnQoanNjX3ZhbHVlX3RvX2ludDMyKHJlc3VsdC5nZXQoKSksID09LCA1
NCk7CisgICAgICAgIHZhbHVlID0gYWRvcHRHUmVmKGpzY19jb250ZXh0X2V2YWx1YXRlKGNvbnRl
eHQuZ2V0KCksICJ3ay5tb2R1bGVJbldrLmJhcigpIiwgLTEpKTsKKyAgICAgICAgY2hlY2tlci53
YXRjaCh2YWx1ZS5nZXQoKSk7CisgICAgICAgIGdfYXNzZXJ0X3RydWUodmFsdWUuZ2V0KCkgPT0g
cmVzdWx0LmdldCgpKTsKKworICAgICAgICBtb2R1bGVJbldrID0gYWRvcHRHUmVmKGpzY19jb250
ZXh0X2dldF92YWx1ZShjb250ZXh0LmdldCgpLCAibW9kdWxlSW5XayIpKTsKKyAgICAgICAgY2hl
Y2tlci53YXRjaChtb2R1bGVJbldrLmdldCgpKTsKKyAgICAgICAgZ19hc3NlcnRfdHJ1ZShqc2Nf
dmFsdWVfaXNfdW5kZWZpbmVkKG1vZHVsZUluV2suZ2V0KCkpKTsKKyAgICB9CisgICAgZ19hc3Nl
cnRfdHJ1ZShtb2R1bGVPYmplY3Qud2FzRGVsZXRlZCk7CiB9CiAKIHN0YXRpYyB2b2lkIHRlc3RK
U0NDaGVja1N5bnRheCgpCg==
</data>
<flag name="review"
          id="363296"
          type_id="1"
          status="+"
          setter="mcatanzaro"
    />
          </attachment>
      

    </bug>

</bugzilla>