<?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>82008</bug_id>
          
          <creation_ts>2012-03-22 20:21:31 -0700</creation_ts>
          <short_desc>DFG double voting may be overzealous in the case of variables that end up being used as integers</short_desc>
          <delta_ts>2012-03-24 17:46:45 -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>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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Filip Pizlo">fpizlo</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>ggaren</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>586041</commentid>
    <comment_count>0</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-03-22 20:21:31 -0700</bug_when>
    <thetext>Patch forthcoming.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>586047</commentid>
    <comment_count>1</comment_count>
      <attachid>133423</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-03-22 20:37:10 -0700</bug_when>
    <thetext>Created attachment 133423
work in progress

Still working on it but at least it compiles now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>586086</commentid>
    <comment_count>2</comment_count>
      <attachid>133431</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-03-22 22:25:40 -0700</bug_when>
    <thetext>Created attachment 133431
the patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>586715</commentid>
    <comment_count>3</comment_count>
      <attachid>133431</attachid>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2012-03-23 14:08:28 -0700</bug_when>
    <thetext>Comment on attachment 133431
the patch

View in context: https://bugs.webkit.org/attachment.cgi?id=133431&amp;action=review

r+ with the one fix.

&gt; Source/JavaScriptCore/dfg/DFGPredictionPropagationPhase.cpp:199
&gt; +            mergeDefaultFlags(node);

Need to or this into changed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>586843</commentid>
    <comment_count>4</comment_count>
      <attachid>133581</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-03-23 16:15:06 -0700</bug_when>
    <thetext>Created attachment 133581
the patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>586971</commentid>
    <comment_count>5</comment_count>
      <attachid>133611</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-03-23 19:12:48 -0700</bug_when>
    <thetext>Created attachment 133611
the patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>586993</commentid>
    <comment_count>6</comment_count>
      <attachid>133615</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-03-23 20:16:13 -0700</bug_when>
    <thetext>Created attachment 133615
the patch

Removed the EscapesAsInt portion of the patch because it was causing perf regressions, and the case where it was beneficial was sort of contrived to begin with.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>587184</commentid>
    <comment_count>7</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2012-03-24 15:21:35 -0700</bug_when>
    <thetext>&gt; and the case where it was beneficial was sort of contrived to begin with.

... Interesting. FWIW, kind of struck me that way, too.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>587186</commentid>
    <comment_count>8</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-03-24 15:29:03 -0700</bug_when>
    <thetext>(In reply to comment #7)
&gt; &gt; and the case where it was beneficial was sort of contrived to begin with.
&gt; 
&gt; ... Interesting. FWIW, kind of struck me that way, too.

Yeah Gavin had to convince me to trust the numbers on this one. ;-)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>587210</commentid>
    <comment_count>9</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-03-24 17:46:45 -0700</bug_when>
    <thetext>Landed in http://trac.webkit.org/changeset/112015</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>133423</attachid>
            <date>2012-03-22 20:37:10 -0700</date>
            <delta_ts>2012-03-22 22:25:40 -0700</delta_ts>
            <desc>work in progress</desc>
            <filename>fixdoublevote_patch_1.diff</filename>
            <type>text/plain</type>
            <size>33734</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTExODE5KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM4IEBA
CisyMDEyLTAzLTIyICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
REZHIGRvdWJsZSB2b3RpbmcgbWF5IGJlIG92ZXJ6ZWFsb3VzIGluIHRoZSBjYXNlIG9mIHZhcmlh
YmxlcyB0aGF0IGVuZCB1cAorICAgICAgICBiZWluZyB1c2VkIGFzIGludGVnZXJzCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04MjAwOAorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorICAgICAgICAKKyAgICAgICAgQ2xlYW5lZCB1
cCBub2RlIGZsYWdzIHByb3BhZ2F0aW9uLCBtYWtpbmcgdGhlIGludGVudCBtb3JlIGV4cGxpY2l0
IGluIG1vc3QKKyAgICAgICAgcGxhY2VzLiBBZGRlZCBtYWNoaW5lcnkgdG8gdHJhY2sgd2hlbiBh
IG5vZGUgaXMga25vd24gdG8gZXNjYXBlIGFzIGFuCisgICAgICAgIGludGVnZXIuIEluIGFsbCBz
dWNoIGNhc2VzLCB3ZSB0aGVuIGJhY2stcHJvcGFnYXRlIHRoZSBOb2RlRXNjYXBlc0FzSW50Cisg
ICAgICAgIHByb3BlcnR5LiBXZSBhbHNvIGJhY2stcHJvcGFnYXRlIE5vZGVVc2VkQXNJbnQgZm9y
IGNhc2VzIHdoZXJlIGEgbm9kZSB3YXMKKyAgICAgICAgdXNlZCBpbiBhIGNvbnRleHQgdGhhdCBp
cyBrbm93biB0byBzdHJvbmdseSBwcmVmZXIgaW50ZWdlcnMuCisKKyAgICAgICAgKiBkZmcvREZH
Qnl0ZUNvZGVQYXJzZXIuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpo
YW5kbGVDYWxsKToKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9j
ayk6CisgICAgICAgICogZGZnL0RGR05vZGVGbGFncy5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6
bm9kZUZsYWdzQXNTdHJpbmcpOgorICAgICAgICAqIGRmZy9ERkdOb2RlRmxhZ3MuaDoKKyAgICAg
ICAgKERGRyk6CisgICAgICAgICogZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNw
cDoKKyAgICAgICAgKEpTQzo6REZHOjpQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZTo6cnVuKToK
KyAgICAgICAgKEpTQzo6REZHOjpQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZTo6cHJvcGFnYXRl
KToKKyAgICAgICAgKFByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlKToKKyAgICAgICAgKEpTQzo6
REZHOjpQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZTo6bWVyZ2VEZWZhdWx0RmxhZ3MpOgorICAg
ICAgICAoSlNDOjpERkc6OlByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlOjpwcm9wYWdhdGVVbnRp
bEZpeHBvaW50KToKKyAgICAgICAgKEpTQzo6REZHOjpQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFz
ZTo6bm90aWNlRXNjYXBpbmdJbnRlZ2VyKToKKyAgICAgICAgKEpTQzo6REZHOjpQcmVkaWN0aW9u
UHJvcGFnYXRpb25QaGFzZTo6bm90aWNlRXNjYXBpbmdJbnRlZ2Vycyk6CisgICAgICAgIChKU0M6
OkRGRzo6UHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2U6OnZvdGUpOgorICAgICAgICAoSlNDOjpE
Rkc6OlByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlOjpkb1JvdW5kT2ZEb3VibGVWb3RpbmcpOgor
ICAgICAgICAoSlNDOjpERkc6OlByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlOjpmaXh1cE5vZGUp
OgorICAgICAgICAqIGRmZy9ERkdWYXJpYWJsZUFjY2Vzc0RhdGEuaDoKKyAgICAgICAgKEpTQzo6
REZHOjpWYXJpYWJsZUFjY2Vzc0RhdGE6OnNob3VsZFVzZURvdWJsZUZvcm1hdEFjY29yZGluZ1Rv
Vm90ZSk6CisKIDIwMTItMDMtMjIgIEplc3NpZSBCZXJsaW4gIDxqYmVybGluQGFwcGxlLmNvbT4K
IAogICAgICAgICBXaW5kb3dzIGJ1aWxkIGZpeCBhZnRlciByMTExNzc4LgpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAJKHJldmlzaW9u
IDExMTc5NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC05OTMsMTAgKzk5Myw2IEBAIHZvaWQgQnl0ZUNvZGVQYXJz
ZXI6OmhhbmRsZUNhbGwoSW50ZXJwcmUKICAgICBOb2RlSW5kZXggY2FsbFRhcmdldCA9IGdldChj
dXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kKTsKICAgICBlbnVtIHsgQ29uc3RhbnRGdW5j
dGlvbiwgTGlua2VkRnVuY3Rpb24sIFVua25vd25GdW5jdGlvbiB9IGNhbGxUeXBlOwogICAgICAg
ICAgICAgCi0jaWYgREZHX0VOQUJMRShERUJVR19WRVJCT1NFKQotICAgIGRhdGFMb2coIlNsb3cg
Y2FzZSBjb3VudCBmb3IgY2FsbCBhdCBAJXp1IGJjIyV1OiAldS8ldTsgZXhpdCBwcm9maWxlOiAl
ZC5cbiIsIG1fZ3JhcGguc2l6ZSgpLCBtX2N1cnJlbnRJbmRleCwgbV9pbmxpbmVTdGFja1RvcC0+
bV9wcm9maWxlZEJsb2NrLT5yYXJlQ2FzZVByb2ZpbGVGb3JCeXRlY29kZU9mZnNldChtX2N1cnJl
bnRJbmRleCktPm1fY291bnRlciwgbV9pbmxpbmVTdGFja1RvcC0+bV9wcm9maWxlZEJsb2NrLT5l
eGVjdXRpb25FbnRyeUNvdW50KCksIG1faW5saW5lU3RhY2tUb3AtPm1fZXhpdFByb2ZpbGUuaGFz
RXhpdFNpdGUobV9jdXJyZW50SW5kZXgsIEJhZENhY2hlKSk7Ci0jZW5kaWYKLSAgICAKICAgICBD
YWxsTGlua1N0YXR1cyBjYWxsTGlua1N0YXR1cyA9IENhbGxMaW5rU3RhdHVzOjpjb21wdXRlRm9y
KAogICAgICAgICBtX2lubGluZVN0YWNrVG9wLT5tX3Byb2ZpbGVkQmxvY2ssIG1fY3VycmVudElu
ZGV4KTsKICAgICAKQEAgLTE4NzksMTAgKzE4NzUsNiBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpw
YXJzZUJsb2NrKHVuc2lnbmVkCiAgICAgICAgICAgICBHZXRCeUlkU3RhdHVzIGdldEJ5SWRTdGF0
dXMgPSBHZXRCeUlkU3RhdHVzOjpjb21wdXRlRm9yKAogICAgICAgICAgICAgICAgIG1faW5saW5l
U3RhY2tUb3AtPm1fcHJvZmlsZWRCbG9jaywgbV9jdXJyZW50SW5kZXgsIGlkZW50aWZpZXIpOwog
ICAgICAgICAgICAgCi0jaWYgREZHX0VOQUJMRShERUJVR19WRVJCT1NFKQotICAgICAgICAgICAg
ZGF0YUxvZygiU2xvdyBjYXNlIGNvdW50IGZvciBHZXRCeUlkIEAlenUgYmMjJXU6ICV1OyBleGl0
IHByb2ZpbGU6ICVkXG4iLCBtX2dyYXBoLnNpemUoKSwgbV9jdXJyZW50SW5kZXgsIG1faW5saW5l
U3RhY2tUb3AtPm1fcHJvZmlsZWRCbG9jay0+cmFyZUNhc2VQcm9maWxlRm9yQnl0ZWNvZGVPZmZz
ZXQobV9jdXJyZW50SW5kZXgpLT5tX2NvdW50ZXIsIG1faW5saW5lU3RhY2tUb3AtPm1fZXhpdFBy
b2ZpbGUuaGFzRXhpdFNpdGUobV9jdXJyZW50SW5kZXgsIEJhZENhY2hlKSk7Ci0jZW5kaWYKLSAg
ICAgICAgICAgIAogICAgICAgICAgICAgaWYgKGdldEJ5SWRTdGF0dXMuaXNTaW1wbGVEaXJlY3Qo
KQogICAgICAgICAgICAgICAgICYmICFtX2lubGluZVN0YWNrVG9wLT5tX2V4aXRQcm9maWxlLmhh
c0V4aXRTaXRlKG1fY3VycmVudEluZGV4LCBCYWRDYWNoZSkpIHsKICAgICAgICAgICAgICAgICBB
U1NFUlQoZ2V0QnlJZFN0YXR1cy5zdHJ1Y3R1cmVTZXQoKS5zaXplKCkpOwpAQCAtMTkyMSwxMCAr
MTkxMyw2IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2sodW5zaWduZWQKICAgICAg
ICAgICAgIAogICAgICAgICAgICAgYm9vbCBoYXNFeGl0U2l0ZSA9IG1faW5saW5lU3RhY2tUb3At
Pm1fZXhpdFByb2ZpbGUuaGFzRXhpdFNpdGUobV9jdXJyZW50SW5kZXgsIEJhZENhY2hlKTsKICAg
ICAgICAgICAgIAotI2lmIERGR19FTkFCTEUoREVCVUdfVkVSQk9TRSkKLSAgICAgICAgICAgIGRh
dGFMb2coIlNsb3cgY2FzZSBjb3VudCBmb3IgUHV0QnlJZCBAJXp1IGJjIyV1OiAldTsgZXhpdCBw
cm9maWxlOiAlZFxuIiwgbV9ncmFwaC5zaXplKCksIG1fY3VycmVudEluZGV4LCBtX2lubGluZVN0
YWNrVG9wLT5tX3Byb2ZpbGVkQmxvY2stPnJhcmVDYXNlUHJvZmlsZUZvckJ5dGVjb2RlT2Zmc2V0
KG1fY3VycmVudEluZGV4KS0+bV9jb3VudGVyLCBtX2lubGluZVN0YWNrVG9wLT5tX2V4aXRQcm9m
aWxlLmhhc0V4aXRTaXRlKG1fY3VycmVudEluZGV4LCBCYWRDYWNoZSkpOwotI2VuZGlmICAgICAg
ICAgICAgCi0KICAgICAgICAgICAgIGlmICghaGFzRXhpdFNpdGUgJiYgcHV0QnlJZFN0YXR1cy5p
c1NpbXBsZVJlcGxhY2UoKSkgewogICAgICAgICAgICAgICAgIGFkZFRvR3JhcGgoQ2hlY2tTdHJ1
Y3R1cmUsIE9wSW5mbyhtX2dyYXBoLmFkZFN0cnVjdHVyZVNldChwdXRCeUlkU3RhdHVzLm9sZFN0
cnVjdHVyZSgpKSksIGJhc2UpOwogICAgICAgICAgICAgICAgIGFkZFRvR3JhcGgoUHV0QnlPZmZz
ZXQsIE9wSW5mbyhtX2dyYXBoLm1fc3RvcmFnZUFjY2Vzc0RhdGEuc2l6ZSgpKSwgYmFzZSwgYWRk
VG9HcmFwaChHZXRQcm9wZXJ0eVN0b3JhZ2UsIGJhc2UpLCB2YWx1ZSk7CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVGbGFncy5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlRmxhZ3MuY3BwCShyZXZpc2lvbiAxMTE3OTcpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVGbGFncy5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTEyMyw2ICsxMjMsMjAgQEAgY29uc3QgY2hhciogbm9kZUZsYWdzQXNTdHJpbmcoTm9k
ZUZsYWdzIAogICAgICAgICBoYXNQcmludGVkID0gdHJ1ZTsKICAgICB9CiAgICAgCisgICAgaWYg
KGZsYWdzICYgTm9kZUVzY2FwZXNBc0ludCkgeworICAgICAgICBpZiAoaGFzUHJpbnRlZCkKKyAg
ICAgICAgICAgIHB0ci5zdHJjYXQoInwiKTsKKyAgICAgICAgcHRyLnN0cmNhdCgiRXNjYXBlc0Fz
SW50Iik7CisgICAgICAgIGhhc1ByaW50ZWQgPSB0cnVlOworICAgIH0KKyAgICAKKyAgICBpZiAo
ZmxhZ3MgJiBOb2RlVXNlZEFzSW50KSB7CisgICAgICAgIGlmIChoYXNQcmludGVkKQorICAgICAg
ICAgICAgcHRyLnN0cmNhdCgifCIpOworICAgICAgICBwdHIuc3RyY2F0KCJVc2VkQXNJbnQiKTsK
KyAgICAgICAgaGFzUHJpbnRlZCA9IHRydWU7CisgICAgfQorICAgIAogICAgICpwdHIrKyA9IDA7
CiAgICAgCiAgICAgcmV0dXJuIGRlc2NyaXB0aW9uOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdOb2RlRmxhZ3MuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR05vZGVGbGFncy5oCShyZXZpc2lvbiAxMTE3OTcpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR05vZGVGbGFncy5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNiwyMyArMzYs
MjkgQEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewogCiAvLyBFbnRyaWVzIGluIHRo
ZSBOb2RlVHlwZSBlbnVtIChiZWxvdykgYXJlIGNvbXBvc2VkIG9mIGFuIGlkLCBhIHJlc3VsdCB0
eXBlIChwb3NzaWJseSBub25lKQogLy8gYW5kIHNvbWUgYWRkaXRpb25hbCBpbmZvcm1hdGl2ZSBm
bGFncyAobXVzdCBnZW5lcmF0ZSwgaXMgY29uc3RhbnQsIGV0YykuCi0jZGVmaW5lIE5vZGVSZXN1
bHRNYXNrICAgICAgICAgICAgIDB4RgotI2RlZmluZSBOb2RlUmVzdWx0SlMgICAgICAgICAgICAg
ICAweDEKLSNkZWZpbmUgTm9kZVJlc3VsdE51bWJlciAgICAgICAgICAgMHgyCi0jZGVmaW5lIE5v
ZGVSZXN1bHRJbnQzMiAgICAgICAgICAgIDB4MwotI2RlZmluZSBOb2RlUmVzdWx0Qm9vbGVhbiAg
ICAgICAgICAweDQKLSNkZWZpbmUgTm9kZVJlc3VsdFN0b3JhZ2UgICAgICAgICAgMHg1Ci0jZGVm
aW5lIE5vZGVNdXN0R2VuZXJhdGUgICAgICAgICAgMHgxMCAvLyBzZXQgb24gbm9kZXMgdGhhdCBo
YXZlIHNpZGUgZWZmZWN0cywgYW5kIG1heSBub3QgdHJpdmlhbGx5IGJlIHJlbW92ZWQgYnkgRENF
LgotI2RlZmluZSBOb2RlSGFzVmFyQXJncyAgICAgICAgICAgIDB4MjAKLSNkZWZpbmUgTm9kZUNs
b2JiZXJzV29ybGQgICAgICAgICAweDQwCi0jZGVmaW5lIE5vZGVNaWdodENsb2JiZXIgICAgICAg
ICAgMHg4MAotI2RlZmluZSBOb2RlQmFja1Byb3BNYXNrICAgICAgICAgMHgzMDAKLSNkZWZpbmUg
Tm9kZVVzZUJvdHRvbSAgICAgICAgICAgIDB4MDAwCi0jZGVmaW5lIE5vZGVVc2VkQXNOdW1iZXIg
ICAgICAgICAweDEwMAotI2RlZmluZSBOb2RlTmVlZHNOZWdaZXJvICAgICAgICAgMHgyMDAKLSNk
ZWZpbmUgTm9kZUJlaGF2aW9yTWFzayAgICAgICAgIDB4QzAwCi0jZGVmaW5lIE5vZGVNYXlPdmVy
ZmxvdyAgICAgICAgICAweDQwMAotI2RlZmluZSBOb2RlTWF5TmVnWmVybyAgICAgICAgICAgMHg4
MDAKKyNkZWZpbmUgTm9kZVJlc3VsdE1hc2sgICAgICAgICAgICAgIDB4RgorI2RlZmluZSBOb2Rl
UmVzdWx0SlMgICAgICAgICAgICAgICAgMHgxCisjZGVmaW5lIE5vZGVSZXN1bHROdW1iZXIgICAg
ICAgICAgICAweDIKKyNkZWZpbmUgTm9kZVJlc3VsdEludDMyICAgICAgICAgICAgIDB4MworI2Rl
ZmluZSBOb2RlUmVzdWx0Qm9vbGVhbiAgICAgICAgICAgMHg0CisjZGVmaW5lIE5vZGVSZXN1bHRT
dG9yYWdlICAgICAgICAgICAweDUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisj
ZGVmaW5lIE5vZGVNdXN0R2VuZXJhdGUgICAgICAgICAgIDB4MTAgLy8gc2V0IG9uIG5vZGVzIHRo
YXQgaGF2ZSBzaWRlIGVmZmVjdHMsIGFuZCBtYXkgbm90IHRyaXZpYWxseSBiZSByZW1vdmVkIGJ5
IERDRS4KKyNkZWZpbmUgTm9kZUhhc1ZhckFyZ3MgICAgICAgICAgICAgMHgyMAorI2RlZmluZSBO
b2RlQ2xvYmJlcnNXb3JsZCAgICAgICAgICAweDQwCisjZGVmaW5lIE5vZGVNaWdodENsb2JiZXIg
ICAgICAgICAgIDB4ODAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisjZGVmaW5l
IE5vZGVCZWhhdmlvck1hc2sgICAgICAgICAgMHgzMDAKKyNkZWZpbmUgTm9kZU1heU92ZXJmbG93
ICAgICAgICAgICAweDEwMAorI2RlZmluZSBOb2RlTWF5TmVnWmVybyAgICAgICAgICAgIDB4MjAw
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorI2RlZmluZSBOb2RlQmFja1Byb3BN
YXNrICAgICAgICAgMHgzQzAwCisjZGVmaW5lIE5vZGVVc2VCb3R0b20gICAgICAgICAgICAgMHgw
MDAKKyNkZWZpbmUgTm9kZVVzZWRBc051bWJlciAgICAgICAgICAweDQwMCAvLyBUaGUgcmVzdWx0
IG9mIHRoaXMgY29tcHV0YXRpb24gbWF5IGJlIHVzZWQgaW4gYSBjb250ZXh0IHRoYXQgb2JzZXJ2
ZXMgZnJhY3Rpb25hbCByZXN1bHRzLgorI2RlZmluZSBOb2RlTmVlZHNOZWdaZXJvICAgICAgICAg
IDB4ODAwIC8vIFRoZSByZXN1bHQgb2YgdGhpcyBjb21wdXRhdGlvbiBtYXkgYmUgdXNlZCBpbiBh
IGNvbnRleHQgdGhhdCBvYnNlcnZlcyAtMC4KKyNkZWZpbmUgTm9kZVVzZWRBc1ZhbHVlICAgICAg
ICAgICAoTm9kZVVzZWRBc051bWJlciB8IE5vZGVOZWVkc05lZ1plcm8pCisjZGVmaW5lIE5vZGVV
c2VkQXNJbnQgICAgICAgICAgICAweDEwMDAgLy8gVGhlIHJlc3VsdCBvZiB0aGlzIGNvbXB1dGF0
aW9uIGlzIGtub3duIHRvIGJlIHVzZWQgaW4gYSBjb250ZXh0IHRoYXQgcHJlZmVycywgYnV0IGRv
ZXMgbm90IHJlcXVpcmUsIGludGVnZXIgdmFsdWVzLgorI2RlZmluZSBOb2RlRXNjYXBlc0FzSW50
ICAgICAgICAgMHgyMDAwIC8vIFRoZSBub2RlIHdpbGwgcHJvZHVjZSBpbnRlZ2VycyBhbmQgdGhv
c2UgaW50ZWdlcnMgYXJlIGtub3duIHRvIGVzY2FwZTsKIAogdHlwZWRlZiB1aW50MTZfdCBOb2Rl
RmxhZ3M7CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblBy
b3BhZ2F0aW9uUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwCShyZXZpc2lvbiAxMTE3OTcpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNl
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDUsMjUgKzQ1LDE4IEBAIHB1YmxpYzoKICNpZiBERkdf
RU5BQkxFKERFQlVHX1BST1BBR0FUSU9OX1ZFUkJPU0UpCiAgICAgICAgIG1fY291bnQgPSAwOwog
I2VuZGlmCi0gICAgICAgIC8vIFR3byBzdGFnZSBwcm9jZXNzOiBmaXJzdCBwcm9wYWdhdGUgcHJl
ZGljdGlvbnMsIHRoZW4gcHJvcGFnYXRlIHdoaWxlIGRvaW5nIGRvdWJsZSB2b3RpbmcuCisgICAg
ICAgIC8vIDEpIHByb3BhZ2F0ZSBwcmVkaWN0aW9ucworCisgICAgICAgIHByb3BhZ2F0ZVVudGls
Rml4cG9pbnQoKTsKICAgICAgICAgCi0gICAgICAgIGRvIHsKLSAgICAgICAgICAgIG1fY2hhbmdl
ZCA9IGZhbHNlOwotICAgICAgICAgICAgCi0gICAgICAgICAgICAvLyBGb3J3YXJkIHByb3BhZ2F0
aW9uIGlzIG5lYXItb3B0aW1hbCBmb3IgYm90aCB0b3BvbG9naWNhbGx5LXNvcnRlZCBhbmQKLSAg
ICAgICAgICAgIC8vIERGUy1zb3J0ZWQgY29kZS4KLSAgICAgICAgICAgIHByb3BhZ2F0ZUZvcndh
cmQoKTsKLSAgICAgICAgICAgIGlmICghbV9jaGFuZ2VkKQotICAgICAgICAgICAgICAgIGJyZWFr
OwotICAgICAgICAgICAgCi0gICAgICAgICAgICAvLyBCYWNrd2FyZCBwcm9wYWdhdGlvbiByZWR1
Y2VzIHRoZSBsaWtlbGlob29kIHRoYXQgcGF0aG9sb2dpY2FsIGNvZGUgd2lsbAotICAgICAgICAg
ICAgLy8gY2F1c2Ugc2xvd25lc3MuIExvb3BzIChlc3BlY2lhbGx5IG5lc3RlZCBvbmVzKSByZXNl
bWJsZSBiYWNrd2FyZCBmbG93LgotICAgICAgICAgICAgLy8gVGhpcyBwYXNzIGNhcHR1cmVzIHR3
byBjYXNlczogKDEpIGl0IGRldGVjdHMgaWYgdGhlIGZvcndhcmQgZml4cG9pbnQKLSAgICAgICAg
ICAgIC8vIGZvdW5kIGEgc291bmQgc29sdXRpb24gYW5kICgyKSBzaG9ydC1jaXJjdWl0cyBiYWNr
d2FyZCBmbG93LgotICAgICAgICAgICAgbV9jaGFuZ2VkID0gZmFsc2U7Ci0gICAgICAgICAgICBw
cm9wYWdhdGVCYWNrd2FyZCgpOwotICAgICAgICB9IHdoaWxlIChtX2NoYW5nZWQpOworICAgICAg
ICAvLyAyKSBkZXRlcm1pbmUgdmFyaWFibGVzIHRoYXQgZXNjYXBlIGFuZCBhcmUgaW50ZWdlcnMu
IHRoaXMgd2lsbCBibG9jaworICAgICAgICAvLyAgICBkb3VibGUgdm90aW5nLgorCisgICAgICAg
IGlmIChub3RpY2VFc2NhcGluZ0ludGVnZXJzKCkpCisgICAgICAgICAgICBwcm9wYWdhdGVVbnRp
bEZpeHBvaW50KCk7CiAgICAgICAgIAorICAgICAgICAvLyAzKSByZXByb3BhZ2F0ZSBwcmVkaWN0
aW9ucyB3aGlsZSBkb2luZyBkb3VibGUgdm90aW5nLgorCiAgICAgICAgIGRvIHsKICAgICAgICAg
ICAgIG1fY2hhbmdlZCA9IGZhbHNlOwogICAgICAgICAgICAgZG9Sb3VuZE9mRG91YmxlVm90aW5n
KCk7CkBAIC03Niw2ICs2OSw4IEBAIHB1YmxpYzoKICAgICAgICAgICAgIHByb3BhZ2F0ZUJhY2t3
YXJkKCk7CiAgICAgICAgIH0gd2hpbGUgKG1fY2hhbmdlZCk7CiAgICAgICAgIAorICAgICAgICAv
LyA0KSBtYWtlIGNoYW5nZXMgdG8gdGhlIGdyYXBoIGJhc2VkIG9uIHByZWRpY3Rpb25zCisgICAg
ICAgIAogICAgICAgICBmaXh1cCgpOwogICAgIH0KICAgICAKQEAgLTEyMSwxNCArMTE2LDEyIEBA
IHByaXZhdGU6CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIAogICAgICAgICBOb2RlVHlw
ZSBvcCA9IG5vZGUub3AoKTsKLSAgICAgICAgTm9kZUZsYWdzIGZsYWdzID0gbm9kZS5mbGFncygp
OworICAgICAgICBOb2RlRmxhZ3MgZmxhZ3MgPSBub2RlLmZsYWdzKCkgJiBOb2RlQmFja1Byb3BN
YXNrOwogCiAjaWYgREZHX0VOQUJMRShERUJVR19QUk9QQUdBVElPTl9WRVJCT1NFKQogICAgICAg
ICBkYXRhTG9nKCIgICAlcyBAJXU6ICVzICIsIEdyYXBoOjpvcE5hbWUob3ApLCBtX2NvbXBpbGVJ
bmRleCwgbm9kZUZsYWdzQXNTdHJpbmcoZmxhZ3MpKTsKICNlbmRpZgogICAgICAgICAKLSAgICAg
ICAgZmxhZ3MgJj0gTm9kZUJhY2tQcm9wTWFzazsKLSAgICAgICAgCiAgICAgICAgIGJvb2wgY2hh
bmdlZCA9IGZhbHNlOwogICAgICAgICAKICAgICAgICAgc3dpdGNoIChvcCkgewpAQCAtMTU4LDcg
KzE1MSw3IEBAIHByaXZhdGU6CiAgICAgICAgIGNhc2UgRmx1c2g6IHsKICAgICAgICAgICAgIC8v
IE1ha2Ugc3VyZSB0aGF0IHRoZSBhbmFseXNpcyBrbm93cyB0aGF0IGZsdXNoZWQgbG9jYWxzIGVz
Y2FwZS4KICAgICAgICAgICAgIFZhcmlhYmxlQWNjZXNzRGF0YSogdmFyaWFibGVBY2Nlc3NEYXRh
ID0gbm9kZS52YXJpYWJsZUFjY2Vzc0RhdGEoKTsKLSAgICAgICAgICAgIHZhcmlhYmxlQWNjZXNz
RGF0YS0+bWVyZ2VGbGFncyhOb2RlVXNlZEFzTnVtYmVyIHwgTm9kZU5lZWRzTmVnWmVybyk7Cisg
ICAgICAgICAgICB2YXJpYWJsZUFjY2Vzc0RhdGEtPm1lcmdlRmxhZ3MoTm9kZVVzZWRBc1ZhbHVl
KTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgICAgICAKQEAgLTE2Nywy
MiArMTYwLDMyIEBAIHByaXZhdGU6CiAgICAgICAgIGNhc2UgQml0WG9yOgogICAgICAgICBjYXNl
IEJpdFJTaGlmdDoKICAgICAgICAgY2FzZSBCaXRMU2hpZnQ6Ci0gICAgICAgIGNhc2UgQml0VVJT
aGlmdDoKKyAgICAgICAgY2FzZSBCaXRVUlNoaWZ0OiB7CisgICAgICAgICAgICBjaGFuZ2VkIHw9
IHNldFByZWRpY3Rpb24oUHJlZGljdEludDMyKTsKKyAgICAgICAgICAgIGZsYWdzIHw9IE5vZGVV
c2VkQXNJbnQ7CisgICAgICAgICAgICBjaGFuZ2VkIHw9IG1fZ3JhcGhbbm9kZS5jaGlsZDEoKV0u
bWVyZ2VGbGFncyhmbGFncyk7CisgICAgICAgICAgICBjaGFuZ2VkIHw9IG1fZ3JhcGhbbm9kZS5j
aGlsZDIoKV0ubWVyZ2VGbGFncyhmbGFncyk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
fQorICAgICAgICAgICAgCiAgICAgICAgIGNhc2UgVmFsdWVUb0ludDMyOiB7CiAgICAgICAgICAg
ICBjaGFuZ2VkIHw9IHNldFByZWRpY3Rpb24oUHJlZGljdEludDMyKTsKKyAgICAgICAgICAgIGNo
YW5nZWQgfD0gbV9ncmFwaFtub2RlLmNoaWxkMSgpXS5tZXJnZUZsYWdzKGZsYWdzIHwgTm9kZVVz
ZWRBc0ludCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICAgICAgCiAg
ICAgICAgIGNhc2UgQXJyYXlQb3A6IHsKICAgICAgICAgICAgIGlmIChub2RlLmdldEhlYXBQcmVk
aWN0aW9uKCkpCiAgICAgICAgICAgICAgICAgY2hhbmdlZCB8PSBtZXJnZVByZWRpY3Rpb24obm9k
ZS5nZXRIZWFwUHJlZGljdGlvbigpKTsKKyAgICAgICAgICAgIG1lcmdlRGVmYXVsdEZsYWdzKG5v
ZGUpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KIAogICAgICAgICBjYXNlIEFycmF5
UHVzaDogewogICAgICAgICAgICAgaWYgKG5vZGUuZ2V0SGVhcFByZWRpY3Rpb24oKSkKICAgICAg
ICAgICAgICAgICBjaGFuZ2VkIHw9IG1lcmdlUHJlZGljdGlvbihub2RlLmdldEhlYXBQcmVkaWN0
aW9uKCkpOwotICAgICAgICAgICAgY2hhbmdlZCB8PSBtZXJnZURlZmF1bHRBcml0aEZsYWdzKG5v
ZGUsIGZsYWdzKTsKKyAgICAgICAgICAgIGNoYW5nZWQgfD0gbV9ncmFwaFtub2RlLmNoaWxkMSgp
XS5tZXJnZUZsYWdzKE5vZGVVc2VkQXNWYWx1ZSk7CisgICAgICAgICAgICBjaGFuZ2VkIHw9IG1f
Z3JhcGhbbm9kZS5jaGlsZDIoKV0ubWVyZ2VGbGFncyhOb2RlVXNlZEFzVmFsdWUpOwogICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgIH0KIApAQCAtMTkwLDEzICsxOTMsMTQgQEAgcHJpdmF0ZToK
ICAgICAgICAgY2FzZSBSZWdFeHBUZXN0OiB7CiAgICAgICAgICAgICBpZiAobm9kZS5nZXRIZWFw
UHJlZGljdGlvbigpKQogICAgICAgICAgICAgICAgIGNoYW5nZWQgfD0gbWVyZ2VQcmVkaWN0aW9u
KG5vZGUuZ2V0SGVhcFByZWRpY3Rpb24oKSk7Ci0gICAgICAgICAgICBjaGFuZ2VkIHw9IG1lcmdl
RGVmYXVsdEFyaXRoRmxhZ3Mobm9kZSwgZmxhZ3MpOworICAgICAgICAgICAgbWVyZ2VEZWZhdWx0
RmxhZ3Mobm9kZSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogCiAgICAgICAgIGNh
c2UgU3RyaW5nQ2hhckNvZGVBdDogewogICAgICAgICAgICAgY2hhbmdlZCB8PSBtZXJnZVByZWRp
Y3Rpb24oUHJlZGljdEludDMyKTsKLSAgICAgICAgICAgIGNoYW5nZWQgfD0gbWVyZ2VEZWZhdWx0
QXJpdGhGbGFncyhub2RlLCBmbGFncyk7CisgICAgICAgICAgICBjaGFuZ2VkIHw9IG1fZ3JhcGhb
bm9kZS5jaGlsZDEoKV0ubWVyZ2VGbGFncyhOb2RlVXNlZEFzVmFsdWUpOworICAgICAgICAgICAg
Y2hhbmdlZCB8PSBtX2dyYXBoW25vZGUuY2hpbGQyKCldLm1lcmdlRmxhZ3MoTm9kZVVzZWRBc051
bWJlciB8IE5vZGVVc2VkQXNJbnQpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KIApA
QCAtMjA1LDEzICsyMDksMTYgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIFByZWRpY3RlZFR5cGUg
cmlnaHQgPSBtX2dyYXBoW25vZGUuY2hpbGQyKCldLnByZWRpY3Rpb24oKTsKICAgICAgICAgICAg
IAogICAgICAgICAgICAgaWYgKGxlZnQgJiYgcmlnaHQpIHsKLSAgICAgICAgICAgICAgICBpZiAo
aXNJbnQzMlByZWRpY3Rpb24obWVyZ2VQcmVkaWN0aW9ucyhsZWZ0LCByaWdodCkpICYmIG5vZGVD
YW5TcGVjdWxhdGVJbnRlZ2VyKG5vZGUuYXJpdGhOb2RlRmxhZ3MoKSkpCisgICAgICAgICAgICAg
ICAgaWYgKGlzSW50MzJQcmVkaWN0aW9uKG1lcmdlUHJlZGljdGlvbnMobGVmdCwgcmlnaHQpKQor
ICAgICAgICAgICAgICAgICAgICAmJiBub2RlQ2FuU3BlY3VsYXRlSW50ZWdlcihub2RlLmFyaXRo
Tm9kZUZsYWdzKCkpKQogICAgICAgICAgICAgICAgICAgICBjaGFuZ2VkIHw9IG1lcmdlUHJlZGlj
dGlvbihQcmVkaWN0SW50MzIpOwogICAgICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAg
ICAgICAgY2hhbmdlZCB8PSBtZXJnZVByZWRpY3Rpb24oUHJlZGljdERvdWJsZSk7CiAgICAgICAg
ICAgICB9CiAgICAgICAgICAgICAKLSAgICAgICAgICAgIGNoYW5nZWQgfD0gbWVyZ2VEZWZhdWx0
QXJpdGhGbGFncyhub2RlLCBmbGFncyk7CisgICAgICAgICAgICBmbGFncyB8PSBOb2RlVXNlZEFz
VmFsdWU7CisgICAgICAgICAgICBjaGFuZ2VkIHw9IG1fZ3JhcGhbbm9kZS5jaGlsZDEoKV0ubWVy
Z2VGbGFncyhmbGFncyk7CisgICAgICAgICAgICBjaGFuZ2VkIHw9IG1fZ3JhcGhbbm9kZS5jaGls
ZDIoKV0ubWVyZ2VGbGFncyhmbGFncyk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQog
ICAgICAgICAgICAgCkBAIC0zMDUsNyArMzEyLDggQEAgcHJpdmF0ZToKICAgICAgICAgICAgIFBy
ZWRpY3RlZFR5cGUgcmlnaHQgPSBtX2dyYXBoW25vZGUuY2hpbGQyKCldLnByZWRpY3Rpb24oKTsK
ICAgICAgICAgICAgIAogICAgICAgICAgICAgaWYgKGxlZnQgJiYgcmlnaHQpIHsKLSAgICAgICAg
ICAgICAgICBpZiAoaXNJbnQzMlByZWRpY3Rpb24obWVyZ2VQcmVkaWN0aW9ucyhsZWZ0LCByaWdo
dCkpICYmIG5vZGVDYW5TcGVjdWxhdGVJbnRlZ2VyKG5vZGUuYXJpdGhOb2RlRmxhZ3MoKSkpCisg
ICAgICAgICAgICAgICAgaWYgKGlzSW50MzJQcmVkaWN0aW9uKG1lcmdlUHJlZGljdGlvbnMobGVm
dCwgcmlnaHQpKQorICAgICAgICAgICAgICAgICAgICAmJiBub2RlQ2FuU3BlY3VsYXRlSW50ZWdl
cihub2RlLmFyaXRoTm9kZUZsYWdzKCkpKQogICAgICAgICAgICAgICAgICAgICBjaGFuZ2VkIHw9
IG1lcmdlUHJlZGljdGlvbihQcmVkaWN0SW50MzIpOwogICAgICAgICAgICAgICAgIGVsc2UKICAg
ICAgICAgICAgICAgICAgICAgY2hhbmdlZCB8PSBtZXJnZVByZWRpY3Rpb24oUHJlZGljdERvdWJs
ZSk7CkBAIC0zMjMsNyArMzMxLDggQEAgcHJpdmF0ZToKICAgICAgICAgICAgIFByZWRpY3RlZFR5
cGUgcmlnaHQgPSBtX2dyYXBoW25vZGUuY2hpbGQyKCldLnByZWRpY3Rpb24oKTsKICAgICAgICAg
ICAgIAogICAgICAgICAgICAgaWYgKGxlZnQgJiYgcmlnaHQpIHsKLSAgICAgICAgICAgICAgICBp
ZiAoaXNJbnQzMlByZWRpY3Rpb24obWVyZ2VQcmVkaWN0aW9ucyhsZWZ0LCByaWdodCkpICYmIG5v
ZGVDYW5TcGVjdWxhdGVJbnRlZ2VyKG5vZGUuYXJpdGhOb2RlRmxhZ3MoKSkpCisgICAgICAgICAg
ICAgICAgaWYgKGlzSW50MzJQcmVkaWN0aW9uKG1lcmdlUHJlZGljdGlvbnMobGVmdCwgcmlnaHQp
KQorICAgICAgICAgICAgICAgICAgICAmJiBub2RlQ2FuU3BlY3VsYXRlSW50ZWdlcihub2RlLmFy
aXRoTm9kZUZsYWdzKCkpKQogICAgICAgICAgICAgICAgICAgICBjaGFuZ2VkIHw9IG1lcmdlUHJl
ZGljdGlvbihQcmVkaWN0SW50MzIpOwogICAgICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAg
ICAgICAgICAgY2hhbmdlZCB8PSBtZXJnZVByZWRpY3Rpb24oUHJlZGljdERvdWJsZSk7CkBAIC0z
NDIsNyArMzUxLDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIAogICAgICAgICBjYXNlIEFyaXRo
U3FydDogewogICAgICAgICAgICAgY2hhbmdlZCB8PSBzZXRQcmVkaWN0aW9uKFByZWRpY3REb3Vi
bGUpOwotICAgICAgICAgICAgY2hhbmdlZCB8PSBtZXJnZURlZmF1bHRBcml0aEZsYWdzKG5vZGUs
IGZsYWdzKTsKKyAgICAgICAgICAgIGNoYW5nZWQgfD0gbV9ncmFwaFtub2RlLmNoaWxkMSgpXS5t
ZXJnZUZsYWdzKGZsYWdzIHwgTm9kZVVzZWRBc1ZhbHVlKTsKICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICB9CiAgICAgICAgICAgICAKQEAgLTM2OSwxNCArMzc4LDE1IEBAIHByaXZhdGU6CiAg
ICAgICAgIGNhc2UgQ29tcGFyZVN0cmljdEVxOgogICAgICAgICBjYXNlIEluc3RhbmNlT2Y6IHsK
ICAgICAgICAgICAgIGNoYW5nZWQgfD0gc2V0UHJlZGljdGlvbihQcmVkaWN0Qm9vbGVhbik7Ci0g
ICAgICAgICAgICBjaGFuZ2VkIHw9IG1lcmdlRGVmYXVsdEFyaXRoRmxhZ3Mobm9kZSwgZmxhZ3Mp
OworICAgICAgICAgICAgY2hhbmdlZCB8PSBtZXJnZURlZmF1bHRGbGFncyhub2RlKTsKICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgICAgICAKICAgICAgICAgY2FzZSBHZXRC
eUlkOiB7CiAgICAgICAgICAgICBpZiAobm9kZS5nZXRIZWFwUHJlZGljdGlvbigpKQogICAgICAg
ICAgICAgICAgIGNoYW5nZWQgfD0gbWVyZ2VQcmVkaWN0aW9uKG5vZGUuZ2V0SGVhcFByZWRpY3Rp
b24oKSk7Ci0gICAgICAgICAgICBlbHNlIGlmIChjb2RlQmxvY2soKS0+aWRlbnRpZmllcihub2Rl
LmlkZW50aWZpZXJOdW1iZXIoKSkgPT0gZ2xvYmFsRGF0YSgpLnByb3BlcnR5TmFtZXMtPmxlbmd0
aCkgeworICAgICAgICAgICAgZWxzZSBpZiAoY29kZUJsb2NrKCktPmlkZW50aWZpZXIobm9kZS5p
ZGVudGlmaWVyTnVtYmVyKCkpCisgICAgICAgICAgICAgICAgICAgICA9PSBnbG9iYWxEYXRhKCku
cHJvcGVydHlOYW1lcy0+bGVuZ3RoKSB7CiAgICAgICAgICAgICAgICAgLy8gSWYgdGhlcmUgaXMg
bm8gcHJlZGljdGlvbiBmcm9tIHZhbHVlIHByb2ZpbGVzLCBjaGVjayBpZiB3ZSBtaWdodCBiZQog
ICAgICAgICAgICAgICAgIC8vIGFibGUgdG8gaW5mZXIgdGhlIHR5cGUgb3Vyc2VsdmVzLgogICAg
ICAgICAgICAgICAgIGJvb2wgaXNBcnJheSA9IGlzQXJyYXlQcmVkaWN0aW9uKG1fZ3JhcGhbbm9k
ZS5jaGlsZDEoKV0ucHJlZGljdGlvbigpKTsKQEAgLTM5MSw0MSArNDAxLDQ0IEBAIHByaXZhdGU6
CiAgICAgICAgICAgICAgICAgYm9vbCBpc1VpbnQzMkFycmF5ID0gbV9ncmFwaFtub2RlLmNoaWxk
MSgpXS5zaG91bGRTcGVjdWxhdGVVaW50MzJBcnJheSgpOwogICAgICAgICAgICAgICAgIGJvb2wg
aXNGbG9hdDMyQXJyYXkgPSBtX2dyYXBoW25vZGUuY2hpbGQxKCldLnNob3VsZFNwZWN1bGF0ZUZs
b2F0MzJBcnJheSgpOwogICAgICAgICAgICAgICAgIGJvb2wgaXNGbG9hdDY0QXJyYXkgPSBtX2dy
YXBoW25vZGUuY2hpbGQxKCldLnNob3VsZFNwZWN1bGF0ZUZsb2F0NjRBcnJheSgpOwotICAgICAg
ICAgICAgICAgIGlmIChpc0FycmF5IHx8IGlzU3RyaW5nIHx8IGlzQnl0ZUFycmF5IHx8IGlzSW50
OEFycmF5IHx8IGlzSW50MTZBcnJheSB8fCBpc0ludDMyQXJyYXkgfHwgaXNVaW50OEFycmF5IHx8
IGlzVWludDhDbGFtcGVkQXJyYXkgfHwgaXNVaW50MTZBcnJheSB8fCBpc1VpbnQzMkFycmF5IHx8
IGlzRmxvYXQzMkFycmF5IHx8IGlzRmxvYXQ2NEFycmF5KQorICAgICAgICAgICAgICAgIGlmIChp
c0FycmF5IHx8IGlzU3RyaW5nIHx8IGlzQnl0ZUFycmF5IHx8IGlzSW50OEFycmF5IHx8IGlzSW50
MTZBcnJheQorICAgICAgICAgICAgICAgICAgICB8fCBpc0ludDMyQXJyYXkgfHwgaXNVaW50OEFy
cmF5IHx8IGlzVWludDhDbGFtcGVkQXJyYXkgfHwgaXNVaW50MTZBcnJheQorICAgICAgICAgICAg
ICAgICAgICB8fCBpc1VpbnQzMkFycmF5IHx8IGlzRmxvYXQzMkFycmF5IHx8IGlzRmxvYXQ2NEFy
cmF5KQogICAgICAgICAgICAgICAgICAgICBjaGFuZ2VkIHw9IG1lcmdlUHJlZGljdGlvbihQcmVk
aWN0SW50MzIpOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgY2hhbmdlZCB8PSBtZXJnZURl
ZmF1bHRBcml0aEZsYWdzKG5vZGUsIGZsYWdzKTsKKyAgICAgICAgICAgIGNoYW5nZWQgfD0gbWVy
Z2VEZWZhdWx0RmxhZ3Mobm9kZSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAg
ICAgICAgICAgCiAgICAgICAgIGNhc2UgR2V0QnlJZEZsdXNoOgogICAgICAgICAgICAgaWYgKG5v
ZGUuZ2V0SGVhcFByZWRpY3Rpb24oKSkKICAgICAgICAgICAgICAgICBjaGFuZ2VkIHw9IG1lcmdl
UHJlZGljdGlvbihub2RlLmdldEhlYXBQcmVkaWN0aW9uKCkpOwotICAgICAgICAgICAgY2hhbmdl
ZCB8PSBtZXJnZURlZmF1bHRBcml0aEZsYWdzKG5vZGUsIGZsYWdzKTsKKyAgICAgICAgICAgIGNo
YW5nZWQgfD0gbWVyZ2VEZWZhdWx0RmxhZ3Mobm9kZSk7CiAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgICAgIAogICAgICAgICBjYXNlIEdldEJ5VmFsOiB7Ci0gICAgICAgICAgICBpZiAobV9n
cmFwaFtub2RlLmNoaWxkMSgpXS5zaG91bGRTcGVjdWxhdGVGbG9hdDMyQXJyYXkoKSB8fCBtX2dy
YXBoW25vZGUuY2hpbGQxKCldLnNob3VsZFNwZWN1bGF0ZUZsb2F0NjRBcnJheSgpKQorICAgICAg
ICAgICAgaWYgKG1fZ3JhcGhbbm9kZS5jaGlsZDEoKV0uc2hvdWxkU3BlY3VsYXRlRmxvYXQzMkFy
cmF5KCkKKyAgICAgICAgICAgICAgICB8fCBtX2dyYXBoW25vZGUuY2hpbGQxKCldLnNob3VsZFNw
ZWN1bGF0ZUZsb2F0NjRBcnJheSgpKQogICAgICAgICAgICAgICAgIGNoYW5nZWQgfD0gbWVyZ2VQ
cmVkaWN0aW9uKFByZWRpY3REb3VibGUpOwogICAgICAgICAgICAgZWxzZSBpZiAobm9kZS5nZXRI
ZWFwUHJlZGljdGlvbigpKQogICAgICAgICAgICAgICAgIGNoYW5nZWQgfD0gbWVyZ2VQcmVkaWN0
aW9uKG5vZGUuZ2V0SGVhcFByZWRpY3Rpb24oKSk7CiAKLSAgICAgICAgICAgIGNoYW5nZWQgfD0g
bV9ncmFwaFtub2RlLmNoaWxkMSgpXS5tZXJnZUZsYWdzKGZsYWdzIHwgTm9kZVVzZWRBc051bWJl
ciB8IE5vZGVOZWVkc05lZ1plcm8pOwotICAgICAgICAgICAgY2hhbmdlZCB8PSBtX2dyYXBoW25v
ZGUuY2hpbGQyKCldLm1lcmdlRmxhZ3MoZmxhZ3MgfCBOb2RlVXNlZEFzTnVtYmVyKTsKKyAgICAg
ICAgICAgIGNoYW5nZWQgfD0gbV9ncmFwaFtub2RlLmNoaWxkMSgpXS5tZXJnZUZsYWdzKE5vZGVV
c2VkQXNWYWx1ZSk7CisgICAgICAgICAgICBjaGFuZ2VkIHw9IG1fZ3JhcGhbbm9kZS5jaGlsZDIo
KV0ubWVyZ2VGbGFncyhOb2RlVXNlZEFzTnVtYmVyIHwgTm9kZVVzZWRBc0ludCk7CiAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICAgICAgCiAgICAgICAgIGNhc2UgR2V0UHJv
cGVydHlTdG9yYWdlOiAKICAgICAgICAgY2FzZSBHZXRJbmRleGVkUHJvcGVydHlTdG9yYWdlOiB7
CiAgICAgICAgICAgICBjaGFuZ2VkIHw9IHNldFByZWRpY3Rpb24oUHJlZGljdE90aGVyKTsKLSAg
ICAgICAgICAgIGNoYW5nZWQgfD0gbWVyZ2VEZWZhdWx0QXJpdGhGbGFncyhub2RlLCBmbGFncyk7
CisgICAgICAgICAgICBjaGFuZ2VkIHw9IG1lcmdlRGVmYXVsdEZsYWdzKG5vZGUpOwogICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgIH0KIAogICAgICAgICBjYXNlIEdldEJ5T2Zmc2V0OiB7CiAg
ICAgICAgICAgICBpZiAobm9kZS5nZXRIZWFwUHJlZGljdGlvbigpKQogICAgICAgICAgICAgICAg
IGNoYW5nZWQgfD0gbWVyZ2VQcmVkaWN0aW9uKG5vZGUuZ2V0SGVhcFByZWRpY3Rpb24oKSk7Ci0g
ICAgICAgICAgICBjaGFuZ2VkIHw9IG1lcmdlRGVmYXVsdEFyaXRoRmxhZ3Mobm9kZSwgZmxhZ3Mp
OworICAgICAgICAgICAgY2hhbmdlZCB8PSBtZXJnZURlZmF1bHRGbGFncyhub2RlKTsKICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgICAgICAKQEAgLTQzMyw3ICs0NDYsMTAg
QEAgcHJpdmF0ZToKICAgICAgICAgY2FzZSBDb25zdHJ1Y3Q6IHsKICAgICAgICAgICAgIGlmIChu
b2RlLmdldEhlYXBQcmVkaWN0aW9uKCkpCiAgICAgICAgICAgICAgICAgY2hhbmdlZCB8PSBtZXJn
ZVByZWRpY3Rpb24obm9kZS5nZXRIZWFwUHJlZGljdGlvbigpKTsKLSAgICAgICAgICAgIGNoYW5n
ZWQgfD0gbWVyZ2VEZWZhdWx0QXJpdGhGbGFncyhub2RlLCBmbGFncyk7CisgICAgICAgICAgICBm
b3IgKHVuc2lnbmVkIGNoaWxkSWR4ID0gbm9kZS5maXJzdENoaWxkKCk7CisgICAgICAgICAgICAg
ICAgIGNoaWxkSWR4IDwgbm9kZS5maXJzdENoaWxkKCkgKyBub2RlLm51bUNoaWxkcmVuKCk7Cisg
ICAgICAgICAgICAgICAgICsrY2hpbGRJZHgpCisgICAgICAgICAgICAgICAgY2hhbmdlZCB8PSBt
X2dyYXBoW21fZ3JhcGgubV92YXJBcmdDaGlsZHJlbltjaGlsZElkeF1dLm1lcmdlRmxhZ3MoTm9k
ZVVzZWRBc1ZhbHVlKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgICAg
ICAKQEAgLTQ0Niw3ICs0NjIsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIH0KICAgICAg
ICAgICAgICAgICBjaGFuZ2VkIHw9IG1lcmdlUHJlZGljdGlvbihwcmVkaWN0aW9uKTsKICAgICAg
ICAgICAgIH0KLSAgICAgICAgICAgIGNoYW5nZWQgfD0gbWVyZ2VEZWZhdWx0QXJpdGhGbGFncyhu
b2RlLCBmbGFncyk7CisgICAgICAgICAgICBjaGFuZ2VkIHw9IG1lcmdlRGVmYXVsdEZsYWdzKG5v
ZGUpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgICAgIApAQCAtNDU4
LDggKzQ3NCw5IEBAIHByaXZhdGU6CiAgICAgICAgIH0KICAgICAgICAgICAgIAogICAgICAgICBj
YXNlIFB1dEdsb2JhbFZhcjogewotICAgICAgICAgICAgY2hhbmdlZCB8PSBtX2dyYXBoLnByZWRp
Y3RHbG9iYWxWYXIobm9kZS52YXJOdW1iZXIoKSwgbV9ncmFwaFtub2RlLmNoaWxkMSgpXS5wcmVk
aWN0aW9uKCkpOwotICAgICAgICAgICAgY2hhbmdlZCB8PSBtZXJnZURlZmF1bHRBcml0aEZsYWdz
KG5vZGUsIGZsYWdzKTsKKyAgICAgICAgICAgIGNoYW5nZWQgfD0gbV9ncmFwaC5wcmVkaWN0R2xv
YmFsVmFyKAorICAgICAgICAgICAgICAgIG5vZGUudmFyTnVtYmVyKCksIG1fZ3JhcGhbbm9kZS5j
aGlsZDEoKV0ucHJlZGljdGlvbigpKTsKKyAgICAgICAgICAgIGNoYW5nZWQgfD0gbV9ncmFwaFtu
b2RlLmNoaWxkMSgpXS5tZXJnZUZsYWdzKE5vZGVVc2VkQXNWYWx1ZSk7CiAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgfQogICAgICAgICAgICAgCkBAIC00ODcsMTQgKzUwNCwyMSBAQCBwcml2
YXRlOgogICAgICAgICBjYXNlIENyZWF0ZVRoaXM6CiAgICAgICAgIGNhc2UgTmV3T2JqZWN0OiB7
CiAgICAgICAgICAgICBjaGFuZ2VkIHw9IHNldFByZWRpY3Rpb24oUHJlZGljdEZpbmFsT2JqZWN0
KTsKLSAgICAgICAgICAgIGNoYW5nZWQgfD0gbWVyZ2VEZWZhdWx0QXJpdGhGbGFncyhub2RlLCBm
bGFncyk7CisgICAgICAgICAgICBjaGFuZ2VkIHw9IG1lcmdlRGVmYXVsdEZsYWdzKG5vZGUpOwor
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICBjYXNl
IE5ld0FycmF5OiB7CisgICAgICAgICAgICBjaGFuZ2VkIHw9IHNldFByZWRpY3Rpb24oUHJlZGlj
dEFycmF5KTsKKyAgICAgICAgICAgIGZvciAodW5zaWduZWQgY2hpbGRJZHggPSBub2RlLmZpcnN0
Q2hpbGQoKTsKKyAgICAgICAgICAgICAgICAgY2hpbGRJZHggPCBub2RlLmZpcnN0Q2hpbGQoKSAr
IG5vZGUubnVtQ2hpbGRyZW4oKTsKKyAgICAgICAgICAgICAgICAgKytjaGlsZElkeCkKKyAgICAg
ICAgICAgICAgICBjaGFuZ2VkIHw9IG1fZ3JhcGhbbV9ncmFwaC5tX3ZhckFyZ0NoaWxkcmVuW2No
aWxkSWR4XV0ubWVyZ2VGbGFncyhOb2RlVXNlZEFzVmFsdWUpOwogICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgIH0KICAgICAgICAgICAgIAotICAgICAgICBjYXNlIE5ld0FycmF5OgogICAgICAg
ICBjYXNlIE5ld0FycmF5QnVmZmVyOiB7CiAgICAgICAgICAgICBjaGFuZ2VkIHw9IHNldFByZWRp
Y3Rpb24oUHJlZGljdEFycmF5KTsKLSAgICAgICAgICAgIGNoYW5nZWQgfD0gbWVyZ2VEZWZhdWx0
QXJpdGhGbGFncyhub2RlLCBmbGFncyk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQog
ICAgICAgICAgICAgCkBAIC01MDMsMTAgKzUyNywxOSBAQCBwcml2YXRlOgogICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgCi0gICAgICAgIGNhc2UgU3RyaW5nQ2hhckF0Ogor
ICAgICAgICBjYXNlIFN0cmluZ0NoYXJBdDogeworICAgICAgICAgICAgY2hhbmdlZCB8PSBzZXRQ
cmVkaWN0aW9uKFByZWRpY3RTdHJpbmcpOworICAgICAgICAgICAgY2hhbmdlZCB8PSBtX2dyYXBo
W25vZGUuY2hpbGQxKCldLm1lcmdlRmxhZ3MoTm9kZVVzZWRBc1ZhbHVlKTsKKyAgICAgICAgICAg
IGNoYW5nZWQgfD0gbV9ncmFwaFtub2RlLmNoaWxkMigpXS5tZXJnZUZsYWdzKE5vZGVVc2VkQXNO
dW1iZXIgfCBOb2RlVXNlZEFzSW50KTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9Cisg
ICAgICAgICAgICAKICAgICAgICAgY2FzZSBTdHJDYXQ6IHsKICAgICAgICAgICAgIGNoYW5nZWQg
fD0gc2V0UHJlZGljdGlvbihQcmVkaWN0U3RyaW5nKTsKLSAgICAgICAgICAgIGNoYW5nZWQgfD0g
bWVyZ2VEZWZhdWx0QXJpdGhGbGFncyhub2RlLCBmbGFncyk7CisgICAgICAgICAgICBmb3IgKHVu
c2lnbmVkIGNoaWxkSWR4ID0gbm9kZS5maXJzdENoaWxkKCk7CisgICAgICAgICAgICAgICAgIGNo
aWxkSWR4IDwgbm9kZS5maXJzdENoaWxkKCkgKyBub2RlLm51bUNoaWxkcmVuKCk7CisgICAgICAg
ICAgICAgICAgICsrY2hpbGRJZHgpCisgICAgICAgICAgICAgICAgY2hhbmdlZCB8PSBtX2dyYXBo
W21fZ3JhcGgubV92YXJBcmdDaGlsZHJlbltjaGlsZElkeF1dLm1lcmdlRmxhZ3MoTm9kZVVzZWRB
c051bWJlcik7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICAgICAgCkBA
IC01MjMsNyArNTU2LDggQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGNo
aWxkICYgUHJlZGljdE9iamVjdE1hc2spIHsKICAgICAgICAgICAgICAgICAgICAgLy8gT2JqZWN0
cyBnZXQgdHVybmVkIGludG8gc3RyaW5ncy4gU28gaWYgdGhlIGlucHV0IGhhcyBoaW50cyBvZiBv
YmplY3RuZXNzLAogICAgICAgICAgICAgICAgICAgICAvLyB0aGUgb3V0cHV0IHdpbGwgaGF2ZSBo
aW5zdHMgb2Ygc3RyaW5naW5lc3MuCi0gICAgICAgICAgICAgICAgICAgIGNoYW5nZWQgfD0gbWVy
Z2VQcmVkaWN0aW9uKG1lcmdlUHJlZGljdGlvbnMoY2hpbGQgJiB+UHJlZGljdE9iamVjdE1hc2ss
IFByZWRpY3RTdHJpbmcpKTsKKyAgICAgICAgICAgICAgICAgICAgY2hhbmdlZCB8PSBtZXJnZVBy
ZWRpY3Rpb24oCisgICAgICAgICAgICAgICAgICAgICAgICBtZXJnZVByZWRpY3Rpb25zKGNoaWxk
ICYgflByZWRpY3RPYmplY3RNYXNrLCBQcmVkaWN0U3RyaW5nKSk7CiAgICAgICAgICAgICAgICAg
fSBlbHNlCiAgICAgICAgICAgICAgICAgICAgIGNoYW5nZWQgfD0gbWVyZ2VQcmVkaWN0aW9uKGNo
aWxkKTsKICAgICAgICAgICAgIH0KQEAgLTU0Myw2ICs1NzcsNyBAQCBwcml2YXRlOgogICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgICAgIAorICAgICAgICBjYXNlIFB1dEJ5
VmFsQWxpYXM6CiAgICAgICAgIGNhc2UgR2V0QXJyYXlMZW5ndGg6CiAgICAgICAgIGNhc2UgR2V0
Qnl0ZUFycmF5TGVuZ3RoOgogICAgICAgICBjYXNlIEdldEludDhBcnJheUxlbmd0aDoKQEAgLTU2
MiwzMyArNTk3LDQ1IEBAIHByaXZhdGU6CiAgICAgICAgIH0KICAgICAgICAgCiAgICAgICAgIGNh
c2UgUHV0QnlWYWw6Ci0gICAgICAgICAgICBjaGFuZ2VkIHw9IG1fZ3JhcGhbbm9kZS5jaGlsZDEo
KV0ubWVyZ2VGbGFncyhmbGFncyB8IE5vZGVVc2VkQXNOdW1iZXIgfCBOb2RlTmVlZHNOZWdaZXJv
KTsKLSAgICAgICAgICAgIGNoYW5nZWQgfD0gbV9ncmFwaFtub2RlLmNoaWxkMigpXS5tZXJnZUZs
YWdzKGZsYWdzIHwgTm9kZVVzZWRBc051bWJlcik7Ci0gICAgICAgICAgICBjaGFuZ2VkIHw9IG1f
Z3JhcGhbbm9kZS5jaGlsZDMoKV0ubWVyZ2VGbGFncyhmbGFncyB8IE5vZGVVc2VkQXNOdW1iZXIg
fCBOb2RlTmVlZHNOZWdaZXJvKTsKKyAgICAgICAgICAgIGNoYW5nZWQgfD0gbV9ncmFwaFtub2Rl
LmNoaWxkMSgpXS5tZXJnZUZsYWdzKE5vZGVVc2VkQXNWYWx1ZSk7CisgICAgICAgICAgICBjaGFu
Z2VkIHw9IG1fZ3JhcGhbbm9kZS5jaGlsZDIoKV0ubWVyZ2VGbGFncyhOb2RlVXNlZEFzTnVtYmVy
IHwgTm9kZVVzZWRBc0ludCk7CisgICAgICAgICAgICBjaGFuZ2VkIHw9IG1fZ3JhcGhbbm9kZS5j
aGlsZDMoKV0ubWVyZ2VGbGFncyhOb2RlVXNlZEFzVmFsdWUpOworICAgICAgICAgICAgYnJlYWs7
CisKKyAgICAgICAgY2FzZSBQdXRTY29wZWRWYXI6CisgICAgICAgIGNhc2UgUmV0dXJuOgorICAg
ICAgICBjYXNlIFRocm93OgorICAgICAgICAgICAgY2hhbmdlZCB8PSBtX2dyYXBoW25vZGUuY2hp
bGQxKCldLm1lcmdlRmxhZ3MoTm9kZVVzZWRBc1ZhbHVlKTsKKyAgICAgICAgICAgIGJyZWFrOwor
CisgICAgICAgIGNhc2UgUHV0QnlJZDoKKyAgICAgICAgY2FzZSBQdXRCeUlkRGlyZWN0OgorICAg
ICAgICAgICAgY2hhbmdlZCB8PSBtX2dyYXBoW25vZGUuY2hpbGQxKCldLm1lcmdlRmxhZ3MoTm9k
ZVVzZWRBc1ZhbHVlKTsKKyAgICAgICAgICAgIGNoYW5nZWQgfD0gbV9ncmFwaFtub2RlLmNoaWxk
MigpXS5tZXJnZUZsYWdzKE5vZGVVc2VkQXNWYWx1ZSk7CisgICAgICAgICAgICBicmVhazsKKwor
ICAgICAgICBjYXNlIFB1dEJ5T2Zmc2V0OgorICAgICAgICAgICAgY2hhbmdlZCB8PSBtX2dyYXBo
W25vZGUuY2hpbGQxKCldLm1lcmdlRmxhZ3MoTm9kZVVzZWRBc1ZhbHVlKTsKKyAgICAgICAgICAg
IGNoYW5nZWQgfD0gbV9ncmFwaFtub2RlLmNoaWxkMygpXS5tZXJnZUZsYWdzKE5vZGVVc2VkQXNW
YWx1ZSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIAorICAgICAgICBjYXNlIFBo
aToKICAgICAgICAgICAgIGJyZWFrOwogCiAjaWZuZGVmIE5ERUJVRwogICAgICAgICAvLyBUaGVz
ZSBnZXQgaWdub3JlZCBiZWNhdXNlIHRoZXkgZG9uJ3QgcmV0dXJuIGFueXRoaW5nLgotICAgICAg
ICBjYXNlIFB1dFNjb3BlZFZhcjoKICAgICAgICAgY2FzZSBERkc6Okp1bXA6CiAgICAgICAgIGNh
c2UgQnJhbmNoOgogICAgICAgICBjYXNlIEJyZWFrcG9pbnQ6Ci0gICAgICAgIGNhc2UgUmV0dXJu
OgogICAgICAgICBjYXNlIENoZWNrSGFzSW5zdGFuY2U6Ci0gICAgICAgIGNhc2UgUGhpOgotICAg
ICAgICBjYXNlIFRocm93OgogICAgICAgICBjYXNlIFRocm93UmVmZXJlbmNlRXJyb3I6CiAgICAg
ICAgIGNhc2UgRm9yY2VPU1JFeGl0OgogICAgICAgICBjYXNlIFNldEFyZ3VtZW50OgotICAgICAg
ICBjYXNlIFB1dEJ5VmFsQWxpYXM6Ci0gICAgICAgIGNhc2UgUHV0QnlJZDoKLSAgICAgICAgY2Fz
ZSBQdXRCeUlkRGlyZWN0OgogICAgICAgICBjYXNlIENoZWNrU3RydWN0dXJlOgogICAgICAgICBj
YXNlIENoZWNrRnVuY3Rpb246CiAgICAgICAgIGNhc2UgUHV0U3RydWN0dXJlOgotICAgICAgICBj
YXNlIFB1dEJ5T2Zmc2V0OgogICAgICAgICBjYXNlIFRlYXJPZmZBY3RpdmF0aW9uOgotICAgICAg
ICAgICAgY2hhbmdlZCB8PSBtZXJnZURlZmF1bHRBcml0aEZsYWdzKG5vZGUsIGZsYWdzKTsKKyAg
ICAgICAgICAgIGNoYW5nZWQgfD0gbWVyZ2VEZWZhdWx0RmxhZ3Mobm9kZSk7CiAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgICAgIAogICAgICAgICAvLyBUaGVzZSBnZXRzIGlnbm9yZWQgYmVj
YXVzZSBpdCBkb2Vzbid0IGRvIGFueXRoaW5nLgpAQCAtNjAyLDcgKzY0OSw3IEBAIHByaXZhdGU6
CiAgICAgICAgICAgICBicmVhazsKICNlbHNlCiAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAg
ICBjaGFuZ2VkIHw9IG1lcmdlRGVmYXVsdEFyaXRoRmxhZ3Mobm9kZSwgZmxhZ3MpOworICAgICAg
ICAgICAgY2hhbmdlZCB8PSBtZXJnZURlZmF1bHRGbGFncyhub2RlKTsKICAgICAgICAgICAgIGJy
ZWFrOwogI2VuZGlmCiAgICAgICAgIH0KQEAgLTYxMywyNCArNjYwLDI1IEBAIHByaXZhdGU6CiAg
ICAgICAgIAogICAgICAgICBtX2NoYW5nZWQgfD0gY2hhbmdlZDsKICAgICB9Ci0gICAgCi0gICAg
Ym9vbCBtZXJnZURlZmF1bHRBcml0aEZsYWdzKE5vZGUmIG5vZGUsIE5vZGVGbGFncyBmbGFncykK
KyAgICAgICAgCisgICAgYm9vbCBtZXJnZURlZmF1bHRGbGFncyhOb2RlJiBub2RlKQogICAgIHsK
ICAgICAgICAgYm9vbCBjaGFuZ2VkID0gZmFsc2U7Ci0gICAgICAgIGZsYWdzIHw9IE5vZGVVc2Vk
QXNOdW1iZXIgfCBOb2RlTmVlZHNOZWdaZXJvOwogICAgICAgICBpZiAobm9kZS5mbGFncygpICYg
Tm9kZUhhc1ZhckFyZ3MpIHsKLSAgICAgICAgICAgIGZvciAodW5zaWduZWQgY2hpbGRJZHggPSBu
b2RlLmZpcnN0Q2hpbGQoKTsgY2hpbGRJZHggPCBub2RlLmZpcnN0Q2hpbGQoKSArIG5vZGUubnVt
Q2hpbGRyZW4oKTsgY2hpbGRJZHgrKykKLSAgICAgICAgICAgICAgICBjaGFuZ2VkIHw9IG1fZ3Jh
cGhbbV9ncmFwaC5tX3ZhckFyZ0NoaWxkcmVuW2NoaWxkSWR4XV0ubWVyZ2VGbGFncyhmbGFncyk7
CisgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGNoaWxkSWR4ID0gbm9kZS5maXJzdENoaWxkKCk7
CisgICAgICAgICAgICAgICAgIGNoaWxkSWR4IDwgbm9kZS5maXJzdENoaWxkKCkgKyBub2RlLm51
bUNoaWxkcmVuKCk7CisgICAgICAgICAgICAgICAgIGNoaWxkSWR4KyspCisgICAgICAgICAgICAg
ICAgY2hhbmdlZCB8PSBtX2dyYXBoW21fZ3JhcGgubV92YXJBcmdDaGlsZHJlbltjaGlsZElkeF1d
Lm1lcmdlRmxhZ3MoTm9kZVVzZWRBc1ZhbHVlKTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAg
ICAgIGlmICghbm9kZS5jaGlsZDEoKSkKICAgICAgICAgICAgICAgICByZXR1cm4gY2hhbmdlZDsK
LSAgICAgICAgICAgIGNoYW5nZWQgfD0gbV9ncmFwaFtub2RlLmNoaWxkMSgpXS5tZXJnZUZsYWdz
KGZsYWdzKTsKKyAgICAgICAgICAgIGNoYW5nZWQgfD0gbV9ncmFwaFtub2RlLmNoaWxkMSgpXS5t
ZXJnZUZsYWdzKE5vZGVVc2VkQXNWYWx1ZSk7CiAgICAgICAgICAgICBpZiAoIW5vZGUuY2hpbGQy
KCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGNoYW5nZWQ7Ci0gICAgICAgICAgICBjaGFuZ2Vk
IHw9IG1fZ3JhcGhbbm9kZS5jaGlsZDIoKV0ubWVyZ2VGbGFncyhmbGFncyk7CisgICAgICAgICAg
ICBjaGFuZ2VkIHw9IG1fZ3JhcGhbbm9kZS5jaGlsZDIoKV0ubWVyZ2VGbGFncyhOb2RlVXNlZEFz
VmFsdWUpOwogICAgICAgICAgICAgaWYgKCFub2RlLmNoaWxkMygpKQogICAgICAgICAgICAgICAg
IHJldHVybiBjaGFuZ2VkOwotICAgICAgICAgICAgY2hhbmdlZCB8PSBtX2dyYXBoW25vZGUuY2hp
bGQzKCldLm1lcmdlRmxhZ3MoZmxhZ3MpOworICAgICAgICAgICAgY2hhbmdlZCB8PSBtX2dyYXBo
W25vZGUuY2hpbGQzKCldLm1lcmdlRmxhZ3MoTm9kZVVzZWRBc1ZhbHVlKTsKICAgICAgICAgfQog
ICAgICAgICByZXR1cm4gY2hhbmdlZDsKICAgICB9CkBAIC02NTIsNiArNzAwLDg1IEBAIHByaXZh
dGU6CiAgICAgICAgIGZvciAobV9jb21waWxlSW5kZXggPSBtX2dyYXBoLnNpemUoKTsgbV9jb21w
aWxlSW5kZXgtLSA+IDA7KQogICAgICAgICAgICAgcHJvcGFnYXRlKG1fZ3JhcGhbbV9jb21waWxl
SW5kZXhdKTsKICAgICB9CisgICAgCisgICAgdm9pZCBwcm9wYWdhdGVVbnRpbEZpeHBvaW50KCkK
KyAgICB7CisgICAgICAgIGRvIHsKKyAgICAgICAgICAgIG1fY2hhbmdlZCA9IGZhbHNlOworICAg
ICAgICAgICAgCisgICAgICAgICAgICAvLyBGb3J3YXJkIHByb3BhZ2F0aW9uIGlzIG5lYXItb3B0
aW1hbCBmb3IgYm90aCB0b3BvbG9naWNhbGx5LXNvcnRlZCBhbmQKKyAgICAgICAgICAgIC8vIERG
Uy1zb3J0ZWQgY29kZS4KKyAgICAgICAgICAgIHByb3BhZ2F0ZUZvcndhcmQoKTsKKyAgICAgICAg
ICAgIGlmICghbV9jaGFuZ2VkKQorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAg
CisgICAgICAgICAgICAvLyBCYWNrd2FyZCBwcm9wYWdhdGlvbiByZWR1Y2VzIHRoZSBsaWtlbGlo
b29kIHRoYXQgcGF0aG9sb2dpY2FsIGNvZGUgd2lsbAorICAgICAgICAgICAgLy8gY2F1c2Ugc2xv
d25lc3MuIExvb3BzIChlc3BlY2lhbGx5IG5lc3RlZCBvbmVzKSByZXNlbWJsZSBiYWNrd2FyZCBm
bG93LgorICAgICAgICAgICAgLy8gVGhpcyBwYXNzIGNhcHR1cmVzIHR3byBjYXNlczogKDEpIGl0
IGRldGVjdHMgaWYgdGhlIGZvcndhcmQgZml4cG9pbnQKKyAgICAgICAgICAgIC8vIGZvdW5kIGEg
c291bmQgc29sdXRpb24gYW5kICgyKSBzaG9ydC1jaXJjdWl0cyBiYWNrd2FyZCBmbG93LgorICAg
ICAgICAgICAgbV9jaGFuZ2VkID0gZmFsc2U7CisgICAgICAgICAgICBwcm9wYWdhdGVCYWNrd2Fy
ZCgpOworICAgICAgICB9IHdoaWxlIChtX2NoYW5nZWQpOworICAgIH0KKyAgICAKKyAgICBib29s
IG5vdGljZUVzY2FwaW5nSW50ZWdlcihFZGdlIGVkZ2UpCisgICAgeworICAgICAgICBOb2RlJiBu
b2RlID0gbV9ncmFwaFtlZGdlXTsKKyAgICAgICAgaWYgKG5vZGUuc2hvdWxkU3BlY3VsYXRlSW50
ZWdlcigpKQorICAgICAgICAgICAgcmV0dXJuIG5vZGUubWVyZ2VGbGFncyhOb2RlRXNjYXBlc0Fz
SW50KTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICAKKyAgICBib29sIG5vdGlj
ZUVzY2FwaW5nSW50ZWdlcnMoTm9kZSYgbm9kZSkKKyAgICB7CisgICAgICAgIGJvb2wgY2hhbmdl
ZCA9IGZhbHNlOworICAgICAgICBzd2l0Y2ggKG5vZGUub3AoKSkgeworICAgICAgICBjYXNlIFNl
dExvY2FsOgorICAgICAgICAgICAgaWYgKG1fZ3JhcGguaXNDYXB0dXJlZChub2RlLmxvY2FsKCkp
KQorICAgICAgICAgICAgICAgIGNoYW5nZWQgfD0gbm90aWNlRXNjYXBpbmdJbnRlZ2VyKG5vZGUu
Y2hpbGQxKCkpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAKKyAgICAgICAgY2Fz
ZSBQdXRHbG9iYWxWYXI6CisgICAgICAgIGNhc2UgUHV0U2NvcGVkVmFyOgorICAgICAgICBjYXNl
IFJldHVybjoKKyAgICAgICAgY2FzZSBUaHJvdzoKKyAgICAgICAgICAgIGNoYW5nZWQgfD0gbm90
aWNlRXNjYXBpbmdJbnRlZ2VyKG5vZGUuY2hpbGQxKCkpOworICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgICAgICAKKyAgICAgICAgY2FzZSBBcnJheVB1c2g6CisgICAgICAgIGNhc2UgUHV0QnlJ
ZDoKKyAgICAgICAgY2FzZSBQdXRCeUlkRGlyZWN0OgorICAgICAgICAgICAgY2hhbmdlZCB8PSBu
b3RpY2VFc2NhcGluZ0ludGVnZXIobm9kZS5jaGlsZDIoKSk7CisgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgICAgIAorICAgICAgICBjYXNlIFB1dEJ5VmFsOgorICAgICAgICBjYXNlIFB1dEJ5
T2Zmc2V0OgorICAgICAgICAgICAgY2hhbmdlZCB8PSBub3RpY2VFc2NhcGluZ0ludGVnZXIobm9k
ZS5jaGlsZDMoKSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIAorICAgICAgICBj
YXNlIENhbGw6CisgICAgICAgIGNhc2UgQ29uc3RydWN0OgorICAgICAgICBjYXNlIE5ld0FycmF5
OgorICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBjaGlsZElkeCA9IG5vZGUuZmlyc3RDaGlsZCgp
OworICAgICAgICAgICAgICAgICBjaGlsZElkeCA8IG5vZGUuZmlyc3RDaGlsZCgpICsgbm9kZS5u
dW1DaGlsZHJlbigpOworICAgICAgICAgICAgICAgICArK2NoaWxkSWR4KQorICAgICAgICAgICAg
ICAgIGNoYW5nZWQgfD0gbm90aWNlRXNjYXBpbmdJbnRlZ2VyKG1fZ3JhcGgubV92YXJBcmdDaGls
ZHJlbltjaGlsZElkeF0pOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAKKyAgICAg
ICAgZGVmYXVsdDoKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIAorICAg
ICAgICByZXR1cm4gY2hhbmdlZDsKKyAgICB9CisgICAgCisgICAgYm9vbCBub3RpY2VFc2NhcGlu
Z0ludGVnZXJzKCkKKyAgICB7CisgICAgICAgIGJvb2wgY2hhbmdlZCA9IGZhbHNlOworICAgICAg
ICBmb3IgKG1fY29tcGlsZUluZGV4ID0gbV9ncmFwaC5zaXplKCk7IG1fY29tcGlsZUluZGV4LS07
KQorICAgICAgICAgICAgY2hhbmdlZCB8PSBub3RpY2VFc2NhcGluZ0ludGVnZXJzKG1fZ3JhcGhb
bV9jb21waWxlSW5kZXhdKTsKKyAgICAgICAgcmV0dXJuIGNoYW5nZWQ7CisgICAgfQogCiAgICAg
dm9pZCB2b3RlKEVkZ2Ugbm9kZVVzZSwgVmFyaWFibGVBY2Nlc3NEYXRhOjpCYWxsb3QgYmFsbG90
KQogICAgIHsKQEAgLTY3MSw3ICs3OTgsOSBAQCBwcml2YXRlOgogICAgIHZvaWQgdm90ZShOb2Rl
JiBub2RlLCBWYXJpYWJsZUFjY2Vzc0RhdGE6OkJhbGxvdCBiYWxsb3QpCiAgICAgewogICAgICAg
ICBpZiAobm9kZS5mbGFncygpICYgTm9kZUhhc1ZhckFyZ3MpIHsKLSAgICAgICAgICAgIGZvciAo
dW5zaWduZWQgY2hpbGRJZHggPSBub2RlLmZpcnN0Q2hpbGQoKTsgY2hpbGRJZHggPCBub2RlLmZp
cnN0Q2hpbGQoKSArIG5vZGUubnVtQ2hpbGRyZW4oKTsgY2hpbGRJZHgrKykKKyAgICAgICAgICAg
IGZvciAodW5zaWduZWQgY2hpbGRJZHggPSBub2RlLmZpcnN0Q2hpbGQoKTsKKyAgICAgICAgICAg
ICAgICAgY2hpbGRJZHggPCBub2RlLmZpcnN0Q2hpbGQoKSArIG5vZGUubnVtQ2hpbGRyZW4oKTsK
KyAgICAgICAgICAgICAgICAgY2hpbGRJZHgrKykKICAgICAgICAgICAgICAgICB2b3RlKG1fZ3Jh
cGgubV92YXJBcmdDaGlsZHJlbltjaGlsZElkeF0sIGJhbGxvdCk7CiAgICAgICAgICAgICByZXR1
cm47CiAgICAgICAgIH0KQEAgLTcyNiw3ICs4NTUsOSBAQCBwcml2YXRlOgogICAgICAgICAgICAg
ICAgIAogICAgICAgICAgICAgICAgIFZhcmlhYmxlQWNjZXNzRGF0YTo6QmFsbG90IGJhbGxvdDsK
ICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICBpZiAoaXNOdW1iZXJQcmVkaWN0aW9u
KGxlZnQpICYmIGlzTnVtYmVyUHJlZGljdGlvbihyaWdodCkgJiYgIShOb2RlOjpzaG91bGRTcGVj
dWxhdGVJbnRlZ2VyKG1fZ3JhcGhbbm9kZS5jaGlsZDEoKV0sIG1fZ3JhcGhbbm9kZS5jaGlsZDEo
KV0pICYmIG5vZGUuY2FuU3BlY3VsYXRlSW50ZWdlcigpKSkKKyAgICAgICAgICAgICAgICBpZiAo
aXNOdW1iZXJQcmVkaWN0aW9uKGxlZnQpICYmIGlzTnVtYmVyUHJlZGljdGlvbihyaWdodCkKKyAg
ICAgICAgICAgICAgICAgICAgJiYgIShOb2RlOjpzaG91bGRTcGVjdWxhdGVJbnRlZ2VyKG1fZ3Jh
cGhbbm9kZS5jaGlsZDEoKV0sIG1fZ3JhcGhbbm9kZS5jaGlsZDEoKV0pCisgICAgICAgICAgICAg
ICAgICAgICAgICAgJiYgbm9kZS5jYW5TcGVjdWxhdGVJbnRlZ2VyKCkpKQogICAgICAgICAgICAg
ICAgICAgICBiYWxsb3QgPSBWYXJpYWJsZUFjY2Vzc0RhdGE6OlZvdGVEb3VibGU7CiAgICAgICAg
ICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgICAgICBiYWxsb3QgPSBWYXJpYWJsZUFjY2Vz
c0RhdGE6OlZvdGVWYWx1ZTsKQEAgLTczOCw3ICs4NjksOCBAQCBwcml2YXRlOgogICAgICAgICAg
ICAgICAgIAogICAgICAgICAgICAgY2FzZSBBcml0aEFiczoKICAgICAgICAgICAgICAgICBWYXJp
YWJsZUFjY2Vzc0RhdGE6OkJhbGxvdCBiYWxsb3Q7Ci0gICAgICAgICAgICAgICAgaWYgKCEobV9n
cmFwaFtub2RlLmNoaWxkMSgpXS5zaG91bGRTcGVjdWxhdGVJbnRlZ2VyKCkgJiYgbm9kZS5jYW5T
cGVjdWxhdGVJbnRlZ2VyKCkpKQorICAgICAgICAgICAgICAgIGlmICghKG1fZ3JhcGhbbm9kZS5j
aGlsZDEoKV0uc2hvdWxkU3BlY3VsYXRlSW50ZWdlcigpCisgICAgICAgICAgICAgICAgICAgICAg
JiYgbm9kZS5jYW5TcGVjdWxhdGVJbnRlZ2VyKCkpKQogICAgICAgICAgICAgICAgICAgICBiYWxs
b3QgPSBWYXJpYWJsZUFjY2Vzc0RhdGE6OlZvdGVEb3VibGU7CiAgICAgICAgICAgICAgICAgZWxz
ZQogICAgICAgICAgICAgICAgICAgICBiYWxsb3QgPSBWYXJpYWJsZUFjY2Vzc0RhdGE6OlZvdGVW
YWx1ZTsKQEAgLTc4OCw3ICs5MjAsOCBAQCBwcml2YXRlOgogICAgICAgICBjYXNlIEdldEJ5SWQ6
IHsKICAgICAgICAgICAgIGlmICghaXNJbnQzMlByZWRpY3Rpb24obV9ncmFwaFttX2NvbXBpbGVJ
bmRleF0ucHJlZGljdGlvbigpKSkKICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAg
IGlmIChjb2RlQmxvY2soKS0+aWRlbnRpZmllcihub2RlLmlkZW50aWZpZXJOdW1iZXIoKSkgIT0g
Z2xvYmFsRGF0YSgpLnByb3BlcnR5TmFtZXMtPmxlbmd0aCkKKyAgICAgICAgICAgIGlmIChjb2Rl
QmxvY2soKS0+aWRlbnRpZmllcihub2RlLmlkZW50aWZpZXJOdW1iZXIoKSkKKyAgICAgICAgICAg
ICAgICAhPSBnbG9iYWxEYXRhKCkucHJvcGVydHlOYW1lcy0+bGVuZ3RoKQogICAgICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICAgICAgYm9vbCBpc0FycmF5ID0gaXNBcnJheVByZWRpY3Rpb24o
bV9ncmFwaFtub2RlLmNoaWxkMSgpXS5wcmVkaWN0aW9uKCkpOwogICAgICAgICAgICAgYm9vbCBp
c1N0cmluZyA9IGlzU3RyaW5nUHJlZGljdGlvbihtX2dyYXBoW25vZGUuY2hpbGQxKCldLnByZWRp
Y3Rpb24oKSk7CkBAIC04MDIsNyArOTM1LDkgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIGJvb2wg
aXNVaW50MzJBcnJheSA9IG1fZ3JhcGhbbm9kZS5jaGlsZDEoKV0uc2hvdWxkU3BlY3VsYXRlVWlu
dDMyQXJyYXkoKTsKICAgICAgICAgICAgIGJvb2wgaXNGbG9hdDMyQXJyYXkgPSBtX2dyYXBoW25v
ZGUuY2hpbGQxKCldLnNob3VsZFNwZWN1bGF0ZUZsb2F0MzJBcnJheSgpOwogICAgICAgICAgICAg
Ym9vbCBpc0Zsb2F0NjRBcnJheSA9IG1fZ3JhcGhbbm9kZS5jaGlsZDEoKV0uc2hvdWxkU3BlY3Vs
YXRlRmxvYXQ2NEFycmF5KCk7Ci0gICAgICAgICAgICBpZiAoIWlzQXJyYXkgJiYgIWlzU3RyaW5n
ICYmICFpc0J5dGVBcnJheSAmJiAhaXNJbnQ4QXJyYXkgJiYgIWlzSW50MTZBcnJheSAmJiAhaXNJ
bnQzMkFycmF5ICYmICFpc1VpbnQ4QXJyYXkgJiYgIWlzVWludDhDbGFtcGVkQXJyYXkgJiYgIWlz
VWludDE2QXJyYXkgJiYgIWlzVWludDMyQXJyYXkgJiYgIWlzRmxvYXQzMkFycmF5ICYmICFpc0Zs
b2F0NjRBcnJheSkKKyAgICAgICAgICAgIGlmICghaXNBcnJheSAmJiAhaXNTdHJpbmcgJiYgIWlz
Qnl0ZUFycmF5ICYmICFpc0ludDhBcnJheSAmJiAhaXNJbnQxNkFycmF5CisgICAgICAgICAgICAg
ICAgJiYgIWlzSW50MzJBcnJheSAmJiAhaXNVaW50OEFycmF5ICYmICFpc1VpbnQ4Q2xhbXBlZEFy
cmF5ICYmICFpc1VpbnQxNkFycmF5CisgICAgICAgICAgICAgICAgJiYgIWlzVWludDMyQXJyYXkg
JiYgIWlzRmxvYXQzMkFycmF5ICYmICFpc0Zsb2F0NjRBcnJheSkKICAgICAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgICAgIAogI2lmIERGR19FTkFCTEUoREVCVUdfUFJPUEFHQVRJT05fVkVS
Qk9TRSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVmFyaWFibGVBY2Nlc3NE
YXRhLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdWYXJpYWJs
ZUFjY2Vzc0RhdGEuaAkocmV2aXNpb24gMTExNzk3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdWYXJpYWJsZUFjY2Vzc0RhdGEuaAkod29ya2luZyBjb3B5KQpAQCAtMTA0LDggKzEw
NCwzMiBAQCBwdWJsaWM6CiAgICAgCiAgICAgYm9vbCBzaG91bGRVc2VEb3VibGVGb3JtYXRBY2Nv
cmRpbmdUb1ZvdGUoKQogICAgIHsKKyAgICAgICAgLy8gV2UgZG9uJ3Qgc3VwcG9ydCB0aGlzIGZh
Y2lsaXR5IGZvciBhcmd1bWVudHMsIHlldC4KICAgICAgICAgLy8gRklYTUU6IG1ha2UgdGhpcyB3
b3JrIGZvciBhcmd1bWVudHMuCi0gICAgICAgIHJldHVybiAhb3BlcmFuZElzQXJndW1lbnQob3Bl
cmFuZCgpKSAmJiAoKGlzTnVtYmVyUHJlZGljdGlvbihwcmVkaWN0aW9uKCkpICYmIGRvdWJsZVZv
dGVSYXRpbygpID49IE9wdGlvbnM6OmRvdWJsZVZvdGVSYXRpb0ZvckRvdWJsZUZvcm1hdCkgfHwg
aXNEb3VibGVQcmVkaWN0aW9uKHByZWRpY3Rpb24oKSkpOworICAgICAgICBpZiAob3BlcmFuZElz
QXJndW1lbnQob3BlcmFuZCgpKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAg
CisgICAgICAgIC8vIElmIHRoZSB2YXJpYWJsZSBpcyBub3QgYSBudW1iZXIgcHJlZGljdGlvbiwg
dGhlbiB0aGlzIGRvZXNuJ3QKKyAgICAgICAgLy8gbWFrZSBhbnkgc2Vuc2UuCisgICAgICAgIGlm
ICghaXNOdW1iZXJQcmVkaWN0aW9uKHByZWRpY3Rpb24oKSkpCisgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgICAgIAorICAgICAgICAvLyBJZiB0aGUgdmFyaWFibGUgaXMgcHJlZGljdGVk
IHRvIGhvbGQgb25seSBkb3VibGVzLCB0aGVuIGl0J3MgYQorICAgICAgICAvLyBuby1icmFpbmVy
OiBpdCBzaG91bGQgYmUgZm9ybWF0dGVkIGFzIGEgZG91YmxlLgorICAgICAgICBpZiAoaXNEb3Vi
bGVQcmVkaWN0aW9uKHByZWRpY3Rpb24oKSkpCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAg
ICAgICAgCisgICAgICAgIC8vIElmIHRoZSB2YXJpYWJsZSBpcyBrbm93biB0byBiZSB1c2VkIGFz
IGFuIGludGVnZXIsIHRoZW4gYmUgc2FmZSAtCisgICAgICAgIC8vIGRvbid0IGZvcmNlIGl0IHRv
IGJlIGEgZG91YmxlLgorICAgICAgICBpZiAoZmxhZ3MoKSAmIChOb2RlRXNjYXBlc0FzSW50IHwg
Tm9kZVVzZWRBc0ludCkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIAorICAg
ICAgICAvLyBJZiB0aGUgdmFyaWFibGUgaGFzIGJlZW4gdm90ZWQgdG8gYmVjb21lIGEgZG91Ymxl
LCB0aGVuIG1ha2UgaXQgYQorICAgICAgICAvLyBkb3VibGUuCisgICAgICAgIGlmIChkb3VibGVW
b3RlUmF0aW8oKSA+PSBPcHRpb25zOjpkb3VibGVWb3RlUmF0aW9Gb3JEb3VibGVGb3JtYXQpCisg
ICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgCisgICAgICAgIHJldHVybiBmYWxzZTsK
ICAgICB9CiAgICAgCiAgICAgYm9vbCBzaG91bGRVc2VEb3VibGVGb3JtYXQoKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>133431</attachid>
            <date>2012-03-22 22:25:40 -0700</date>
            <delta_ts>2012-03-23 16:15:06 -0700</delta_ts>
            <desc>the patch</desc>
            <filename>fixdoublevote_patch_2.diff</filename>
            <type>text/plain</type>
            <size>34336</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIu
Y3BwCShyZXZpc2lvbiAxMTE3OTcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5
dGVDb2RlUGFyc2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTkzLDEwICs5OTMsNiBAQCB2b2lk
IEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVDYWxsKEludGVycHJlCiAgICAgTm9kZUluZGV4IGNhbGxU
YXJnZXQgPSBnZXQoY3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZCk7CiAgICAgZW51bSB7
IENvbnN0YW50RnVuY3Rpb24sIExpbmtlZEZ1bmN0aW9uLCBVbmtub3duRnVuY3Rpb24gfSBjYWxs
VHlwZTsKICAgICAgICAgICAgIAotI2lmIERGR19FTkFCTEUoREVCVUdfVkVSQk9TRSkKLSAgICBk
YXRhTG9nKCJTbG93IGNhc2UgY291bnQgZm9yIGNhbGwgYXQgQCV6dSBiYyMldTogJXUvJXU7IGV4
aXQgcHJvZmlsZTogJWQuXG4iLCBtX2dyYXBoLnNpemUoKSwgbV9jdXJyZW50SW5kZXgsIG1faW5s
aW5lU3RhY2tUb3AtPm1fcHJvZmlsZWRCbG9jay0+cmFyZUNhc2VQcm9maWxlRm9yQnl0ZWNvZGVP
ZmZzZXQobV9jdXJyZW50SW5kZXgpLT5tX2NvdW50ZXIsIG1faW5saW5lU3RhY2tUb3AtPm1fcHJv
ZmlsZWRCbG9jay0+ZXhlY3V0aW9uRW50cnlDb3VudCgpLCBtX2lubGluZVN0YWNrVG9wLT5tX2V4
aXRQcm9maWxlLmhhc0V4aXRTaXRlKG1fY3VycmVudEluZGV4LCBCYWRDYWNoZSkpOwotI2VuZGlm
Ci0gICAgCiAgICAgQ2FsbExpbmtTdGF0dXMgY2FsbExpbmtTdGF0dXMgPSBDYWxsTGlua1N0YXR1
czo6Y29tcHV0ZUZvcigKICAgICAgICAgbV9pbmxpbmVTdGFja1RvcC0+bV9wcm9maWxlZEJsb2Nr
LCBtX2N1cnJlbnRJbmRleCk7CiAgICAgCkBAIC0xODc5LDEwICsxODc1LDYgQEAgYm9vbCBCeXRl
Q29kZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNpZ25lZAogICAgICAgICAgICAgR2V0QnlJZFN0YXR1
cyBnZXRCeUlkU3RhdHVzID0gR2V0QnlJZFN0YXR1czo6Y29tcHV0ZUZvcigKICAgICAgICAgICAg
ICAgICBtX2lubGluZVN0YWNrVG9wLT5tX3Byb2ZpbGVkQmxvY2ssIG1fY3VycmVudEluZGV4LCBp
ZGVudGlmaWVyKTsKICAgICAgICAgICAgIAotI2lmIERGR19FTkFCTEUoREVCVUdfVkVSQk9TRSkK
LSAgICAgICAgICAgIGRhdGFMb2coIlNsb3cgY2FzZSBjb3VudCBmb3IgR2V0QnlJZCBAJXp1IGJj
IyV1OiAldTsgZXhpdCBwcm9maWxlOiAlZFxuIiwgbV9ncmFwaC5zaXplKCksIG1fY3VycmVudElu
ZGV4LCBtX2lubGluZVN0YWNrVG9wLT5tX3Byb2ZpbGVkQmxvY2stPnJhcmVDYXNlUHJvZmlsZUZv
ckJ5dGVjb2RlT2Zmc2V0KG1fY3VycmVudEluZGV4KS0+bV9jb3VudGVyLCBtX2lubGluZVN0YWNr
VG9wLT5tX2V4aXRQcm9maWxlLmhhc0V4aXRTaXRlKG1fY3VycmVudEluZGV4LCBCYWRDYWNoZSkp
OwotI2VuZGlmCi0gICAgICAgICAgICAKICAgICAgICAgICAgIGlmIChnZXRCeUlkU3RhdHVzLmlz
U2ltcGxlRGlyZWN0KCkKICAgICAgICAgICAgICAgICAmJiAhbV9pbmxpbmVTdGFja1RvcC0+bV9l
eGl0UHJvZmlsZS5oYXNFeGl0U2l0ZShtX2N1cnJlbnRJbmRleCwgQmFkQ2FjaGUpKSB7CiAgICAg
ICAgICAgICAgICAgQVNTRVJUKGdldEJ5SWRTdGF0dXMuc3RydWN0dXJlU2V0KCkuc2l6ZSgpKTsK
QEAgLTE5MjEsMTAgKzE5MTMsNiBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKHVu
c2lnbmVkCiAgICAgICAgICAgICAKICAgICAgICAgICAgIGJvb2wgaGFzRXhpdFNpdGUgPSBtX2lu
bGluZVN0YWNrVG9wLT5tX2V4aXRQcm9maWxlLmhhc0V4aXRTaXRlKG1fY3VycmVudEluZGV4LCBC
YWRDYWNoZSk7CiAgICAgICAgICAgICAKLSNpZiBERkdfRU5BQkxFKERFQlVHX1ZFUkJPU0UpCi0g
ICAgICAgICAgICBkYXRhTG9nKCJTbG93IGNhc2UgY291bnQgZm9yIFB1dEJ5SWQgQCV6dSBiYyMl
dTogJXU7IGV4aXQgcHJvZmlsZTogJWRcbiIsIG1fZ3JhcGguc2l6ZSgpLCBtX2N1cnJlbnRJbmRl
eCwgbV9pbmxpbmVTdGFja1RvcC0+bV9wcm9maWxlZEJsb2NrLT5yYXJlQ2FzZVByb2ZpbGVGb3JC
eXRlY29kZU9mZnNldChtX2N1cnJlbnRJbmRleCktPm1fY291bnRlciwgbV9pbmxpbmVTdGFja1Rv
cC0+bV9leGl0UHJvZmlsZS5oYXNFeGl0U2l0ZShtX2N1cnJlbnRJbmRleCwgQmFkQ2FjaGUpKTsK
LSNlbmRpZiAgICAgICAgICAgIAotCiAgICAgICAgICAgICBpZiAoIWhhc0V4aXRTaXRlICYmIHB1
dEJ5SWRTdGF0dXMuaXNTaW1wbGVSZXBsYWNlKCkpIHsKICAgICAgICAgICAgICAgICBhZGRUb0dy
YXBoKENoZWNrU3RydWN0dXJlLCBPcEluZm8obV9ncmFwaC5hZGRTdHJ1Y3R1cmVTZXQocHV0QnlJ
ZFN0YXR1cy5vbGRTdHJ1Y3R1cmUoKSkpLCBiYXNlKTsKICAgICAgICAgICAgICAgICBhZGRUb0dy
YXBoKFB1dEJ5T2Zmc2V0LCBPcEluZm8obV9ncmFwaC5tX3N0b3JhZ2VBY2Nlc3NEYXRhLnNpemUo
KSksIGJhc2UsIGFkZFRvR3JhcGgoR2V0UHJvcGVydHlTdG9yYWdlLCBiYXNlKSwgdmFsdWUpOwpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5jcHAJKHJldmlzaW9uIDExMTc5
NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC04NCwxMyArODQsMTMgQEAgc3RhdGljIHZvaWQgcHJpbnRXaGl0ZVNwYWNlKHVuc2ln
bmVkIGFtbwogICAgICAgICBkYXRhTG9nKCIgIik7CiB9CiAKLXZvaWQgR3JhcGg6OmR1bXBDb2Rl
T3JpZ2luKE5vZGVJbmRleCBub2RlSW5kZXgpCit2b2lkIEdyYXBoOjpkdW1wQ29kZU9yaWdpbihO
b2RlSW5kZXggcHJldk5vZGVJbmRleCwgTm9kZUluZGV4IG5vZGVJbmRleCkKIHsKLSAgICBpZiAo
IW5vZGVJbmRleCkKKyAgICBpZiAocHJldk5vZGVJbmRleCA9PSBOb05vZGUpCiAgICAgICAgIHJl
dHVybjsKICAgICAKICAgICBOb2RlJiBjdXJyZW50Tm9kZSA9IGF0KG5vZGVJbmRleCk7Ci0gICAg
Tm9kZSYgcHJldmlvdXNOb2RlID0gYXQobm9kZUluZGV4IC0gMSk7CisgICAgTm9kZSYgcHJldmlv
dXNOb2RlID0gYXQocHJldk5vZGVJbmRleCk7CiAgICAgaWYgKHByZXZpb3VzTm9kZS5jb2RlT3Jp
Z2luLmlubGluZUNhbGxGcmFtZSA9PSBjdXJyZW50Tm9kZS5jb2RlT3JpZ2luLmlubGluZUNhbGxG
cmFtZSkKICAgICAgICAgcmV0dXJuOwogICAgIApAQCAtMTMxLDcgKzEzMSw2IEBAIHZvaWQgR3Jh
cGg6OmR1bXAoTm9kZUluZGV4IG5vZGVJbmRleCkKICAgICAgICAgLS1yZWZDb3VudDsKICAgICB9
CiAgICAgCi0gICAgZHVtcENvZGVPcmlnaW4obm9kZUluZGV4KTsKICAgICBwcmludFdoaXRlU3Bh
Y2UoKG5vZGUuY29kZU9yaWdpbi5pbmxpbmVEZXB0aCgpIC0gMSkgKiAyKTsKIAogICAgIC8vIEV4
YW1wbGUvZXhwbGFuYXRpb24gb2YgZGF0YWZsb3cgZHVtcCBvdXRwdXQKQEAgLTI2Myw2ICsyNjIs
NyBAQCB2b2lkIEdyYXBoOjpkdW1wKE5vZGVJbmRleCBub2RlSW5kZXgpCiAKIHZvaWQgR3JhcGg6
OmR1bXAoKQogeworICAgIE5vZGVJbmRleCBsYXN0Tm9kZUluZGV4ID0gTm9Ob2RlOwogICAgIGZv
ciAoc2l6ZV90IGIgPSAwOyBiIDwgbV9ibG9ja3Muc2l6ZSgpOyArK2IpIHsKICAgICAgICAgQmFz
aWNCbG9jayogYmxvY2sgPSBtX2Jsb2Nrc1tiXS5nZXQoKTsKICAgICAgICAgZGF0YUxvZygiQmxv
Y2sgIyV1IChiYyMldSk6ICVzJXNcbiIsIChpbnQpYiwgYmxvY2stPmJ5dGVjb2RlQmVnaW4sIGJs
b2NrLT5pc1JlYWNoYWJsZSA/ICIiIDogIiAoc2tpcHBlZCkiLCBibG9jay0+aXNPU1JUYXJnZXQg
PyAiIChPU1IgdGFyZ2V0KSIgOiAiIik7CkBAIC0yODEsOCArMjgxLDExIEBAIHZvaWQgR3JhcGg6
OmR1bXAoKQogICAgICAgICBkYXRhTG9nKCIgIHZhciBsaW5rczogIik7CiAgICAgICAgIGR1bXBP
cGVyYW5kcyhibG9jay0+dmFyaWFibGVzQXRIZWFkLCBXVEY6OmRhdGFGaWxlKCkpOwogICAgICAg
ICBkYXRhTG9nKCJcbiIpOwotICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGJsb2NrLT5z
aXplKCk7ICsraSkKKyAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBibG9jay0+c2l6ZSgp
OyArK2kpIHsKKyAgICAgICAgICAgIGR1bXBDb2RlT3JpZ2luKGxhc3ROb2RlSW5kZXgsIGJsb2Nr
LT5hdChpKSk7CiAgICAgICAgICAgICBkdW1wKGJsb2NrLT5hdChpKSk7CisgICAgICAgICAgICBs
YXN0Tm9kZUluZGV4ID0gYmxvY2stPmF0KGkpOworICAgICAgICB9CiAgICAgICAgIGRhdGFMb2co
IiAgdmFycyBhZnRlcjogIik7CiAgICAgICAgIGlmIChibG9jay0+Y2ZhSGFzVmlzaXRlZCkKICAg
ICAgICAgICAgIGR1bXBPcGVyYW5kcyhibG9jay0+dmFsdWVzQXRUYWlsLCBXVEY6OmRhdGFGaWxl
KCkpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguaAkocmV2aXNpb24gMTEx
Nzk3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5oCSh3b3JraW5nIGNv
cHkpCkBAIC0xNDMsNyArMTQzLDcgQEAgcHVibGljOgogCiAgICAgLy8gRHVtcCB0aGUgY29kZSBv
cmlnaW4gb2YgdGhlIGdpdmVuIG5vZGUgYXMgYSBkaWZmIGZyb20gdGhlIGNvZGUgb3JpZ2luIG9m
IHRoZQogICAgIC8vIHByZWNlZGluZyBub2RlLgotICAgIHZvaWQgZHVtcENvZGVPcmlnaW4oTm9k
ZUluZGV4KTsKKyAgICB2b2lkIGR1bXBDb2RlT3JpZ2luKE5vZGVJbmRleCwgTm9kZUluZGV4KTsK
IAogICAgIEJsb2NrSW5kZXggYmxvY2tJbmRleEZvckJ5dGVjb2RlT2Zmc2V0KFZlY3RvcjxCbG9j
a0luZGV4PiYgYmxvY2tzLCB1bnNpZ25lZCBieXRlY29kZUJlZ2luKTsKIApJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlRmxhZ3MuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZUZsYWdzLmNwcAkocmV2aXNpb24gMTExNzk3KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlRmxhZ3MuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0xMjMsNiArMTIzLDIwIEBAIGNvbnN0IGNoYXIqIG5vZGVGbGFnc0FzU3RyaW5nKE5v
ZGVGbGFncyAKICAgICAgICAgaGFzUHJpbnRlZCA9IHRydWU7CiAgICAgfQogICAgIAorICAgIGlm
IChmbGFncyAmIE5vZGVFc2NhcGVzQXNJbnQpIHsKKyAgICAgICAgaWYgKGhhc1ByaW50ZWQpCisg
ICAgICAgICAgICBwdHIuc3RyY2F0KCJ8Iik7CisgICAgICAgIHB0ci5zdHJjYXQoIkVzY2FwZXNB
c0ludCIpOworICAgICAgICBoYXNQcmludGVkID0gdHJ1ZTsKKyAgICB9CisgICAgCisgICAgaWYg
KGZsYWdzICYgTm9kZVVzZWRBc0ludCkgeworICAgICAgICBpZiAoaGFzUHJpbnRlZCkKKyAgICAg
ICAgICAgIHB0ci5zdHJjYXQoInwiKTsKKyAgICAgICAgcHRyLnN0cmNhdCgiVXNlZEFzSW50Iik7
CisgICAgICAgIGhhc1ByaW50ZWQgPSB0cnVlOworICAgIH0KKyAgICAKICAgICAqcHRyKysgPSAw
OwogICAgIAogICAgIHJldHVybiBkZXNjcmlwdGlvbjsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHTm9kZUZsYWdzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdOb2RlRmxhZ3MuaAkocmV2aXNpb24gMTExNzk3KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdOb2RlRmxhZ3MuaAkod29ya2luZyBjb3B5KQpAQCAtMzYsMjMgKzM2
LDI5IEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKIAogLy8gRW50cmllcyBpbiB0
aGUgTm9kZVR5cGUgZW51bSAoYmVsb3cpIGFyZSBjb21wb3NlZCBvZiBhbiBpZCwgYSByZXN1bHQg
dHlwZSAocG9zc2libHkgbm9uZSkKIC8vIGFuZCBzb21lIGFkZGl0aW9uYWwgaW5mb3JtYXRpdmUg
ZmxhZ3MgKG11c3QgZ2VuZXJhdGUsIGlzIGNvbnN0YW50LCBldGMpLgotI2RlZmluZSBOb2RlUmVz
dWx0TWFzayAgICAgICAgICAgICAweEYKLSNkZWZpbmUgTm9kZVJlc3VsdEpTICAgICAgICAgICAg
ICAgMHgxCi0jZGVmaW5lIE5vZGVSZXN1bHROdW1iZXIgICAgICAgICAgIDB4MgotI2RlZmluZSBO
b2RlUmVzdWx0SW50MzIgICAgICAgICAgICAweDMKLSNkZWZpbmUgTm9kZVJlc3VsdEJvb2xlYW4g
ICAgICAgICAgMHg0Ci0jZGVmaW5lIE5vZGVSZXN1bHRTdG9yYWdlICAgICAgICAgIDB4NQotI2Rl
ZmluZSBOb2RlTXVzdEdlbmVyYXRlICAgICAgICAgIDB4MTAgLy8gc2V0IG9uIG5vZGVzIHRoYXQg
aGF2ZSBzaWRlIGVmZmVjdHMsIGFuZCBtYXkgbm90IHRyaXZpYWxseSBiZSByZW1vdmVkIGJ5IERD
RS4KLSNkZWZpbmUgTm9kZUhhc1ZhckFyZ3MgICAgICAgICAgICAweDIwCi0jZGVmaW5lIE5vZGVD
bG9iYmVyc1dvcmxkICAgICAgICAgMHg0MAotI2RlZmluZSBOb2RlTWlnaHRDbG9iYmVyICAgICAg
ICAgIDB4ODAKLSNkZWZpbmUgTm9kZUJhY2tQcm9wTWFzayAgICAgICAgIDB4MzAwCi0jZGVmaW5l
IE5vZGVVc2VCb3R0b20gICAgICAgICAgICAweDAwMAotI2RlZmluZSBOb2RlVXNlZEFzTnVtYmVy
ICAgICAgICAgMHgxMDAKLSNkZWZpbmUgTm9kZU5lZWRzTmVnWmVybyAgICAgICAgIDB4MjAwCi0j
ZGVmaW5lIE5vZGVCZWhhdmlvck1hc2sgICAgICAgICAweEMwMAotI2RlZmluZSBOb2RlTWF5T3Zl
cmZsb3cgICAgICAgICAgMHg0MDAKLSNkZWZpbmUgTm9kZU1heU5lZ1plcm8gICAgICAgICAgIDB4
ODAwCisjZGVmaW5lIE5vZGVSZXN1bHRNYXNrICAgICAgICAgICAgICAweEYKKyNkZWZpbmUgTm9k
ZVJlc3VsdEpTICAgICAgICAgICAgICAgIDB4MQorI2RlZmluZSBOb2RlUmVzdWx0TnVtYmVyICAg
ICAgICAgICAgMHgyCisjZGVmaW5lIE5vZGVSZXN1bHRJbnQzMiAgICAgICAgICAgICAweDMKKyNk
ZWZpbmUgTm9kZVJlc3VsdEJvb2xlYW4gICAgICAgICAgIDB4NAorI2RlZmluZSBOb2RlUmVzdWx0
U3RvcmFnZSAgICAgICAgICAgMHg1CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAor
I2RlZmluZSBOb2RlTXVzdEdlbmVyYXRlICAgICAgICAgICAweDEwIC8vIHNldCBvbiBub2RlcyB0
aGF0IGhhdmUgc2lkZSBlZmZlY3RzLCBhbmQgbWF5IG5vdCB0cml2aWFsbHkgYmUgcmVtb3ZlZCBi
eSBEQ0UuCisjZGVmaW5lIE5vZGVIYXNWYXJBcmdzICAgICAgICAgICAgIDB4MjAKKyNkZWZpbmUg
Tm9kZUNsb2JiZXJzV29ybGQgICAgICAgICAgMHg0MAorI2RlZmluZSBOb2RlTWlnaHRDbG9iYmVy
ICAgICAgICAgICAweDgwCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorI2RlZmlu
ZSBOb2RlQmVoYXZpb3JNYXNrICAgICAgICAgIDB4MzAwCisjZGVmaW5lIE5vZGVNYXlPdmVyZmxv
dyAgICAgICAgICAgMHgxMDAKKyNkZWZpbmUgTm9kZU1heU5lZ1plcm8gICAgICAgICAgICAweDIw
MAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyNkZWZpbmUgTm9kZUJhY2tQcm9w
TWFzayAgICAgICAgIDB4M0MwMAorI2RlZmluZSBOb2RlVXNlQm90dG9tICAgICAgICAgICAgIDB4
MDAwCisjZGVmaW5lIE5vZGVVc2VkQXNOdW1iZXIgICAgICAgICAgMHg0MDAgLy8gVGhlIHJlc3Vs
dCBvZiB0aGlzIGNvbXB1dGF0aW9uIG1heSBiZSB1c2VkIGluIGEgY29udGV4dCB0aGF0IG9ic2Vy
dmVzIGZyYWN0aW9uYWwgcmVzdWx0cy4KKyNkZWZpbmUgTm9kZU5lZWRzTmVnWmVybyAgICAgICAg
ICAweDgwMCAvLyBUaGUgcmVzdWx0IG9mIHRoaXMgY29tcHV0YXRpb24gbWF5IGJlIHVzZWQgaW4g
YSBjb250ZXh0IHRoYXQgb2JzZXJ2ZXMgLTAuCisjZGVmaW5lIE5vZGVVc2VkQXNWYWx1ZSAgICAg
ICAgICAgKE5vZGVVc2VkQXNOdW1iZXIgfCBOb2RlTmVlZHNOZWdaZXJvKQorI2RlZmluZSBOb2Rl
VXNlZEFzSW50ICAgICAgICAgICAgMHgxMDAwIC8vIFRoZSByZXN1bHQgb2YgdGhpcyBjb21wdXRh
dGlvbiBpcyBrbm93biB0byBiZSB1c2VkIGluIGEgY29udGV4dCB0aGF0IHByZWZlcnMsIGJ1dCBk
b2VzIG5vdCByZXF1aXJlLCBpbnRlZ2VyIHZhbHVlcy4KKyNkZWZpbmUgTm9kZUVzY2FwZXNBc0lu
dCAgICAgICAgIDB4MjAwMCAvLyBUaGUgbm9kZSB3aWxsIHByb2R1Y2UgaW50ZWdlcnMgYW5kIHRo
b3NlIGludGVnZXJzIGFyZSBrbm93biB0byBlc2NhcGU7CiAKIHR5cGVkZWYgdWludDE2X3QgTm9k
ZUZsYWdzOwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Q
cm9wYWdhdGlvblBoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcAkocmV2aXNpb24gMTExNzk3KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFz
ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ1LDI1ICs0NSwxOCBAQCBwdWJsaWM6CiAjaWYgREZH
X0VOQUJMRShERUJVR19QUk9QQUdBVElPTl9WRVJCT1NFKQogICAgICAgICBtX2NvdW50ID0gMDsK
ICNlbmRpZgotICAgICAgICAvLyBUd28gc3RhZ2UgcHJvY2VzczogZmlyc3QgcHJvcGFnYXRlIHBy
ZWRpY3Rpb25zLCB0aGVuIHByb3BhZ2F0ZSB3aGlsZSBkb2luZyBkb3VibGUgdm90aW5nLgorICAg
ICAgICAvLyAxKSBwcm9wYWdhdGUgcHJlZGljdGlvbnMKKworICAgICAgICBwcm9wYWdhdGVVbnRp
bEZpeHBvaW50KCk7CiAgICAgICAgIAotICAgICAgICBkbyB7Ci0gICAgICAgICAgICBtX2NoYW5n
ZWQgPSBmYWxzZTsKLSAgICAgICAgICAgIAotICAgICAgICAgICAgLy8gRm9yd2FyZCBwcm9wYWdh
dGlvbiBpcyBuZWFyLW9wdGltYWwgZm9yIGJvdGggdG9wb2xvZ2ljYWxseS1zb3J0ZWQgYW5kCi0g
ICAgICAgICAgICAvLyBERlMtc29ydGVkIGNvZGUuCi0gICAgICAgICAgICBwcm9wYWdhdGVGb3J3
YXJkKCk7Ci0gICAgICAgICAgICBpZiAoIW1fY2hhbmdlZCkKLSAgICAgICAgICAgICAgICBicmVh
azsKLSAgICAgICAgICAgIAotICAgICAgICAgICAgLy8gQmFja3dhcmQgcHJvcGFnYXRpb24gcmVk
dWNlcyB0aGUgbGlrZWxpaG9vZCB0aGF0IHBhdGhvbG9naWNhbCBjb2RlIHdpbGwKLSAgICAgICAg
ICAgIC8vIGNhdXNlIHNsb3duZXNzLiBMb29wcyAoZXNwZWNpYWxseSBuZXN0ZWQgb25lcykgcmVz
ZW1ibGUgYmFja3dhcmQgZmxvdy4KLSAgICAgICAgICAgIC8vIFRoaXMgcGFzcyBjYXB0dXJlcyB0
d28gY2FzZXM6ICgxKSBpdCBkZXRlY3RzIGlmIHRoZSBmb3J3YXJkIGZpeHBvaW50Ci0gICAgICAg
ICAgICAvLyBmb3VuZCBhIHNvdW5kIHNvbHV0aW9uIGFuZCAoMikgc2hvcnQtY2lyY3VpdHMgYmFj
a3dhcmQgZmxvdy4KLSAgICAgICAgICAgIG1fY2hhbmdlZCA9IGZhbHNlOwotICAgICAgICAgICAg
cHJvcGFnYXRlQmFja3dhcmQoKTsKLSAgICAgICAgfSB3aGlsZSAobV9jaGFuZ2VkKTsKKyAgICAg
ICAgLy8gMikgZGV0ZXJtaW5lIHZhcmlhYmxlcyB0aGF0IGVzY2FwZSBhbmQgYXJlIGludGVnZXJz
LiB0aGlzIHdpbGwgYmxvY2sKKyAgICAgICAgLy8gICAgZG91YmxlIHZvdGluZy4KKworICAgICAg
ICBpZiAobm90aWNlRXNjYXBpbmdJbnRlZ2VycygpKQorICAgICAgICAgICAgcHJvcGFnYXRlVW50
aWxGaXhwb2ludCgpOwogICAgICAgICAKKyAgICAgICAgLy8gMykgcmVwcm9wYWdhdGUgcHJlZGlj
dGlvbnMgd2hpbGUgZG9pbmcgZG91YmxlIHZvdGluZy4KKwogICAgICAgICBkbyB7CiAgICAgICAg
ICAgICBtX2NoYW5nZWQgPSBmYWxzZTsKICAgICAgICAgICAgIGRvUm91bmRPZkRvdWJsZVZvdGlu
ZygpOwpAQCAtNzYsNiArNjksOCBAQCBwdWJsaWM6CiAgICAgICAgICAgICBwcm9wYWdhdGVCYWNr
d2FyZCgpOwogICAgICAgICB9IHdoaWxlIChtX2NoYW5nZWQpOwogICAgICAgICAKKyAgICAgICAg
Ly8gNCkgbWFrZSBjaGFuZ2VzIHRvIHRoZSBncmFwaCBiYXNlZCBvbiBwcmVkaWN0aW9ucworICAg
ICAgICAKICAgICAgICAgZml4dXAoKTsKICAgICB9CiAgICAgCkBAIC0xMjEsMTQgKzExNiwxMiBA
QCBwcml2YXRlOgogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAKICAgICAgICAgTm9kZVR5
cGUgb3AgPSBub2RlLm9wKCk7Ci0gICAgICAgIE5vZGVGbGFncyBmbGFncyA9IG5vZGUuZmxhZ3Mo
KTsKKyAgICAgICAgTm9kZUZsYWdzIGZsYWdzID0gbm9kZS5mbGFncygpICYgTm9kZUJhY2tQcm9w
TWFzazsKIAogI2lmIERGR19FTkFCTEUoREVCVUdfUFJPUEFHQVRJT05fVkVSQk9TRSkKICAgICAg
ICAgZGF0YUxvZygiICAgJXMgQCV1OiAlcyAiLCBHcmFwaDo6b3BOYW1lKG9wKSwgbV9jb21waWxl
SW5kZXgsIG5vZGVGbGFnc0FzU3RyaW5nKGZsYWdzKSk7CiAjZW5kaWYKICAgICAgICAgCi0gICAg
ICAgIGZsYWdzICY9IE5vZGVCYWNrUHJvcE1hc2s7Ci0gICAgICAgIAogICAgICAgICBib29sIGNo
YW5nZWQgPSBmYWxzZTsKICAgICAgICAgCiAgICAgICAgIHN3aXRjaCAob3ApIHsKQEAgLTE1OCw3
ICsxNTEsNyBAQCBwcml2YXRlOgogICAgICAgICBjYXNlIEZsdXNoOiB7CiAgICAgICAgICAgICAv
LyBNYWtlIHN1cmUgdGhhdCB0aGUgYW5hbHlzaXMga25vd3MgdGhhdCBmbHVzaGVkIGxvY2FscyBl
c2NhcGUuCiAgICAgICAgICAgICBWYXJpYWJsZUFjY2Vzc0RhdGEqIHZhcmlhYmxlQWNjZXNzRGF0
YSA9IG5vZGUudmFyaWFibGVBY2Nlc3NEYXRhKCk7Ci0gICAgICAgICAgICB2YXJpYWJsZUFjY2Vz
c0RhdGEtPm1lcmdlRmxhZ3MoTm9kZVVzZWRBc051bWJlciB8IE5vZGVOZWVkc05lZ1plcm8pOwor
ICAgICAgICAgICAgdmFyaWFibGVBY2Nlc3NEYXRhLT5tZXJnZUZsYWdzKE5vZGVVc2VkQXNWYWx1
ZSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICAgICAgCkBAIC0xNjcs
MjIgKzE2MCwzNSBAQCBwcml2YXRlOgogICAgICAgICBjYXNlIEJpdFhvcjoKICAgICAgICAgY2Fz
ZSBCaXRSU2hpZnQ6CiAgICAgICAgIGNhc2UgQml0TFNoaWZ0OgotICAgICAgICBjYXNlIEJpdFVS
U2hpZnQ6CisgICAgICAgIGNhc2UgQml0VVJTaGlmdDogeworICAgICAgICAgICAgY2hhbmdlZCB8
PSBzZXRQcmVkaWN0aW9uKFByZWRpY3RJbnQzMik7CisgICAgICAgICAgICBmbGFncyB8PSBOb2Rl
VXNlZEFzSW50OworICAgICAgICAgICAgZmxhZ3MgJj0gfihOb2RlVXNlZEFzTnVtYmVyIHwgTm9k
ZU5lZWRzTmVnWmVybyk7CisgICAgICAgICAgICBjaGFuZ2VkIHw9IG1fZ3JhcGhbbm9kZS5jaGls
ZDEoKV0ubWVyZ2VGbGFncyhmbGFncyk7CisgICAgICAgICAgICBjaGFuZ2VkIHw9IG1fZ3JhcGhb
bm9kZS5jaGlsZDIoKV0ubWVyZ2VGbGFncyhmbGFncyk7CisgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgfQorICAgICAgICAgICAgCiAgICAgICAgIGNhc2UgVmFsdWVUb0ludDMyOiB7CiAgICAg
ICAgICAgICBjaGFuZ2VkIHw9IHNldFByZWRpY3Rpb24oUHJlZGljdEludDMyKTsKKyAgICAgICAg
ICAgIGZsYWdzIHw9IE5vZGVVc2VkQXNJbnQ7CisgICAgICAgICAgICBmbGFncyAmPSB+KE5vZGVV
c2VkQXNOdW1iZXIgfCBOb2RlTmVlZHNOZWdaZXJvKTsKKyAgICAgICAgICAgIGNoYW5nZWQgfD0g
bV9ncmFwaFtub2RlLmNoaWxkMSgpXS5tZXJnZUZsYWdzKGZsYWdzKTsKICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICB9CiAgICAgICAgICAgICAKICAgICAgICAgY2FzZSBBcnJheVBvcDogewog
ICAgICAgICAgICAgaWYgKG5vZGUuZ2V0SGVhcFByZWRpY3Rpb24oKSkKICAgICAgICAgICAgICAg
ICBjaGFuZ2VkIHw9IG1lcmdlUHJlZGljdGlvbihub2RlLmdldEhlYXBQcmVkaWN0aW9uKCkpOwor
ICAgICAgICAgICAgbWVyZ2VEZWZhdWx0RmxhZ3Mobm9kZSk7CiAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgfQogCiAgICAgICAgIGNhc2UgQXJyYXlQdXNoOiB7CiAgICAgICAgICAgICBpZiAo
bm9kZS5nZXRIZWFwUHJlZGljdGlvbigpKQogICAgICAgICAgICAgICAgIGNoYW5nZWQgfD0gbWVy
Z2VQcmVkaWN0aW9uKG5vZGUuZ2V0SGVhcFByZWRpY3Rpb24oKSk7Ci0gICAgICAgICAgICBjaGFu
Z2VkIHw9IG1lcmdlRGVmYXVsdEFyaXRoRmxhZ3Mobm9kZSwgZmxhZ3MpOworICAgICAgICAgICAg
Y2hhbmdlZCB8PSBtX2dyYXBoW25vZGUuY2hpbGQxKCldLm1lcmdlRmxhZ3MoTm9kZVVzZWRBc1Zh
bHVlKTsKKyAgICAgICAgICAgIGNoYW5nZWQgfD0gbV9ncmFwaFtub2RlLmNoaWxkMigpXS5tZXJn
ZUZsYWdzKE5vZGVVc2VkQXNWYWx1ZSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQog
CkBAIC0xOTAsMTMgKzE5NiwxNCBAQCBwcml2YXRlOgogICAgICAgICBjYXNlIFJlZ0V4cFRlc3Q6
IHsKICAgICAgICAgICAgIGlmIChub2RlLmdldEhlYXBQcmVkaWN0aW9uKCkpCiAgICAgICAgICAg
ICAgICAgY2hhbmdlZCB8PSBtZXJnZVByZWRpY3Rpb24obm9kZS5nZXRIZWFwUHJlZGljdGlvbigp
KTsKLSAgICAgICAgICAgIGNoYW5nZWQgfD0gbWVyZ2VEZWZhdWx0QXJpdGhGbGFncyhub2RlLCBm
bGFncyk7CisgICAgICAgICAgICBtZXJnZURlZmF1bHRGbGFncyhub2RlKTsKICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICB9CiAKICAgICAgICAgY2FzZSBTdHJpbmdDaGFyQ29kZUF0OiB7CiAg
ICAgICAgICAgICBjaGFuZ2VkIHw9IG1lcmdlUHJlZGljdGlvbihQcmVkaWN0SW50MzIpOwotICAg
ICAgICAgICAgY2hhbmdlZCB8PSBtZXJnZURlZmF1bHRBcml0aEZsYWdzKG5vZGUsIGZsYWdzKTsK
KyAgICAgICAgICAgIGNoYW5nZWQgfD0gbV9ncmFwaFtub2RlLmNoaWxkMSgpXS5tZXJnZUZsYWdz
KE5vZGVVc2VkQXNWYWx1ZSk7CisgICAgICAgICAgICBjaGFuZ2VkIHw9IG1fZ3JhcGhbbm9kZS5j
aGlsZDIoKV0ubWVyZ2VGbGFncyhOb2RlVXNlZEFzTnVtYmVyIHwgTm9kZVVzZWRBc0ludCk7CiAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogCkBAIC0yMDUsMTMgKzIxMiwxNiBAQCBwcml2
YXRlOgogICAgICAgICAgICAgUHJlZGljdGVkVHlwZSByaWdodCA9IG1fZ3JhcGhbbm9kZS5jaGls
ZDIoKV0ucHJlZGljdGlvbigpOwogICAgICAgICAgICAgCiAgICAgICAgICAgICBpZiAobGVmdCAm
JiByaWdodCkgewotICAgICAgICAgICAgICAgIGlmIChpc0ludDMyUHJlZGljdGlvbihtZXJnZVBy
ZWRpY3Rpb25zKGxlZnQsIHJpZ2h0KSkgJiYgbm9kZUNhblNwZWN1bGF0ZUludGVnZXIobm9kZS5h
cml0aE5vZGVGbGFncygpKSkKKyAgICAgICAgICAgICAgICBpZiAoaXNJbnQzMlByZWRpY3Rpb24o
bWVyZ2VQcmVkaWN0aW9ucyhsZWZ0LCByaWdodCkpCisgICAgICAgICAgICAgICAgICAgICYmIG5v
ZGVDYW5TcGVjdWxhdGVJbnRlZ2VyKG5vZGUuYXJpdGhOb2RlRmxhZ3MoKSkpCiAgICAgICAgICAg
ICAgICAgICAgIGNoYW5nZWQgfD0gbWVyZ2VQcmVkaWN0aW9uKFByZWRpY3RJbnQzMik7CiAgICAg
ICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgICAgICBjaGFuZ2VkIHw9IG1lcmdlUHJl
ZGljdGlvbihQcmVkaWN0RG91YmxlKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIAotICAg
ICAgICAgICAgY2hhbmdlZCB8PSBtZXJnZURlZmF1bHRBcml0aEZsYWdzKG5vZGUsIGZsYWdzKTsK
KyAgICAgICAgICAgIGZsYWdzIHw9IE5vZGVVc2VkQXNWYWx1ZTsKKyAgICAgICAgICAgIGNoYW5n
ZWQgfD0gbV9ncmFwaFtub2RlLmNoaWxkMSgpXS5tZXJnZUZsYWdzKGZsYWdzKTsKKyAgICAgICAg
ICAgIGNoYW5nZWQgfD0gbV9ncmFwaFtub2RlLmNoaWxkMigpXS5tZXJnZUZsYWdzKGZsYWdzKTsK
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgICAgICAKQEAgLTMwNSw3ICsz
MTUsOCBAQCBwcml2YXRlOgogICAgICAgICAgICAgUHJlZGljdGVkVHlwZSByaWdodCA9IG1fZ3Jh
cGhbbm9kZS5jaGlsZDIoKV0ucHJlZGljdGlvbigpOwogICAgICAgICAgICAgCiAgICAgICAgICAg
ICBpZiAobGVmdCAmJiByaWdodCkgewotICAgICAgICAgICAgICAgIGlmIChpc0ludDMyUHJlZGlj
dGlvbihtZXJnZVByZWRpY3Rpb25zKGxlZnQsIHJpZ2h0KSkgJiYgbm9kZUNhblNwZWN1bGF0ZUlu
dGVnZXIobm9kZS5hcml0aE5vZGVGbGFncygpKSkKKyAgICAgICAgICAgICAgICBpZiAoaXNJbnQz
MlByZWRpY3Rpb24obWVyZ2VQcmVkaWN0aW9ucyhsZWZ0LCByaWdodCkpCisgICAgICAgICAgICAg
ICAgICAgICYmIG5vZGVDYW5TcGVjdWxhdGVJbnRlZ2VyKG5vZGUuYXJpdGhOb2RlRmxhZ3MoKSkp
CiAgICAgICAgICAgICAgICAgICAgIGNoYW5nZWQgfD0gbWVyZ2VQcmVkaWN0aW9uKFByZWRpY3RJ
bnQzMik7CiAgICAgICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgICAgICBjaGFuZ2Vk
IHw9IG1lcmdlUHJlZGljdGlvbihQcmVkaWN0RG91YmxlKTsKQEAgLTMyMyw3ICszMzQsOCBAQCBw
cml2YXRlOgogICAgICAgICAgICAgUHJlZGljdGVkVHlwZSByaWdodCA9IG1fZ3JhcGhbbm9kZS5j
aGlsZDIoKV0ucHJlZGljdGlvbigpOwogICAgICAgICAgICAgCiAgICAgICAgICAgICBpZiAobGVm
dCAmJiByaWdodCkgewotICAgICAgICAgICAgICAgIGlmIChpc0ludDMyUHJlZGljdGlvbihtZXJn
ZVByZWRpY3Rpb25zKGxlZnQsIHJpZ2h0KSkgJiYgbm9kZUNhblNwZWN1bGF0ZUludGVnZXIobm9k
ZS5hcml0aE5vZGVGbGFncygpKSkKKyAgICAgICAgICAgICAgICBpZiAoaXNJbnQzMlByZWRpY3Rp
b24obWVyZ2VQcmVkaWN0aW9ucyhsZWZ0LCByaWdodCkpCisgICAgICAgICAgICAgICAgICAgICYm
IG5vZGVDYW5TcGVjdWxhdGVJbnRlZ2VyKG5vZGUuYXJpdGhOb2RlRmxhZ3MoKSkpCiAgICAgICAg
ICAgICAgICAgICAgIGNoYW5nZWQgfD0gbWVyZ2VQcmVkaWN0aW9uKFByZWRpY3RJbnQzMik7CiAg
ICAgICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgICAgICBjaGFuZ2VkIHw9IG1lcmdl
UHJlZGljdGlvbihQcmVkaWN0RG91YmxlKTsKQEAgLTM0Miw3ICszNTQsNyBAQCBwcml2YXRlOgog
ICAgICAgICAgICAgCiAgICAgICAgIGNhc2UgQXJpdGhTcXJ0OiB7CiAgICAgICAgICAgICBjaGFu
Z2VkIHw9IHNldFByZWRpY3Rpb24oUHJlZGljdERvdWJsZSk7Ci0gICAgICAgICAgICBjaGFuZ2Vk
IHw9IG1lcmdlRGVmYXVsdEFyaXRoRmxhZ3Mobm9kZSwgZmxhZ3MpOworICAgICAgICAgICAgY2hh
bmdlZCB8PSBtX2dyYXBoW25vZGUuY2hpbGQxKCldLm1lcmdlRmxhZ3MoZmxhZ3MgfCBOb2RlVXNl
ZEFzVmFsdWUpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgICAgIApA
QCAtMzY5LDE0ICszODEsMTUgQEAgcHJpdmF0ZToKICAgICAgICAgY2FzZSBDb21wYXJlU3RyaWN0
RXE6CiAgICAgICAgIGNhc2UgSW5zdGFuY2VPZjogewogICAgICAgICAgICAgY2hhbmdlZCB8PSBz
ZXRQcmVkaWN0aW9uKFByZWRpY3RCb29sZWFuKTsKLSAgICAgICAgICAgIGNoYW5nZWQgfD0gbWVy
Z2VEZWZhdWx0QXJpdGhGbGFncyhub2RlLCBmbGFncyk7CisgICAgICAgICAgICBjaGFuZ2VkIHw9
IG1lcmdlRGVmYXVsdEZsYWdzKG5vZGUpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0K
ICAgICAgICAgICAgIAogICAgICAgICBjYXNlIEdldEJ5SWQ6IHsKICAgICAgICAgICAgIGlmIChu
b2RlLmdldEhlYXBQcmVkaWN0aW9uKCkpCiAgICAgICAgICAgICAgICAgY2hhbmdlZCB8PSBtZXJn
ZVByZWRpY3Rpb24obm9kZS5nZXRIZWFwUHJlZGljdGlvbigpKTsKLSAgICAgICAgICAgIGVsc2Ug
aWYgKGNvZGVCbG9jaygpLT5pZGVudGlmaWVyKG5vZGUuaWRlbnRpZmllck51bWJlcigpKSA9PSBn
bG9iYWxEYXRhKCkucHJvcGVydHlOYW1lcy0+bGVuZ3RoKSB7CisgICAgICAgICAgICBlbHNlIGlm
IChjb2RlQmxvY2soKS0+aWRlbnRpZmllcihub2RlLmlkZW50aWZpZXJOdW1iZXIoKSkKKyAgICAg
ICAgICAgICAgICAgICAgID09IGdsb2JhbERhdGEoKS5wcm9wZXJ0eU5hbWVzLT5sZW5ndGgpIHsK
ICAgICAgICAgICAgICAgICAvLyBJZiB0aGVyZSBpcyBubyBwcmVkaWN0aW9uIGZyb20gdmFsdWUg
cHJvZmlsZXMsIGNoZWNrIGlmIHdlIG1pZ2h0IGJlCiAgICAgICAgICAgICAgICAgLy8gYWJsZSB0
byBpbmZlciB0aGUgdHlwZSBvdXJzZWx2ZXMuCiAgICAgICAgICAgICAgICAgYm9vbCBpc0FycmF5
ID0gaXNBcnJheVByZWRpY3Rpb24obV9ncmFwaFtub2RlLmNoaWxkMSgpXS5wcmVkaWN0aW9uKCkp
OwpAQCAtMzkxLDQxICs0MDQsNDQgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICBib29sIGlz
VWludDMyQXJyYXkgPSBtX2dyYXBoW25vZGUuY2hpbGQxKCldLnNob3VsZFNwZWN1bGF0ZVVpbnQz
MkFycmF5KCk7CiAgICAgICAgICAgICAgICAgYm9vbCBpc0Zsb2F0MzJBcnJheSA9IG1fZ3JhcGhb
bm9kZS5jaGlsZDEoKV0uc2hvdWxkU3BlY3VsYXRlRmxvYXQzMkFycmF5KCk7CiAgICAgICAgICAg
ICAgICAgYm9vbCBpc0Zsb2F0NjRBcnJheSA9IG1fZ3JhcGhbbm9kZS5jaGlsZDEoKV0uc2hvdWxk
U3BlY3VsYXRlRmxvYXQ2NEFycmF5KCk7Ci0gICAgICAgICAgICAgICAgaWYgKGlzQXJyYXkgfHwg
aXNTdHJpbmcgfHwgaXNCeXRlQXJyYXkgfHwgaXNJbnQ4QXJyYXkgfHwgaXNJbnQxNkFycmF5IHx8
IGlzSW50MzJBcnJheSB8fCBpc1VpbnQ4QXJyYXkgfHwgaXNVaW50OENsYW1wZWRBcnJheSB8fCBp
c1VpbnQxNkFycmF5IHx8IGlzVWludDMyQXJyYXkgfHwgaXNGbG9hdDMyQXJyYXkgfHwgaXNGbG9h
dDY0QXJyYXkpCisgICAgICAgICAgICAgICAgaWYgKGlzQXJyYXkgfHwgaXNTdHJpbmcgfHwgaXNC
eXRlQXJyYXkgfHwgaXNJbnQ4QXJyYXkgfHwgaXNJbnQxNkFycmF5CisgICAgICAgICAgICAgICAg
ICAgIHx8IGlzSW50MzJBcnJheSB8fCBpc1VpbnQ4QXJyYXkgfHwgaXNVaW50OENsYW1wZWRBcnJh
eSB8fCBpc1VpbnQxNkFycmF5CisgICAgICAgICAgICAgICAgICAgIHx8IGlzVWludDMyQXJyYXkg
fHwgaXNGbG9hdDMyQXJyYXkgfHwgaXNGbG9hdDY0QXJyYXkpCiAgICAgICAgICAgICAgICAgICAg
IGNoYW5nZWQgfD0gbWVyZ2VQcmVkaWN0aW9uKFByZWRpY3RJbnQzMik7CiAgICAgICAgICAgICB9
Ci0gICAgICAgICAgICBjaGFuZ2VkIHw9IG1lcmdlRGVmYXVsdEFyaXRoRmxhZ3Mobm9kZSwgZmxh
Z3MpOworICAgICAgICAgICAgY2hhbmdlZCB8PSBtZXJnZURlZmF1bHRGbGFncyhub2RlKTsKICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgICAgICAKICAgICAgICAgY2FzZSBH
ZXRCeUlkRmx1c2g6CiAgICAgICAgICAgICBpZiAobm9kZS5nZXRIZWFwUHJlZGljdGlvbigpKQog
ICAgICAgICAgICAgICAgIGNoYW5nZWQgfD0gbWVyZ2VQcmVkaWN0aW9uKG5vZGUuZ2V0SGVhcFBy
ZWRpY3Rpb24oKSk7Ci0gICAgICAgICAgICBjaGFuZ2VkIHw9IG1lcmdlRGVmYXVsdEFyaXRoRmxh
Z3Mobm9kZSwgZmxhZ3MpOworICAgICAgICAgICAgY2hhbmdlZCB8PSBtZXJnZURlZmF1bHRGbGFn
cyhub2RlKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgCiAgICAgICAgIGNhc2Ug
R2V0QnlWYWw6IHsKLSAgICAgICAgICAgIGlmIChtX2dyYXBoW25vZGUuY2hpbGQxKCldLnNob3Vs
ZFNwZWN1bGF0ZUZsb2F0MzJBcnJheSgpIHx8IG1fZ3JhcGhbbm9kZS5jaGlsZDEoKV0uc2hvdWxk
U3BlY3VsYXRlRmxvYXQ2NEFycmF5KCkpCisgICAgICAgICAgICBpZiAobV9ncmFwaFtub2RlLmNo
aWxkMSgpXS5zaG91bGRTcGVjdWxhdGVGbG9hdDMyQXJyYXkoKQorICAgICAgICAgICAgICAgIHx8
IG1fZ3JhcGhbbm9kZS5jaGlsZDEoKV0uc2hvdWxkU3BlY3VsYXRlRmxvYXQ2NEFycmF5KCkpCiAg
ICAgICAgICAgICAgICAgY2hhbmdlZCB8PSBtZXJnZVByZWRpY3Rpb24oUHJlZGljdERvdWJsZSk7
CiAgICAgICAgICAgICBlbHNlIGlmIChub2RlLmdldEhlYXBQcmVkaWN0aW9uKCkpCiAgICAgICAg
ICAgICAgICAgY2hhbmdlZCB8PSBtZXJnZVByZWRpY3Rpb24obm9kZS5nZXRIZWFwUHJlZGljdGlv
bigpKTsKIAotICAgICAgICAgICAgY2hhbmdlZCB8PSBtX2dyYXBoW25vZGUuY2hpbGQxKCldLm1l
cmdlRmxhZ3MoZmxhZ3MgfCBOb2RlVXNlZEFzTnVtYmVyIHwgTm9kZU5lZWRzTmVnWmVybyk7Ci0g
ICAgICAgICAgICBjaGFuZ2VkIHw9IG1fZ3JhcGhbbm9kZS5jaGlsZDIoKV0ubWVyZ2VGbGFncyhm
bGFncyB8IE5vZGVVc2VkQXNOdW1iZXIpOworICAgICAgICAgICAgY2hhbmdlZCB8PSBtX2dyYXBo
W25vZGUuY2hpbGQxKCldLm1lcmdlRmxhZ3MoTm9kZVVzZWRBc1ZhbHVlKTsKKyAgICAgICAgICAg
IGNoYW5nZWQgfD0gbV9ncmFwaFtub2RlLmNoaWxkMigpXS5tZXJnZUZsYWdzKE5vZGVVc2VkQXNO
dW1iZXIgfCBOb2RlVXNlZEFzSW50KTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAg
ICAgICAgICAgICAKICAgICAgICAgY2FzZSBHZXRQcm9wZXJ0eVN0b3JhZ2U6IAogICAgICAgICBj
YXNlIEdldEluZGV4ZWRQcm9wZXJ0eVN0b3JhZ2U6IHsKICAgICAgICAgICAgIGNoYW5nZWQgfD0g
c2V0UHJlZGljdGlvbihQcmVkaWN0T3RoZXIpOwotICAgICAgICAgICAgY2hhbmdlZCB8PSBtZXJn
ZURlZmF1bHRBcml0aEZsYWdzKG5vZGUsIGZsYWdzKTsKKyAgICAgICAgICAgIGNoYW5nZWQgfD0g
bWVyZ2VEZWZhdWx0RmxhZ3Mobm9kZSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQog
CiAgICAgICAgIGNhc2UgR2V0QnlPZmZzZXQ6IHsKICAgICAgICAgICAgIGlmIChub2RlLmdldEhl
YXBQcmVkaWN0aW9uKCkpCiAgICAgICAgICAgICAgICAgY2hhbmdlZCB8PSBtZXJnZVByZWRpY3Rp
b24obm9kZS5nZXRIZWFwUHJlZGljdGlvbigpKTsKLSAgICAgICAgICAgIGNoYW5nZWQgfD0gbWVy
Z2VEZWZhdWx0QXJpdGhGbGFncyhub2RlLCBmbGFncyk7CisgICAgICAgICAgICBjaGFuZ2VkIHw9
IG1lcmdlRGVmYXVsdEZsYWdzKG5vZGUpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0K
ICAgICAgICAgICAgIApAQCAtNDMzLDcgKzQ0OSwxMCBAQCBwcml2YXRlOgogICAgICAgICBjYXNl
IENvbnN0cnVjdDogewogICAgICAgICAgICAgaWYgKG5vZGUuZ2V0SGVhcFByZWRpY3Rpb24oKSkK
ICAgICAgICAgICAgICAgICBjaGFuZ2VkIHw9IG1lcmdlUHJlZGljdGlvbihub2RlLmdldEhlYXBQ
cmVkaWN0aW9uKCkpOwotICAgICAgICAgICAgY2hhbmdlZCB8PSBtZXJnZURlZmF1bHRBcml0aEZs
YWdzKG5vZGUsIGZsYWdzKTsKKyAgICAgICAgICAgIGZvciAodW5zaWduZWQgY2hpbGRJZHggPSBu
b2RlLmZpcnN0Q2hpbGQoKTsKKyAgICAgICAgICAgICAgICAgY2hpbGRJZHggPCBub2RlLmZpcnN0
Q2hpbGQoKSArIG5vZGUubnVtQ2hpbGRyZW4oKTsKKyAgICAgICAgICAgICAgICAgKytjaGlsZElk
eCkKKyAgICAgICAgICAgICAgICBjaGFuZ2VkIHw9IG1fZ3JhcGhbbV9ncmFwaC5tX3ZhckFyZ0No
aWxkcmVuW2NoaWxkSWR4XV0ubWVyZ2VGbGFncyhOb2RlVXNlZEFzVmFsdWUpOwogICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgICAgIApAQCAtNDQ2LDcgKzQ2NSw3IEBAIHBy
aXZhdGU6CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIGNoYW5nZWQgfD0gbWVy
Z2VQcmVkaWN0aW9uKHByZWRpY3Rpb24pOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgY2hh
bmdlZCB8PSBtZXJnZURlZmF1bHRBcml0aEZsYWdzKG5vZGUsIGZsYWdzKTsKKyAgICAgICAgICAg
IGNoYW5nZWQgfD0gbWVyZ2VEZWZhdWx0RmxhZ3Mobm9kZSk7CiAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgfQogICAgICAgICAgICAgCkBAIC00NTgsOCArNDc3LDkgQEAgcHJpdmF0ZToKICAg
ICAgICAgfQogICAgICAgICAgICAgCiAgICAgICAgIGNhc2UgUHV0R2xvYmFsVmFyOiB7Ci0gICAg
ICAgICAgICBjaGFuZ2VkIHw9IG1fZ3JhcGgucHJlZGljdEdsb2JhbFZhcihub2RlLnZhck51bWJl
cigpLCBtX2dyYXBoW25vZGUuY2hpbGQxKCldLnByZWRpY3Rpb24oKSk7Ci0gICAgICAgICAgICBj
aGFuZ2VkIHw9IG1lcmdlRGVmYXVsdEFyaXRoRmxhZ3Mobm9kZSwgZmxhZ3MpOworICAgICAgICAg
ICAgY2hhbmdlZCB8PSBtX2dyYXBoLnByZWRpY3RHbG9iYWxWYXIoCisgICAgICAgICAgICAgICAg
bm9kZS52YXJOdW1iZXIoKSwgbV9ncmFwaFtub2RlLmNoaWxkMSgpXS5wcmVkaWN0aW9uKCkpOwor
ICAgICAgICAgICAgY2hhbmdlZCB8PSBtX2dyYXBoW25vZGUuY2hpbGQxKCldLm1lcmdlRmxhZ3Mo
Tm9kZVVzZWRBc1ZhbHVlKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAg
ICAgICAKQEAgLTQ4NywxNCArNTA3LDIxIEBAIHByaXZhdGU6CiAgICAgICAgIGNhc2UgQ3JlYXRl
VGhpczoKICAgICAgICAgY2FzZSBOZXdPYmplY3Q6IHsKICAgICAgICAgICAgIGNoYW5nZWQgfD0g
c2V0UHJlZGljdGlvbihQcmVkaWN0RmluYWxPYmplY3QpOwotICAgICAgICAgICAgY2hhbmdlZCB8
PSBtZXJnZURlZmF1bHRBcml0aEZsYWdzKG5vZGUsIGZsYWdzKTsKKyAgICAgICAgICAgIGNoYW5n
ZWQgfD0gbWVyZ2VEZWZhdWx0RmxhZ3Mobm9kZSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgfQorICAgICAgICAgICAgCisgICAgICAgIGNhc2UgTmV3QXJyYXk6IHsKKyAgICAgICAgICAg
IGNoYW5nZWQgfD0gc2V0UHJlZGljdGlvbihQcmVkaWN0QXJyYXkpOworICAgICAgICAgICAgZm9y
ICh1bnNpZ25lZCBjaGlsZElkeCA9IG5vZGUuZmlyc3RDaGlsZCgpOworICAgICAgICAgICAgICAg
ICBjaGlsZElkeCA8IG5vZGUuZmlyc3RDaGlsZCgpICsgbm9kZS5udW1DaGlsZHJlbigpOworICAg
ICAgICAgICAgICAgICArK2NoaWxkSWR4KQorICAgICAgICAgICAgICAgIGNoYW5nZWQgfD0gbV9n
cmFwaFttX2dyYXBoLm1fdmFyQXJnQ2hpbGRyZW5bY2hpbGRJZHhdXS5tZXJnZUZsYWdzKE5vZGVV
c2VkQXNWYWx1ZSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICAgICAg
Ci0gICAgICAgIGNhc2UgTmV3QXJyYXk6CiAgICAgICAgIGNhc2UgTmV3QXJyYXlCdWZmZXI6IHsK
ICAgICAgICAgICAgIGNoYW5nZWQgfD0gc2V0UHJlZGljdGlvbihQcmVkaWN0QXJyYXkpOwotICAg
ICAgICAgICAgY2hhbmdlZCB8PSBtZXJnZURlZmF1bHRBcml0aEZsYWdzKG5vZGUsIGZsYWdzKTsK
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgICAgICAKQEAgLTUwMywxMCAr
NTMwLDE5IEBAIHByaXZhdGU6CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAg
ICAKLSAgICAgICAgY2FzZSBTdHJpbmdDaGFyQXQ6CisgICAgICAgIGNhc2UgU3RyaW5nQ2hhckF0
OiB7CisgICAgICAgICAgICBjaGFuZ2VkIHw9IHNldFByZWRpY3Rpb24oUHJlZGljdFN0cmluZyk7
CisgICAgICAgICAgICBjaGFuZ2VkIHw9IG1fZ3JhcGhbbm9kZS5jaGlsZDEoKV0ubWVyZ2VGbGFn
cyhOb2RlVXNlZEFzVmFsdWUpOworICAgICAgICAgICAgY2hhbmdlZCB8PSBtX2dyYXBoW25vZGUu
Y2hpbGQyKCldLm1lcmdlRmxhZ3MoTm9kZVVzZWRBc051bWJlciB8IE5vZGVVc2VkQXNJbnQpOwor
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgICAgIAogICAgICAgICBjYXNl
IFN0ckNhdDogewogICAgICAgICAgICAgY2hhbmdlZCB8PSBzZXRQcmVkaWN0aW9uKFByZWRpY3RT
dHJpbmcpOwotICAgICAgICAgICAgY2hhbmdlZCB8PSBtZXJnZURlZmF1bHRBcml0aEZsYWdzKG5v
ZGUsIGZsYWdzKTsKKyAgICAgICAgICAgIGZvciAodW5zaWduZWQgY2hpbGRJZHggPSBub2RlLmZp
cnN0Q2hpbGQoKTsKKyAgICAgICAgICAgICAgICAgY2hpbGRJZHggPCBub2RlLmZpcnN0Q2hpbGQo
KSArIG5vZGUubnVtQ2hpbGRyZW4oKTsKKyAgICAgICAgICAgICAgICAgKytjaGlsZElkeCkKKyAg
ICAgICAgICAgICAgICBjaGFuZ2VkIHw9IG1fZ3JhcGhbbV9ncmFwaC5tX3ZhckFyZ0NoaWxkcmVu
W2NoaWxkSWR4XV0ubWVyZ2VGbGFncyhOb2RlVXNlZEFzTnVtYmVyKTsKICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICB9CiAgICAgICAgICAgICAKQEAgLTUyMyw3ICs1NTksOCBAQCBwcml2YXRl
OgogICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoY2hpbGQgJiBQcmVkaWN0T2JqZWN0TWFzaykg
ewogICAgICAgICAgICAgICAgICAgICAvLyBPYmplY3RzIGdldCB0dXJuZWQgaW50byBzdHJpbmdz
LiBTbyBpZiB0aGUgaW5wdXQgaGFzIGhpbnRzIG9mIG9iamVjdG5lc3MsCiAgICAgICAgICAgICAg
ICAgICAgIC8vIHRoZSBvdXRwdXQgd2lsbCBoYXZlIGhpbnN0cyBvZiBzdHJpbmdpbmVzcy4KLSAg
ICAgICAgICAgICAgICAgICAgY2hhbmdlZCB8PSBtZXJnZVByZWRpY3Rpb24obWVyZ2VQcmVkaWN0
aW9ucyhjaGlsZCAmIH5QcmVkaWN0T2JqZWN0TWFzaywgUHJlZGljdFN0cmluZykpOworICAgICAg
ICAgICAgICAgICAgICBjaGFuZ2VkIHw9IG1lcmdlUHJlZGljdGlvbigKKyAgICAgICAgICAgICAg
ICAgICAgICAgIG1lcmdlUHJlZGljdGlvbnMoY2hpbGQgJiB+UHJlZGljdE9iamVjdE1hc2ssIFBy
ZWRpY3RTdHJpbmcpKTsKICAgICAgICAgICAgICAgICB9IGVsc2UKICAgICAgICAgICAgICAgICAg
ICAgY2hhbmdlZCB8PSBtZXJnZVByZWRpY3Rpb24oY2hpbGQpOwogICAgICAgICAgICAgfQpAQCAt
NTQzLDYgKzU4MCw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQog
ICAgICAgICAgICAgCisgICAgICAgIGNhc2UgUHV0QnlWYWxBbGlhczoKICAgICAgICAgY2FzZSBH
ZXRBcnJheUxlbmd0aDoKICAgICAgICAgY2FzZSBHZXRCeXRlQXJyYXlMZW5ndGg6CiAgICAgICAg
IGNhc2UgR2V0SW50OEFycmF5TGVuZ3RoOgpAQCAtNTYyLDMzICs2MDAsNDUgQEAgcHJpdmF0ZToK
ICAgICAgICAgfQogICAgICAgICAKICAgICAgICAgY2FzZSBQdXRCeVZhbDoKLSAgICAgICAgICAg
IGNoYW5nZWQgfD0gbV9ncmFwaFtub2RlLmNoaWxkMSgpXS5tZXJnZUZsYWdzKGZsYWdzIHwgTm9k
ZVVzZWRBc051bWJlciB8IE5vZGVOZWVkc05lZ1plcm8pOwotICAgICAgICAgICAgY2hhbmdlZCB8
PSBtX2dyYXBoW25vZGUuY2hpbGQyKCldLm1lcmdlRmxhZ3MoZmxhZ3MgfCBOb2RlVXNlZEFzTnVt
YmVyKTsKLSAgICAgICAgICAgIGNoYW5nZWQgfD0gbV9ncmFwaFtub2RlLmNoaWxkMygpXS5tZXJn
ZUZsYWdzKGZsYWdzIHwgTm9kZVVzZWRBc051bWJlciB8IE5vZGVOZWVkc05lZ1plcm8pOworICAg
ICAgICAgICAgY2hhbmdlZCB8PSBtX2dyYXBoW25vZGUuY2hpbGQxKCldLm1lcmdlRmxhZ3MoTm9k
ZVVzZWRBc1ZhbHVlKTsKKyAgICAgICAgICAgIGNoYW5nZWQgfD0gbV9ncmFwaFtub2RlLmNoaWxk
MigpXS5tZXJnZUZsYWdzKE5vZGVVc2VkQXNOdW1iZXIgfCBOb2RlVXNlZEFzSW50KTsKKyAgICAg
ICAgICAgIGNoYW5nZWQgfD0gbV9ncmFwaFtub2RlLmNoaWxkMygpXS5tZXJnZUZsYWdzKE5vZGVV
c2VkQXNWYWx1ZSk7CisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBjYXNlIFB1dFNjb3Bl
ZFZhcjoKKyAgICAgICAgY2FzZSBSZXR1cm46CisgICAgICAgIGNhc2UgVGhyb3c6CisgICAgICAg
ICAgICBjaGFuZ2VkIHw9IG1fZ3JhcGhbbm9kZS5jaGlsZDEoKV0ubWVyZ2VGbGFncyhOb2RlVXNl
ZEFzVmFsdWUpOworICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSBQdXRCeUlkOgor
ICAgICAgICBjYXNlIFB1dEJ5SWREaXJlY3Q6CisgICAgICAgICAgICBjaGFuZ2VkIHw9IG1fZ3Jh
cGhbbm9kZS5jaGlsZDEoKV0ubWVyZ2VGbGFncyhOb2RlVXNlZEFzVmFsdWUpOworICAgICAgICAg
ICAgY2hhbmdlZCB8PSBtX2dyYXBoW25vZGUuY2hpbGQyKCldLm1lcmdlRmxhZ3MoTm9kZVVzZWRB
c1ZhbHVlKTsKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2UgUHV0QnlPZmZzZXQ6
CisgICAgICAgICAgICBjaGFuZ2VkIHw9IG1fZ3JhcGhbbm9kZS5jaGlsZDEoKV0ubWVyZ2VGbGFn
cyhOb2RlVXNlZEFzVmFsdWUpOworICAgICAgICAgICAgY2hhbmdlZCB8PSBtX2dyYXBoW25vZGUu
Y2hpbGQzKCldLm1lcmdlRmxhZ3MoTm9kZVVzZWRBc1ZhbHVlKTsKKyAgICAgICAgICAgIGJyZWFr
OworICAgICAgICAgICAgCisgICAgICAgIGNhc2UgUGhpOgogICAgICAgICAgICAgYnJlYWs7CiAK
ICNpZm5kZWYgTkRFQlVHCiAgICAgICAgIC8vIFRoZXNlIGdldCBpZ25vcmVkIGJlY2F1c2UgdGhl
eSBkb24ndCByZXR1cm4gYW55dGhpbmcuCi0gICAgICAgIGNhc2UgUHV0U2NvcGVkVmFyOgogICAg
ICAgICBjYXNlIERGRzo6SnVtcDoKICAgICAgICAgY2FzZSBCcmFuY2g6CiAgICAgICAgIGNhc2Ug
QnJlYWtwb2ludDoKLSAgICAgICAgY2FzZSBSZXR1cm46CiAgICAgICAgIGNhc2UgQ2hlY2tIYXNJ
bnN0YW5jZToKLSAgICAgICAgY2FzZSBQaGk6Ci0gICAgICAgIGNhc2UgVGhyb3c6CiAgICAgICAg
IGNhc2UgVGhyb3dSZWZlcmVuY2VFcnJvcjoKICAgICAgICAgY2FzZSBGb3JjZU9TUkV4aXQ6CiAg
ICAgICAgIGNhc2UgU2V0QXJndW1lbnQ6Ci0gICAgICAgIGNhc2UgUHV0QnlWYWxBbGlhczoKLSAg
ICAgICAgY2FzZSBQdXRCeUlkOgotICAgICAgICBjYXNlIFB1dEJ5SWREaXJlY3Q6CiAgICAgICAg
IGNhc2UgQ2hlY2tTdHJ1Y3R1cmU6CiAgICAgICAgIGNhc2UgQ2hlY2tGdW5jdGlvbjoKICAgICAg
ICAgY2FzZSBQdXRTdHJ1Y3R1cmU6Ci0gICAgICAgIGNhc2UgUHV0QnlPZmZzZXQ6CiAgICAgICAg
IGNhc2UgVGVhck9mZkFjdGl2YXRpb246Ci0gICAgICAgICAgICBjaGFuZ2VkIHw9IG1lcmdlRGVm
YXVsdEFyaXRoRmxhZ3Mobm9kZSwgZmxhZ3MpOworICAgICAgICAgICAgY2hhbmdlZCB8PSBtZXJn
ZURlZmF1bHRGbGFncyhub2RlKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgCiAg
ICAgICAgIC8vIFRoZXNlIGdldHMgaWdub3JlZCBiZWNhdXNlIGl0IGRvZXNuJ3QgZG8gYW55dGhp
bmcuCkBAIC02MDIsNyArNjUyLDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIGJyZWFrOwogI2Vs
c2UKICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIGNoYW5nZWQgfD0gbWVyZ2VEZWZhdWx0
QXJpdGhGbGFncyhub2RlLCBmbGFncyk7CisgICAgICAgICAgICBjaGFuZ2VkIHw9IG1lcmdlRGVm
YXVsdEZsYWdzKG5vZGUpOwogICAgICAgICAgICAgYnJlYWs7CiAjZW5kaWYKICAgICAgICAgfQpA
QCAtNjEzLDI0ICs2NjMsMjUgQEAgcHJpdmF0ZToKICAgICAgICAgCiAgICAgICAgIG1fY2hhbmdl
ZCB8PSBjaGFuZ2VkOwogICAgIH0KLSAgICAKLSAgICBib29sIG1lcmdlRGVmYXVsdEFyaXRoRmxh
Z3MoTm9kZSYgbm9kZSwgTm9kZUZsYWdzIGZsYWdzKQorICAgICAgICAKKyAgICBib29sIG1lcmdl
RGVmYXVsdEZsYWdzKE5vZGUmIG5vZGUpCiAgICAgewogICAgICAgICBib29sIGNoYW5nZWQgPSBm
YWxzZTsKLSAgICAgICAgZmxhZ3MgfD0gTm9kZVVzZWRBc051bWJlciB8IE5vZGVOZWVkc05lZ1pl
cm87CiAgICAgICAgIGlmIChub2RlLmZsYWdzKCkgJiBOb2RlSGFzVmFyQXJncykgewotICAgICAg
ICAgICAgZm9yICh1bnNpZ25lZCBjaGlsZElkeCA9IG5vZGUuZmlyc3RDaGlsZCgpOyBjaGlsZElk
eCA8IG5vZGUuZmlyc3RDaGlsZCgpICsgbm9kZS5udW1DaGlsZHJlbigpOyBjaGlsZElkeCsrKQot
ICAgICAgICAgICAgICAgIGNoYW5nZWQgfD0gbV9ncmFwaFttX2dyYXBoLm1fdmFyQXJnQ2hpbGRy
ZW5bY2hpbGRJZHhdXS5tZXJnZUZsYWdzKGZsYWdzKTsKKyAgICAgICAgICAgIGZvciAodW5zaWdu
ZWQgY2hpbGRJZHggPSBub2RlLmZpcnN0Q2hpbGQoKTsKKyAgICAgICAgICAgICAgICAgY2hpbGRJ
ZHggPCBub2RlLmZpcnN0Q2hpbGQoKSArIG5vZGUubnVtQ2hpbGRyZW4oKTsKKyAgICAgICAgICAg
ICAgICAgY2hpbGRJZHgrKykKKyAgICAgICAgICAgICAgICBjaGFuZ2VkIHw9IG1fZ3JhcGhbbV9n
cmFwaC5tX3ZhckFyZ0NoaWxkcmVuW2NoaWxkSWR4XV0ubWVyZ2VGbGFncyhOb2RlVXNlZEFzVmFs
dWUpOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgaWYgKCFub2RlLmNoaWxkMSgpKQog
ICAgICAgICAgICAgICAgIHJldHVybiBjaGFuZ2VkOwotICAgICAgICAgICAgY2hhbmdlZCB8PSBt
X2dyYXBoW25vZGUuY2hpbGQxKCldLm1lcmdlRmxhZ3MoZmxhZ3MpOworICAgICAgICAgICAgY2hh
bmdlZCB8PSBtX2dyYXBoW25vZGUuY2hpbGQxKCldLm1lcmdlRmxhZ3MoTm9kZVVzZWRBc1ZhbHVl
KTsKICAgICAgICAgICAgIGlmICghbm9kZS5jaGlsZDIoKSkKICAgICAgICAgICAgICAgICByZXR1
cm4gY2hhbmdlZDsKLSAgICAgICAgICAgIGNoYW5nZWQgfD0gbV9ncmFwaFtub2RlLmNoaWxkMigp
XS5tZXJnZUZsYWdzKGZsYWdzKTsKKyAgICAgICAgICAgIGNoYW5nZWQgfD0gbV9ncmFwaFtub2Rl
LmNoaWxkMigpXS5tZXJnZUZsYWdzKE5vZGVVc2VkQXNWYWx1ZSk7CiAgICAgICAgICAgICBpZiAo
IW5vZGUuY2hpbGQzKCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGNoYW5nZWQ7Ci0gICAgICAg
ICAgICBjaGFuZ2VkIHw9IG1fZ3JhcGhbbm9kZS5jaGlsZDMoKV0ubWVyZ2VGbGFncyhmbGFncyk7
CisgICAgICAgICAgICBjaGFuZ2VkIHw9IG1fZ3JhcGhbbm9kZS5jaGlsZDMoKV0ubWVyZ2VGbGFn
cyhOb2RlVXNlZEFzVmFsdWUpOwogICAgICAgICB9CiAgICAgICAgIHJldHVybiBjaGFuZ2VkOwog
ICAgIH0KQEAgLTY1Miw2ICs3MDMsODUgQEAgcHJpdmF0ZToKICAgICAgICAgZm9yIChtX2NvbXBp
bGVJbmRleCA9IG1fZ3JhcGguc2l6ZSgpOyBtX2NvbXBpbGVJbmRleC0tID4gMDspCiAgICAgICAg
ICAgICBwcm9wYWdhdGUobV9ncmFwaFttX2NvbXBpbGVJbmRleF0pOwogICAgIH0KKyAgICAKKyAg
ICB2b2lkIHByb3BhZ2F0ZVVudGlsRml4cG9pbnQoKQorICAgIHsKKyAgICAgICAgZG8geworICAg
ICAgICAgICAgbV9jaGFuZ2VkID0gZmFsc2U7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIC8v
IEZvcndhcmQgcHJvcGFnYXRpb24gaXMgbmVhci1vcHRpbWFsIGZvciBib3RoIHRvcG9sb2dpY2Fs
bHktc29ydGVkIGFuZAorICAgICAgICAgICAgLy8gREZTLXNvcnRlZCBjb2RlLgorICAgICAgICAg
ICAgcHJvcGFnYXRlRm9yd2FyZCgpOworICAgICAgICAgICAgaWYgKCFtX2NoYW5nZWQpCisgICAg
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIC8vIEJhY2t3YXJk
IHByb3BhZ2F0aW9uIHJlZHVjZXMgdGhlIGxpa2VsaWhvb2QgdGhhdCBwYXRob2xvZ2ljYWwgY29k
ZSB3aWxsCisgICAgICAgICAgICAvLyBjYXVzZSBzbG93bmVzcy4gTG9vcHMgKGVzcGVjaWFsbHkg
bmVzdGVkIG9uZXMpIHJlc2VtYmxlIGJhY2t3YXJkIGZsb3cuCisgICAgICAgICAgICAvLyBUaGlz
IHBhc3MgY2FwdHVyZXMgdHdvIGNhc2VzOiAoMSkgaXQgZGV0ZWN0cyBpZiB0aGUgZm9yd2FyZCBm
aXhwb2ludAorICAgICAgICAgICAgLy8gZm91bmQgYSBzb3VuZCBzb2x1dGlvbiBhbmQgKDIpIHNo
b3J0LWNpcmN1aXRzIGJhY2t3YXJkIGZsb3cuCisgICAgICAgICAgICBtX2NoYW5nZWQgPSBmYWxz
ZTsKKyAgICAgICAgICAgIHByb3BhZ2F0ZUJhY2t3YXJkKCk7CisgICAgICAgIH0gd2hpbGUgKG1f
Y2hhbmdlZCk7CisgICAgfQorICAgIAorICAgIGJvb2wgbm90aWNlRXNjYXBpbmdJbnRlZ2VyKEVk
Z2UgZWRnZSkKKyAgICB7CisgICAgICAgIE5vZGUmIG5vZGUgPSBtX2dyYXBoW2VkZ2VdOworICAg
ICAgICBpZiAobm9kZS5zaG91bGRTcGVjdWxhdGVJbnRlZ2VyKCkpCisgICAgICAgICAgICByZXR1
cm4gbm9kZS5tZXJnZUZsYWdzKE5vZGVFc2NhcGVzQXNJbnQpOworICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgfQorICAgIAorICAgIGJvb2wgbm90aWNlRXNjYXBpbmdJbnRlZ2VycyhOb2RlJiBu
b2RlKQorICAgIHsKKyAgICAgICAgYm9vbCBjaGFuZ2VkID0gZmFsc2U7CisgICAgICAgIHN3aXRj
aCAobm9kZS5vcCgpKSB7CisgICAgICAgIGNhc2UgU2V0TG9jYWw6CisgICAgICAgICAgICBpZiAo
bV9ncmFwaC5pc0NhcHR1cmVkKG5vZGUubG9jYWwoKSkpCisgICAgICAgICAgICAgICAgY2hhbmdl
ZCB8PSBub3RpY2VFc2NhcGluZ0ludGVnZXIobm9kZS5jaGlsZDEoKSk7CisgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgICAgIAorICAgICAgICBjYXNlIFB1dEdsb2JhbFZhcjoKKyAgICAgICAg
Y2FzZSBQdXRTY29wZWRWYXI6CisgICAgICAgIGNhc2UgUmV0dXJuOgorICAgICAgICBjYXNlIFRo
cm93OgorICAgICAgICAgICAgY2hhbmdlZCB8PSBub3RpY2VFc2NhcGluZ0ludGVnZXIobm9kZS5j
aGlsZDEoKSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIAorICAgICAgICBjYXNl
IEFycmF5UHVzaDoKKyAgICAgICAgY2FzZSBQdXRCeUlkOgorICAgICAgICBjYXNlIFB1dEJ5SWRE
aXJlY3Q6CisgICAgICAgICAgICBjaGFuZ2VkIHw9IG5vdGljZUVzY2FwaW5nSW50ZWdlcihub2Rl
LmNoaWxkMigpKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgCisgICAgICAgIGNh
c2UgUHV0QnlWYWw6CisgICAgICAgIGNhc2UgUHV0QnlPZmZzZXQ6CisgICAgICAgICAgICBjaGFu
Z2VkIHw9IG5vdGljZUVzY2FwaW5nSW50ZWdlcihub2RlLmNoaWxkMygpKTsKKyAgICAgICAgICAg
IGJyZWFrOworICAgICAgICAgICAgCisgICAgICAgIGNhc2UgQ2FsbDoKKyAgICAgICAgY2FzZSBD
b25zdHJ1Y3Q6CisgICAgICAgIGNhc2UgTmV3QXJyYXk6CisgICAgICAgICAgICBmb3IgKHVuc2ln
bmVkIGNoaWxkSWR4ID0gbm9kZS5maXJzdENoaWxkKCk7CisgICAgICAgICAgICAgICAgIGNoaWxk
SWR4IDwgbm9kZS5maXJzdENoaWxkKCkgKyBub2RlLm51bUNoaWxkcmVuKCk7CisgICAgICAgICAg
ICAgICAgICsrY2hpbGRJZHgpCisgICAgICAgICAgICAgICAgY2hhbmdlZCB8PSBub3RpY2VFc2Nh
cGluZ0ludGVnZXIobV9ncmFwaC5tX3ZhckFyZ0NoaWxkcmVuW2NoaWxkSWR4XSk7CisgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgICAgIAorICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIHJldHVybiBjaGFuZ2VkOworICAg
IH0KKyAgICAKKyAgICBib29sIG5vdGljZUVzY2FwaW5nSW50ZWdlcnMoKQorICAgIHsKKyAgICAg
ICAgYm9vbCBjaGFuZ2VkID0gZmFsc2U7CisgICAgICAgIGZvciAobV9jb21waWxlSW5kZXggPSBt
X2dyYXBoLnNpemUoKTsgbV9jb21waWxlSW5kZXgtLTspCisgICAgICAgICAgICBjaGFuZ2VkIHw9
IG5vdGljZUVzY2FwaW5nSW50ZWdlcnMobV9ncmFwaFttX2NvbXBpbGVJbmRleF0pOworICAgICAg
ICByZXR1cm4gY2hhbmdlZDsKKyAgICB9CiAKICAgICB2b2lkIHZvdGUoRWRnZSBub2RlVXNlLCBW
YXJpYWJsZUFjY2Vzc0RhdGE6OkJhbGxvdCBiYWxsb3QpCiAgICAgewpAQCAtNjcxLDcgKzgwMSw5
IEBAIHByaXZhdGU6CiAgICAgdm9pZCB2b3RlKE5vZGUmIG5vZGUsIFZhcmlhYmxlQWNjZXNzRGF0
YTo6QmFsbG90IGJhbGxvdCkKICAgICB7CiAgICAgICAgIGlmIChub2RlLmZsYWdzKCkgJiBOb2Rl
SGFzVmFyQXJncykgewotICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBjaGlsZElkeCA9IG5vZGUu
Zmlyc3RDaGlsZCgpOyBjaGlsZElkeCA8IG5vZGUuZmlyc3RDaGlsZCgpICsgbm9kZS5udW1DaGls
ZHJlbigpOyBjaGlsZElkeCsrKQorICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBjaGlsZElkeCA9
IG5vZGUuZmlyc3RDaGlsZCgpOworICAgICAgICAgICAgICAgICBjaGlsZElkeCA8IG5vZGUuZmly
c3RDaGlsZCgpICsgbm9kZS5udW1DaGlsZHJlbigpOworICAgICAgICAgICAgICAgICBjaGlsZElk
eCsrKQogICAgICAgICAgICAgICAgIHZvdGUobV9ncmFwaC5tX3ZhckFyZ0NoaWxkcmVuW2NoaWxk
SWR4XSwgYmFsbG90KTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQpAQCAtNzI2LDcg
Kzg1OCw5IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgVmFy
aWFibGVBY2Nlc3NEYXRhOjpCYWxsb3QgYmFsbG90OwogICAgICAgICAgICAgICAgIAotICAgICAg
ICAgICAgICAgIGlmIChpc051bWJlclByZWRpY3Rpb24obGVmdCkgJiYgaXNOdW1iZXJQcmVkaWN0
aW9uKHJpZ2h0KSAmJiAhKE5vZGU6OnNob3VsZFNwZWN1bGF0ZUludGVnZXIobV9ncmFwaFtub2Rl
LmNoaWxkMSgpXSwgbV9ncmFwaFtub2RlLmNoaWxkMSgpXSkgJiYgbm9kZS5jYW5TcGVjdWxhdGVJ
bnRlZ2VyKCkpKQorICAgICAgICAgICAgICAgIGlmIChpc051bWJlclByZWRpY3Rpb24obGVmdCkg
JiYgaXNOdW1iZXJQcmVkaWN0aW9uKHJpZ2h0KQorICAgICAgICAgICAgICAgICAgICAmJiAhKE5v
ZGU6OnNob3VsZFNwZWN1bGF0ZUludGVnZXIobV9ncmFwaFtub2RlLmNoaWxkMSgpXSwgbV9ncmFw
aFtub2RlLmNoaWxkMSgpXSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAmJiBub2RlLmNhblNw
ZWN1bGF0ZUludGVnZXIoKSkpCiAgICAgICAgICAgICAgICAgICAgIGJhbGxvdCA9IFZhcmlhYmxl
QWNjZXNzRGF0YTo6Vm90ZURvdWJsZTsKICAgICAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAg
ICAgICAgICAgIGJhbGxvdCA9IFZhcmlhYmxlQWNjZXNzRGF0YTo6Vm90ZVZhbHVlOwpAQCAtNzM4
LDcgKzg3Miw4IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICBjYXNl
IEFyaXRoQWJzOgogICAgICAgICAgICAgICAgIFZhcmlhYmxlQWNjZXNzRGF0YTo6QmFsbG90IGJh
bGxvdDsKLSAgICAgICAgICAgICAgICBpZiAoIShtX2dyYXBoW25vZGUuY2hpbGQxKCldLnNob3Vs
ZFNwZWN1bGF0ZUludGVnZXIoKSAmJiBub2RlLmNhblNwZWN1bGF0ZUludGVnZXIoKSkpCisgICAg
ICAgICAgICAgICAgaWYgKCEobV9ncmFwaFtub2RlLmNoaWxkMSgpXS5zaG91bGRTcGVjdWxhdGVJ
bnRlZ2VyKCkKKyAgICAgICAgICAgICAgICAgICAgICAmJiBub2RlLmNhblNwZWN1bGF0ZUludGVn
ZXIoKSkpCiAgICAgICAgICAgICAgICAgICAgIGJhbGxvdCA9IFZhcmlhYmxlQWNjZXNzRGF0YTo6
Vm90ZURvdWJsZTsKICAgICAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgICAgIGJh
bGxvdCA9IFZhcmlhYmxlQWNjZXNzRGF0YTo6Vm90ZVZhbHVlOwpAQCAtNzg4LDcgKzkyMyw4IEBA
IHByaXZhdGU6CiAgICAgICAgIGNhc2UgR2V0QnlJZDogewogICAgICAgICAgICAgaWYgKCFpc0lu
dDMyUHJlZGljdGlvbihtX2dyYXBoW21fY29tcGlsZUluZGV4XS5wcmVkaWN0aW9uKCkpKQogICAg
ICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgaWYgKGNvZGVCbG9jaygpLT5pZGVudGlm
aWVyKG5vZGUuaWRlbnRpZmllck51bWJlcigpKSAhPSBnbG9iYWxEYXRhKCkucHJvcGVydHlOYW1l
cy0+bGVuZ3RoKQorICAgICAgICAgICAgaWYgKGNvZGVCbG9jaygpLT5pZGVudGlmaWVyKG5vZGUu
aWRlbnRpZmllck51bWJlcigpKQorICAgICAgICAgICAgICAgICE9IGdsb2JhbERhdGEoKS5wcm9w
ZXJ0eU5hbWVzLT5sZW5ndGgpCiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBi
b29sIGlzQXJyYXkgPSBpc0FycmF5UHJlZGljdGlvbihtX2dyYXBoW25vZGUuY2hpbGQxKCldLnBy
ZWRpY3Rpb24oKSk7CiAgICAgICAgICAgICBib29sIGlzU3RyaW5nID0gaXNTdHJpbmdQcmVkaWN0
aW9uKG1fZ3JhcGhbbm9kZS5jaGlsZDEoKV0ucHJlZGljdGlvbigpKTsKQEAgLTgwMiw3ICs5Mzgs
OSBAQCBwcml2YXRlOgogICAgICAgICAgICAgYm9vbCBpc1VpbnQzMkFycmF5ID0gbV9ncmFwaFtu
b2RlLmNoaWxkMSgpXS5zaG91bGRTcGVjdWxhdGVVaW50MzJBcnJheSgpOwogICAgICAgICAgICAg
Ym9vbCBpc0Zsb2F0MzJBcnJheSA9IG1fZ3JhcGhbbm9kZS5jaGlsZDEoKV0uc2hvdWxkU3BlY3Vs
YXRlRmxvYXQzMkFycmF5KCk7CiAgICAgICAgICAgICBib29sIGlzRmxvYXQ2NEFycmF5ID0gbV9n
cmFwaFtub2RlLmNoaWxkMSgpXS5zaG91bGRTcGVjdWxhdGVGbG9hdDY0QXJyYXkoKTsKLSAgICAg
ICAgICAgIGlmICghaXNBcnJheSAmJiAhaXNTdHJpbmcgJiYgIWlzQnl0ZUFycmF5ICYmICFpc0lu
dDhBcnJheSAmJiAhaXNJbnQxNkFycmF5ICYmICFpc0ludDMyQXJyYXkgJiYgIWlzVWludDhBcnJh
eSAmJiAhaXNVaW50OENsYW1wZWRBcnJheSAmJiAhaXNVaW50MTZBcnJheSAmJiAhaXNVaW50MzJB
cnJheSAmJiAhaXNGbG9hdDMyQXJyYXkgJiYgIWlzRmxvYXQ2NEFycmF5KQorICAgICAgICAgICAg
aWYgKCFpc0FycmF5ICYmICFpc1N0cmluZyAmJiAhaXNCeXRlQXJyYXkgJiYgIWlzSW50OEFycmF5
ICYmICFpc0ludDE2QXJyYXkKKyAgICAgICAgICAgICAgICAmJiAhaXNJbnQzMkFycmF5ICYmICFp
c1VpbnQ4QXJyYXkgJiYgIWlzVWludDhDbGFtcGVkQXJyYXkgJiYgIWlzVWludDE2QXJyYXkKKyAg
ICAgICAgICAgICAgICAmJiAhaXNVaW50MzJBcnJheSAmJiAhaXNGbG9hdDMyQXJyYXkgJiYgIWlz
RmxvYXQ2NEFycmF5KQogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgCiAjaWYg
REZHX0VOQUJMRShERUJVR19QUk9QQUdBVElPTl9WRVJCT1NFKQpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdWYXJpYWJsZUFjY2Vzc0RhdGEuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ZhcmlhYmxlQWNjZXNzRGF0YS5oCShyZXZpc2lvbiAx
MTE3OTcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ZhcmlhYmxlQWNjZXNzRGF0
YS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMDQsOCArMTA0LDMyIEBAIHB1YmxpYzoKICAgICAKICAg
ICBib29sIHNob3VsZFVzZURvdWJsZUZvcm1hdEFjY29yZGluZ1RvVm90ZSgpCiAgICAgeworICAg
ICAgICAvLyBXZSBkb24ndCBzdXBwb3J0IHRoaXMgZmFjaWxpdHkgZm9yIGFyZ3VtZW50cywgeWV0
LgogICAgICAgICAvLyBGSVhNRTogbWFrZSB0aGlzIHdvcmsgZm9yIGFyZ3VtZW50cy4KLSAgICAg
ICAgcmV0dXJuICFvcGVyYW5kSXNBcmd1bWVudChvcGVyYW5kKCkpICYmICgoaXNOdW1iZXJQcmVk
aWN0aW9uKHByZWRpY3Rpb24oKSkgJiYgZG91YmxlVm90ZVJhdGlvKCkgPj0gT3B0aW9uczo6ZG91
YmxlVm90ZVJhdGlvRm9yRG91YmxlRm9ybWF0KSB8fCBpc0RvdWJsZVByZWRpY3Rpb24ocHJlZGlj
dGlvbigpKSk7CisgICAgICAgIGlmIChvcGVyYW5kSXNBcmd1bWVudChvcGVyYW5kKCkpKQorICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAKKyAgICAgICAgLy8gSWYgdGhlIHZhcmlh
YmxlIGlzIG5vdCBhIG51bWJlciBwcmVkaWN0aW9uLCB0aGVuIHRoaXMgZG9lc24ndAorICAgICAg
ICAvLyBtYWtlIGFueSBzZW5zZS4KKyAgICAgICAgaWYgKCFpc051bWJlclByZWRpY3Rpb24ocHJl
ZGljdGlvbigpKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgCisgICAgICAg
IC8vIElmIHRoZSB2YXJpYWJsZSBpcyBwcmVkaWN0ZWQgdG8gaG9sZCBvbmx5IGRvdWJsZXMsIHRo
ZW4gaXQncyBhCisgICAgICAgIC8vIG5vLWJyYWluZXI6IGl0IHNob3VsZCBiZSBmb3JtYXR0ZWQg
YXMgYSBkb3VibGUuCisgICAgICAgIGlmIChpc0RvdWJsZVByZWRpY3Rpb24ocHJlZGljdGlvbigp
KSkKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAKKyAgICAgICAgLy8gSWYgdGhl
IHZhcmlhYmxlIGlzIGtub3duIHRvIGJlIHVzZWQgYXMgYW4gaW50ZWdlciwgdGhlbiBiZSBzYWZl
IC0KKyAgICAgICAgLy8gZG9uJ3QgZm9yY2UgaXQgdG8gYmUgYSBkb3VibGUuCisgICAgICAgIGlm
IChmbGFncygpICYgKE5vZGVFc2NhcGVzQXNJbnQgfCBOb2RlVXNlZEFzSW50KSkKKyAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgCisgICAgICAgIC8vIElmIHRoZSB2YXJpYWJsZSBo
YXMgYmVlbiB2b3RlZCB0byBiZWNvbWUgYSBkb3VibGUsIHRoZW4gbWFrZSBpdCBhCisgICAgICAg
IC8vIGRvdWJsZS4KKyAgICAgICAgaWYgKGRvdWJsZVZvdGVSYXRpbygpID49IE9wdGlvbnM6OmRv
dWJsZVZvdGVSYXRpb0ZvckRvdWJsZUZvcm1hdCkKKyAgICAgICAgICAgIHJldHVybiB0cnVlOwor
ICAgICAgICAKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KICAgICAKICAgICBib29sIHNo
b3VsZFVzZURvdWJsZUZvcm1hdCgpCg==
</data>
<flag name="review"
          id="137416"
          type_id="1"
          status="+"
          setter="msaboff"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>133581</attachid>
            <date>2012-03-23 16:15:06 -0700</date>
            <delta_ts>2012-03-23 19:12:48 -0700</delta_ts>
            <desc>the patch</desc>
            <filename>fixdoublevote_patch_3.diff</filename>
            <type>text/plain</type>
            <size>37596</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTExOTI4KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQzIEBA
CisyMDEyLTAzLTIzICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
REZHIGRvdWJsZSB2b3RpbmcgbWF5IGJlIG92ZXJ6ZWFsb3VzIGluIHRoZSBjYXNlIG9mIHZhcmlh
YmxlcyB0aGF0IGVuZCB1cAorICAgICAgICBiZWluZyB1c2VkIGFzIGludGVnZXJzCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04MjAwOAorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorICAgICAgICAKKyAgICAgICAgQ2xlYW5lZCB1
cCBub2RlIGZsYWdzIHByb3BhZ2F0aW9uLCBtYWtpbmcgdGhlIGludGVudCBtb3JlIGV4cGxpY2l0
IGluIG1vc3QKKyAgICAgICAgcGxhY2VzLiBBZGRlZCBtYWNoaW5lcnkgdG8gdHJhY2sgd2hlbiBh
IG5vZGUgaXMga25vd24gdG8gZXNjYXBlIGFzIGFuCisgICAgICAgIGludGVnZXIuIEluIGFsbCBz
dWNoIGNhc2VzLCB3ZSB0aGVuIGJhY2stcHJvcGFnYXRlIHRoZSBOb2RlRXNjYXBlc0FzSW50Cisg
ICAgICAgIHByb3BlcnR5LiBXZSBhbHNvIGJhY2stcHJvcGFnYXRlIE5vZGVVc2VkQXNJbnQgZm9y
IGNhc2VzIHdoZXJlIGEgbm9kZSB3YXMKKyAgICAgICAgdXNlZCBpbiBhIGNvbnRleHQgdGhhdCBp
cyBrbm93biB0byBzdHJvbmdseSBwcmVmZXIgaW50ZWdlcnMuCisKKyAgICAgICAgKiBkZmcvREZH
Qnl0ZUNvZGVQYXJzZXIuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpo
YW5kbGVDYWxsKToKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9j
ayk6CisgICAgICAgICogZGZnL0RGR0dyYXBoLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpHcmFw
aDo6ZHVtcENvZGVPcmlnaW4pOgorICAgICAgICAoSlNDOjpERkc6OkdyYXBoOjpkdW1wKToKKyAg
ICAgICAgKiBkZmcvREZHR3JhcGguaDoKKyAgICAgICAgKEdyYXBoKToKKyAgICAgICAgKiBkZmcv
REZHTm9kZUZsYWdzLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpub2RlRmxhZ3NBc1N0cmluZyk6
CisgICAgICAgICogZGZnL0RGR05vZGVGbGFncy5oOgorICAgICAgICAoREZHKToKKyAgICAgICAg
KiBkZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwOgorICAgICAgICAoSlNDOjpE
Rkc6OlByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlOjpydW4pOgorICAgICAgICAoSlNDOjpERkc6
OlByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlOjpwcm9wYWdhdGUpOgorICAgICAgICAoUHJlZGlj
dGlvblByb3BhZ2F0aW9uUGhhc2UpOgorICAgICAgICAoSlNDOjpERkc6OlByZWRpY3Rpb25Qcm9w
YWdhdGlvblBoYXNlOjptZXJnZURlZmF1bHRGbGFncyk6CisgICAgICAgIChKU0M6OkRGRzo6UHJl
ZGljdGlvblByb3BhZ2F0aW9uUGhhc2U6OnByb3BhZ2F0ZVVudGlsRml4cG9pbnQpOgorICAgICAg
ICAoSlNDOjpERkc6OlByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlOjpub3RpY2VFc2NhcGluZ0lu
dGVnZXIpOgorICAgICAgICAoSlNDOjpERkc6OlByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlOjpu
b3RpY2VFc2NhcGluZ0ludGVnZXJzKToKKyAgICAgICAgKEpTQzo6REZHOjpQcmVkaWN0aW9uUHJv
cGFnYXRpb25QaGFzZTo6dm90ZSk6CisgICAgICAgIChKU0M6OkRGRzo6UHJlZGljdGlvblByb3Bh
Z2F0aW9uUGhhc2U6OmRvUm91bmRPZkRvdWJsZVZvdGluZyk6CisgICAgICAgIChKU0M6OkRGRzo6
UHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2U6OmZpeHVwTm9kZSk6CisgICAgICAgICogZGZnL0RG
R1ZhcmlhYmxlQWNjZXNzRGF0YS5oOgorICAgICAgICAoSlNDOjpERkc6OlZhcmlhYmxlQWNjZXNz
RGF0YTo6c2hvdWxkVXNlRG91YmxlRm9ybWF0QWNjb3JkaW5nVG9Wb3RlKToKKwogMjAxMi0wMy0y
MyAgTWljaGFlbCBTYWJvZmYgIDxtc2Fib2ZmQGFwcGxlLmNvbT4KIAogICAgICAgICBERkc6OmNv
bXBpbGVWYWx1ZVRvSW50MzIgU29tZXRpbWUgR2VuZXJhdGVzIEdQUiB0byBGUFIgcmVnIGJhY2sg
dG8gR1BSCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2Vy
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2Rl
UGFyc2VyLmNwcAkocmV2aXNpb24gMTExNzk3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdCeXRlQ29kZVBhcnNlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTk5MywxMCArOTkzLDYg
QEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlQ2FsbChJbnRlcnByZQogICAgIE5vZGVJbmRl
eCBjYWxsVGFyZ2V0ID0gZ2V0KGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQpOwogICAg
IGVudW0geyBDb25zdGFudEZ1bmN0aW9uLCBMaW5rZWRGdW5jdGlvbiwgVW5rbm93bkZ1bmN0aW9u
IH0gY2FsbFR5cGU7CiAgICAgICAgICAgICAKLSNpZiBERkdfRU5BQkxFKERFQlVHX1ZFUkJPU0Up
Ci0gICAgZGF0YUxvZygiU2xvdyBjYXNlIGNvdW50IGZvciBjYWxsIGF0IEAlenUgYmMjJXU6ICV1
LyV1OyBleGl0IHByb2ZpbGU6ICVkLlxuIiwgbV9ncmFwaC5zaXplKCksIG1fY3VycmVudEluZGV4
LCBtX2lubGluZVN0YWNrVG9wLT5tX3Byb2ZpbGVkQmxvY2stPnJhcmVDYXNlUHJvZmlsZUZvckJ5
dGVjb2RlT2Zmc2V0KG1fY3VycmVudEluZGV4KS0+bV9jb3VudGVyLCBtX2lubGluZVN0YWNrVG9w
LT5tX3Byb2ZpbGVkQmxvY2stPmV4ZWN1dGlvbkVudHJ5Q291bnQoKSwgbV9pbmxpbmVTdGFja1Rv
cC0+bV9leGl0UHJvZmlsZS5oYXNFeGl0U2l0ZShtX2N1cnJlbnRJbmRleCwgQmFkQ2FjaGUpKTsK
LSNlbmRpZgotICAgIAogICAgIENhbGxMaW5rU3RhdHVzIGNhbGxMaW5rU3RhdHVzID0gQ2FsbExp
bmtTdGF0dXM6OmNvbXB1dGVGb3IoCiAgICAgICAgIG1faW5saW5lU3RhY2tUb3AtPm1fcHJvZmls
ZWRCbG9jaywgbV9jdXJyZW50SW5kZXgpOwogICAgIApAQCAtMTg3OSwxMCArMTg3NSw2IEBAIGJv
b2wgQnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2sodW5zaWduZWQKICAgICAgICAgICAgIEdldEJ5
SWRTdGF0dXMgZ2V0QnlJZFN0YXR1cyA9IEdldEJ5SWRTdGF0dXM6OmNvbXB1dGVGb3IoCiAgICAg
ICAgICAgICAgICAgbV9pbmxpbmVTdGFja1RvcC0+bV9wcm9maWxlZEJsb2NrLCBtX2N1cnJlbnRJ
bmRleCwgaWRlbnRpZmllcik7CiAgICAgICAgICAgICAKLSNpZiBERkdfRU5BQkxFKERFQlVHX1ZF
UkJPU0UpCi0gICAgICAgICAgICBkYXRhTG9nKCJTbG93IGNhc2UgY291bnQgZm9yIEdldEJ5SWQg
QCV6dSBiYyMldTogJXU7IGV4aXQgcHJvZmlsZTogJWRcbiIsIG1fZ3JhcGguc2l6ZSgpLCBtX2N1
cnJlbnRJbmRleCwgbV9pbmxpbmVTdGFja1RvcC0+bV9wcm9maWxlZEJsb2NrLT5yYXJlQ2FzZVBy
b2ZpbGVGb3JCeXRlY29kZU9mZnNldChtX2N1cnJlbnRJbmRleCktPm1fY291bnRlciwgbV9pbmxp
bmVTdGFja1RvcC0+bV9leGl0UHJvZmlsZS5oYXNFeGl0U2l0ZShtX2N1cnJlbnRJbmRleCwgQmFk
Q2FjaGUpKTsKLSNlbmRpZgotICAgICAgICAgICAgCiAgICAgICAgICAgICBpZiAoZ2V0QnlJZFN0
YXR1cy5pc1NpbXBsZURpcmVjdCgpCiAgICAgICAgICAgICAgICAgJiYgIW1faW5saW5lU3RhY2tU
b3AtPm1fZXhpdFByb2ZpbGUuaGFzRXhpdFNpdGUobV9jdXJyZW50SW5kZXgsIEJhZENhY2hlKSkg
ewogICAgICAgICAgICAgICAgIEFTU0VSVChnZXRCeUlkU3RhdHVzLnN0cnVjdHVyZVNldCgpLnNp
emUoKSk7CkBAIC0xOTIxLDEwICsxOTEzLDYgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VC
bG9jayh1bnNpZ25lZAogICAgICAgICAgICAgCiAgICAgICAgICAgICBib29sIGhhc0V4aXRTaXRl
ID0gbV9pbmxpbmVTdGFja1RvcC0+bV9leGl0UHJvZmlsZS5oYXNFeGl0U2l0ZShtX2N1cnJlbnRJ
bmRleCwgQmFkQ2FjaGUpOwogICAgICAgICAgICAgCi0jaWYgREZHX0VOQUJMRShERUJVR19WRVJC
T1NFKQotICAgICAgICAgICAgZGF0YUxvZygiU2xvdyBjYXNlIGNvdW50IGZvciBQdXRCeUlkIEAl
enUgYmMjJXU6ICV1OyBleGl0IHByb2ZpbGU6ICVkXG4iLCBtX2dyYXBoLnNpemUoKSwgbV9jdXJy
ZW50SW5kZXgsIG1faW5saW5lU3RhY2tUb3AtPm1fcHJvZmlsZWRCbG9jay0+cmFyZUNhc2VQcm9m
aWxlRm9yQnl0ZWNvZGVPZmZzZXQobV9jdXJyZW50SW5kZXgpLT5tX2NvdW50ZXIsIG1faW5saW5l
U3RhY2tUb3AtPm1fZXhpdFByb2ZpbGUuaGFzRXhpdFNpdGUobV9jdXJyZW50SW5kZXgsIEJhZENh
Y2hlKSk7Ci0jZW5kaWYgICAgICAgICAgICAKLQogICAgICAgICAgICAgaWYgKCFoYXNFeGl0U2l0
ZSAmJiBwdXRCeUlkU3RhdHVzLmlzU2ltcGxlUmVwbGFjZSgpKSB7CiAgICAgICAgICAgICAgICAg
YWRkVG9HcmFwaChDaGVja1N0cnVjdHVyZSwgT3BJbmZvKG1fZ3JhcGguYWRkU3RydWN0dXJlU2V0
KHB1dEJ5SWRTdGF0dXMub2xkU3RydWN0dXJlKCkpKSwgYmFzZSk7CiAgICAgICAgICAgICAgICAg
YWRkVG9HcmFwaChQdXRCeU9mZnNldCwgT3BJbmZvKG1fZ3JhcGgubV9zdG9yYWdlQWNjZXNzRGF0
YS5zaXplKCkpLCBiYXNlLCBhZGRUb0dyYXBoKEdldFByb3BlcnR5U3RvcmFnZSwgYmFzZSksIHZh
bHVlKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguY3BwCShyZXZpc2lv
biAxMTE3OTcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtODQsMTMgKzg0LDEzIEBAIHN0YXRpYyB2b2lkIHByaW50V2hpdGVTcGFj
ZSh1bnNpZ25lZCBhbW8KICAgICAgICAgZGF0YUxvZygiICIpOwogfQogCi12b2lkIEdyYXBoOjpk
dW1wQ29kZU9yaWdpbihOb2RlSW5kZXggbm9kZUluZGV4KQordm9pZCBHcmFwaDo6ZHVtcENvZGVP
cmlnaW4oTm9kZUluZGV4IHByZXZOb2RlSW5kZXgsIE5vZGVJbmRleCBub2RlSW5kZXgpCiB7Ci0g
ICAgaWYgKCFub2RlSW5kZXgpCisgICAgaWYgKHByZXZOb2RlSW5kZXggPT0gTm9Ob2RlKQogICAg
ICAgICByZXR1cm47CiAgICAgCiAgICAgTm9kZSYgY3VycmVudE5vZGUgPSBhdChub2RlSW5kZXgp
OwotICAgIE5vZGUmIHByZXZpb3VzTm9kZSA9IGF0KG5vZGVJbmRleCAtIDEpOworICAgIE5vZGUm
IHByZXZpb3VzTm9kZSA9IGF0KHByZXZOb2RlSW5kZXgpOwogICAgIGlmIChwcmV2aW91c05vZGUu
Y29kZU9yaWdpbi5pbmxpbmVDYWxsRnJhbWUgPT0gY3VycmVudE5vZGUuY29kZU9yaWdpbi5pbmxp
bmVDYWxsRnJhbWUpCiAgICAgICAgIHJldHVybjsKICAgICAKQEAgLTEzMSw3ICsxMzEsNiBAQCB2
b2lkIEdyYXBoOjpkdW1wKE5vZGVJbmRleCBub2RlSW5kZXgpCiAgICAgICAgIC0tcmVmQ291bnQ7
CiAgICAgfQogICAgIAotICAgIGR1bXBDb2RlT3JpZ2luKG5vZGVJbmRleCk7CiAgICAgcHJpbnRX
aGl0ZVNwYWNlKChub2RlLmNvZGVPcmlnaW4uaW5saW5lRGVwdGgoKSAtIDEpICogMik7CiAKICAg
ICAvLyBFeGFtcGxlL2V4cGxhbmF0aW9uIG9mIGRhdGFmbG93IGR1bXAgb3V0cHV0CkBAIC0yNjMs
NiArMjYyLDcgQEAgdm9pZCBHcmFwaDo6ZHVtcChOb2RlSW5kZXggbm9kZUluZGV4KQogCiB2b2lk
IEdyYXBoOjpkdW1wKCkKIHsKKyAgICBOb2RlSW5kZXggbGFzdE5vZGVJbmRleCA9IE5vTm9kZTsK
ICAgICBmb3IgKHNpemVfdCBiID0gMDsgYiA8IG1fYmxvY2tzLnNpemUoKTsgKytiKSB7CiAgICAg
ICAgIEJhc2ljQmxvY2sqIGJsb2NrID0gbV9ibG9ja3NbYl0uZ2V0KCk7CiAgICAgICAgIGRhdGFM
b2coIkJsb2NrICMldSAoYmMjJXUpOiAlcyVzXG4iLCAoaW50KWIsIGJsb2NrLT5ieXRlY29kZUJl
Z2luLCBibG9jay0+aXNSZWFjaGFibGUgPyAiIiA6ICIgKHNraXBwZWQpIiwgYmxvY2stPmlzT1NS
VGFyZ2V0ID8gIiAoT1NSIHRhcmdldCkiIDogIiIpOwpAQCAtMjgxLDggKzI4MSwxMSBAQCB2b2lk
IEdyYXBoOjpkdW1wKCkKICAgICAgICAgZGF0YUxvZygiICB2YXIgbGlua3M6ICIpOwogICAgICAg
ICBkdW1wT3BlcmFuZHMoYmxvY2stPnZhcmlhYmxlc0F0SGVhZCwgV1RGOjpkYXRhRmlsZSgpKTsK
ICAgICAgICAgZGF0YUxvZygiXG4iKTsKLSAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBi
bG9jay0+c2l6ZSgpOyArK2kpCisgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgYmxvY2st
PnNpemUoKTsgKytpKSB7CisgICAgICAgICAgICBkdW1wQ29kZU9yaWdpbihsYXN0Tm9kZUluZGV4
LCBibG9jay0+YXQoaSkpOwogICAgICAgICAgICAgZHVtcChibG9jay0+YXQoaSkpOworICAgICAg
ICAgICAgbGFzdE5vZGVJbmRleCA9IGJsb2NrLT5hdChpKTsKKyAgICAgICAgfQogICAgICAgICBk
YXRhTG9nKCIgIHZhcnMgYWZ0ZXI6ICIpOwogICAgICAgICBpZiAoYmxvY2stPmNmYUhhc1Zpc2l0
ZWQpCiAgICAgICAgICAgICBkdW1wT3BlcmFuZHMoYmxvY2stPnZhbHVlc0F0VGFpbCwgV1RGOjpk
YXRhRmlsZSgpKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmgJKHJldmlz
aW9uIDExMTc5NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguaAkod29y
a2luZyBjb3B5KQpAQCAtMTQzLDcgKzE0Myw3IEBAIHB1YmxpYzoKIAogICAgIC8vIER1bXAgdGhl
IGNvZGUgb3JpZ2luIG9mIHRoZSBnaXZlbiBub2RlIGFzIGEgZGlmZiBmcm9tIHRoZSBjb2RlIG9y
aWdpbiBvZiB0aGUKICAgICAvLyBwcmVjZWRpbmcgbm9kZS4KLSAgICB2b2lkIGR1bXBDb2RlT3Jp
Z2luKE5vZGVJbmRleCk7CisgICAgdm9pZCBkdW1wQ29kZU9yaWdpbihOb2RlSW5kZXgsIE5vZGVJ
bmRleCk7CiAKICAgICBCbG9ja0luZGV4IGJsb2NrSW5kZXhGb3JCeXRlY29kZU9mZnNldChWZWN0
b3I8QmxvY2tJbmRleD4mIGJsb2NrcywgdW5zaWduZWQgYnl0ZWNvZGVCZWdpbik7CiAKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZUZsYWdzLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVGbGFncy5jcHAJKHJldmlzaW9uIDEx
MTc5NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZUZsYWdzLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMTIzLDYgKzEyMywyMCBAQCBjb25zdCBjaGFyKiBub2RlRmxhZ3NBc1N0
cmluZyhOb2RlRmxhZ3MgCiAgICAgICAgIGhhc1ByaW50ZWQgPSB0cnVlOwogICAgIH0KICAgICAK
KyAgICBpZiAoZmxhZ3MgJiBOb2RlRXNjYXBlc0FzSW50KSB7CisgICAgICAgIGlmIChoYXNQcmlu
dGVkKQorICAgICAgICAgICAgcHRyLnN0cmNhdCgifCIpOworICAgICAgICBwdHIuc3RyY2F0KCJF
c2NhcGVzQXNJbnQiKTsKKyAgICAgICAgaGFzUHJpbnRlZCA9IHRydWU7CisgICAgfQorICAgIAor
ICAgIGlmIChmbGFncyAmIE5vZGVVc2VkQXNJbnQpIHsKKyAgICAgICAgaWYgKGhhc1ByaW50ZWQp
CisgICAgICAgICAgICBwdHIuc3RyY2F0KCJ8Iik7CisgICAgICAgIHB0ci5zdHJjYXQoIlVzZWRB
c0ludCIpOworICAgICAgICBoYXNQcmludGVkID0gdHJ1ZTsKKyAgICB9CisgICAgCiAgICAgKnB0
cisrID0gMDsKICAgICAKICAgICByZXR1cm4gZGVzY3JpcHRpb247CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR05vZGVGbGFncy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHTm9kZUZsYWdzLmgJKHJldmlzaW9uIDExMTc5NykKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZUZsYWdzLmgJKHdvcmtpbmcgY29weSkKQEAgLTM2
LDIzICszNiwyOSBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CiAKIC8vIEVudHJp
ZXMgaW4gdGhlIE5vZGVUeXBlIGVudW0gKGJlbG93KSBhcmUgY29tcG9zZWQgb2YgYW4gaWQsIGEg
cmVzdWx0IHR5cGUgKHBvc3NpYmx5IG5vbmUpCiAvLyBhbmQgc29tZSBhZGRpdGlvbmFsIGluZm9y
bWF0aXZlIGZsYWdzIChtdXN0IGdlbmVyYXRlLCBpcyBjb25zdGFudCwgZXRjKS4KLSNkZWZpbmUg
Tm9kZVJlc3VsdE1hc2sgICAgICAgICAgICAgMHhGCi0jZGVmaW5lIE5vZGVSZXN1bHRKUyAgICAg
ICAgICAgICAgIDB4MQotI2RlZmluZSBOb2RlUmVzdWx0TnVtYmVyICAgICAgICAgICAweDIKLSNk
ZWZpbmUgTm9kZVJlc3VsdEludDMyICAgICAgICAgICAgMHgzCi0jZGVmaW5lIE5vZGVSZXN1bHRC
b29sZWFuICAgICAgICAgIDB4NAotI2RlZmluZSBOb2RlUmVzdWx0U3RvcmFnZSAgICAgICAgICAw
eDUKLSNkZWZpbmUgTm9kZU11c3RHZW5lcmF0ZSAgICAgICAgICAweDEwIC8vIHNldCBvbiBub2Rl
cyB0aGF0IGhhdmUgc2lkZSBlZmZlY3RzLCBhbmQgbWF5IG5vdCB0cml2aWFsbHkgYmUgcmVtb3Zl
ZCBieSBEQ0UuCi0jZGVmaW5lIE5vZGVIYXNWYXJBcmdzICAgICAgICAgICAgMHgyMAotI2RlZmlu
ZSBOb2RlQ2xvYmJlcnNXb3JsZCAgICAgICAgIDB4NDAKLSNkZWZpbmUgTm9kZU1pZ2h0Q2xvYmJl
ciAgICAgICAgICAweDgwCi0jZGVmaW5lIE5vZGVCYWNrUHJvcE1hc2sgICAgICAgICAweDMwMAot
I2RlZmluZSBOb2RlVXNlQm90dG9tICAgICAgICAgICAgMHgwMDAKLSNkZWZpbmUgTm9kZVVzZWRB
c051bWJlciAgICAgICAgIDB4MTAwCi0jZGVmaW5lIE5vZGVOZWVkc05lZ1plcm8gICAgICAgICAw
eDIwMAotI2RlZmluZSBOb2RlQmVoYXZpb3JNYXNrICAgICAgICAgMHhDMDAKLSNkZWZpbmUgTm9k
ZU1heU92ZXJmbG93ICAgICAgICAgIDB4NDAwCi0jZGVmaW5lIE5vZGVNYXlOZWdaZXJvICAgICAg
ICAgICAweDgwMAorI2RlZmluZSBOb2RlUmVzdWx0TWFzayAgICAgICAgICAgICAgMHhGCisjZGVm
aW5lIE5vZGVSZXN1bHRKUyAgICAgICAgICAgICAgICAweDEKKyNkZWZpbmUgTm9kZVJlc3VsdE51
bWJlciAgICAgICAgICAgIDB4MgorI2RlZmluZSBOb2RlUmVzdWx0SW50MzIgICAgICAgICAgICAg
MHgzCisjZGVmaW5lIE5vZGVSZXN1bHRCb29sZWFuICAgICAgICAgICAweDQKKyNkZWZpbmUgTm9k
ZVJlc3VsdFN0b3JhZ2UgICAgICAgICAgIDB4NQorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAKKyNkZWZpbmUgTm9kZU11c3RHZW5lcmF0ZSAgICAgICAgICAgMHgxMCAvLyBzZXQgb24g
bm9kZXMgdGhhdCBoYXZlIHNpZGUgZWZmZWN0cywgYW5kIG1heSBub3QgdHJpdmlhbGx5IGJlIHJl
bW92ZWQgYnkgRENFLgorI2RlZmluZSBOb2RlSGFzVmFyQXJncyAgICAgICAgICAgICAweDIwCisj
ZGVmaW5lIE5vZGVDbG9iYmVyc1dvcmxkICAgICAgICAgIDB4NDAKKyNkZWZpbmUgTm9kZU1pZ2h0
Q2xvYmJlciAgICAgICAgICAgMHg4MAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAK
KyNkZWZpbmUgTm9kZUJlaGF2aW9yTWFzayAgICAgICAgICAweDMwMAorI2RlZmluZSBOb2RlTWF5
T3ZlcmZsb3cgICAgICAgICAgIDB4MTAwCisjZGVmaW5lIE5vZGVNYXlOZWdaZXJvICAgICAgICAg
ICAgMHgyMDAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisjZGVmaW5lIE5vZGVC
YWNrUHJvcE1hc2sgICAgICAgICAweDNDMDAKKyNkZWZpbmUgTm9kZVVzZUJvdHRvbSAgICAgICAg
ICAgICAweDAwMAorI2RlZmluZSBOb2RlVXNlZEFzTnVtYmVyICAgICAgICAgIDB4NDAwIC8vIFRo
ZSByZXN1bHQgb2YgdGhpcyBjb21wdXRhdGlvbiBtYXkgYmUgdXNlZCBpbiBhIGNvbnRleHQgdGhh
dCBvYnNlcnZlcyBmcmFjdGlvbmFsIHJlc3VsdHMuCisjZGVmaW5lIE5vZGVOZWVkc05lZ1plcm8g
ICAgICAgICAgMHg4MDAgLy8gVGhlIHJlc3VsdCBvZiB0aGlzIGNvbXB1dGF0aW9uIG1heSBiZSB1
c2VkIGluIGEgY29udGV4dCB0aGF0IG9ic2VydmVzIC0wLgorI2RlZmluZSBOb2RlVXNlZEFzVmFs
dWUgICAgICAgICAgIChOb2RlVXNlZEFzTnVtYmVyIHwgTm9kZU5lZWRzTmVnWmVybykKKyNkZWZp
bmUgTm9kZVVzZWRBc0ludCAgICAgICAgICAgIDB4MTAwMCAvLyBUaGUgcmVzdWx0IG9mIHRoaXMg
Y29tcHV0YXRpb24gaXMga25vd24gdG8gYmUgdXNlZCBpbiBhIGNvbnRleHQgdGhhdCBwcmVmZXJz
LCBidXQgZG9lcyBub3QgcmVxdWlyZSwgaW50ZWdlciB2YWx1ZXMuCisjZGVmaW5lIE5vZGVFc2Nh
cGVzQXNJbnQgICAgICAgICAweDIwMDAgLy8gVGhlIG5vZGUgd2lsbCBwcm9kdWNlIGludGVnZXJz
IGFuZCB0aG9zZSBpbnRlZ2VycyBhcmUga25vd24gdG8gZXNjYXBlOwogCiB0eXBlZGVmIHVpbnQx
Nl90IE5vZGVGbGFnczsKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVk
aWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAJKHJldmlzaW9uIDEx
MTc5NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0
aW9uUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NSw4ICs0NSw4IEBAIHB1YmxpYzoKICNp
ZiBERkdfRU5BQkxFKERFQlVHX1BST1BBR0FUSU9OX1ZFUkJPU0UpCiAgICAgICAgIG1fY291bnQg
PSAwOwogI2VuZGlmCi0gICAgICAgIC8vIFR3byBzdGFnZSBwcm9jZXNzOiBmaXJzdCBwcm9wYWdh
dGUgcHJlZGljdGlvbnMsIHRoZW4gcHJvcGFnYXRlIHdoaWxlIGRvaW5nIGRvdWJsZSB2b3Rpbmcu
Ci0gICAgICAgIAorICAgICAgICAvLyAxKSBwcm9wYWdhdGUgcHJlZGljdGlvbnMKKwogICAgICAg
ICBkbyB7CiAgICAgICAgICAgICBtX2NoYW5nZWQgPSBmYWxzZTsKICAgICAgICAgICAgIApAQCAt
NjQsNiArNjQsMjQgQEAgcHVibGljOgogICAgICAgICAgICAgcHJvcGFnYXRlQmFja3dhcmQoKTsK
ICAgICAgICAgfSB3aGlsZSAobV9jaGFuZ2VkKTsKICAgICAgICAgCisgICAgICAgIC8vIDIpIGRl
dGVybWluZSB2YXJpYWJsZXMgdGhhdCBlc2NhcGUgYW5kIGFyZSBpbnRlZ2Vycy4gdGhpcyB3aWxs
IGJsb2NrCisgICAgICAgIC8vICAgIGRvdWJsZSB2b3RpbmcuCisKKyAgICAgICAgaWYgKG5vdGlj
ZUVzY2FwaW5nSW50ZWdlcnMoKSkgeworICAgICAgICAgICAgZG8geworICAgICAgICAgICAgICAg
IG1fY2hhbmdlZCA9IGZhbHNlOworICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIHBy
b3BhZ2F0ZUJhY2t3YXJkKCk7CisgICAgICAgICAgICAgICAgaWYgKCFtX2NoYW5nZWQpCisgICAg
ICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAg
IG1fY2hhbmdlZCA9IGZhbHNlOworICAgICAgICAgICAgICAgIHByb3BhZ2F0ZUZvcndhcmQoKTsK
KyAgICAgICAgICAgIH0gd2hpbGUgKG1fY2hhbmdlZCk7CisgICAgICAgIH0KKyAgICAgICAgCisg
ICAgICAgIC8vIDMpIHJlcHJvcGFnYXRlIHByZWRpY3Rpb25zIHdoaWxlIGRvaW5nIGRvdWJsZSB2
b3RpbmcuCisKICAgICAgICAgZG8gewogICAgICAgICAgICAgbV9jaGFuZ2VkID0gZmFsc2U7CiAg
ICAgICAgICAgICBkb1JvdW5kT2ZEb3VibGVWb3RpbmcoKTsKQEAgLTc2LDYgKzk0LDggQEAgcHVi
bGljOgogICAgICAgICAgICAgcHJvcGFnYXRlQmFja3dhcmQoKTsKICAgICAgICAgfSB3aGlsZSAo
bV9jaGFuZ2VkKTsKICAgICAgICAgCisgICAgICAgIC8vIDQpIG1ha2UgY2hhbmdlcyB0byB0aGUg
Z3JhcGggYmFzZWQgb24gcHJlZGljdGlvbnMKKyAgICAgICAgCiAgICAgICAgIGZpeHVwKCk7CiAg
ICAgfQogICAgIApAQCAtMTIxLDE0ICsxNDEsMTIgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIHJl
dHVybjsKICAgICAgICAgCiAgICAgICAgIE5vZGVUeXBlIG9wID0gbm9kZS5vcCgpOwotICAgICAg
ICBOb2RlRmxhZ3MgZmxhZ3MgPSBub2RlLmZsYWdzKCk7CisgICAgICAgIE5vZGVGbGFncyBmbGFn
cyA9IG5vZGUuZmxhZ3MoKSAmIE5vZGVCYWNrUHJvcE1hc2s7CiAKICNpZiBERkdfRU5BQkxFKERF
QlVHX1BST1BBR0FUSU9OX1ZFUkJPU0UpCiAgICAgICAgIGRhdGFMb2coIiAgICVzIEAldTogJXMg
IiwgR3JhcGg6Om9wTmFtZShvcCksIG1fY29tcGlsZUluZGV4LCBub2RlRmxhZ3NBc1N0cmluZyhm
bGFncykpOwogI2VuZGlmCiAgICAgICAgIAotICAgICAgICBmbGFncyAmPSBOb2RlQmFja1Byb3BN
YXNrOwotICAgICAgICAKICAgICAgICAgYm9vbCBjaGFuZ2VkID0gZmFsc2U7CiAgICAgICAgIAog
ICAgICAgICBzd2l0Y2ggKG9wKSB7CkBAIC0xNTgsNyArMTc2LDcgQEAgcHJpdmF0ZToKICAgICAg
ICAgY2FzZSBGbHVzaDogewogICAgICAgICAgICAgLy8gTWFrZSBzdXJlIHRoYXQgdGhlIGFuYWx5
c2lzIGtub3dzIHRoYXQgZmx1c2hlZCBsb2NhbHMgZXNjYXBlLgogICAgICAgICAgICAgVmFyaWFi
bGVBY2Nlc3NEYXRhKiB2YXJpYWJsZUFjY2Vzc0RhdGEgPSBub2RlLnZhcmlhYmxlQWNjZXNzRGF0
YSgpOwotICAgICAgICAgICAgdmFyaWFibGVBY2Nlc3NEYXRhLT5tZXJnZUZsYWdzKE5vZGVVc2Vk
QXNOdW1iZXIgfCBOb2RlTmVlZHNOZWdaZXJvKTsKKyAgICAgICAgICAgIGNoYW5nZWQgfD0gdmFy
aWFibGVBY2Nlc3NEYXRhLT5tZXJnZUZsYWdzKE5vZGVVc2VkQXNWYWx1ZSk7CiAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgfQogICAgICAgICAgICAgCkBAIC0xNjcsMzYgKzE4NSw0NyBAQCBw
cml2YXRlOgogICAgICAgICBjYXNlIEJpdFhvcjoKICAgICAgICAgY2FzZSBCaXRSU2hpZnQ6CiAg
ICAgICAgIGNhc2UgQml0TFNoaWZ0OgotICAgICAgICBjYXNlIEJpdFVSU2hpZnQ6CisgICAgICAg
IGNhc2UgQml0VVJTaGlmdDogeworICAgICAgICAgICAgY2hhbmdlZCB8PSBzZXRQcmVkaWN0aW9u
KFByZWRpY3RJbnQzMik7CisgICAgICAgICAgICBmbGFncyB8PSBOb2RlVXNlZEFzSW50OworICAg
ICAgICAgICAgZmxhZ3MgJj0gfihOb2RlVXNlZEFzTnVtYmVyIHwgTm9kZU5lZWRzTmVnWmVybyk7
CisgICAgICAgICAgICBjaGFuZ2VkIHw9IG1fZ3JhcGhbbm9kZS5jaGlsZDEoKV0ubWVyZ2VGbGFn
cyhmbGFncyk7CisgICAgICAgICAgICBjaGFuZ2VkIHw9IG1fZ3JhcGhbbm9kZS5jaGlsZDIoKV0u
bWVyZ2VGbGFncyhmbGFncyk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAg
ICAgICAgCiAgICAgICAgIGNhc2UgVmFsdWVUb0ludDMyOiB7CiAgICAgICAgICAgICBjaGFuZ2Vk
IHw9IHNldFByZWRpY3Rpb24oUHJlZGljdEludDMyKTsKKyAgICAgICAgICAgIGZsYWdzIHw9IE5v
ZGVVc2VkQXNJbnQ7CisgICAgICAgICAgICBmbGFncyAmPSB+KE5vZGVVc2VkQXNOdW1iZXIgfCBO
b2RlTmVlZHNOZWdaZXJvKTsKKyAgICAgICAgICAgIGNoYW5nZWQgfD0gbV9ncmFwaFtub2RlLmNo
aWxkMSgpXS5tZXJnZUZsYWdzKGZsYWdzKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9
CiAgICAgICAgICAgICAKICAgICAgICAgY2FzZSBBcnJheVBvcDogewotICAgICAgICAgICAgaWYg
KG5vZGUuZ2V0SGVhcFByZWRpY3Rpb24oKSkKLSAgICAgICAgICAgICAgICBjaGFuZ2VkIHw9IG1l
cmdlUHJlZGljdGlvbihub2RlLmdldEhlYXBQcmVkaWN0aW9uKCkpOworICAgICAgICAgICAgY2hh
bmdlZCB8PSBtZXJnZVByZWRpY3Rpb24obm9kZS5nZXRIZWFwUHJlZGljdGlvbigpKTsKKyAgICAg
ICAgICAgIGNoYW5nZWQgfD0gbWVyZ2VEZWZhdWx0RmxhZ3Mobm9kZSk7CiAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgfQogCiAgICAgICAgIGNhc2UgQXJyYXlQdXNoOiB7Ci0gICAgICAgICAg
ICBpZiAobm9kZS5nZXRIZWFwUHJlZGljdGlvbigpKQotICAgICAgICAgICAgICAgIGNoYW5nZWQg
fD0gbWVyZ2VQcmVkaWN0aW9uKG5vZGUuZ2V0SGVhcFByZWRpY3Rpb24oKSk7Ci0gICAgICAgICAg
ICBjaGFuZ2VkIHw9IG1lcmdlRGVmYXVsdEFyaXRoRmxhZ3Mobm9kZSwgZmxhZ3MpOworICAgICAg
ICAgICAgY2hhbmdlZCB8PSBtZXJnZVByZWRpY3Rpb24obm9kZS5nZXRIZWFwUHJlZGljdGlvbigp
KTsKKyAgICAgICAgICAgIGNoYW5nZWQgfD0gbV9ncmFwaFtub2RlLmNoaWxkMSgpXS5tZXJnZUZs
YWdzKE5vZGVVc2VkQXNWYWx1ZSk7CisgICAgICAgICAgICBjaGFuZ2VkIHw9IG1fZ3JhcGhbbm9k
ZS5jaGlsZDIoKV0ubWVyZ2VGbGFncyhOb2RlVXNlZEFzVmFsdWUpOwogICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgIH0KIAogICAgICAgICBjYXNlIFJlZ0V4cEV4ZWM6CiAgICAgICAgIGNhc2Ug
UmVnRXhwVGVzdDogewotICAgICAgICAgICAgaWYgKG5vZGUuZ2V0SGVhcFByZWRpY3Rpb24oKSkK
LSAgICAgICAgICAgICAgICBjaGFuZ2VkIHw9IG1lcmdlUHJlZGljdGlvbihub2RlLmdldEhlYXBQ
cmVkaWN0aW9uKCkpOwotICAgICAgICAgICAgY2hhbmdlZCB8PSBtZXJnZURlZmF1bHRBcml0aEZs
YWdzKG5vZGUsIGZsYWdzKTsKKyAgICAgICAgICAgIGNoYW5nZWQgfD0gbWVyZ2VQcmVkaWN0aW9u
KG5vZGUuZ2V0SGVhcFByZWRpY3Rpb24oKSk7CisgICAgICAgICAgICBjaGFuZ2VkIHw9IG1lcmdl
RGVmYXVsdEZsYWdzKG5vZGUpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KIAogICAg
ICAgICBjYXNlIFN0cmluZ0NoYXJDb2RlQXQ6IHsKICAgICAgICAgICAgIGNoYW5nZWQgfD0gbWVy
Z2VQcmVkaWN0aW9uKFByZWRpY3RJbnQzMik7Ci0gICAgICAgICAgICBjaGFuZ2VkIHw9IG1lcmdl
RGVmYXVsdEFyaXRoRmxhZ3Mobm9kZSwgZmxhZ3MpOworICAgICAgICAgICAgY2hhbmdlZCB8PSBt
X2dyYXBoW25vZGUuY2hpbGQxKCldLm1lcmdlRmxhZ3MoTm9kZVVzZWRBc1ZhbHVlKTsKKyAgICAg
ICAgICAgIGNoYW5nZWQgfD0gbV9ncmFwaFtub2RlLmNoaWxkMigpXS5tZXJnZUZsYWdzKE5vZGVV
c2VkQXNOdW1iZXIgfCBOb2RlVXNlZEFzSW50KTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICB9CiAKQEAgLTIwNSwxMyArMjM0LDE2IEBAIHByaXZhdGU6CiAgICAgICAgICAgICBQcmVkaWN0
ZWRUeXBlIHJpZ2h0ID0gbV9ncmFwaFtub2RlLmNoaWxkMigpXS5wcmVkaWN0aW9uKCk7CiAgICAg
ICAgICAgICAKICAgICAgICAgICAgIGlmIChsZWZ0ICYmIHJpZ2h0KSB7Ci0gICAgICAgICAgICAg
ICAgaWYgKGlzSW50MzJQcmVkaWN0aW9uKG1lcmdlUHJlZGljdGlvbnMobGVmdCwgcmlnaHQpKSAm
JiBub2RlQ2FuU3BlY3VsYXRlSW50ZWdlcihub2RlLmFyaXRoTm9kZUZsYWdzKCkpKQorICAgICAg
ICAgICAgICAgIGlmIChpc0ludDMyUHJlZGljdGlvbihtZXJnZVByZWRpY3Rpb25zKGxlZnQsIHJp
Z2h0KSkKKyAgICAgICAgICAgICAgICAgICAgJiYgbm9kZUNhblNwZWN1bGF0ZUludGVnZXIobm9k
ZS5hcml0aE5vZGVGbGFncygpKSkKICAgICAgICAgICAgICAgICAgICAgY2hhbmdlZCB8PSBtZXJn
ZVByZWRpY3Rpb24oUHJlZGljdEludDMyKTsKICAgICAgICAgICAgICAgICBlbHNlCiAgICAgICAg
ICAgICAgICAgICAgIGNoYW5nZWQgfD0gbWVyZ2VQcmVkaWN0aW9uKFByZWRpY3REb3VibGUpOwog
ICAgICAgICAgICAgfQogICAgICAgICAgICAgCi0gICAgICAgICAgICBjaGFuZ2VkIHw9IG1lcmdl
RGVmYXVsdEFyaXRoRmxhZ3Mobm9kZSwgZmxhZ3MpOworICAgICAgICAgICAgZmxhZ3MgfD0gTm9k
ZVVzZWRBc1ZhbHVlOworICAgICAgICAgICAgY2hhbmdlZCB8PSBtX2dyYXBoW25vZGUuY2hpbGQx
KCldLm1lcmdlRmxhZ3MoZmxhZ3MpOworICAgICAgICAgICAgY2hhbmdlZCB8PSBtX2dyYXBoW25v
ZGUuY2hpbGQyKCldLm1lcmdlRmxhZ3MoZmxhZ3MpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgIH0KICAgICAgICAgICAgIApAQCAtMzA1LDcgKzMzNyw4IEBAIHByaXZhdGU6CiAgICAgICAg
ICAgICBQcmVkaWN0ZWRUeXBlIHJpZ2h0ID0gbV9ncmFwaFtub2RlLmNoaWxkMigpXS5wcmVkaWN0
aW9uKCk7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIGlmIChsZWZ0ICYmIHJpZ2h0KSB7Ci0g
ICAgICAgICAgICAgICAgaWYgKGlzSW50MzJQcmVkaWN0aW9uKG1lcmdlUHJlZGljdGlvbnMobGVm
dCwgcmlnaHQpKSAmJiBub2RlQ2FuU3BlY3VsYXRlSW50ZWdlcihub2RlLmFyaXRoTm9kZUZsYWdz
KCkpKQorICAgICAgICAgICAgICAgIGlmIChpc0ludDMyUHJlZGljdGlvbihtZXJnZVByZWRpY3Rp
b25zKGxlZnQsIHJpZ2h0KSkKKyAgICAgICAgICAgICAgICAgICAgJiYgbm9kZUNhblNwZWN1bGF0
ZUludGVnZXIobm9kZS5hcml0aE5vZGVGbGFncygpKSkKICAgICAgICAgICAgICAgICAgICAgY2hh
bmdlZCB8PSBtZXJnZVByZWRpY3Rpb24oUHJlZGljdEludDMyKTsKICAgICAgICAgICAgICAgICBl
bHNlCiAgICAgICAgICAgICAgICAgICAgIGNoYW5nZWQgfD0gbWVyZ2VQcmVkaWN0aW9uKFByZWRp
Y3REb3VibGUpOwpAQCAtMzIzLDcgKzM1Niw4IEBAIHByaXZhdGU6CiAgICAgICAgICAgICBQcmVk
aWN0ZWRUeXBlIHJpZ2h0ID0gbV9ncmFwaFtub2RlLmNoaWxkMigpXS5wcmVkaWN0aW9uKCk7CiAg
ICAgICAgICAgICAKICAgICAgICAgICAgIGlmIChsZWZ0ICYmIHJpZ2h0KSB7Ci0gICAgICAgICAg
ICAgICAgaWYgKGlzSW50MzJQcmVkaWN0aW9uKG1lcmdlUHJlZGljdGlvbnMobGVmdCwgcmlnaHQp
KSAmJiBub2RlQ2FuU3BlY3VsYXRlSW50ZWdlcihub2RlLmFyaXRoTm9kZUZsYWdzKCkpKQorICAg
ICAgICAgICAgICAgIGlmIChpc0ludDMyUHJlZGljdGlvbihtZXJnZVByZWRpY3Rpb25zKGxlZnQs
IHJpZ2h0KSkKKyAgICAgICAgICAgICAgICAgICAgJiYgbm9kZUNhblNwZWN1bGF0ZUludGVnZXIo
bm9kZS5hcml0aE5vZGVGbGFncygpKSkKICAgICAgICAgICAgICAgICAgICAgY2hhbmdlZCB8PSBt
ZXJnZVByZWRpY3Rpb24oUHJlZGljdEludDMyKTsKICAgICAgICAgICAgICAgICBlbHNlCiAgICAg
ICAgICAgICAgICAgICAgIGNoYW5nZWQgfD0gbWVyZ2VQcmVkaWN0aW9uKFByZWRpY3REb3VibGUp
OwpAQCAtMzQyLDE4ICszNzYsMTYgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIAogICAgICAgICBj
YXNlIEFyaXRoU3FydDogewogICAgICAgICAgICAgY2hhbmdlZCB8PSBzZXRQcmVkaWN0aW9uKFBy
ZWRpY3REb3VibGUpOwotICAgICAgICAgICAgY2hhbmdlZCB8PSBtZXJnZURlZmF1bHRBcml0aEZs
YWdzKG5vZGUsIGZsYWdzKTsKKyAgICAgICAgICAgIGNoYW5nZWQgfD0gbV9ncmFwaFtub2RlLmNo
aWxkMSgpXS5tZXJnZUZsYWdzKGZsYWdzIHwgTm9kZVVzZWRBc1ZhbHVlKTsKICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICB9CiAgICAgICAgICAgICAKICAgICAgICAgY2FzZSBBcml0aEFiczog
ewogICAgICAgICAgICAgUHJlZGljdGVkVHlwZSBjaGlsZCA9IG1fZ3JhcGhbbm9kZS5jaGlsZDEo
KV0ucHJlZGljdGlvbigpOwotICAgICAgICAgICAgaWYgKGNoaWxkKSB7Ci0gICAgICAgICAgICAg
ICAgaWYgKG5vZGVDYW5TcGVjdWxhdGVJbnRlZ2VyKG5vZGUuYXJpdGhOb2RlRmxhZ3MoKSkpCi0g
ICAgICAgICAgICAgICAgICAgIGNoYW5nZWQgfD0gbWVyZ2VQcmVkaWN0aW9uKGNoaWxkKTsKLSAg
ICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAgIGNoYW5nZWQgfD0gc2V0UHJl
ZGljdGlvbihQcmVkaWN0RG91YmxlKTsKLSAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChu
b2RlQ2FuU3BlY3VsYXRlSW50ZWdlcihub2RlLmFyaXRoTm9kZUZsYWdzKCkpKQorICAgICAgICAg
ICAgICAgIGNoYW5nZWQgfD0gbWVyZ2VQcmVkaWN0aW9uKGNoaWxkKTsKKyAgICAgICAgICAgIGVs
c2UKKyAgICAgICAgICAgICAgICBjaGFuZ2VkIHw9IHNldFByZWRpY3Rpb24oUHJlZGljdERvdWJs
ZSk7CiAKICAgICAgICAgICAgIGZsYWdzICY9IH5Ob2RlTmVlZHNOZWdaZXJvOwogICAgICAgICAg
ICAgY2hhbmdlZCB8PSBtX2dyYXBoW25vZGUuY2hpbGQxKCldLm1lcmdlRmxhZ3MoZmxhZ3MpOwpA
QCAtMzY5LDcxICs0MDEsNTMgQEAgcHJpdmF0ZToKICAgICAgICAgY2FzZSBDb21wYXJlU3RyaWN0
RXE6CiAgICAgICAgIGNhc2UgSW5zdGFuY2VPZjogewogICAgICAgICAgICAgY2hhbmdlZCB8PSBz
ZXRQcmVkaWN0aW9uKFByZWRpY3RCb29sZWFuKTsKLSAgICAgICAgICAgIGNoYW5nZWQgfD0gbWVy
Z2VEZWZhdWx0QXJpdGhGbGFncyhub2RlLCBmbGFncyk7CisgICAgICAgICAgICBjaGFuZ2VkIHw9
IG1lcmdlRGVmYXVsdEZsYWdzKG5vZGUpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0K
ICAgICAgICAgICAgIAogICAgICAgICBjYXNlIEdldEJ5SWQ6IHsKLSAgICAgICAgICAgIGlmIChu
b2RlLmdldEhlYXBQcmVkaWN0aW9uKCkpCi0gICAgICAgICAgICAgICAgY2hhbmdlZCB8PSBtZXJn
ZVByZWRpY3Rpb24obm9kZS5nZXRIZWFwUHJlZGljdGlvbigpKTsKLSAgICAgICAgICAgIGVsc2Ug
aWYgKGNvZGVCbG9jaygpLT5pZGVudGlmaWVyKG5vZGUuaWRlbnRpZmllck51bWJlcigpKSA9PSBn
bG9iYWxEYXRhKCkucHJvcGVydHlOYW1lcy0+bGVuZ3RoKSB7Ci0gICAgICAgICAgICAgICAgLy8g
SWYgdGhlcmUgaXMgbm8gcHJlZGljdGlvbiBmcm9tIHZhbHVlIHByb2ZpbGVzLCBjaGVjayBpZiB3
ZSBtaWdodCBiZQotICAgICAgICAgICAgICAgIC8vIGFibGUgdG8gaW5mZXIgdGhlIHR5cGUgb3Vy
c2VsdmVzLgotICAgICAgICAgICAgICAgIGJvb2wgaXNBcnJheSA9IGlzQXJyYXlQcmVkaWN0aW9u
KG1fZ3JhcGhbbm9kZS5jaGlsZDEoKV0ucHJlZGljdGlvbigpKTsKLSAgICAgICAgICAgICAgICBi
b29sIGlzU3RyaW5nID0gaXNTdHJpbmdQcmVkaWN0aW9uKG1fZ3JhcGhbbm9kZS5jaGlsZDEoKV0u
cHJlZGljdGlvbigpKTsKLSAgICAgICAgICAgICAgICBib29sIGlzQnl0ZUFycmF5ID0gbV9ncmFw
aFtub2RlLmNoaWxkMSgpXS5zaG91bGRTcGVjdWxhdGVCeXRlQXJyYXkoKTsKLSAgICAgICAgICAg
ICAgICBib29sIGlzSW50OEFycmF5ID0gbV9ncmFwaFtub2RlLmNoaWxkMSgpXS5zaG91bGRTcGVj
dWxhdGVJbnQ4QXJyYXkoKTsKLSAgICAgICAgICAgICAgICBib29sIGlzSW50MTZBcnJheSA9IG1f
Z3JhcGhbbm9kZS5jaGlsZDEoKV0uc2hvdWxkU3BlY3VsYXRlSW50MTZBcnJheSgpOwotICAgICAg
ICAgICAgICAgIGJvb2wgaXNJbnQzMkFycmF5ID0gbV9ncmFwaFtub2RlLmNoaWxkMSgpXS5zaG91
bGRTcGVjdWxhdGVJbnQzMkFycmF5KCk7Ci0gICAgICAgICAgICAgICAgYm9vbCBpc1VpbnQ4QXJy
YXkgPSBtX2dyYXBoW25vZGUuY2hpbGQxKCldLnNob3VsZFNwZWN1bGF0ZVVpbnQ4QXJyYXkoKTsK
LSAgICAgICAgICAgICAgICBib29sIGlzVWludDhDbGFtcGVkQXJyYXkgPSBtX2dyYXBoW25vZGUu
Y2hpbGQxKCldLnNob3VsZFNwZWN1bGF0ZVVpbnQ4Q2xhbXBlZEFycmF5KCk7Ci0gICAgICAgICAg
ICAgICAgYm9vbCBpc1VpbnQxNkFycmF5ID0gbV9ncmFwaFtub2RlLmNoaWxkMSgpXS5zaG91bGRT
cGVjdWxhdGVVaW50MTZBcnJheSgpOwotICAgICAgICAgICAgICAgIGJvb2wgaXNVaW50MzJBcnJh
eSA9IG1fZ3JhcGhbbm9kZS5jaGlsZDEoKV0uc2hvdWxkU3BlY3VsYXRlVWludDMyQXJyYXkoKTsK
LSAgICAgICAgICAgICAgICBib29sIGlzRmxvYXQzMkFycmF5ID0gbV9ncmFwaFtub2RlLmNoaWxk
MSgpXS5zaG91bGRTcGVjdWxhdGVGbG9hdDMyQXJyYXkoKTsKLSAgICAgICAgICAgICAgICBib29s
IGlzRmxvYXQ2NEFycmF5ID0gbV9ncmFwaFtub2RlLmNoaWxkMSgpXS5zaG91bGRTcGVjdWxhdGVG
bG9hdDY0QXJyYXkoKTsKLSAgICAgICAgICAgICAgICBpZiAoaXNBcnJheSB8fCBpc1N0cmluZyB8
fCBpc0J5dGVBcnJheSB8fCBpc0ludDhBcnJheSB8fCBpc0ludDE2QXJyYXkgfHwgaXNJbnQzMkFy
cmF5IHx8IGlzVWludDhBcnJheSB8fCBpc1VpbnQ4Q2xhbXBlZEFycmF5IHx8IGlzVWludDE2QXJy
YXkgfHwgaXNVaW50MzJBcnJheSB8fCBpc0Zsb2F0MzJBcnJheSB8fCBpc0Zsb2F0NjRBcnJheSkK
LSAgICAgICAgICAgICAgICAgICAgY2hhbmdlZCB8PSBtZXJnZVByZWRpY3Rpb24oUHJlZGljdElu
dDMyKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGNoYW5nZWQgfD0gbWVyZ2VEZWZhdWx0
QXJpdGhGbGFncyhub2RlLCBmbGFncyk7CisgICAgICAgICAgICBjaGFuZ2VkIHw9IG1lcmdlUHJl
ZGljdGlvbihub2RlLmdldEhlYXBQcmVkaWN0aW9uKCkpOworICAgICAgICAgICAgY2hhbmdlZCB8
PSBtZXJnZURlZmF1bHRGbGFncyhub2RlKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9
CiAgICAgICAgICAgICAKICAgICAgICAgY2FzZSBHZXRCeUlkRmx1c2g6Ci0gICAgICAgICAgICBp
ZiAobm9kZS5nZXRIZWFwUHJlZGljdGlvbigpKQotICAgICAgICAgICAgICAgIGNoYW5nZWQgfD0g
bWVyZ2VQcmVkaWN0aW9uKG5vZGUuZ2V0SGVhcFByZWRpY3Rpb24oKSk7Ci0gICAgICAgICAgICBj
aGFuZ2VkIHw9IG1lcmdlRGVmYXVsdEFyaXRoRmxhZ3Mobm9kZSwgZmxhZ3MpOworICAgICAgICAg
ICAgY2hhbmdlZCB8PSBtZXJnZVByZWRpY3Rpb24obm9kZS5nZXRIZWFwUHJlZGljdGlvbigpKTsK
KyAgICAgICAgICAgIGNoYW5nZWQgfD0gbWVyZ2VEZWZhdWx0RmxhZ3Mobm9kZSk7CiAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgICAgIAogICAgICAgICBjYXNlIEdldEJ5VmFsOiB7Ci0gICAg
ICAgICAgICBpZiAobV9ncmFwaFtub2RlLmNoaWxkMSgpXS5zaG91bGRTcGVjdWxhdGVGbG9hdDMy
QXJyYXkoKSB8fCBtX2dyYXBoW25vZGUuY2hpbGQxKCldLnNob3VsZFNwZWN1bGF0ZUZsb2F0NjRB
cnJheSgpKQorICAgICAgICAgICAgaWYgKG1fZ3JhcGhbbm9kZS5jaGlsZDEoKV0uc2hvdWxkU3Bl
Y3VsYXRlRmxvYXQzMkFycmF5KCkKKyAgICAgICAgICAgICAgICB8fCBtX2dyYXBoW25vZGUuY2hp
bGQxKCldLnNob3VsZFNwZWN1bGF0ZUZsb2F0NjRBcnJheSgpKQogICAgICAgICAgICAgICAgIGNo
YW5nZWQgfD0gbWVyZ2VQcmVkaWN0aW9uKFByZWRpY3REb3VibGUpOwotICAgICAgICAgICAgZWxz
ZSBpZiAobm9kZS5nZXRIZWFwUHJlZGljdGlvbigpKQorICAgICAgICAgICAgZWxzZQogICAgICAg
ICAgICAgICAgIGNoYW5nZWQgfD0gbWVyZ2VQcmVkaWN0aW9uKG5vZGUuZ2V0SGVhcFByZWRpY3Rp
b24oKSk7CiAKLSAgICAgICAgICAgIGNoYW5nZWQgfD0gbV9ncmFwaFtub2RlLmNoaWxkMSgpXS5t
ZXJnZUZsYWdzKGZsYWdzIHwgTm9kZVVzZWRBc051bWJlciB8IE5vZGVOZWVkc05lZ1plcm8pOwot
ICAgICAgICAgICAgY2hhbmdlZCB8PSBtX2dyYXBoW25vZGUuY2hpbGQyKCldLm1lcmdlRmxhZ3Mo
ZmxhZ3MgfCBOb2RlVXNlZEFzTnVtYmVyKTsKKyAgICAgICAgICAgIGNoYW5nZWQgfD0gbV9ncmFw
aFtub2RlLmNoaWxkMSgpXS5tZXJnZUZsYWdzKE5vZGVVc2VkQXNWYWx1ZSk7CisgICAgICAgICAg
ICBjaGFuZ2VkIHw9IG1fZ3JhcGhbbm9kZS5jaGlsZDIoKV0ubWVyZ2VGbGFncyhOb2RlVXNlZEFz
TnVtYmVyIHwgTm9kZVVzZWRBc0ludCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQog
ICAgICAgICAgICAgCiAgICAgICAgIGNhc2UgR2V0UHJvcGVydHlTdG9yYWdlOiAKICAgICAgICAg
Y2FzZSBHZXRJbmRleGVkUHJvcGVydHlTdG9yYWdlOiB7CiAgICAgICAgICAgICBjaGFuZ2VkIHw9
IHNldFByZWRpY3Rpb24oUHJlZGljdE90aGVyKTsKLSAgICAgICAgICAgIGNoYW5nZWQgfD0gbWVy
Z2VEZWZhdWx0QXJpdGhGbGFncyhub2RlLCBmbGFncyk7CisgICAgICAgICAgICBjaGFuZ2VkIHw9
IG1lcmdlRGVmYXVsdEZsYWdzKG5vZGUpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0K
IAogICAgICAgICBjYXNlIEdldEJ5T2Zmc2V0OiB7Ci0gICAgICAgICAgICBpZiAobm9kZS5nZXRI
ZWFwUHJlZGljdGlvbigpKQotICAgICAgICAgICAgICAgIGNoYW5nZWQgfD0gbWVyZ2VQcmVkaWN0
aW9uKG5vZGUuZ2V0SGVhcFByZWRpY3Rpb24oKSk7Ci0gICAgICAgICAgICBjaGFuZ2VkIHw9IG1l
cmdlRGVmYXVsdEFyaXRoRmxhZ3Mobm9kZSwgZmxhZ3MpOworICAgICAgICAgICAgY2hhbmdlZCB8
PSBtZXJnZVByZWRpY3Rpb24obm9kZS5nZXRIZWFwUHJlZGljdGlvbigpKTsKKyAgICAgICAgICAg
IGNoYW5nZWQgfD0gbWVyZ2VEZWZhdWx0RmxhZ3Mobm9kZSk7CiAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgfQogICAgICAgICAgICAgCiAgICAgICAgIGNhc2UgQ2FsbDoKICAgICAgICAgY2Fz
ZSBDb25zdHJ1Y3Q6IHsKLSAgICAgICAgICAgIGlmIChub2RlLmdldEhlYXBQcmVkaWN0aW9uKCkp
Ci0gICAgICAgICAgICAgICAgY2hhbmdlZCB8PSBtZXJnZVByZWRpY3Rpb24obm9kZS5nZXRIZWFw
UHJlZGljdGlvbigpKTsKLSAgICAgICAgICAgIGNoYW5nZWQgfD0gbWVyZ2VEZWZhdWx0QXJpdGhG
bGFncyhub2RlLCBmbGFncyk7CisgICAgICAgICAgICBjaGFuZ2VkIHw9IG1lcmdlUHJlZGljdGlv
bihub2RlLmdldEhlYXBQcmVkaWN0aW9uKCkpOworICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBj
aGlsZElkeCA9IG5vZGUuZmlyc3RDaGlsZCgpOworICAgICAgICAgICAgICAgICBjaGlsZElkeCA8
IG5vZGUuZmlyc3RDaGlsZCgpICsgbm9kZS5udW1DaGlsZHJlbigpOworICAgICAgICAgICAgICAg
ICArK2NoaWxkSWR4KQorICAgICAgICAgICAgICAgIGNoYW5nZWQgfD0gbV9ncmFwaFttX2dyYXBo
Lm1fdmFyQXJnQ2hpbGRyZW5bY2hpbGRJZHhdXS5tZXJnZUZsYWdzKE5vZGVVc2VkQXNWYWx1ZSk7
CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICAgICAgCkBAIC00NDYsMjAg
KzQ2MCwyMCBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBj
aGFuZ2VkIHw9IG1lcmdlUHJlZGljdGlvbihwcmVkaWN0aW9uKTsKICAgICAgICAgICAgIH0KLSAg
ICAgICAgICAgIGNoYW5nZWQgfD0gbWVyZ2VEZWZhdWx0QXJpdGhGbGFncyhub2RlLCBmbGFncyk7
CisgICAgICAgICAgICBjaGFuZ2VkIHw9IG1lcmdlRGVmYXVsdEZsYWdzKG5vZGUpOwogICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgICAgIAogICAgICAgICBjYXNlIEdldEds
b2JhbFZhcjogewogICAgICAgICAgICAgUHJlZGljdGVkVHlwZSBwcmVkaWN0aW9uID0gbV9ncmFw
aC5nZXRHbG9iYWxWYXJQcmVkaWN0aW9uKG5vZGUudmFyTnVtYmVyKCkpOwotICAgICAgICAgICAg
aWYgKHByZWRpY3Rpb24pCi0gICAgICAgICAgICAgICAgY2hhbmdlZCB8PSBtZXJnZVByZWRpY3Rp
b24ocHJlZGljdGlvbik7CisgICAgICAgICAgICBjaGFuZ2VkIHw9IG1lcmdlUHJlZGljdGlvbihw
cmVkaWN0aW9uKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgICAgICAK
ICAgICAgICAgY2FzZSBQdXRHbG9iYWxWYXI6IHsKLSAgICAgICAgICAgIGNoYW5nZWQgfD0gbV9n
cmFwaC5wcmVkaWN0R2xvYmFsVmFyKG5vZGUudmFyTnVtYmVyKCksIG1fZ3JhcGhbbm9kZS5jaGls
ZDEoKV0ucHJlZGljdGlvbigpKTsKLSAgICAgICAgICAgIGNoYW5nZWQgfD0gbWVyZ2VEZWZhdWx0
QXJpdGhGbGFncyhub2RlLCBmbGFncyk7CisgICAgICAgICAgICBjaGFuZ2VkIHw9IG1fZ3JhcGgu
cHJlZGljdEdsb2JhbFZhcigKKyAgICAgICAgICAgICAgICBub2RlLnZhck51bWJlcigpLCBtX2dy
YXBoW25vZGUuY2hpbGQxKCldLnByZWRpY3Rpb24oKSk7CisgICAgICAgICAgICBjaGFuZ2VkIHw9
IG1fZ3JhcGhbbm9kZS5jaGlsZDEoKV0ubWVyZ2VGbGFncyhOb2RlVXNlZEFzVmFsdWUpOwogICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgICAgIApAQCAtNDY5LDggKzQ4Myw3
IEBAIHByaXZhdGU6CiAgICAgICAgIGNhc2UgUmVzb2x2ZUJhc2VTdHJpY3RQdXQ6CiAgICAgICAg
IGNhc2UgUmVzb2x2ZUdsb2JhbDogewogICAgICAgICAgICAgUHJlZGljdGVkVHlwZSBwcmVkaWN0
aW9uID0gbm9kZS5nZXRIZWFwUHJlZGljdGlvbigpOwotICAgICAgICAgICAgaWYgKHByZWRpY3Rp
b24pCi0gICAgICAgICAgICAgICAgY2hhbmdlZCB8PSBtZXJnZVByZWRpY3Rpb24ocHJlZGljdGlv
bik7CisgICAgICAgICAgICBjaGFuZ2VkIHw9IG1lcmdlUHJlZGljdGlvbihwcmVkaWN0aW9uKTsK
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgICAgICAKQEAgLTQ4NywxNCAr
NTAwLDIxIEBAIHByaXZhdGU6CiAgICAgICAgIGNhc2UgQ3JlYXRlVGhpczoKICAgICAgICAgY2Fz
ZSBOZXdPYmplY3Q6IHsKICAgICAgICAgICAgIGNoYW5nZWQgfD0gc2V0UHJlZGljdGlvbihQcmVk
aWN0RmluYWxPYmplY3QpOwotICAgICAgICAgICAgY2hhbmdlZCB8PSBtZXJnZURlZmF1bHRBcml0
aEZsYWdzKG5vZGUsIGZsYWdzKTsKKyAgICAgICAgICAgIGNoYW5nZWQgfD0gbWVyZ2VEZWZhdWx0
RmxhZ3Mobm9kZSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICAgICAg
CisgICAgICAgIGNhc2UgTmV3QXJyYXk6IHsKKyAgICAgICAgICAgIGNoYW5nZWQgfD0gc2V0UHJl
ZGljdGlvbihQcmVkaWN0QXJyYXkpOworICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBjaGlsZElk
eCA9IG5vZGUuZmlyc3RDaGlsZCgpOworICAgICAgICAgICAgICAgICBjaGlsZElkeCA8IG5vZGUu
Zmlyc3RDaGlsZCgpICsgbm9kZS5udW1DaGlsZHJlbigpOworICAgICAgICAgICAgICAgICArK2No
aWxkSWR4KQorICAgICAgICAgICAgICAgIGNoYW5nZWQgfD0gbV9ncmFwaFttX2dyYXBoLm1fdmFy
QXJnQ2hpbGRyZW5bY2hpbGRJZHhdXS5tZXJnZUZsYWdzKE5vZGVVc2VkQXNWYWx1ZSk7CiAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICAgICAgCi0gICAgICAgIGNhc2UgTmV3
QXJyYXk6CiAgICAgICAgIGNhc2UgTmV3QXJyYXlCdWZmZXI6IHsKICAgICAgICAgICAgIGNoYW5n
ZWQgfD0gc2V0UHJlZGljdGlvbihQcmVkaWN0QXJyYXkpOwotICAgICAgICAgICAgY2hhbmdlZCB8
PSBtZXJnZURlZmF1bHRBcml0aEZsYWdzKG5vZGUsIGZsYWdzKTsKICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICB9CiAgICAgICAgICAgICAKQEAgLTUwMywxMCArNTIzLDE5IEBAIHByaXZhdGU6
CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICAKLSAgICAgICAgY2FzZSBT
dHJpbmdDaGFyQXQ6CisgICAgICAgIGNhc2UgU3RyaW5nQ2hhckF0OiB7CisgICAgICAgICAgICBj
aGFuZ2VkIHw9IHNldFByZWRpY3Rpb24oUHJlZGljdFN0cmluZyk7CisgICAgICAgICAgICBjaGFu
Z2VkIHw9IG1fZ3JhcGhbbm9kZS5jaGlsZDEoKV0ubWVyZ2VGbGFncyhOb2RlVXNlZEFzVmFsdWUp
OworICAgICAgICAgICAgY2hhbmdlZCB8PSBtX2dyYXBoW25vZGUuY2hpbGQyKCldLm1lcmdlRmxh
Z3MoTm9kZVVzZWRBc051bWJlciB8IE5vZGVVc2VkQXNJbnQpOworICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgIH0KKyAgICAgICAgICAgIAogICAgICAgICBjYXNlIFN0ckNhdDogewogICAgICAg
ICAgICAgY2hhbmdlZCB8PSBzZXRQcmVkaWN0aW9uKFByZWRpY3RTdHJpbmcpOwotICAgICAgICAg
ICAgY2hhbmdlZCB8PSBtZXJnZURlZmF1bHRBcml0aEZsYWdzKG5vZGUsIGZsYWdzKTsKKyAgICAg
ICAgICAgIGZvciAodW5zaWduZWQgY2hpbGRJZHggPSBub2RlLmZpcnN0Q2hpbGQoKTsKKyAgICAg
ICAgICAgICAgICAgY2hpbGRJZHggPCBub2RlLmZpcnN0Q2hpbGQoKSArIG5vZGUubnVtQ2hpbGRy
ZW4oKTsKKyAgICAgICAgICAgICAgICAgKytjaGlsZElkeCkKKyAgICAgICAgICAgICAgICBjaGFu
Z2VkIHw9IG1fZ3JhcGhbbV9ncmFwaC5tX3ZhckFyZ0NoaWxkcmVuW2NoaWxkSWR4XV0ubWVyZ2VG
bGFncyhOb2RlVXNlZEFzTnVtYmVyKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAg
ICAgICAgICAgICAKQEAgLTUyMyw3ICs1NTIsOCBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAg
IH0gZWxzZSBpZiAoY2hpbGQgJiBQcmVkaWN0T2JqZWN0TWFzaykgewogICAgICAgICAgICAgICAg
ICAgICAvLyBPYmplY3RzIGdldCB0dXJuZWQgaW50byBzdHJpbmdzLiBTbyBpZiB0aGUgaW5wdXQg
aGFzIGhpbnRzIG9mIG9iamVjdG5lc3MsCiAgICAgICAgICAgICAgICAgICAgIC8vIHRoZSBvdXRw
dXQgd2lsbCBoYXZlIGhpbnN0cyBvZiBzdHJpbmdpbmVzcy4KLSAgICAgICAgICAgICAgICAgICAg
Y2hhbmdlZCB8PSBtZXJnZVByZWRpY3Rpb24obWVyZ2VQcmVkaWN0aW9ucyhjaGlsZCAmIH5QcmVk
aWN0T2JqZWN0TWFzaywgUHJlZGljdFN0cmluZykpOworICAgICAgICAgICAgICAgICAgICBjaGFu
Z2VkIHw9IG1lcmdlUHJlZGljdGlvbigKKyAgICAgICAgICAgICAgICAgICAgICAgIG1lcmdlUHJl
ZGljdGlvbnMoY2hpbGQgJiB+UHJlZGljdE9iamVjdE1hc2ssIFByZWRpY3RTdHJpbmcpKTsKICAg
ICAgICAgICAgICAgICB9IGVsc2UKICAgICAgICAgICAgICAgICAgICAgY2hhbmdlZCB8PSBtZXJn
ZVByZWRpY3Rpb24oY2hpbGQpOwogICAgICAgICAgICAgfQpAQCAtNTQzLDYgKzU3Myw3IEBAIHBy
aXZhdGU6CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICAgICAgCisgICAg
ICAgIGNhc2UgUHV0QnlWYWxBbGlhczoKICAgICAgICAgY2FzZSBHZXRBcnJheUxlbmd0aDoKICAg
ICAgICAgY2FzZSBHZXRCeXRlQXJyYXlMZW5ndGg6CiAgICAgICAgIGNhc2UgR2V0SW50OEFycmF5
TGVuZ3RoOgpAQCAtNTYyLDMzICs1OTMsNDUgQEAgcHJpdmF0ZToKICAgICAgICAgfQogICAgICAg
ICAKICAgICAgICAgY2FzZSBQdXRCeVZhbDoKLSAgICAgICAgICAgIGNoYW5nZWQgfD0gbV9ncmFw
aFtub2RlLmNoaWxkMSgpXS5tZXJnZUZsYWdzKGZsYWdzIHwgTm9kZVVzZWRBc051bWJlciB8IE5v
ZGVOZWVkc05lZ1plcm8pOwotICAgICAgICAgICAgY2hhbmdlZCB8PSBtX2dyYXBoW25vZGUuY2hp
bGQyKCldLm1lcmdlRmxhZ3MoZmxhZ3MgfCBOb2RlVXNlZEFzTnVtYmVyKTsKLSAgICAgICAgICAg
IGNoYW5nZWQgfD0gbV9ncmFwaFtub2RlLmNoaWxkMygpXS5tZXJnZUZsYWdzKGZsYWdzIHwgTm9k
ZVVzZWRBc051bWJlciB8IE5vZGVOZWVkc05lZ1plcm8pOworICAgICAgICAgICAgY2hhbmdlZCB8
PSBtX2dyYXBoW25vZGUuY2hpbGQxKCldLm1lcmdlRmxhZ3MoTm9kZVVzZWRBc1ZhbHVlKTsKKyAg
ICAgICAgICAgIGNoYW5nZWQgfD0gbV9ncmFwaFtub2RlLmNoaWxkMigpXS5tZXJnZUZsYWdzKE5v
ZGVVc2VkQXNOdW1iZXIgfCBOb2RlVXNlZEFzSW50KTsKKyAgICAgICAgICAgIGNoYW5nZWQgfD0g
bV9ncmFwaFtub2RlLmNoaWxkMygpXS5tZXJnZUZsYWdzKE5vZGVVc2VkQXNWYWx1ZSk7CisgICAg
ICAgICAgICBicmVhazsKKworICAgICAgICBjYXNlIFB1dFNjb3BlZFZhcjoKKyAgICAgICAgY2Fz
ZSBSZXR1cm46CisgICAgICAgIGNhc2UgVGhyb3c6CisgICAgICAgICAgICBjaGFuZ2VkIHw9IG1f
Z3JhcGhbbm9kZS5jaGlsZDEoKV0ubWVyZ2VGbGFncyhOb2RlVXNlZEFzVmFsdWUpOworICAgICAg
ICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSBQdXRCeUlkOgorICAgICAgICBjYXNlIFB1dEJ5
SWREaXJlY3Q6CisgICAgICAgICAgICBjaGFuZ2VkIHw9IG1fZ3JhcGhbbm9kZS5jaGlsZDEoKV0u
bWVyZ2VGbGFncyhOb2RlVXNlZEFzVmFsdWUpOworICAgICAgICAgICAgY2hhbmdlZCB8PSBtX2dy
YXBoW25vZGUuY2hpbGQyKCldLm1lcmdlRmxhZ3MoTm9kZVVzZWRBc1ZhbHVlKTsKKyAgICAgICAg
ICAgIGJyZWFrOworCisgICAgICAgIGNhc2UgUHV0QnlPZmZzZXQ6CisgICAgICAgICAgICBjaGFu
Z2VkIHw9IG1fZ3JhcGhbbm9kZS5jaGlsZDEoKV0ubWVyZ2VGbGFncyhOb2RlVXNlZEFzVmFsdWUp
OworICAgICAgICAgICAgY2hhbmdlZCB8PSBtX2dyYXBoW25vZGUuY2hpbGQzKCldLm1lcmdlRmxh
Z3MoTm9kZVVzZWRBc1ZhbHVlKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgCisg
ICAgICAgIGNhc2UgUGhpOgogICAgICAgICAgICAgYnJlYWs7CiAKICNpZm5kZWYgTkRFQlVHCiAg
ICAgICAgIC8vIFRoZXNlIGdldCBpZ25vcmVkIGJlY2F1c2UgdGhleSBkb24ndCByZXR1cm4gYW55
dGhpbmcuCi0gICAgICAgIGNhc2UgUHV0U2NvcGVkVmFyOgogICAgICAgICBjYXNlIERGRzo6SnVt
cDoKICAgICAgICAgY2FzZSBCcmFuY2g6CiAgICAgICAgIGNhc2UgQnJlYWtwb2ludDoKLSAgICAg
ICAgY2FzZSBSZXR1cm46CiAgICAgICAgIGNhc2UgQ2hlY2tIYXNJbnN0YW5jZToKLSAgICAgICAg
Y2FzZSBQaGk6Ci0gICAgICAgIGNhc2UgVGhyb3c6CiAgICAgICAgIGNhc2UgVGhyb3dSZWZlcmVu
Y2VFcnJvcjoKICAgICAgICAgY2FzZSBGb3JjZU9TUkV4aXQ6CiAgICAgICAgIGNhc2UgU2V0QXJn
dW1lbnQ6Ci0gICAgICAgIGNhc2UgUHV0QnlWYWxBbGlhczoKLSAgICAgICAgY2FzZSBQdXRCeUlk
OgotICAgICAgICBjYXNlIFB1dEJ5SWREaXJlY3Q6CiAgICAgICAgIGNhc2UgQ2hlY2tTdHJ1Y3R1
cmU6CiAgICAgICAgIGNhc2UgQ2hlY2tGdW5jdGlvbjoKICAgICAgICAgY2FzZSBQdXRTdHJ1Y3R1
cmU6Ci0gICAgICAgIGNhc2UgUHV0QnlPZmZzZXQ6CiAgICAgICAgIGNhc2UgVGVhck9mZkFjdGl2
YXRpb246Ci0gICAgICAgICAgICBjaGFuZ2VkIHw9IG1lcmdlRGVmYXVsdEFyaXRoRmxhZ3Mobm9k
ZSwgZmxhZ3MpOworICAgICAgICAgICAgY2hhbmdlZCB8PSBtZXJnZURlZmF1bHRGbGFncyhub2Rl
KTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgCiAgICAgICAgIC8vIFRoZXNlIGdl
dHMgaWdub3JlZCBiZWNhdXNlIGl0IGRvZXNuJ3QgZG8gYW55dGhpbmcuCkBAIC02MDIsNyArNjQ1
LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIGJyZWFrOwogI2Vsc2UKICAgICAgICAgZGVmYXVs
dDoKLSAgICAgICAgICAgIGNoYW5nZWQgfD0gbWVyZ2VEZWZhdWx0QXJpdGhGbGFncyhub2RlLCBm
bGFncyk7CisgICAgICAgICAgICBjaGFuZ2VkIHw9IG1lcmdlRGVmYXVsdEZsYWdzKG5vZGUpOwog
ICAgICAgICAgICAgYnJlYWs7CiAjZW5kaWYKICAgICAgICAgfQpAQCAtNjEzLDI0ICs2NTYsMjUg
QEAgcHJpdmF0ZToKICAgICAgICAgCiAgICAgICAgIG1fY2hhbmdlZCB8PSBjaGFuZ2VkOwogICAg
IH0KLSAgICAKLSAgICBib29sIG1lcmdlRGVmYXVsdEFyaXRoRmxhZ3MoTm9kZSYgbm9kZSwgTm9k
ZUZsYWdzIGZsYWdzKQorICAgICAgICAKKyAgICBib29sIG1lcmdlRGVmYXVsdEZsYWdzKE5vZGUm
IG5vZGUpCiAgICAgewogICAgICAgICBib29sIGNoYW5nZWQgPSBmYWxzZTsKLSAgICAgICAgZmxh
Z3MgfD0gTm9kZVVzZWRBc051bWJlciB8IE5vZGVOZWVkc05lZ1plcm87CiAgICAgICAgIGlmIChu
b2RlLmZsYWdzKCkgJiBOb2RlSGFzVmFyQXJncykgewotICAgICAgICAgICAgZm9yICh1bnNpZ25l
ZCBjaGlsZElkeCA9IG5vZGUuZmlyc3RDaGlsZCgpOyBjaGlsZElkeCA8IG5vZGUuZmlyc3RDaGls
ZCgpICsgbm9kZS5udW1DaGlsZHJlbigpOyBjaGlsZElkeCsrKQotICAgICAgICAgICAgICAgIGNo
YW5nZWQgfD0gbV9ncmFwaFttX2dyYXBoLm1fdmFyQXJnQ2hpbGRyZW5bY2hpbGRJZHhdXS5tZXJn
ZUZsYWdzKGZsYWdzKTsKKyAgICAgICAgICAgIGZvciAodW5zaWduZWQgY2hpbGRJZHggPSBub2Rl
LmZpcnN0Q2hpbGQoKTsKKyAgICAgICAgICAgICAgICAgY2hpbGRJZHggPCBub2RlLmZpcnN0Q2hp
bGQoKSArIG5vZGUubnVtQ2hpbGRyZW4oKTsKKyAgICAgICAgICAgICAgICAgY2hpbGRJZHgrKykK
KyAgICAgICAgICAgICAgICBjaGFuZ2VkIHw9IG1fZ3JhcGhbbV9ncmFwaC5tX3ZhckFyZ0NoaWxk
cmVuW2NoaWxkSWR4XV0ubWVyZ2VGbGFncyhOb2RlVXNlZEFzVmFsdWUpOwogICAgICAgICB9IGVs
c2UgewogICAgICAgICAgICAgaWYgKCFub2RlLmNoaWxkMSgpKQogICAgICAgICAgICAgICAgIHJl
dHVybiBjaGFuZ2VkOwotICAgICAgICAgICAgY2hhbmdlZCB8PSBtX2dyYXBoW25vZGUuY2hpbGQx
KCldLm1lcmdlRmxhZ3MoZmxhZ3MpOworICAgICAgICAgICAgY2hhbmdlZCB8PSBtX2dyYXBoW25v
ZGUuY2hpbGQxKCldLm1lcmdlRmxhZ3MoTm9kZVVzZWRBc1ZhbHVlKTsKICAgICAgICAgICAgIGlm
ICghbm9kZS5jaGlsZDIoKSkKICAgICAgICAgICAgICAgICByZXR1cm4gY2hhbmdlZDsKLSAgICAg
ICAgICAgIGNoYW5nZWQgfD0gbV9ncmFwaFtub2RlLmNoaWxkMigpXS5tZXJnZUZsYWdzKGZsYWdz
KTsKKyAgICAgICAgICAgIGNoYW5nZWQgfD0gbV9ncmFwaFtub2RlLmNoaWxkMigpXS5tZXJnZUZs
YWdzKE5vZGVVc2VkQXNWYWx1ZSk7CiAgICAgICAgICAgICBpZiAoIW5vZGUuY2hpbGQzKCkpCiAg
ICAgICAgICAgICAgICAgcmV0dXJuIGNoYW5nZWQ7Ci0gICAgICAgICAgICBjaGFuZ2VkIHw9IG1f
Z3JhcGhbbm9kZS5jaGlsZDMoKV0ubWVyZ2VGbGFncyhmbGFncyk7CisgICAgICAgICAgICBjaGFu
Z2VkIHw9IG1fZ3JhcGhbbm9kZS5jaGlsZDMoKV0ubWVyZ2VGbGFncyhOb2RlVXNlZEFzVmFsdWUp
OwogICAgICAgICB9CiAgICAgICAgIHJldHVybiBjaGFuZ2VkOwogICAgIH0KQEAgLTY1Miw2ICs2
OTYsNjkgQEAgcHJpdmF0ZToKICAgICAgICAgZm9yIChtX2NvbXBpbGVJbmRleCA9IG1fZ3JhcGgu
c2l6ZSgpOyBtX2NvbXBpbGVJbmRleC0tID4gMDspCiAgICAgICAgICAgICBwcm9wYWdhdGUobV9n
cmFwaFttX2NvbXBpbGVJbmRleF0pOwogICAgIH0KKyAgICAKKyAgICB2b2lkIHByb3BhZ2F0ZVVu
dGlsRml4cG9pbnQoKQorICAgIHsKKyAgICB9CisgICAgCisgICAgYm9vbCBub3RpY2VFc2NhcGlu
Z0ludGVnZXIoRWRnZSBlZGdlKQorICAgIHsKKyAgICAgICAgTm9kZSYgbm9kZSA9IG1fZ3JhcGhb
ZWRnZV07CisgICAgICAgIGlmIChub2RlLnNob3VsZFNwZWN1bGF0ZUludGVnZXIoKSkKKyAgICAg
ICAgICAgIHJldHVybiBub2RlLm1lcmdlRmxhZ3MoTm9kZUVzY2FwZXNBc0ludCk7CisgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICB9CisgICAgCisgICAgYm9vbCBub3RpY2VFc2NhcGluZ0ludGVn
ZXJzKE5vZGUmIG5vZGUpCisgICAgeworICAgICAgICBib29sIGNoYW5nZWQgPSBmYWxzZTsKKyAg
ICAgICAgc3dpdGNoIChub2RlLm9wKCkpIHsKKyAgICAgICAgY2FzZSBTZXRMb2NhbDoKKyAgICAg
ICAgICAgIGlmIChtX2dyYXBoLmlzQ2FwdHVyZWQobm9kZS5sb2NhbCgpKSkKKyAgICAgICAgICAg
ICAgICBjaGFuZ2VkIHw9IG5vdGljZUVzY2FwaW5nSW50ZWdlcihub2RlLmNoaWxkMSgpKTsKKyAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgCisgICAgICAgIGNhc2UgUHV0R2xvYmFsVmFy
OgorICAgICAgICBjYXNlIFB1dFNjb3BlZFZhcjoKKyAgICAgICAgY2FzZSBSZXR1cm46CisgICAg
ICAgIGNhc2UgVGhyb3c6CisgICAgICAgICAgICBjaGFuZ2VkIHw9IG5vdGljZUVzY2FwaW5nSW50
ZWdlcihub2RlLmNoaWxkMSgpKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgCisg
ICAgICAgIGNhc2UgQXJyYXlQdXNoOgorICAgICAgICBjYXNlIFB1dEJ5SWQ6CisgICAgICAgIGNh
c2UgUHV0QnlJZERpcmVjdDoKKyAgICAgICAgICAgIGNoYW5nZWQgfD0gbm90aWNlRXNjYXBpbmdJ
bnRlZ2VyKG5vZGUuY2hpbGQyKCkpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAK
KyAgICAgICAgY2FzZSBQdXRCeVZhbDoKKyAgICAgICAgY2FzZSBQdXRCeU9mZnNldDoKKyAgICAg
ICAgICAgIGNoYW5nZWQgfD0gbm90aWNlRXNjYXBpbmdJbnRlZ2VyKG5vZGUuY2hpbGQzKCkpOwor
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAKKyAgICAgICAgY2FzZSBDYWxsOgorICAg
ICAgICBjYXNlIENvbnN0cnVjdDoKKyAgICAgICAgY2FzZSBOZXdBcnJheToKKyAgICAgICAgICAg
IGZvciAodW5zaWduZWQgY2hpbGRJZHggPSBub2RlLmZpcnN0Q2hpbGQoKTsKKyAgICAgICAgICAg
ICAgICAgY2hpbGRJZHggPCBub2RlLmZpcnN0Q2hpbGQoKSArIG5vZGUubnVtQ2hpbGRyZW4oKTsK
KyAgICAgICAgICAgICAgICAgKytjaGlsZElkeCkKKyAgICAgICAgICAgICAgICBjaGFuZ2VkIHw9
IG5vdGljZUVzY2FwaW5nSW50ZWdlcihtX2dyYXBoLm1fdmFyQXJnQ2hpbGRyZW5bY2hpbGRJZHhd
KTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgCisgICAgICAgIGRlZmF1bHQ6Cisg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgcmV0dXJuIGNo
YW5nZWQ7CisgICAgfQorICAgIAorICAgIGJvb2wgbm90aWNlRXNjYXBpbmdJbnRlZ2VycygpCisg
ICAgeworICAgICAgICBib29sIGNoYW5nZWQgPSBmYWxzZTsKKyAgICAgICAgZm9yIChtX2NvbXBp
bGVJbmRleCA9IG1fZ3JhcGguc2l6ZSgpOyBtX2NvbXBpbGVJbmRleC0tOykKKyAgICAgICAgICAg
IGNoYW5nZWQgfD0gbm90aWNlRXNjYXBpbmdJbnRlZ2VycyhtX2dyYXBoW21fY29tcGlsZUluZGV4
XSk7CisgICAgICAgIHJldHVybiBjaGFuZ2VkOworICAgIH0KIAogICAgIHZvaWQgdm90ZShFZGdl
IG5vZGVVc2UsIFZhcmlhYmxlQWNjZXNzRGF0YTo6QmFsbG90IGJhbGxvdCkKICAgICB7CkBAIC02
NzEsNyArNzc4LDkgQEAgcHJpdmF0ZToKICAgICB2b2lkIHZvdGUoTm9kZSYgbm9kZSwgVmFyaWFi
bGVBY2Nlc3NEYXRhOjpCYWxsb3QgYmFsbG90KQogICAgIHsKICAgICAgICAgaWYgKG5vZGUuZmxh
Z3MoKSAmIE5vZGVIYXNWYXJBcmdzKSB7Ci0gICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGNoaWxk
SWR4ID0gbm9kZS5maXJzdENoaWxkKCk7IGNoaWxkSWR4IDwgbm9kZS5maXJzdENoaWxkKCkgKyBu
b2RlLm51bUNoaWxkcmVuKCk7IGNoaWxkSWR4KyspCisgICAgICAgICAgICBmb3IgKHVuc2lnbmVk
IGNoaWxkSWR4ID0gbm9kZS5maXJzdENoaWxkKCk7CisgICAgICAgICAgICAgICAgIGNoaWxkSWR4
IDwgbm9kZS5maXJzdENoaWxkKCkgKyBub2RlLm51bUNoaWxkcmVuKCk7CisgICAgICAgICAgICAg
ICAgIGNoaWxkSWR4KyspCiAgICAgICAgICAgICAgICAgdm90ZShtX2dyYXBoLm1fdmFyQXJnQ2hp
bGRyZW5bY2hpbGRJZHhdLCBiYWxsb3QpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9
CkBAIC03MjYsNyArODM1LDkgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICAKICAgICAgICAg
ICAgICAgICBWYXJpYWJsZUFjY2Vzc0RhdGE6OkJhbGxvdCBiYWxsb3Q7CiAgICAgICAgICAgICAg
ICAgCi0gICAgICAgICAgICAgICAgaWYgKGlzTnVtYmVyUHJlZGljdGlvbihsZWZ0KSAmJiBpc051
bWJlclByZWRpY3Rpb24ocmlnaHQpICYmICEoTm9kZTo6c2hvdWxkU3BlY3VsYXRlSW50ZWdlciht
X2dyYXBoW25vZGUuY2hpbGQxKCldLCBtX2dyYXBoW25vZGUuY2hpbGQxKCldKSAmJiBub2RlLmNh
blNwZWN1bGF0ZUludGVnZXIoKSkpCisgICAgICAgICAgICAgICAgaWYgKGlzTnVtYmVyUHJlZGlj
dGlvbihsZWZ0KSAmJiBpc051bWJlclByZWRpY3Rpb24ocmlnaHQpCisgICAgICAgICAgICAgICAg
ICAgICYmICEoTm9kZTo6c2hvdWxkU3BlY3VsYXRlSW50ZWdlcihtX2dyYXBoW25vZGUuY2hpbGQx
KCldLCBtX2dyYXBoW25vZGUuY2hpbGQxKCldKQorICAgICAgICAgICAgICAgICAgICAgICAgICYm
IG5vZGUuY2FuU3BlY3VsYXRlSW50ZWdlcigpKSkKICAgICAgICAgICAgICAgICAgICAgYmFsbG90
ID0gVmFyaWFibGVBY2Nlc3NEYXRhOjpWb3RlRG91YmxlOwogICAgICAgICAgICAgICAgIGVsc2UK
ICAgICAgICAgICAgICAgICAgICAgYmFsbG90ID0gVmFyaWFibGVBY2Nlc3NEYXRhOjpWb3RlVmFs
dWU7CkBAIC03MzgsNyArODQ5LDggQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICAKICAgICAg
ICAgICAgIGNhc2UgQXJpdGhBYnM6CiAgICAgICAgICAgICAgICAgVmFyaWFibGVBY2Nlc3NEYXRh
OjpCYWxsb3QgYmFsbG90OwotICAgICAgICAgICAgICAgIGlmICghKG1fZ3JhcGhbbm9kZS5jaGls
ZDEoKV0uc2hvdWxkU3BlY3VsYXRlSW50ZWdlcigpICYmIG5vZGUuY2FuU3BlY3VsYXRlSW50ZWdl
cigpKSkKKyAgICAgICAgICAgICAgICBpZiAoIShtX2dyYXBoW25vZGUuY2hpbGQxKCldLnNob3Vs
ZFNwZWN1bGF0ZUludGVnZXIoKQorICAgICAgICAgICAgICAgICAgICAgICYmIG5vZGUuY2FuU3Bl
Y3VsYXRlSW50ZWdlcigpKSkKICAgICAgICAgICAgICAgICAgICAgYmFsbG90ID0gVmFyaWFibGVB
Y2Nlc3NEYXRhOjpWb3RlRG91YmxlOwogICAgICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAg
ICAgICAgICAgYmFsbG90ID0gVmFyaWFibGVBY2Nlc3NEYXRhOjpWb3RlVmFsdWU7CkBAIC03ODgs
NyArOTAwLDggQEAgcHJpdmF0ZToKICAgICAgICAgY2FzZSBHZXRCeUlkOiB7CiAgICAgICAgICAg
ICBpZiAoIWlzSW50MzJQcmVkaWN0aW9uKG1fZ3JhcGhbbV9jb21waWxlSW5kZXhdLnByZWRpY3Rp
b24oKSkpCiAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBpZiAoY29kZUJsb2Nr
KCktPmlkZW50aWZpZXIobm9kZS5pZGVudGlmaWVyTnVtYmVyKCkpICE9IGdsb2JhbERhdGEoKS5w
cm9wZXJ0eU5hbWVzLT5sZW5ndGgpCisgICAgICAgICAgICBpZiAoY29kZUJsb2NrKCktPmlkZW50
aWZpZXIobm9kZS5pZGVudGlmaWVyTnVtYmVyKCkpCisgICAgICAgICAgICAgICAgIT0gZ2xvYmFs
RGF0YSgpLnByb3BlcnR5TmFtZXMtPmxlbmd0aCkKICAgICAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgICAgIGJvb2wgaXNBcnJheSA9IGlzQXJyYXlQcmVkaWN0aW9uKG1fZ3JhcGhbbm9kZS5j
aGlsZDEoKV0ucHJlZGljdGlvbigpKTsKICAgICAgICAgICAgIGJvb2wgaXNTdHJpbmcgPSBpc1N0
cmluZ1ByZWRpY3Rpb24obV9ncmFwaFtub2RlLmNoaWxkMSgpXS5wcmVkaWN0aW9uKCkpOwpAQCAt
ODAyLDcgKzkxNSw5IEBAIHByaXZhdGU6CiAgICAgICAgICAgICBib29sIGlzVWludDMyQXJyYXkg
PSBtX2dyYXBoW25vZGUuY2hpbGQxKCldLnNob3VsZFNwZWN1bGF0ZVVpbnQzMkFycmF5KCk7CiAg
ICAgICAgICAgICBib29sIGlzRmxvYXQzMkFycmF5ID0gbV9ncmFwaFtub2RlLmNoaWxkMSgpXS5z
aG91bGRTcGVjdWxhdGVGbG9hdDMyQXJyYXkoKTsKICAgICAgICAgICAgIGJvb2wgaXNGbG9hdDY0
QXJyYXkgPSBtX2dyYXBoW25vZGUuY2hpbGQxKCldLnNob3VsZFNwZWN1bGF0ZUZsb2F0NjRBcnJh
eSgpOwotICAgICAgICAgICAgaWYgKCFpc0FycmF5ICYmICFpc1N0cmluZyAmJiAhaXNCeXRlQXJy
YXkgJiYgIWlzSW50OEFycmF5ICYmICFpc0ludDE2QXJyYXkgJiYgIWlzSW50MzJBcnJheSAmJiAh
aXNVaW50OEFycmF5ICYmICFpc1VpbnQ4Q2xhbXBlZEFycmF5ICYmICFpc1VpbnQxNkFycmF5ICYm
ICFpc1VpbnQzMkFycmF5ICYmICFpc0Zsb2F0MzJBcnJheSAmJiAhaXNGbG9hdDY0QXJyYXkpCisg
ICAgICAgICAgICBpZiAoIWlzQXJyYXkgJiYgIWlzU3RyaW5nICYmICFpc0J5dGVBcnJheSAmJiAh
aXNJbnQ4QXJyYXkgJiYgIWlzSW50MTZBcnJheQorICAgICAgICAgICAgICAgICYmICFpc0ludDMy
QXJyYXkgJiYgIWlzVWludDhBcnJheSAmJiAhaXNVaW50OENsYW1wZWRBcnJheSAmJiAhaXNVaW50
MTZBcnJheQorICAgICAgICAgICAgICAgICYmICFpc1VpbnQzMkFycmF5ICYmICFpc0Zsb2F0MzJB
cnJheSAmJiAhaXNGbG9hdDY0QXJyYXkpCiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
ICAgICAKICNpZiBERkdfRU5BQkxFKERFQlVHX1BST1BBR0FUSU9OX1ZFUkJPU0UpCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ZhcmlhYmxlQWNjZXNzRGF0YS5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVmFyaWFibGVBY2Nlc3NEYXRhLmgJ
KHJldmlzaW9uIDExMTc5NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVmFyaWFi
bGVBY2Nlc3NEYXRhLmgJKHdvcmtpbmcgY29weSkKQEAgLTEwNCw4ICsxMDQsMzIgQEAgcHVibGlj
OgogICAgIAogICAgIGJvb2wgc2hvdWxkVXNlRG91YmxlRm9ybWF0QWNjb3JkaW5nVG9Wb3RlKCkK
ICAgICB7CisgICAgICAgIC8vIFdlIGRvbid0IHN1cHBvcnQgdGhpcyBmYWNpbGl0eSBmb3IgYXJn
dW1lbnRzLCB5ZXQuCiAgICAgICAgIC8vIEZJWE1FOiBtYWtlIHRoaXMgd29yayBmb3IgYXJndW1l
bnRzLgotICAgICAgICByZXR1cm4gIW9wZXJhbmRJc0FyZ3VtZW50KG9wZXJhbmQoKSkgJiYgKChp
c051bWJlclByZWRpY3Rpb24ocHJlZGljdGlvbigpKSAmJiBkb3VibGVWb3RlUmF0aW8oKSA+PSBP
cHRpb25zOjpkb3VibGVWb3RlUmF0aW9Gb3JEb3VibGVGb3JtYXQpIHx8IGlzRG91YmxlUHJlZGlj
dGlvbihwcmVkaWN0aW9uKCkpKTsKKyAgICAgICAgaWYgKG9wZXJhbmRJc0FyZ3VtZW50KG9wZXJh
bmQoKSkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIAorICAgICAgICAvLyBJ
ZiB0aGUgdmFyaWFibGUgaXMgbm90IGEgbnVtYmVyIHByZWRpY3Rpb24sIHRoZW4gdGhpcyBkb2Vz
bid0CisgICAgICAgIC8vIG1ha2UgYW55IHNlbnNlLgorICAgICAgICBpZiAoIWlzTnVtYmVyUHJl
ZGljdGlvbihwcmVkaWN0aW9uKCkpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAg
ICAKKyAgICAgICAgLy8gSWYgdGhlIHZhcmlhYmxlIGlzIHByZWRpY3RlZCB0byBob2xkIG9ubHkg
ZG91YmxlcywgdGhlbiBpdCdzIGEKKyAgICAgICAgLy8gbm8tYnJhaW5lcjogaXQgc2hvdWxkIGJl
IGZvcm1hdHRlZCBhcyBhIGRvdWJsZS4KKyAgICAgICAgaWYgKGlzRG91YmxlUHJlZGljdGlvbihw
cmVkaWN0aW9uKCkpKQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIAorICAgICAg
ICAvLyBJZiB0aGUgdmFyaWFibGUgaXMga25vd24gdG8gYmUgdXNlZCBhcyBhbiBpbnRlZ2VyLCB0
aGVuIGJlIHNhZmUgLQorICAgICAgICAvLyBkb24ndCBmb3JjZSBpdCB0byBiZSBhIGRvdWJsZS4K
KyAgICAgICAgaWYgKGZsYWdzKCkgJiAoTm9kZUVzY2FwZXNBc0ludCB8IE5vZGVVc2VkQXNJbnQp
KQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAKKyAgICAgICAgLy8gSWYgdGhl
IHZhcmlhYmxlIGhhcyBiZWVuIHZvdGVkIHRvIGJlY29tZSBhIGRvdWJsZSwgdGhlbiBtYWtlIGl0
IGEKKyAgICAgICAgLy8gZG91YmxlLgorICAgICAgICBpZiAoZG91YmxlVm90ZVJhdGlvKCkgPj0g
T3B0aW9uczo6ZG91YmxlVm90ZVJhdGlvRm9yRG91YmxlRm9ybWF0KQorICAgICAgICAgICAgcmV0
dXJuIHRydWU7CisgICAgICAgIAorICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogICAgIAog
ICAgIGJvb2wgc2hvdWxkVXNlRG91YmxlRm9ybWF0KCkK
</data>
<flag name="review"
          id="137615"
          type_id="1"
          status="+"
          setter="barraclough"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>133611</attachid>
            <date>2012-03-23 19:12:48 -0700</date>
            <delta_ts>2012-03-23 20:16:13 -0700</delta_ts>
            <desc>the patch</desc>
            <filename>fixdoublevote_patch_4.diff</filename>
            <type>text/plain</type>
            <size>36782</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTExOTI4KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQzIEBA
CisyMDEyLTAzLTIzICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
REZHIGRvdWJsZSB2b3RpbmcgbWF5IGJlIG92ZXJ6ZWFsb3VzIGluIHRoZSBjYXNlIG9mIHZhcmlh
YmxlcyB0aGF0IGVuZCB1cAorICAgICAgICBiZWluZyB1c2VkIGFzIGludGVnZXJzCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04MjAwOAorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorICAgICAgICAKKyAgICAgICAgQ2xlYW5lZCB1
cCBub2RlIGZsYWdzIHByb3BhZ2F0aW9uLCBtYWtpbmcgdGhlIGludGVudCBtb3JlIGV4cGxpY2l0
IGluIG1vc3QKKyAgICAgICAgcGxhY2VzLiBBZGRlZCBtYWNoaW5lcnkgdG8gdHJhY2sgd2hlbiBh
IG5vZGUgaXMga25vd24gdG8gZXNjYXBlIGFzIGFuCisgICAgICAgIGludGVnZXIuIEluIGFsbCBz
dWNoIGNhc2VzLCB3ZSB0aGVuIGJhY2stcHJvcGFnYXRlIHRoZSBOb2RlRXNjYXBlc0FzSW50Cisg
ICAgICAgIHByb3BlcnR5LiBXZSBhbHNvIGJhY2stcHJvcGFnYXRlIE5vZGVVc2VkQXNJbnQgZm9y
IGNhc2VzIHdoZXJlIGEgbm9kZSB3YXMKKyAgICAgICAgdXNlZCBpbiBhIGNvbnRleHQgdGhhdCBp
cyBrbm93biB0byBzdHJvbmdseSBwcmVmZXIgaW50ZWdlcnMuCisKKyAgICAgICAgKiBkZmcvREZH
Qnl0ZUNvZGVQYXJzZXIuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpo
YW5kbGVDYWxsKToKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9j
ayk6CisgICAgICAgICogZGZnL0RGR0dyYXBoLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpHcmFw
aDo6ZHVtcENvZGVPcmlnaW4pOgorICAgICAgICAoSlNDOjpERkc6OkdyYXBoOjpkdW1wKToKKyAg
ICAgICAgKiBkZmcvREZHR3JhcGguaDoKKyAgICAgICAgKEdyYXBoKToKKyAgICAgICAgKiBkZmcv
REZHTm9kZUZsYWdzLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpub2RlRmxhZ3NBc1N0cmluZyk6
CisgICAgICAgICogZGZnL0RGR05vZGVGbGFncy5oOgorICAgICAgICAoREZHKToKKyAgICAgICAg
KiBkZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwOgorICAgICAgICAoSlNDOjpE
Rkc6OlByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlOjpydW4pOgorICAgICAgICAoSlNDOjpERkc6
OlByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlOjpwcm9wYWdhdGUpOgorICAgICAgICAoUHJlZGlj
dGlvblByb3BhZ2F0aW9uUGhhc2UpOgorICAgICAgICAoSlNDOjpERkc6OlByZWRpY3Rpb25Qcm9w
YWdhdGlvblBoYXNlOjptZXJnZURlZmF1bHRGbGFncyk6CisgICAgICAgIChKU0M6OkRGRzo6UHJl
ZGljdGlvblByb3BhZ2F0aW9uUGhhc2U6OnByb3BhZ2F0ZVVudGlsRml4cG9pbnQpOgorICAgICAg
ICAoSlNDOjpERkc6OlByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlOjpub3RpY2VFc2NhcGluZ0lu
dGVnZXIpOgorICAgICAgICAoSlNDOjpERkc6OlByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlOjpu
b3RpY2VFc2NhcGluZ0ludGVnZXJzKToKKyAgICAgICAgKEpTQzo6REZHOjpQcmVkaWN0aW9uUHJv
cGFnYXRpb25QaGFzZTo6dm90ZSk6CisgICAgICAgIChKU0M6OkRGRzo6UHJlZGljdGlvblByb3Bh
Z2F0aW9uUGhhc2U6OmRvUm91bmRPZkRvdWJsZVZvdGluZyk6CisgICAgICAgIChKU0M6OkRGRzo6
UHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2U6OmZpeHVwTm9kZSk6CisgICAgICAgICogZGZnL0RG
R1ZhcmlhYmxlQWNjZXNzRGF0YS5oOgorICAgICAgICAoSlNDOjpERkc6OlZhcmlhYmxlQWNjZXNz
RGF0YTo6c2hvdWxkVXNlRG91YmxlRm9ybWF0QWNjb3JkaW5nVG9Wb3RlKToKKwogMjAxMi0wMy0y
MyAgTWljaGFlbCBTYWJvZmYgIDxtc2Fib2ZmQGFwcGxlLmNvbT4KIAogICAgICAgICBERkc6OmNv
bXBpbGVWYWx1ZVRvSW50MzIgU29tZXRpbWUgR2VuZXJhdGVzIEdQUiB0byBGUFIgcmVnIGJhY2sg
dG8gR1BSCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2Vy
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2Rl
UGFyc2VyLmNwcAkocmV2aXNpb24gMTExNzk3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdCeXRlQ29kZVBhcnNlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTk5MywxMCArOTkzLDYg
QEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlQ2FsbChJbnRlcnByZQogICAgIE5vZGVJbmRl
eCBjYWxsVGFyZ2V0ID0gZ2V0KGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQpOwogICAg
IGVudW0geyBDb25zdGFudEZ1bmN0aW9uLCBMaW5rZWRGdW5jdGlvbiwgVW5rbm93bkZ1bmN0aW9u
IH0gY2FsbFR5cGU7CiAgICAgICAgICAgICAKLSNpZiBERkdfRU5BQkxFKERFQlVHX1ZFUkJPU0Up
Ci0gICAgZGF0YUxvZygiU2xvdyBjYXNlIGNvdW50IGZvciBjYWxsIGF0IEAlenUgYmMjJXU6ICV1
LyV1OyBleGl0IHByb2ZpbGU6ICVkLlxuIiwgbV9ncmFwaC5zaXplKCksIG1fY3VycmVudEluZGV4
LCBtX2lubGluZVN0YWNrVG9wLT5tX3Byb2ZpbGVkQmxvY2stPnJhcmVDYXNlUHJvZmlsZUZvckJ5
dGVjb2RlT2Zmc2V0KG1fY3VycmVudEluZGV4KS0+bV9jb3VudGVyLCBtX2lubGluZVN0YWNrVG9w
LT5tX3Byb2ZpbGVkQmxvY2stPmV4ZWN1dGlvbkVudHJ5Q291bnQoKSwgbV9pbmxpbmVTdGFja1Rv
cC0+bV9leGl0UHJvZmlsZS5oYXNFeGl0U2l0ZShtX2N1cnJlbnRJbmRleCwgQmFkQ2FjaGUpKTsK
LSNlbmRpZgotICAgIAogICAgIENhbGxMaW5rU3RhdHVzIGNhbGxMaW5rU3RhdHVzID0gQ2FsbExp
bmtTdGF0dXM6OmNvbXB1dGVGb3IoCiAgICAgICAgIG1faW5saW5lU3RhY2tUb3AtPm1fcHJvZmls
ZWRCbG9jaywgbV9jdXJyZW50SW5kZXgpOwogICAgIApAQCAtMTg3OSwxMCArMTg3NSw2IEBAIGJv
b2wgQnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2sodW5zaWduZWQKICAgICAgICAgICAgIEdldEJ5
SWRTdGF0dXMgZ2V0QnlJZFN0YXR1cyA9IEdldEJ5SWRTdGF0dXM6OmNvbXB1dGVGb3IoCiAgICAg
ICAgICAgICAgICAgbV9pbmxpbmVTdGFja1RvcC0+bV9wcm9maWxlZEJsb2NrLCBtX2N1cnJlbnRJ
bmRleCwgaWRlbnRpZmllcik7CiAgICAgICAgICAgICAKLSNpZiBERkdfRU5BQkxFKERFQlVHX1ZF
UkJPU0UpCi0gICAgICAgICAgICBkYXRhTG9nKCJTbG93IGNhc2UgY291bnQgZm9yIEdldEJ5SWQg
QCV6dSBiYyMldTogJXU7IGV4aXQgcHJvZmlsZTogJWRcbiIsIG1fZ3JhcGguc2l6ZSgpLCBtX2N1
cnJlbnRJbmRleCwgbV9pbmxpbmVTdGFja1RvcC0+bV9wcm9maWxlZEJsb2NrLT5yYXJlQ2FzZVBy
b2ZpbGVGb3JCeXRlY29kZU9mZnNldChtX2N1cnJlbnRJbmRleCktPm1fY291bnRlciwgbV9pbmxp
bmVTdGFja1RvcC0+bV9leGl0UHJvZmlsZS5oYXNFeGl0U2l0ZShtX2N1cnJlbnRJbmRleCwgQmFk
Q2FjaGUpKTsKLSNlbmRpZgotICAgICAgICAgICAgCiAgICAgICAgICAgICBpZiAoZ2V0QnlJZFN0
YXR1cy5pc1NpbXBsZURpcmVjdCgpCiAgICAgICAgICAgICAgICAgJiYgIW1faW5saW5lU3RhY2tU
b3AtPm1fZXhpdFByb2ZpbGUuaGFzRXhpdFNpdGUobV9jdXJyZW50SW5kZXgsIEJhZENhY2hlKSkg
ewogICAgICAgICAgICAgICAgIEFTU0VSVChnZXRCeUlkU3RhdHVzLnN0cnVjdHVyZVNldCgpLnNp
emUoKSk7CkBAIC0xOTIxLDEwICsxOTEzLDYgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VC
bG9jayh1bnNpZ25lZAogICAgICAgICAgICAgCiAgICAgICAgICAgICBib29sIGhhc0V4aXRTaXRl
ID0gbV9pbmxpbmVTdGFja1RvcC0+bV9leGl0UHJvZmlsZS5oYXNFeGl0U2l0ZShtX2N1cnJlbnRJ
bmRleCwgQmFkQ2FjaGUpOwogICAgICAgICAgICAgCi0jaWYgREZHX0VOQUJMRShERUJVR19WRVJC
T1NFKQotICAgICAgICAgICAgZGF0YUxvZygiU2xvdyBjYXNlIGNvdW50IGZvciBQdXRCeUlkIEAl
enUgYmMjJXU6ICV1OyBleGl0IHByb2ZpbGU6ICVkXG4iLCBtX2dyYXBoLnNpemUoKSwgbV9jdXJy
ZW50SW5kZXgsIG1faW5saW5lU3RhY2tUb3AtPm1fcHJvZmlsZWRCbG9jay0+cmFyZUNhc2VQcm9m
aWxlRm9yQnl0ZWNvZGVPZmZzZXQobV9jdXJyZW50SW5kZXgpLT5tX2NvdW50ZXIsIG1faW5saW5l
U3RhY2tUb3AtPm1fZXhpdFByb2ZpbGUuaGFzRXhpdFNpdGUobV9jdXJyZW50SW5kZXgsIEJhZENh
Y2hlKSk7Ci0jZW5kaWYgICAgICAgICAgICAKLQogICAgICAgICAgICAgaWYgKCFoYXNFeGl0U2l0
ZSAmJiBwdXRCeUlkU3RhdHVzLmlzU2ltcGxlUmVwbGFjZSgpKSB7CiAgICAgICAgICAgICAgICAg
YWRkVG9HcmFwaChDaGVja1N0cnVjdHVyZSwgT3BJbmZvKG1fZ3JhcGguYWRkU3RydWN0dXJlU2V0
KHB1dEJ5SWRTdGF0dXMub2xkU3RydWN0dXJlKCkpKSwgYmFzZSk7CiAgICAgICAgICAgICAgICAg
YWRkVG9HcmFwaChQdXRCeU9mZnNldCwgT3BJbmZvKG1fZ3JhcGgubV9zdG9yYWdlQWNjZXNzRGF0
YS5zaXplKCkpLCBiYXNlLCBhZGRUb0dyYXBoKEdldFByb3BlcnR5U3RvcmFnZSwgYmFzZSksIHZh
bHVlKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguY3BwCShyZXZpc2lv
biAxMTE3OTcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtODQsMTMgKzg0LDEzIEBAIHN0YXRpYyB2b2lkIHByaW50V2hpdGVTcGFj
ZSh1bnNpZ25lZCBhbW8KICAgICAgICAgZGF0YUxvZygiICIpOwogfQogCi12b2lkIEdyYXBoOjpk
dW1wQ29kZU9yaWdpbihOb2RlSW5kZXggbm9kZUluZGV4KQordm9pZCBHcmFwaDo6ZHVtcENvZGVP
cmlnaW4oTm9kZUluZGV4IHByZXZOb2RlSW5kZXgsIE5vZGVJbmRleCBub2RlSW5kZXgpCiB7Ci0g
ICAgaWYgKCFub2RlSW5kZXgpCisgICAgaWYgKHByZXZOb2RlSW5kZXggPT0gTm9Ob2RlKQogICAg
ICAgICByZXR1cm47CiAgICAgCiAgICAgTm9kZSYgY3VycmVudE5vZGUgPSBhdChub2RlSW5kZXgp
OwotICAgIE5vZGUmIHByZXZpb3VzTm9kZSA9IGF0KG5vZGVJbmRleCAtIDEpOworICAgIE5vZGUm
IHByZXZpb3VzTm9kZSA9IGF0KHByZXZOb2RlSW5kZXgpOwogICAgIGlmIChwcmV2aW91c05vZGUu
Y29kZU9yaWdpbi5pbmxpbmVDYWxsRnJhbWUgPT0gY3VycmVudE5vZGUuY29kZU9yaWdpbi5pbmxp
bmVDYWxsRnJhbWUpCiAgICAgICAgIHJldHVybjsKICAgICAKQEAgLTEzMSw3ICsxMzEsNiBAQCB2
b2lkIEdyYXBoOjpkdW1wKE5vZGVJbmRleCBub2RlSW5kZXgpCiAgICAgICAgIC0tcmVmQ291bnQ7
CiAgICAgfQogICAgIAotICAgIGR1bXBDb2RlT3JpZ2luKG5vZGVJbmRleCk7CiAgICAgcHJpbnRX
aGl0ZVNwYWNlKChub2RlLmNvZGVPcmlnaW4uaW5saW5lRGVwdGgoKSAtIDEpICogMik7CiAKICAg
ICAvLyBFeGFtcGxlL2V4cGxhbmF0aW9uIG9mIGRhdGFmbG93IGR1bXAgb3V0cHV0CkBAIC0yNjMs
NiArMjYyLDcgQEAgdm9pZCBHcmFwaDo6ZHVtcChOb2RlSW5kZXggbm9kZUluZGV4KQogCiB2b2lk
IEdyYXBoOjpkdW1wKCkKIHsKKyAgICBOb2RlSW5kZXggbGFzdE5vZGVJbmRleCA9IE5vTm9kZTsK
ICAgICBmb3IgKHNpemVfdCBiID0gMDsgYiA8IG1fYmxvY2tzLnNpemUoKTsgKytiKSB7CiAgICAg
ICAgIEJhc2ljQmxvY2sqIGJsb2NrID0gbV9ibG9ja3NbYl0uZ2V0KCk7CiAgICAgICAgIGRhdGFM
b2coIkJsb2NrICMldSAoYmMjJXUpOiAlcyVzXG4iLCAoaW50KWIsIGJsb2NrLT5ieXRlY29kZUJl
Z2luLCBibG9jay0+aXNSZWFjaGFibGUgPyAiIiA6ICIgKHNraXBwZWQpIiwgYmxvY2stPmlzT1NS
VGFyZ2V0ID8gIiAoT1NSIHRhcmdldCkiIDogIiIpOwpAQCAtMjgxLDggKzI4MSwxMSBAQCB2b2lk
IEdyYXBoOjpkdW1wKCkKICAgICAgICAgZGF0YUxvZygiICB2YXIgbGlua3M6ICIpOwogICAgICAg
ICBkdW1wT3BlcmFuZHMoYmxvY2stPnZhcmlhYmxlc0F0SGVhZCwgV1RGOjpkYXRhRmlsZSgpKTsK
ICAgICAgICAgZGF0YUxvZygiXG4iKTsKLSAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBi
bG9jay0+c2l6ZSgpOyArK2kpCisgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgYmxvY2st
PnNpemUoKTsgKytpKSB7CisgICAgICAgICAgICBkdW1wQ29kZU9yaWdpbihsYXN0Tm9kZUluZGV4
LCBibG9jay0+YXQoaSkpOwogICAgICAgICAgICAgZHVtcChibG9jay0+YXQoaSkpOworICAgICAg
ICAgICAgbGFzdE5vZGVJbmRleCA9IGJsb2NrLT5hdChpKTsKKyAgICAgICAgfQogICAgICAgICBk
YXRhTG9nKCIgIHZhcnMgYWZ0ZXI6ICIpOwogICAgICAgICBpZiAoYmxvY2stPmNmYUhhc1Zpc2l0
ZWQpCiAgICAgICAgICAgICBkdW1wT3BlcmFuZHMoYmxvY2stPnZhbHVlc0F0VGFpbCwgV1RGOjpk
YXRhRmlsZSgpKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmgJKHJldmlz
aW9uIDExMTc5NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguaAkod29y
a2luZyBjb3B5KQpAQCAtMTQzLDcgKzE0Myw3IEBAIHB1YmxpYzoKIAogICAgIC8vIER1bXAgdGhl
IGNvZGUgb3JpZ2luIG9mIHRoZSBnaXZlbiBub2RlIGFzIGEgZGlmZiBmcm9tIHRoZSBjb2RlIG9y
aWdpbiBvZiB0aGUKICAgICAvLyBwcmVjZWRpbmcgbm9kZS4KLSAgICB2b2lkIGR1bXBDb2RlT3Jp
Z2luKE5vZGVJbmRleCk7CisgICAgdm9pZCBkdW1wQ29kZU9yaWdpbihOb2RlSW5kZXgsIE5vZGVJ
bmRleCk7CiAKICAgICBCbG9ja0luZGV4IGJsb2NrSW5kZXhGb3JCeXRlY29kZU9mZnNldChWZWN0
b3I8QmxvY2tJbmRleD4mIGJsb2NrcywgdW5zaWduZWQgYnl0ZWNvZGVCZWdpbik7CiAKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZUZsYWdzLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVGbGFncy5jcHAJKHJldmlzaW9uIDEx
MTc5NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZUZsYWdzLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMTIzLDYgKzEyMywyMCBAQCBjb25zdCBjaGFyKiBub2RlRmxhZ3NBc1N0
cmluZyhOb2RlRmxhZ3MgCiAgICAgICAgIGhhc1ByaW50ZWQgPSB0cnVlOwogICAgIH0KICAgICAK
KyAgICBpZiAoZmxhZ3MgJiBOb2RlRXNjYXBlc0FzSW50KSB7CisgICAgICAgIGlmIChoYXNQcmlu
dGVkKQorICAgICAgICAgICAgcHRyLnN0cmNhdCgifCIpOworICAgICAgICBwdHIuc3RyY2F0KCJF
c2NhcGVzQXNJbnQiKTsKKyAgICAgICAgaGFzUHJpbnRlZCA9IHRydWU7CisgICAgfQorICAgIAor
ICAgIGlmIChmbGFncyAmIE5vZGVVc2VkQXNJbnQpIHsKKyAgICAgICAgaWYgKGhhc1ByaW50ZWQp
CisgICAgICAgICAgICBwdHIuc3RyY2F0KCJ8Iik7CisgICAgICAgIHB0ci5zdHJjYXQoIlVzZWRB
c0ludCIpOworICAgICAgICBoYXNQcmludGVkID0gdHJ1ZTsKKyAgICB9CisgICAgCiAgICAgKnB0
cisrID0gMDsKICAgICAKICAgICByZXR1cm4gZGVzY3JpcHRpb247CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR05vZGVGbGFncy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHTm9kZUZsYWdzLmgJKHJldmlzaW9uIDExMTc5NykKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZUZsYWdzLmgJKHdvcmtpbmcgY29weSkKQEAgLTM2
LDIzICszNiwyOSBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CiAKIC8vIEVudHJp
ZXMgaW4gdGhlIE5vZGVUeXBlIGVudW0gKGJlbG93KSBhcmUgY29tcG9zZWQgb2YgYW4gaWQsIGEg
cmVzdWx0IHR5cGUgKHBvc3NpYmx5IG5vbmUpCiAvLyBhbmQgc29tZSBhZGRpdGlvbmFsIGluZm9y
bWF0aXZlIGZsYWdzIChtdXN0IGdlbmVyYXRlLCBpcyBjb25zdGFudCwgZXRjKS4KLSNkZWZpbmUg
Tm9kZVJlc3VsdE1hc2sgICAgICAgICAgICAgMHhGCi0jZGVmaW5lIE5vZGVSZXN1bHRKUyAgICAg
ICAgICAgICAgIDB4MQotI2RlZmluZSBOb2RlUmVzdWx0TnVtYmVyICAgICAgICAgICAweDIKLSNk
ZWZpbmUgTm9kZVJlc3VsdEludDMyICAgICAgICAgICAgMHgzCi0jZGVmaW5lIE5vZGVSZXN1bHRC
b29sZWFuICAgICAgICAgIDB4NAotI2RlZmluZSBOb2RlUmVzdWx0U3RvcmFnZSAgICAgICAgICAw
eDUKLSNkZWZpbmUgTm9kZU11c3RHZW5lcmF0ZSAgICAgICAgICAweDEwIC8vIHNldCBvbiBub2Rl
cyB0aGF0IGhhdmUgc2lkZSBlZmZlY3RzLCBhbmQgbWF5IG5vdCB0cml2aWFsbHkgYmUgcmVtb3Zl
ZCBieSBEQ0UuCi0jZGVmaW5lIE5vZGVIYXNWYXJBcmdzICAgICAgICAgICAgMHgyMAotI2RlZmlu
ZSBOb2RlQ2xvYmJlcnNXb3JsZCAgICAgICAgIDB4NDAKLSNkZWZpbmUgTm9kZU1pZ2h0Q2xvYmJl
ciAgICAgICAgICAweDgwCi0jZGVmaW5lIE5vZGVCYWNrUHJvcE1hc2sgICAgICAgICAweDMwMAot
I2RlZmluZSBOb2RlVXNlQm90dG9tICAgICAgICAgICAgMHgwMDAKLSNkZWZpbmUgTm9kZVVzZWRB
c051bWJlciAgICAgICAgIDB4MTAwCi0jZGVmaW5lIE5vZGVOZWVkc05lZ1plcm8gICAgICAgICAw
eDIwMAotI2RlZmluZSBOb2RlQmVoYXZpb3JNYXNrICAgICAgICAgMHhDMDAKLSNkZWZpbmUgTm9k
ZU1heU92ZXJmbG93ICAgICAgICAgIDB4NDAwCi0jZGVmaW5lIE5vZGVNYXlOZWdaZXJvICAgICAg
ICAgICAweDgwMAorI2RlZmluZSBOb2RlUmVzdWx0TWFzayAgICAgICAgICAgICAgMHhGCisjZGVm
aW5lIE5vZGVSZXN1bHRKUyAgICAgICAgICAgICAgICAweDEKKyNkZWZpbmUgTm9kZVJlc3VsdE51
bWJlciAgICAgICAgICAgIDB4MgorI2RlZmluZSBOb2RlUmVzdWx0SW50MzIgICAgICAgICAgICAg
MHgzCisjZGVmaW5lIE5vZGVSZXN1bHRCb29sZWFuICAgICAgICAgICAweDQKKyNkZWZpbmUgTm9k
ZVJlc3VsdFN0b3JhZ2UgICAgICAgICAgIDB4NQorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAKKyNkZWZpbmUgTm9kZU11c3RHZW5lcmF0ZSAgICAgICAgICAgMHgxMCAvLyBzZXQgb24g
bm9kZXMgdGhhdCBoYXZlIHNpZGUgZWZmZWN0cywgYW5kIG1heSBub3QgdHJpdmlhbGx5IGJlIHJl
bW92ZWQgYnkgRENFLgorI2RlZmluZSBOb2RlSGFzVmFyQXJncyAgICAgICAgICAgICAweDIwCisj
ZGVmaW5lIE5vZGVDbG9iYmVyc1dvcmxkICAgICAgICAgIDB4NDAKKyNkZWZpbmUgTm9kZU1pZ2h0
Q2xvYmJlciAgICAgICAgICAgMHg4MAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAK
KyNkZWZpbmUgTm9kZUJlaGF2aW9yTWFzayAgICAgICAgICAweDMwMAorI2RlZmluZSBOb2RlTWF5
T3ZlcmZsb3cgICAgICAgICAgIDB4MTAwCisjZGVmaW5lIE5vZGVNYXlOZWdaZXJvICAgICAgICAg
ICAgMHgyMDAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisjZGVmaW5lIE5vZGVC
YWNrUHJvcE1hc2sgICAgICAgICAweDNDMDAKKyNkZWZpbmUgTm9kZVVzZUJvdHRvbSAgICAgICAg
ICAgICAweDAwMAorI2RlZmluZSBOb2RlVXNlZEFzTnVtYmVyICAgICAgICAgIDB4NDAwIC8vIFRo
ZSByZXN1bHQgb2YgdGhpcyBjb21wdXRhdGlvbiBtYXkgYmUgdXNlZCBpbiBhIGNvbnRleHQgdGhh
dCBvYnNlcnZlcyBmcmFjdGlvbmFsIHJlc3VsdHMuCisjZGVmaW5lIE5vZGVOZWVkc05lZ1plcm8g
ICAgICAgICAgMHg4MDAgLy8gVGhlIHJlc3VsdCBvZiB0aGlzIGNvbXB1dGF0aW9uIG1heSBiZSB1
c2VkIGluIGEgY29udGV4dCB0aGF0IG9ic2VydmVzIC0wLgorI2RlZmluZSBOb2RlVXNlZEFzVmFs
dWUgICAgICAgICAgIChOb2RlVXNlZEFzTnVtYmVyIHwgTm9kZU5lZWRzTmVnWmVybykKKyNkZWZp
bmUgTm9kZVVzZWRBc0ludCAgICAgICAgICAgIDB4MTAwMCAvLyBUaGUgcmVzdWx0IG9mIHRoaXMg
Y29tcHV0YXRpb24gaXMga25vd24gdG8gYmUgdXNlZCBpbiBhIGNvbnRleHQgdGhhdCBwcmVmZXJz
LCBidXQgZG9lcyBub3QgcmVxdWlyZSwgaW50ZWdlciB2YWx1ZXMuCisjZGVmaW5lIE5vZGVFc2Nh
cGVzQXNJbnQgICAgICAgICAweDIwMDAgLy8gVGhlIG5vZGUgd2lsbCBwcm9kdWNlIGludGVnZXJz
IGFuZCB0aG9zZSBpbnRlZ2VycyBhcmUga25vd24gdG8gZXNjYXBlOwogCiB0eXBlZGVmIHVpbnQx
Nl90IE5vZGVGbGFnczsKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVk
aWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAJKHJldmlzaW9uIDEx
MTc5NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0
aW9uUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NSw4ICs0NSw4IEBAIHB1YmxpYzoKICNp
ZiBERkdfRU5BQkxFKERFQlVHX1BST1BBR0FUSU9OX1ZFUkJPU0UpCiAgICAgICAgIG1fY291bnQg
PSAwOwogI2VuZGlmCi0gICAgICAgIC8vIFR3byBzdGFnZSBwcm9jZXNzOiBmaXJzdCBwcm9wYWdh
dGUgcHJlZGljdGlvbnMsIHRoZW4gcHJvcGFnYXRlIHdoaWxlIGRvaW5nIGRvdWJsZSB2b3Rpbmcu
Ci0gICAgICAgIAorICAgICAgICAvLyAxKSBwcm9wYWdhdGUgcHJlZGljdGlvbnMKKwogICAgICAg
ICBkbyB7CiAgICAgICAgICAgICBtX2NoYW5nZWQgPSBmYWxzZTsKICAgICAgICAgICAgIApAQCAt
NjQsNiArNjQsOCBAQCBwdWJsaWM6CiAgICAgICAgICAgICBwcm9wYWdhdGVCYWNrd2FyZCgpOwog
ICAgICAgICB9IHdoaWxlIChtX2NoYW5nZWQpOwogICAgICAgICAKKyAgICAgICAgLy8gMikgcmVw
cm9wYWdhdGUgcHJlZGljdGlvbnMgd2hpbGUgZG9pbmcgZG91YmxlIHZvdGluZy4KKwogICAgICAg
ICBkbyB7CiAgICAgICAgICAgICBtX2NoYW5nZWQgPSBmYWxzZTsKICAgICAgICAgICAgIGRvUm91
bmRPZkRvdWJsZVZvdGluZygpOwpAQCAtNzYsNiArNzgsOCBAQCBwdWJsaWM6CiAgICAgICAgICAg
ICBwcm9wYWdhdGVCYWNrd2FyZCgpOwogICAgICAgICB9IHdoaWxlIChtX2NoYW5nZWQpOwogICAg
ICAgICAKKyAgICAgICAgLy8gMykgbWFrZSBjaGFuZ2VzIHRvIHRoZSBncmFwaCBiYXNlZCBvbiBw
cmVkaWN0aW9ucworICAgICAgICAKICAgICAgICAgZml4dXAoKTsKICAgICB9CiAgICAgCkBAIC0x
MTUsMjAgKzExOSwyNiBAQCBwcml2YXRlOgogICAgICAgICByZXR1cm4gISFtX2dyYXBoLnZhbHVl
T2ZOdW1iZXJDb25zdGFudChub2RlSW5kZXgpOwogICAgIH0KICAgICAKKyAgICBib29sIG5vdGlj
ZUVzY2FwaW5nSW50ZWdlcihFZGdlIGVkZ2UpCisgICAgeworICAgICAgICBOb2RlJiBub2RlID0g
bV9ncmFwaFtlZGdlXTsKKyAgICAgICAgaWYgKG5vZGUuc2hvdWxkU3BlY3VsYXRlSW50ZWdlcigp
KQorICAgICAgICAgICAgcmV0dXJuIG5vZGUubWVyZ2VGbGFncyhOb2RlRXNjYXBlc0FzSW50KTsK
KyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICAKICAgICB2b2lkIHByb3BhZ2F0ZShO
b2RlJiBub2RlKQogICAgIHsKICAgICAgICAgaWYgKCFub2RlLnNob3VsZEdlbmVyYXRlKCkpCiAg
ICAgICAgICAgICByZXR1cm47CiAgICAgICAgIAogICAgICAgICBOb2RlVHlwZSBvcCA9IG5vZGUu
b3AoKTsKLSAgICAgICAgTm9kZUZsYWdzIGZsYWdzID0gbm9kZS5mbGFncygpOworICAgICAgICBO
b2RlRmxhZ3MgZmxhZ3MgPSBub2RlLmZsYWdzKCkgJiBOb2RlQmFja1Byb3BNYXNrOwogCiAjaWYg
REZHX0VOQUJMRShERUJVR19QUk9QQUdBVElPTl9WRVJCT1NFKQogICAgICAgICBkYXRhTG9nKCIg
ICAlcyBAJXU6ICVzICIsIEdyYXBoOjpvcE5hbWUob3ApLCBtX2NvbXBpbGVJbmRleCwgbm9kZUZs
YWdzQXNTdHJpbmcoZmxhZ3MpKTsKICNlbmRpZgogICAgICAgICAKLSAgICAgICAgZmxhZ3MgJj0g
Tm9kZUJhY2tQcm9wTWFzazsKLSAgICAgICAgCiAgICAgICAgIGJvb2wgY2hhbmdlZCA9IGZhbHNl
OwogICAgICAgICAKICAgICAgICAgc3dpdGNoIChvcCkgewpAQCAtMTUyLDEzICsxNjIsMTUgQEAg
cHJpdmF0ZToKICAgICAgICAgICAgIFZhcmlhYmxlQWNjZXNzRGF0YSogdmFyaWFibGVBY2Nlc3NE
YXRhID0gbm9kZS52YXJpYWJsZUFjY2Vzc0RhdGEoKTsKICAgICAgICAgICAgIGNoYW5nZWQgfD0g
dmFyaWFibGVBY2Nlc3NEYXRhLT5wcmVkaWN0KG1fZ3JhcGhbbm9kZS5jaGlsZDEoKV0ucHJlZGlj
dGlvbigpKTsKICAgICAgICAgICAgIGNoYW5nZWQgfD0gbV9ncmFwaFtub2RlLmNoaWxkMSgpXS5t
ZXJnZUZsYWdzKHZhcmlhYmxlQWNjZXNzRGF0YS0+ZmxhZ3MoKSk7CisgICAgICAgICAgICBpZiAo
bV9ncmFwaC5pc0NhcHR1cmVkKG5vZGUubG9jYWwoKSkpCisgICAgICAgICAgICAgICAgY2hhbmdl
ZCB8PSBub3RpY2VFc2NhcGluZ0ludGVnZXIobm9kZS5jaGlsZDEoKSk7CiAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgfQogICAgICAgICAgICAgCiAgICAgICAgIGNhc2UgRmx1c2g6IHsKICAg
ICAgICAgICAgIC8vIE1ha2Ugc3VyZSB0aGF0IHRoZSBhbmFseXNpcyBrbm93cyB0aGF0IGZsdXNo
ZWQgbG9jYWxzIGVzY2FwZS4KICAgICAgICAgICAgIFZhcmlhYmxlQWNjZXNzRGF0YSogdmFyaWFi
bGVBY2Nlc3NEYXRhID0gbm9kZS52YXJpYWJsZUFjY2Vzc0RhdGEoKTsKLSAgICAgICAgICAgIHZh
cmlhYmxlQWNjZXNzRGF0YS0+bWVyZ2VGbGFncyhOb2RlVXNlZEFzTnVtYmVyIHwgTm9kZU5lZWRz
TmVnWmVybyk7CisgICAgICAgICAgICBjaGFuZ2VkIHw9IHZhcmlhYmxlQWNjZXNzRGF0YS0+bWVy
Z2VGbGFncyhOb2RlVXNlZEFzVmFsdWUpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0K
ICAgICAgICAgICAgIApAQCAtMTY3LDM2ICsxNzksNDggQEAgcHJpdmF0ZToKICAgICAgICAgY2Fz
ZSBCaXRYb3I6CiAgICAgICAgIGNhc2UgQml0UlNoaWZ0OgogICAgICAgICBjYXNlIEJpdExTaGlm
dDoKLSAgICAgICAgY2FzZSBCaXRVUlNoaWZ0OgorICAgICAgICBjYXNlIEJpdFVSU2hpZnQ6IHsK
KyAgICAgICAgICAgIGNoYW5nZWQgfD0gc2V0UHJlZGljdGlvbihQcmVkaWN0SW50MzIpOworICAg
ICAgICAgICAgZmxhZ3MgfD0gTm9kZVVzZWRBc0ludDsKKyAgICAgICAgICAgIGZsYWdzICY9IH4o
Tm9kZVVzZWRBc051bWJlciB8IE5vZGVOZWVkc05lZ1plcm8pOworICAgICAgICAgICAgY2hhbmdl
ZCB8PSBtX2dyYXBoW25vZGUuY2hpbGQxKCldLm1lcmdlRmxhZ3MoZmxhZ3MpOworICAgICAgICAg
ICAgY2hhbmdlZCB8PSBtX2dyYXBoW25vZGUuY2hpbGQyKCldLm1lcmdlRmxhZ3MoZmxhZ3MpOwor
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgICAgIAogICAgICAgICBjYXNl
IFZhbHVlVG9JbnQzMjogewogICAgICAgICAgICAgY2hhbmdlZCB8PSBzZXRQcmVkaWN0aW9uKFBy
ZWRpY3RJbnQzMik7CisgICAgICAgICAgICBmbGFncyB8PSBOb2RlVXNlZEFzSW50OworICAgICAg
ICAgICAgZmxhZ3MgJj0gfihOb2RlVXNlZEFzTnVtYmVyIHwgTm9kZU5lZWRzTmVnWmVybyk7Cisg
ICAgICAgICAgICBjaGFuZ2VkIHw9IG1fZ3JhcGhbbm9kZS5jaGlsZDEoKV0ubWVyZ2VGbGFncyhm
bGFncyk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICAgICAgCiAgICAg
ICAgIGNhc2UgQXJyYXlQb3A6IHsKLSAgICAgICAgICAgIGlmIChub2RlLmdldEhlYXBQcmVkaWN0
aW9uKCkpCi0gICAgICAgICAgICAgICAgY2hhbmdlZCB8PSBtZXJnZVByZWRpY3Rpb24obm9kZS5n
ZXRIZWFwUHJlZGljdGlvbigpKTsKKyAgICAgICAgICAgIGNoYW5nZWQgfD0gbWVyZ2VQcmVkaWN0
aW9uKG5vZGUuZ2V0SGVhcFByZWRpY3Rpb24oKSk7CisgICAgICAgICAgICBjaGFuZ2VkIHw9IG1l
cmdlRGVmYXVsdEZsYWdzKG5vZGUpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KIAog
ICAgICAgICBjYXNlIEFycmF5UHVzaDogewotICAgICAgICAgICAgaWYgKG5vZGUuZ2V0SGVhcFBy
ZWRpY3Rpb24oKSkKLSAgICAgICAgICAgICAgICBjaGFuZ2VkIHw9IG1lcmdlUHJlZGljdGlvbihu
b2RlLmdldEhlYXBQcmVkaWN0aW9uKCkpOwotICAgICAgICAgICAgY2hhbmdlZCB8PSBtZXJnZURl
ZmF1bHRBcml0aEZsYWdzKG5vZGUsIGZsYWdzKTsKKyAgICAgICAgICAgIGNoYW5nZWQgfD0gbWVy
Z2VQcmVkaWN0aW9uKG5vZGUuZ2V0SGVhcFByZWRpY3Rpb24oKSk7CisgICAgICAgICAgICBjaGFu
Z2VkIHw9IG1fZ3JhcGhbbm9kZS5jaGlsZDEoKV0ubWVyZ2VGbGFncyhOb2RlVXNlZEFzVmFsdWUp
OworICAgICAgICAgICAgY2hhbmdlZCB8PSBtX2dyYXBoW25vZGUuY2hpbGQyKCldLm1lcmdlRmxh
Z3MoTm9kZVVzZWRBc1ZhbHVlKTsKKyAgICAgICAgICAgIGNoYW5nZWQgfD0gbm90aWNlRXNjYXBp
bmdJbnRlZ2VyKG5vZGUuY2hpbGQyKCkpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0K
IAogICAgICAgICBjYXNlIFJlZ0V4cEV4ZWM6CiAgICAgICAgIGNhc2UgUmVnRXhwVGVzdDogewot
ICAgICAgICAgICAgaWYgKG5vZGUuZ2V0SGVhcFByZWRpY3Rpb24oKSkKLSAgICAgICAgICAgICAg
ICBjaGFuZ2VkIHw9IG1lcmdlUHJlZGljdGlvbihub2RlLmdldEhlYXBQcmVkaWN0aW9uKCkpOwot
ICAgICAgICAgICAgY2hhbmdlZCB8PSBtZXJnZURlZmF1bHRBcml0aEZsYWdzKG5vZGUsIGZsYWdz
KTsKKyAgICAgICAgICAgIGNoYW5nZWQgfD0gbWVyZ2VQcmVkaWN0aW9uKG5vZGUuZ2V0SGVhcFBy
ZWRpY3Rpb24oKSk7CisgICAgICAgICAgICBjaGFuZ2VkIHw9IG1lcmdlRGVmYXVsdEZsYWdzKG5v
ZGUpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KIAogICAgICAgICBjYXNlIFN0cmlu
Z0NoYXJDb2RlQXQ6IHsKICAgICAgICAgICAgIGNoYW5nZWQgfD0gbWVyZ2VQcmVkaWN0aW9uKFBy
ZWRpY3RJbnQzMik7Ci0gICAgICAgICAgICBjaGFuZ2VkIHw9IG1lcmdlRGVmYXVsdEFyaXRoRmxh
Z3Mobm9kZSwgZmxhZ3MpOworICAgICAgICAgICAgY2hhbmdlZCB8PSBtX2dyYXBoW25vZGUuY2hp
bGQxKCldLm1lcmdlRmxhZ3MoTm9kZVVzZWRBc1ZhbHVlKTsKKyAgICAgICAgICAgIGNoYW5nZWQg
fD0gbV9ncmFwaFtub2RlLmNoaWxkMigpXS5tZXJnZUZsYWdzKE5vZGVVc2VkQXNOdW1iZXIgfCBO
b2RlVXNlZEFzSW50KTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAKQEAgLTIwNSwx
MyArMjI5LDE2IEBAIHByaXZhdGU6CiAgICAgICAgICAgICBQcmVkaWN0ZWRUeXBlIHJpZ2h0ID0g
bV9ncmFwaFtub2RlLmNoaWxkMigpXS5wcmVkaWN0aW9uKCk7CiAgICAgICAgICAgICAKICAgICAg
ICAgICAgIGlmIChsZWZ0ICYmIHJpZ2h0KSB7Ci0gICAgICAgICAgICAgICAgaWYgKGlzSW50MzJQ
cmVkaWN0aW9uKG1lcmdlUHJlZGljdGlvbnMobGVmdCwgcmlnaHQpKSAmJiBub2RlQ2FuU3BlY3Vs
YXRlSW50ZWdlcihub2RlLmFyaXRoTm9kZUZsYWdzKCkpKQorICAgICAgICAgICAgICAgIGlmIChp
c0ludDMyUHJlZGljdGlvbihtZXJnZVByZWRpY3Rpb25zKGxlZnQsIHJpZ2h0KSkKKyAgICAgICAg
ICAgICAgICAgICAgJiYgbm9kZUNhblNwZWN1bGF0ZUludGVnZXIobm9kZS5hcml0aE5vZGVGbGFn
cygpKSkKICAgICAgICAgICAgICAgICAgICAgY2hhbmdlZCB8PSBtZXJnZVByZWRpY3Rpb24oUHJl
ZGljdEludDMyKTsKICAgICAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgICAgIGNo
YW5nZWQgfD0gbWVyZ2VQcmVkaWN0aW9uKFByZWRpY3REb3VibGUpOwogICAgICAgICAgICAgfQog
ICAgICAgICAgICAgCi0gICAgICAgICAgICBjaGFuZ2VkIHw9IG1lcmdlRGVmYXVsdEFyaXRoRmxh
Z3Mobm9kZSwgZmxhZ3MpOworICAgICAgICAgICAgZmxhZ3MgfD0gTm9kZVVzZWRBc1ZhbHVlOwor
ICAgICAgICAgICAgY2hhbmdlZCB8PSBtX2dyYXBoW25vZGUuY2hpbGQxKCldLm1lcmdlRmxhZ3Mo
ZmxhZ3MpOworICAgICAgICAgICAgY2hhbmdlZCB8PSBtX2dyYXBoW25vZGUuY2hpbGQyKCldLm1l
cmdlRmxhZ3MoZmxhZ3MpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAg
ICAgIApAQCAtMzA1LDcgKzMzMiw4IEBAIHByaXZhdGU6CiAgICAgICAgICAgICBQcmVkaWN0ZWRU
eXBlIHJpZ2h0ID0gbV9ncmFwaFtub2RlLmNoaWxkMigpXS5wcmVkaWN0aW9uKCk7CiAgICAgICAg
ICAgICAKICAgICAgICAgICAgIGlmIChsZWZ0ICYmIHJpZ2h0KSB7Ci0gICAgICAgICAgICAgICAg
aWYgKGlzSW50MzJQcmVkaWN0aW9uKG1lcmdlUHJlZGljdGlvbnMobGVmdCwgcmlnaHQpKSAmJiBu
b2RlQ2FuU3BlY3VsYXRlSW50ZWdlcihub2RlLmFyaXRoTm9kZUZsYWdzKCkpKQorICAgICAgICAg
ICAgICAgIGlmIChpc0ludDMyUHJlZGljdGlvbihtZXJnZVByZWRpY3Rpb25zKGxlZnQsIHJpZ2h0
KSkKKyAgICAgICAgICAgICAgICAgICAgJiYgbm9kZUNhblNwZWN1bGF0ZUludGVnZXIobm9kZS5h
cml0aE5vZGVGbGFncygpKSkKICAgICAgICAgICAgICAgICAgICAgY2hhbmdlZCB8PSBtZXJnZVBy
ZWRpY3Rpb24oUHJlZGljdEludDMyKTsKICAgICAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAg
ICAgICAgICAgIGNoYW5nZWQgfD0gbWVyZ2VQcmVkaWN0aW9uKFByZWRpY3REb3VibGUpOwpAQCAt
MzIzLDcgKzM1MSw4IEBAIHByaXZhdGU6CiAgICAgICAgICAgICBQcmVkaWN0ZWRUeXBlIHJpZ2h0
ID0gbV9ncmFwaFtub2RlLmNoaWxkMigpXS5wcmVkaWN0aW9uKCk7CiAgICAgICAgICAgICAKICAg
ICAgICAgICAgIGlmIChsZWZ0ICYmIHJpZ2h0KSB7Ci0gICAgICAgICAgICAgICAgaWYgKGlzSW50
MzJQcmVkaWN0aW9uKG1lcmdlUHJlZGljdGlvbnMobGVmdCwgcmlnaHQpKSAmJiBub2RlQ2FuU3Bl
Y3VsYXRlSW50ZWdlcihub2RlLmFyaXRoTm9kZUZsYWdzKCkpKQorICAgICAgICAgICAgICAgIGlm
IChpc0ludDMyUHJlZGljdGlvbihtZXJnZVByZWRpY3Rpb25zKGxlZnQsIHJpZ2h0KSkKKyAgICAg
ICAgICAgICAgICAgICAgJiYgbm9kZUNhblNwZWN1bGF0ZUludGVnZXIobm9kZS5hcml0aE5vZGVG
bGFncygpKSkKICAgICAgICAgICAgICAgICAgICAgY2hhbmdlZCB8PSBtZXJnZVByZWRpY3Rpb24o
UHJlZGljdEludDMyKTsKICAgICAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgICAg
IGNoYW5nZWQgfD0gbWVyZ2VQcmVkaWN0aW9uKFByZWRpY3REb3VibGUpOwpAQCAtMzQyLDE4ICsz
NzEsMTYgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIAogICAgICAgICBjYXNlIEFyaXRoU3FydDog
ewogICAgICAgICAgICAgY2hhbmdlZCB8PSBzZXRQcmVkaWN0aW9uKFByZWRpY3REb3VibGUpOwot
ICAgICAgICAgICAgY2hhbmdlZCB8PSBtZXJnZURlZmF1bHRBcml0aEZsYWdzKG5vZGUsIGZsYWdz
KTsKKyAgICAgICAgICAgIGNoYW5nZWQgfD0gbV9ncmFwaFtub2RlLmNoaWxkMSgpXS5tZXJnZUZs
YWdzKGZsYWdzIHwgTm9kZVVzZWRBc1ZhbHVlKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICB9CiAgICAgICAgICAgICAKICAgICAgICAgY2FzZSBBcml0aEFiczogewogICAgICAgICAgICAg
UHJlZGljdGVkVHlwZSBjaGlsZCA9IG1fZ3JhcGhbbm9kZS5jaGlsZDEoKV0ucHJlZGljdGlvbigp
OwotICAgICAgICAgICAgaWYgKGNoaWxkKSB7Ci0gICAgICAgICAgICAgICAgaWYgKG5vZGVDYW5T
cGVjdWxhdGVJbnRlZ2VyKG5vZGUuYXJpdGhOb2RlRmxhZ3MoKSkpCi0gICAgICAgICAgICAgICAg
ICAgIGNoYW5nZWQgfD0gbWVyZ2VQcmVkaWN0aW9uKGNoaWxkKTsKLSAgICAgICAgICAgICAgICBl
bHNlCi0gICAgICAgICAgICAgICAgICAgIGNoYW5nZWQgfD0gc2V0UHJlZGljdGlvbihQcmVkaWN0
RG91YmxlKTsKLSAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChub2RlQ2FuU3BlY3VsYXRl
SW50ZWdlcihub2RlLmFyaXRoTm9kZUZsYWdzKCkpKQorICAgICAgICAgICAgICAgIGNoYW5nZWQg
fD0gbWVyZ2VQcmVkaWN0aW9uKGNoaWxkKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAg
ICAgICBjaGFuZ2VkIHw9IHNldFByZWRpY3Rpb24oUHJlZGljdERvdWJsZSk7CiAKICAgICAgICAg
ICAgIGZsYWdzICY9IH5Ob2RlTmVlZHNOZWdaZXJvOwogICAgICAgICAgICAgY2hhbmdlZCB8PSBt
X2dyYXBoW25vZGUuY2hpbGQxKCldLm1lcmdlRmxhZ3MoZmxhZ3MpOwpAQCAtMzY5LDcxICszOTYs
NTYgQEAgcHJpdmF0ZToKICAgICAgICAgY2FzZSBDb21wYXJlU3RyaWN0RXE6CiAgICAgICAgIGNh
c2UgSW5zdGFuY2VPZjogewogICAgICAgICAgICAgY2hhbmdlZCB8PSBzZXRQcmVkaWN0aW9uKFBy
ZWRpY3RCb29sZWFuKTsKLSAgICAgICAgICAgIGNoYW5nZWQgfD0gbWVyZ2VEZWZhdWx0QXJpdGhG
bGFncyhub2RlLCBmbGFncyk7CisgICAgICAgICAgICBjaGFuZ2VkIHw9IG1lcmdlRGVmYXVsdEZs
YWdzKG5vZGUpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgICAgIAog
ICAgICAgICBjYXNlIEdldEJ5SWQ6IHsKLSAgICAgICAgICAgIGlmIChub2RlLmdldEhlYXBQcmVk
aWN0aW9uKCkpCi0gICAgICAgICAgICAgICAgY2hhbmdlZCB8PSBtZXJnZVByZWRpY3Rpb24obm9k
ZS5nZXRIZWFwUHJlZGljdGlvbigpKTsKLSAgICAgICAgICAgIGVsc2UgaWYgKGNvZGVCbG9jaygp
LT5pZGVudGlmaWVyKG5vZGUuaWRlbnRpZmllck51bWJlcigpKSA9PSBnbG9iYWxEYXRhKCkucHJv
cGVydHlOYW1lcy0+bGVuZ3RoKSB7Ci0gICAgICAgICAgICAgICAgLy8gSWYgdGhlcmUgaXMgbm8g
cHJlZGljdGlvbiBmcm9tIHZhbHVlIHByb2ZpbGVzLCBjaGVjayBpZiB3ZSBtaWdodCBiZQotICAg
ICAgICAgICAgICAgIC8vIGFibGUgdG8gaW5mZXIgdGhlIHR5cGUgb3Vyc2VsdmVzLgotICAgICAg
ICAgICAgICAgIGJvb2wgaXNBcnJheSA9IGlzQXJyYXlQcmVkaWN0aW9uKG1fZ3JhcGhbbm9kZS5j
aGlsZDEoKV0ucHJlZGljdGlvbigpKTsKLSAgICAgICAgICAgICAgICBib29sIGlzU3RyaW5nID0g
aXNTdHJpbmdQcmVkaWN0aW9uKG1fZ3JhcGhbbm9kZS5jaGlsZDEoKV0ucHJlZGljdGlvbigpKTsK
LSAgICAgICAgICAgICAgICBib29sIGlzQnl0ZUFycmF5ID0gbV9ncmFwaFtub2RlLmNoaWxkMSgp
XS5zaG91bGRTcGVjdWxhdGVCeXRlQXJyYXkoKTsKLSAgICAgICAgICAgICAgICBib29sIGlzSW50
OEFycmF5ID0gbV9ncmFwaFtub2RlLmNoaWxkMSgpXS5zaG91bGRTcGVjdWxhdGVJbnQ4QXJyYXko
KTsKLSAgICAgICAgICAgICAgICBib29sIGlzSW50MTZBcnJheSA9IG1fZ3JhcGhbbm9kZS5jaGls
ZDEoKV0uc2hvdWxkU3BlY3VsYXRlSW50MTZBcnJheSgpOwotICAgICAgICAgICAgICAgIGJvb2wg
aXNJbnQzMkFycmF5ID0gbV9ncmFwaFtub2RlLmNoaWxkMSgpXS5zaG91bGRTcGVjdWxhdGVJbnQz
MkFycmF5KCk7Ci0gICAgICAgICAgICAgICAgYm9vbCBpc1VpbnQ4QXJyYXkgPSBtX2dyYXBoW25v
ZGUuY2hpbGQxKCldLnNob3VsZFNwZWN1bGF0ZVVpbnQ4QXJyYXkoKTsKLSAgICAgICAgICAgICAg
ICBib29sIGlzVWludDhDbGFtcGVkQXJyYXkgPSBtX2dyYXBoW25vZGUuY2hpbGQxKCldLnNob3Vs
ZFNwZWN1bGF0ZVVpbnQ4Q2xhbXBlZEFycmF5KCk7Ci0gICAgICAgICAgICAgICAgYm9vbCBpc1Vp
bnQxNkFycmF5ID0gbV9ncmFwaFtub2RlLmNoaWxkMSgpXS5zaG91bGRTcGVjdWxhdGVVaW50MTZB
cnJheSgpOwotICAgICAgICAgICAgICAgIGJvb2wgaXNVaW50MzJBcnJheSA9IG1fZ3JhcGhbbm9k
ZS5jaGlsZDEoKV0uc2hvdWxkU3BlY3VsYXRlVWludDMyQXJyYXkoKTsKLSAgICAgICAgICAgICAg
ICBib29sIGlzRmxvYXQzMkFycmF5ID0gbV9ncmFwaFtub2RlLmNoaWxkMSgpXS5zaG91bGRTcGVj
dWxhdGVGbG9hdDMyQXJyYXkoKTsKLSAgICAgICAgICAgICAgICBib29sIGlzRmxvYXQ2NEFycmF5
ID0gbV9ncmFwaFtub2RlLmNoaWxkMSgpXS5zaG91bGRTcGVjdWxhdGVGbG9hdDY0QXJyYXkoKTsK
LSAgICAgICAgICAgICAgICBpZiAoaXNBcnJheSB8fCBpc1N0cmluZyB8fCBpc0J5dGVBcnJheSB8
fCBpc0ludDhBcnJheSB8fCBpc0ludDE2QXJyYXkgfHwgaXNJbnQzMkFycmF5IHx8IGlzVWludDhB
cnJheSB8fCBpc1VpbnQ4Q2xhbXBlZEFycmF5IHx8IGlzVWludDE2QXJyYXkgfHwgaXNVaW50MzJB
cnJheSB8fCBpc0Zsb2F0MzJBcnJheSB8fCBpc0Zsb2F0NjRBcnJheSkKLSAgICAgICAgICAgICAg
ICAgICAgY2hhbmdlZCB8PSBtZXJnZVByZWRpY3Rpb24oUHJlZGljdEludDMyKTsKLSAgICAgICAg
ICAgIH0KLSAgICAgICAgICAgIGNoYW5nZWQgfD0gbWVyZ2VEZWZhdWx0QXJpdGhGbGFncyhub2Rl
LCBmbGFncyk7CisgICAgICAgICAgICBjaGFuZ2VkIHw9IG1lcmdlUHJlZGljdGlvbihub2RlLmdl
dEhlYXBQcmVkaWN0aW9uKCkpOworICAgICAgICAgICAgY2hhbmdlZCB8PSBtZXJnZURlZmF1bHRG
bGFncyhub2RlKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgICAgICAK
ICAgICAgICAgY2FzZSBHZXRCeUlkRmx1c2g6Ci0gICAgICAgICAgICBpZiAobm9kZS5nZXRIZWFw
UHJlZGljdGlvbigpKQotICAgICAgICAgICAgICAgIGNoYW5nZWQgfD0gbWVyZ2VQcmVkaWN0aW9u
KG5vZGUuZ2V0SGVhcFByZWRpY3Rpb24oKSk7Ci0gICAgICAgICAgICBjaGFuZ2VkIHw9IG1lcmdl
RGVmYXVsdEFyaXRoRmxhZ3Mobm9kZSwgZmxhZ3MpOworICAgICAgICAgICAgY2hhbmdlZCB8PSBt
ZXJnZVByZWRpY3Rpb24obm9kZS5nZXRIZWFwUHJlZGljdGlvbigpKTsKKyAgICAgICAgICAgIGNo
YW5nZWQgfD0gbWVyZ2VEZWZhdWx0RmxhZ3Mobm9kZSk7CiAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgICAgIAogICAgICAgICBjYXNlIEdldEJ5VmFsOiB7Ci0gICAgICAgICAgICBpZiAobV9n
cmFwaFtub2RlLmNoaWxkMSgpXS5zaG91bGRTcGVjdWxhdGVGbG9hdDMyQXJyYXkoKSB8fCBtX2dy
YXBoW25vZGUuY2hpbGQxKCldLnNob3VsZFNwZWN1bGF0ZUZsb2F0NjRBcnJheSgpKQorICAgICAg
ICAgICAgaWYgKG1fZ3JhcGhbbm9kZS5jaGlsZDEoKV0uc2hvdWxkU3BlY3VsYXRlRmxvYXQzMkFy
cmF5KCkKKyAgICAgICAgICAgICAgICB8fCBtX2dyYXBoW25vZGUuY2hpbGQxKCldLnNob3VsZFNw
ZWN1bGF0ZUZsb2F0NjRBcnJheSgpKQogICAgICAgICAgICAgICAgIGNoYW5nZWQgfD0gbWVyZ2VQ
cmVkaWN0aW9uKFByZWRpY3REb3VibGUpOwotICAgICAgICAgICAgZWxzZSBpZiAobm9kZS5nZXRI
ZWFwUHJlZGljdGlvbigpKQorICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgIGNoYW5n
ZWQgfD0gbWVyZ2VQcmVkaWN0aW9uKG5vZGUuZ2V0SGVhcFByZWRpY3Rpb24oKSk7CiAKLSAgICAg
ICAgICAgIGNoYW5nZWQgfD0gbV9ncmFwaFtub2RlLmNoaWxkMSgpXS5tZXJnZUZsYWdzKGZsYWdz
IHwgTm9kZVVzZWRBc051bWJlciB8IE5vZGVOZWVkc05lZ1plcm8pOwotICAgICAgICAgICAgY2hh
bmdlZCB8PSBtX2dyYXBoW25vZGUuY2hpbGQyKCldLm1lcmdlRmxhZ3MoZmxhZ3MgfCBOb2RlVXNl
ZEFzTnVtYmVyKTsKKyAgICAgICAgICAgIGNoYW5nZWQgfD0gbV9ncmFwaFtub2RlLmNoaWxkMSgp
XS5tZXJnZUZsYWdzKE5vZGVVc2VkQXNWYWx1ZSk7CisgICAgICAgICAgICBjaGFuZ2VkIHw9IG1f
Z3JhcGhbbm9kZS5jaGlsZDIoKV0ubWVyZ2VGbGFncyhOb2RlVXNlZEFzTnVtYmVyIHwgTm9kZVVz
ZWRBc0ludCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICAgICAgCiAg
ICAgICAgIGNhc2UgR2V0UHJvcGVydHlTdG9yYWdlOiAKICAgICAgICAgY2FzZSBHZXRJbmRleGVk
UHJvcGVydHlTdG9yYWdlOiB7CiAgICAgICAgICAgICBjaGFuZ2VkIHw9IHNldFByZWRpY3Rpb24o
UHJlZGljdE90aGVyKTsKLSAgICAgICAgICAgIGNoYW5nZWQgfD0gbWVyZ2VEZWZhdWx0QXJpdGhG
bGFncyhub2RlLCBmbGFncyk7CisgICAgICAgICAgICBjaGFuZ2VkIHw9IG1lcmdlRGVmYXVsdEZs
YWdzKG5vZGUpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KIAogICAgICAgICBjYXNl
IEdldEJ5T2Zmc2V0OiB7Ci0gICAgICAgICAgICBpZiAobm9kZS5nZXRIZWFwUHJlZGljdGlvbigp
KQotICAgICAgICAgICAgICAgIGNoYW5nZWQgfD0gbWVyZ2VQcmVkaWN0aW9uKG5vZGUuZ2V0SGVh
cFByZWRpY3Rpb24oKSk7Ci0gICAgICAgICAgICBjaGFuZ2VkIHw9IG1lcmdlRGVmYXVsdEFyaXRo
RmxhZ3Mobm9kZSwgZmxhZ3MpOworICAgICAgICAgICAgY2hhbmdlZCB8PSBtZXJnZVByZWRpY3Rp
b24obm9kZS5nZXRIZWFwUHJlZGljdGlvbigpKTsKKyAgICAgICAgICAgIGNoYW5nZWQgfD0gbWVy
Z2VEZWZhdWx0RmxhZ3Mobm9kZSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAg
ICAgICAgICAgCiAgICAgICAgIGNhc2UgQ2FsbDoKICAgICAgICAgY2FzZSBDb25zdHJ1Y3Q6IHsK
LSAgICAgICAgICAgIGlmIChub2RlLmdldEhlYXBQcmVkaWN0aW9uKCkpCi0gICAgICAgICAgICAg
ICAgY2hhbmdlZCB8PSBtZXJnZVByZWRpY3Rpb24obm9kZS5nZXRIZWFwUHJlZGljdGlvbigpKTsK
LSAgICAgICAgICAgIGNoYW5nZWQgfD0gbWVyZ2VEZWZhdWx0QXJpdGhGbGFncyhub2RlLCBmbGFn
cyk7CisgICAgICAgICAgICBjaGFuZ2VkIHw9IG1lcmdlUHJlZGljdGlvbihub2RlLmdldEhlYXBQ
cmVkaWN0aW9uKCkpOworICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBjaGlsZElkeCA9IG5vZGUu
Zmlyc3RDaGlsZCgpOworICAgICAgICAgICAgICAgICBjaGlsZElkeCA8IG5vZGUuZmlyc3RDaGls
ZCgpICsgbm9kZS5udW1DaGlsZHJlbigpOworICAgICAgICAgICAgICAgICArK2NoaWxkSWR4KSB7
CisgICAgICAgICAgICAgICAgRWRnZSBlZGdlID0gbV9ncmFwaC5tX3ZhckFyZ0NoaWxkcmVuW2No
aWxkSWR4XTsKKyAgICAgICAgICAgICAgICBjaGFuZ2VkIHw9IG1fZ3JhcGhbZWRnZV0ubWVyZ2VG
bGFncyhOb2RlVXNlZEFzVmFsdWUpOworICAgICAgICAgICAgICAgIGNoYW5nZWQgfD0gbm90aWNl
RXNjYXBpbmdJbnRlZ2VyKGVkZ2UpOworICAgICAgICAgICAgfQogICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgIH0KICAgICAgICAgICAgIApAQCAtNDQ2LDIwICs0NTgsMjEgQEAgcHJpdmF0ZToK
ICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgY2hhbmdlZCB8PSBtZXJnZVByZWRp
Y3Rpb24ocHJlZGljdGlvbik7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBjaGFuZ2VkIHw9
IG1lcmdlRGVmYXVsdEFyaXRoRmxhZ3Mobm9kZSwgZmxhZ3MpOworICAgICAgICAgICAgY2hhbmdl
ZCB8PSBtZXJnZURlZmF1bHRGbGFncyhub2RlKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICB9CiAgICAgICAgICAgICAKICAgICAgICAgY2FzZSBHZXRHbG9iYWxWYXI6IHsKICAgICAgICAg
ICAgIFByZWRpY3RlZFR5cGUgcHJlZGljdGlvbiA9IG1fZ3JhcGguZ2V0R2xvYmFsVmFyUHJlZGlj
dGlvbihub2RlLnZhck51bWJlcigpKTsKLSAgICAgICAgICAgIGlmIChwcmVkaWN0aW9uKQotICAg
ICAgICAgICAgICAgIGNoYW5nZWQgfD0gbWVyZ2VQcmVkaWN0aW9uKHByZWRpY3Rpb24pOworICAg
ICAgICAgICAgY2hhbmdlZCB8PSBtZXJnZVByZWRpY3Rpb24ocHJlZGljdGlvbik7CiAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICAgICAgCiAgICAgICAgIGNhc2UgUHV0R2xv
YmFsVmFyOiB7Ci0gICAgICAgICAgICBjaGFuZ2VkIHw9IG1fZ3JhcGgucHJlZGljdEdsb2JhbFZh
cihub2RlLnZhck51bWJlcigpLCBtX2dyYXBoW25vZGUuY2hpbGQxKCldLnByZWRpY3Rpb24oKSk7
Ci0gICAgICAgICAgICBjaGFuZ2VkIHw9IG1lcmdlRGVmYXVsdEFyaXRoRmxhZ3Mobm9kZSwgZmxh
Z3MpOworICAgICAgICAgICAgY2hhbmdlZCB8PSBtX2dyYXBoLnByZWRpY3RHbG9iYWxWYXIoCisg
ICAgICAgICAgICAgICAgbm9kZS52YXJOdW1iZXIoKSwgbV9ncmFwaFtub2RlLmNoaWxkMSgpXS5w
cmVkaWN0aW9uKCkpOworICAgICAgICAgICAgY2hhbmdlZCB8PSBtX2dyYXBoW25vZGUuY2hpbGQx
KCldLm1lcmdlRmxhZ3MoTm9kZVVzZWRBc1ZhbHVlKTsKKyAgICAgICAgICAgIGNoYW5nZWQgfD0g
bm90aWNlRXNjYXBpbmdJbnRlZ2VyKG5vZGUuY2hpbGQxKCkpOwogICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgIH0KICAgICAgICAgICAgIApAQCAtNDY5LDggKzQ4Miw3IEBAIHByaXZhdGU6CiAg
ICAgICAgIGNhc2UgUmVzb2x2ZUJhc2VTdHJpY3RQdXQ6CiAgICAgICAgIGNhc2UgUmVzb2x2ZUds
b2JhbDogewogICAgICAgICAgICAgUHJlZGljdGVkVHlwZSBwcmVkaWN0aW9uID0gbm9kZS5nZXRI
ZWFwUHJlZGljdGlvbigpOwotICAgICAgICAgICAgaWYgKHByZWRpY3Rpb24pCi0gICAgICAgICAg
ICAgICAgY2hhbmdlZCB8PSBtZXJnZVByZWRpY3Rpb24ocHJlZGljdGlvbik7CisgICAgICAgICAg
ICBjaGFuZ2VkIHw9IG1lcmdlUHJlZGljdGlvbihwcmVkaWN0aW9uKTsKICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICB9CiAgICAgICAgICAgICAKQEAgLTQ4NywxNCArNDk5LDI0IEBAIHByaXZh
dGU6CiAgICAgICAgIGNhc2UgQ3JlYXRlVGhpczoKICAgICAgICAgY2FzZSBOZXdPYmplY3Q6IHsK
ICAgICAgICAgICAgIGNoYW5nZWQgfD0gc2V0UHJlZGljdGlvbihQcmVkaWN0RmluYWxPYmplY3Qp
OwotICAgICAgICAgICAgY2hhbmdlZCB8PSBtZXJnZURlZmF1bHRBcml0aEZsYWdzKG5vZGUsIGZs
YWdzKTsKKyAgICAgICAgICAgIGNoYW5nZWQgfD0gbWVyZ2VEZWZhdWx0RmxhZ3Mobm9kZSk7Cisg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICAgICAgCisgICAgICAgIGNhc2Ug
TmV3QXJyYXk6IHsKKyAgICAgICAgICAgIGNoYW5nZWQgfD0gc2V0UHJlZGljdGlvbihQcmVkaWN0
QXJyYXkpOworICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBjaGlsZElkeCA9IG5vZGUuZmlyc3RD
aGlsZCgpOworICAgICAgICAgICAgICAgICBjaGlsZElkeCA8IG5vZGUuZmlyc3RDaGlsZCgpICsg
bm9kZS5udW1DaGlsZHJlbigpOworICAgICAgICAgICAgICAgICArK2NoaWxkSWR4KSB7CisgICAg
ICAgICAgICAgICAgRWRnZSBlZGdlID0gbV9ncmFwaC5tX3ZhckFyZ0NoaWxkcmVuW2NoaWxkSWR4
XTsKKyAgICAgICAgICAgICAgICBjaGFuZ2VkIHw9IG1fZ3JhcGhbZWRnZV0ubWVyZ2VGbGFncyhO
b2RlVXNlZEFzVmFsdWUpOworICAgICAgICAgICAgICAgIGNoYW5nZWQgfD0gbm90aWNlRXNjYXBp
bmdJbnRlZ2VyKGVkZ2UpOworICAgICAgICAgICAgfQogICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgIH0KICAgICAgICAgICAgIAotICAgICAgICBjYXNlIE5ld0FycmF5OgogICAgICAgICBjYXNl
IE5ld0FycmF5QnVmZmVyOiB7CiAgICAgICAgICAgICBjaGFuZ2VkIHw9IHNldFByZWRpY3Rpb24o
UHJlZGljdEFycmF5KTsKLSAgICAgICAgICAgIGNoYW5nZWQgfD0gbWVyZ2VEZWZhdWx0QXJpdGhG
bGFncyhub2RlLCBmbGFncyk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAg
ICAgICAgCkBAIC01MDMsMTAgKzUyNSwxOSBAQCBwcml2YXRlOgogICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgIH0KICAgICAgICAgCi0gICAgICAgIGNhc2UgU3RyaW5nQ2hhckF0OgorICAgICAg
ICBjYXNlIFN0cmluZ0NoYXJBdDogeworICAgICAgICAgICAgY2hhbmdlZCB8PSBzZXRQcmVkaWN0
aW9uKFByZWRpY3RTdHJpbmcpOworICAgICAgICAgICAgY2hhbmdlZCB8PSBtX2dyYXBoW25vZGUu
Y2hpbGQxKCldLm1lcmdlRmxhZ3MoTm9kZVVzZWRBc1ZhbHVlKTsKKyAgICAgICAgICAgIGNoYW5n
ZWQgfD0gbV9ncmFwaFtub2RlLmNoaWxkMigpXS5tZXJnZUZsYWdzKE5vZGVVc2VkQXNOdW1iZXIg
fCBOb2RlVXNlZEFzSW50KTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAg
ICAgICAKICAgICAgICAgY2FzZSBTdHJDYXQ6IHsKICAgICAgICAgICAgIGNoYW5nZWQgfD0gc2V0
UHJlZGljdGlvbihQcmVkaWN0U3RyaW5nKTsKLSAgICAgICAgICAgIGNoYW5nZWQgfD0gbWVyZ2VE
ZWZhdWx0QXJpdGhGbGFncyhub2RlLCBmbGFncyk7CisgICAgICAgICAgICBmb3IgKHVuc2lnbmVk
IGNoaWxkSWR4ID0gbm9kZS5maXJzdENoaWxkKCk7CisgICAgICAgICAgICAgICAgIGNoaWxkSWR4
IDwgbm9kZS5maXJzdENoaWxkKCkgKyBub2RlLm51bUNoaWxkcmVuKCk7CisgICAgICAgICAgICAg
ICAgICsrY2hpbGRJZHgpCisgICAgICAgICAgICAgICAgY2hhbmdlZCB8PSBtX2dyYXBoW21fZ3Jh
cGgubV92YXJBcmdDaGlsZHJlbltjaGlsZElkeF1dLm1lcmdlRmxhZ3MoTm9kZVVzZWRBc051bWJl
cik7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICAgICAgCkBAIC01MjMs
NyArNTU0LDggQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGNoaWxkICYg
UHJlZGljdE9iamVjdE1hc2spIHsKICAgICAgICAgICAgICAgICAgICAgLy8gT2JqZWN0cyBnZXQg
dHVybmVkIGludG8gc3RyaW5ncy4gU28gaWYgdGhlIGlucHV0IGhhcyBoaW50cyBvZiBvYmplY3Ru
ZXNzLAogICAgICAgICAgICAgICAgICAgICAvLyB0aGUgb3V0cHV0IHdpbGwgaGF2ZSBoaW5zdHMg
b2Ygc3RyaW5naW5lc3MuCi0gICAgICAgICAgICAgICAgICAgIGNoYW5nZWQgfD0gbWVyZ2VQcmVk
aWN0aW9uKG1lcmdlUHJlZGljdGlvbnMoY2hpbGQgJiB+UHJlZGljdE9iamVjdE1hc2ssIFByZWRp
Y3RTdHJpbmcpKTsKKyAgICAgICAgICAgICAgICAgICAgY2hhbmdlZCB8PSBtZXJnZVByZWRpY3Rp
b24oCisgICAgICAgICAgICAgICAgICAgICAgICBtZXJnZVByZWRpY3Rpb25zKGNoaWxkICYgflBy
ZWRpY3RPYmplY3RNYXNrLCBQcmVkaWN0U3RyaW5nKSk7CiAgICAgICAgICAgICAgICAgfSBlbHNl
CiAgICAgICAgICAgICAgICAgICAgIGNoYW5nZWQgfD0gbWVyZ2VQcmVkaWN0aW9uKGNoaWxkKTsK
ICAgICAgICAgICAgIH0KQEAgLTU0Myw2ICs1NzUsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgICAgIAorICAgICAgICBjYXNlIFB1dEJ5VmFsQWxp
YXM6CiAgICAgICAgIGNhc2UgR2V0QXJyYXlMZW5ndGg6CiAgICAgICAgIGNhc2UgR2V0Qnl0ZUFy
cmF5TGVuZ3RoOgogICAgICAgICBjYXNlIEdldEludDhBcnJheUxlbmd0aDoKQEAgLTU2MiwzMyAr
NTk1LDQ5IEBAIHByaXZhdGU6CiAgICAgICAgIH0KICAgICAgICAgCiAgICAgICAgIGNhc2UgUHV0
QnlWYWw6Ci0gICAgICAgICAgICBjaGFuZ2VkIHw9IG1fZ3JhcGhbbm9kZS5jaGlsZDEoKV0ubWVy
Z2VGbGFncyhmbGFncyB8IE5vZGVVc2VkQXNOdW1iZXIgfCBOb2RlTmVlZHNOZWdaZXJvKTsKLSAg
ICAgICAgICAgIGNoYW5nZWQgfD0gbV9ncmFwaFtub2RlLmNoaWxkMigpXS5tZXJnZUZsYWdzKGZs
YWdzIHwgTm9kZVVzZWRBc051bWJlcik7Ci0gICAgICAgICAgICBjaGFuZ2VkIHw9IG1fZ3JhcGhb
bm9kZS5jaGlsZDMoKV0ubWVyZ2VGbGFncyhmbGFncyB8IE5vZGVVc2VkQXNOdW1iZXIgfCBOb2Rl
TmVlZHNOZWdaZXJvKTsKKyAgICAgICAgICAgIGNoYW5nZWQgfD0gbV9ncmFwaFtub2RlLmNoaWxk
MSgpXS5tZXJnZUZsYWdzKE5vZGVVc2VkQXNWYWx1ZSk7CisgICAgICAgICAgICBjaGFuZ2VkIHw9
IG1fZ3JhcGhbbm9kZS5jaGlsZDIoKV0ubWVyZ2VGbGFncyhOb2RlVXNlZEFzTnVtYmVyIHwgTm9k
ZVVzZWRBc0ludCk7CisgICAgICAgICAgICBjaGFuZ2VkIHw9IG1fZ3JhcGhbbm9kZS5jaGlsZDMo
KV0ubWVyZ2VGbGFncyhOb2RlVXNlZEFzVmFsdWUpOworICAgICAgICAgICAgY2hhbmdlZCB8PSBu
b3RpY2VFc2NhcGluZ0ludGVnZXIobm9kZS5jaGlsZDMoKSk7CisgICAgICAgICAgICBicmVhazsK
KworICAgICAgICBjYXNlIFB1dFNjb3BlZFZhcjoKKyAgICAgICAgY2FzZSBSZXR1cm46CisgICAg
ICAgIGNhc2UgVGhyb3c6CisgICAgICAgICAgICBjaGFuZ2VkIHw9IG1fZ3JhcGhbbm9kZS5jaGls
ZDEoKV0ubWVyZ2VGbGFncyhOb2RlVXNlZEFzVmFsdWUpOworICAgICAgICAgICAgY2hhbmdlZCB8
PSBub3RpY2VFc2NhcGluZ0ludGVnZXIobm9kZS5jaGlsZDEoKSk7CisgICAgICAgICAgICBicmVh
azsKKworICAgICAgICBjYXNlIFB1dEJ5SWQ6CisgICAgICAgIGNhc2UgUHV0QnlJZERpcmVjdDoK
KyAgICAgICAgICAgIGNoYW5nZWQgfD0gbV9ncmFwaFtub2RlLmNoaWxkMSgpXS5tZXJnZUZsYWdz
KE5vZGVVc2VkQXNWYWx1ZSk7CisgICAgICAgICAgICBjaGFuZ2VkIHw9IG1fZ3JhcGhbbm9kZS5j
aGlsZDIoKV0ubWVyZ2VGbGFncyhOb2RlVXNlZEFzVmFsdWUpOworICAgICAgICAgICAgY2hhbmdl
ZCB8PSBub3RpY2VFc2NhcGluZ0ludGVnZXIobm9kZS5jaGlsZDIoKSk7CisgICAgICAgICAgICBi
cmVhazsKKworICAgICAgICBjYXNlIFB1dEJ5T2Zmc2V0OgorICAgICAgICAgICAgY2hhbmdlZCB8
PSBtX2dyYXBoW25vZGUuY2hpbGQxKCldLm1lcmdlRmxhZ3MoTm9kZVVzZWRBc1ZhbHVlKTsKKyAg
ICAgICAgICAgIGNoYW5nZWQgfD0gbV9ncmFwaFtub2RlLmNoaWxkMygpXS5tZXJnZUZsYWdzKE5v
ZGVVc2VkQXNWYWx1ZSk7CisgICAgICAgICAgICBjaGFuZ2VkIHw9IG5vdGljZUVzY2FwaW5nSW50
ZWdlcihub2RlLmNoaWxkMygpKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgCisg
ICAgICAgIGNhc2UgUGhpOgogICAgICAgICAgICAgYnJlYWs7CiAKICNpZm5kZWYgTkRFQlVHCiAg
ICAgICAgIC8vIFRoZXNlIGdldCBpZ25vcmVkIGJlY2F1c2UgdGhleSBkb24ndCByZXR1cm4gYW55
dGhpbmcuCi0gICAgICAgIGNhc2UgUHV0U2NvcGVkVmFyOgogICAgICAgICBjYXNlIERGRzo6SnVt
cDoKICAgICAgICAgY2FzZSBCcmFuY2g6CiAgICAgICAgIGNhc2UgQnJlYWtwb2ludDoKLSAgICAg
ICAgY2FzZSBSZXR1cm46CiAgICAgICAgIGNhc2UgQ2hlY2tIYXNJbnN0YW5jZToKLSAgICAgICAg
Y2FzZSBQaGk6Ci0gICAgICAgIGNhc2UgVGhyb3c6CiAgICAgICAgIGNhc2UgVGhyb3dSZWZlcmVu
Y2VFcnJvcjoKICAgICAgICAgY2FzZSBGb3JjZU9TUkV4aXQ6CiAgICAgICAgIGNhc2UgU2V0QXJn
dW1lbnQ6Ci0gICAgICAgIGNhc2UgUHV0QnlWYWxBbGlhczoKLSAgICAgICAgY2FzZSBQdXRCeUlk
OgotICAgICAgICBjYXNlIFB1dEJ5SWREaXJlY3Q6CiAgICAgICAgIGNhc2UgQ2hlY2tTdHJ1Y3R1
cmU6CiAgICAgICAgIGNhc2UgQ2hlY2tGdW5jdGlvbjoKICAgICAgICAgY2FzZSBQdXRTdHJ1Y3R1
cmU6Ci0gICAgICAgIGNhc2UgUHV0QnlPZmZzZXQ6CiAgICAgICAgIGNhc2UgVGVhck9mZkFjdGl2
YXRpb246Ci0gICAgICAgICAgICBjaGFuZ2VkIHw9IG1lcmdlRGVmYXVsdEFyaXRoRmxhZ3Mobm9k
ZSwgZmxhZ3MpOworICAgICAgICAgICAgY2hhbmdlZCB8PSBtZXJnZURlZmF1bHRGbGFncyhub2Rl
KTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgCiAgICAgICAgIC8vIFRoZXNlIGdl
dHMgaWdub3JlZCBiZWNhdXNlIGl0IGRvZXNuJ3QgZG8gYW55dGhpbmcuCkBAIC02MDIsNyArNjUx
LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIGJyZWFrOwogI2Vsc2UKICAgICAgICAgZGVmYXVs
dDoKLSAgICAgICAgICAgIGNoYW5nZWQgfD0gbWVyZ2VEZWZhdWx0QXJpdGhGbGFncyhub2RlLCBm
bGFncyk7CisgICAgICAgICAgICBjaGFuZ2VkIHw9IG1lcmdlRGVmYXVsdEZsYWdzKG5vZGUpOwog
ICAgICAgICAgICAgYnJlYWs7CiAjZW5kaWYKICAgICAgICAgfQpAQCAtNjEzLDI0ICs2NjIsMjUg
QEAgcHJpdmF0ZToKICAgICAgICAgCiAgICAgICAgIG1fY2hhbmdlZCB8PSBjaGFuZ2VkOwogICAg
IH0KLSAgICAKLSAgICBib29sIG1lcmdlRGVmYXVsdEFyaXRoRmxhZ3MoTm9kZSYgbm9kZSwgTm9k
ZUZsYWdzIGZsYWdzKQorICAgICAgICAKKyAgICBib29sIG1lcmdlRGVmYXVsdEZsYWdzKE5vZGUm
IG5vZGUpCiAgICAgewogICAgICAgICBib29sIGNoYW5nZWQgPSBmYWxzZTsKLSAgICAgICAgZmxh
Z3MgfD0gTm9kZVVzZWRBc051bWJlciB8IE5vZGVOZWVkc05lZ1plcm87CiAgICAgICAgIGlmIChu
b2RlLmZsYWdzKCkgJiBOb2RlSGFzVmFyQXJncykgewotICAgICAgICAgICAgZm9yICh1bnNpZ25l
ZCBjaGlsZElkeCA9IG5vZGUuZmlyc3RDaGlsZCgpOyBjaGlsZElkeCA8IG5vZGUuZmlyc3RDaGls
ZCgpICsgbm9kZS5udW1DaGlsZHJlbigpOyBjaGlsZElkeCsrKQotICAgICAgICAgICAgICAgIGNo
YW5nZWQgfD0gbV9ncmFwaFttX2dyYXBoLm1fdmFyQXJnQ2hpbGRyZW5bY2hpbGRJZHhdXS5tZXJn
ZUZsYWdzKGZsYWdzKTsKKyAgICAgICAgICAgIGZvciAodW5zaWduZWQgY2hpbGRJZHggPSBub2Rl
LmZpcnN0Q2hpbGQoKTsKKyAgICAgICAgICAgICAgICAgY2hpbGRJZHggPCBub2RlLmZpcnN0Q2hp
bGQoKSArIG5vZGUubnVtQ2hpbGRyZW4oKTsKKyAgICAgICAgICAgICAgICAgY2hpbGRJZHgrKykK
KyAgICAgICAgICAgICAgICBjaGFuZ2VkIHw9IG1fZ3JhcGhbbV9ncmFwaC5tX3ZhckFyZ0NoaWxk
cmVuW2NoaWxkSWR4XV0ubWVyZ2VGbGFncyhOb2RlVXNlZEFzVmFsdWUpOwogICAgICAgICB9IGVs
c2UgewogICAgICAgICAgICAgaWYgKCFub2RlLmNoaWxkMSgpKQogICAgICAgICAgICAgICAgIHJl
dHVybiBjaGFuZ2VkOwotICAgICAgICAgICAgY2hhbmdlZCB8PSBtX2dyYXBoW25vZGUuY2hpbGQx
KCldLm1lcmdlRmxhZ3MoZmxhZ3MpOworICAgICAgICAgICAgY2hhbmdlZCB8PSBtX2dyYXBoW25v
ZGUuY2hpbGQxKCldLm1lcmdlRmxhZ3MoTm9kZVVzZWRBc1ZhbHVlKTsKICAgICAgICAgICAgIGlm
ICghbm9kZS5jaGlsZDIoKSkKICAgICAgICAgICAgICAgICByZXR1cm4gY2hhbmdlZDsKLSAgICAg
ICAgICAgIGNoYW5nZWQgfD0gbV9ncmFwaFtub2RlLmNoaWxkMigpXS5tZXJnZUZsYWdzKGZsYWdz
KTsKKyAgICAgICAgICAgIGNoYW5nZWQgfD0gbV9ncmFwaFtub2RlLmNoaWxkMigpXS5tZXJnZUZs
YWdzKE5vZGVVc2VkQXNWYWx1ZSk7CiAgICAgICAgICAgICBpZiAoIW5vZGUuY2hpbGQzKCkpCiAg
ICAgICAgICAgICAgICAgcmV0dXJuIGNoYW5nZWQ7Ci0gICAgICAgICAgICBjaGFuZ2VkIHw9IG1f
Z3JhcGhbbm9kZS5jaGlsZDMoKV0ubWVyZ2VGbGFncyhmbGFncyk7CisgICAgICAgICAgICBjaGFu
Z2VkIHw9IG1fZ3JhcGhbbm9kZS5jaGlsZDMoKV0ubWVyZ2VGbGFncyhOb2RlVXNlZEFzVmFsdWUp
OwogICAgICAgICB9CiAgICAgICAgIHJldHVybiBjaGFuZ2VkOwogICAgIH0KQEAgLTY1Miw3ICs3
MDIsNyBAQCBwcml2YXRlOgogICAgICAgICBmb3IgKG1fY29tcGlsZUluZGV4ID0gbV9ncmFwaC5z
aXplKCk7IG1fY29tcGlsZUluZGV4LS0gPiAwOykKICAgICAgICAgICAgIHByb3BhZ2F0ZShtX2dy
YXBoW21fY29tcGlsZUluZGV4XSk7CiAgICAgfQotCisgICAgCiAgICAgdm9pZCB2b3RlKEVkZ2Ug
bm9kZVVzZSwgVmFyaWFibGVBY2Nlc3NEYXRhOjpCYWxsb3QgYmFsbG90KQogICAgIHsKICAgICAg
ICAgc3dpdGNoIChtX2dyYXBoW25vZGVVc2VdLm9wKCkpIHsKQEAgLTY3MSw3ICs3MjEsOSBAQCBw
cml2YXRlOgogICAgIHZvaWQgdm90ZShOb2RlJiBub2RlLCBWYXJpYWJsZUFjY2Vzc0RhdGE6OkJh
bGxvdCBiYWxsb3QpCiAgICAgewogICAgICAgICBpZiAobm9kZS5mbGFncygpICYgTm9kZUhhc1Zh
ckFyZ3MpIHsKLSAgICAgICAgICAgIGZvciAodW5zaWduZWQgY2hpbGRJZHggPSBub2RlLmZpcnN0
Q2hpbGQoKTsgY2hpbGRJZHggPCBub2RlLmZpcnN0Q2hpbGQoKSArIG5vZGUubnVtQ2hpbGRyZW4o
KTsgY2hpbGRJZHgrKykKKyAgICAgICAgICAgIGZvciAodW5zaWduZWQgY2hpbGRJZHggPSBub2Rl
LmZpcnN0Q2hpbGQoKTsKKyAgICAgICAgICAgICAgICAgY2hpbGRJZHggPCBub2RlLmZpcnN0Q2hp
bGQoKSArIG5vZGUubnVtQ2hpbGRyZW4oKTsKKyAgICAgICAgICAgICAgICAgY2hpbGRJZHgrKykK
ICAgICAgICAgICAgICAgICB2b3RlKG1fZ3JhcGgubV92YXJBcmdDaGlsZHJlbltjaGlsZElkeF0s
IGJhbGxvdCk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KQEAgLTcyNiw3ICs3Nzgs
OSBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgIFZhcmlhYmxl
QWNjZXNzRGF0YTo6QmFsbG90IGJhbGxvdDsKICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAg
ICAgICBpZiAoaXNOdW1iZXJQcmVkaWN0aW9uKGxlZnQpICYmIGlzTnVtYmVyUHJlZGljdGlvbihy
aWdodCkgJiYgIShOb2RlOjpzaG91bGRTcGVjdWxhdGVJbnRlZ2VyKG1fZ3JhcGhbbm9kZS5jaGls
ZDEoKV0sIG1fZ3JhcGhbbm9kZS5jaGlsZDEoKV0pICYmIG5vZGUuY2FuU3BlY3VsYXRlSW50ZWdl
cigpKSkKKyAgICAgICAgICAgICAgICBpZiAoaXNOdW1iZXJQcmVkaWN0aW9uKGxlZnQpICYmIGlz
TnVtYmVyUHJlZGljdGlvbihyaWdodCkKKyAgICAgICAgICAgICAgICAgICAgJiYgIShOb2RlOjpz
aG91bGRTcGVjdWxhdGVJbnRlZ2VyKG1fZ3JhcGhbbm9kZS5jaGlsZDEoKV0sIG1fZ3JhcGhbbm9k
ZS5jaGlsZDEoKV0pCisgICAgICAgICAgICAgICAgICAgICAgICAgJiYgbm9kZS5jYW5TcGVjdWxh
dGVJbnRlZ2VyKCkpKQogICAgICAgICAgICAgICAgICAgICBiYWxsb3QgPSBWYXJpYWJsZUFjY2Vz
c0RhdGE6OlZvdGVEb3VibGU7CiAgICAgICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAg
ICAgICBiYWxsb3QgPSBWYXJpYWJsZUFjY2Vzc0RhdGE6OlZvdGVWYWx1ZTsKQEAgLTczOCw3ICs3
OTIsOCBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgY2FzZSBBcml0
aEFiczoKICAgICAgICAgICAgICAgICBWYXJpYWJsZUFjY2Vzc0RhdGE6OkJhbGxvdCBiYWxsb3Q7
Ci0gICAgICAgICAgICAgICAgaWYgKCEobV9ncmFwaFtub2RlLmNoaWxkMSgpXS5zaG91bGRTcGVj
dWxhdGVJbnRlZ2VyKCkgJiYgbm9kZS5jYW5TcGVjdWxhdGVJbnRlZ2VyKCkpKQorICAgICAgICAg
ICAgICAgIGlmICghKG1fZ3JhcGhbbm9kZS5jaGlsZDEoKV0uc2hvdWxkU3BlY3VsYXRlSW50ZWdl
cigpCisgICAgICAgICAgICAgICAgICAgICAgJiYgbm9kZS5jYW5TcGVjdWxhdGVJbnRlZ2VyKCkp
KQogICAgICAgICAgICAgICAgICAgICBiYWxsb3QgPSBWYXJpYWJsZUFjY2Vzc0RhdGE6OlZvdGVE
b3VibGU7CiAgICAgICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgICAgICBiYWxsb3Qg
PSBWYXJpYWJsZUFjY2Vzc0RhdGE6OlZvdGVWYWx1ZTsKQEAgLTc4OCw3ICs4NDMsOCBAQCBwcml2
YXRlOgogICAgICAgICBjYXNlIEdldEJ5SWQ6IHsKICAgICAgICAgICAgIGlmICghaXNJbnQzMlBy
ZWRpY3Rpb24obV9ncmFwaFttX2NvbXBpbGVJbmRleF0ucHJlZGljdGlvbigpKSkKICAgICAgICAg
ICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGlmIChjb2RlQmxvY2soKS0+aWRlbnRpZmllcihu
b2RlLmlkZW50aWZpZXJOdW1iZXIoKSkgIT0gZ2xvYmFsRGF0YSgpLnByb3BlcnR5TmFtZXMtPmxl
bmd0aCkKKyAgICAgICAgICAgIGlmIChjb2RlQmxvY2soKS0+aWRlbnRpZmllcihub2RlLmlkZW50
aWZpZXJOdW1iZXIoKSkKKyAgICAgICAgICAgICAgICAhPSBnbG9iYWxEYXRhKCkucHJvcGVydHlO
YW1lcy0+bGVuZ3RoKQogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgYm9vbCBp
c0FycmF5ID0gaXNBcnJheVByZWRpY3Rpb24obV9ncmFwaFtub2RlLmNoaWxkMSgpXS5wcmVkaWN0
aW9uKCkpOwogICAgICAgICAgICAgYm9vbCBpc1N0cmluZyA9IGlzU3RyaW5nUHJlZGljdGlvbiht
X2dyYXBoW25vZGUuY2hpbGQxKCldLnByZWRpY3Rpb24oKSk7CkBAIC04MDIsNyArODU4LDkgQEAg
cHJpdmF0ZToKICAgICAgICAgICAgIGJvb2wgaXNVaW50MzJBcnJheSA9IG1fZ3JhcGhbbm9kZS5j
aGlsZDEoKV0uc2hvdWxkU3BlY3VsYXRlVWludDMyQXJyYXkoKTsKICAgICAgICAgICAgIGJvb2wg
aXNGbG9hdDMyQXJyYXkgPSBtX2dyYXBoW25vZGUuY2hpbGQxKCldLnNob3VsZFNwZWN1bGF0ZUZs
b2F0MzJBcnJheSgpOwogICAgICAgICAgICAgYm9vbCBpc0Zsb2F0NjRBcnJheSA9IG1fZ3JhcGhb
bm9kZS5jaGlsZDEoKV0uc2hvdWxkU3BlY3VsYXRlRmxvYXQ2NEFycmF5KCk7Ci0gICAgICAgICAg
ICBpZiAoIWlzQXJyYXkgJiYgIWlzU3RyaW5nICYmICFpc0J5dGVBcnJheSAmJiAhaXNJbnQ4QXJy
YXkgJiYgIWlzSW50MTZBcnJheSAmJiAhaXNJbnQzMkFycmF5ICYmICFpc1VpbnQ4QXJyYXkgJiYg
IWlzVWludDhDbGFtcGVkQXJyYXkgJiYgIWlzVWludDE2QXJyYXkgJiYgIWlzVWludDMyQXJyYXkg
JiYgIWlzRmxvYXQzMkFycmF5ICYmICFpc0Zsb2F0NjRBcnJheSkKKyAgICAgICAgICAgIGlmICgh
aXNBcnJheSAmJiAhaXNTdHJpbmcgJiYgIWlzQnl0ZUFycmF5ICYmICFpc0ludDhBcnJheSAmJiAh
aXNJbnQxNkFycmF5CisgICAgICAgICAgICAgICAgJiYgIWlzSW50MzJBcnJheSAmJiAhaXNVaW50
OEFycmF5ICYmICFpc1VpbnQ4Q2xhbXBlZEFycmF5ICYmICFpc1VpbnQxNkFycmF5CisgICAgICAg
ICAgICAgICAgJiYgIWlzVWludDMyQXJyYXkgJiYgIWlzRmxvYXQzMkFycmF5ICYmICFpc0Zsb2F0
NjRBcnJheSkKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIAogI2lmIERGR19F
TkFCTEUoREVCVUdfUFJPUEFHQVRJT05fVkVSQk9TRSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHVmFyaWFibGVBY2Nlc3NEYXRhLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdWYXJpYWJsZUFjY2Vzc0RhdGEuaAkocmV2aXNpb24gMTExNzk3
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdWYXJpYWJsZUFjY2Vzc0RhdGEuaAko
d29ya2luZyBjb3B5KQpAQCAtMTA0LDggKzEwNCwzMiBAQCBwdWJsaWM6CiAgICAgCiAgICAgYm9v
bCBzaG91bGRVc2VEb3VibGVGb3JtYXRBY2NvcmRpbmdUb1ZvdGUoKQogICAgIHsKKyAgICAgICAg
Ly8gV2UgZG9uJ3Qgc3VwcG9ydCB0aGlzIGZhY2lsaXR5IGZvciBhcmd1bWVudHMsIHlldC4KICAg
ICAgICAgLy8gRklYTUU6IG1ha2UgdGhpcyB3b3JrIGZvciBhcmd1bWVudHMuCi0gICAgICAgIHJl
dHVybiAhb3BlcmFuZElzQXJndW1lbnQob3BlcmFuZCgpKSAmJiAoKGlzTnVtYmVyUHJlZGljdGlv
bihwcmVkaWN0aW9uKCkpICYmIGRvdWJsZVZvdGVSYXRpbygpID49IE9wdGlvbnM6OmRvdWJsZVZv
dGVSYXRpb0ZvckRvdWJsZUZvcm1hdCkgfHwgaXNEb3VibGVQcmVkaWN0aW9uKHByZWRpY3Rpb24o
KSkpOworICAgICAgICBpZiAob3BlcmFuZElzQXJndW1lbnQob3BlcmFuZCgpKSkKKyAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgCisgICAgICAgIC8vIElmIHRoZSB2YXJpYWJsZSBp
cyBub3QgYSBudW1iZXIgcHJlZGljdGlvbiwgdGhlbiB0aGlzIGRvZXNuJ3QKKyAgICAgICAgLy8g
bWFrZSBhbnkgc2Vuc2UuCisgICAgICAgIGlmICghaXNOdW1iZXJQcmVkaWN0aW9uKHByZWRpY3Rp
b24oKSkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIAorICAgICAgICAvLyBJ
ZiB0aGUgdmFyaWFibGUgaXMgcHJlZGljdGVkIHRvIGhvbGQgb25seSBkb3VibGVzLCB0aGVuIGl0
J3MgYQorICAgICAgICAvLyBuby1icmFpbmVyOiBpdCBzaG91bGQgYmUgZm9ybWF0dGVkIGFzIGEg
ZG91YmxlLgorICAgICAgICBpZiAoaXNEb3VibGVQcmVkaWN0aW9uKHByZWRpY3Rpb24oKSkpCisg
ICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgCisgICAgICAgIC8vIElmIHRoZSB2YXJp
YWJsZSBpcyBrbm93biB0byBiZSB1c2VkIGFzIGFuIGludGVnZXIsIHRoZW4gYmUgc2FmZSAtCisg
ICAgICAgIC8vIGRvbid0IGZvcmNlIGl0IHRvIGJlIGEgZG91YmxlLgorICAgICAgICBpZiAoZmxh
Z3MoKSAmIChOb2RlRXNjYXBlc0FzSW50IHwgTm9kZVVzZWRBc0ludCkpCisgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgICAgIAorICAgICAgICAvLyBJZiB0aGUgdmFyaWFibGUgaGFzIGJl
ZW4gdm90ZWQgdG8gYmVjb21lIGEgZG91YmxlLCB0aGVuIG1ha2UgaXQgYQorICAgICAgICAvLyBk
b3VibGUuCisgICAgICAgIGlmIChkb3VibGVWb3RlUmF0aW8oKSA+PSBPcHRpb25zOjpkb3VibGVW
b3RlUmF0aW9Gb3JEb3VibGVGb3JtYXQpCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAg
ICAgCisgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAgICAgCiAgICAgYm9vbCBzaG91bGRV
c2VEb3VibGVGb3JtYXQoKQo=
</data>
<flag name="review"
          id="137655"
          type_id="1"
          status="+"
          setter="barraclough"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>133615</attachid>
            <date>2012-03-23 20:16:13 -0700</date>
            <delta_ts>2012-03-24 14:13:27 -0700</delta_ts>
            <desc>the patch</desc>
            <filename>fixdoublevote_patch_5.diff</filename>
            <type>text/plain</type>
            <size>34781</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTExOTcyKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM4IEBA
CisyMDEyLTAzLTIzICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
REZHIGRvdWJsZSB2b3RpbmcgbWF5IGJlIG92ZXJ6ZWFsb3VzIGluIHRoZSBjYXNlIG9mIHZhcmlh
YmxlcyB0aGF0IGVuZCB1cAorICAgICAgICBiZWluZyB1c2VkIGFzIGludGVnZXJzCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04MjAwOAorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorICAgICAgICAKKyAgICAgICAgQ2xlYW5lZCB1
cCBwcm9wYWdhdGlvbiwgbWFraW5nIHRoZSBpbnRlbnQgbW9yZSBleHBsaWNpdCBpbiBtb3N0IHBs
YWNlcy4KKyAgICAgICAgQmFjay1wcm9wYWdhdGUgTm9kZVVzZWRBc0ludCBmb3IgY2FzZXMgd2hl
cmUgYSBub2RlIHdhcyB1c2VkIGluIGEgY29udGV4dAorICAgICAgICB0aGF0IGlzIGtub3duIHRv
IHN0cm9uZ2x5IHByZWZlciBpbnRlZ2Vycy4KKworICAgICAgICAqIGRmZy9ERkdCeXRlQ29kZVBh
cnNlci5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUNhbGwp
OgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKToKKyAgICAg
ICAgKiBkZmcvREZHR3JhcGguY3BwOgorICAgICAgICAoSlNDOjpERkc6OkdyYXBoOjpkdW1wQ29k
ZU9yaWdpbik6CisgICAgICAgIChKU0M6OkRGRzo6R3JhcGg6OmR1bXApOgorICAgICAgICAqIGRm
Zy9ERkdHcmFwaC5oOgorICAgICAgICAoR3JhcGgpOgorICAgICAgICAqIGRmZy9ERkdOb2RlRmxh
Z3MuY3BwOgorICAgICAgICAoSlNDOjpERkc6Om5vZGVGbGFnc0FzU3RyaW5nKToKKyAgICAgICAg
KiBkZmcvREZHTm9kZUZsYWdzLmg6CisgICAgICAgIChERkcpOgorICAgICAgICAqIGRmZy9ERkdQ
cmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6UHJlZGlj
dGlvblByb3BhZ2F0aW9uUGhhc2U6OnJ1bik6CisgICAgICAgIChKU0M6OkRGRzo6UHJlZGljdGlv
blByb3BhZ2F0aW9uUGhhc2U6OnByb3BhZ2F0ZSk6CisgICAgICAgIChQcmVkaWN0aW9uUHJvcGFn
YXRpb25QaGFzZSk6CisgICAgICAgIChKU0M6OkRGRzo6UHJlZGljdGlvblByb3BhZ2F0aW9uUGhh
c2U6Om1lcmdlRGVmYXVsdEZsYWdzKToKKyAgICAgICAgKEpTQzo6REZHOjpQcmVkaWN0aW9uUHJv
cGFnYXRpb25QaGFzZTo6dm90ZSk6CisgICAgICAgIChKU0M6OkRGRzo6UHJlZGljdGlvblByb3Bh
Z2F0aW9uUGhhc2U6OmRvUm91bmRPZkRvdWJsZVZvdGluZyk6CisgICAgICAgIChKU0M6OkRGRzo6
UHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2U6OmZpeHVwTm9kZSk6CisgICAgICAgICogZGZnL0RG
R1ZhcmlhYmxlQWNjZXNzRGF0YS5oOgorICAgICAgICAoSlNDOjpERkc6OlZhcmlhYmxlQWNjZXNz
RGF0YTo6c2hvdWxkVXNlRG91YmxlRm9ybWF0QWNjb3JkaW5nVG9Wb3RlKToKKwogMjAxMi0wMy0y
MyAgQWxleGV5IFByb3NrdXJ5YWtvdiAgPGFwQGFwcGxlLmNvbT4KIAogICAgICAgICBbTWFjXSBO
byBuZWVkIGZvciBwbGF0Zm9ybS1zcGVjaWZpYyBFTkFCTEVfQkxPQiB2YWx1ZXMKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCShyZXZp
c2lvbiAxMTE3OTcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFy
c2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTkzLDEwICs5OTMsNiBAQCB2b2lkIEJ5dGVDb2Rl
UGFyc2VyOjpoYW5kbGVDYWxsKEludGVycHJlCiAgICAgTm9kZUluZGV4IGNhbGxUYXJnZXQgPSBn
ZXQoY3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZCk7CiAgICAgZW51bSB7IENvbnN0YW50
RnVuY3Rpb24sIExpbmtlZEZ1bmN0aW9uLCBVbmtub3duRnVuY3Rpb24gfSBjYWxsVHlwZTsKICAg
ICAgICAgICAgIAotI2lmIERGR19FTkFCTEUoREVCVUdfVkVSQk9TRSkKLSAgICBkYXRhTG9nKCJT
bG93IGNhc2UgY291bnQgZm9yIGNhbGwgYXQgQCV6dSBiYyMldTogJXUvJXU7IGV4aXQgcHJvZmls
ZTogJWQuXG4iLCBtX2dyYXBoLnNpemUoKSwgbV9jdXJyZW50SW5kZXgsIG1faW5saW5lU3RhY2tU
b3AtPm1fcHJvZmlsZWRCbG9jay0+cmFyZUNhc2VQcm9maWxlRm9yQnl0ZWNvZGVPZmZzZXQobV9j
dXJyZW50SW5kZXgpLT5tX2NvdW50ZXIsIG1faW5saW5lU3RhY2tUb3AtPm1fcHJvZmlsZWRCbG9j
ay0+ZXhlY3V0aW9uRW50cnlDb3VudCgpLCBtX2lubGluZVN0YWNrVG9wLT5tX2V4aXRQcm9maWxl
Lmhhc0V4aXRTaXRlKG1fY3VycmVudEluZGV4LCBCYWRDYWNoZSkpOwotI2VuZGlmCi0gICAgCiAg
ICAgQ2FsbExpbmtTdGF0dXMgY2FsbExpbmtTdGF0dXMgPSBDYWxsTGlua1N0YXR1czo6Y29tcHV0
ZUZvcigKICAgICAgICAgbV9pbmxpbmVTdGFja1RvcC0+bV9wcm9maWxlZEJsb2NrLCBtX2N1cnJl
bnRJbmRleCk7CiAgICAgCkBAIC0xODc5LDEwICsxODc1LDYgQEAgYm9vbCBCeXRlQ29kZVBhcnNl
cjo6cGFyc2VCbG9jayh1bnNpZ25lZAogICAgICAgICAgICAgR2V0QnlJZFN0YXR1cyBnZXRCeUlk
U3RhdHVzID0gR2V0QnlJZFN0YXR1czo6Y29tcHV0ZUZvcigKICAgICAgICAgICAgICAgICBtX2lu
bGluZVN0YWNrVG9wLT5tX3Byb2ZpbGVkQmxvY2ssIG1fY3VycmVudEluZGV4LCBpZGVudGlmaWVy
KTsKICAgICAgICAgICAgIAotI2lmIERGR19FTkFCTEUoREVCVUdfVkVSQk9TRSkKLSAgICAgICAg
ICAgIGRhdGFMb2coIlNsb3cgY2FzZSBjb3VudCBmb3IgR2V0QnlJZCBAJXp1IGJjIyV1OiAldTsg
ZXhpdCBwcm9maWxlOiAlZFxuIiwgbV9ncmFwaC5zaXplKCksIG1fY3VycmVudEluZGV4LCBtX2lu
bGluZVN0YWNrVG9wLT5tX3Byb2ZpbGVkQmxvY2stPnJhcmVDYXNlUHJvZmlsZUZvckJ5dGVjb2Rl
T2Zmc2V0KG1fY3VycmVudEluZGV4KS0+bV9jb3VudGVyLCBtX2lubGluZVN0YWNrVG9wLT5tX2V4
aXRQcm9maWxlLmhhc0V4aXRTaXRlKG1fY3VycmVudEluZGV4LCBCYWRDYWNoZSkpOwotI2VuZGlm
Ci0gICAgICAgICAgICAKICAgICAgICAgICAgIGlmIChnZXRCeUlkU3RhdHVzLmlzU2ltcGxlRGly
ZWN0KCkKICAgICAgICAgICAgICAgICAmJiAhbV9pbmxpbmVTdGFja1RvcC0+bV9leGl0UHJvZmls
ZS5oYXNFeGl0U2l0ZShtX2N1cnJlbnRJbmRleCwgQmFkQ2FjaGUpKSB7CiAgICAgICAgICAgICAg
ICAgQVNTRVJUKGdldEJ5SWRTdGF0dXMuc3RydWN0dXJlU2V0KCkuc2l6ZSgpKTsKQEAgLTE5MjEs
MTAgKzE5MTMsNiBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKHVuc2lnbmVkCiAg
ICAgICAgICAgICAKICAgICAgICAgICAgIGJvb2wgaGFzRXhpdFNpdGUgPSBtX2lubGluZVN0YWNr
VG9wLT5tX2V4aXRQcm9maWxlLmhhc0V4aXRTaXRlKG1fY3VycmVudEluZGV4LCBCYWRDYWNoZSk7
CiAgICAgICAgICAgICAKLSNpZiBERkdfRU5BQkxFKERFQlVHX1ZFUkJPU0UpCi0gICAgICAgICAg
ICBkYXRhTG9nKCJTbG93IGNhc2UgY291bnQgZm9yIFB1dEJ5SWQgQCV6dSBiYyMldTogJXU7IGV4
aXQgcHJvZmlsZTogJWRcbiIsIG1fZ3JhcGguc2l6ZSgpLCBtX2N1cnJlbnRJbmRleCwgbV9pbmxp
bmVTdGFja1RvcC0+bV9wcm9maWxlZEJsb2NrLT5yYXJlQ2FzZVByb2ZpbGVGb3JCeXRlY29kZU9m
ZnNldChtX2N1cnJlbnRJbmRleCktPm1fY291bnRlciwgbV9pbmxpbmVTdGFja1RvcC0+bV9leGl0
UHJvZmlsZS5oYXNFeGl0U2l0ZShtX2N1cnJlbnRJbmRleCwgQmFkQ2FjaGUpKTsKLSNlbmRpZiAg
ICAgICAgICAgIAotCiAgICAgICAgICAgICBpZiAoIWhhc0V4aXRTaXRlICYmIHB1dEJ5SWRTdGF0
dXMuaXNTaW1wbGVSZXBsYWNlKCkpIHsKICAgICAgICAgICAgICAgICBhZGRUb0dyYXBoKENoZWNr
U3RydWN0dXJlLCBPcEluZm8obV9ncmFwaC5hZGRTdHJ1Y3R1cmVTZXQocHV0QnlJZFN0YXR1cy5v
bGRTdHJ1Y3R1cmUoKSkpLCBiYXNlKTsKICAgICAgICAgICAgICAgICBhZGRUb0dyYXBoKFB1dEJ5
T2Zmc2V0LCBPcEluZm8obV9ncmFwaC5tX3N0b3JhZ2VBY2Nlc3NEYXRhLnNpemUoKSksIGJhc2Us
IGFkZFRvR3JhcGgoR2V0UHJvcGVydHlTdG9yYWdlLCBiYXNlKSwgdmFsdWUpOwpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5jcHAJKHJldmlzaW9uIDExMTc5NykKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04
NCwxMyArODQsMTMgQEAgc3RhdGljIHZvaWQgcHJpbnRXaGl0ZVNwYWNlKHVuc2lnbmVkIGFtbwog
ICAgICAgICBkYXRhTG9nKCIgIik7CiB9CiAKLXZvaWQgR3JhcGg6OmR1bXBDb2RlT3JpZ2luKE5v
ZGVJbmRleCBub2RlSW5kZXgpCit2b2lkIEdyYXBoOjpkdW1wQ29kZU9yaWdpbihOb2RlSW5kZXgg
cHJldk5vZGVJbmRleCwgTm9kZUluZGV4IG5vZGVJbmRleCkKIHsKLSAgICBpZiAoIW5vZGVJbmRl
eCkKKyAgICBpZiAocHJldk5vZGVJbmRleCA9PSBOb05vZGUpCiAgICAgICAgIHJldHVybjsKICAg
ICAKICAgICBOb2RlJiBjdXJyZW50Tm9kZSA9IGF0KG5vZGVJbmRleCk7Ci0gICAgTm9kZSYgcHJl
dmlvdXNOb2RlID0gYXQobm9kZUluZGV4IC0gMSk7CisgICAgTm9kZSYgcHJldmlvdXNOb2RlID0g
YXQocHJldk5vZGVJbmRleCk7CiAgICAgaWYgKHByZXZpb3VzTm9kZS5jb2RlT3JpZ2luLmlubGlu
ZUNhbGxGcmFtZSA9PSBjdXJyZW50Tm9kZS5jb2RlT3JpZ2luLmlubGluZUNhbGxGcmFtZSkKICAg
ICAgICAgcmV0dXJuOwogICAgIApAQCAtMTMxLDcgKzEzMSw2IEBAIHZvaWQgR3JhcGg6OmR1bXAo
Tm9kZUluZGV4IG5vZGVJbmRleCkKICAgICAgICAgLS1yZWZDb3VudDsKICAgICB9CiAgICAgCi0g
ICAgZHVtcENvZGVPcmlnaW4obm9kZUluZGV4KTsKICAgICBwcmludFdoaXRlU3BhY2UoKG5vZGUu
Y29kZU9yaWdpbi5pbmxpbmVEZXB0aCgpIC0gMSkgKiAyKTsKIAogICAgIC8vIEV4YW1wbGUvZXhw
bGFuYXRpb24gb2YgZGF0YWZsb3cgZHVtcCBvdXRwdXQKQEAgLTI2Myw2ICsyNjIsNyBAQCB2b2lk
IEdyYXBoOjpkdW1wKE5vZGVJbmRleCBub2RlSW5kZXgpCiAKIHZvaWQgR3JhcGg6OmR1bXAoKQog
eworICAgIE5vZGVJbmRleCBsYXN0Tm9kZUluZGV4ID0gTm9Ob2RlOwogICAgIGZvciAoc2l6ZV90
IGIgPSAwOyBiIDwgbV9ibG9ja3Muc2l6ZSgpOyArK2IpIHsKICAgICAgICAgQmFzaWNCbG9jayog
YmxvY2sgPSBtX2Jsb2Nrc1tiXS5nZXQoKTsKICAgICAgICAgZGF0YUxvZygiQmxvY2sgIyV1IChi
YyMldSk6ICVzJXNcbiIsIChpbnQpYiwgYmxvY2stPmJ5dGVjb2RlQmVnaW4sIGJsb2NrLT5pc1Jl
YWNoYWJsZSA/ICIiIDogIiAoc2tpcHBlZCkiLCBibG9jay0+aXNPU1JUYXJnZXQgPyAiIChPU1Ig
dGFyZ2V0KSIgOiAiIik7CkBAIC0yODEsOCArMjgxLDExIEBAIHZvaWQgR3JhcGg6OmR1bXAoKQog
ICAgICAgICBkYXRhTG9nKCIgIHZhciBsaW5rczogIik7CiAgICAgICAgIGR1bXBPcGVyYW5kcyhi
bG9jay0+dmFyaWFibGVzQXRIZWFkLCBXVEY6OmRhdGFGaWxlKCkpOwogICAgICAgICBkYXRhTG9n
KCJcbiIpOwotICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGJsb2NrLT5zaXplKCk7ICsr
aSkKKyAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBibG9jay0+c2l6ZSgpOyArK2kpIHsK
KyAgICAgICAgICAgIGR1bXBDb2RlT3JpZ2luKGxhc3ROb2RlSW5kZXgsIGJsb2NrLT5hdChpKSk7
CiAgICAgICAgICAgICBkdW1wKGJsb2NrLT5hdChpKSk7CisgICAgICAgICAgICBsYXN0Tm9kZUlu
ZGV4ID0gYmxvY2stPmF0KGkpOworICAgICAgICB9CiAgICAgICAgIGRhdGFMb2coIiAgdmFycyBh
ZnRlcjogIik7CiAgICAgICAgIGlmIChibG9jay0+Y2ZhSGFzVmlzaXRlZCkKICAgICAgICAgICAg
IGR1bXBPcGVyYW5kcyhibG9jay0+dmFsdWVzQXRUYWlsLCBXVEY6OmRhdGFGaWxlKCkpOwpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguaAkocmV2aXNpb24gMTExNzk3KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5oCSh3b3JraW5nIGNvcHkpCkBAIC0x
NDMsNyArMTQzLDcgQEAgcHVibGljOgogCiAgICAgLy8gRHVtcCB0aGUgY29kZSBvcmlnaW4gb2Yg
dGhlIGdpdmVuIG5vZGUgYXMgYSBkaWZmIGZyb20gdGhlIGNvZGUgb3JpZ2luIG9mIHRoZQogICAg
IC8vIHByZWNlZGluZyBub2RlLgotICAgIHZvaWQgZHVtcENvZGVPcmlnaW4oTm9kZUluZGV4KTsK
KyAgICB2b2lkIGR1bXBDb2RlT3JpZ2luKE5vZGVJbmRleCwgTm9kZUluZGV4KTsKIAogICAgIEJs
b2NrSW5kZXggYmxvY2tJbmRleEZvckJ5dGVjb2RlT2Zmc2V0KFZlY3RvcjxCbG9ja0luZGV4PiYg
YmxvY2tzLCB1bnNpZ25lZCBieXRlY29kZUJlZ2luKTsKIApJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdOb2RlRmxhZ3MuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHTm9kZUZsYWdzLmNwcAkocmV2aXNpb24gMTExNzk3KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlRmxhZ3MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0x
MjMsNiArMTIzLDEzIEBAIGNvbnN0IGNoYXIqIG5vZGVGbGFnc0FzU3RyaW5nKE5vZGVGbGFncyAK
ICAgICAgICAgaGFzUHJpbnRlZCA9IHRydWU7CiAgICAgfQogICAgIAorICAgIGlmIChmbGFncyAm
IE5vZGVVc2VkQXNJbnQpIHsKKyAgICAgICAgaWYgKGhhc1ByaW50ZWQpCisgICAgICAgICAgICBw
dHIuc3RyY2F0KCJ8Iik7CisgICAgICAgIHB0ci5zdHJjYXQoIlVzZWRBc0ludCIpOworICAgICAg
ICBoYXNQcmludGVkID0gdHJ1ZTsKKyAgICB9CisgICAgCiAgICAgKnB0cisrID0gMDsKICAgICAK
ICAgICByZXR1cm4gZGVzY3JpcHRpb247CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR05vZGVGbGFncy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHTm9kZUZsYWdzLmgJKHJldmlzaW9uIDExMTc5NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHTm9kZUZsYWdzLmgJKHdvcmtpbmcgY29weSkKQEAgLTM2LDIzICszNiwyOCBAQCBu
YW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CiAKIC8vIEVudHJpZXMgaW4gdGhlIE5vZGVU
eXBlIGVudW0gKGJlbG93KSBhcmUgY29tcG9zZWQgb2YgYW4gaWQsIGEgcmVzdWx0IHR5cGUgKHBv
c3NpYmx5IG5vbmUpCiAvLyBhbmQgc29tZSBhZGRpdGlvbmFsIGluZm9ybWF0aXZlIGZsYWdzICht
dXN0IGdlbmVyYXRlLCBpcyBjb25zdGFudCwgZXRjKS4KLSNkZWZpbmUgTm9kZVJlc3VsdE1hc2sg
ICAgICAgICAgICAgMHhGCi0jZGVmaW5lIE5vZGVSZXN1bHRKUyAgICAgICAgICAgICAgIDB4MQot
I2RlZmluZSBOb2RlUmVzdWx0TnVtYmVyICAgICAgICAgICAweDIKLSNkZWZpbmUgTm9kZVJlc3Vs
dEludDMyICAgICAgICAgICAgMHgzCi0jZGVmaW5lIE5vZGVSZXN1bHRCb29sZWFuICAgICAgICAg
IDB4NAotI2RlZmluZSBOb2RlUmVzdWx0U3RvcmFnZSAgICAgICAgICAweDUKLSNkZWZpbmUgTm9k
ZU11c3RHZW5lcmF0ZSAgICAgICAgICAweDEwIC8vIHNldCBvbiBub2RlcyB0aGF0IGhhdmUgc2lk
ZSBlZmZlY3RzLCBhbmQgbWF5IG5vdCB0cml2aWFsbHkgYmUgcmVtb3ZlZCBieSBEQ0UuCi0jZGVm
aW5lIE5vZGVIYXNWYXJBcmdzICAgICAgICAgICAgMHgyMAotI2RlZmluZSBOb2RlQ2xvYmJlcnNX
b3JsZCAgICAgICAgIDB4NDAKLSNkZWZpbmUgTm9kZU1pZ2h0Q2xvYmJlciAgICAgICAgICAweDgw
Ci0jZGVmaW5lIE5vZGVCYWNrUHJvcE1hc2sgICAgICAgICAweDMwMAotI2RlZmluZSBOb2RlVXNl
Qm90dG9tICAgICAgICAgICAgMHgwMDAKLSNkZWZpbmUgTm9kZVVzZWRBc051bWJlciAgICAgICAg
IDB4MTAwCi0jZGVmaW5lIE5vZGVOZWVkc05lZ1plcm8gICAgICAgICAweDIwMAotI2RlZmluZSBO
b2RlQmVoYXZpb3JNYXNrICAgICAgICAgMHhDMDAKLSNkZWZpbmUgTm9kZU1heU92ZXJmbG93ICAg
ICAgICAgIDB4NDAwCi0jZGVmaW5lIE5vZGVNYXlOZWdaZXJvICAgICAgICAgICAweDgwMAorI2Rl
ZmluZSBOb2RlUmVzdWx0TWFzayAgICAgICAgICAgICAgMHhGCisjZGVmaW5lIE5vZGVSZXN1bHRK
UyAgICAgICAgICAgICAgICAweDEKKyNkZWZpbmUgTm9kZVJlc3VsdE51bWJlciAgICAgICAgICAg
IDB4MgorI2RlZmluZSBOb2RlUmVzdWx0SW50MzIgICAgICAgICAgICAgMHgzCisjZGVmaW5lIE5v
ZGVSZXN1bHRCb29sZWFuICAgICAgICAgICAweDQKKyNkZWZpbmUgTm9kZVJlc3VsdFN0b3JhZ2Ug
ICAgICAgICAgIDB4NQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyNkZWZpbmUg
Tm9kZU11c3RHZW5lcmF0ZSAgICAgICAgICAgMHgxMCAvLyBzZXQgb24gbm9kZXMgdGhhdCBoYXZl
IHNpZGUgZWZmZWN0cywgYW5kIG1heSBub3QgdHJpdmlhbGx5IGJlIHJlbW92ZWQgYnkgRENFLgor
I2RlZmluZSBOb2RlSGFzVmFyQXJncyAgICAgICAgICAgICAweDIwCisjZGVmaW5lIE5vZGVDbG9i
YmVyc1dvcmxkICAgICAgICAgIDB4NDAKKyNkZWZpbmUgTm9kZU1pZ2h0Q2xvYmJlciAgICAgICAg
ICAgMHg4MAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyNkZWZpbmUgTm9kZUJl
aGF2aW9yTWFzayAgICAgICAgICAweDMwMAorI2RlZmluZSBOb2RlTWF5T3ZlcmZsb3cgICAgICAg
ICAgIDB4MTAwCisjZGVmaW5lIE5vZGVNYXlOZWdaZXJvICAgICAgICAgICAgMHgyMDAKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgCisjZGVmaW5lIE5vZGVCYWNrUHJvcE1hc2sgICAg
ICAgICAweDFDMDAKKyNkZWZpbmUgTm9kZVVzZUJvdHRvbSAgICAgICAgICAgICAweDAwMAorI2Rl
ZmluZSBOb2RlVXNlZEFzTnVtYmVyICAgICAgICAgIDB4NDAwIC8vIFRoZSByZXN1bHQgb2YgdGhp
cyBjb21wdXRhdGlvbiBtYXkgYmUgdXNlZCBpbiBhIGNvbnRleHQgdGhhdCBvYnNlcnZlcyBmcmFj
dGlvbmFsIHJlc3VsdHMuCisjZGVmaW5lIE5vZGVOZWVkc05lZ1plcm8gICAgICAgICAgMHg4MDAg
Ly8gVGhlIHJlc3VsdCBvZiB0aGlzIGNvbXB1dGF0aW9uIG1heSBiZSB1c2VkIGluIGEgY29udGV4
dCB0aGF0IG9ic2VydmVzIC0wLgorI2RlZmluZSBOb2RlVXNlZEFzVmFsdWUgICAgICAgICAgIChO
b2RlVXNlZEFzTnVtYmVyIHwgTm9kZU5lZWRzTmVnWmVybykKKyNkZWZpbmUgTm9kZVVzZWRBc0lu
dCAgICAgICAgICAgIDB4MTAwMCAvLyBUaGUgcmVzdWx0IG9mIHRoaXMgY29tcHV0YXRpb24gaXMg
a25vd24gdG8gYmUgdXNlZCBpbiBhIGNvbnRleHQgdGhhdCBwcmVmZXJzLCBidXQgZG9lcyBub3Qg
cmVxdWlyZSwgaW50ZWdlciB2YWx1ZXMuCiAKIHR5cGVkZWYgdWludDE2X3QgTm9kZUZsYWdzOwog
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlv
blBoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1By
ZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcAkocmV2aXNpb24gMTExNzk3KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTQ1LDggKzQ1LDggQEAgcHVibGljOgogI2lmIERGR19FTkFCTEUoREVC
VUdfUFJPUEFHQVRJT05fVkVSQk9TRSkKICAgICAgICAgbV9jb3VudCA9IDA7CiAjZW5kaWYKLSAg
ICAgICAgLy8gVHdvIHN0YWdlIHByb2Nlc3M6IGZpcnN0IHByb3BhZ2F0ZSBwcmVkaWN0aW9ucywg
dGhlbiBwcm9wYWdhdGUgd2hpbGUgZG9pbmcgZG91YmxlIHZvdGluZy4KLSAgICAgICAgCisgICAg
ICAgIC8vIDEpIHByb3BhZ2F0ZSBwcmVkaWN0aW9ucworCiAgICAgICAgIGRvIHsKICAgICAgICAg
ICAgIG1fY2hhbmdlZCA9IGZhbHNlOwogICAgICAgICAgICAgCkBAIC02NCw2ICs2NCw4IEBAIHB1
YmxpYzoKICAgICAgICAgICAgIHByb3BhZ2F0ZUJhY2t3YXJkKCk7CiAgICAgICAgIH0gd2hpbGUg
KG1fY2hhbmdlZCk7CiAgICAgICAgIAorICAgICAgICAvLyAyKSByZXByb3BhZ2F0ZSBwcmVkaWN0
aW9ucyB3aGlsZSBkb2luZyBkb3VibGUgdm90aW5nLgorCiAgICAgICAgIGRvIHsKICAgICAgICAg
ICAgIG1fY2hhbmdlZCA9IGZhbHNlOwogICAgICAgICAgICAgZG9Sb3VuZE9mRG91YmxlVm90aW5n
KCk7CkBAIC03Niw2ICs3OCw4IEBAIHB1YmxpYzoKICAgICAgICAgICAgIHByb3BhZ2F0ZUJhY2t3
YXJkKCk7CiAgICAgICAgIH0gd2hpbGUgKG1fY2hhbmdlZCk7CiAgICAgICAgIAorICAgICAgICAv
LyAzKSBtYWtlIGNoYW5nZXMgdG8gdGhlIGdyYXBoIGJhc2VkIG9uIHByZWRpY3Rpb25zCisgICAg
ICAgIAogICAgICAgICBmaXh1cCgpOwogICAgIH0KICAgICAKQEAgLTEyMSwxNCArMTI1LDEyIEBA
IHByaXZhdGU6CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIAogICAgICAgICBOb2RlVHlw
ZSBvcCA9IG5vZGUub3AoKTsKLSAgICAgICAgTm9kZUZsYWdzIGZsYWdzID0gbm9kZS5mbGFncygp
OworICAgICAgICBOb2RlRmxhZ3MgZmxhZ3MgPSBub2RlLmZsYWdzKCkgJiBOb2RlQmFja1Byb3BN
YXNrOwogCiAjaWYgREZHX0VOQUJMRShERUJVR19QUk9QQUdBVElPTl9WRVJCT1NFKQogICAgICAg
ICBkYXRhTG9nKCIgICAlcyBAJXU6ICVzICIsIEdyYXBoOjpvcE5hbWUob3ApLCBtX2NvbXBpbGVJ
bmRleCwgbm9kZUZsYWdzQXNTdHJpbmcoZmxhZ3MpKTsKICNlbmRpZgogICAgICAgICAKLSAgICAg
ICAgZmxhZ3MgJj0gTm9kZUJhY2tQcm9wTWFzazsKLSAgICAgICAgCiAgICAgICAgIGJvb2wgY2hh
bmdlZCA9IGZhbHNlOwogICAgICAgICAKICAgICAgICAgc3dpdGNoIChvcCkgewpAQCAtMTU4LDcg
KzE2MCw3IEBAIHByaXZhdGU6CiAgICAgICAgIGNhc2UgRmx1c2g6IHsKICAgICAgICAgICAgIC8v
IE1ha2Ugc3VyZSB0aGF0IHRoZSBhbmFseXNpcyBrbm93cyB0aGF0IGZsdXNoZWQgbG9jYWxzIGVz
Y2FwZS4KICAgICAgICAgICAgIFZhcmlhYmxlQWNjZXNzRGF0YSogdmFyaWFibGVBY2Nlc3NEYXRh
ID0gbm9kZS52YXJpYWJsZUFjY2Vzc0RhdGEoKTsKLSAgICAgICAgICAgIHZhcmlhYmxlQWNjZXNz
RGF0YS0+bWVyZ2VGbGFncyhOb2RlVXNlZEFzTnVtYmVyIHwgTm9kZU5lZWRzTmVnWmVybyk7Cisg
ICAgICAgICAgICBjaGFuZ2VkIHw9IHZhcmlhYmxlQWNjZXNzRGF0YS0+bWVyZ2VGbGFncyhOb2Rl
VXNlZEFzVmFsdWUpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgICAg
IApAQCAtMTY3LDM2ICsxNjksNDcgQEAgcHJpdmF0ZToKICAgICAgICAgY2FzZSBCaXRYb3I6CiAg
ICAgICAgIGNhc2UgQml0UlNoaWZ0OgogICAgICAgICBjYXNlIEJpdExTaGlmdDoKLSAgICAgICAg
Y2FzZSBCaXRVUlNoaWZ0OgorICAgICAgICBjYXNlIEJpdFVSU2hpZnQ6IHsKKyAgICAgICAgICAg
IGNoYW5nZWQgfD0gc2V0UHJlZGljdGlvbihQcmVkaWN0SW50MzIpOworICAgICAgICAgICAgZmxh
Z3MgfD0gTm9kZVVzZWRBc0ludDsKKyAgICAgICAgICAgIGZsYWdzICY9IH4oTm9kZVVzZWRBc051
bWJlciB8IE5vZGVOZWVkc05lZ1plcm8pOworICAgICAgICAgICAgY2hhbmdlZCB8PSBtX2dyYXBo
W25vZGUuY2hpbGQxKCldLm1lcmdlRmxhZ3MoZmxhZ3MpOworICAgICAgICAgICAgY2hhbmdlZCB8
PSBtX2dyYXBoW25vZGUuY2hpbGQyKCldLm1lcmdlRmxhZ3MoZmxhZ3MpOworICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgICAgIAogICAgICAgICBjYXNlIFZhbHVlVG9JbnQz
MjogewogICAgICAgICAgICAgY2hhbmdlZCB8PSBzZXRQcmVkaWN0aW9uKFByZWRpY3RJbnQzMik7
CisgICAgICAgICAgICBmbGFncyB8PSBOb2RlVXNlZEFzSW50OworICAgICAgICAgICAgZmxhZ3Mg
Jj0gfihOb2RlVXNlZEFzTnVtYmVyIHwgTm9kZU5lZWRzTmVnWmVybyk7CisgICAgICAgICAgICBj
aGFuZ2VkIHw9IG1fZ3JhcGhbbm9kZS5jaGlsZDEoKV0ubWVyZ2VGbGFncyhmbGFncyk7CiAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICAgICAgCiAgICAgICAgIGNhc2UgQXJy
YXlQb3A6IHsKLSAgICAgICAgICAgIGlmIChub2RlLmdldEhlYXBQcmVkaWN0aW9uKCkpCi0gICAg
ICAgICAgICAgICAgY2hhbmdlZCB8PSBtZXJnZVByZWRpY3Rpb24obm9kZS5nZXRIZWFwUHJlZGlj
dGlvbigpKTsKKyAgICAgICAgICAgIGNoYW5nZWQgfD0gbWVyZ2VQcmVkaWN0aW9uKG5vZGUuZ2V0
SGVhcFByZWRpY3Rpb24oKSk7CisgICAgICAgICAgICBjaGFuZ2VkIHw9IG1lcmdlRGVmYXVsdEZs
YWdzKG5vZGUpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KIAogICAgICAgICBjYXNl
IEFycmF5UHVzaDogewotICAgICAgICAgICAgaWYgKG5vZGUuZ2V0SGVhcFByZWRpY3Rpb24oKSkK
LSAgICAgICAgICAgICAgICBjaGFuZ2VkIHw9IG1lcmdlUHJlZGljdGlvbihub2RlLmdldEhlYXBQ
cmVkaWN0aW9uKCkpOwotICAgICAgICAgICAgY2hhbmdlZCB8PSBtZXJnZURlZmF1bHRBcml0aEZs
YWdzKG5vZGUsIGZsYWdzKTsKKyAgICAgICAgICAgIGNoYW5nZWQgfD0gbWVyZ2VQcmVkaWN0aW9u
KG5vZGUuZ2V0SGVhcFByZWRpY3Rpb24oKSk7CisgICAgICAgICAgICBjaGFuZ2VkIHw9IG1fZ3Jh
cGhbbm9kZS5jaGlsZDEoKV0ubWVyZ2VGbGFncyhOb2RlVXNlZEFzVmFsdWUpOworICAgICAgICAg
ICAgY2hhbmdlZCB8PSBtX2dyYXBoW25vZGUuY2hpbGQyKCldLm1lcmdlRmxhZ3MoTm9kZVVzZWRB
c1ZhbHVlKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAKICAgICAgICAgY2FzZSBS
ZWdFeHBFeGVjOgogICAgICAgICBjYXNlIFJlZ0V4cFRlc3Q6IHsKLSAgICAgICAgICAgIGlmIChu
b2RlLmdldEhlYXBQcmVkaWN0aW9uKCkpCi0gICAgICAgICAgICAgICAgY2hhbmdlZCB8PSBtZXJn
ZVByZWRpY3Rpb24obm9kZS5nZXRIZWFwUHJlZGljdGlvbigpKTsKLSAgICAgICAgICAgIGNoYW5n
ZWQgfD0gbWVyZ2VEZWZhdWx0QXJpdGhGbGFncyhub2RlLCBmbGFncyk7CisgICAgICAgICAgICBj
aGFuZ2VkIHw9IG1lcmdlUHJlZGljdGlvbihub2RlLmdldEhlYXBQcmVkaWN0aW9uKCkpOworICAg
ICAgICAgICAgY2hhbmdlZCB8PSBtZXJnZURlZmF1bHRGbGFncyhub2RlKTsKICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICB9CiAKICAgICAgICAgY2FzZSBTdHJpbmdDaGFyQ29kZUF0OiB7CiAg
ICAgICAgICAgICBjaGFuZ2VkIHw9IG1lcmdlUHJlZGljdGlvbihQcmVkaWN0SW50MzIpOwotICAg
ICAgICAgICAgY2hhbmdlZCB8PSBtZXJnZURlZmF1bHRBcml0aEZsYWdzKG5vZGUsIGZsYWdzKTsK
KyAgICAgICAgICAgIGNoYW5nZWQgfD0gbV9ncmFwaFtub2RlLmNoaWxkMSgpXS5tZXJnZUZsYWdz
KE5vZGVVc2VkQXNWYWx1ZSk7CisgICAgICAgICAgICBjaGFuZ2VkIHw9IG1fZ3JhcGhbbm9kZS5j
aGlsZDIoKV0ubWVyZ2VGbGFncyhOb2RlVXNlZEFzTnVtYmVyIHwgTm9kZVVzZWRBc0ludCk7CiAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogCkBAIC0yMDUsMTMgKzIxOCwxNiBAQCBwcml2
YXRlOgogICAgICAgICAgICAgUHJlZGljdGVkVHlwZSByaWdodCA9IG1fZ3JhcGhbbm9kZS5jaGls
ZDIoKV0ucHJlZGljdGlvbigpOwogICAgICAgICAgICAgCiAgICAgICAgICAgICBpZiAobGVmdCAm
JiByaWdodCkgewotICAgICAgICAgICAgICAgIGlmIChpc0ludDMyUHJlZGljdGlvbihtZXJnZVBy
ZWRpY3Rpb25zKGxlZnQsIHJpZ2h0KSkgJiYgbm9kZUNhblNwZWN1bGF0ZUludGVnZXIobm9kZS5h
cml0aE5vZGVGbGFncygpKSkKKyAgICAgICAgICAgICAgICBpZiAoaXNJbnQzMlByZWRpY3Rpb24o
bWVyZ2VQcmVkaWN0aW9ucyhsZWZ0LCByaWdodCkpCisgICAgICAgICAgICAgICAgICAgICYmIG5v
ZGVDYW5TcGVjdWxhdGVJbnRlZ2VyKG5vZGUuYXJpdGhOb2RlRmxhZ3MoKSkpCiAgICAgICAgICAg
ICAgICAgICAgIGNoYW5nZWQgfD0gbWVyZ2VQcmVkaWN0aW9uKFByZWRpY3RJbnQzMik7CiAgICAg
ICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgICAgICBjaGFuZ2VkIHw9IG1lcmdlUHJl
ZGljdGlvbihQcmVkaWN0RG91YmxlKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIAotICAg
ICAgICAgICAgY2hhbmdlZCB8PSBtZXJnZURlZmF1bHRBcml0aEZsYWdzKG5vZGUsIGZsYWdzKTsK
KyAgICAgICAgICAgIGZsYWdzIHw9IE5vZGVVc2VkQXNWYWx1ZTsKKyAgICAgICAgICAgIGNoYW5n
ZWQgfD0gbV9ncmFwaFtub2RlLmNoaWxkMSgpXS5tZXJnZUZsYWdzKGZsYWdzKTsKKyAgICAgICAg
ICAgIGNoYW5nZWQgfD0gbV9ncmFwaFtub2RlLmNoaWxkMigpXS5tZXJnZUZsYWdzKGZsYWdzKTsK
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgICAgICAKQEAgLTMwNSw3ICsz
MjEsOCBAQCBwcml2YXRlOgogICAgICAgICAgICAgUHJlZGljdGVkVHlwZSByaWdodCA9IG1fZ3Jh
cGhbbm9kZS5jaGlsZDIoKV0ucHJlZGljdGlvbigpOwogICAgICAgICAgICAgCiAgICAgICAgICAg
ICBpZiAobGVmdCAmJiByaWdodCkgewotICAgICAgICAgICAgICAgIGlmIChpc0ludDMyUHJlZGlj
dGlvbihtZXJnZVByZWRpY3Rpb25zKGxlZnQsIHJpZ2h0KSkgJiYgbm9kZUNhblNwZWN1bGF0ZUlu
dGVnZXIobm9kZS5hcml0aE5vZGVGbGFncygpKSkKKyAgICAgICAgICAgICAgICBpZiAoaXNJbnQz
MlByZWRpY3Rpb24obWVyZ2VQcmVkaWN0aW9ucyhsZWZ0LCByaWdodCkpCisgICAgICAgICAgICAg
ICAgICAgICYmIG5vZGVDYW5TcGVjdWxhdGVJbnRlZ2VyKG5vZGUuYXJpdGhOb2RlRmxhZ3MoKSkp
CiAgICAgICAgICAgICAgICAgICAgIGNoYW5nZWQgfD0gbWVyZ2VQcmVkaWN0aW9uKFByZWRpY3RJ
bnQzMik7CiAgICAgICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgICAgICBjaGFuZ2Vk
IHw9IG1lcmdlUHJlZGljdGlvbihQcmVkaWN0RG91YmxlKTsKQEAgLTMyMyw3ICszNDAsOCBAQCBw
cml2YXRlOgogICAgICAgICAgICAgUHJlZGljdGVkVHlwZSByaWdodCA9IG1fZ3JhcGhbbm9kZS5j
aGlsZDIoKV0ucHJlZGljdGlvbigpOwogICAgICAgICAgICAgCiAgICAgICAgICAgICBpZiAobGVm
dCAmJiByaWdodCkgewotICAgICAgICAgICAgICAgIGlmIChpc0ludDMyUHJlZGljdGlvbihtZXJn
ZVByZWRpY3Rpb25zKGxlZnQsIHJpZ2h0KSkgJiYgbm9kZUNhblNwZWN1bGF0ZUludGVnZXIobm9k
ZS5hcml0aE5vZGVGbGFncygpKSkKKyAgICAgICAgICAgICAgICBpZiAoaXNJbnQzMlByZWRpY3Rp
b24obWVyZ2VQcmVkaWN0aW9ucyhsZWZ0LCByaWdodCkpCisgICAgICAgICAgICAgICAgICAgICYm
IG5vZGVDYW5TcGVjdWxhdGVJbnRlZ2VyKG5vZGUuYXJpdGhOb2RlRmxhZ3MoKSkpCiAgICAgICAg
ICAgICAgICAgICAgIGNoYW5nZWQgfD0gbWVyZ2VQcmVkaWN0aW9uKFByZWRpY3RJbnQzMik7CiAg
ICAgICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgICAgICBjaGFuZ2VkIHw9IG1lcmdl
UHJlZGljdGlvbihQcmVkaWN0RG91YmxlKTsKQEAgLTM0MiwxOCArMzYwLDE2IEBAIHByaXZhdGU6
CiAgICAgICAgICAgICAKICAgICAgICAgY2FzZSBBcml0aFNxcnQ6IHsKICAgICAgICAgICAgIGNo
YW5nZWQgfD0gc2V0UHJlZGljdGlvbihQcmVkaWN0RG91YmxlKTsKLSAgICAgICAgICAgIGNoYW5n
ZWQgfD0gbWVyZ2VEZWZhdWx0QXJpdGhGbGFncyhub2RlLCBmbGFncyk7CisgICAgICAgICAgICBj
aGFuZ2VkIHw9IG1fZ3JhcGhbbm9kZS5jaGlsZDEoKV0ubWVyZ2VGbGFncyhmbGFncyB8IE5vZGVV
c2VkQXNWYWx1ZSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICAgICAg
CiAgICAgICAgIGNhc2UgQXJpdGhBYnM6IHsKICAgICAgICAgICAgIFByZWRpY3RlZFR5cGUgY2hp
bGQgPSBtX2dyYXBoW25vZGUuY2hpbGQxKCldLnByZWRpY3Rpb24oKTsKLSAgICAgICAgICAgIGlm
IChjaGlsZCkgewotICAgICAgICAgICAgICAgIGlmIChub2RlQ2FuU3BlY3VsYXRlSW50ZWdlcihu
b2RlLmFyaXRoTm9kZUZsYWdzKCkpKQotICAgICAgICAgICAgICAgICAgICBjaGFuZ2VkIHw9IG1l
cmdlUHJlZGljdGlvbihjaGlsZCk7Ci0gICAgICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAg
ICAgICAgICBjaGFuZ2VkIHw9IHNldFByZWRpY3Rpb24oUHJlZGljdERvdWJsZSk7Ci0gICAgICAg
ICAgICB9CisgICAgICAgICAgICBpZiAobm9kZUNhblNwZWN1bGF0ZUludGVnZXIobm9kZS5hcml0
aE5vZGVGbGFncygpKSkKKyAgICAgICAgICAgICAgICBjaGFuZ2VkIHw9IG1lcmdlUHJlZGljdGlv
bihjaGlsZCk7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgY2hhbmdlZCB8PSBz
ZXRQcmVkaWN0aW9uKFByZWRpY3REb3VibGUpOwogCiAgICAgICAgICAgICBmbGFncyAmPSB+Tm9k
ZU5lZWRzTmVnWmVybzsKICAgICAgICAgICAgIGNoYW5nZWQgfD0gbV9ncmFwaFtub2RlLmNoaWxk
MSgpXS5tZXJnZUZsYWdzKGZsYWdzKTsKQEAgLTM2OSw3MSArMzg1LDU1IEBAIHByaXZhdGU6CiAg
ICAgICAgIGNhc2UgQ29tcGFyZVN0cmljdEVxOgogICAgICAgICBjYXNlIEluc3RhbmNlT2Y6IHsK
ICAgICAgICAgICAgIGNoYW5nZWQgfD0gc2V0UHJlZGljdGlvbihQcmVkaWN0Qm9vbGVhbik7Ci0g
ICAgICAgICAgICBjaGFuZ2VkIHw9IG1lcmdlRGVmYXVsdEFyaXRoRmxhZ3Mobm9kZSwgZmxhZ3Mp
OworICAgICAgICAgICAgY2hhbmdlZCB8PSBtZXJnZURlZmF1bHRGbGFncyhub2RlKTsKICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgICAgICAKICAgICAgICAgY2FzZSBHZXRC
eUlkOiB7Ci0gICAgICAgICAgICBpZiAobm9kZS5nZXRIZWFwUHJlZGljdGlvbigpKQotICAgICAg
ICAgICAgICAgIGNoYW5nZWQgfD0gbWVyZ2VQcmVkaWN0aW9uKG5vZGUuZ2V0SGVhcFByZWRpY3Rp
b24oKSk7Ci0gICAgICAgICAgICBlbHNlIGlmIChjb2RlQmxvY2soKS0+aWRlbnRpZmllcihub2Rl
LmlkZW50aWZpZXJOdW1iZXIoKSkgPT0gZ2xvYmFsRGF0YSgpLnByb3BlcnR5TmFtZXMtPmxlbmd0
aCkgewotICAgICAgICAgICAgICAgIC8vIElmIHRoZXJlIGlzIG5vIHByZWRpY3Rpb24gZnJvbSB2
YWx1ZSBwcm9maWxlcywgY2hlY2sgaWYgd2UgbWlnaHQgYmUKLSAgICAgICAgICAgICAgICAvLyBh
YmxlIHRvIGluZmVyIHRoZSB0eXBlIG91cnNlbHZlcy4KLSAgICAgICAgICAgICAgICBib29sIGlz
QXJyYXkgPSBpc0FycmF5UHJlZGljdGlvbihtX2dyYXBoW25vZGUuY2hpbGQxKCldLnByZWRpY3Rp
b24oKSk7Ci0gICAgICAgICAgICAgICAgYm9vbCBpc1N0cmluZyA9IGlzU3RyaW5nUHJlZGljdGlv
bihtX2dyYXBoW25vZGUuY2hpbGQxKCldLnByZWRpY3Rpb24oKSk7Ci0gICAgICAgICAgICAgICAg
Ym9vbCBpc0J5dGVBcnJheSA9IG1fZ3JhcGhbbm9kZS5jaGlsZDEoKV0uc2hvdWxkU3BlY3VsYXRl
Qnl0ZUFycmF5KCk7Ci0gICAgICAgICAgICAgICAgYm9vbCBpc0ludDhBcnJheSA9IG1fZ3JhcGhb
bm9kZS5jaGlsZDEoKV0uc2hvdWxkU3BlY3VsYXRlSW50OEFycmF5KCk7Ci0gICAgICAgICAgICAg
ICAgYm9vbCBpc0ludDE2QXJyYXkgPSBtX2dyYXBoW25vZGUuY2hpbGQxKCldLnNob3VsZFNwZWN1
bGF0ZUludDE2QXJyYXkoKTsKLSAgICAgICAgICAgICAgICBib29sIGlzSW50MzJBcnJheSA9IG1f
Z3JhcGhbbm9kZS5jaGlsZDEoKV0uc2hvdWxkU3BlY3VsYXRlSW50MzJBcnJheSgpOwotICAgICAg
ICAgICAgICAgIGJvb2wgaXNVaW50OEFycmF5ID0gbV9ncmFwaFtub2RlLmNoaWxkMSgpXS5zaG91
bGRTcGVjdWxhdGVVaW50OEFycmF5KCk7Ci0gICAgICAgICAgICAgICAgYm9vbCBpc1VpbnQ4Q2xh
bXBlZEFycmF5ID0gbV9ncmFwaFtub2RlLmNoaWxkMSgpXS5zaG91bGRTcGVjdWxhdGVVaW50OENs
YW1wZWRBcnJheSgpOwotICAgICAgICAgICAgICAgIGJvb2wgaXNVaW50MTZBcnJheSA9IG1fZ3Jh
cGhbbm9kZS5jaGlsZDEoKV0uc2hvdWxkU3BlY3VsYXRlVWludDE2QXJyYXkoKTsKLSAgICAgICAg
ICAgICAgICBib29sIGlzVWludDMyQXJyYXkgPSBtX2dyYXBoW25vZGUuY2hpbGQxKCldLnNob3Vs
ZFNwZWN1bGF0ZVVpbnQzMkFycmF5KCk7Ci0gICAgICAgICAgICAgICAgYm9vbCBpc0Zsb2F0MzJB
cnJheSA9IG1fZ3JhcGhbbm9kZS5jaGlsZDEoKV0uc2hvdWxkU3BlY3VsYXRlRmxvYXQzMkFycmF5
KCk7Ci0gICAgICAgICAgICAgICAgYm9vbCBpc0Zsb2F0NjRBcnJheSA9IG1fZ3JhcGhbbm9kZS5j
aGlsZDEoKV0uc2hvdWxkU3BlY3VsYXRlRmxvYXQ2NEFycmF5KCk7Ci0gICAgICAgICAgICAgICAg
aWYgKGlzQXJyYXkgfHwgaXNTdHJpbmcgfHwgaXNCeXRlQXJyYXkgfHwgaXNJbnQ4QXJyYXkgfHwg
aXNJbnQxNkFycmF5IHx8IGlzSW50MzJBcnJheSB8fCBpc1VpbnQ4QXJyYXkgfHwgaXNVaW50OENs
YW1wZWRBcnJheSB8fCBpc1VpbnQxNkFycmF5IHx8IGlzVWludDMyQXJyYXkgfHwgaXNGbG9hdDMy
QXJyYXkgfHwgaXNGbG9hdDY0QXJyYXkpCi0gICAgICAgICAgICAgICAgICAgIGNoYW5nZWQgfD0g
bWVyZ2VQcmVkaWN0aW9uKFByZWRpY3RJbnQzMik7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAg
ICBjaGFuZ2VkIHw9IG1lcmdlRGVmYXVsdEFyaXRoRmxhZ3Mobm9kZSwgZmxhZ3MpOworICAgICAg
ICAgICAgY2hhbmdlZCB8PSBtZXJnZVByZWRpY3Rpb24obm9kZS5nZXRIZWFwUHJlZGljdGlvbigp
KTsKKyAgICAgICAgICAgIGNoYW5nZWQgfD0gbWVyZ2VEZWZhdWx0RmxhZ3Mobm9kZSk7CiAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICAgICAgCiAgICAgICAgIGNhc2UgR2V0
QnlJZEZsdXNoOgotICAgICAgICAgICAgaWYgKG5vZGUuZ2V0SGVhcFByZWRpY3Rpb24oKSkKLSAg
ICAgICAgICAgICAgICBjaGFuZ2VkIHw9IG1lcmdlUHJlZGljdGlvbihub2RlLmdldEhlYXBQcmVk
aWN0aW9uKCkpOwotICAgICAgICAgICAgY2hhbmdlZCB8PSBtZXJnZURlZmF1bHRBcml0aEZsYWdz
KG5vZGUsIGZsYWdzKTsKKyAgICAgICAgICAgIGNoYW5nZWQgfD0gbWVyZ2VQcmVkaWN0aW9uKG5v
ZGUuZ2V0SGVhcFByZWRpY3Rpb24oKSk7CisgICAgICAgICAgICBjaGFuZ2VkIHw9IG1lcmdlRGVm
YXVsdEZsYWdzKG5vZGUpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAKICAgICAg
ICAgY2FzZSBHZXRCeVZhbDogewotICAgICAgICAgICAgaWYgKG1fZ3JhcGhbbm9kZS5jaGlsZDEo
KV0uc2hvdWxkU3BlY3VsYXRlRmxvYXQzMkFycmF5KCkgfHwgbV9ncmFwaFtub2RlLmNoaWxkMSgp
XS5zaG91bGRTcGVjdWxhdGVGbG9hdDY0QXJyYXkoKSkKKyAgICAgICAgICAgIGlmIChtX2dyYXBo
W25vZGUuY2hpbGQxKCldLnNob3VsZFNwZWN1bGF0ZUZsb2F0MzJBcnJheSgpCisgICAgICAgICAg
ICAgICAgfHwgbV9ncmFwaFtub2RlLmNoaWxkMSgpXS5zaG91bGRTcGVjdWxhdGVGbG9hdDY0QXJy
YXkoKSkKICAgICAgICAgICAgICAgICBjaGFuZ2VkIHw9IG1lcmdlUHJlZGljdGlvbihQcmVkaWN0
RG91YmxlKTsKLSAgICAgICAgICAgIGVsc2UgaWYgKG5vZGUuZ2V0SGVhcFByZWRpY3Rpb24oKSkK
KyAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICBjaGFuZ2VkIHw9IG1lcmdlUHJlZGlj
dGlvbihub2RlLmdldEhlYXBQcmVkaWN0aW9uKCkpOwogCi0gICAgICAgICAgICBjaGFuZ2VkIHw9
IG1fZ3JhcGhbbm9kZS5jaGlsZDEoKV0ubWVyZ2VGbGFncyhmbGFncyB8IE5vZGVVc2VkQXNOdW1i
ZXIgfCBOb2RlTmVlZHNOZWdaZXJvKTsKLSAgICAgICAgICAgIGNoYW5nZWQgfD0gbV9ncmFwaFtu
b2RlLmNoaWxkMigpXS5tZXJnZUZsYWdzKGZsYWdzIHwgTm9kZVVzZWRBc051bWJlcik7CisgICAg
ICAgICAgICBjaGFuZ2VkIHw9IG1fZ3JhcGhbbm9kZS5jaGlsZDEoKV0ubWVyZ2VGbGFncyhOb2Rl
VXNlZEFzVmFsdWUpOworICAgICAgICAgICAgY2hhbmdlZCB8PSBtX2dyYXBoW25vZGUuY2hpbGQy
KCldLm1lcmdlRmxhZ3MoTm9kZVVzZWRBc051bWJlciB8IE5vZGVVc2VkQXNJbnQpOwogICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgICAgIAogICAgICAgICBjYXNlIEdldFBy
b3BlcnR5U3RvcmFnZTogCiAgICAgICAgIGNhc2UgR2V0SW5kZXhlZFByb3BlcnR5U3RvcmFnZTog
ewogICAgICAgICAgICAgY2hhbmdlZCB8PSBzZXRQcmVkaWN0aW9uKFByZWRpY3RPdGhlcik7Ci0g
ICAgICAgICAgICBjaGFuZ2VkIHw9IG1lcmdlRGVmYXVsdEFyaXRoRmxhZ3Mobm9kZSwgZmxhZ3Mp
OworICAgICAgICAgICAgY2hhbmdlZCB8PSBtZXJnZURlZmF1bHRGbGFncyhub2RlKTsKICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICB9CiAKICAgICAgICAgY2FzZSBHZXRCeU9mZnNldDogewot
ICAgICAgICAgICAgaWYgKG5vZGUuZ2V0SGVhcFByZWRpY3Rpb24oKSkKLSAgICAgICAgICAgICAg
ICBjaGFuZ2VkIHw9IG1lcmdlUHJlZGljdGlvbihub2RlLmdldEhlYXBQcmVkaWN0aW9uKCkpOwot
ICAgICAgICAgICAgY2hhbmdlZCB8PSBtZXJnZURlZmF1bHRBcml0aEZsYWdzKG5vZGUsIGZsYWdz
KTsKKyAgICAgICAgICAgIGNoYW5nZWQgfD0gbWVyZ2VQcmVkaWN0aW9uKG5vZGUuZ2V0SGVhcFBy
ZWRpY3Rpb24oKSk7CisgICAgICAgICAgICBjaGFuZ2VkIHw9IG1lcmdlRGVmYXVsdEZsYWdzKG5v
ZGUpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgICAgIAogICAgICAg
ICBjYXNlIENhbGw6CiAgICAgICAgIGNhc2UgQ29uc3RydWN0OiB7Ci0gICAgICAgICAgICBpZiAo
bm9kZS5nZXRIZWFwUHJlZGljdGlvbigpKQotICAgICAgICAgICAgICAgIGNoYW5nZWQgfD0gbWVy
Z2VQcmVkaWN0aW9uKG5vZGUuZ2V0SGVhcFByZWRpY3Rpb24oKSk7Ci0gICAgICAgICAgICBjaGFu
Z2VkIHw9IG1lcmdlRGVmYXVsdEFyaXRoRmxhZ3Mobm9kZSwgZmxhZ3MpOworICAgICAgICAgICAg
Y2hhbmdlZCB8PSBtZXJnZVByZWRpY3Rpb24obm9kZS5nZXRIZWFwUHJlZGljdGlvbigpKTsKKyAg
ICAgICAgICAgIGZvciAodW5zaWduZWQgY2hpbGRJZHggPSBub2RlLmZpcnN0Q2hpbGQoKTsKKyAg
ICAgICAgICAgICAgICAgY2hpbGRJZHggPCBub2RlLmZpcnN0Q2hpbGQoKSArIG5vZGUubnVtQ2hp
bGRyZW4oKTsKKyAgICAgICAgICAgICAgICAgKytjaGlsZElkeCkgeworICAgICAgICAgICAgICAg
IEVkZ2UgZWRnZSA9IG1fZ3JhcGgubV92YXJBcmdDaGlsZHJlbltjaGlsZElkeF07CisgICAgICAg
ICAgICAgICAgY2hhbmdlZCB8PSBtX2dyYXBoW2VkZ2VdLm1lcmdlRmxhZ3MoTm9kZVVzZWRBc1Zh
bHVlKTsKKyAgICAgICAgICAgIH0KICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAg
ICAgICAgICAKQEAgLTQ0NiwyMCArNDQ2LDIwIEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAg
fQogICAgICAgICAgICAgICAgIGNoYW5nZWQgfD0gbWVyZ2VQcmVkaWN0aW9uKHByZWRpY3Rpb24p
OwogICAgICAgICAgICAgfQotICAgICAgICAgICAgY2hhbmdlZCB8PSBtZXJnZURlZmF1bHRBcml0
aEZsYWdzKG5vZGUsIGZsYWdzKTsKKyAgICAgICAgICAgIGNoYW5nZWQgfD0gbWVyZ2VEZWZhdWx0
RmxhZ3Mobm9kZSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICAgICAg
CiAgICAgICAgIGNhc2UgR2V0R2xvYmFsVmFyOiB7CiAgICAgICAgICAgICBQcmVkaWN0ZWRUeXBl
IHByZWRpY3Rpb24gPSBtX2dyYXBoLmdldEdsb2JhbFZhclByZWRpY3Rpb24obm9kZS52YXJOdW1i
ZXIoKSk7Ci0gICAgICAgICAgICBpZiAocHJlZGljdGlvbikKLSAgICAgICAgICAgICAgICBjaGFu
Z2VkIHw9IG1lcmdlUHJlZGljdGlvbihwcmVkaWN0aW9uKTsKKyAgICAgICAgICAgIGNoYW5nZWQg
fD0gbWVyZ2VQcmVkaWN0aW9uKHByZWRpY3Rpb24pOwogICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgIH0KICAgICAgICAgICAgIAogICAgICAgICBjYXNlIFB1dEdsb2JhbFZhcjogewotICAgICAg
ICAgICAgY2hhbmdlZCB8PSBtX2dyYXBoLnByZWRpY3RHbG9iYWxWYXIobm9kZS52YXJOdW1iZXIo
KSwgbV9ncmFwaFtub2RlLmNoaWxkMSgpXS5wcmVkaWN0aW9uKCkpOwotICAgICAgICAgICAgY2hh
bmdlZCB8PSBtZXJnZURlZmF1bHRBcml0aEZsYWdzKG5vZGUsIGZsYWdzKTsKKyAgICAgICAgICAg
IGNoYW5nZWQgfD0gbV9ncmFwaC5wcmVkaWN0R2xvYmFsVmFyKAorICAgICAgICAgICAgICAgIG5v
ZGUudmFyTnVtYmVyKCksIG1fZ3JhcGhbbm9kZS5jaGlsZDEoKV0ucHJlZGljdGlvbigpKTsKKyAg
ICAgICAgICAgIGNoYW5nZWQgfD0gbV9ncmFwaFtub2RlLmNoaWxkMSgpXS5tZXJnZUZsYWdzKE5v
ZGVVc2VkQXNWYWx1ZSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICAg
ICAgCkBAIC00NjksOCArNDY5LDcgQEAgcHJpdmF0ZToKICAgICAgICAgY2FzZSBSZXNvbHZlQmFz
ZVN0cmljdFB1dDoKICAgICAgICAgY2FzZSBSZXNvbHZlR2xvYmFsOiB7CiAgICAgICAgICAgICBQ
cmVkaWN0ZWRUeXBlIHByZWRpY3Rpb24gPSBub2RlLmdldEhlYXBQcmVkaWN0aW9uKCk7Ci0gICAg
ICAgICAgICBpZiAocHJlZGljdGlvbikKLSAgICAgICAgICAgICAgICBjaGFuZ2VkIHw9IG1lcmdl
UHJlZGljdGlvbihwcmVkaWN0aW9uKTsKKyAgICAgICAgICAgIGNoYW5nZWQgfD0gbWVyZ2VQcmVk
aWN0aW9uKHByZWRpY3Rpb24pOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAg
ICAgICAgIApAQCAtNDg3LDE0ICs0ODYsMjMgQEAgcHJpdmF0ZToKICAgICAgICAgY2FzZSBDcmVh
dGVUaGlzOgogICAgICAgICBjYXNlIE5ld09iamVjdDogewogICAgICAgICAgICAgY2hhbmdlZCB8
PSBzZXRQcmVkaWN0aW9uKFByZWRpY3RGaW5hbE9iamVjdCk7Ci0gICAgICAgICAgICBjaGFuZ2Vk
IHw9IG1lcmdlRGVmYXVsdEFyaXRoRmxhZ3Mobm9kZSwgZmxhZ3MpOworICAgICAgICAgICAgY2hh
bmdlZCB8PSBtZXJnZURlZmF1bHRGbGFncyhub2RlKTsKKyAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAgY2FzZSBOZXdBcnJheTogeworICAgICAgICAg
ICAgY2hhbmdlZCB8PSBzZXRQcmVkaWN0aW9uKFByZWRpY3RBcnJheSk7CisgICAgICAgICAgICBm
b3IgKHVuc2lnbmVkIGNoaWxkSWR4ID0gbm9kZS5maXJzdENoaWxkKCk7CisgICAgICAgICAgICAg
ICAgIGNoaWxkSWR4IDwgbm9kZS5maXJzdENoaWxkKCkgKyBub2RlLm51bUNoaWxkcmVuKCk7Cisg
ICAgICAgICAgICAgICAgICsrY2hpbGRJZHgpIHsKKyAgICAgICAgICAgICAgICBFZGdlIGVkZ2Ug
PSBtX2dyYXBoLm1fdmFyQXJnQ2hpbGRyZW5bY2hpbGRJZHhdOworICAgICAgICAgICAgICAgIGNo
YW5nZWQgfD0gbV9ncmFwaFtlZGdlXS5tZXJnZUZsYWdzKE5vZGVVc2VkQXNWYWx1ZSk7CisgICAg
ICAgICAgICB9CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICAgICAgCi0g
ICAgICAgIGNhc2UgTmV3QXJyYXk6CiAgICAgICAgIGNhc2UgTmV3QXJyYXlCdWZmZXI6IHsKICAg
ICAgICAgICAgIGNoYW5nZWQgfD0gc2V0UHJlZGljdGlvbihQcmVkaWN0QXJyYXkpOwotICAgICAg
ICAgICAgY2hhbmdlZCB8PSBtZXJnZURlZmF1bHRBcml0aEZsYWdzKG5vZGUsIGZsYWdzKTsKICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgICAgICAKQEAgLTUwMywxMCArNTEx
LDE5IEBAIHByaXZhdGU6CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICAK
LSAgICAgICAgY2FzZSBTdHJpbmdDaGFyQXQ6CisgICAgICAgIGNhc2UgU3RyaW5nQ2hhckF0OiB7
CisgICAgICAgICAgICBjaGFuZ2VkIHw9IHNldFByZWRpY3Rpb24oUHJlZGljdFN0cmluZyk7Cisg
ICAgICAgICAgICBjaGFuZ2VkIHw9IG1fZ3JhcGhbbm9kZS5jaGlsZDEoKV0ubWVyZ2VGbGFncyhO
b2RlVXNlZEFzVmFsdWUpOworICAgICAgICAgICAgY2hhbmdlZCB8PSBtX2dyYXBoW25vZGUuY2hp
bGQyKCldLm1lcmdlRmxhZ3MoTm9kZVVzZWRBc051bWJlciB8IE5vZGVVc2VkQXNJbnQpOworICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgICAgIAogICAgICAgICBjYXNlIFN0
ckNhdDogewogICAgICAgICAgICAgY2hhbmdlZCB8PSBzZXRQcmVkaWN0aW9uKFByZWRpY3RTdHJp
bmcpOwotICAgICAgICAgICAgY2hhbmdlZCB8PSBtZXJnZURlZmF1bHRBcml0aEZsYWdzKG5vZGUs
IGZsYWdzKTsKKyAgICAgICAgICAgIGZvciAodW5zaWduZWQgY2hpbGRJZHggPSBub2RlLmZpcnN0
Q2hpbGQoKTsKKyAgICAgICAgICAgICAgICAgY2hpbGRJZHggPCBub2RlLmZpcnN0Q2hpbGQoKSAr
IG5vZGUubnVtQ2hpbGRyZW4oKTsKKyAgICAgICAgICAgICAgICAgKytjaGlsZElkeCkKKyAgICAg
ICAgICAgICAgICBjaGFuZ2VkIHw9IG1fZ3JhcGhbbV9ncmFwaC5tX3ZhckFyZ0NoaWxkcmVuW2No
aWxkSWR4XV0ubWVyZ2VGbGFncyhOb2RlVXNlZEFzTnVtYmVyKTsKICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICB9CiAgICAgICAgICAgICAKQEAgLTUyMyw3ICs1NDAsOCBAQCBwcml2YXRlOgog
ICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoY2hpbGQgJiBQcmVkaWN0T2JqZWN0TWFzaykgewog
ICAgICAgICAgICAgICAgICAgICAvLyBPYmplY3RzIGdldCB0dXJuZWQgaW50byBzdHJpbmdzLiBT
byBpZiB0aGUgaW5wdXQgaGFzIGhpbnRzIG9mIG9iamVjdG5lc3MsCiAgICAgICAgICAgICAgICAg
ICAgIC8vIHRoZSBvdXRwdXQgd2lsbCBoYXZlIGhpbnN0cyBvZiBzdHJpbmdpbmVzcy4KLSAgICAg
ICAgICAgICAgICAgICAgY2hhbmdlZCB8PSBtZXJnZVByZWRpY3Rpb24obWVyZ2VQcmVkaWN0aW9u
cyhjaGlsZCAmIH5QcmVkaWN0T2JqZWN0TWFzaywgUHJlZGljdFN0cmluZykpOworICAgICAgICAg
ICAgICAgICAgICBjaGFuZ2VkIHw9IG1lcmdlUHJlZGljdGlvbigKKyAgICAgICAgICAgICAgICAg
ICAgICAgIG1lcmdlUHJlZGljdGlvbnMoY2hpbGQgJiB+UHJlZGljdE9iamVjdE1hc2ssIFByZWRp
Y3RTdHJpbmcpKTsKICAgICAgICAgICAgICAgICB9IGVsc2UKICAgICAgICAgICAgICAgICAgICAg
Y2hhbmdlZCB8PSBtZXJnZVByZWRpY3Rpb24oY2hpbGQpOwogICAgICAgICAgICAgfQpAQCAtNTQz
LDYgKzU2MSw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAg
ICAgICAgICAgCisgICAgICAgIGNhc2UgUHV0QnlWYWxBbGlhczoKICAgICAgICAgY2FzZSBHZXRB
cnJheUxlbmd0aDoKICAgICAgICAgY2FzZSBHZXRCeXRlQXJyYXlMZW5ndGg6CiAgICAgICAgIGNh
c2UgR2V0SW50OEFycmF5TGVuZ3RoOgpAQCAtNTYyLDMzICs1ODEsNDUgQEAgcHJpdmF0ZToKICAg
ICAgICAgfQogICAgICAgICAKICAgICAgICAgY2FzZSBQdXRCeVZhbDoKLSAgICAgICAgICAgIGNo
YW5nZWQgfD0gbV9ncmFwaFtub2RlLmNoaWxkMSgpXS5tZXJnZUZsYWdzKGZsYWdzIHwgTm9kZVVz
ZWRBc051bWJlciB8IE5vZGVOZWVkc05lZ1plcm8pOwotICAgICAgICAgICAgY2hhbmdlZCB8PSBt
X2dyYXBoW25vZGUuY2hpbGQyKCldLm1lcmdlRmxhZ3MoZmxhZ3MgfCBOb2RlVXNlZEFzTnVtYmVy
KTsKLSAgICAgICAgICAgIGNoYW5nZWQgfD0gbV9ncmFwaFtub2RlLmNoaWxkMygpXS5tZXJnZUZs
YWdzKGZsYWdzIHwgTm9kZVVzZWRBc051bWJlciB8IE5vZGVOZWVkc05lZ1plcm8pOworICAgICAg
ICAgICAgY2hhbmdlZCB8PSBtX2dyYXBoW25vZGUuY2hpbGQxKCldLm1lcmdlRmxhZ3MoTm9kZVVz
ZWRBc1ZhbHVlKTsKKyAgICAgICAgICAgIGNoYW5nZWQgfD0gbV9ncmFwaFtub2RlLmNoaWxkMigp
XS5tZXJnZUZsYWdzKE5vZGVVc2VkQXNOdW1iZXIgfCBOb2RlVXNlZEFzSW50KTsKKyAgICAgICAg
ICAgIGNoYW5nZWQgfD0gbV9ncmFwaFtub2RlLmNoaWxkMygpXS5tZXJnZUZsYWdzKE5vZGVVc2Vk
QXNWYWx1ZSk7CisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBjYXNlIFB1dFNjb3BlZFZh
cjoKKyAgICAgICAgY2FzZSBSZXR1cm46CisgICAgICAgIGNhc2UgVGhyb3c6CisgICAgICAgICAg
ICBjaGFuZ2VkIHw9IG1fZ3JhcGhbbm9kZS5jaGlsZDEoKV0ubWVyZ2VGbGFncyhOb2RlVXNlZEFz
VmFsdWUpOworICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSBQdXRCeUlkOgorICAg
ICAgICBjYXNlIFB1dEJ5SWREaXJlY3Q6CisgICAgICAgICAgICBjaGFuZ2VkIHw9IG1fZ3JhcGhb
bm9kZS5jaGlsZDEoKV0ubWVyZ2VGbGFncyhOb2RlVXNlZEFzVmFsdWUpOworICAgICAgICAgICAg
Y2hhbmdlZCB8PSBtX2dyYXBoW25vZGUuY2hpbGQyKCldLm1lcmdlRmxhZ3MoTm9kZVVzZWRBc1Zh
bHVlKTsKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2UgUHV0QnlPZmZzZXQ6Cisg
ICAgICAgICAgICBjaGFuZ2VkIHw9IG1fZ3JhcGhbbm9kZS5jaGlsZDEoKV0ubWVyZ2VGbGFncyhO
b2RlVXNlZEFzVmFsdWUpOworICAgICAgICAgICAgY2hhbmdlZCB8PSBtX2dyYXBoW25vZGUuY2hp
bGQzKCldLm1lcmdlRmxhZ3MoTm9kZVVzZWRBc1ZhbHVlKTsKKyAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICAgICAgCisgICAgICAgIGNhc2UgUGhpOgogICAgICAgICAgICAgYnJlYWs7CiAKICNp
Zm5kZWYgTkRFQlVHCiAgICAgICAgIC8vIFRoZXNlIGdldCBpZ25vcmVkIGJlY2F1c2UgdGhleSBk
b24ndCByZXR1cm4gYW55dGhpbmcuCi0gICAgICAgIGNhc2UgUHV0U2NvcGVkVmFyOgogICAgICAg
ICBjYXNlIERGRzo6SnVtcDoKICAgICAgICAgY2FzZSBCcmFuY2g6CiAgICAgICAgIGNhc2UgQnJl
YWtwb2ludDoKLSAgICAgICAgY2FzZSBSZXR1cm46CiAgICAgICAgIGNhc2UgQ2hlY2tIYXNJbnN0
YW5jZToKLSAgICAgICAgY2FzZSBQaGk6Ci0gICAgICAgIGNhc2UgVGhyb3c6CiAgICAgICAgIGNh
c2UgVGhyb3dSZWZlcmVuY2VFcnJvcjoKICAgICAgICAgY2FzZSBGb3JjZU9TUkV4aXQ6CiAgICAg
ICAgIGNhc2UgU2V0QXJndW1lbnQ6Ci0gICAgICAgIGNhc2UgUHV0QnlWYWxBbGlhczoKLSAgICAg
ICAgY2FzZSBQdXRCeUlkOgotICAgICAgICBjYXNlIFB1dEJ5SWREaXJlY3Q6CiAgICAgICAgIGNh
c2UgQ2hlY2tTdHJ1Y3R1cmU6CiAgICAgICAgIGNhc2UgQ2hlY2tGdW5jdGlvbjoKICAgICAgICAg
Y2FzZSBQdXRTdHJ1Y3R1cmU6Ci0gICAgICAgIGNhc2UgUHV0QnlPZmZzZXQ6CiAgICAgICAgIGNh
c2UgVGVhck9mZkFjdGl2YXRpb246Ci0gICAgICAgICAgICBjaGFuZ2VkIHw9IG1lcmdlRGVmYXVs
dEFyaXRoRmxhZ3Mobm9kZSwgZmxhZ3MpOworICAgICAgICAgICAgY2hhbmdlZCB8PSBtZXJnZURl
ZmF1bHRGbGFncyhub2RlKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgCiAgICAg
ICAgIC8vIFRoZXNlIGdldHMgaWdub3JlZCBiZWNhdXNlIGl0IGRvZXNuJ3QgZG8gYW55dGhpbmcu
CkBAIC02MDIsNyArNjMzLDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIGJyZWFrOwogI2Vsc2UK
ICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIGNoYW5nZWQgfD0gbWVyZ2VEZWZhdWx0QXJp
dGhGbGFncyhub2RlLCBmbGFncyk7CisgICAgICAgICAgICBjaGFuZ2VkIHw9IG1lcmdlRGVmYXVs
dEZsYWdzKG5vZGUpOwogICAgICAgICAgICAgYnJlYWs7CiAjZW5kaWYKICAgICAgICAgfQpAQCAt
NjEzLDI0ICs2NDQsMjUgQEAgcHJpdmF0ZToKICAgICAgICAgCiAgICAgICAgIG1fY2hhbmdlZCB8
PSBjaGFuZ2VkOwogICAgIH0KLSAgICAKLSAgICBib29sIG1lcmdlRGVmYXVsdEFyaXRoRmxhZ3Mo
Tm9kZSYgbm9kZSwgTm9kZUZsYWdzIGZsYWdzKQorICAgICAgICAKKyAgICBib29sIG1lcmdlRGVm
YXVsdEZsYWdzKE5vZGUmIG5vZGUpCiAgICAgewogICAgICAgICBib29sIGNoYW5nZWQgPSBmYWxz
ZTsKLSAgICAgICAgZmxhZ3MgfD0gTm9kZVVzZWRBc051bWJlciB8IE5vZGVOZWVkc05lZ1plcm87
CiAgICAgICAgIGlmIChub2RlLmZsYWdzKCkgJiBOb2RlSGFzVmFyQXJncykgewotICAgICAgICAg
ICAgZm9yICh1bnNpZ25lZCBjaGlsZElkeCA9IG5vZGUuZmlyc3RDaGlsZCgpOyBjaGlsZElkeCA8
IG5vZGUuZmlyc3RDaGlsZCgpICsgbm9kZS5udW1DaGlsZHJlbigpOyBjaGlsZElkeCsrKQotICAg
ICAgICAgICAgICAgIGNoYW5nZWQgfD0gbV9ncmFwaFttX2dyYXBoLm1fdmFyQXJnQ2hpbGRyZW5b
Y2hpbGRJZHhdXS5tZXJnZUZsYWdzKGZsYWdzKTsKKyAgICAgICAgICAgIGZvciAodW5zaWduZWQg
Y2hpbGRJZHggPSBub2RlLmZpcnN0Q2hpbGQoKTsKKyAgICAgICAgICAgICAgICAgY2hpbGRJZHgg
PCBub2RlLmZpcnN0Q2hpbGQoKSArIG5vZGUubnVtQ2hpbGRyZW4oKTsKKyAgICAgICAgICAgICAg
ICAgY2hpbGRJZHgrKykKKyAgICAgICAgICAgICAgICBjaGFuZ2VkIHw9IG1fZ3JhcGhbbV9ncmFw
aC5tX3ZhckFyZ0NoaWxkcmVuW2NoaWxkSWR4XV0ubWVyZ2VGbGFncyhOb2RlVXNlZEFzVmFsdWUp
OwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgaWYgKCFub2RlLmNoaWxkMSgpKQogICAg
ICAgICAgICAgICAgIHJldHVybiBjaGFuZ2VkOwotICAgICAgICAgICAgY2hhbmdlZCB8PSBtX2dy
YXBoW25vZGUuY2hpbGQxKCldLm1lcmdlRmxhZ3MoZmxhZ3MpOworICAgICAgICAgICAgY2hhbmdl
ZCB8PSBtX2dyYXBoW25vZGUuY2hpbGQxKCldLm1lcmdlRmxhZ3MoTm9kZVVzZWRBc1ZhbHVlKTsK
ICAgICAgICAgICAgIGlmICghbm9kZS5jaGlsZDIoKSkKICAgICAgICAgICAgICAgICByZXR1cm4g
Y2hhbmdlZDsKLSAgICAgICAgICAgIGNoYW5nZWQgfD0gbV9ncmFwaFtub2RlLmNoaWxkMigpXS5t
ZXJnZUZsYWdzKGZsYWdzKTsKKyAgICAgICAgICAgIGNoYW5nZWQgfD0gbV9ncmFwaFtub2RlLmNo
aWxkMigpXS5tZXJnZUZsYWdzKE5vZGVVc2VkQXNWYWx1ZSk7CiAgICAgICAgICAgICBpZiAoIW5v
ZGUuY2hpbGQzKCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGNoYW5nZWQ7Ci0gICAgICAgICAg
ICBjaGFuZ2VkIHw9IG1fZ3JhcGhbbm9kZS5jaGlsZDMoKV0ubWVyZ2VGbGFncyhmbGFncyk7Cisg
ICAgICAgICAgICBjaGFuZ2VkIHw9IG1fZ3JhcGhbbm9kZS5jaGlsZDMoKV0ubWVyZ2VGbGFncyhO
b2RlVXNlZEFzVmFsdWUpOwogICAgICAgICB9CiAgICAgICAgIHJldHVybiBjaGFuZ2VkOwogICAg
IH0KQEAgLTY1Miw3ICs2ODQsNyBAQCBwcml2YXRlOgogICAgICAgICBmb3IgKG1fY29tcGlsZUlu
ZGV4ID0gbV9ncmFwaC5zaXplKCk7IG1fY29tcGlsZUluZGV4LS0gPiAwOykKICAgICAgICAgICAg
IHByb3BhZ2F0ZShtX2dyYXBoW21fY29tcGlsZUluZGV4XSk7CiAgICAgfQotCisgICAgCiAgICAg
dm9pZCB2b3RlKEVkZ2Ugbm9kZVVzZSwgVmFyaWFibGVBY2Nlc3NEYXRhOjpCYWxsb3QgYmFsbG90
KQogICAgIHsKICAgICAgICAgc3dpdGNoIChtX2dyYXBoW25vZGVVc2VdLm9wKCkpIHsKQEAgLTY3
MSw3ICs3MDMsOSBAQCBwcml2YXRlOgogICAgIHZvaWQgdm90ZShOb2RlJiBub2RlLCBWYXJpYWJs
ZUFjY2Vzc0RhdGE6OkJhbGxvdCBiYWxsb3QpCiAgICAgewogICAgICAgICBpZiAobm9kZS5mbGFn
cygpICYgTm9kZUhhc1ZhckFyZ3MpIHsKLSAgICAgICAgICAgIGZvciAodW5zaWduZWQgY2hpbGRJ
ZHggPSBub2RlLmZpcnN0Q2hpbGQoKTsgY2hpbGRJZHggPCBub2RlLmZpcnN0Q2hpbGQoKSArIG5v
ZGUubnVtQ2hpbGRyZW4oKTsgY2hpbGRJZHgrKykKKyAgICAgICAgICAgIGZvciAodW5zaWduZWQg
Y2hpbGRJZHggPSBub2RlLmZpcnN0Q2hpbGQoKTsKKyAgICAgICAgICAgICAgICAgY2hpbGRJZHgg
PCBub2RlLmZpcnN0Q2hpbGQoKSArIG5vZGUubnVtQ2hpbGRyZW4oKTsKKyAgICAgICAgICAgICAg
ICAgY2hpbGRJZHgrKykKICAgICAgICAgICAgICAgICB2b3RlKG1fZ3JhcGgubV92YXJBcmdDaGls
ZHJlbltjaGlsZElkeF0sIGJhbGxvdCk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0K
QEAgLTcyNiw3ICs3NjAsOSBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIAogICAgICAgICAg
ICAgICAgIFZhcmlhYmxlQWNjZXNzRGF0YTo6QmFsbG90IGJhbGxvdDsKICAgICAgICAgICAgICAg
ICAKLSAgICAgICAgICAgICAgICBpZiAoaXNOdW1iZXJQcmVkaWN0aW9uKGxlZnQpICYmIGlzTnVt
YmVyUHJlZGljdGlvbihyaWdodCkgJiYgIShOb2RlOjpzaG91bGRTcGVjdWxhdGVJbnRlZ2VyKG1f
Z3JhcGhbbm9kZS5jaGlsZDEoKV0sIG1fZ3JhcGhbbm9kZS5jaGlsZDEoKV0pICYmIG5vZGUuY2Fu
U3BlY3VsYXRlSW50ZWdlcigpKSkKKyAgICAgICAgICAgICAgICBpZiAoaXNOdW1iZXJQcmVkaWN0
aW9uKGxlZnQpICYmIGlzTnVtYmVyUHJlZGljdGlvbihyaWdodCkKKyAgICAgICAgICAgICAgICAg
ICAgJiYgIShOb2RlOjpzaG91bGRTcGVjdWxhdGVJbnRlZ2VyKG1fZ3JhcGhbbm9kZS5jaGlsZDEo
KV0sIG1fZ3JhcGhbbm9kZS5jaGlsZDEoKV0pCisgICAgICAgICAgICAgICAgICAgICAgICAgJiYg
bm9kZS5jYW5TcGVjdWxhdGVJbnRlZ2VyKCkpKQogICAgICAgICAgICAgICAgICAgICBiYWxsb3Qg
PSBWYXJpYWJsZUFjY2Vzc0RhdGE6OlZvdGVEb3VibGU7CiAgICAgICAgICAgICAgICAgZWxzZQog
ICAgICAgICAgICAgICAgICAgICBiYWxsb3QgPSBWYXJpYWJsZUFjY2Vzc0RhdGE6OlZvdGVWYWx1
ZTsKQEAgLTczOCw3ICs3NzQsOCBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIAogICAgICAg
ICAgICAgY2FzZSBBcml0aEFiczoKICAgICAgICAgICAgICAgICBWYXJpYWJsZUFjY2Vzc0RhdGE6
OkJhbGxvdCBiYWxsb3Q7Ci0gICAgICAgICAgICAgICAgaWYgKCEobV9ncmFwaFtub2RlLmNoaWxk
MSgpXS5zaG91bGRTcGVjdWxhdGVJbnRlZ2VyKCkgJiYgbm9kZS5jYW5TcGVjdWxhdGVJbnRlZ2Vy
KCkpKQorICAgICAgICAgICAgICAgIGlmICghKG1fZ3JhcGhbbm9kZS5jaGlsZDEoKV0uc2hvdWxk
U3BlY3VsYXRlSW50ZWdlcigpCisgICAgICAgICAgICAgICAgICAgICAgJiYgbm9kZS5jYW5TcGVj
dWxhdGVJbnRlZ2VyKCkpKQogICAgICAgICAgICAgICAgICAgICBiYWxsb3QgPSBWYXJpYWJsZUFj
Y2Vzc0RhdGE6OlZvdGVEb3VibGU7CiAgICAgICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAg
ICAgICAgICBiYWxsb3QgPSBWYXJpYWJsZUFjY2Vzc0RhdGE6OlZvdGVWYWx1ZTsKQEAgLTc4OCw3
ICs4MjUsOCBAQCBwcml2YXRlOgogICAgICAgICBjYXNlIEdldEJ5SWQ6IHsKICAgICAgICAgICAg
IGlmICghaXNJbnQzMlByZWRpY3Rpb24obV9ncmFwaFttX2NvbXBpbGVJbmRleF0ucHJlZGljdGlv
bigpKSkKICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGlmIChjb2RlQmxvY2so
KS0+aWRlbnRpZmllcihub2RlLmlkZW50aWZpZXJOdW1iZXIoKSkgIT0gZ2xvYmFsRGF0YSgpLnBy
b3BlcnR5TmFtZXMtPmxlbmd0aCkKKyAgICAgICAgICAgIGlmIChjb2RlQmxvY2soKS0+aWRlbnRp
Zmllcihub2RlLmlkZW50aWZpZXJOdW1iZXIoKSkKKyAgICAgICAgICAgICAgICAhPSBnbG9iYWxE
YXRhKCkucHJvcGVydHlOYW1lcy0+bGVuZ3RoKQogICAgICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICAgICAgYm9vbCBpc0FycmF5ID0gaXNBcnJheVByZWRpY3Rpb24obV9ncmFwaFtub2RlLmNo
aWxkMSgpXS5wcmVkaWN0aW9uKCkpOwogICAgICAgICAgICAgYm9vbCBpc1N0cmluZyA9IGlzU3Ry
aW5nUHJlZGljdGlvbihtX2dyYXBoW25vZGUuY2hpbGQxKCldLnByZWRpY3Rpb24oKSk7CkBAIC04
MDIsNyArODQwLDkgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIGJvb2wgaXNVaW50MzJBcnJheSA9
IG1fZ3JhcGhbbm9kZS5jaGlsZDEoKV0uc2hvdWxkU3BlY3VsYXRlVWludDMyQXJyYXkoKTsKICAg
ICAgICAgICAgIGJvb2wgaXNGbG9hdDMyQXJyYXkgPSBtX2dyYXBoW25vZGUuY2hpbGQxKCldLnNo
b3VsZFNwZWN1bGF0ZUZsb2F0MzJBcnJheSgpOwogICAgICAgICAgICAgYm9vbCBpc0Zsb2F0NjRB
cnJheSA9IG1fZ3JhcGhbbm9kZS5jaGlsZDEoKV0uc2hvdWxkU3BlY3VsYXRlRmxvYXQ2NEFycmF5
KCk7Ci0gICAgICAgICAgICBpZiAoIWlzQXJyYXkgJiYgIWlzU3RyaW5nICYmICFpc0J5dGVBcnJh
eSAmJiAhaXNJbnQ4QXJyYXkgJiYgIWlzSW50MTZBcnJheSAmJiAhaXNJbnQzMkFycmF5ICYmICFp
c1VpbnQ4QXJyYXkgJiYgIWlzVWludDhDbGFtcGVkQXJyYXkgJiYgIWlzVWludDE2QXJyYXkgJiYg
IWlzVWludDMyQXJyYXkgJiYgIWlzRmxvYXQzMkFycmF5ICYmICFpc0Zsb2F0NjRBcnJheSkKKyAg
ICAgICAgICAgIGlmICghaXNBcnJheSAmJiAhaXNTdHJpbmcgJiYgIWlzQnl0ZUFycmF5ICYmICFp
c0ludDhBcnJheSAmJiAhaXNJbnQxNkFycmF5CisgICAgICAgICAgICAgICAgJiYgIWlzSW50MzJB
cnJheSAmJiAhaXNVaW50OEFycmF5ICYmICFpc1VpbnQ4Q2xhbXBlZEFycmF5ICYmICFpc1VpbnQx
NkFycmF5CisgICAgICAgICAgICAgICAgJiYgIWlzVWludDMyQXJyYXkgJiYgIWlzRmxvYXQzMkFy
cmF5ICYmICFpc0Zsb2F0NjRBcnJheSkKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
ICAgIAogI2lmIERGR19FTkFCTEUoREVCVUdfUFJPUEFHQVRJT05fVkVSQk9TRSkKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVmFyaWFibGVBY2Nlc3NEYXRhLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdWYXJpYWJsZUFjY2Vzc0RhdGEuaAko
cmV2aXNpb24gMTExNzk3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdWYXJpYWJs
ZUFjY2Vzc0RhdGEuaAkod29ya2luZyBjb3B5KQpAQCAtMTA0LDggKzEwNCwzMiBAQCBwdWJsaWM6
CiAgICAgCiAgICAgYm9vbCBzaG91bGRVc2VEb3VibGVGb3JtYXRBY2NvcmRpbmdUb1ZvdGUoKQog
ICAgIHsKKyAgICAgICAgLy8gV2UgZG9uJ3Qgc3VwcG9ydCB0aGlzIGZhY2lsaXR5IGZvciBhcmd1
bWVudHMsIHlldC4KICAgICAgICAgLy8gRklYTUU6IG1ha2UgdGhpcyB3b3JrIGZvciBhcmd1bWVu
dHMuCi0gICAgICAgIHJldHVybiAhb3BlcmFuZElzQXJndW1lbnQob3BlcmFuZCgpKSAmJiAoKGlz
TnVtYmVyUHJlZGljdGlvbihwcmVkaWN0aW9uKCkpICYmIGRvdWJsZVZvdGVSYXRpbygpID49IE9w
dGlvbnM6OmRvdWJsZVZvdGVSYXRpb0ZvckRvdWJsZUZvcm1hdCkgfHwgaXNEb3VibGVQcmVkaWN0
aW9uKHByZWRpY3Rpb24oKSkpOworICAgICAgICBpZiAob3BlcmFuZElzQXJndW1lbnQob3BlcmFu
ZCgpKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgCisgICAgICAgIC8vIElm
IHRoZSB2YXJpYWJsZSBpcyBub3QgYSBudW1iZXIgcHJlZGljdGlvbiwgdGhlbiB0aGlzIGRvZXNu
J3QKKyAgICAgICAgLy8gbWFrZSBhbnkgc2Vuc2UuCisgICAgICAgIGlmICghaXNOdW1iZXJQcmVk
aWN0aW9uKHByZWRpY3Rpb24oKSkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAg
IAorICAgICAgICAvLyBJZiB0aGUgdmFyaWFibGUgaXMgcHJlZGljdGVkIHRvIGhvbGQgb25seSBk
b3VibGVzLCB0aGVuIGl0J3MgYQorICAgICAgICAvLyBuby1icmFpbmVyOiBpdCBzaG91bGQgYmUg
Zm9ybWF0dGVkIGFzIGEgZG91YmxlLgorICAgICAgICBpZiAoaXNEb3VibGVQcmVkaWN0aW9uKHBy
ZWRpY3Rpb24oKSkpCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgCisgICAgICAg
IC8vIElmIHRoZSB2YXJpYWJsZSBpcyBrbm93biB0byBiZSB1c2VkIGFzIGFuIGludGVnZXIsIHRo
ZW4gYmUgc2FmZSAtCisgICAgICAgIC8vIGRvbid0IGZvcmNlIGl0IHRvIGJlIGEgZG91YmxlLgor
ICAgICAgICBpZiAoZmxhZ3MoKSAmIE5vZGVVc2VkQXNJbnQpCisgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgICAgIAorICAgICAgICAvLyBJZiB0aGUgdmFyaWFibGUgaGFzIGJlZW4gdm90
ZWQgdG8gYmVjb21lIGEgZG91YmxlLCB0aGVuIG1ha2UgaXQgYQorICAgICAgICAvLyBkb3VibGUu
CisgICAgICAgIGlmIChkb3VibGVWb3RlUmF0aW8oKSA+PSBPcHRpb25zOjpkb3VibGVWb3RlUmF0
aW9Gb3JEb3VibGVGb3JtYXQpCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgCisg
ICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAgICAgCiAgICAgYm9vbCBzaG91bGRVc2VEb3Vi
bGVGb3JtYXQoKQo=
</data>
<flag name="review"
          id="137659"
          type_id="1"
          status="+"
          setter="oliver"
    />
          </attachment>
      

    </bug>

</bugzilla>