<?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>71367</bug_id>
          
          <creation_ts>2011-11-02 08:34:43 -0700</creation_ts>
          <short_desc>Web Inspector: preserve script location for inline handlers.</short_desc>
          <delta_ts>2011-11-03 05:23:23 -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>Web Inspector (Deprecated)</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>71462</dependson>
          
          <everconfirmed>0</everconfirmed>
          <reporter name="Pavel Feldman">pfeldman</reporter>
          <assigned_to name="Pavel Feldman">pfeldman</assigned_to>
          <cc>apavlov</cc>
    
    <cc>bweinstein</cc>
    
    <cc>joepeck</cc>
    
    <cc>keishi</cc>
    
    <cc>loislo</cc>
    
    <cc>oliver</cc>
    
    <cc>pfeldman</cc>
    
    <cc>pmuellr</cc>
    
    <cc>rik</cc>
    
    <cc>timothy</cc>
    
    <cc>yurys</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>494636</commentid>
    <comment_count>0</comment_count>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2011-11-02 08:34:43 -0700</bug_when>
    <thetext>Currently, inline handlers such as &lt;body onload=&quot;foo()&quot; are reported as starting at 0:0 to the debugger.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>494689</commentid>
    <comment_count>1</comment_count>
      <attachid>113324</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2011-11-02 10:02:57 -0700</bug_when>
    <thetext>Created attachment 113324
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>494690</commentid>
    <comment_count>2</comment_count>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2011-11-02 10:11:32 -0700</bug_when>
    <thetext>Originally I was going to remove TextPosition from SourceProvider and make it live entirely in the SourceCode (see straw man patch for that here: https://bugs.webkit.org/show_bug.cgi?id=71358). However, it was regressing the debugger functionality a bit. Here are the details:

When debugger is enabled, recompilation takes place. It traverses heap functions in the heap, groups them by SourceProviders and reports them as &quot;scripts&quot; to the debugger. It is important that debugger receives its signals with the &quot;script&quot; granularity where each &quot;script&quot; has an offset in the resource with its &quot;url&quot;. SourceProvider&apos;s ID is used as a &quot;script&quot; id in the debugger.

It does sound that having position information on the SourceProvider is superfluous. But we do need this &quot;script&quot; concept and it sounds like SourceProvider is what we need (except for the name is confusing). So either we need to leave position information in it or we should make it reference the &quot;top level&quot; script it is associated with. Then we can leave text positions in SourceCodes only. In either case, this change seems like the right step in that direction.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>495061</commentid>
    <comment_count>3</comment_count>
      <attachid>113324</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2011-11-02 16:53:05 -0700</bug_when>
    <thetext>Comment on attachment 113324
Patch

Attachment 113324 did not pass mac-ews (mac):
Output: http://queues.webkit.org/results/10148374</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>495359</commentid>
    <comment_count>4</comment_count>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2011-11-03 05:02:32 -0700</bug_when>
    <thetext>Committed r99167: &lt;http://trac.webkit.org/changeset/99167&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>113324</attachid>
            <date>2011-11-02 10:02:57 -0700</date>
            <delta_ts>2011-11-03 00:32:50 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-71367-20111102210254.patch</filename>
            <type>text/plain</type>
            <size>39856</size>
            <attacher name="Pavel Feldman">pfeldman</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTkwNTAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IGQ3
ODI0OTExNDRkZDJhYjUzYzcyM2U2NGVhMDhkOTRiMTJiZTRjMDQuLjk1NWUwN2UxZjQwMDk3ZTYw
OTNmMzBiZTRlMzdkNTdjMjYzMmMxOGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDMwIEBACisyMDExLTExLTAyICBQYXZlbCBGZWxkbWFuICA8cGZlbGRtYW5AZ29vZ2xlLmNv
bT4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBwcmVzZXJ2ZSBzY3JpcHQgbG9jYXRpb24gZm9y
IGlubGluZSBoYW5kbGVycy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTcxMzY3CisKKyAgICAgICAgTWFrZXMgU291cmNlQ29kZSBmYWN0b3JpZXMgcmVj
ZWl2ZSBUZXh0UG9zaXRpb24gaW5zdGVhZCBvZiB0aGUgbGluZSBudW1iZXI7CisgICAgICAgIFN0
b3JlcyBjb25zaXN0ZW50IHBvc2l0aW9uIHZhbHVlcyBpbiBTb3VyY2VDb2RlIGFuZCBTb3VyY2VQ
cm92aWRlcjsKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICAqIEFQSS9KU0Jhc2UuY3BwOgorICAgICAgICAoSlNFdmFsdWF0ZVNjcmlwdCk6CisgICAgICAg
IChKU0NoZWNrU2NyaXB0U3ludGF4KToKKyAgICAgICAgKiBBUEkvSlNPYmplY3RSZWYuY3BwOgor
ICAgICAgICAoSlNPYmplY3RNYWtlRnVuY3Rpb24pOgorICAgICAgICAqIHBhcnNlci9Tb3VyY2VD
b2RlLmg6CisgICAgICAgIChKU0M6Om1ha2VTb3VyY2UpOgorICAgICAgICAqIHBhcnNlci9Tb3Vy
Y2VQcm92aWRlci5oOgorICAgICAgICAoSlNDOjpTb3VyY2VQcm92aWRlcjo6U291cmNlUHJvdmlk
ZXIpOgorICAgICAgICAoSlNDOjpTb3VyY2VQcm92aWRlcjo6c3RhcnRQb3NpdGlvbik6CisgICAg
ICAgIChKU0M6OlVTdHJpbmdTb3VyY2VQcm92aWRlcjo6Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6
VVN0cmluZ1NvdXJjZVByb3ZpZGVyOjpVU3RyaW5nU291cmNlUHJvdmlkZXIpOgorICAgICAgICAq
IHJ1bnRpbWUvRnVuY3Rpb25Db25zdHJ1Y3Rvci5jcHA6CisgICAgICAgIChKU0M6OmNvbnN0cnVj
dEZ1bmN0aW9uKToKKyAgICAgICAgKEpTQzo6Y29uc3RydWN0RnVuY3Rpb25Ta2lwcGluZ0V2YWxF
bmFibGVkQ2hlY2spOgorICAgICAgICAqIHJ1bnRpbWUvRnVuY3Rpb25Db25zdHJ1Y3Rvci5oOgor
CiAyMDExLTExLTAxICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KIAogICAgICAgICBD
dXQgZG93biBvbiBtYWxsb2MvZnJlZSBhIGJpdCBpbiB0aGUgcGFyc2VyIGFyZW5hCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cK
aW5kZXggODlkNmQ4NDIyYmNmNDFiN2U2ODAyZjg0ZjY1OTgwNzc4NzAxOGViZi4uZjVkMmZlMThi
MDIxMWY0ODE0YjE3MGQ3NzUwOTFmZDkxZjIxODg4NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMx
IEBACisyMDExLTExLTAyICBQYXZlbCBGZWxkbWFuICA8cGZlbGRtYW5AZ29vZ2xlLmNvbT4KKwor
ICAgICAgICBXZWIgSW5zcGVjdG9yOiBwcmVzZXJ2ZSBzY3JpcHQgbG9jYXRpb24gZm9yIGlubGlu
ZSBoYW5kbGVycy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTcxMzY3CisKKyAgICAgICAgTWFrZXMgZXZlbnRIYW5kbGVyIHJlcG9ydCBwb3NpdGlvbiwg
bm90IGxpbmUgbnVtYmVyOworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgICogYmluZGluZ3MvanMvQ2FjaGVkU2NyaXB0U291cmNlUHJvdmlkZXIuaDoKKyAg
ICAgICAgKFdlYkNvcmU6OkNhY2hlZFNjcmlwdFNvdXJjZVByb3ZpZGVyOjpDYWNoZWRTY3JpcHRT
b3VyY2VQcm92aWRlcik6CisgICAgICAgICogYmluZGluZ3MvanMvSlNMYXp5RXZlbnRMaXN0ZW5l
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU0xhenlFdmVudExpc3RlbmVyOjpKU0xhenlFdmVu
dExpc3RlbmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkpTTGF6eUV2ZW50TGlzdGVuZXI6OmluaXRp
YWxpemVKU0Z1bmN0aW9uKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0xhenlFdmVudExpc3Rl
bmVyLmg6CisgICAgICAgIChXZWJDb3JlOjpKU0xhenlFdmVudExpc3RlbmVyOjpjcmVhdGUpOgor
ICAgICAgICAqIGJpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6U2NyaXB0Q29udHJvbGxlcjo6ZXZlbnRIYW5kbGVyUG9zaXRpb24pOgorICAgICAgICAq
IGJpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuaDoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9T
Y3JpcHRFdmVudExpc3RlbmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUF0dHJpYnV0
ZUV2ZW50TGlzdGVuZXIpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL1NjcmlwdFNvdXJjZVByb3Zp
ZGVyLmg6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRTb3VyY2VQcm92aWRlcjo6U2NyaXB0U291
cmNlUHJvdmlkZXIpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL1N0cmluZ1NvdXJjZVByb3ZpZGVy
Lmg6CisgICAgICAgIChXZWJDb3JlOjpTdHJpbmdTb3VyY2VQcm92aWRlcjo6Y3JlYXRlKToKKyAg
ICAgICAgKFdlYkNvcmU6OlN0cmluZ1NvdXJjZVByb3ZpZGVyOjpTdHJpbmdTb3VyY2VQcm92aWRl
cik6CisgICAgICAgIChXZWJDb3JlOjptYWtlU291cmNlKToKKwogMjAxMS0xMS0wMiAgQmVuIFdl
bGxzICA8YmVud2VsbHNAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIENhbnZhcyBmaWxsaW5nIHBh
dGhzIG9yIHJlY3RzIG5lZWQgdG8gYmUgaW52YWxpZGF0ZSBsYXJnZXIgcmVjdHMgZm9yIHNvbWUg
Y29tcG9zaXRpbmcgbW9kZXMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJ
L0pTQmFzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQmFzZS5jcHAKaW5kZXgg
OTg0OWIwMzE1NjJiMjNhMWVjYzM5NmEyZDc3MjVjN2EyODczZDEzOC4uZWFmZDhjNjBiYjAwODFm
ZTBkYzc2NWIwNzQyNGYyZjhmMmVkNTEwOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL0FQSS9KU0Jhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNCYXNl
LmNwcApAQCAtNTAsNyArNTAsNyBAQCBKU1ZhbHVlUmVmIEpTRXZhbHVhdGVTY3JpcHQoSlNDb250
ZXh0UmVmIGN0eCwgSlNTdHJpbmdSZWYgc2NyaXB0LCBKU09iamVjdFJlZiB0aAogCiAgICAgLy8g
ZXZhbHVhdGUgc2V0cyAidGhpcyIgdG8gdGhlIGdsb2JhbCBvYmplY3QgaWYgaXQgaXMgTlVMTAog
ICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBleGVjLT5keW5hbWljR2xvYmFsT2Jq
ZWN0KCk7Ci0gICAgU291cmNlQ29kZSBzb3VyY2UgPSBtYWtlU291cmNlKHNjcmlwdC0+dXN0cmlu
ZygpLCBzb3VyY2VVUkwtPnVzdHJpbmcoKSwgc3RhcnRpbmdMaW5lTnVtYmVyKTsKKyAgICBTb3Vy
Y2VDb2RlIHNvdXJjZSA9IG1ha2VTb3VyY2Uoc2NyaXB0LT51c3RyaW5nKCksIHNvdXJjZVVSTC0+
dXN0cmluZygpLCBUZXh0UG9zaXRpb24oT3JkaW5hbE51bWJlcjo6ZnJvbU9uZUJhc2VkSW50KHN0
YXJ0aW5nTGluZU51bWJlciksIE9yZGluYWxOdW1iZXI6OmZpcnN0KCkpKTsKIAogICAgIEpTVmFs
dWUgZXZhbHVhdGlvbkV4Y2VwdGlvbjsKICAgICBKU1ZhbHVlIHJldHVyblZhbHVlID0gZXZhbHVh
dGUoZ2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVjKCksIGdsb2JhbE9iamVjdC0+Z2xvYmFsU2NvcGVD
aGFpbigpLCBzb3VyY2UsIGpzVGhpc09iamVjdCwgJmV2YWx1YXRpb25FeGNlcHRpb24pOwpAQCAt
NzMsNyArNzMsNyBAQCBib29sIEpTQ2hlY2tTY3JpcHRTeW50YXgoSlNDb250ZXh0UmVmIGN0eCwg
SlNTdHJpbmdSZWYgc2NyaXB0LCBKU1N0cmluZ1JlZiBzb3VyYwogICAgIEV4ZWNTdGF0ZSogZXhl
YyA9IHRvSlMoY3R4KTsKICAgICBBUElFbnRyeVNoaW0gZW50cnlTaGltKGV4ZWMpOwogCi0gICAg
U291cmNlQ29kZSBzb3VyY2UgPSBtYWtlU291cmNlKHNjcmlwdC0+dXN0cmluZygpLCBzb3VyY2VV
UkwtPnVzdHJpbmcoKSwgc3RhcnRpbmdMaW5lTnVtYmVyKTsKKyAgICBTb3VyY2VDb2RlIHNvdXJj
ZSA9IG1ha2VTb3VyY2Uoc2NyaXB0LT51c3RyaW5nKCksIHNvdXJjZVVSTC0+dXN0cmluZygpLCBU
ZXh0UG9zaXRpb24oT3JkaW5hbE51bWJlcjo6ZnJvbU9uZUJhc2VkSW50KHN0YXJ0aW5nTGluZU51
bWJlciksIE9yZGluYWxOdW1iZXI6OmZpcnN0KCkpKTsKICAgICAKICAgICBKU1ZhbHVlIHN5bnRh
eEV4Y2VwdGlvbjsKICAgICBib29sIGlzVmFsaWRTeW50YXggPSBjaGVja1N5bnRheChleGVjLT5k
eW5hbWljR2xvYmFsT2JqZWN0KCktPmdsb2JhbEV4ZWMoKSwgc291cmNlLCAmc3ludGF4RXhjZXB0
aW9uKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNPYmplY3RSZWYu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU09iamVjdFJlZi5jcHAKaW5kZXggNzQw
YjFhM2FkZmMxYjBmN2VhMTBjMzZiMGVkN2IwYTkyZWNhY2MxZS4uNzc5NGFhMWU0NzRkYmQ2YmI3
OGYxNGZkZGM5YjdiNDhiYzVhMzhjMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L0FQSS9KU09iamVjdFJlZi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU09i
amVjdFJlZi5jcHAKQEAgLTEyNCw3ICsxMjQsNyBAQCBKU09iamVjdFJlZiBKU09iamVjdE1ha2VG
dW5jdGlvbihKU0NvbnRleHRSZWYgY3R4LCBKU1N0cmluZ1JlZiBuYW1lLCB1bnNpZ25lZCBwYQog
ICAgICAgICBhcmdzLmFwcGVuZChqc1N0cmluZyhleGVjLCBwYXJhbWV0ZXJOYW1lc1tpXS0+dXN0
cmluZygpKSk7CiAgICAgYXJncy5hcHBlbmQoanNTdHJpbmcoZXhlYywgYm9keS0+dXN0cmluZygp
KSk7CiAKLSAgICBKU09iamVjdCogcmVzdWx0ID0gY29uc3RydWN0RnVuY3Rpb24oZXhlYywgZXhl
Yy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLCBhcmdzLCBuYW1lSUQsIHNvdXJjZVVSTC0+dXN0cmlu
ZygpLCBzdGFydGluZ0xpbmVOdW1iZXIpOworICAgIEpTT2JqZWN0KiByZXN1bHQgPSBjb25zdHJ1
Y3RGdW5jdGlvbihleGVjLCBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCksIGFyZ3MsIG5hbWVJ
RCwgc291cmNlVVJMLT51c3RyaW5nKCksIFRleHRQb3NpdGlvbihPcmRpbmFsTnVtYmVyOjpmcm9t
T25lQmFzZWRJbnQoc3RhcnRpbmdMaW5lTnVtYmVyKSwgT3JkaW5hbE51bWJlcjo6Zmlyc3QoKSkp
OwogICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkgewogICAgICAgICBpZiAoZXhjZXB0aW9u
KQogICAgICAgICAgICAgKmV4Y2VwdGlvbiA9IHRvUmVmKGV4ZWMsIGV4ZWMtPmV4Y2VwdGlvbigp
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvU291cmNlQ29kZS5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Tb3VyY2VDb2RlLmgKaW5kZXggODdjODQ0
ZDMxMTRmOTZiMDc0ZjdiNmQ2M2IzNzEyNjMzZDczZGZmYy4uNDQ5YTU4YmJkMTA0NjMzMDk0YTE4
MzZjY2Q4OGMxM2IyNmE5MjU3NSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Bh
cnNlci9Tb3VyY2VDb2RlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Tb3Vy
Y2VDb2RlLmgKQEAgLTg0LDkgKzg0LDkgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIGludCBt
X2ZpcnN0TGluZTsKICAgICB9OwogCi0gICAgaW5saW5lIFNvdXJjZUNvZGUgbWFrZVNvdXJjZShj
b25zdCBVU3RyaW5nJiBzb3VyY2UsIGNvbnN0IFVTdHJpbmcmIHVybCA9IFVTdHJpbmcoKSwgaW50
IGZpcnN0TGluZSA9IDEpCisgICAgaW5saW5lIFNvdXJjZUNvZGUgbWFrZVNvdXJjZShjb25zdCBV
U3RyaW5nJiBzb3VyY2UsIGNvbnN0IFVTdHJpbmcmIHVybCA9IFVTdHJpbmcoKSwgY29uc3QgVGV4
dFBvc2l0aW9uJiBzdGFydFBvc2l0aW9uID0gVGV4dFBvc2l0aW9uOjptaW5pbXVtUG9zaXRpb24o
KSkKICAgICB7Ci0gICAgICAgIHJldHVybiBTb3VyY2VDb2RlKFVTdHJpbmdTb3VyY2VQcm92aWRl
cjo6Y3JlYXRlKHNvdXJjZSwgdXJsKSwgZmlyc3RMaW5lKTsKKyAgICAgICAgcmV0dXJuIFNvdXJj
ZUNvZGUoVVN0cmluZ1NvdXJjZVByb3ZpZGVyOjpjcmVhdGUoc291cmNlLCB1cmwsIHN0YXJ0UG9z
aXRpb24pLCBzdGFydFBvc2l0aW9uLm1fbGluZS5vbmVCYXNlZEludCgpKTsKICAgICB9CiAgICAg
CiAgICAgaW5saW5lIFNvdXJjZUNvZGUgU291cmNlQ29kZTo6c3ViRXhwcmVzc2lvbihpbnQgb3Bl
bkJyYWNlLCBpbnQgY2xvc2VCcmFjZSwgaW50IGZpcnN0TGluZSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvU291cmNlUHJvdmlkZXIuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9wYXJzZXIvU291cmNlUHJvdmlkZXIuaAppbmRleCA3NzFlNDYwNzUxOGFlNjExNzE2
MTk5OWI3Zjc1ZDY0YjI5ZDM3NmU5Li5mMjZhOTJkMjhlZWZmNDE5N2NlOTQ3NjZiODc1MmY1ZmVi
OTk1ZmQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1NvdXJjZVBy
b3ZpZGVyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Tb3VyY2VQcm92aWRl
ci5oCkBAIC00MCw4ICs0MCw5IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3MgU291cmNl
UHJvdmlkZXIgOiBwdWJsaWMgUmVmQ291bnRlZDxTb3VyY2VQcm92aWRlcj4gewogICAgIHB1Ymxp
YzoKLSAgICAgICAgU291cmNlUHJvdmlkZXIoY29uc3QgVVN0cmluZyYgdXJsLCBTb3VyY2VQcm92
aWRlckNhY2hlKiBjYWNoZSA9IDApCisgICAgICAgIFNvdXJjZVByb3ZpZGVyKGNvbnN0IFVTdHJp
bmcmIHVybCwgY29uc3QgVGV4dFBvc2l0aW9uJiBzdGFydFBvc2l0aW9uLCBTb3VyY2VQcm92aWRl
ckNhY2hlKiBjYWNoZSA9IDApCiAgICAgICAgICAgICA6IG1fdXJsKHVybCkKKyAgICAgICAgICAg
ICwgbV9zdGFydFBvc2l0aW9uKHN0YXJ0UG9zaXRpb24pCiAgICAgICAgICAgICAsIG1fdmFsaWRh
dGVkKGZhbHNlKQogICAgICAgICAgICAgLCBtX2NhY2hlKGNhY2hlID8gY2FjaGUgOiBuZXcgU291
cmNlUHJvdmlkZXJDYWNoZSkKICAgICAgICAgICAgICwgbV9jYWNoZU93bmVkKCFjYWNoZSkKQEAg
LTU5LDcgKzYwLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHZpcnR1YWwgaW50IGxlbmd0
aCgpIGNvbnN0ID0gMDsKICAgICAgICAgCiAgICAgICAgIGNvbnN0IFVTdHJpbmcmIHVybCgpIHsg
cmV0dXJuIG1fdXJsOyB9Ci0gICAgICAgIHZpcnR1YWwgVGV4dFBvc2l0aW9uIHN0YXJ0UG9zaXRp
b24oKSBjb25zdCB7IHJldHVybiBUZXh0UG9zaXRpb246Om1pbmltdW1Qb3NpdGlvbigpOyB9Cisg
ICAgICAgIFRleHRQb3NpdGlvbiBzdGFydFBvc2l0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9zdGFy
dFBvc2l0aW9uOyB9CiAgICAgICAgIGludHB0cl90IGFzSUQoKSB7IHJldHVybiByZWludGVycHJl
dF9jYXN0PGludHB0cl90Pih0aGlzKTsgfQogCiAgICAgICAgIGJvb2wgaXNWYWxpZCgpIGNvbnN0
IHsgcmV0dXJuIG1fdmFsaWRhdGVkOyB9CkBAIC03Miw2ICs3Myw3IEBAIG5hbWVzcGFjZSBKU0Mg
ewogICAgICAgICB2aXJ0dWFsIHZvaWQgY2FjaGVTaXplQ2hhbmdlZChpbnQgZGVsdGEpIHsgVU5V
U0VEX1BBUkFNKGRlbHRhKTsgfQogCiAgICAgICAgIFVTdHJpbmcgbV91cmw7CisgICAgICAgIFRl
eHRQb3NpdGlvbiBtX3N0YXJ0UG9zaXRpb247CiAgICAgICAgIGJvb2wgbV92YWxpZGF0ZWQ7CiAg
ICAgICAgIFNvdXJjZVByb3ZpZGVyQ2FjaGUqIG1fY2FjaGU7CiAgICAgICAgIGJvb2wgbV9jYWNo
ZU93bmVkOwpAQCAtNzksOSArODEsOSBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIFVT
dHJpbmdTb3VyY2VQcm92aWRlciA6IHB1YmxpYyBTb3VyY2VQcm92aWRlciB7CiAgICAgcHVibGlj
OgotICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxVU3RyaW5nU291cmNlUHJvdmlkZXI+IGNyZWF0
ZShjb25zdCBVU3RyaW5nJiBzb3VyY2UsIGNvbnN0IFVTdHJpbmcmIHVybCkKKyAgICAgICAgc3Rh
dGljIFBhc3NSZWZQdHI8VVN0cmluZ1NvdXJjZVByb3ZpZGVyPiBjcmVhdGUoY29uc3QgVVN0cmlu
ZyYgc291cmNlLCBjb25zdCBVU3RyaW5nJiB1cmwsIGNvbnN0IFRleHRQb3NpdGlvbiYgc3RhcnRQ
b3NpdGlvbiA9IFRleHRQb3NpdGlvbjo6bWluaW11bVBvc2l0aW9uKCkpCiAgICAgICAgIHsKLSAg
ICAgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgVVN0cmluZ1NvdXJjZVByb3ZpZGVyKHNvdXJj
ZSwgdXJsKSk7CisgICAgICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFVTdHJpbmdTb3VyY2VQ
cm92aWRlcihzb3VyY2UsIHVybCwgc3RhcnRQb3NpdGlvbikpOwogICAgICAgICB9CiAKICAgICAg
ICAgVVN0cmluZyBnZXRSYW5nZShpbnQgc3RhcnQsIGludCBlbmQpIGNvbnN0CkBAIC05Miw4ICs5
NCw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBpbnQgbGVuZ3RoKCkgY29uc3QgeyByZXR1
cm4gbV9zb3VyY2UubGVuZ3RoKCk7IH0KIAogICAgIHByaXZhdGU6Ci0gICAgICAgIFVTdHJpbmdT
b3VyY2VQcm92aWRlcihjb25zdCBVU3RyaW5nJiBzb3VyY2UsIGNvbnN0IFVTdHJpbmcmIHVybCkK
LSAgICAgICAgICAgIDogU291cmNlUHJvdmlkZXIodXJsKQorICAgICAgICBVU3RyaW5nU291cmNl
UHJvdmlkZXIoY29uc3QgVVN0cmluZyYgc291cmNlLCBjb25zdCBVU3RyaW5nJiB1cmwsIGNvbnN0
IFRleHRQb3NpdGlvbiYgc3RhcnRQb3NpdGlvbikKKyAgICAgICAgICAgIDogU291cmNlUHJvdmlk
ZXIodXJsLCBzdGFydFBvc2l0aW9uKQogICAgICAgICAgICAgLCBtX3NvdXJjZShzb3VyY2UpCiAg
ICAgICAgICAgICAsIG1fZGF0YShtX3NvdXJjZS5jaGFyYWN0ZXJzMTYoKSkKICAgICAgICAgewpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25Db25zdHJ1
Y3Rvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvbkNvbnN0cnVj
dG9yLmNwcAppbmRleCA1NTQyZDg1NjEwOWJjY2JjNTEyYTY3MGZjNWZjZTQyMjdmNDljZGU0Li5i
ZTRjNjNjNDU3NmNlNzQwMWQxZmM5MDE2OWVlNDZmMzA3NWU2ZTA2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvbkNvbnN0cnVjdG9yLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvbkNvbnN0cnVjdG9yLmNwcApAQCAt
NzksMTQgKzc5LDE0IEBAIENhbGxUeXBlIEZ1bmN0aW9uQ29uc3RydWN0b3I6OmdldENhbGxEYXRh
KEpTQ2VsbCosIENhbGxEYXRhJiBjYWxsRGF0YSkKIH0KIAogLy8gRUNNQSAxNS4zLjIgVGhlIEZ1
bmN0aW9uIENvbnN0cnVjdG9yCi1KU09iamVjdCogY29uc3RydWN0RnVuY3Rpb24oRXhlY1N0YXRl
KiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBjb25zdCBBcmdMaXN0JiBhcmdz
LCBjb25zdCBJZGVudGlmaWVyJiBmdW5jdGlvbk5hbWUsIGNvbnN0IFVTdHJpbmcmIHNvdXJjZVVS
TCwgaW50IGxpbmVOdW1iZXIpCitKU09iamVjdCogY29uc3RydWN0RnVuY3Rpb24oRXhlY1N0YXRl
KiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBjb25zdCBBcmdMaXN0JiBhcmdz
LCBjb25zdCBJZGVudGlmaWVyJiBmdW5jdGlvbk5hbWUsIGNvbnN0IFVTdHJpbmcmIHNvdXJjZVVS
TCwgY29uc3QgVGV4dFBvc2l0aW9uJiBwb3NpdGlvbikKIHsKICAgICBpZiAoIWdsb2JhbE9iamVj
dC0+ZXZhbEVuYWJsZWQoKSkKICAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoZXhlYywgY3JlYXRl
RXZhbEVycm9yKGV4ZWMsICJGdW5jdGlvbiBjb25zdHJ1Y3RvciBpcyBkaXNhYmxlZCIpKTsKLSAg
ICByZXR1cm4gY29uc3RydWN0RnVuY3Rpb25Ta2lwcGluZ0V2YWxFbmFibGVkQ2hlY2soZXhlYywg
Z2xvYmFsT2JqZWN0LCBhcmdzLCBmdW5jdGlvbk5hbWUsIHNvdXJjZVVSTCwgbGluZU51bWJlcik7
CisgICAgcmV0dXJuIGNvbnN0cnVjdEZ1bmN0aW9uU2tpcHBpbmdFdmFsRW5hYmxlZENoZWNrKGV4
ZWMsIGdsb2JhbE9iamVjdCwgYXJncywgZnVuY3Rpb25OYW1lLCBzb3VyY2VVUkwsIHBvc2l0aW9u
KTsKIH0KIAotSlNPYmplY3QqIGNvbnN0cnVjdEZ1bmN0aW9uU2tpcHBpbmdFdmFsRW5hYmxlZENo
ZWNrKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgY29uc3Qg
QXJnTGlzdCYgYXJncywgY29uc3QgSWRlbnRpZmllciYgZnVuY3Rpb25OYW1lLCBjb25zdCBVU3Ry
aW5nJiBzb3VyY2VVUkwsIGludCBsaW5lTnVtYmVyKQorSlNPYmplY3QqIGNvbnN0cnVjdEZ1bmN0
aW9uU2tpcHBpbmdFdmFsRW5hYmxlZENoZWNrKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgY29uc3QgQXJnTGlzdCYgYXJncywgY29uc3QgSWRlbnRpZmllciYg
ZnVuY3Rpb25OYW1lLCBjb25zdCBVU3RyaW5nJiBzb3VyY2VVUkwsIGNvbnN0IFRleHRQb3NpdGlv
biYgcG9zaXRpb24pCiB7CiAgICAgLy8gRnVuY3Rpb25zIG5lZWQgdG8gaGF2ZSBhIHNwYWNlIGZv
bGxvd2luZyB0aGUgb3BlbmluZyB7IGR1ZSB0byBmb3Igd2ViIGNvbXBhdGliaWxpdHkKICAgICAv
LyBzZWUgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI0MzUwCkBAIC0x
MTEsNyArMTExLDcgQEAgSlNPYmplY3QqIGNvbnN0cnVjdEZ1bmN0aW9uU2tpcHBpbmdFdmFsRW5h
YmxlZENoZWNrKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmoKICAgICB9CiAKICAgICBKU0ds
b2JhbERhdGEmIGdsb2JhbERhdGEgPSBnbG9iYWxPYmplY3QtPmdsb2JhbERhdGEoKTsKLSAgICBT
b3VyY2VDb2RlIHNvdXJjZSA9IG1ha2VTb3VyY2UocHJvZ3JhbSwgc291cmNlVVJMLCBsaW5lTnVt
YmVyKTsKKyAgICBTb3VyY2VDb2RlIHNvdXJjZSA9IG1ha2VTb3VyY2UocHJvZ3JhbSwgc291cmNl
VVJMLCBwb3NpdGlvbik7CiAgICAgSlNPYmplY3QqIGV4Y2VwdGlvbiA9IDA7CiAgICAgRnVuY3Rp
b25FeGVjdXRhYmxlKiBmdW5jdGlvbiA9IEZ1bmN0aW9uRXhlY3V0YWJsZTo6ZnJvbUdsb2JhbENv
ZGUoZnVuY3Rpb25OYW1lLCBleGVjLCBleGVjLT5keW5hbWljR2xvYmFsT2JqZWN0KCktPmRlYnVn
Z2VyKCksIHNvdXJjZSwgJmV4Y2VwdGlvbik7CiAgICAgaWYgKCFmdW5jdGlvbikgewpAQCAtMTI2
LDcgKzEyNiw3IEBAIEpTT2JqZWN0KiBjb25zdHJ1Y3RGdW5jdGlvblNraXBwaW5nRXZhbEVuYWJs
ZWRDaGVjayhFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqCiAvLyBFQ01BIDE1LjMuMiBUaGUg
RnVuY3Rpb24gQ29uc3RydWN0b3IKIEpTT2JqZWN0KiBjb25zdHJ1Y3RGdW5jdGlvbihFeGVjU3Rh
dGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGNvbnN0IEFyZ0xpc3QmIGFy
Z3MpCiB7Ci0gICAgcmV0dXJuIGNvbnN0cnVjdEZ1bmN0aW9uKGV4ZWMsIGdsb2JhbE9iamVjdCwg
YXJncywgSWRlbnRpZmllcihleGVjLCAiYW5vbnltb3VzIiksIFVTdHJpbmcoKSwgMSk7CisgICAg
cmV0dXJuIGNvbnN0cnVjdEZ1bmN0aW9uKGV4ZWMsIGdsb2JhbE9iamVjdCwgYXJncywgSWRlbnRp
ZmllcihleGVjLCAiYW5vbnltb3VzIiksIFVTdHJpbmcoKSwgVGV4dFBvc2l0aW9uOjptaW5pbXVt
UG9zaXRpb24oKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25Db25zdHJ1Y3Rvci5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25Db25zdHJ1Y3Rvci5oCmluZGV4IGFkMDQ1N2Zj
NjQ4YzkzNjNlOTIyODQ4N2MyNjAxNDJjNzQzYzdlY2UuLmE4YWNmMWE0MmQ1MDY1NTY2ZDRkZmVj
N2I4NTE3MzVkZThlMjY0NGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0Z1bmN0aW9uQ29uc3RydWN0b3IuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9GdW5jdGlvbkNvbnN0cnVjdG9yLmgKQEAgLTIzLDYgKzIzLDEwIEBACiAKICNpbmNsdWRl
ICJJbnRlcm5hbEZ1bmN0aW9uLmgiCiAKK25hbWVzcGFjZSBXVEYgeworY2xhc3MgVGV4dFBvc2l0
aW9uOworfQorCiBuYW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIEZ1bmN0aW9uUHJvdG90eXBl
OwpAQCAtNTIsMTAgKzU2LDEwIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBzdGF0aWMgQ2Fs
bFR5cGUgZ2V0Q2FsbERhdGEoSlNDZWxsKiwgQ2FsbERhdGEmKTsKICAgICB9OwogCi0gICAgSlNP
YmplY3QqIGNvbnN0cnVjdEZ1bmN0aW9uKEV4ZWNTdGF0ZSosIEpTR2xvYmFsT2JqZWN0KiwgY29u
c3QgQXJnTGlzdCYsIGNvbnN0IElkZW50aWZpZXImIGZ1bmN0aW9uTmFtZSwgY29uc3QgVVN0cmlu
ZyYgc291cmNlVVJMLCBpbnQgbGluZU51bWJlcik7CisgICAgSlNPYmplY3QqIGNvbnN0cnVjdEZ1
bmN0aW9uKEV4ZWNTdGF0ZSosIEpTR2xvYmFsT2JqZWN0KiwgY29uc3QgQXJnTGlzdCYsIGNvbnN0
IElkZW50aWZpZXImIGZ1bmN0aW9uTmFtZSwgY29uc3QgVVN0cmluZyYgc291cmNlVVJMLCBjb25z
dCBXVEY6OlRleHRQb3NpdGlvbiYpOwogICAgIEpTT2JqZWN0KiBjb25zdHJ1Y3RGdW5jdGlvbihF
eGVjU3RhdGUqLCBKU0dsb2JhbE9iamVjdCosIGNvbnN0IEFyZ0xpc3QmKTsKIAotICAgIEpTT2Jq
ZWN0KiBjb25zdHJ1Y3RGdW5jdGlvblNraXBwaW5nRXZhbEVuYWJsZWRDaGVjayhFeGVjU3RhdGUq
LCBKU0dsb2JhbE9iamVjdCosIGNvbnN0IEFyZ0xpc3QmLCBjb25zdCBJZGVudGlmaWVyJiwgY29u
c3QgVVN0cmluZyYsIGludCBsaW5lTnVtYmVyKTsKKyAgICBKU09iamVjdCogY29uc3RydWN0RnVu
Y3Rpb25Ta2lwcGluZ0V2YWxFbmFibGVkQ2hlY2soRXhlY1N0YXRlKiwgSlNHbG9iYWxPYmplY3Qq
LCBjb25zdCBBcmdMaXN0JiwgY29uc3QgSWRlbnRpZmllciYsIGNvbnN0IFVTdHJpbmcmLCBjb25z
dCBXVEY6OlRleHRQb3NpdGlvbiYpOwogCiB9IC8vIG5hbWVzcGFjZSBKU0MKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvQ2FjaGVkU2NyaXB0U291cmNlUHJvdmlkZXIu
aCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0NhY2hlZFNjcmlwdFNvdXJjZVByb3ZpZGVy
LmgKaW5kZXggOGY2M2E2OWUwNmEzZjA2NDgzNWIyNjlhZGI5ZDExMWE5MTVlMWRkMC4uZTRlNzMy
NmVhYmRlYzAwZDEzMDE2MmJhYjVmOWU4MWFhOGU5MTQxMSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvQ2FjaGVkU2NyaXB0U291cmNlUHJvdmlkZXIuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9DYWNoZWRTY3JpcHRTb3VyY2VQcm92aWRlci5oCkBAIC01
Nyw3ICs1Nyw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgIHByaXZhdGU6CiAgICAgICAg
IENhY2hlZFNjcmlwdFNvdXJjZVByb3ZpZGVyKENhY2hlZFNjcmlwdCogY2FjaGVkU2NyaXB0KQot
ICAgICAgICAgICAgOiBTY3JpcHRTb3VyY2VQcm92aWRlcihzdHJpbmdUb1VTdHJpbmcoY2FjaGVk
U2NyaXB0LT5yZXNwb25zZSgpLnVybCgpKSwgY2FjaGVkU2NyaXB0LT5zb3VyY2VQcm92aWRlckNh
Y2hlKCkpCisgICAgICAgICAgICA6IFNjcmlwdFNvdXJjZVByb3ZpZGVyKHN0cmluZ1RvVVN0cmlu
ZyhjYWNoZWRTY3JpcHQtPnJlc3BvbnNlKCkudXJsKCkpLCBUZXh0UG9zaXRpb246Om1pbmltdW1Q
b3NpdGlvbigpLCBjYWNoZWRTY3JpcHQtPnNvdXJjZVByb3ZpZGVyQ2FjaGUoKSkKICAgICAgICAg
ICAgICwgbV9jYWNoZWRTY3JpcHQoY2FjaGVkU2NyaXB0KQogICAgICAgICB7CiAgICAgICAgICAg
ICBtX2NhY2hlZFNjcmlwdC0+YWRkQ2xpZW50KHRoaXMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNMYXp5RXZlbnRMaXN0ZW5lci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU0xhenlFdmVudExpc3RlbmVyLmNwcAppbmRleCA4YTZmYmI3NDY5Yjgx
NTE1OGMyNDM2ODM0NzFjNmJmNzRlMDA0ZDlhLi40ZTMwMDEyNGIwNmI4Mjc4ZDVlMTY2ZTEzYTEx
MjlmZjNiMWI5NTlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0xh
enlFdmVudExpc3RlbmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0xh
enlFdmVudExpc3RlbmVyLmNwcApAQCAtMjgsNiArMjgsNyBAQAogI2luY2x1ZGUgPHJ1bnRpbWUv
SlNMb2NrLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWRMZWFrQ291bnRlci5oPgogI2luY2x1
ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9UZXh0UG9zaXRpb24u
aD4KIAogdXNpbmcgbmFtZXNwYWNlIEpTQzsKIApAQCAtMzUsMTMgKzM2LDEzIEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAogREVGSU5FX0RFQlVHX09OTFlfR0xPQkFMKFdURjo6UmVmQ291bnRlZExl
YWtDb3VudGVyLCBldmVudExpc3RlbmVyQ291bnRlciwgKCJKU0xhenlFdmVudExpc3RlbmVyIikp
OwogCi1KU0xhenlFdmVudExpc3RlbmVyOjpKU0xhenlFdmVudExpc3RlbmVyKGNvbnN0IFN0cmlu
ZyYgZnVuY3Rpb25OYW1lLCBjb25zdCBTdHJpbmcmIGV2ZW50UGFyYW1ldGVyTmFtZSwgY29uc3Qg
U3RyaW5nJiBjb2RlLCBOb2RlKiBub2RlLCBjb25zdCBTdHJpbmcmIHNvdXJjZVVSTCwgaW50IGxp
bmVOdW1iZXIsIEpTT2JqZWN0KiB3cmFwcGVyLCBET01XcmFwcGVyV29ybGQqIGlzb2xhdGVkV29y
bGQpCitKU0xhenlFdmVudExpc3RlbmVyOjpKU0xhenlFdmVudExpc3RlbmVyKGNvbnN0IFN0cmlu
ZyYgZnVuY3Rpb25OYW1lLCBjb25zdCBTdHJpbmcmIGV2ZW50UGFyYW1ldGVyTmFtZSwgY29uc3Qg
U3RyaW5nJiBjb2RlLCBOb2RlKiBub2RlLCBjb25zdCBTdHJpbmcmIHNvdXJjZVVSTCwgY29uc3Qg
VGV4dFBvc2l0aW9uJiBwb3NpdGlvbiwgSlNPYmplY3QqIHdyYXBwZXIsIERPTVdyYXBwZXJXb3Js
ZCogaXNvbGF0ZWRXb3JsZCkKICAgICA6IEpTRXZlbnRMaXN0ZW5lcigwLCB3cmFwcGVyLCB0cnVl
LCBpc29sYXRlZFdvcmxkKQogICAgICwgbV9mdW5jdGlvbk5hbWUoZnVuY3Rpb25OYW1lKQogICAg
ICwgbV9ldmVudFBhcmFtZXRlck5hbWUoZXZlbnRQYXJhbWV0ZXJOYW1lKQogICAgICwgbV9jb2Rl
KGNvZGUpCiAgICAgLCBtX3NvdXJjZVVSTChzb3VyY2VVUkwpCi0gICAgLCBtX2xpbmVOdW1iZXIo
bGluZU51bWJlcikKKyAgICAsIG1fcG9zaXRpb24ocG9zaXRpb24pCiAgICAgLCBtX29yaWdpbmFs
Tm9kZShub2RlKQogewogICAgIC8vIFdlIGRvbid0IHJldGFpbiB0aGUgb3JpZ2luYWwgbm9kZSBi
ZWNhdXNlIHdlIGFzc3VtZSBpdApAQCAtNTIsOCArNTMsOCBAQCBKU0xhenlFdmVudExpc3RlbmVy
OjpKU0xhenlFdmVudExpc3RlbmVyKGNvbnN0IFN0cmluZyYgZnVuY3Rpb25OYW1lLCBjb25zdCBT
dHJpbgogCiAgICAgLy8gQSBKU0xhenlFdmVudExpc3RlbmVyIGNhbiBiZSBjcmVhdGVkIHdpdGgg
YSBsaW5lIG51bWJlciBvZiB6ZXJvIHdoZW4gaXQgaXMgY3JlYXRlZCB3aXRoCiAgICAgLy8gYSBz
ZXRBdHRyaWJ1dGUgY2FsbCBmcm9tIEphdmFTY3JpcHQsIHNvIG1ha2UgdGhlIGxpbmUgbnVtYmVy
IDEgaW4gdGhhdCBjYXNlLgotICAgIGlmIChtX2xpbmVOdW1iZXIgPT0gMCkKLSAgICAgICAgbV9s
aW5lTnVtYmVyID0gMTsKKyAgICBpZiAobV9wb3NpdGlvbiA9PSBUZXh0UG9zaXRpb246OmJlbG93
UmFuZ2VQb3NpdGlvbigpKQorICAgICAgICBtX3Bvc2l0aW9uID0gVGV4dFBvc2l0aW9uOjptaW5p
bXVtUG9zaXRpb24oKTsKIAogI2lmbmRlZiBOREVCVUcKICAgICBldmVudExpc3RlbmVyQ291bnRl
ci5pbmNyZW1lbnQoKTsKQEAgLTk2LDcgKzk3LDcgQEAgSlNPYmplY3QqIEpTTGF6eUV2ZW50TGlz
dGVuZXI6OmluaXRpYWxpemVKU0Z1bmN0aW9uKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGV4ZWMK
ICAgICBhcmdzLmFwcGVuZChqc05vbnRyaXZpYWxTdHJpbmcoZXhlYywgc3RyaW5nVG9VU3RyaW5n
KG1fZXZlbnRQYXJhbWV0ZXJOYW1lKSkpOwogICAgIGFyZ3MuYXBwZW5kKGpzU3RyaW5nKGV4ZWMs
IG1fY29kZSkpOwogCi0gICAgSlNPYmplY3QqIGpzRnVuY3Rpb24gPSBjb25zdHJ1Y3RGdW5jdGlv
blNraXBwaW5nRXZhbEVuYWJsZWRDaGVjayhleGVjLCBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0
KCksIGFyZ3MsIElkZW50aWZpZXIoZXhlYywgc3RyaW5nVG9VU3RyaW5nKG1fZnVuY3Rpb25OYW1l
KSksIHN0cmluZ1RvVVN0cmluZyhtX3NvdXJjZVVSTCksIG1fbGluZU51bWJlcik7IC8vIEZJWE1F
OiBpcyBnbG9iYWxFeGVjIG9rPworICAgIEpTT2JqZWN0KiBqc0Z1bmN0aW9uID0gY29uc3RydWN0
RnVuY3Rpb25Ta2lwcGluZ0V2YWxFbmFibGVkQ2hlY2soZXhlYywgZXhlYy0+bGV4aWNhbEdsb2Jh
bE9iamVjdCgpLCBhcmdzLCBJZGVudGlmaWVyKGV4ZWMsIHN0cmluZ1RvVVN0cmluZyhtX2Z1bmN0
aW9uTmFtZSkpLCBzdHJpbmdUb1VTdHJpbmcobV9zb3VyY2VVUkwpLCBtX3Bvc2l0aW9uKTsgLy8g
RklYTUU6IGlzIGdsb2JhbEV4ZWMgb2s/CiAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKSB7
CiAgICAgICAgIHJlcG9ydEN1cnJlbnRFeGNlcHRpb24oZXhlYyk7CiAgICAgICAgIGV4ZWMtPmNs
ZWFyRXhjZXB0aW9uKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U0xhenlFdmVudExpc3RlbmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0xhenlF
dmVudExpc3RlbmVyLmgKaW5kZXggMWIwMGI3NWIyNTQ2N2U2OTM2NWNiNTFhZDAzMDMzYThhYTYw
MzQyYi4uYWEwNWM4M2JhYTM1ZmI4ZDY5MWRiNDU3OGJkOGFlYzRmNzk2ZjRmZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNMYXp5RXZlbnRMaXN0ZW5lci5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTGF6eUV2ZW50TGlzdGVuZXIuaApAQCAtMjIs
NiArMjIsNyBAQAogCiAjaW5jbHVkZSAiSlNFdmVudExpc3RlbmVyLmgiCiAjaW5jbHVkZSAiUGxh
dGZvcm1TdHJpbmcuaCIKKyNpbmNsdWRlIDx3dGYvdGV4dC9UZXh0UG9zaXRpb24uaD4KIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCkBAIC0yOSwxNCArMzAsMTQgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogCiAgICAgY2xhc3MgSlNMYXp5RXZlbnRMaXN0ZW5lciA6IHB1YmxpYyBKU0V2ZW50TGlzdGVu
ZXIgewogICAgIHB1YmxpYzoKLSAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8SlNMYXp5RXZlbnRM
aXN0ZW5lcj4gY3JlYXRlKGNvbnN0IFN0cmluZyYgZnVuY3Rpb25OYW1lLCBjb25zdCBTdHJpbmcm
IGV2ZW50UGFyYW1ldGVyTmFtZSwgY29uc3QgU3RyaW5nJiBjb2RlLCBOb2RlKiBub2RlLCBjb25z
dCBTdHJpbmcmIHNvdXJjZVVSTCwgaW50IGxpbmVOdW1iZXIsIEpTQzo6SlNPYmplY3QqIHdyYXBw
ZXIsIERPTVdyYXBwZXJXb3JsZCogaXNvbGF0ZWRXb3JsZCkKKyAgICAgICAgc3RhdGljIFBhc3NS
ZWZQdHI8SlNMYXp5RXZlbnRMaXN0ZW5lcj4gY3JlYXRlKGNvbnN0IFN0cmluZyYgZnVuY3Rpb25O
YW1lLCBjb25zdCBTdHJpbmcmIGV2ZW50UGFyYW1ldGVyTmFtZSwgY29uc3QgU3RyaW5nJiBjb2Rl
LCBOb2RlKiBub2RlLCBjb25zdCBTdHJpbmcmIHNvdXJjZVVSTCwgY29uc3QgVGV4dFBvc2l0aW9u
JiBwb3NpdGlvbiwgSlNDOjpKU09iamVjdCogd3JhcHBlciwgRE9NV3JhcHBlcldvcmxkKiBpc29s
YXRlZFdvcmxkKQogICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEpT
TGF6eUV2ZW50TGlzdGVuZXIoZnVuY3Rpb25OYW1lLCBldmVudFBhcmFtZXRlck5hbWUsIGNvZGUs
IG5vZGUsIHNvdXJjZVVSTCwgbGluZU51bWJlciwgd3JhcHBlciwgaXNvbGF0ZWRXb3JsZCkpOwor
ICAgICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBKU0xhenlFdmVudExpc3RlbmVyKGZ1bmN0
aW9uTmFtZSwgZXZlbnRQYXJhbWV0ZXJOYW1lLCBjb2RlLCBub2RlLCBzb3VyY2VVUkwsIHBvc2l0
aW9uLCB3cmFwcGVyLCBpc29sYXRlZFdvcmxkKSk7CiAgICAgICAgIH0KICAgICAgICAgdmlydHVh
bCB+SlNMYXp5RXZlbnRMaXN0ZW5lcigpOwogCiAgICAgcHJpdmF0ZToKLSAgICAgICAgSlNMYXp5
RXZlbnRMaXN0ZW5lcihjb25zdCBTdHJpbmcmIGZ1bmN0aW9uTmFtZSwgY29uc3QgU3RyaW5nJiBl
dmVudFBhcmFtZXRlck5hbWUsIGNvbnN0IFN0cmluZyYgY29kZSwgTm9kZSosIGNvbnN0IFN0cmlu
ZyYgc291cmNlVVJMLCBpbnQgbGluZU51bWJlciwgSlNDOjpKU09iamVjdCogd3JhcHBlciwgRE9N
V3JhcHBlcldvcmxkKiBpc29sYXRlZFdvcmxkKTsKKyAgICAgICAgSlNMYXp5RXZlbnRMaXN0ZW5l
cihjb25zdCBTdHJpbmcmIGZ1bmN0aW9uTmFtZSwgY29uc3QgU3RyaW5nJiBldmVudFBhcmFtZXRl
ck5hbWUsIGNvbnN0IFN0cmluZyYgY29kZSwgTm9kZSosIGNvbnN0IFN0cmluZyYgc291cmNlVVJM
LCBjb25zdCBUZXh0UG9zaXRpb24mLCBKU0M6OkpTT2JqZWN0KiB3cmFwcGVyLCBET01XcmFwcGVy
V29ybGQqIGlzb2xhdGVkV29ybGQpOwogCiAgICAgICAgIHZpcnR1YWwgSlNDOjpKU09iamVjdCog
aW5pdGlhbGl6ZUpTRnVuY3Rpb24oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCopIGNvbnN0OwogICAg
ICAgICB2aXJ0dWFsIGJvb2wgd2FzQ3JlYXRlZEZyb21NYXJrdXAoKSBjb25zdCB7IHJldHVybiB0
cnVlOyB9CkBAIC00NSw3ICs0Niw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgbXV0
YWJsZSBTdHJpbmcgbV9ldmVudFBhcmFtZXRlck5hbWU7CiAgICAgICAgIG11dGFibGUgU3RyaW5n
IG1fY29kZTsKICAgICAgICAgbXV0YWJsZSBTdHJpbmcgbV9zb3VyY2VVUkw7Ci0gICAgICAgIGlu
dCBtX2xpbmVOdW1iZXI7CisgICAgICAgIFRleHRQb3NpdGlvbiBtX3Bvc2l0aW9uOwogICAgICAg
ICBOb2RlKiBtX29yaWdpbmFsTm9kZTsKICAgICB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuY3BwCmluZGV4IGVhZTg1MTdhZDc5YzRlNTEwMmFk
MTFkN2Q1ZDMyNzczMDJkYmZlYzMuLjBmMWMxYzdkY2E0NTFmZjEzOThhYjcxMWM5MTJiMjA0MDNk
ZjkwMmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENvbnRy
b2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xs
ZXIuY3BwCkBAIC00Nyw2ICs0Nyw3IEBACiAjaW5jbHVkZSA8aGVhcC9TdHJvbmdJbmxpbmVzLmg+
CiAjaW5jbHVkZSA8cnVudGltZS9Jbml0aWFsaXplVGhyZWFkaW5nLmg+CiAjaW5jbHVkZSA8cnVu
dGltZS9KU0xvY2suaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9UZXh0UG9zaXRpb24uaD4KICNpbmNs
dWRlIDx3dGYvVGhyZWFkaW5nLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBKU0M7CkBAIC0yMjUsMTMg
KzIyNiwxMiBAQCBKU0RPTVdpbmRvd1NoZWxsKiBTY3JpcHRDb250cm9sbGVyOjppbml0U2NyaXB0
KERPTVdyYXBwZXJXb3JsZCogd29ybGQpCiAgICAgcmV0dXJuIHdpbmRvd1NoZWxsOwogfQogCi1p
bnQgU2NyaXB0Q29udHJvbGxlcjo6ZXZlbnRIYW5kbGVyTGluZU51bWJlcigpIGNvbnN0CitUZXh0
UG9zaXRpb24gU2NyaXB0Q29udHJvbGxlcjo6ZXZlbnRIYW5kbGVyUG9zaXRpb24oKSBjb25zdAog
ewotICAgIC8vIEpTQyBleHBlY3RzIDEtYmFzZWQgbGluZSBudW1iZXJzLCBzbyB3ZSBtdXN0IGFk
ZCBvbmUgaGVyZSB0byBnZXQgaXQgcmlnaHQuCiAgICAgU2NyaXB0YWJsZURvY3VtZW50UGFyc2Vy
KiBwYXJzZXIgPSBtX2ZyYW1lLT5kb2N1bWVudCgpLT5zY3JpcHRhYmxlRG9jdW1lbnRQYXJzZXIo
KTsKICAgICBpZiAocGFyc2VyKQotICAgICAgICByZXR1cm4gcGFyc2VyLT5saW5lTnVtYmVyKCku
b25lQmFzZWRJbnQoKTsKLSAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIHBhcnNlci0+dGV4
dFBvc2l0aW9uKCk7CisgICAgcmV0dXJuIFRleHRQb3NpdGlvbjo6YmVsb3dSYW5nZVBvc2l0aW9u
KCk7CiB9CiAKIHZvaWQgU2NyaXB0Q29udHJvbGxlcjo6ZGlzYWJsZUV2YWwoKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5oIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5oCmluZGV4IGRlODIwZWRhN2E5
OTZiNTJhODI1NTY2MGRlMDE4NmZmOTYwZTBiN2YuLmQ2NzJmNDJkZTA0YmY0YmVhYzEyYjc4NWNh
MmMyMDFlN2I2OTdmZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1Nj
cmlwdENvbnRyb2xsZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRD
b250cm9sbGVyLmgKQEAgLTI5LDYgKzI5LDcgQEAKICNpbmNsdWRlIDxoZWFwL1N0cm9uZy5oPgog
I2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgorI2luY2x1
ZGUgPHd0Zi90ZXh0L1RleHRQb3NpdGlvbi5oPgogCiAjaWYgUExBVEZPUk0oTUFDKQogI2luY2x1
ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KQEAgLTEwNCw3ICsxMDUsNyBAQCBwdWJsaWM6CiAgICAgU2Ny
aXB0VmFsdWUgZXZhbHVhdGUoY29uc3QgU2NyaXB0U291cmNlQ29kZSYpOwogICAgIFNjcmlwdFZh
bHVlIGV2YWx1YXRlSW5Xb3JsZChjb25zdCBTY3JpcHRTb3VyY2VDb2RlJiwgRE9NV3JhcHBlcldv
cmxkKik7CiAKLSAgICBpbnQgZXZlbnRIYW5kbGVyTGluZU51bWJlcigpIGNvbnN0OworICAgIFdU
Rjo6VGV4dFBvc2l0aW9uIGV2ZW50SGFuZGxlclBvc2l0aW9uKCkgY29uc3Q7CiAKICAgICB2b2lk
IGRpc2FibGVFdmFsKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L1NjcmlwdEV2ZW50TGlzdGVuZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2Ny
aXB0RXZlbnRMaXN0ZW5lci5jcHAKaW5kZXggMDZjZWRhYjc5NTQxNjYyNzc0NDAyNzI3N2Y0ZmI5
ZmViMDRlMDc2My4uNDdmZmQzODA0NWYzMzIzZmVhNzU0ZGYzYmFmMjc2MmUzYjBiNTIxNSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0RXZlbnRMaXN0ZW5lci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0RXZlbnRMaXN0ZW5lci5j
cHAKQEAgLTU2LDcgKzU2LDcgQEAgUGFzc1JlZlB0cjxKU0xhenlFdmVudExpc3RlbmVyPiBjcmVh
dGVBdHRyaWJ1dGVFdmVudExpc3RlbmVyKE5vZGUqIG5vZGUsIEF0dHJpYnUKICAgICBpZiAoYXR0
ci0+aXNOdWxsKCkpCiAgICAgICAgIHJldHVybiAwOwogCi0gICAgaW50IGxpbmVOdW1iZXIgPSAx
OworICAgIFRleHRQb3NpdGlvbiBwb3NpdGlvbiA9IFRleHRQb3NpdGlvbjo6bWluaW11bVBvc2l0
aW9uKCk7CiAgICAgU3RyaW5nIHNvdXJjZVVSTDsKICAgICAKICAgICAvLyBGSVhNRTogV2Ugc2hv
dWxkIGJlIGFibGUgdG8gcHJvdmlkZSBhY2N1cmF0ZSBzb3VyY2UgaW5mb3JtYXRpb24gZm9yIGZy
YW1lbGVzcyBkb2N1bWVudHMsIHRvbyAoZS5nLiBmb3IgaW1wb3J0aW5nIG5vZGVzIGZyb20gWE1M
SHR0cFJlcXVlc3QucmVzcG9uc2VYTUwpLgpAQCAtNjUsMTEgKzY1LDExIEBAIFBhc3NSZWZQdHI8
SlNMYXp5RXZlbnRMaXN0ZW5lcj4gY3JlYXRlQXR0cmlidXRlRXZlbnRMaXN0ZW5lcihOb2RlKiBu
b2RlLCBBdHRyaWJ1CiAgICAgICAgIGlmICghc2NyaXB0Q29udHJvbGxlci0+Y2FuRXhlY3V0ZVNj
cmlwdHMoQWJvdXRUb0V4ZWN1dGVTY3JpcHQpKQogICAgICAgICAgICAgcmV0dXJuIDA7CiAKLSAg
ICAgICAgbGluZU51bWJlciA9IHNjcmlwdENvbnRyb2xsZXItPmV2ZW50SGFuZGxlckxpbmVOdW1i
ZXIoKTsKKyAgICAgICAgcG9zaXRpb24gPSBzY3JpcHRDb250cm9sbGVyLT5ldmVudEhhbmRsZXJQ
b3NpdGlvbigpOwogICAgICAgICBzb3VyY2VVUkwgPSBub2RlLT5kb2N1bWVudCgpLT51cmwoKS5z
dHJpbmcoKTsKICAgICB9CiAKLSAgICByZXR1cm4gSlNMYXp5RXZlbnRMaXN0ZW5lcjo6Y3JlYXRl
KGF0dHItPmxvY2FsTmFtZSgpLnN0cmluZygpLCBldmVudFBhcmFtZXRlck5hbWUobm9kZS0+aXNT
VkdFbGVtZW50KCkpLCBhdHRyLT52YWx1ZSgpLCBub2RlLCBzb3VyY2VVUkwsIGxpbmVOdW1iZXIs
IDAsIG1haW5UaHJlYWROb3JtYWxXb3JsZCgpKTsKKyAgICByZXR1cm4gSlNMYXp5RXZlbnRMaXN0
ZW5lcjo6Y3JlYXRlKGF0dHItPmxvY2FsTmFtZSgpLnN0cmluZygpLCBldmVudFBhcmFtZXRlck5h
bWUobm9kZS0+aXNTVkdFbGVtZW50KCkpLCBhdHRyLT52YWx1ZSgpLCBub2RlLCBzb3VyY2VVUkws
IHBvc2l0aW9uLCAwLCBtYWluVGhyZWFkTm9ybWFsV29ybGQoKSk7CiB9CiAKIFBhc3NSZWZQdHI8
SlNMYXp5RXZlbnRMaXN0ZW5lcj4gY3JlYXRlQXR0cmlidXRlRXZlbnRMaXN0ZW5lcihGcmFtZSog
ZnJhbWUsIEF0dHJpYnV0ZSogYXR0cikKQEAgLTgxLDE3ICs4MSwxNCBAQCBQYXNzUmVmUHRyPEpT
TGF6eUV2ZW50TGlzdGVuZXI+IGNyZWF0ZUF0dHJpYnV0ZUV2ZW50TGlzdGVuZXIoRnJhbWUqIGZy
YW1lLCBBdHRyaQogICAgIGlmIChhdHRyLT5pc051bGwoKSkKICAgICAgICAgcmV0dXJuIDA7CiAK
LSAgICBpbnQgbGluZU51bWJlciA9IDE7Ci0gICAgU3RyaW5nIHNvdXJjZVVSTDsKLSAgICAKICAg
ICBTY3JpcHRDb250cm9sbGVyKiBzY3JpcHRDb250cm9sbGVyID0gZnJhbWUtPnNjcmlwdCgpOwog
ICAgIGlmICghc2NyaXB0Q29udHJvbGxlci0+Y2FuRXhlY3V0ZVNjcmlwdHMoQWJvdXRUb0V4ZWN1
dGVTY3JpcHQpKQogICAgICAgICByZXR1cm4gMDsKIAotICAgIGxpbmVOdW1iZXIgPSBzY3JpcHRD
b250cm9sbGVyLT5ldmVudEhhbmRsZXJMaW5lTnVtYmVyKCk7Ci0gICAgc291cmNlVVJMID0gZnJh
bWUtPmRvY3VtZW50KCktPnVybCgpLnN0cmluZygpOworICAgIFRleHRQb3NpdGlvbiBwb3NpdGlv
biA9IHNjcmlwdENvbnRyb2xsZXItPmV2ZW50SGFuZGxlclBvc2l0aW9uKCk7CisgICAgU3RyaW5n
IHNvdXJjZVVSTCA9IGZyYW1lLT5kb2N1bWVudCgpLT51cmwoKS5zdHJpbmcoKTsKICAgICBKU09i
amVjdCogd3JhcHBlciA9IHRvSlNET01XaW5kb3coZnJhbWUsIG1haW5UaHJlYWROb3JtYWxXb3Js
ZCgpKTsKLSAgICByZXR1cm4gSlNMYXp5RXZlbnRMaXN0ZW5lcjo6Y3JlYXRlKGF0dHItPmxvY2Fs
TmFtZSgpLnN0cmluZygpLCBldmVudFBhcmFtZXRlck5hbWUoZnJhbWUtPmRvY3VtZW50KCktPmlz
U1ZHRG9jdW1lbnQoKSksIGF0dHItPnZhbHVlKCksIDAsIHNvdXJjZVVSTCwgbGluZU51bWJlciwg
d3JhcHBlciwgbWFpblRocmVhZE5vcm1hbFdvcmxkKCkpOworICAgIHJldHVybiBKU0xhenlFdmVu
dExpc3RlbmVyOjpjcmVhdGUoYXR0ci0+bG9jYWxOYW1lKCkuc3RyaW5nKCksIGV2ZW50UGFyYW1l
dGVyTmFtZShmcmFtZS0+ZG9jdW1lbnQoKS0+aXNTVkdEb2N1bWVudCgpKSwgYXR0ci0+dmFsdWUo
KSwgMCwgc291cmNlVVJMLCBwb3NpdGlvbiwgd3JhcHBlciwgbWFpblRocmVhZE5vcm1hbFdvcmxk
KCkpOwogfQogCiBTdHJpbmcgZXZlbnRMaXN0ZW5lckhhbmRsZXJCb2R5KERvY3VtZW50KiBkb2N1
bWVudCwgRXZlbnRMaXN0ZW5lciogZXZlbnRMaXN0ZW5lcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdFNvdXJjZVByb3ZpZGVyLmggYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9TY3JpcHRTb3VyY2VQcm92aWRlci5oCmluZGV4IDNhNWQ1NzliZmVhZGQ5
NWRlNTBhZjQxZDdkYmM0OTkxNDc2NjNjZjEuLjg3NjAxODUwYWJiNDMwMGNiOTljMzA4Y2RiMjk2
NDA4ZjQwOWJjZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1Njcmlw
dFNvdXJjZVByb3ZpZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0
U291cmNlUHJvdmlkZXIuaApAQCAtMzQsOCArMzQsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
ICAgICBjbGFzcyBTY3JpcHRTb3VyY2VQcm92aWRlciA6IHB1YmxpYyBKU0M6OlNvdXJjZVByb3Zp
ZGVyIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIFNjcmlwdFNvdXJjZVByb3ZpZGVyKGNvbnN0IEpT
Qzo6VVN0cmluZyYgdXJsLCBKU0M6OlNvdXJjZVByb3ZpZGVyQ2FjaGUqIGNhY2hlID0gMCkKLSAg
ICAgICAgICAgIDogU291cmNlUHJvdmlkZXIodXJsLCBjYWNoZSkKKyAgICAgICAgU2NyaXB0U291
cmNlUHJvdmlkZXIoY29uc3QgSlNDOjpVU3RyaW5nJiB1cmwsIGNvbnN0IFRleHRQb3NpdGlvbiYg
c3RhcnRQb3NpdGlvbiwgSlNDOjpTb3VyY2VQcm92aWRlckNhY2hlKiBjYWNoZSA9IDApCisgICAg
ICAgICAgICA6IFNvdXJjZVByb3ZpZGVyKHVybCwgc3RhcnRQb3NpdGlvbiwgY2FjaGUpCiAgICAg
ICAgIHsKICAgICAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9TdHJpbmdTb3VyY2VQcm92aWRlci5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU3Ry
aW5nU291cmNlUHJvdmlkZXIuaAppbmRleCBiZGViOTg2MGQ2MmIwYjI0NjY3ODVmODc2YTQxNjRh
NzMyNzczNzdiLi40YzBhN2M0MmIxYzU4MTEyOTkxMmEzN2IwN2Y4NTNmYTc4ZWZmYmUzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TdHJpbmdTb3VyY2VQcm92aWRlci5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1N0cmluZ1NvdXJjZVByb3ZpZGVyLmgK
QEAgLTM3LDEyICszNywxMSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICBjbGFzcyBTdHJp
bmdTb3VyY2VQcm92aWRlciA6IHB1YmxpYyBTY3JpcHRTb3VyY2VQcm92aWRlciB7CiAgICAgcHVi
bGljOgotICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxTdHJpbmdTb3VyY2VQcm92aWRlcj4gY3Jl
YXRlKGNvbnN0IFN0cmluZyYgc291cmNlLCBjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgVGV4dFBv
c2l0aW9uJiBzdGFydFBvc2l0aW9uID0gVGV4dFBvc2l0aW9uOjptaW5pbXVtUG9zaXRpb24oKSkK
KyAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8U3RyaW5nU291cmNlUHJvdmlkZXI+IGNyZWF0ZShj
b25zdCBTdHJpbmcmIHNvdXJjZSwgY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IFRleHRQb3NpdGlv
biYgc3RhcnRQb3NpdGlvbikKICAgICAgICAgewogICAgICAgICAgICAgcmV0dXJuIGFkb3B0UmVm
KG5ldyBTdHJpbmdTb3VyY2VQcm92aWRlcihzb3VyY2UsIHVybCwgc3RhcnRQb3NpdGlvbikpOwog
ICAgICAgICB9CiAKLSAgICAgICAgdmlydHVhbCBUZXh0UG9zaXRpb24gc3RhcnRQb3NpdGlvbigp
IGNvbnN0IHsgcmV0dXJuIG1fc3RhcnRQb3NpdGlvbjsgfQogICAgICAgICBKU0M6OlVTdHJpbmcg
Z2V0UmFuZ2UoaW50IHN0YXJ0LCBpbnQgZW5kKSBjb25zdCB7IHJldHVybiBKU0M6OlVTdHJpbmco
bV9zb3VyY2UuY2hhcmFjdGVycygpICsgc3RhcnQsIGVuZCAtIHN0YXJ0KTsgfQogICAgICAgICBj
b25zdCBVQ2hhciogZGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fc291cmNlLmNoYXJhY3RlcnMoKTsg
fQogICAgICAgICBpbnQgbGVuZ3RoKCkgY29uc3QgeyByZXR1cm4gbV9zb3VyY2UubGVuZ3RoKCk7
IH0KQEAgLTUwLDE5ICs0OSwxNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICBwcml2YXRl
OgogICAgICAgICBTdHJpbmdTb3VyY2VQcm92aWRlcihjb25zdCBTdHJpbmcmIHNvdXJjZSwgY29u
c3QgU3RyaW5nJiB1cmwsIGNvbnN0IFRleHRQb3NpdGlvbiYgc3RhcnRQb3NpdGlvbikKLSAgICAg
ICAgICAgIDogU2NyaXB0U291cmNlUHJvdmlkZXIoc3RyaW5nVG9VU3RyaW5nKHVybCkpCi0gICAg
ICAgICAgICAsIG1fc3RhcnRQb3NpdGlvbihzdGFydFBvc2l0aW9uKQorICAgICAgICAgICAgOiBT
Y3JpcHRTb3VyY2VQcm92aWRlcihzdHJpbmdUb1VTdHJpbmcodXJsKSwgc3RhcnRQb3NpdGlvbikK
ICAgICAgICAgICAgICwgbV9zb3VyY2Uoc291cmNlKQogICAgICAgICB7CiAgICAgICAgIH0KICAg
ICAgICAgCi0gICAgICAgIFRleHRQb3NpdGlvbiBtX3N0YXJ0UG9zaXRpb247CiAgICAgICAgIFN0
cmluZyBtX3NvdXJjZTsKICAgICB9OwogCi0gICAgaW5saW5lIEpTQzo6U291cmNlQ29kZSBtYWtl
U291cmNlKGNvbnN0IFN0cmluZyYgc291cmNlLCBjb25zdCBTdHJpbmcmIHVybCA9IFN0cmluZygp
LCBpbnQgZmlyc3RMaW5lID0gMSkKKyAgICBpbmxpbmUgSlNDOjpTb3VyY2VDb2RlIG1ha2VTb3Vy
Y2UoY29uc3QgU3RyaW5nJiBzb3VyY2UsIGNvbnN0IFN0cmluZyYgdXJsID0gU3RyaW5nKCksIGNv
bnN0IFRleHRQb3NpdGlvbiYgc3RhcnRQb3NpdGlvbiA9IFRleHRQb3NpdGlvbjo6bWluaW11bVBv
c2l0aW9uKCkpCiAgICAgewotICAgICAgICByZXR1cm4gSlNDOjpTb3VyY2VDb2RlKFN0cmluZ1Nv
dXJjZVByb3ZpZGVyOjpjcmVhdGUoc291cmNlLCB1cmwpLCBmaXJzdExpbmUpOworICAgICAgICBy
ZXR1cm4gSlNDOjpTb3VyY2VDb2RlKFN0cmluZ1NvdXJjZVByb3ZpZGVyOjpjcmVhdGUoc291cmNl
LCB1cmwsIHN0YXJ0UG9zaXRpb24pLCBzdGFydFBvc2l0aW9uLm1fbGluZS5vbmVCYXNlZEludCgp
KTsKICAgICB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCBjYjgzMTE4ODBjNzQx
MzEwYWJiYTY4ZmU4OGVhYzU5MDVjYjdmMjg1Li5kMTBlZWQ3NGQyN2I5Njg0MjQzMDdkZGI4YjFj
ZDIxYzQwMGQ0YzAzIDEwMDc1NQotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMTEtMTEtMDIgIFBhdmVsIEZl
bGRtYW4gIDxwZmVsZG1hbkBnb29nbGUuY29tPgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IHBy
ZXNlcnZlIHNjcmlwdCBsb2NhdGlvbiBmb3IgaW5saW5lIGhhbmRsZXJzLgorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzEzNjcKKworICAgICAgICBMaW5r
aWZpZXIgdGVzdCByZWltcGxlbWVudGVkIGZvciBzaW1wbGlzaXR5LgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogaW5zcGVjdG9yL2RlYnVnZ2VyL2Rl
YnVnZ2VyLXNjcmlwdHMtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGluc3BlY3Rvci9kZWJ1Z2dl
ci9kZWJ1Z2dlci1zY3JpcHRzLmh0bWw6CisgICAgICAgICogaW5zcGVjdG9yL2RlYnVnZ2VyL2xp
bmtpZmllci1leHBlY3RlZC50eHQ6CisgICAgICAgICogaW5zcGVjdG9yL2RlYnVnZ2VyL2xpbmtp
Zmllci5odG1sOgorICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL2luc3BlY3Rvci9kZWJ1Z2dl
ci9kZWJ1Z2dlci1zY3JpcHRzLWV4cGVjdGVkLnR4dDogQ29waWVkIGZyb20gTGF5b3V0VGVzdHMv
aW5zcGVjdG9yL2RlYnVnZ2VyL2RlYnVnZ2VyLXNjcmlwdHMtZXhwZWN0ZWQudHh0LgorCiAyMDEx
LTExLTAyICBQaGlsaXBwZSBOb3JtYW5kICA8cG5vcm1hbmRAaWdhbGlhLmNvbT4KIAogICAgICAg
ICBVbnJldmlld2VkLCBHVEsgYmFzZWxpbmVzIGZvciBuZXcgdGVzdHMuCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvZGVidWdnZXItc2NyaXB0cy1leHBlY3RlZC50
eHQgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvZGVidWdnZXItc2NyaXB0cy1leHBl
Y3RlZC50eHQKaW5kZXggOWJjODYwNmFiZjQyM2FiYzUwM2MyMzg4NzMzMmRlN2I2NDVhM2E3NC4u
MDc0N2EwYTk2NjU1NDU3MzU4NGNiYmI3MmJmZTBlZTMzYzc3M2EwMCAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyL2RlYnVnZ2VyLXNjcmlwdHMtZXhwZWN0ZWQudHh0
CisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9kZWJ1Z2dlci1zY3JpcHRzLWV4
cGVjdGVkLnR4dApAQCAtNiwxNSArNiwxOCBAQCBzY3JpcHQgMToKICAgICBlbmQ6IDM3OjIKIHNj
cmlwdCAyOgogICAgIHN0YXJ0OiAzODoyMQotICAgIGVuZDogNDM6MjQKKyAgICBlbmQ6IDQxOjIK
IHNjcmlwdCAzOgotICAgIHN0YXJ0OiA0NToxMQotICAgIGVuZDogNDU6MzIKKyAgICBzdGFydDog
NDM6MTEKKyAgICBlbmQ6IDQzOjMyCiBzY3JpcHQgNDoKLSAgICBzdGFydDogNDY6MTEKLSAgICBl
bmQ6IDQ2OjI4CisgICAgc3RhcnQ6IDQ0OjExCisgICAgZW5kOiA0NDoyOAogc2NyaXB0IDU6Ci0g
ICAgc3RhcnQ6IDQ4OjExCi0gICAgZW5kOiA0OToyMAorICAgIHN0YXJ0OiA0NjoxMQorICAgIGVu
ZDogNDc6MjAKK3NjcmlwdCA2OgorICAgIHN0YXJ0OiA1MTo1NgorICAgIGVuZDogNTI6MgogRGVi
dWdnZXIgd2FzIGRpc2FibGVkLgogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3Iv
ZGVidWdnZXIvZGVidWdnZXItc2NyaXB0cy5odG1sIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2Rl
YnVnZ2VyL2RlYnVnZ2VyLXNjcmlwdHMuaHRtbAppbmRleCAxZDc1NDJlOGFkYTM5YzNmNzkyYzlj
YTM3YmYyYjJmM2VhNDNiNWI0Li4xZDJjMDkwYWE1NTlhMGU4YjU1MDI0NjBiZTMzNTg2ZGE3MjBl
YWI3IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvZGVidWdnZXIt
c2NyaXB0cy5odG1sCisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9kZWJ1Z2dl
ci1zY3JpcHRzLmh0bWwKQEAgLTQsNyArNCw3IEBACiA8c2NyaXB0IHNyYz0iLi4vLi4vaHR0cC90
ZXN0cy9pbnNwZWN0b3IvZGVidWdnZXItdGVzdC5qcyI+PC9zY3JpcHQ+CiAKIDxzY3JpcHQ+Ci12
YXIgdGVzdCA9IGZ1bmN0aW9uKCkKK2Z1bmN0aW9uIHRlc3QoKQogewogICAgIHZhciBzY3JpcHRz
ID0gW107CiAgICAgSW5zcGVjdG9yVGVzdC5zdGFydERlYnVnZ2VyVGVzdChzdGVwMSk7CkBAIC0y
MSw3ICsyMSw3IEBAIHZhciB0ZXN0ID0gZnVuY3Rpb24oKQogICAgICAgICBpZiAoc2NyaXB0LnNv
dXJjZVVSTCAhPT0gV2ViSW5zcGVjdG9yLm1haW5SZXNvdXJjZS51cmwpCiAgICAgICAgICAgICBy
ZXR1cm47CiAgICAgICAgIHNjcmlwdHMucHVzaChzY3JpcHQpOwotICAgICAgICBpZiAoc2NyaXB0
cy5sZW5ndGggPT09IDUpCisgICAgICAgIGlmIChzY3JpcHRzLmxlbmd0aCA9PT0gNikKICAgICAg
ICAgICAgIHN0ZXAzKCk7CiAgICAgfQogCkBAIC00MCw5ICs0MCw3IEBAIHZhciB0ZXN0ID0gZnVu
Y3Rpb24oKQogZnVuY3Rpb24gZjEoKQogewogfQotCi13aW5kb3cub25sb2FkID0gcnVuVGVzdDs8
L3NjcmlwdD4KLQorPC9zY3JpcHQ+CiAgICA8c2NyaXB0PiBmdW5jdGlvbiBmMigpIHt9ICAgIDwv
c2NyaXB0PgogICAgPHNjcmlwdD5mdW5jdGlvbiBmMygpIHt9CiA8L3NjcmlwdD4KQEAgLTUxLDEw
ICs0OSwxMSBAQCB3aW5kb3cub25sb2FkID0gcnVuVGVzdDs8L3NjcmlwdD4KIDwvc2NyaXB0Pgog
CiA8L2hlYWQ+Ci0KKzxib2R5IG9ubG9hZD0id2luZG93LmR1bW15ID0gZnVuY3Rpb24oKSB7IH07
IHJ1blRlc3QoKSI+CiA8cD4KIFRlc3RzIHRoYXQgdmFsaWQgcGFyc2VkIHNjcmlwdCBub3RpZmlj
YXRpb25zIGFyZSByZWNlaXZlZCBieSBmcm9udC1lbmQuCiA8YSBocmVmPSJodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTI3MjEiPkJ1ZyA1MjcyMTwvYT4KIDwvcD4KKzwv
Ym9keT4KIAogPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVn
Z2VyL2xpbmtpZmllci1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdn
ZXIvbGlua2lmaWVyLWV4cGVjdGVkLnR4dAppbmRleCA3NDhiOTdlODU2NTE4NjM5YWQ2MDVmODI1
Y2NhZjY0OWNhNTUxY2EzLi4xNjk1NzlhMjkyNmQ2YjAwOTIyNzY5NDVlMzFjMzYxMDc4MzJkNzk5
IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvbGlua2lmaWVyLWV4
cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvbGlua2lmaWVy
LWV4cGVjdGVkLnR4dApAQCAtMSwyOCArMSwxMCBAQAogVGVzdHMgdGhhdCBMaW5raWZpZXIgd29y
a3MgY29ycmVjdGx5LgogCi1Ud28gYWRkRXZlbnRMaXN0ZW5lciBjYWxscyBleHBlY3RlZC4gVGhl
IGZpcnN0IGZvciAnZmFrZVVybC0xJyB0aGUgc2Vjb25kIGZvciAnZmFrZVVybC0yJy4KLVR3byBy
ZW1vdmVFdmVudExpc3RlbmVyIGNhbGxzIGV4cGVjdGVkLiBUaGUgZmlyc3QgZm9yICdmYWtlVXJs
LTEnIHRoZSBzZWNvbmQgZm9yICdmYWtlVXJsLTInLgogRGVidWdnZXIgd2FzIGVuYWJsZWQuCi0t
LS0gbGlua2lmeSBmYWtlVVJMLTEgZmlyc3QgdGltZSAtLS0KLUR1bW15UHJlc2VudGF0aW9uTW9k
ZWwuX3Jhd1NvdXJjZUNvZGVGb3JTY3JpcHRXaXRoVVJMIHdhcyBjYWxsZWQgd2l0aCBhcmd1bWVu
dHMgPSBbJ2Zha2VVcmwtMSddCi1EdW1teVJhd1NvdXJjZUNvZGUuYWRkRXZlbnRMaXN0ZW5lciB3
YXMgY2FsbGVkIGZvciBzb3VyY2Ugd2l0aCBVUkwgPSAnZmFrZVVybC0xJyB3aXRoIGFyZ3VtZW50
cyA9IFsnc291cmNlLW1hcHBpbmctdXBkYXRlZCcsIGZ1bmN0aW9uLCBvYmplY3RdCi0KLS0tLSBs
aW5raWZ5IGZha2VVUkwtMiBmaXJzdCB0aW1lIC0tLQotRHVtbXlQcmVzZW50YXRpb25Nb2RlbC5f
cmF3U291cmNlQ29kZUZvclNjcmlwdFdpdGhVUkwgd2FzIGNhbGxlZCB3aXRoIGFyZ3VtZW50cyA9
IFsnZmFrZVVybC0yJ10KLUR1bW15UmF3U291cmNlQ29kZS5hZGRFdmVudExpc3RlbmVyIHdhcyBj
YWxsZWQgZm9yIHNvdXJjZSB3aXRoIFVSTCA9ICdmYWtlVXJsLTInIHdpdGggYXJndW1lbnRzID0g
Wydzb3VyY2UtbWFwcGluZy11cGRhdGVkJywgZnVuY3Rpb24sIG9iamVjdF0KLQotLS0tIGxpbmtp
ZnkgZmFrZVVSTC0xIHNlY29uZCB0aW1lIC0tLQotRHVtbXlQcmVzZW50YXRpb25Nb2RlbC5fcmF3
U291cmNlQ29kZUZvclNjcmlwdFdpdGhVUkwgd2FzIGNhbGxlZCB3aXRoIGFyZ3VtZW50cyA9IFsn
ZmFrZVVybC0xJ10KLQotLS0tIGxpbmtpZnkgZmFrZVVSTC0yIHNlY29uZCB0aW1lIC0tLQotRHVt
bXlQcmVzZW50YXRpb25Nb2RlbC5fcmF3U291cmNlQ29kZUZvclNjcmlwdFdpdGhVUkwgd2FzIGNh
bGxlZCB3aXRoIGFyZ3VtZW50cyA9IFsnZmFrZVVybC0yJ10KLQotLS0tIHJlc2V0IC0tLQotRHVt
bXlSYXdTb3VyY2VDb2RlLnJlbW92ZUV2ZW50TGlzdGVuZXIgd2FzIGNhbGxlZCBmb3Igc291cmNl
IHdpdGggaWQgPSAnZmFrZVVybC0xJyB3aXRoIGFyZ3VtZW50cyA9IFsnc291cmNlLW1hcHBpbmct
dXBkYXRlZCcsIGZ1bmN0aW9uLCBvYmplY3RdCi1EdW1teVJhd1NvdXJjZUNvZGUucmVtb3ZlRXZl
bnRMaXN0ZW5lciB3YXMgY2FsbGVkIGZvciBzb3VyY2Ugd2l0aCBpZCA9ICdmYWtlVXJsLTInIHdp
dGggYXJndW1lbnRzID0gWydzb3VyY2UtbWFwcGluZy11cGRhdGVkJywgZnVuY3Rpb24sIG9iamVj
dF0KLQotLS0tIGxvY2F0aW9uIHVwZGF0ZSAtLS0KLW9yaWdpbmFsIGxvY2F0aW9uOiBsaW5raWZp
ZXIuaHRtbDo5MwotcHJldHR5IHByaW50ZWQgbG9jYXRpb246IGxpbmtpZmllci5odG1sOjk4Ci1y
ZXZlcnRlZCBsb2NhdGlvbjogbGlua2lmaWVyLmh0bWw6OTMKK2xpc3RlbmVycyBhZGRlZCBvbiBy
YXcgc291cmNlIGNvZGU6IDEKK29yaWdpbmFsIGxvY2F0aW9uOiBsaW5raWZpZXIuaHRtbDoyMQor
cHJldHR5IHByaW50ZWQgbG9jYXRpb246IGxpbmtpZmllci5odG1sOjI0CityZXZlcnRlZCBsb2Nh
dGlvbjogbGlua2lmaWVyLmh0bWw6MjEKK2xpc3RlbmVycyByZW1vdmVkIGZyb20gcmF3IHNvdXJj
ZSBjb2RlOiAxCitEZWJ1Z2dlciB3YXMgZGlzYWJsZWQuCiAKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9saW5raWZpZXIuaHRtbCBiL0xheW91dFRlc3RzL2luc3Bl
Y3Rvci9kZWJ1Z2dlci9saW5raWZpZXIuaHRtbAppbmRleCBmYjM1NDFjN2FmMzIzYWY1MGFhMWMz
MTc3MWNlNGY4NDQ5OWViZDk3Li5iZjA0ZTM0MDIzNzYzY2ZhYjFlYzk2MDM1YjcxYmE1ZGFjYTRk
MzVlIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvbGlua2lmaWVy
Lmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyL2xpbmtpZmllci5odG1s
CkBAIC02LDEwMSArNiw3NiBAQAogCiBmdW5jdGlvbiB0ZXN0KCkKIHsKLSAgICBJbnNwZWN0b3JU
ZXN0LnN0YXJ0RGVidWdnZXJUZXN0KGRlYnVnZ2VyVGVzdCk7CisgICAgSW5zcGVjdG9yVGVzdC5z
dGFydERlYnVnZ2VyVGVzdCh3YWl0Rm9yU2NyaXB0cyk7CiAKLSAgICBmdW5jdGlvbiBkZWJ1Z2dl
clRlc3QoKQotICAgIHsKLSAgICAgICAgaWYgKCFXZWJJbnNwZWN0b3IuZGVidWdnZXJQcmVzZW50
YXRpb25Nb2RlbC5fcmF3U291cmNlQ29kZVtXZWJJbnNwZWN0b3IubWFpblJlc291cmNlLl9kb2N1
bWVudFVSTF0pIHsKLSAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYWRkU25pZmZlcihXZWJJbnNw
ZWN0b3IuZGVidWdnZXJQcmVzZW50YXRpb25Nb2RlbCwgIl9hZGRTY3JpcHQiLCBkZWJ1Z2dlclRl
c3QpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9CisgICAgdmFyIGxpbmtpZmllcjsK
KyAgICB2YXIgbGluazsKKyAgICB2YXIgcmF3U291cmNlQ29kZTsKIAotICAgICAgICB2YXIgZmFr
ZVVSTDEgPSAiZmFrZVVybC0xIjsKLSAgICAgICAgdmFyIGZha2VVUkwyID0gImZha2VVcmwtMiI7
Ci0KLSAgICAgICAgRHVtbXlSYXdTb3VyY2VDb2RlID0gZnVuY3Rpb24odXJsKQorICAgIGZ1bmN0
aW9uIHdhaXRGb3JTY3JpcHRzKCkKKyAgICB7CisgICAgICAgIHZhciBjb250aW51ZWQgPSBmYWxz
ZTsKKyAgICAgICAgZnVuY3Rpb24gc2NyaXB0QWRkZWQoZXZlbnQpCiAgICAgICAgIHsKLSAgICAg
ICAgICAgIHRoaXMudXJsID0gdXJsOwotICAgICAgICAgICAgdGhpcy5pZCA9IHVybDsKLSAgICAg
ICAgfQotCi0gICAgICAgIER1bW15UmF3U291cmNlQ29kZS5wcm90b3R5cGUgPSB7Ci0gICAgICAg
ICAgICBhZGRFdmVudExpc3RlbmVyOiBmdW5jdGlvbihldmVudE5hbWUsIGNhbGxiYWNrLCBvYmpl
Y3QpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1
bHQoIkR1bW15UmF3U291cmNlQ29kZS5hZGRFdmVudExpc3RlbmVyIHdhcyBjYWxsZWQgZm9yIHNv
dXJjZSB3aXRoIFVSTCA9ICciICsgdGhpcy51cmwgKyAiJyB3aXRoIGFyZ3VtZW50cyA9IFsnIiAr
IGV2ZW50TmFtZSArICInLCAiICsgKHR5cGVvZiBjYWxsYmFjaykgKyAiLCAiICsgKHR5cGVvZiBv
YmplY3QpICsgIl0iKTsKLSAgICAgICAgICAgIH0sCisgICAgICAgICAgICBpZiAoY29udGludWVk
KQorICAgICAgICAgICAgICAgIHJldHVybjsKIAotICAgICAgICAgICAgcmVtb3ZlRXZlbnRMaXN0
ZW5lcjogZnVuY3Rpb24oZXZlbnROYW1lLCBjYWxsYmFjaywgb2JqZWN0KQotICAgICAgICAgICAg
ewotICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KCJEdW1teVJhd1NvdXJj
ZUNvZGUucmVtb3ZlRXZlbnRMaXN0ZW5lciB3YXMgY2FsbGVkIGZvciBzb3VyY2Ugd2l0aCBpZCA9
ICciICsgdGhpcy51cmwgKyAiJyB3aXRoIGFyZ3VtZW50cyA9IFsnIiArIGV2ZW50TmFtZSArICIn
LCAiICsgKHR5cGVvZiBjYWxsYmFjaykgKyAiLCAiICsgKHR5cGVvZiBvYmplY3QpICsgIl0iKTsK
KyAgICAgICAgICAgIHZhciBzY3JpcHQgPSBldmVudC5kYXRhOworICAgICAgICAgICAgaWYgKHNj
cmlwdC5zb3VyY2VVUkwgPT09IFdlYkluc3BlY3Rvci5tYWluUmVzb3VyY2UuX2RvY3VtZW50VVJM
KSB7CisgICAgICAgICAgICAgICAgY29udGludWVkID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICBz
ZXRUaW1lb3V0KGRlYnVnZ2VyVGVzdCwgMCk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KIAot
ICAgICAgICBEdW1teVByZXNlbnRhdGlvbk1vZGVsID0gZnVuY3Rpb24oKQotICAgICAgICB7Ci0g
ICAgICAgICAgICB0aGlzLl9yYXdTb3VyY2VDb2RlID0gW107Ci0gICAgICAgIH0KLQotICAgICAg
ICBEdW1teVByZXNlbnRhdGlvbk1vZGVsLnByb3RvdHlwZSA9IHsKLSAgICAgICAgICAgIF9yYXdT
b3VyY2VDb2RlRm9yU2NyaXB0V2l0aFVSTDogZnVuY3Rpb24oc291cmNlVVJMKQotICAgICAgICAg
ICAgewotICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KCJEdW1teVByZXNl
bnRhdGlvbk1vZGVsLl9yYXdTb3VyY2VDb2RlRm9yU2NyaXB0V2l0aFVSTCB3YXMgY2FsbGVkIHdp
dGggYXJndW1lbnRzID0gWyciICsgc291cmNlVVJMICsgIiddIik7Ci0gICAgICAgICAgICAgICAg
dmFyIHJhd1NvdXJjZUNvZGUgPSB0aGlzLl9yYXdTb3VyY2VDb2RlW3NvdXJjZVVSTF07Ci0gICAg
ICAgICAgICAgICAgaWYgKHJhd1NvdXJjZUNvZGUpCi0gICAgICAgICAgICAgICAgICAgIHJldHVy
biByYXdTb3VyY2VDb2RlOwotICAgICAgICAgICAgICAgIHJhd1NvdXJjZUNvZGUgPSBuZXcgRHVt
bXlSYXdTb3VyY2VDb2RlKHNvdXJjZVVSTCk7Ci0gICAgICAgICAgICAgICAgdGhpcy5fcmF3U291
cmNlQ29kZVtzb3VyY2VVUkxdID0gcmF3U291cmNlQ29kZTsKLSAgICAgICAgICAgICAgICByZXR1
cm4gcmF3U291cmNlQ29kZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQorICAgICAgICBXZWJJ
bnNwZWN0b3IuZGVidWdnZXJNb2RlbC5xdWVyeVNjcmlwdHMoZnVuY3Rpb24oc2NyaXB0KSB7IHNj
cmlwdEFkZGVkKHsgZGF0YTogc2NyaXB0IH0pIH0pOworICAgICAgICBXZWJJbnNwZWN0b3IuZGVi
dWdnZXJNb2RlbC5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5EZWJ1Z2dlck1vZGVsLkV2
ZW50cy5QYXJzZWRTY3JpcHRTb3VyY2UsIHNjcmlwdEFkZGVkKTsKKyAgICB9CiAKLSAgICAgICAg
dmFyIGR1bW15UHJlc2VudGF0aW9uTW9kZWwgPSBuZXcgRHVtbXlQcmVzZW50YXRpb25Nb2RlbCgp
OworICAgIGZ1bmN0aW9uIGRlYnVnZ2VyVGVzdCgpCisgICAgeworICAgICAgICBsaW5raWZpZXIg
PSBXZWJJbnNwZWN0b3IuZGVidWdnZXJQcmVzZW50YXRpb25Nb2RlbC5jcmVhdGVMaW5raWZpZXIo
KTsKKyAgICAgICAgcmF3U291cmNlQ29kZSA9IFdlYkluc3BlY3Rvci5kZWJ1Z2dlclByZXNlbnRh
dGlvbk1vZGVsLl9yYXdTb3VyY2VDb2RlRm9yU2NyaXB0V2l0aFVSTChXZWJJbnNwZWN0b3IubWFp
blJlc291cmNlLl9kb2N1bWVudFVSTCk7CiAKLSAgICAgICAgdmFyIGxpbmtpZmllciA9IG5ldyBX
ZWJJbnNwZWN0b3IuRGVidWdnZXJQcmVzZW50YXRpb25Nb2RlbC5MaW5raWZpZXIoZHVtbXlQcmVz
ZW50YXRpb25Nb2RlbCk7CisgICAgICAgIHZhciBjb3VudDEgPSBsaXN0ZW5lcnNDb3VudChyYXdT
b3VyY2VDb2RlKTsKKyAgICAgICAgbGluayA9IGxpbmtpZmllci5saW5raWZ5TG9jYXRpb24oV2Vi
SW5zcGVjdG9yLm1haW5SZXNvdXJjZS5fZG9jdW1lbnRVUkwsIDIwLCAwLCAiZHVtbXktY2xhc3Mi
KTsKKyAgICAgICAgdmFyIGNvdW50MiA9IGxpc3RlbmVyc0NvdW50KHJhd1NvdXJjZUNvZGUpOwog
Ci0gICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KCItLS0gbGlua2lmeSBmYWtlVVJMLTEg
Zmlyc3QgdGltZSAtLS0iKTsKLSAgICAgICAgbGlua2lmaWVyLmxpbmtpZnlMb2NhdGlvbihmYWtl
VVJMMSwgNDIsIDI2LCAiZmFrZS1jbGFzcy1uYW1lIik7Ci0gICAgICAgIEluc3BlY3RvclRlc3Qu
YWRkUmVzdWx0KCIiKTsKKyAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoImxpc3RlbmVy
cyBhZGRlZCBvbiByYXcgc291cmNlIGNvZGU6ICIgKyAoY291bnQyIC0gY291bnQxKSk7CisgICAg
ICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KCJvcmlnaW5hbCBsb2NhdGlvbjogIiArIGxpbmsu
dGV4dENvbnRlbnQpOwogCi0gICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KCItLS0gbGlu
a2lmeSBmYWtlVVJMLTIgZmlyc3QgdGltZSAtLS0iKTsKLSAgICAgICAgbGlua2lmaWVyLmxpbmtp
ZnlMb2NhdGlvbihmYWtlVVJMMiwgNDIsIDI2LCAiZmFrZS1jbGFzcy1uYW1lIik7Ci0gICAgICAg
IEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KCIiKTsKKyAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRT
bmlmZmVyKGxpbmtpZmllciwgIl91cGRhdGVBbmNob3IiLCBsaW5rVXBkYXRlZCk7CisgICAgICAg
IFdlYkluc3BlY3Rvci5kZWJ1Z2dlclByZXNlbnRhdGlvbk1vZGVsLnNldEZvcm1hdFNvdXJjZSh0
cnVlKTsKKyAgICB9CiAKLSAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoIi0tLSBsaW5r
aWZ5IGZha2VVUkwtMSBzZWNvbmQgdGltZSAtLS0iKTsKLSAgICAgICAgbGlua2lmaWVyLmxpbmtp
ZnlMb2NhdGlvbihmYWtlVVJMMSwgOTcsIDIzLCAiZmFrZS1jbGFzcy1uYW1lIik7Ci0gICAgICAg
IEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KCIiKTsKKyAgICBmdW5jdGlvbiBsaW5rVXBkYXRlZCgp
CisgICAgeworICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgicHJldHR5IHByaW50ZWQg
bG9jYXRpb246ICIgKyBsaW5rLnRleHRDb250ZW50KTsKKyAgICAgICAgSW5zcGVjdG9yVGVzdC5h
ZGRTbmlmZmVyKGxpbmtpZmllciwgIl91cGRhdGVBbmNob3IiLCBsaW5rUmV2ZXJ0ZWQpOworICAg
ICAgICBXZWJJbnNwZWN0b3IuZGVidWdnZXJQcmVzZW50YXRpb25Nb2RlbC5zZXRGb3JtYXRTb3Vy
Y2UoZmFsc2UpOworICAgIH0KIAotICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgiLS0t
IGxpbmtpZnkgZmFrZVVSTC0yIHNlY29uZCB0aW1lIC0tLSIpOwotICAgICAgICBsaW5raWZpZXIu
bGlua2lmeUxvY2F0aW9uKGZha2VVUkwyLCA0LCAyLCAiZmFrZS1jbGFzcy1uYW1lIik7Ci0gICAg
ICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KCIiKTsKKyAgICBmdW5jdGlvbiBsaW5rUmV2ZXJ0
ZWQoKQorICAgIHsKKyAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoInJldmVydGVkIGxv
Y2F0aW9uOiAiICsgbGluay50ZXh0Q29udGVudCk7CiAKLSAgICAgICAgSW5zcGVjdG9yVGVzdC5h
ZGRSZXN1bHQoIi0tLSByZXNldCAtLS0iKTsKKyAgICAgICAgdmFyIGNvdW50MSA9IGxpc3RlbmVy
c0NvdW50KHJhd1NvdXJjZUNvZGUpOwogICAgICAgICBsaW5raWZpZXIucmVzZXQoKTsKLSAgICAg
ICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoIiIpOworICAgICAgICB2YXIgY291bnQyID0gbGlz
dGVuZXJzQ291bnQocmF3U291cmNlQ29kZSk7CiAKLSAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRS
ZXN1bHQoIi0tLSBsb2NhdGlvbiB1cGRhdGUgLS0tIik7Ci0KLSAgICAgICAgZnVuY3Rpb24gZHVt
bXlGdW5jdGlvblRvQmVQcmV0dHlQcmludGVkKCkgeyBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgi
Iik7IGNvbnNvbGUuZXJyb3IoIiIpOyB9Ci0KLSAgICAgICAgbGlua2lmaWVyID0gV2ViSW5zcGVj
dG9yLmRlYnVnZ2VyUHJlc2VudGF0aW9uTW9kZWwuY3JlYXRlTGlua2lmaWVyKCk7Ci0gICAgICAg
IHZhciBsaW5rID0gbGlua2lmaWVyLmxpbmtpZnlMb2NhdGlvbihXZWJJbnNwZWN0b3IubWFpblJl
c291cmNlLl9kb2N1bWVudFVSTCwgOTIsIDAsICJkdW1teS1jbGFzcyIpOwotICAgICAgICBJbnNw
ZWN0b3JUZXN0LmFkZFJlc3VsdCgib3JpZ2luYWwgbG9jYXRpb246ICIgKyBsaW5rLnRleHRDb250
ZW50KTsKKyAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoImxpc3RlbmVycyByZW1vdmVk
IGZyb20gcmF3IHNvdXJjZSBjb2RlOiAiICsgKGNvdW50MSAtIGNvdW50MikpOwogCi0gICAgICAg
IEluc3BlY3RvclRlc3QuYWRkU25pZmZlcihsaW5raWZpZXIsICJfdXBkYXRlQW5jaG9yIiwgbGlu
a1VwZGF0ZWQpOwotICAgICAgICBXZWJJbnNwZWN0b3IuZGVidWdnZXJQcmVzZW50YXRpb25Nb2Rl
bC5zZXRGb3JtYXRTb3VyY2UodHJ1ZSk7Ci0KLSAgICAgICAgZnVuY3Rpb24gbGlua1VwZGF0ZWQo
KQotICAgICAgICB7Ci0gICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgicHJldHR5
IHByaW50ZWQgbG9jYXRpb246ICIgKyBsaW5rLnRleHRDb250ZW50KTsKLSAgICAgICAgICAgIElu
c3BlY3RvclRlc3QuYWRkU25pZmZlcihsaW5raWZpZXIsICJfdXBkYXRlQW5jaG9yIiwgbGlua1Jl
dmVydGVkKTsKLSAgICAgICAgICAgIFdlYkluc3BlY3Rvci5kZWJ1Z2dlclByZXNlbnRhdGlvbk1v
ZGVsLnNldEZvcm1hdFNvdXJjZShmYWxzZSk7Ci0gICAgICAgIH0KKyAgICAgICAgSW5zcGVjdG9y
VGVzdC5jb21wbGV0ZURlYnVnZ2VyVGVzdCgpOworICAgIH0KIAotICAgICAgICBmdW5jdGlvbiBs
aW5rUmV2ZXJ0ZWQoKQotICAgICAgICB7Ci0gICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJl
c3VsdCgicmV2ZXJ0ZWQgbG9jYXRpb246ICIgKyBsaW5rLnRleHRDb250ZW50KTsKLSAgICAgICAg
ICAgIEluc3BlY3RvclRlc3QuY29tcGxldGVUZXN0KCk7CisgICAgZnVuY3Rpb24gbGlzdGVuZXJz
Q291bnQob2JqZWN0KQorICAgIHsKKyAgICAgICAgdmFyIGxpc3RlbmVycyA9IG9iamVjdC5fbGlz
dGVuZXJzOworICAgICAgICB2YXIgY291bnQgPSAwOworICAgICAgICBmb3IgKHZhciBldmVudFR5
cGVzIGluIGxpc3RlbmVycykgeworICAgICAgICAgICAgdmFyIGxpc3RlbmVyc0FycmF5ID0gbGlz
dGVuZXJzW2V2ZW50VHlwZXNdOworICAgICAgICAgICAgY291bnQgKz0gbGlzdGVuZXJzQXJyYXku
bGVuZ3RoOwogICAgICAgICB9CisgICAgICAgIHJldHVybiBjb3VudDsgCiAgICAgfQogfQogCkBA
IC0xMTEsOCArODYsNiBAQCBmdW5jdGlvbiB0ZXN0KCkKIDxwPgogVGVzdHMgdGhhdCBMaW5raWZp
ZXIgd29ya3MgY29ycmVjdGx5LgogPHA+Ci1Ud28gYWRkRXZlbnRMaXN0ZW5lciBjYWxscyBleHBl
Y3RlZC4gVGhlIGZpcnN0IGZvciAnZmFrZVVybC0xJyB0aGUgc2Vjb25kIGZvciAnZmFrZVVybC0y
Jy48YnI+Ci1Ud28gcmVtb3ZlRXZlbnRMaXN0ZW5lciBjYWxscyBleHBlY3RlZC4gVGhlIGZpcnN0
IGZvciAnZmFrZVVybC0xJyB0aGUgc2Vjb25kIGZvciAnZmFrZVVybC0yJy48YnI+CiAKIDwvYm9k
eT4KIDwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2lu
c3BlY3Rvci9kZWJ1Z2dlci9kZWJ1Z2dlci1zY3JpcHRzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRl
c3RzL3BsYXRmb3JtL2Nocm9taXVtL2luc3BlY3Rvci9kZWJ1Z2dlci9kZWJ1Z2dlci1zY3JpcHRz
LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xMTM1OTkyOTIyNzE0YmZkMDk5NTlmNTUyOTU1MGVh
YThkNmEyNDNmCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21p
dW0vaW5zcGVjdG9yL2RlYnVnZ2VyL2RlYnVnZ2VyLXNjcmlwdHMtZXhwZWN0ZWQudHh0CkBAIC0w
LDAgKzEsMjMgQEAKK1Rlc3RzIHRoYXQgdmFsaWQgcGFyc2VkIHNjcmlwdCBub3RpZmljYXRpb25z
IGFyZSByZWNlaXZlZCBieSBmcm9udC1lbmQuIEJ1ZyA1MjcyMQorCitEZWJ1Z2dlciB3YXMgZW5h
YmxlZC4KK3NjcmlwdCAxOgorICAgIHN0YXJ0OiA1OjgKKyAgICBlbmQ6IDM3OjIKK3NjcmlwdCAy
OgorICAgIHN0YXJ0OiAzODoyMQorICAgIGVuZDogNDE6Mgorc2NyaXB0IDM6CisgICAgc3RhcnQ6
IDQzOjExCisgICAgZW5kOiA0MzozMgorc2NyaXB0IDQ6CisgICAgc3RhcnQ6IDQ0OjExCisgICAg
ZW5kOiA0NDoyOAorc2NyaXB0IDU6CisgICAgc3RhcnQ6IDQ2OjExCisgICAgZW5kOiA0NzoyMAor
c2NyaXB0IDY6CisgICAgc3RhcnQ6IDUxOjU2CisgICAgZW5kOiA1MjoyNAorRGVidWdnZXIgd2Fz
IGRpc2FibGVkLgorCg==
</data>
<flag name="review"
          id="111657"
          type_id="1"
          status="+"
          setter="yurys"
    />
    <flag name="commit-queue"
          id="111758"
          type_id="3"
          status="-"
          setter="dbates"
    />
          </attachment>
      

    </bug>

</bugzilla>