<?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>68784</bug_id>
          
          <creation_ts>2011-09-25 17:47:23 -0700</creation_ts>
          <short_desc>DFG static prediction code is no longer needed and should be removed</short_desc>
          <delta_ts>2011-09-25 19:24:28 -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>
          
          <blocked>68593</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Filip Pizlo">fpizlo</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>fpizlo</cc>
    
    <cc>oliver</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>472929</commentid>
    <comment_count>0</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2011-09-25 17:47:23 -0700</bug_when>
    <thetext>The DFG originally used static predictions to drive speculation and optimization.  But now the DFG has value profiles, rare case profiles, and the old JIT&apos;s structure stub infos and method call link infos to dynamic predictions, which have been found to do a better job of driving speculation and optimization.  At this point, the static prediction code is just getting in the way and should be removed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>472933</commentid>
    <comment_count>1</comment_count>
      <attachid>108619</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2011-09-25 18:08:35 -0700</bug_when>
    <thetext>Created attachment 108619
the patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>472945</commentid>
    <comment_count>2</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2011-09-25 19:24:28 -0700</bug_when>
    <thetext>Landed in r95930.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>108619</attachid>
            <date>2011-09-25 18:08:35 -0700</date>
            <delta_ts>2011-09-25 18:12:39 -0700</delta_ts>
            <desc>the patch</desc>
            <filename>nostaticpredict_patch_1.diff</filename>
            <type>text/plain</type>
            <size>65415</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gOTU5MjcpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsOTIgQEAK
KzIwMTEtMDktMjUgIEZpbGlwIFBpemxvICA8ZnBpemxvQGFwcGxlLmNvbT4KKworICAgICAgICBE
Rkcgc3RhdGljIHByZWRpY3Rpb24gY29kZSBpcyBubyBsb25nZXIgbmVlZGVkIGFuZCBzaG91bGQg
YmUgcmVtb3ZlZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9Njg3ODQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKyAgICAgICAg
CisgICAgICAgIFRoaXMgZ2V0cyByaWQgb2Ygc3RhdGljIHByZWRpY3Rpb24gY29kZSwgYW5kIGVu
c3VyZXMgdGhhdCB3ZSBkbyBub3QKKyAgICAgICAgdHJ5IHRvIGNvbXBpbGUgY29kZSB3aGVyZSBk
eW5hbWljIHByZWRpY3Rpb25zIGFyZSBub3QgYXZhaWxhYmxlLgorICAgICAgICBUaGlzIGlzIGFj
Y29tcGxpc2hlZCBieSBpbW1lZGlhdGVseSBwZXJmb3JtaW5nIGFuIE9TUiBleGl0IHdoZXJldmVy
CisgICAgICAgIGEgdmFsdWUgaXMgcmV0cmlldmVkIGZvciB3aGljaCBubyBwcmVkaWN0aW9ucyBl
eGlzdC4KKyAgICAgICAgCisgICAgICAgIFRoaXMgYWxzbyBhZGRzIHZhbHVlIHByb2ZpbGluZyBm
b3IgdGhpcyBvbiBmdW5jdGlvbnMgdXNlZCBmb3IgY2FsbHMuCisgICAgICAgIAorICAgICAgICBU
aGUgaGV1cmlzdGljcyBmb3IgZGVjaWRpbmcgd2hlbiB0byBvcHRpbWl6ZSBjb2RlIGFyZSBhbHNv
IHR3ZWFrZWQsCisgICAgICAgIHNpbmNlIGl0IGlzIG5vdyBwcm9maXRhYmxlIHRvIG9wdGltaXpl
IHNvb25lci4gVGhpcyBtYXkgbmVlZCB0byBiZQorICAgICAgICB0d2Vha2VkIGZ1cnRoZXIsIGJ1
dCB0aGlzIHBhdGNoIG9ubHkgbWFrZXMgbWluaW1hbCBjaGFuZ2VzLgorICAgICAgICAKKyAgICAg
ICAgVGhpcyByZXN1bHRzIGluIGEgMTYlIHNwZWVkLXVwIG9uIEtyYWtlbi9haS1hc3RhciwgbGVh
ZGluZyB0byBhIDMlCisgICAgICAgIG92ZXJhbGwgd2luIG9uIEtyYWtlbi4gIEl0J3MgbmV1dHJh
bCBlbHNld2hlcmUuCisKKyAgICAgICAgKiBieXRlY29kZS9Db2RlQmxvY2suY3BwOgorICAgICAg
ICAoSlNDOjpDb2RlQmxvY2s6OnNob3VsZE9wdGltaXplTm93KToKKyAgICAgICAgKEpTQzo6Q29k
ZUJsb2NrOjpkdW1wVmFsdWVQcm9maWxlcyk6CisgICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2Nr
Lmg6CisgICAgICAgICogYnl0ZWNvZGUvUHJlZGljdGVkVHlwZS5jcHA6CisgICAgICAgIChKU0M6
OnByZWRpY3Rpb25Ub1N0cmluZyk6CisgICAgICAgICogYnl0ZWNvZGUvUHJlZGljdGVkVHlwZS5o
OgorICAgICAgICAoSlNDOjppc0NlbGxQcmVkaWN0aW9uKToKKyAgICAgICAgKEpTQzo6aXNPYmpl
Y3RQcmVkaWN0aW9uKToKKyAgICAgICAgKEpTQzo6aXNGaW5hbE9iamVjdFByZWRpY3Rpb24pOgor
ICAgICAgICAoSlNDOjppc1N0cmluZ1ByZWRpY3Rpb24pOgorICAgICAgICAoSlNDOjppc0FycmF5
UHJlZGljdGlvbik6CisgICAgICAgIChKU0M6OmlzSW50MzJQcmVkaWN0aW9uKToKKyAgICAgICAg
KEpTQzo6aXNEb3VibGVQcmVkaWN0aW9uKToKKyAgICAgICAgKEpTQzo6aXNOdW1iZXJQcmVkaWN0
aW9uKToKKyAgICAgICAgKEpTQzo6aXNCb29sZWFuUHJlZGljdGlvbik6CisgICAgICAgIChKU0M6
Om1lcmdlUHJlZGljdGlvbnMpOgorICAgICAgICAqIGJ5dGVjb2RlL1ByZWRpY3Rpb25UcmFja2Vy
Lmg6CisgICAgICAgIChKU0M6OlByZWRpY3Rpb25UcmFja2VyOjpwcmVkaWN0QXJndW1lbnQpOgor
ICAgICAgICAoSlNDOjpQcmVkaWN0aW9uVHJhY2tlcjo6cHJlZGljdCk6CisgICAgICAgIChKU0M6
OlByZWRpY3Rpb25UcmFja2VyOjpwcmVkaWN0R2xvYmFsVmFyKToKKyAgICAgICAgKiBieXRlY29k
ZS9WYWx1ZVByb2ZpbGUuY3BwOgorICAgICAgICAoSlNDOjpWYWx1ZVByb2ZpbGU6OmNvbXB1dGVV
cGRhdGVkUHJlZGljdGlvbik6CisgICAgICAgICogZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcDoK
KyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6c2V0KToKKyAgICAgICAgKEpTQzo6
REZHOjpCeXRlQ29kZVBhcnNlcjo6YWRkQ2FsbCk6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNv
ZGVQYXJzZXI6OmdldFByZWRpY3Rpb24pOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFy
c2VyOjpwYXJzZUJsb2NrKToKKyAgICAgICAgKiBkZmcvREZHR3JhcGguY3BwOgorICAgICAgICAo
SlNDOjpERkc6OkdyYXBoOjpwcmVkaWN0QXJndW1lbnRUeXBlcyk6CisgICAgICAgICogZGZnL0RG
R0dyYXBoLmg6CisgICAgICAgIChKU0M6OkRGRzo6R3JhcGg6OnByZWRpY3QpOgorICAgICAgICAo
SlNDOjpERkc6OkdyYXBoOjpwcmVkaWN0R2xvYmFsVmFyKToKKyAgICAgICAgKEpTQzo6REZHOjpH
cmFwaDo6Z2V0TWV0aG9kQ2hlY2tQcmVkaWN0aW9uKToKKyAgICAgICAgKEpTQzo6REZHOjpHcmFw
aDo6Z2V0SlNDb25zdGFudFByZWRpY3Rpb24pOgorICAgICAgICAoSlNDOjpERkc6OkdyYXBoOjpn
ZXRQcmVkaWN0aW9uKToKKyAgICAgICAgKiBkZmcvREZHSklUQ29kZUdlbmVyYXRvci5jcHA6Cisg
ICAgICAgIChKU0M6OkRGRzo6SklUQ29kZUdlbmVyYXRvcjo6d3JpdGVCYXJyaWVyKToKKyAgICAg
ICAgKEpTQzo6REZHOjpKSVRDb2RlR2VuZXJhdG9yOjplbWl0QnJhbmNoKToKKyAgICAgICAgKiBk
ZmcvREZHSklUQ29tcGlsZXIuaDoKKyAgICAgICAgKEpTQzo6REZHOjpKSVRDb21waWxlcjo6Z2V0
UHJlZGljdGlvbik6CisgICAgICAgICogZGZnL0RGR05vZGUuaDoKKyAgICAgICAgKEpTQzo6REZH
OjpOb2RlOjp2YWx1ZU9mSlNDb25zdGFudE5vZGUpOgorICAgICAgICAoSlNDOjpERkc6Ok5vZGU6
OmlzSW50MzJDb25zdGFudCk6CisgICAgICAgIChKU0M6OkRGRzo6Tm9kZTo6aXNEb3VibGVDb25z
dGFudCk6CisgICAgICAgIChKU0M6OkRGRzo6Tm9kZTo6aXNOdW1iZXJDb25zdGFudCk6CisgICAg
ICAgIChKU0M6OkRGRzo6Tm9kZTo6aXNCb29sZWFuQ29uc3RhbnQpOgorICAgICAgICAoSlNDOjpE
Rkc6Ok5vZGU6OnByZWRpY3QpOgorICAgICAgICAqIGRmZy9ERkdQcm9wYWdhdG9yLmNwcDoKKyAg
ICAgICAgKEpTQzo6REZHOjpQcm9wYWdhdG9yOjpQcm9wYWdhdG9yKToKKyAgICAgICAgKEpTQzo6
REZHOjpQcm9wYWdhdG9yOjpwcm9wYWdhdGVOb2RlUHJlZGljdGlvbnMpOgorICAgICAgICAoSlND
OjpERkc6OlByb3BhZ2F0b3I6OmZpeHVwTm9kZSk6CisgICAgICAgIChKU0M6OkRGRzo6UHJvcGFn
YXRvcjo6aXNQcmVkaWN0ZWROdW1lcmljYWwpOgorICAgICAgICAoSlNDOjpERkc6OlByb3BhZ2F0
b3I6OmxvZ2ljYWxOb3RJc1B1cmUpOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVC5j
cHA6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUpOgorICAgICAg
ICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0
aXZlSklUOjpzaG91bGRTcGVjdWxhdGVJbnRlZ2VyKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVj
dWxhdGl2ZUpJVDo6c2hvdWxkU3BlY3VsYXRlRG91YmxlKToKKyAgICAgICAgKEpTQzo6REZHOjpT
cGVjdWxhdGl2ZUpJVDo6c2hvdWxkU3BlY3VsYXRlTnVtYmVyKToKKyAgICAgICAgKEpTQzo6REZH
OjpTcGVjdWxhdGl2ZUpJVDo6c2hvdWxkTm90U3BlY3VsYXRlSW50ZWdlcik6CisgICAgICAgIChK
U0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OnNob3VsZFNwZWN1bGF0ZUZpbmFsT2JqZWN0KToKKyAg
ICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6c2hvdWxkU3BlY3VsYXRlQXJyYXkpOgor
ICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpzaG91bGRTcGVjdWxhdGVPYmplY3Qp
OgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpzaG91bGRTcGVjdWxhdGVDZWxs
KToKKyAgICAgICAgKiBqaXQvSklULmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjpwcml2YXRlQ29t
cGlsZSk6CisKIDIwMTEtMDktMjUgIEZpbGlwIFBpemxvICA8ZnBpemxvQGFwcGxlLmNvbT4KIAog
ICAgICAgICBERkcgSklUIENvbnN0cnVjdCBvcGNvZGUgdGFrZXMgYSB0aGlzIGFyZ3VtZW50IGV2
ZW4gdGhvdWdoIGl0J3MKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2Rl
QmxvY2suY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9D
b2RlQmxvY2suY3BwCShyZXZpc2lvbiA5NTkyNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9Db2RlQmxvY2suY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xOTk4LDggKzE5OTgsOCBA
QCBib29sIENvZGVCbG9jazo6c2hvdWxkT3B0aW1pemVOb3coKQogICAgIHByaW50ZigiUHJvZmls
ZSBob3RuZXNzOiAlbGYsICVsZlxuIiwgKGRvdWJsZSludW1iZXJPZkxpdmVOb25Bcmd1bWVudFZh
bHVlUHJvZmlsZXMgLyBudW1iZXJPZk5vbkFyZ3VtZW50VmFsdWVQcm9maWxlcywgKGRvdWJsZSlu
dW1iZXJPZlNhbXBsZXNJblByb2ZpbGVzIC8gVmFsdWVQcm9maWxlOjpudW1iZXJPZkJ1Y2tldHMg
LyBudW1iZXJPZlZhbHVlUHJvZmlsZXMoKSk7CiAjZW5kaWYKIAotICAgIGlmICgoIW51bWJlck9m
Tm9uQXJndW1lbnRWYWx1ZVByb2ZpbGVzIHx8IChkb3VibGUpbnVtYmVyT2ZMaXZlTm9uQXJndW1l
bnRWYWx1ZVByb2ZpbGVzIC8gbnVtYmVyT2ZOb25Bcmd1bWVudFZhbHVlUHJvZmlsZXMgPj0gMC43
NSkKLSAgICAgICAgJiYgKCFudW1iZXJPZlZhbHVlUHJvZmlsZXMoKSB8fCAoZG91YmxlKW51bWJl
ck9mU2FtcGxlc0luUHJvZmlsZXMgLyBWYWx1ZVByb2ZpbGU6Om51bWJlck9mQnVja2V0cyAvIG51
bWJlck9mVmFsdWVQcm9maWxlcygpID49IDAuNSkpCisgICAgaWYgKCghbnVtYmVyT2ZOb25Bcmd1
bWVudFZhbHVlUHJvZmlsZXMgfHwgKGRvdWJsZSludW1iZXJPZkxpdmVOb25Bcmd1bWVudFZhbHVl
UHJvZmlsZXMgLyBudW1iZXJPZk5vbkFyZ3VtZW50VmFsdWVQcm9maWxlcyA+PSAwLjUpCisgICAg
ICAgICYmICghbnVtYmVyT2ZWYWx1ZVByb2ZpbGVzKCkgfHwgKGRvdWJsZSludW1iZXJPZlNhbXBs
ZXNJblByb2ZpbGVzIC8gVmFsdWVQcm9maWxlOjpudW1iZXJPZkJ1Y2tldHMgLyBudW1iZXJPZlZh
bHVlUHJvZmlsZXMoKSA+PSAwLjI1KSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgCiAgICAg
bV9vcHRpbWl6YXRpb25EZWxheUNvdW50ZXIrKzsKQEAgLTIwMjYsNyArMjAyNiw3IEBAIHZvaWQg
Q29kZUJsb2NrOjpkdW1wVmFsdWVQcm9maWxlcygpCiAgICAgICAgIFZhbHVlUHJvZmlsZSogcHJv
ZmlsZSA9IHZhbHVlUHJvZmlsZShpKTsKICAgICAgICAgaWYgKHByb2ZpbGUtPm1fYnl0ZWNvZGVP
ZmZzZXQgPCAwKSB7CiAgICAgICAgICAgICBBU1NFUlQocHJvZmlsZS0+bV9ieXRlY29kZU9mZnNl
dCA9PSAtMSk7Ci0gICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIiAgIGFyZyA9ICV1OiAiLCBp
ICsgMSk7CisgICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIiAgIGFyZyA9ICV1OiAiLCBpKTsK
ICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIiAgIGJjID0gJWQ6
ICIsIHByb2ZpbGUtPm1fYnl0ZWNvZGVPZmZzZXQpOwogICAgICAgICBpZiAoIXByb2ZpbGUtPm51
bWJlck9mU2FtcGxlcygpICYmIHByb2ZpbGUtPm1fcHJlZGljdGlvbiA9PSBQcmVkaWN0Tm9uZSkg
ewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaAkocmV2
aXNpb24gOTU5MjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2Nr
LmgJKHdvcmtpbmcgY29weSkKQEAgLTQ5OCwxMCArNDk4LDEwIEBAIG5hbWVzcGFjZSBKU0Mgewog
ICAgICAgICB9CiAgICAgICAgIFZhbHVlUHJvZmlsZSogdmFsdWVQcm9maWxlRm9yQXJndW1lbnQo
aW50IGFyZ3VtZW50SW5kZXgpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGludCBpbmRleCA9IGFy
Z3VtZW50SW5kZXggLSAxOworICAgICAgICAgICAgaW50IGluZGV4ID0gYXJndW1lbnRJbmRleDsK
ICAgICAgICAgICAgIGlmIChzdGF0aWNfY2FzdDx1bnNpZ25lZD4oaW5kZXgpID49IG1fdmFsdWVQ
cm9maWxlcy5zaXplKCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIDA7Ci0gICAgICAgICAgICBW
YWx1ZVByb2ZpbGUqIHJlc3VsdCA9IHZhbHVlUHJvZmlsZShhcmd1bWVudEluZGV4IC0gMSk7Cisg
ICAgICAgICAgICBWYWx1ZVByb2ZpbGUqIHJlc3VsdCA9IHZhbHVlUHJvZmlsZShhcmd1bWVudElu
ZGV4KTsKICAgICAgICAgICAgIGlmIChyZXN1bHQtPm1fYnl0ZWNvZGVPZmZzZXQgIT0gLTEpCiAg
ICAgICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgICAgICByZXR1cm4gcmVzdWx0OwpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1ByZWRpY3RlZFR5cGUuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QcmVkaWN0ZWRUeXBlLmNw
cAkocmV2aXNpb24gOTU5MjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHJl
ZGljdGVkVHlwZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM3LDEzICszNywxMyBAQCBuYW1lc3Bh
Y2UgSlNDIHsKICNpZm5kZWYgTkRFQlVHCiBjb25zdCBjaGFyKiBwcmVkaWN0aW9uVG9TdHJpbmco
UHJlZGljdGVkVHlwZSB2YWx1ZSkKIHsKKyAgICBpZiAodmFsdWUgPT0gUHJlZGljdE5vbmUpCisg
ICAgICAgIHJldHVybiAiTm9uZSI7CisgICAgCiAgICAgc3RhdGljIGNvbnN0IGludCBzaXplID0g
OTY7CiAgICAgc3RhdGljIGNoYXIgZGVzY3JpcHRpb25bc2l6ZV07CiAgICAgQm91bmRzQ2hlY2tl
ZFBvaW50ZXI8Y2hhcj4gcHRyKGRlc2NyaXB0aW9uLCBzaXplKTsKICAgICAKLSAgICBpZiAoISh2
YWx1ZSAmIFN0cm9uZ1ByZWRpY3Rpb25UYWcpKQotICAgICAgICBwdHIuc3RyY2F0KCJXZWFrIik7
Ci0gICAgCiAgICAgaWYgKHZhbHVlICYgUHJlZGljdE9iamVjdFVua25vd24pIHsKICAgICAgICAg
QVNTRVJUKCEodmFsdWUgJiAoUHJlZGljdE9iamVjdE1hc2sgJiB+UHJlZGljdE9iamVjdFVua25v
d24pKSk7CiAgICAgICAgIHB0ci5zdHJjYXQoIk9iamVjdCIpOwpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL1ByZWRpY3RlZFR5cGUuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHJlZGljdGVkVHlwZS5oCShyZXZpc2lvbiA5NTkyNykK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QcmVkaWN0ZWRUeXBlLmgJKHdvcmtp
bmcgY29weSkKQEAgLTUxLDYwICs1MSw1MCBAQCBzdGF0aWMgY29uc3QgUHJlZGljdGVkVHlwZSBQ
cmVkaWN0TnVtYmVyCiBzdGF0aWMgY29uc3QgUHJlZGljdGVkVHlwZSBQcmVkaWN0Qm9vbGVhbiAg
ICAgICA9IDB4MDQwMDsgLy8gSXQncyBkZWZpbml0ZWx5IGEgQm9vbGVhbi4KIHN0YXRpYyBjb25z
dCBQcmVkaWN0ZWRUeXBlIFByZWRpY3RPdGhlciAgICAgICAgID0gMHg0MDAwOyAvLyBJdCdzIGRl
ZmluaXRlbHkgbm9uZSBvZiB0aGUgYWJvdmUuCiBzdGF0aWMgY29uc3QgUHJlZGljdGVkVHlwZSBQ
cmVkaWN0VG9wICAgICAgICAgICA9IDB4N2ZmZjsgLy8gSXQgY2FuIGJlIGFueSBvZiB0aGUgYWJv
dmUuCi1zdGF0aWMgY29uc3QgUHJlZGljdGVkVHlwZSBTdHJvbmdQcmVkaWN0aW9uVGFnICA9IDB4
ODAwMDsgLy8gSXQncyBhIHN0cm9uZyBwcmVkaWN0aW9uIChhbGwgc3Ryb25nIHByZWRpY3Rpb25z
IHRydW1wIGFsbCB3ZWFrIG9uZXMpLgotc3RhdGljIGNvbnN0IFByZWRpY3RlZFR5cGUgUHJlZGlj
dGlvblRhZ01hc2sgICAgPSAweDgwMDA7Ci0KLWVudW0gUHJlZGljdGlvblNvdXJjZSB7IFdlYWtQ
cmVkaWN0aW9uLCBTdHJvbmdQcmVkaWN0aW9uIH07CiAKIGlubGluZSBib29sIGlzQ2VsbFByZWRp
Y3Rpb24oUHJlZGljdGVkVHlwZSB2YWx1ZSkKIHsKLSAgICByZXR1cm4gISEodmFsdWUgJiBQcmVk
aWN0Q2VsbCkgJiYgISh2YWx1ZSAmIH4oUHJlZGljdENlbGwgfCBQcmVkaWN0aW9uVGFnTWFzaykp
OworICAgIHJldHVybiAhISh2YWx1ZSAmIFByZWRpY3RDZWxsKSAmJiAhKHZhbHVlICYgflByZWRp
Y3RDZWxsKTsKIH0KIAogaW5saW5lIGJvb2wgaXNPYmplY3RQcmVkaWN0aW9uKFByZWRpY3RlZFR5
cGUgdmFsdWUpCiB7Ci0gICAgcmV0dXJuICEhKHZhbHVlICYgUHJlZGljdE9iamVjdE1hc2spICYm
ICEodmFsdWUgJiB+KFByZWRpY3RPYmplY3RNYXNrIHwgUHJlZGljdGlvblRhZ01hc2spKTsKKyAg
ICByZXR1cm4gISEodmFsdWUgJiBQcmVkaWN0T2JqZWN0TWFzaykgJiYgISh2YWx1ZSAmIH5QcmVk
aWN0T2JqZWN0TWFzayk7CiB9CiAKIGlubGluZSBib29sIGlzRmluYWxPYmplY3RQcmVkaWN0aW9u
KFByZWRpY3RlZFR5cGUgdmFsdWUpCiB7Ci0gICAgcmV0dXJuICh2YWx1ZSAmIH5QcmVkaWN0aW9u
VGFnTWFzaykgPT0gUHJlZGljdEZpbmFsT2JqZWN0OworICAgIHJldHVybiB2YWx1ZSA9PSBQcmVk
aWN0RmluYWxPYmplY3Q7CiB9CiAKIGlubGluZSBib29sIGlzU3RyaW5nUHJlZGljdGlvbihQcmVk
aWN0ZWRUeXBlIHZhbHVlKQogewotICAgIHJldHVybiAodmFsdWUgJiB+UHJlZGljdGlvblRhZ01h
c2spID09IFByZWRpY3RTdHJpbmc7CisgICAgcmV0dXJuIHZhbHVlID09IFByZWRpY3RTdHJpbmc7
CiB9CiAKIGlubGluZSBib29sIGlzQXJyYXlQcmVkaWN0aW9uKFByZWRpY3RlZFR5cGUgdmFsdWUp
CiB7Ci0gICAgcmV0dXJuICh2YWx1ZSAmIH5QcmVkaWN0aW9uVGFnTWFzaykgPT0gUHJlZGljdEFy
cmF5OworICAgIHJldHVybiB2YWx1ZSA9PSBQcmVkaWN0QXJyYXk7CiB9CiAKIGlubGluZSBib29s
IGlzSW50MzJQcmVkaWN0aW9uKFByZWRpY3RlZFR5cGUgdmFsdWUpCiB7Ci0gICAgcmV0dXJuICh2
YWx1ZSAmIH5QcmVkaWN0aW9uVGFnTWFzaykgPT0gUHJlZGljdEludDMyOworICAgIHJldHVybiB2
YWx1ZSA9PSBQcmVkaWN0SW50MzI7CiB9CiAKIGlubGluZSBib29sIGlzRG91YmxlUHJlZGljdGlv
bihQcmVkaWN0ZWRUeXBlIHZhbHVlKQogewotICAgIHJldHVybiAodmFsdWUgJiB+UHJlZGljdGlv
blRhZ01hc2spID09IFByZWRpY3REb3VibGU7CisgICAgcmV0dXJuIHZhbHVlID09IFByZWRpY3RE
b3VibGU7CiB9CiAKIGlubGluZSBib29sIGlzTnVtYmVyUHJlZGljdGlvbihQcmVkaWN0ZWRUeXBl
IHZhbHVlKQogewotICAgIHJldHVybiAhISh2YWx1ZSAmIFByZWRpY3ROdW1iZXIpICYmICEodmFs
dWUgJiB+KFByZWRpY3ROdW1iZXIgfCBQcmVkaWN0aW9uVGFnTWFzaykpOworICAgIHJldHVybiAh
ISh2YWx1ZSAmIFByZWRpY3ROdW1iZXIpICYmICEodmFsdWUgJiB+UHJlZGljdE51bWJlcik7CiB9
CiAKIGlubGluZSBib29sIGlzQm9vbGVhblByZWRpY3Rpb24oUHJlZGljdGVkVHlwZSB2YWx1ZSkK
IHsKLSAgICByZXR1cm4gKHZhbHVlICYgflByZWRpY3Rpb25UYWdNYXNrKSA9PSBQcmVkaWN0Qm9v
bGVhbjsKLX0KLQotaW5saW5lIGJvb2wgaXNTdHJvbmdQcmVkaWN0aW9uKFByZWRpY3RlZFR5cGUg
dmFsdWUpCi17Ci0gICAgQVNTRVJUKHZhbHVlICE9IChQcmVkaWN0Tm9uZSB8IFN0cm9uZ1ByZWRp
Y3Rpb25UYWcpKTsKLSAgICByZXR1cm4gISEodmFsdWUgJiBTdHJvbmdQcmVkaWN0aW9uVGFnKTsK
KyAgICByZXR1cm4gdmFsdWUgPT0gUHJlZGljdEJvb2xlYW47CiB9CiAKICNpZm5kZWYgTkRFQlVH
CkBAIC0xMTMsMjUgKzEwMywxNiBAQCBjb25zdCBjaGFyKiBwcmVkaWN0aW9uVG9TdHJpbmcoUHJl
ZGljdGVkCiAKIGlubGluZSBQcmVkaWN0ZWRUeXBlIG1lcmdlUHJlZGljdGlvbnMoUHJlZGljdGVk
VHlwZSBsZWZ0LCBQcmVkaWN0ZWRUeXBlIHJpZ2h0KQogewotICAgIGlmIChpc1N0cm9uZ1ByZWRp
Y3Rpb24obGVmdCkgPT0gaXNTdHJvbmdQcmVkaWN0aW9uKHJpZ2h0KSkgewotICAgICAgICBpZiAo
bGVmdCAmIFByZWRpY3RPYmplY3RVbmtub3duKSB7Ci0gICAgICAgICAgICBBU1NFUlQoIShsZWZ0
ICYgKFByZWRpY3RPYmplY3RNYXNrICYgflByZWRpY3RPYmplY3RVbmtub3duKSkpOwotICAgICAg
ICAgICAgaWYgKHJpZ2h0ICYgUHJlZGljdE9iamVjdE1hc2spCi0gICAgICAgICAgICAgICAgcmV0
dXJuIChsZWZ0ICYgflByZWRpY3RPYmplY3RVbmtub3duKSB8IHJpZ2h0OwotICAgICAgICB9IGVs
c2UgaWYgKHJpZ2h0ICYgUHJlZGljdE9iamVjdFVua25vd24pIHsKLSAgICAgICAgICAgIEFTU0VS
VCghKHJpZ2h0ICYgKFByZWRpY3RPYmplY3RNYXNrICYgflByZWRpY3RPYmplY3RVbmtub3duKSkp
OwotICAgICAgICAgICAgaWYgKGxlZnQgJiBQcmVkaWN0T2JqZWN0TWFzaykKLSAgICAgICAgICAg
ICAgICByZXR1cm4gKHJpZ2h0ICYgflByZWRpY3RPYmplY3RVbmtub3duKSB8IGxlZnQ7Ci0gICAg
ICAgIH0KLSAgICAgICAgcmV0dXJuIGxlZnQgfCByaWdodDsKKyAgICBpZiAobGVmdCAmIFByZWRp
Y3RPYmplY3RVbmtub3duKSB7CisgICAgICAgIEFTU0VSVCghKGxlZnQgJiAoUHJlZGljdE9iamVj
dE1hc2sgJiB+UHJlZGljdE9iamVjdFVua25vd24pKSk7CisgICAgICAgIGlmIChyaWdodCAmIFBy
ZWRpY3RPYmplY3RNYXNrKQorICAgICAgICAgICAgcmV0dXJuIChsZWZ0ICYgflByZWRpY3RPYmpl
Y3RVbmtub3duKSB8IHJpZ2h0OworICAgIH0gZWxzZSBpZiAocmlnaHQgJiBQcmVkaWN0T2JqZWN0
VW5rbm93bikgeworICAgICAgICBBU1NFUlQoIShyaWdodCAmIChQcmVkaWN0T2JqZWN0TWFzayAm
IH5QcmVkaWN0T2JqZWN0VW5rbm93bikpKTsKKyAgICAgICAgaWYgKGxlZnQgJiBQcmVkaWN0T2Jq
ZWN0TWFzaykKKyAgICAgICAgICAgIHJldHVybiAocmlnaHQgJiB+UHJlZGljdE9iamVjdFVua25v
d24pIHwgbGVmdDsKICAgICB9Ci0gICAgaWYgKGlzU3Ryb25nUHJlZGljdGlvbihsZWZ0KSkgewot
ICAgICAgICBBU1NFUlQoIWlzU3Ryb25nUHJlZGljdGlvbihyaWdodCkpOwotICAgICAgICByZXR1
cm4gbGVmdDsKLSAgICB9Ci0gICAgQVNTRVJUKCFpc1N0cm9uZ1ByZWRpY3Rpb24obGVmdCkpOwot
ICAgIEFTU0VSVChpc1N0cm9uZ1ByZWRpY3Rpb24ocmlnaHQpKTsKLSAgICByZXR1cm4gcmlnaHQ7
CisgICAgcmV0dXJuIGxlZnQgfCByaWdodDsKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgVD4KQEAg
LTE0MywxNSArMTI0LDYgQEAgaW5saW5lIGJvb2wgbWVyZ2VQcmVkaWN0aW9uKFQmIGxlZnQsIFBy
ZQogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLWlubGluZSBQcmVkaWN0ZWRUeXBlIG1ha2VQcmVk
aWN0aW9uKFByZWRpY3RlZFR5cGUgdHlwZSwgUHJlZGljdGlvblNvdXJjZSBzb3VyY2UpCi17Ci0g
ICAgQVNTRVJUKCEodHlwZSAmIFN0cm9uZ1ByZWRpY3Rpb25UYWcpKTsKLSAgICBBU1NFUlQoc291
cmNlID09IFN0cm9uZ1ByZWRpY3Rpb24gfHwgc291cmNlID09IFdlYWtQcmVkaWN0aW9uKTsKLSAg
ICBpZiAodHlwZSA9PSBQcmVkaWN0Tm9uZSkKLSAgICAgICAgcmV0dXJuIFByZWRpY3ROb25lOwot
ICAgIHJldHVybiB0eXBlIHwgKHNvdXJjZSA9PSBTdHJvbmdQcmVkaWN0aW9uID8gU3Ryb25nUHJl
ZGljdGlvblRhZyA6IDApOwotfQotCiBQcmVkaWN0ZWRUeXBlIHByZWRpY3Rpb25Gcm9tQ2xhc3NJ
bmZvKGNvbnN0IENsYXNzSW5mbyopOwogUHJlZGljdGVkVHlwZSBwcmVkaWN0aW9uRnJvbVN0cnVj
dHVyZShTdHJ1Y3R1cmUqKTsKIFByZWRpY3RlZFR5cGUgcHJlZGljdGlvbkZyb21DZWxsKEpTQ2Vs
bCopOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1ByZWRpY3Rpb25UcmFj
a2VyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1ByZWRp
Y3Rpb25UcmFja2VyLmgJKHJldmlzaW9uIDk1OTI3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL1ByZWRpY3Rpb25UcmFja2VyLmgJKHdvcmtpbmcgY29weSkKQEAgLTczLDMzICs3
MywzMyBAQCBwdWJsaWM6CiAgICAgCiAgICAgdW5zaWduZWQgYXJndW1lbnRJbmRleEZvck9wZXJh
bmQoaW50IG9wZXJhbmQpIGNvbnN0IHsgcmV0dXJuIG9wZXJhbmQgKyBtX2FyZ3VtZW50cy5zaXpl
KCkgKyBSZWdpc3RlckZpbGU6OkNhbGxGcmFtZUhlYWRlclNpemU7IH0KIAotICAgIGJvb2wgcHJl
ZGljdEFyZ3VtZW50KHVuc2lnbmVkIGFyZ3VtZW50LCBQcmVkaWN0ZWRUeXBlIHByZWRpY3Rpb24s
IFByZWRpY3Rpb25Tb3VyY2Ugc291cmNlKQorICAgIGJvb2wgcHJlZGljdEFyZ3VtZW50KHVuc2ln
bmVkIGFyZ3VtZW50LCBQcmVkaWN0ZWRUeXBlIHByZWRpY3Rpb24pCiAgICAgewotICAgICAgICBy
ZXR1cm4gbWVyZ2VQcmVkaWN0aW9uKG1fYXJndW1lbnRzW2FyZ3VtZW50XS5tX3ZhbHVlLCBtYWtl
UHJlZGljdGlvbihwcmVkaWN0aW9uLCBzb3VyY2UpKTsKKyAgICAgICAgcmV0dXJuIG1lcmdlUHJl
ZGljdGlvbihtX2FyZ3VtZW50c1thcmd1bWVudF0ubV92YWx1ZSwgcHJlZGljdGlvbik7CiAgICAg
fQogICAgIAotICAgIGJvb2wgcHJlZGljdChpbnQgb3BlcmFuZCwgUHJlZGljdGVkVHlwZSBwcmVk
aWN0aW9uLCBQcmVkaWN0aW9uU291cmNlIHNvdXJjZSkKKyAgICBib29sIHByZWRpY3QoaW50IG9w
ZXJhbmQsIFByZWRpY3RlZFR5cGUgcHJlZGljdGlvbikKICAgICB7CiAgICAgICAgIGlmIChvcGVy
YW5kSXNBcmd1bWVudChvcGVyYW5kKSkKLSAgICAgICAgICAgIHJldHVybiBwcmVkaWN0QXJndW1l
bnQoYXJndW1lbnRJbmRleEZvck9wZXJhbmQob3BlcmFuZCksIHByZWRpY3Rpb24sIHNvdXJjZSk7
CisgICAgICAgICAgICByZXR1cm4gcHJlZGljdEFyZ3VtZW50KGFyZ3VtZW50SW5kZXhGb3JPcGVy
YW5kKG9wZXJhbmQpLCBwcmVkaWN0aW9uKTsKICAgICAgICAgaWYgKCh1bnNpZ25lZClvcGVyYW5k
ID49IG1fdmFyaWFibGVzLnNpemUoKSkgewogICAgICAgICAgICAgQVNTRVJUKG9wZXJhbmQgPj0g
MCk7CiAgICAgICAgICAgICBtX3ZhcmlhYmxlcy5yZXNpemUob3BlcmFuZCArIDEpOwogICAgICAg
ICB9CiAgICAgICAgIAotICAgICAgICByZXR1cm4gbWVyZ2VQcmVkaWN0aW9uKG1fdmFyaWFibGVz
W29wZXJhbmRdLm1fdmFsdWUsIG1ha2VQcmVkaWN0aW9uKHByZWRpY3Rpb24sIHNvdXJjZSkpOwor
ICAgICAgICByZXR1cm4gbWVyZ2VQcmVkaWN0aW9uKG1fdmFyaWFibGVzW29wZXJhbmRdLm1fdmFs
dWUsIHByZWRpY3Rpb24pOwogICAgIH0KICAgICAKLSAgICBib29sIHByZWRpY3RHbG9iYWxWYXIo
dW5zaWduZWQgdmFyTnVtYmVyLCBQcmVkaWN0ZWRUeXBlIHByZWRpY3Rpb24sIFByZWRpY3Rpb25T
b3VyY2Ugc291cmNlKQorICAgIGJvb2wgcHJlZGljdEdsb2JhbFZhcih1bnNpZ25lZCB2YXJOdW1i
ZXIsIFByZWRpY3RlZFR5cGUgcHJlZGljdGlvbikKICAgICB7CiAgICAgICAgIEhhc2hNYXA8dW5z
aWduZWQsIFByZWRpY3Rpb25TbG90Pjo6aXRlcmF0b3IgaXRlciA9IG1fZ2xvYmFsVmFycy5maW5k
KHZhck51bWJlciArIDEpOwogICAgICAgICBpZiAoaXRlciA9PSBtX2dsb2JhbFZhcnMuZW5kKCkp
IHsKICAgICAgICAgICAgIFByZWRpY3Rpb25TbG90IHByZWRpY3Rpb25TbG90OwotICAgICAgICAg
ICAgYm9vbCByZXN1bHQgPSBtZXJnZVByZWRpY3Rpb24ocHJlZGljdGlvblNsb3QubV92YWx1ZSwg
bWFrZVByZWRpY3Rpb24ocHJlZGljdGlvbiwgc291cmNlKSk7CisgICAgICAgICAgICBib29sIHJl
c3VsdCA9IG1lcmdlUHJlZGljdGlvbihwcmVkaWN0aW9uU2xvdC5tX3ZhbHVlLCBwcmVkaWN0aW9u
KTsKICAgICAgICAgICAgIG1fZ2xvYmFsVmFycy5hZGQodmFyTnVtYmVyICsgMSwgcHJlZGljdGlv
blNsb3QpOwogICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICAgICAgfQotICAgICAgICBy
ZXR1cm4gbWVyZ2VQcmVkaWN0aW9uKGl0ZXItPnNlY29uZC5tX3ZhbHVlLCBtYWtlUHJlZGljdGlv
bihwcmVkaWN0aW9uLCBzb3VyY2UpKTsKKyAgICAgICAgcmV0dXJuIG1lcmdlUHJlZGljdGlvbihp
dGVyLT5zZWNvbmQubV92YWx1ZSwgcHJlZGljdGlvbik7CiAgICAgfQogICAgIAogICAgIFByZWRp
Y3RlZFR5cGUgZ2V0QXJndW1lbnRQcmVkaWN0aW9uKHVuc2lnbmVkIGFyZ3VtZW50KQpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1ZhbHVlUHJvZmlsZS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1ZhbHVlUHJvZmlsZS5jcHAJKHJl
dmlzaW9uIDk1OTI3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1ZhbHVlUHJv
ZmlsZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTk0LDI1ICs5NCwyNSBAQCBQcmVkaWN0ZWRUeXBl
IFZhbHVlUHJvZmlsZTo6Y29tcHV0ZVVwZGF0CiAgICAgaWYgKCFzdGF0aXN0aWNzLnNhbXBsZXMp
CiAgICAgICAgIHByZWRpY3Rpb24gPSBQcmVkaWN0Tm9uZTsKICAgICBlbHNlIGlmIChzdGF0aXN0
aWNzLmludDMycyA9PSBzdGF0aXN0aWNzLnNhbXBsZXMpCi0gICAgICAgIHByZWRpY3Rpb24gPSBT
dHJvbmdQcmVkaWN0aW9uVGFnIHwgUHJlZGljdEludDMyOworICAgICAgICBwcmVkaWN0aW9uID0g
UHJlZGljdEludDMyOwogICAgIGVsc2UgaWYgKHN0YXRpc3RpY3MuZG91YmxlcyA9PSBzdGF0aXN0
aWNzLnNhbXBsZXMpCi0gICAgICAgIHByZWRpY3Rpb24gPSBTdHJvbmdQcmVkaWN0aW9uVGFnIHwg
UHJlZGljdERvdWJsZTsKKyAgICAgICAgcHJlZGljdGlvbiA9IFByZWRpY3REb3VibGU7CiAgICAg
ZWxzZSBpZiAoc3RhdGlzdGljcy5pbnQzMnMgKyBzdGF0aXN0aWNzLmRvdWJsZXMgPT0gc3RhdGlz
dGljcy5zYW1wbGVzKQotICAgICAgICBwcmVkaWN0aW9uID0gU3Ryb25nUHJlZGljdGlvblRhZyB8
IFByZWRpY3ROdW1iZXI7CisgICAgICAgIHByZWRpY3Rpb24gPSBQcmVkaWN0TnVtYmVyOwogICAg
IGVsc2UgaWYgKHN0YXRpc3RpY3MuYXJyYXlzID09IHN0YXRpc3RpY3Muc2FtcGxlcykKLSAgICAg
ICAgcHJlZGljdGlvbiA9IFN0cm9uZ1ByZWRpY3Rpb25UYWcgfCBQcmVkaWN0QXJyYXk7CisgICAg
ICAgIHByZWRpY3Rpb24gPSBQcmVkaWN0QXJyYXk7CiAgICAgZWxzZSBpZiAoc3RhdGlzdGljcy5m
aW5hbE9iamVjdHMgPT0gc3RhdGlzdGljcy5zYW1wbGVzKQotICAgICAgICBwcmVkaWN0aW9uID0g
U3Ryb25nUHJlZGljdGlvblRhZyB8IFByZWRpY3RGaW5hbE9iamVjdDsKKyAgICAgICAgcHJlZGlj
dGlvbiA9IFByZWRpY3RGaW5hbE9iamVjdDsKICAgICBlbHNlIGlmIChzdGF0aXN0aWNzLnN0cmlu
Z3MgPT0gc3RhdGlzdGljcy5zYW1wbGVzKQotICAgICAgICBwcmVkaWN0aW9uID0gU3Ryb25nUHJl
ZGljdGlvblRhZyB8IFByZWRpY3RTdHJpbmc7CisgICAgICAgIHByZWRpY3Rpb24gPSBQcmVkaWN0
U3RyaW5nOwogICAgIGVsc2UgaWYgKHN0YXRpc3RpY3Mub2JqZWN0cyA9PSBzdGF0aXN0aWNzLnNh
bXBsZXMpCi0gICAgICAgIHByZWRpY3Rpb24gPSBTdHJvbmdQcmVkaWN0aW9uVGFnIHwgUHJlZGlj
dE9iamVjdE90aGVyOworICAgICAgICBwcmVkaWN0aW9uID0gUHJlZGljdE9iamVjdE90aGVyOwog
ICAgIGVsc2UgaWYgKHN0YXRpc3RpY3MuY2VsbHMgPT0gc3RhdGlzdGljcy5zYW1wbGVzKQotICAg
ICAgICBwcmVkaWN0aW9uID0gU3Ryb25nUHJlZGljdGlvblRhZyB8IFByZWRpY3RDZWxsT3RoZXI7
CisgICAgICAgIHByZWRpY3Rpb24gPSBQcmVkaWN0Q2VsbE90aGVyOwogICAgIGVsc2UgaWYgKHN0
YXRpc3RpY3MuYm9vbGVhbnMgPT0gc3RhdGlzdGljcy5zYW1wbGVzKQotICAgICAgICBwcmVkaWN0
aW9uID0gU3Ryb25nUHJlZGljdGlvblRhZyB8IFByZWRpY3RCb29sZWFuOworICAgICAgICBwcmVk
aWN0aW9uID0gUHJlZGljdEJvb2xlYW47CiAgICAgZWxzZQotICAgICAgICBwcmVkaWN0aW9uID0g
U3Ryb25nUHJlZGljdGlvblRhZyB8IFByZWRpY3RPdGhlcjsKKyAgICAgICAgcHJlZGljdGlvbiA9
IFByZWRpY3RPdGhlcjsKIAogICAgIG1fbnVtYmVyT2ZTYW1wbGVzSW5QcmVkaWN0aW9uICs9IHN0
YXRpc3RpY3Muc2FtcGxlczsKICAgICBtZXJnZVByZWRpY3Rpb24obV9wcmVkaWN0aW9uLCBwcmVk
aWN0aW9uKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJz
ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNv
ZGVQYXJzZXIuY3BwCShyZXZpc2lvbiA5NTkyNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDEsMTAgKzEwMSw4
IEBAIHByaXZhdGU6CiAgICAgICAgIC8vIE11c3QgYmUgYSBsb2NhbC4KICAgICAgICAgcmV0dXJu
IGdldExvY2FsKCh1bnNpZ25lZClvcGVyYW5kKTsKICAgICB9Ci0gICAgdm9pZCBzZXQoaW50IG9w
ZXJhbmQsIE5vZGVJbmRleCB2YWx1ZSwgUHJlZGljdGVkVHlwZSB3ZWFrUHJlZGljdGlvbiA9IFBy
ZWRpY3ROb25lKQorICAgIHZvaWQgc2V0KGludCBvcGVyYW5kLCBOb2RlSW5kZXggdmFsdWUpCiAg
ICAgewotICAgICAgICBtX2dyYXBoLnByZWRpY3Qob3BlcmFuZCwgd2Vha1ByZWRpY3Rpb24sIFdl
YWtQcmVkaWN0aW9uKTsKLQogICAgICAgICAvLyBJcyB0aGlzIGFuIGFyZ3VtZW50PwogICAgICAg
ICBpZiAob3BlcmFuZElzQXJndW1lbnQob3BlcmFuZCkpIHsKICAgICAgICAgICAgIHNldEFyZ3Vt
ZW50KG9wZXJhbmQsIHZhbHVlKTsKQEAgLTQzNiw3ICs0MzQsNyBAQCBwcml2YXRlOgogCiAgICAg
ICAgIFByZWRpY3RlZFR5cGUgcHJlZGljdGlvbiA9IFByZWRpY3ROb25lOwogICAgICAgICBpZiAo
aW50ZXJwcmV0ZXItPmdldE9wY29kZUlEKHB1dEluc3RydWN0aW9uLT51Lm9wY29kZSkgPT0gb3Bf
Y2FsbF9wdXRfcmVzdWx0KQotICAgICAgICAgICAgcHJlZGljdGlvbiA9IGdldFN0cm9uZ1ByZWRp
Y3Rpb24obV9ncmFwaC5zaXplKCksIG1fY3VycmVudEluZGV4ICsgT1BDT0RFX0xFTkdUSChvcF9j
YWxsKSk7CisgICAgICAgICAgICBwcmVkaWN0aW9uID0gZ2V0UHJlZGljdGlvbihtX2dyYXBoLnNp
emUoKSwgbV9jdXJyZW50SW5kZXggKyBPUENPREVfTEVOR1RIKG9wX2NhbGwpKTsKICAgICAgICAg
CiAgICAgICAgIGFkZFZhckFyZ0NoaWxkKGdldChjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVy
YW5kKSk7CiAgICAgICAgIGludCBhcmdDb3VudCA9IGN1cnJlbnRJbnN0cnVjdGlvblsyXS51Lm9w
ZXJhbmQ7CkBAIC00NTIsNDIgKzQ1MCw3IEBAIHByaXZhdGU6CiAgICAgICAgIHJldHVybiBjYWxs
OwogICAgIH0KIAotICAgIHZvaWQgd2Vha2x5UHJlZGljdEFycmF5KE5vZGVJbmRleCBub2RlSW5k
ZXgpCi0gICAgewotICAgICAgICBtX2dyYXBoLnByZWRpY3QobV9ncmFwaFtub2RlSW5kZXhdLCBQ
cmVkaWN0QXJyYXksIFdlYWtQcmVkaWN0aW9uKTsKLSAgICB9Ci0KLSAgICB2b2lkIHdlYWtseVBy
ZWRpY3RJbnQzMihOb2RlSW5kZXggbm9kZUluZGV4KQotICAgIHsKLSAgICAgICAgQVNTRVJUKG1f
cmV1c2FibGVOb2RlU3RhY2suaXNFbXB0eSgpKTsKLSAgICAgICAgbV9yZXVzYWJsZU5vZGVTdGFj
ay5hcHBlbmQoJm1fZ3JhcGhbbm9kZUluZGV4XSk7Ci0gICAgICAgIAotICAgICAgICBkbyB7Ci0g
ICAgICAgICAgICBOb2RlKiBub2RlUHRyID0gbV9yZXVzYWJsZU5vZGVTdGFjay5sYXN0KCk7Ci0g
ICAgICAgICAgICBtX3JldXNhYmxlTm9kZVN0YWNrLnJlbW92ZUxhc3QoKTsKLSAgICAgICAgICAg
IAotICAgICAgICAgICAgaWYgKG5vZGVQdHItPm9wID09IFZhbHVlVG9OdW1iZXIpCi0gICAgICAg
ICAgICAgICAgbm9kZVB0ciA9ICZtX2dyYXBoW25vZGVQdHItPmNoaWxkMSgpXTsKLSAgICAgICAg
ICAgIAotICAgICAgICAgICAgaWYgKG5vZGVQdHItPm9wID09IFZhbHVlVG9JbnQzMikKLSAgICAg
ICAgICAgICAgICBub2RlUHRyID0gJm1fZ3JhcGhbbm9kZVB0ci0+Y2hpbGQxKCldOwotICAgICAg
ICAgICAgCi0gICAgICAgICAgICBzd2l0Y2ggKG5vZGVQdHItPm9wKSB7Ci0gICAgICAgICAgICBj
YXNlIEFyaXRoQWRkOgotICAgICAgICAgICAgY2FzZSBBcml0aFN1YjoKLSAgICAgICAgICAgIGNh
c2UgQXJpdGhNdWw6Ci0gICAgICAgICAgICBjYXNlIFZhbHVlQWRkOgotICAgICAgICAgICAgICAg
IG1fcmV1c2FibGVOb2RlU3RhY2suYXBwZW5kKCZtX2dyYXBoW25vZGVQdHItPmNoaWxkMSgpXSk7
Ci0gICAgICAgICAgICAgICAgbV9yZXVzYWJsZU5vZGVTdGFjay5hcHBlbmQoJm1fZ3JhcGhbbm9k
ZVB0ci0+Y2hpbGQyKCldKTsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGRl
ZmF1bHQ6Ci0gICAgICAgICAgICAgICAgbV9ncmFwaC5wcmVkaWN0KCpub2RlUHRyLCBQcmVkaWN0
SW50MzIsIFdlYWtQcmVkaWN0aW9uKTsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAg
ICAgIH0KLSAgICAgICAgfSB3aGlsZSAoIW1fcmV1c2FibGVOb2RlU3RhY2suaXNFbXB0eSgpKTsK
LSAgICB9Ci0gICAgCi0gICAgUHJlZGljdGVkVHlwZSBnZXRTdHJvbmdQcmVkaWN0aW9uKE5vZGVJ
bmRleCBub2RlSW5kZXgsIHVuc2lnbmVkIGJ5dGVjb2RlSW5kZXgpCisgICAgUHJlZGljdGVkVHlw
ZSBnZXRQcmVkaWN0aW9uKE5vZGVJbmRleCBub2RlSW5kZXgsIHVuc2lnbmVkIGJ5dGVjb2RlSW5k
ZXgpCiAgICAgewogICAgICAgICBVTlVTRURfUEFSQU0obm9kZUluZGV4KTsKICAgICAgICAgCkBA
IC01MDcsOSArNDcwLDkgQEAgcHJpdmF0ZToKICAgICAgICAgcmV0dXJuIHByZWRpY3Rpb247CiAg
ICAgfQogICAgIAotICAgIFByZWRpY3RlZFR5cGUgZ2V0U3Ryb25nUHJlZGljdGlvbigpCisgICAg
UHJlZGljdGVkVHlwZSBnZXRQcmVkaWN0aW9uKCkKICAgICB7Ci0gICAgICAgIHJldHVybiBnZXRT
dHJvbmdQcmVkaWN0aW9uKG1fZ3JhcGguc2l6ZSgpLCBtX2N1cnJlbnRJbmRleCk7CisgICAgICAg
IHJldHVybiBnZXRQcmVkaWN0aW9uKG1fZ3JhcGguc2l6ZSgpLCBtX2N1cnJlbnRJbmRleCk7CiAg
ICAgfQogCiAgICAgTm9kZUluZGV4IG1ha2VTYWZlKE5vZGVJbmRleCBub2RlSW5kZXgpCkBAIC03
NzEsNjUgKzczNCw1MyBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKHVuc2lnbmVk
CiAgICAgICAgIGNhc2Ugb3BfYml0YW5kOiB7CiAgICAgICAgICAgICBOb2RlSW5kZXggb3AxID0g
Z2V0VG9JbnQzMihjdXJyZW50SW5zdHJ1Y3Rpb25bMl0udS5vcGVyYW5kKTsKICAgICAgICAgICAg
IE5vZGVJbmRleCBvcDIgPSBnZXRUb0ludDMyKGN1cnJlbnRJbnN0cnVjdGlvblszXS51Lm9wZXJh
bmQpOwotICAgICAgICAgICAgd2Vha2x5UHJlZGljdEludDMyKG9wMSk7Ci0gICAgICAgICAgICB3
ZWFrbHlQcmVkaWN0SW50MzIob3AyKTsKLSAgICAgICAgICAgIHNldChjdXJyZW50SW5zdHJ1Y3Rp
b25bMV0udS5vcGVyYW5kLCBhZGRUb0dyYXBoKEJpdEFuZCwgb3AxLCBvcDIpLCBQcmVkaWN0SW50
MzIpOworICAgICAgICAgICAgc2V0KGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQsIGFk
ZFRvR3JhcGgoQml0QW5kLCBvcDEsIG9wMikpOwogICAgICAgICAgICAgTkVYVF9PUENPREUob3Bf
Yml0YW5kKTsKICAgICAgICAgfQogCiAgICAgICAgIGNhc2Ugb3BfYml0b3I6IHsKICAgICAgICAg
ICAgIE5vZGVJbmRleCBvcDEgPSBnZXRUb0ludDMyKGN1cnJlbnRJbnN0cnVjdGlvblsyXS51Lm9w
ZXJhbmQpOwogICAgICAgICAgICAgTm9kZUluZGV4IG9wMiA9IGdldFRvSW50MzIoY3VycmVudElu
c3RydWN0aW9uWzNdLnUub3BlcmFuZCk7Ci0gICAgICAgICAgICB3ZWFrbHlQcmVkaWN0SW50MzIo
b3AxKTsKLSAgICAgICAgICAgIHdlYWtseVByZWRpY3RJbnQzMihvcDIpOwotICAgICAgICAgICAg
c2V0KGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQsIGFkZFRvR3JhcGgoQml0T3IsIG9w
MSwgb3AyKSwgUHJlZGljdEludDMyKTsKKyAgICAgICAgICAgIHNldChjdXJyZW50SW5zdHJ1Y3Rp
b25bMV0udS5vcGVyYW5kLCBhZGRUb0dyYXBoKEJpdE9yLCBvcDEsIG9wMikpOwogICAgICAgICAg
ICAgTkVYVF9PUENPREUob3BfYml0b3IpOwogICAgICAgICB9CiAKICAgICAgICAgY2FzZSBvcF9i
aXR4b3I6IHsKICAgICAgICAgICAgIE5vZGVJbmRleCBvcDEgPSBnZXRUb0ludDMyKGN1cnJlbnRJ
bnN0cnVjdGlvblsyXS51Lm9wZXJhbmQpOwogICAgICAgICAgICAgTm9kZUluZGV4IG9wMiA9IGdl
dFRvSW50MzIoY3VycmVudEluc3RydWN0aW9uWzNdLnUub3BlcmFuZCk7Ci0gICAgICAgICAgICB3
ZWFrbHlQcmVkaWN0SW50MzIob3AxKTsKLSAgICAgICAgICAgIHdlYWtseVByZWRpY3RJbnQzMihv
cDIpOwotICAgICAgICAgICAgc2V0KGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQsIGFk
ZFRvR3JhcGgoQml0WG9yLCBvcDEsIG9wMiksIFByZWRpY3RJbnQzMik7CisgICAgICAgICAgICBz
ZXQoY3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZCwgYWRkVG9HcmFwaChCaXRYb3IsIG9w
MSwgb3AyKSk7CiAgICAgICAgICAgICBORVhUX09QQ09ERShvcF9iaXR4b3IpOwogICAgICAgICB9
CiAKICAgICAgICAgY2FzZSBvcF9yc2hpZnQ6IHsKICAgICAgICAgICAgIE5vZGVJbmRleCBvcDEg
PSBnZXRUb0ludDMyKGN1cnJlbnRJbnN0cnVjdGlvblsyXS51Lm9wZXJhbmQpOwogICAgICAgICAg
ICAgTm9kZUluZGV4IG9wMiA9IGdldFRvSW50MzIoY3VycmVudEluc3RydWN0aW9uWzNdLnUub3Bl
cmFuZCk7Ci0gICAgICAgICAgICB3ZWFrbHlQcmVkaWN0SW50MzIob3AxKTsKLSAgICAgICAgICAg
IHdlYWtseVByZWRpY3RJbnQzMihvcDIpOwogICAgICAgICAgICAgTm9kZUluZGV4IHJlc3VsdDsK
ICAgICAgICAgICAgIC8vIE9wdGltaXplIG91dCBzaGlmdHMgYnkgemVyby4KICAgICAgICAgICAg
IGlmIChpc0ludDMyQ29uc3RhbnQob3AyKSAmJiAhKHZhbHVlT2ZJbnQzMkNvbnN0YW50KG9wMikg
JiAweDFmKSkKICAgICAgICAgICAgICAgICByZXN1bHQgPSBvcDE7CiAgICAgICAgICAgICBlbHNl
CiAgICAgICAgICAgICAgICAgcmVzdWx0ID0gYWRkVG9HcmFwaChCaXRSU2hpZnQsIG9wMSwgb3Ay
KTsKLSAgICAgICAgICAgIHNldChjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kLCByZXN1
bHQsIFByZWRpY3RJbnQzMik7CisgICAgICAgICAgICBzZXQoY3VycmVudEluc3RydWN0aW9uWzFd
LnUub3BlcmFuZCwgcmVzdWx0KTsKICAgICAgICAgICAgIE5FWFRfT1BDT0RFKG9wX3JzaGlmdCk7
CiAgICAgICAgIH0KIAogICAgICAgICBjYXNlIG9wX2xzaGlmdDogewogICAgICAgICAgICAgTm9k
ZUluZGV4IG9wMSA9IGdldFRvSW50MzIoY3VycmVudEluc3RydWN0aW9uWzJdLnUub3BlcmFuZCk7
CiAgICAgICAgICAgICBOb2RlSW5kZXggb3AyID0gZ2V0VG9JbnQzMihjdXJyZW50SW5zdHJ1Y3Rp
b25bM10udS5vcGVyYW5kKTsKLSAgICAgICAgICAgIHdlYWtseVByZWRpY3RJbnQzMihvcDEpOwot
ICAgICAgICAgICAgd2Vha2x5UHJlZGljdEludDMyKG9wMik7CiAgICAgICAgICAgICBOb2RlSW5k
ZXggcmVzdWx0OwogICAgICAgICAgICAgLy8gT3B0aW1pemUgb3V0IHNoaWZ0cyBieSB6ZXJvLgog
ICAgICAgICAgICAgaWYgKGlzSW50MzJDb25zdGFudChvcDIpICYmICEodmFsdWVPZkludDMyQ29u
c3RhbnQob3AyKSAmIDB4MWYpKQogICAgICAgICAgICAgICAgIHJlc3VsdCA9IG9wMTsKICAgICAg
ICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICByZXN1bHQgPSBhZGRUb0dyYXBoKEJpdExTaGlm
dCwgb3AxLCBvcDIpOwotICAgICAgICAgICAgc2V0KGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9w
ZXJhbmQsIHJlc3VsdCwgUHJlZGljdEludDMyKTsKKyAgICAgICAgICAgIHNldChjdXJyZW50SW5z
dHJ1Y3Rpb25bMV0udS5vcGVyYW5kLCByZXN1bHQpOwogICAgICAgICAgICAgTkVYVF9PUENPREUo
b3BfbHNoaWZ0KTsKICAgICAgICAgfQogCiAgICAgICAgIGNhc2Ugb3BfdXJzaGlmdDogewogICAg
ICAgICAgICAgTm9kZUluZGV4IG9wMSA9IGdldFRvSW50MzIoY3VycmVudEluc3RydWN0aW9uWzJd
LnUub3BlcmFuZCk7CiAgICAgICAgICAgICBOb2RlSW5kZXggb3AyID0gZ2V0VG9JbnQzMihjdXJy
ZW50SW5zdHJ1Y3Rpb25bM10udS5vcGVyYW5kKTsKLSAgICAgICAgICAgIHdlYWtseVByZWRpY3RJ
bnQzMihvcDEpOwotICAgICAgICAgICAgd2Vha2x5UHJlZGljdEludDMyKG9wMik7CiAgICAgICAg
ICAgICBOb2RlSW5kZXggcmVzdWx0OwogICAgICAgICAgICAgLy8gVGhlIHJlc3VsdCBvZiBhIHpl
cm8tZXh0ZW5kaW5nIHJpZ2h0IHNoaWZ0IGlzIHRyZWF0ZWQgYXMgYW4gdW5zaWduZWQgdmFsdWUu
CiAgICAgICAgICAgICAvLyBUaGlzIG1lYW5zIHRoYXQgaWYgdGhlIHRvcCBiaXQgaXMgc2V0LCB0
aGUgcmVzdWx0IGlzIG5vdCBpbiB0aGUgaW50MzIgcmFuZ2UsCkBAIC04NTAsNyArODAxLDcgQEAg
Ym9vbCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNpZ25lZAogICAgICAgICAgICAgICAg
IHJlc3VsdCA9IGFkZFRvR3JhcGgoQml0VVJTaGlmdCwgb3AxLCBvcDIpOwogICAgICAgICAgICAg
ICAgIHJlc3VsdCA9IG1ha2VTYWZlKGFkZFRvR3JhcGgoVUludDMyVG9OdW1iZXIsIE9wSW5mbyhO
b2RlVXNlQm90dG9tKSwgcmVzdWx0KSk7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBzZXQo
Y3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZCwgcmVzdWx0LCBQcmVkaWN0SW50MzIpOwor
ICAgICAgICAgICAgc2V0KGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQsIHJlc3VsdCk7
CiAgICAgICAgICAgICBORVhUX09QQ09ERShvcF91cnNoaWZ0KTsKICAgICAgICAgfQogCkBAIC04
NTksNyArODEwLDYgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNpZ25lZAog
ICAgICAgICBjYXNlIG9wX3ByZV9pbmM6IHsKICAgICAgICAgICAgIHVuc2lnbmVkIHNyY0RzdCA9
IGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQ7CiAgICAgICAgICAgICBOb2RlSW5kZXgg
b3AgPSBnZXRUb051bWJlcihzcmNEc3QpOwotICAgICAgICAgICAgd2Vha2x5UHJlZGljdEludDMy
KG9wKTsKICAgICAgICAgICAgIHNldChzcmNEc3QsIG1ha2VTYWZlKGFkZFRvR3JhcGgoQXJpdGhB
ZGQsIE9wSW5mbyhOb2RlVXNlQm90dG9tKSwgb3AsIG9uZSgpKSkpOwogICAgICAgICAgICAgTkVY
VF9PUENPREUob3BfcHJlX2luYyk7CiAgICAgICAgIH0KQEAgLTg2OCw3ICs4MTgsNiBAQCBib29s
IEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKHVuc2lnbmVkCiAgICAgICAgICAgICB1bnNpZ25l
ZCByZXN1bHQgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kOwogICAgICAgICAgICAg
dW5zaWduZWQgc3JjRHN0ID0gY3VycmVudEluc3RydWN0aW9uWzJdLnUub3BlcmFuZDsKICAgICAg
ICAgICAgIE5vZGVJbmRleCBvcCA9IGdldFRvTnVtYmVyKHNyY0RzdCk7Ci0gICAgICAgICAgICB3
ZWFrbHlQcmVkaWN0SW50MzIob3ApOwogICAgICAgICAgICAgc2V0KHJlc3VsdCwgb3ApOwogICAg
ICAgICAgICAgc2V0KHNyY0RzdCwgbWFrZVNhZmUoYWRkVG9HcmFwaChBcml0aEFkZCwgT3BJbmZv
KE5vZGVVc2VCb3R0b20pLCBvcCwgb25lKCkpKSk7CiAgICAgICAgICAgICBORVhUX09QQ09ERShv
cF9wb3N0X2luYyk7CkBAIC04NzcsNyArODI2LDYgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6cGFy
c2VCbG9jayh1bnNpZ25lZAogICAgICAgICBjYXNlIG9wX3ByZV9kZWM6IHsKICAgICAgICAgICAg
IHVuc2lnbmVkIHNyY0RzdCA9IGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQ7CiAgICAg
ICAgICAgICBOb2RlSW5kZXggb3AgPSBnZXRUb051bWJlcihzcmNEc3QpOwotICAgICAgICAgICAg
d2Vha2x5UHJlZGljdEludDMyKG9wKTsKICAgICAgICAgICAgIHNldChzcmNEc3QsIG1ha2VTYWZl
KGFkZFRvR3JhcGgoQXJpdGhTdWIsIE9wSW5mbyhOb2RlVXNlQm90dG9tKSwgb3AsIG9uZSgpKSkp
OwogICAgICAgICAgICAgTkVYVF9PUENPREUob3BfcHJlX2RlYyk7CiAgICAgICAgIH0KQEAgLTg4
Niw3ICs4MzQsNiBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKHVuc2lnbmVkCiAg
ICAgICAgICAgICB1bnNpZ25lZCByZXN1bHQgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVy
YW5kOwogICAgICAgICAgICAgdW5zaWduZWQgc3JjRHN0ID0gY3VycmVudEluc3RydWN0aW9uWzJd
LnUub3BlcmFuZDsKICAgICAgICAgICAgIE5vZGVJbmRleCBvcCA9IGdldFRvTnVtYmVyKHNyY0Rz
dCk7Ci0gICAgICAgICAgICB3ZWFrbHlQcmVkaWN0SW50MzIob3ApOwogICAgICAgICAgICAgc2V0
KHJlc3VsdCwgb3ApOwogICAgICAgICAgICAgc2V0KHNyY0RzdCwgbWFrZVNhZmUoYWRkVG9HcmFw
aChBcml0aFN1YiwgT3BJbmZvKE5vZGVVc2VCb3R0b20pLCBvcCwgb25lKCkpKSk7CiAgICAgICAg
ICAgICBORVhUX09QQ09ERShvcF9wb3N0X2RlYyk7CkBAIC04OTcsMTMgKzg0NCw2IEBAIGJvb2wg
Qnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2sodW5zaWduZWQKICAgICAgICAgY2FzZSBvcF9hZGQ6
IHsKICAgICAgICAgICAgIE5vZGVJbmRleCBvcDEgPSBnZXQoY3VycmVudEluc3RydWN0aW9uWzJd
LnUub3BlcmFuZCk7CiAgICAgICAgICAgICBOb2RlSW5kZXggb3AyID0gZ2V0KGN1cnJlbnRJbnN0
cnVjdGlvblszXS51Lm9wZXJhbmQpOwotICAgICAgICAgICAgLy8gSWYgYm90aCBvcGVyYW5kcyBj
YW4gc3RhdGljYWxseSBiZSBkZXRlcm1pbmVkIHRvIHRoZSBudW1iZXJzLCB0aGVuIHRoaXMgaXMg
YW4gYXJpdGhtZXRpYyBhZGQuCi0gICAgICAgICAgICAvLyBPdGhlcndpc2UsIHdlIG11c3QgYXNz
dW1lIHRoaXMgbWF5IGJlIHBlcmZvcm1pbmcgYSBjb25jYXRlbmF0aW9uIHRvIGEgc3RyaW5nLgot
ICAgICAgICAgICAgaWYgKGlzU21hbGxJbnQzMkNvbnN0YW50KG9wMSkgfHwgaXNTbWFsbEludDMy
Q29uc3RhbnQob3AyKSkgewotICAgICAgICAgICAgICAgIHdlYWtseVByZWRpY3RJbnQzMihvcDEp
OwotICAgICAgICAgICAgICAgIHdlYWtseVByZWRpY3RJbnQzMihvcDIpOwotICAgICAgICAgICAg
fQotICAgICAgICAgICAgCiAgICAgICAgICAgICBpZiAobV9ncmFwaFtvcDFdLmhhc051bWJlclJl
c3VsdCgpICYmIG1fZ3JhcGhbb3AyXS5oYXNOdW1iZXJSZXN1bHQoKSkKICAgICAgICAgICAgICAg
ICBzZXQoY3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZCwgbWFrZVNhZmUoYWRkVG9HcmFw
aChBcml0aEFkZCwgT3BJbmZvKE5vZGVVc2VCb3R0b20pLCB0b051bWJlcihvcDEpLCB0b051bWJl
cihvcDIpKSkpOwogICAgICAgICAgICAgZWxzZQpAQCAtOTE0LDExICs4NTQsNiBAQCBib29sIEJ5
dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKHVuc2lnbmVkCiAgICAgICAgIGNhc2Ugb3Bfc3ViOiB7
CiAgICAgICAgICAgICBOb2RlSW5kZXggb3AxID0gZ2V0VG9OdW1iZXIoY3VycmVudEluc3RydWN0
aW9uWzJdLnUub3BlcmFuZCk7CiAgICAgICAgICAgICBOb2RlSW5kZXggb3AyID0gZ2V0VG9OdW1i
ZXIoY3VycmVudEluc3RydWN0aW9uWzNdLnUub3BlcmFuZCk7Ci0gICAgICAgICAgICBpZiAoaXNT
bWFsbEludDMyQ29uc3RhbnQob3AxKSB8fCBpc1NtYWxsSW50MzJDb25zdGFudChvcDIpKSB7Ci0g
ICAgICAgICAgICAgICAgd2Vha2x5UHJlZGljdEludDMyKG9wMSk7Ci0gICAgICAgICAgICAgICAg
d2Vha2x5UHJlZGljdEludDMyKG9wMik7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICAKICAg
ICAgICAgICAgIHNldChjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kLCBtYWtlU2FmZShh
ZGRUb0dyYXBoKEFyaXRoU3ViLCBPcEluZm8oTm9kZVVzZUJvdHRvbSksIG9wMSwgb3AyKSkpOwog
ICAgICAgICAgICAgTkVYVF9PUENPREUob3Bfc3ViKTsKICAgICAgICAgfQpAQCAtMTA2MiwxMiAr
OTk3LDEwIEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2sodW5zaWduZWQKICAgICAg
ICAgLy8gPT09IFByb3BlcnR5IGFjY2VzcyBvcGVyYXRpb25zID09PQogCiAgICAgICAgIGNhc2Ug
b3BfZ2V0X2J5X3ZhbDogewotICAgICAgICAgICAgUHJlZGljdGVkVHlwZSBwcmVkaWN0aW9uID0g
Z2V0U3Ryb25nUHJlZGljdGlvbigpOworICAgICAgICAgICAgUHJlZGljdGVkVHlwZSBwcmVkaWN0
aW9uID0gZ2V0UHJlZGljdGlvbigpOwogICAgICAgICAgICAgCiAgICAgICAgICAgICBOb2RlSW5k
ZXggYmFzZSA9IGdldChjdXJyZW50SW5zdHJ1Y3Rpb25bMl0udS5vcGVyYW5kKTsKICAgICAgICAg
ICAgIE5vZGVJbmRleCBwcm9wZXJ0eSA9IGdldChjdXJyZW50SW5zdHJ1Y3Rpb25bM10udS5vcGVy
YW5kKTsKLSAgICAgICAgICAgIHdlYWtseVByZWRpY3RBcnJheShiYXNlKTsKLSAgICAgICAgICAg
IHdlYWtseVByZWRpY3RJbnQzMihwcm9wZXJ0eSk7CiAKICAgICAgICAgICAgIE5vZGVJbmRleCBn
ZXRCeVZhbCA9IGFkZFRvR3JhcGgoR2V0QnlWYWwsIE9wSW5mbygwKSwgT3BJbmZvKHByZWRpY3Rp
b24pLCBiYXNlLCBwcm9wZXJ0eSk7CiAgICAgICAgICAgICBzZXQoY3VycmVudEluc3RydWN0aW9u
WzFdLnUub3BlcmFuZCwgZ2V0QnlWYWwpOwpAQCAtMTA3OSw4ICsxMDEyLDYgQEAgYm9vbCBCeXRl
Q29kZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNpZ25lZAogICAgICAgICAgICAgTm9kZUluZGV4IGJh
c2UgPSBnZXQoY3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZCk7CiAgICAgICAgICAgICBO
b2RlSW5kZXggcHJvcGVydHkgPSBnZXQoY3VycmVudEluc3RydWN0aW9uWzJdLnUub3BlcmFuZCk7
CiAgICAgICAgICAgICBOb2RlSW5kZXggdmFsdWUgPSBnZXQoY3VycmVudEluc3RydWN0aW9uWzNd
LnUub3BlcmFuZCk7Ci0gICAgICAgICAgICB3ZWFrbHlQcmVkaWN0QXJyYXkoYmFzZSk7Ci0gICAg
ICAgICAgICB3ZWFrbHlQcmVkaWN0SW50MzIocHJvcGVydHkpOwogCiAgICAgICAgICAgICBhZGRU
b0dyYXBoKFB1dEJ5VmFsLCBiYXNlLCBwcm9wZXJ0eSwgdmFsdWUpOwogCkBAIC0xMDkwLDcgKzEw
MjEsNyBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKHVuc2lnbmVkCiAgICAgICAg
IGNhc2Ugb3BfbWV0aG9kX2NoZWNrOiB7CiAgICAgICAgICAgICBJbnN0cnVjdGlvbiogZ2V0SW5z
dHJ1Y3Rpb24gPSBjdXJyZW50SW5zdHJ1Y3Rpb24gKyBPUENPREVfTEVOR1RIKG9wX21ldGhvZF9j
aGVjayk7CiAgICAgICAgICAgICAKLSAgICAgICAgICAgIFByZWRpY3RlZFR5cGUgcHJlZGljdGlv
biA9IGdldFN0cm9uZ1ByZWRpY3Rpb24oKTsKKyAgICAgICAgICAgIFByZWRpY3RlZFR5cGUgcHJl
ZGljdGlvbiA9IGdldFByZWRpY3Rpb24oKTsKICAgICAgICAgICAgIAogICAgICAgICAgICAgQVNT
RVJUKGludGVycHJldGVyLT5nZXRPcGNvZGVJRChnZXRJbnN0cnVjdGlvbi0+dS5vcGNvZGUpID09
IG9wX2dldF9ieV9pZCk7CiAgICAgICAgICAgICAKQEAgLTExMjQsNyArMTA1NSw3IEBAIGJvb2wg
Qnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2sodW5zaWduZWQKICAgICAgICAgICAgIGNvbnRpbnVl
OwogICAgICAgICB9CiAgICAgICAgIGNhc2Ugb3BfZ2V0X3Njb3BlZF92YXI6IHsKLSAgICAgICAg
ICAgIFByZWRpY3RlZFR5cGUgcHJlZGljdGlvbiA9IGdldFN0cm9uZ1ByZWRpY3Rpb24oKTsKKyAg
ICAgICAgICAgIFByZWRpY3RlZFR5cGUgcHJlZGljdGlvbiA9IGdldFByZWRpY3Rpb24oKTsKICAg
ICAgICAgICAgIGludCBkc3QgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kOwogICAg
ICAgICAgICAgaW50IHNsb3QgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bMl0udS5vcGVyYW5kOwogICAg
ICAgICAgICAgaW50IGRlcHRoID0gY3VycmVudEluc3RydWN0aW9uWzNdLnUub3BlcmFuZDsKQEAg
LTExNDIsNyArMTA3Myw3IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2sodW5zaWdu
ZWQKICAgICAgICAgICAgIE5FWFRfT1BDT0RFKG9wX3B1dF9zY29wZWRfdmFyKTsKICAgICAgICAg
fQogICAgICAgICBjYXNlIG9wX2dldF9ieV9pZDogewotICAgICAgICAgICAgUHJlZGljdGVkVHlw
ZSBwcmVkaWN0aW9uID0gZ2V0U3Ryb25nUHJlZGljdGlvbigpOworICAgICAgICAgICAgUHJlZGlj
dGVkVHlwZSBwcmVkaWN0aW9uID0gZ2V0UHJlZGljdGlvbigpOwogICAgICAgICAgICAgCiAgICAg
ICAgICAgICBOb2RlSW5kZXggYmFzZSA9IGdldChjdXJyZW50SW5zdHJ1Y3Rpb25bMl0udS5vcGVy
YW5kKTsKICAgICAgICAgICAgIHVuc2lnbmVkIGlkZW50aWZpZXJOdW1iZXIgPSBjdXJyZW50SW5z
dHJ1Y3Rpb25bM10udS5vcGVyYW5kOwpAQCAtMTE4OCwxMSArMTExOSwxMSBAQCBib29sIEJ5dGVD
b2RlUGFyc2VyOjpwYXJzZUJsb2NrKHVuc2lnbmVkCiAgICAgICAgIH0KIAogICAgICAgICBjYXNl
IG9wX2dldF9nbG9iYWxfdmFyOiB7Ci0gICAgICAgICAgICBQcmVkaWN0ZWRUeXBlIHByZWRpY3Rp
b24gPSBnZXRTdHJvbmdQcmVkaWN0aW9uKCk7CisgICAgICAgICAgICBQcmVkaWN0ZWRUeXBlIHBy
ZWRpY3Rpb24gPSBnZXRQcmVkaWN0aW9uKCk7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIE5v
ZGVJbmRleCBnZXRHbG9iYWxWYXIgPSBhZGRUb0dyYXBoKEdldEdsb2JhbFZhciwgT3BJbmZvKGN1
cnJlbnRJbnN0cnVjdGlvblsyXS51Lm9wZXJhbmQpKTsKICAgICAgICAgICAgIHNldChjdXJyZW50
SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kLCBnZXRHbG9iYWxWYXIpOwotICAgICAgICAgICAgbV9n
cmFwaC5wcmVkaWN0R2xvYmFsVmFyKGN1cnJlbnRJbnN0cnVjdGlvblsyXS51Lm9wZXJhbmQsIHBy
ZWRpY3Rpb24gJiB+UHJlZGljdGlvblRhZ01hc2ssIFN0cm9uZ1ByZWRpY3Rpb24pOworICAgICAg
ICAgICAgbV9ncmFwaC5wcmVkaWN0R2xvYmFsVmFyKGN1cnJlbnRJbnN0cnVjdGlvblsyXS51Lm9w
ZXJhbmQsIHByZWRpY3Rpb24pOwogICAgICAgICAgICAgTkVYVF9PUENPREUob3BfZ2V0X2dsb2Jh
bF92YXIpOwogICAgICAgICB9CiAKQEAgLTE0MjQsNyArMTM1NSw3IEBAIGJvb2wgQnl0ZUNvZGVQ
YXJzZXI6OnBhcnNlQmxvY2sodW5zaWduZWQKICAgICAgICAgICAgIE5FWFRfT1BDT0RFKG9wX2Nh
bGxfcHV0X3Jlc3VsdCk7CiAKICAgICAgICAgY2FzZSBvcF9yZXNvbHZlOiB7Ci0gICAgICAgICAg
ICBQcmVkaWN0ZWRUeXBlIHByZWRpY3Rpb24gPSBnZXRTdHJvbmdQcmVkaWN0aW9uKCk7CisgICAg
ICAgICAgICBQcmVkaWN0ZWRUeXBlIHByZWRpY3Rpb24gPSBnZXRQcmVkaWN0aW9uKCk7CiAgICAg
ICAgICAgICAKICAgICAgICAgICAgIHVuc2lnbmVkIGlkZW50aWZpZXIgPSBjdXJyZW50SW5zdHJ1
Y3Rpb25bMl0udS5vcGVyYW5kOwogCkBAIC0xNDM1LDcgKzEzNjYsNyBAQCBib29sIEJ5dGVDb2Rl
UGFyc2VyOjpwYXJzZUJsb2NrKHVuc2lnbmVkCiAgICAgICAgIH0KIAogICAgICAgICBjYXNlIG9w
X3Jlc29sdmVfYmFzZTogewotICAgICAgICAgICAgUHJlZGljdGVkVHlwZSBwcmVkaWN0aW9uID0g
Z2V0U3Ryb25nUHJlZGljdGlvbigpOworICAgICAgICAgICAgUHJlZGljdGVkVHlwZSBwcmVkaWN0
aW9uID0gZ2V0UHJlZGljdGlvbigpOwogICAgICAgICAgICAgCiAgICAgICAgICAgICB1bnNpZ25l
ZCBpZGVudGlmaWVyID0gY3VycmVudEluc3RydWN0aW9uWzJdLnUub3BlcmFuZDsKIApAQCAtMTQ0
Niw3ICsxMzc3LDcgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNpZ25lZAog
ICAgICAgICB9CiAgICAgICAgICAgICAKICAgICAgICAgY2FzZSBvcF9yZXNvbHZlX2dsb2JhbDog
ewotICAgICAgICAgICAgUHJlZGljdGVkVHlwZSBwcmVkaWN0aW9uID0gZ2V0U3Ryb25nUHJlZGlj
dGlvbigpOworICAgICAgICAgICAgUHJlZGljdGVkVHlwZSBwcmVkaWN0aW9uID0gZ2V0UHJlZGlj
dGlvbigpOwogICAgICAgICAgICAgCiAgICAgICAgICAgICBOb2RlSW5kZXggcmVzb2x2ZSA9IGFk
ZFRvR3JhcGgoUmVzb2x2ZUdsb2JhbCwgT3BJbmZvKG1fZ3JhcGgubV9yZXNvbHZlR2xvYmFsRGF0
YS5zaXplKCkpLCBPcEluZm8ocHJlZGljdGlvbikpOwogICAgICAgICAgICAgbV9ncmFwaC5tX3Jl
c29sdmVHbG9iYWxEYXRhLmFwcGVuZChSZXNvbHZlR2xvYmFsRGF0YSgpKTsKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguY3BwCShyZXZpc2lvbiA5NTkyNykKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMDYs
MTMgKzIwNiw4IEBAIHZvaWQgR3JhcGg6OnByZWRpY3RBcmd1bWVudFR5cGVzKEV4ZWNTdGEKICAg
ICBpZiAoZXhlYykgewogICAgICAgICBzaXplX3QgbnVtYmVyT2ZBcmd1bWVudHMgPSBzdGQ6Om1p
bihleGVjLT5hcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcygpLCBtX3ByZWRpY3Rpb25zLm51bWJl
ck9mQXJndW1lbnRzKCkpOwogICAgICAgICAKLSAgICAgICAgZm9yIChzaXplX3QgYXJnID0gMTsg
YXJnIDwgbnVtYmVyT2ZBcmd1bWVudHM7ICsrYXJnKSB7Ci0gICAgICAgICAgICBKU1ZhbHVlIGFy
Z3VtZW50VmFsdWUgPSBleGVjLT5hcmd1bWVudChhcmcgLSAxKTsKLSAgICAgICAgICAgIGlmIChh
cmd1bWVudFZhbHVlLmlzSW50MzIoKSkKLSAgICAgICAgICAgICAgICBtX3ByZWRpY3Rpb25zLnBy
ZWRpY3RBcmd1bWVudChhcmcsIFByZWRpY3RJbnQzMiwgV2Vha1ByZWRpY3Rpb24pOwotICAgICAg
ICAgICAgZWxzZSBpZiAoYXJndW1lbnRWYWx1ZS5pc0RvdWJsZSgpKQotICAgICAgICAgICAgICAg
IG1fcHJlZGljdGlvbnMucHJlZGljdEFyZ3VtZW50KGFyZywgUHJlZGljdERvdWJsZSwgV2Vha1By
ZWRpY3Rpb24pOwotICAgICAgICB9CisgICAgICAgIGZvciAoc2l6ZV90IGFyZyA9IDE7IGFyZyA8
IG51bWJlck9mQXJndW1lbnRzOyArK2FyZykKKyAgICAgICAgICAgIG1fcHJlZGljdGlvbnMucHJl
ZGljdEFyZ3VtZW50KGFyZywgcHJlZGljdGlvbkZyb21WYWx1ZShleGVjLT5hcmd1bWVudChhcmcg
LSAxKSkpOwogICAgIH0KICAgICAKICAgICBBU1NFUlQoY29kZUJsb2NrKTsKQEAgLTIyMCwxMiAr
MjE1LDEyIEBAIHZvaWQgR3JhcGg6OnByZWRpY3RBcmd1bWVudFR5cGVzKEV4ZWNTdGEKIAogICAg
IENvZGVCbG9jayogcHJvZmlsZWRDb2RlQmxvY2sgPSBjb2RlQmxvY2stPmFsdGVybmF0aXZlKCk7
CiAgICAgQVNTRVJUKGNvZGVCbG9jay0+bV9udW1QYXJhbWV0ZXJzID49IDEpOwotICAgIGZvciAo
c2l6ZV90IGFyZyA9IDE7IGFyZyA8IHN0YXRpY19jYXN0PHNpemVfdD4oY29kZUJsb2NrLT5tX251
bVBhcmFtZXRlcnMpOyArK2FyZykgeworICAgIGZvciAoc2l6ZV90IGFyZyA9IDA7IGFyZyA8IHN0
YXRpY19jYXN0PHNpemVfdD4oY29kZUJsb2NrLT5tX251bVBhcmFtZXRlcnMpOyArK2FyZykgewog
ICAgICAgICBWYWx1ZVByb2ZpbGUqIHByb2ZpbGUgPSBwcm9maWxlZENvZGVCbG9jay0+dmFsdWVQ
cm9maWxlRm9yQXJndW1lbnQoYXJnKTsKICAgICAgICAgaWYgKCFwcm9maWxlKQogICAgICAgICAg
ICAgY29udGludWU7CiAgICAgICAgIAotICAgICAgICBtX3ByZWRpY3Rpb25zLnByZWRpY3RBcmd1
bWVudChhcmcsIHByb2ZpbGUtPmNvbXB1dGVVcGRhdGVkUHJlZGljdGlvbigpICYgflByZWRpY3Rp
b25UYWdNYXNrLCBTdHJvbmdQcmVkaWN0aW9uKTsKKyAgICAgICAgbV9wcmVkaWN0aW9ucy5wcmVk
aWN0QXJndW1lbnQoYXJnLCBwcm9maWxlLT5jb21wdXRlVXBkYXRlZFByZWRpY3Rpb24oKSk7CiAg
ICAgICAgIAogI2lmIEVOQUJMRShERkdfREVCVUdfVkVSQk9TRSkKICAgICAgICAgcHJpbnRmKCJB
cmd1bWVudCBbJWx1XSBwcmVkaWN0aW9uOiAlc1xuIiwgYXJnLCBwcmVkaWN0aW9uVG9TdHJpbmco
bV9wcmVkaWN0aW9ucy5nZXRBcmd1bWVudFByZWRpY3Rpb24oYXJnKSkpOwpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHR3JhcGguaAkocmV2aXNpb24gOTU5MjcpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmgJKHdvcmtpbmcgY29weSkKQEAgLTE3NiwyNCArMTc2
LDI0IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIG1fcHJlZGljdGlvbnM7CiAgICAgfQogICAg
IAotICAgIGJvb2wgcHJlZGljdChpbnQgb3BlcmFuZCwgUHJlZGljdGVkVHlwZSBwcmVkaWN0aW9u
LCBQcmVkaWN0aW9uU291cmNlIHNvdXJjZSkKKyAgICBib29sIHByZWRpY3QoaW50IG9wZXJhbmQs
IFByZWRpY3RlZFR5cGUgcHJlZGljdGlvbikKICAgICB7Ci0gICAgICAgIHJldHVybiBtX3ByZWRp
Y3Rpb25zLnByZWRpY3Qob3BlcmFuZCwgcHJlZGljdGlvbiwgc291cmNlKTsKKyAgICAgICAgcmV0
dXJuIG1fcHJlZGljdGlvbnMucHJlZGljdChvcGVyYW5kLCBwcmVkaWN0aW9uKTsKICAgICB9CiAg
ICAgCi0gICAgYm9vbCBwcmVkaWN0R2xvYmFsVmFyKHVuc2lnbmVkIHZhck51bWJlciwgUHJlZGlj
dGVkVHlwZSBwcmVkaWN0aW9uLCBQcmVkaWN0aW9uU291cmNlIHNvdXJjZSkKKyAgICBib29sIHBy
ZWRpY3RHbG9iYWxWYXIodW5zaWduZWQgdmFyTnVtYmVyLCBQcmVkaWN0ZWRUeXBlIHByZWRpY3Rp
b24pCiAgICAgewotICAgICAgICByZXR1cm4gbV9wcmVkaWN0aW9ucy5wcmVkaWN0R2xvYmFsVmFy
KHZhck51bWJlciwgcHJlZGljdGlvbiwgc291cmNlKTsKKyAgICAgICAgcmV0dXJuIG1fcHJlZGlj
dGlvbnMucHJlZGljdEdsb2JhbFZhcih2YXJOdW1iZXIsIHByZWRpY3Rpb24pOwogICAgIH0KICAg
ICAKLSAgICBib29sIHByZWRpY3QoTm9kZSYgbm9kZSwgUHJlZGljdGVkVHlwZSBwcmVkaWN0aW9u
LCBQcmVkaWN0aW9uU291cmNlIHNvdXJjZSkKKyAgICBib29sIHByZWRpY3QoTm9kZSYgbm9kZSwg
UHJlZGljdGVkVHlwZSBwcmVkaWN0aW9uKQogICAgIHsKICAgICAgICAgc3dpdGNoIChub2RlLm9w
KSB7CiAgICAgICAgIGNhc2UgR2V0TG9jYWw6Ci0gICAgICAgICAgICByZXR1cm4gcHJlZGljdChu
b2RlLmxvY2FsKCksIHByZWRpY3Rpb24sIHNvdXJjZSk7CisgICAgICAgICAgICByZXR1cm4gcHJl
ZGljdChub2RlLmxvY2FsKCksIHByZWRpY3Rpb24pOwogICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgIGNhc2UgR2V0R2xvYmFsVmFyOgotICAgICAgICAgICAgcmV0dXJuIHByZWRpY3RHbG9iYWxW
YXIobm9kZS52YXJOdW1iZXIoKSwgcHJlZGljdGlvbiwgc291cmNlKTsKKyAgICAgICAgICAgIHJl
dHVybiBwcmVkaWN0R2xvYmFsVmFyKG5vZGUudmFyTnVtYmVyKCksIHByZWRpY3Rpb24pOwogICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgR2V0QnlJZDoKICAgICAgICAgY2FzZSBHZXRN
ZXRob2Q6CkBAIC0yMDYsNyArMjA2LDcgQEAgcHVibGljOgogICAgICAgICBjYXNlIFJlc29sdmVC
YXNlOgogICAgICAgICBjYXNlIFJlc29sdmVCYXNlU3RyaWN0UHV0OgogICAgICAgICBjYXNlIFJl
c29sdmVHbG9iYWw6Ci0gICAgICAgICAgICByZXR1cm4gbm9kZS5wcmVkaWN0KHByZWRpY3Rpb24s
IHNvdXJjZSk7CisgICAgICAgICAgICByZXR1cm4gbm9kZS5wcmVkaWN0KHByZWRpY3Rpb24pOwog
ICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9CkBA
IC0yMjQsMTAgKzIyNCwxNSBAQCBwdWJsaWM6CiAgICAgCiAgICAgUHJlZGljdGVkVHlwZSBnZXRN
ZXRob2RDaGVja1ByZWRpY3Rpb24oTm9kZSYgbm9kZSkKICAgICB7Ci0gICAgICAgIHJldHVybiBt
YWtlUHJlZGljdGlvbihwcmVkaWN0aW9uRnJvbUNlbGwobV9tZXRob2RDaGVja0RhdGFbbm9kZS5t
ZXRob2RDaGVja0RhdGFJbmRleCgpXS5mdW5jdGlvbiksIFN0cm9uZ1ByZWRpY3Rpb24pOworICAg
ICAgICByZXR1cm4gcHJlZGljdGlvbkZyb21DZWxsKG1fbWV0aG9kQ2hlY2tEYXRhW25vZGUubWV0
aG9kQ2hlY2tEYXRhSW5kZXgoKV0uZnVuY3Rpb24pOwogICAgIH0KICAgICAKLSAgICBQcmVkaWN0
ZWRUeXBlIGdldFByZWRpY3Rpb24oTm9kZSYgbm9kZSkKKyAgICBQcmVkaWN0ZWRUeXBlIGdldEpT
Q29uc3RhbnRQcmVkaWN0aW9uKE5vZGUmIG5vZGUsIENvZGVCbG9jayogY29kZUJsb2NrKQorICAg
IHsKKyAgICAgICAgcmV0dXJuIHByZWRpY3Rpb25Gcm9tVmFsdWUobm9kZS52YWx1ZU9mSlNDb25z
dGFudE5vZGUoY29kZUJsb2NrKSk7CisgICAgfQorICAgIAorICAgIFByZWRpY3RlZFR5cGUgZ2V0
UHJlZGljdGlvbihOb2RlJiBub2RlLCBDb2RlQmxvY2sqIGNvZGVCbG9jaykKICAgICB7CiAgICAg
ICAgIE5vZGUqIG5vZGVQdHIgPSAmbm9kZTsKICAgICAgICAgCkBAIC0yNTEsNiArMjU2LDggQEAg
cHVibGljOgogICAgICAgICAgICAgcmV0dXJuIG5vZGVQdHItPmdldFByZWRpY3Rpb24oKTsKICAg
ICAgICAgY2FzZSBDaGVja01ldGhvZDoKICAgICAgICAgICAgIHJldHVybiBnZXRNZXRob2RDaGVj
a1ByZWRpY3Rpb24oKm5vZGVQdHIpOworICAgICAgICBjYXNlIEpTQ29uc3RhbnQ6CisgICAgICAg
ICAgICByZXR1cm4gZ2V0SlNDb25zdGFudFByZWRpY3Rpb24oKm5vZGVQdHIsIGNvZGVCbG9jayk7
CiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICByZXR1cm4gUHJlZGljdE5vbmU7CiAgICAg
ICAgIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29kZUdlbmVyYXRv
ci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb2Rl
R2VuZXJhdG9yLmNwcAkocmV2aXNpb24gOTU5MjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0pJVENvZGVHZW5lcmF0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMjI5LDcgKzEy
MjksNyBAQCB2b2lkIEpJVENvZGVHZW5lcmF0b3I6OndyaXRlQmFycmllcihHUFJSCiAjaWYgRU5B
QkxFKEdHQykKICAgICBKSVRDb21waWxlcjo6SnVtcCByaHNOb3RDZWxsOwogICAgIGJvb2wgaGFk
Q2VsbENoZWNrID0gZmFsc2U7Ci0gICAgaWYgKCFpc0tub3duQ2VsbCh2YWx1ZUluZGV4KSAmJiAh
aXNDZWxsUHJlZGljdGlvbihtX2ppdC5ncmFwaCgpLmdldFByZWRpY3Rpb24obV9qaXQuZ3JhcGgo
KVt2YWx1ZUluZGV4XSkpKSB7CisgICAgaWYgKCFpc0tub3duQ2VsbCh2YWx1ZUluZGV4KSAmJiAh
aXNDZWxsUHJlZGljdGlvbihtX2ppdC5nZXRQcmVkaWN0aW9uKHZhbHVlSW5kZXgpKSkgewogICAg
ICAgICBoYWRDZWxsQ2hlY2sgPSB0cnVlOwogICAgICAgICByaHNOb3RDZWxsID0gbV9qaXQuYnJh
bmNoVGVzdFB0cihNYWNyb0Fzc2VtYmxlcjo6Tm9uWmVybywgdmFsdWVHUFIsIEdQUkluZm86OnRh
Z01hc2tSZWdpc3Rlcik7CiAgICAgfQpAQCAtMTI3MCw3ICsxMjcwLDcgQEAgdm9pZCBKSVRDb2Rl
R2VuZXJhdG9yOjp3cml0ZUJhcnJpZXIoSlNDZQogI2lmIEVOQUJMRShHR0MpCiAgICAgSklUQ29t
cGlsZXI6Okp1bXAgcmhzTm90Q2VsbDsKICAgICBib29sIGhhZENlbGxDaGVjayA9IGZhbHNlOwot
ICAgIGlmICghaXNLbm93bkNlbGwodmFsdWVJbmRleCkgJiYgIWlzQ2VsbFByZWRpY3Rpb24obV9q
aXQuZ3JhcGgoKS5nZXRQcmVkaWN0aW9uKG1faml0LmdyYXBoKClbdmFsdWVJbmRleF0pKSkgewor
ICAgIGlmICghaXNLbm93bkNlbGwodmFsdWVJbmRleCkgJiYgIWlzQ2VsbFByZWRpY3Rpb24obV9q
aXQuZ2V0UHJlZGljdGlvbih2YWx1ZUluZGV4KSkpIHsKICAgICAgICAgaGFkQ2VsbENoZWNrID0g
dHJ1ZTsKICAgICAgICAgcmhzTm90Q2VsbCA9IG1faml0LmJyYW5jaFRlc3RQdHIoTWFjcm9Bc3Nl
bWJsZXI6Ok5vblplcm8sIHZhbHVlR1BSLCBHUFJJbmZvOjp0YWdNYXNrUmVnaXN0ZXIpOwogICAg
IH0KQEAgLTE3OTYsNyArMTc5Niw3IEBAIHZvaWQgSklUQ29kZUdlbmVyYXRvcjo6ZW1pdEJyYW5j
aChOb2RlJiAKICAgICAgICAgR1BSVGVtcG9yYXJ5IHJlc3VsdCh0aGlzKTsKICAgICAgICAgR1BS
UmVnIHJlc3VsdEdQUiA9IHJlc3VsdC5ncHIoKTsKICAgICAgICAgCi0gICAgICAgIGJvb2wgcHJl
ZGljdEJvb2xlYW4gPSBpc0Jvb2xlYW5QcmVkaWN0aW9uKG1faml0LmdyYXBoKCkuZ2V0UHJlZGlj
dGlvbihtX2ppdC5ncmFwaCgpW25vZGUuY2hpbGQxKCldKSk7CisgICAgICAgIGJvb2wgcHJlZGlj
dEJvb2xlYW4gPSBpc0Jvb2xlYW5QcmVkaWN0aW9uKG1faml0LmdldFByZWRpY3Rpb24obm9kZS5j
aGlsZDEoKSkpOwogICAgIAogICAgICAgICBpZiAocHJlZGljdEJvb2xlYW4pIHsKICAgICAgICAg
ICAgIGFkZEJyYW5jaChtX2ppdC5icmFuY2hQdHIoTWFjcm9Bc3NlbWJsZXI6OkVxdWFsLCB2YWx1
ZUdQUiwgTWFjcm9Bc3NlbWJsZXI6OkltbVB0cihKU1ZhbHVlOjplbmNvZGUoanNCb29sZWFuKGZh
bHNlKSkpKSwgbm90VGFrZW4pOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdK
SVRDb21waWxlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
SklUQ29tcGlsZXIuaAkocmV2aXNpb24gOTU5MjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0pJVENvbXBpbGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTI3Miw2ICsyNzIsMTAgQEAg
cHVibGljOgogICAgIGRvdWJsZSB2YWx1ZU9mTnVtYmVyQ29uc3RhbnQoTm9kZUluZGV4IG5vZGVJ
bmRleCkgeyByZXR1cm4gZ3JhcGgoKS52YWx1ZU9mTnVtYmVyQ29uc3RhbnQoY29kZUJsb2NrKCks
IG5vZGVJbmRleCk7IH0KICAgICBib29sIHZhbHVlT2ZCb29sZWFuQ29uc3RhbnQoTm9kZUluZGV4
IG5vZGVJbmRleCkgeyByZXR1cm4gZ3JhcGgoKS52YWx1ZU9mQm9vbGVhbkNvbnN0YW50KGNvZGVC
bG9jaygpLCBub2RlSW5kZXgpOyB9CiAgICAgSlNGdW5jdGlvbiogdmFsdWVPZkZ1bmN0aW9uQ29u
c3RhbnQoTm9kZUluZGV4IG5vZGVJbmRleCkgeyByZXR1cm4gZ3JhcGgoKS52YWx1ZU9mRnVuY3Rp
b25Db25zdGFudChjb2RlQmxvY2soKSwgbm9kZUluZGV4KTsgfQorICAgIAorICAgIC8vIEhlbHBl
ciBtZXRob2RzIHRvIGdldCBwcmVkaWN0aW9ucworICAgIFByZWRpY3RlZFR5cGUgZ2V0UHJlZGlj
dGlvbihOb2RlJiBub2RlKSB7IHJldHVybiBncmFwaCgpLmdldFByZWRpY3Rpb24obm9kZSwgY29k
ZUJsb2NrKCkpOyB9CisgICAgUHJlZGljdGVkVHlwZSBnZXRQcmVkaWN0aW9uKE5vZGVJbmRleCBu
b2RlSW5kZXgpIHsgcmV0dXJuIGdldFByZWRpY3Rpb24oZ3JhcGgoKVtub2RlSW5kZXhdKTsgfQog
CiAjaWYgVVNFKEpTVkFMVUUzMl82NCkKICAgICB2b2lkKiBhZGRyZXNzT2ZEb3VibGVDb25zdGFu
dChOb2RlSW5kZXggbm9kZUluZGV4KQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdOb2RlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2Rl
LmgJKHJldmlzaW9uIDk1OTI3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2Rl
LmgJKHdvcmtpbmcgY29weSkKQEAgLTQyNiwxNCArNDI2LDIwIEBAIHN0cnVjdCBOb2RlIHsKICAg
ICAgICAgcmV0dXJuIG1fb3BJbmZvOwogICAgIH0KICAgICAKKyAgICAvLyBOT1RFOiB0aGlzIG9u
bHkgd29ya3MgZm9yIEpTQ29uc3RhbnQgbm9kZXMuCisgICAgSlNWYWx1ZSB2YWx1ZU9mSlNDb25z
dGFudE5vZGUoQ29kZUJsb2NrKiBjb2RlQmxvY2spCisgICAgeworICAgICAgICByZXR1cm4gY29k
ZUJsb2NrLT5jb25zdGFudFJlZ2lzdGVyKEZpcnN0Q29uc3RhbnRSZWdpc3RlckluZGV4ICsgY29u
c3RhbnROdW1iZXIoKSkuZ2V0KCk7CisgICAgfQorCiAgICAgYm9vbCBpc0ludDMyQ29uc3RhbnQo
Q29kZUJsb2NrKiBjb2RlQmxvY2spCiAgICAgewotICAgICAgICByZXR1cm4gaXNDb25zdGFudCgp
ICYmIHZhbHVlT2ZKU0NvbnN0YW50KGNvZGVCbG9jaykuaXNJbnQzMigpOworICAgICAgICByZXR1
cm4gaXNDb25zdGFudCgpICYmIHZhbHVlT2ZKU0NvbnN0YW50Tm9kZShjb2RlQmxvY2spLmlzSW50
MzIoKTsKICAgICB9CiAgICAgCiAgICAgYm9vbCBpc0RvdWJsZUNvbnN0YW50KENvZGVCbG9jayog
Y29kZUJsb2NrKQogICAgIHsKLSAgICAgICAgYm9vbCByZXN1bHQgPSBpc0NvbnN0YW50KCkgJiYg
dmFsdWVPZkpTQ29uc3RhbnQoY29kZUJsb2NrKS5pc0RvdWJsZSgpOworICAgICAgICBib29sIHJl
c3VsdCA9IGlzQ29uc3RhbnQoKSAmJiB2YWx1ZU9mSlNDb25zdGFudE5vZGUoY29kZUJsb2NrKS5p
c0RvdWJsZSgpOwogICAgICAgICBpZiAocmVzdWx0KQogICAgICAgICAgICAgQVNTRVJUKCFpc0lu
dDMyQ29uc3RhbnQoY29kZUJsb2NrKSk7CiAgICAgICAgIHJldHVybiByZXN1bHQ7CkBAIC00NDEs
MTQgKzQ0NywxNCBAQCBzdHJ1Y3QgTm9kZSB7CiAgICAgCiAgICAgYm9vbCBpc051bWJlckNvbnN0
YW50KENvZGVCbG9jayogY29kZUJsb2NrKQogICAgIHsKLSAgICAgICAgYm9vbCByZXN1bHQgPSBp
c0NvbnN0YW50KCkgJiYgdmFsdWVPZkpTQ29uc3RhbnQoY29kZUJsb2NrKS5pc051bWJlcigpOwor
ICAgICAgICBib29sIHJlc3VsdCA9IGlzQ29uc3RhbnQoKSAmJiB2YWx1ZU9mSlNDb25zdGFudE5v
ZGUoY29kZUJsb2NrKS5pc051bWJlcigpOwogICAgICAgICBBU1NFUlQocmVzdWx0ID09IChpc0lu
dDMyQ29uc3RhbnQoY29kZUJsb2NrKSB8fCBpc0RvdWJsZUNvbnN0YW50KGNvZGVCbG9jaykpKTsK
ICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CiAgICAgCiAgICAgYm9vbCBpc0Jvb2xlYW5D
b25zdGFudChDb2RlQmxvY2sqIGNvZGVCbG9jaykKICAgICB7Ci0gICAgICAgIHJldHVybiBpc0Nv
bnN0YW50KCkgJiYgdmFsdWVPZkpTQ29uc3RhbnQoY29kZUJsb2NrKS5pc0Jvb2xlYW4oKTsKKyAg
ICAgICAgcmV0dXJuIGlzQ29uc3RhbnQoKSAmJiB2YWx1ZU9mSlNDb25zdGFudE5vZGUoY29kZUJs
b2NrKS5pc0Jvb2xlYW4oKTsKICAgICB9CiAgICAgCiAgICAgYm9vbCBoYXNMb2NhbCgpCkBAIC02
NTUsMjIgKzY2MSwxMSBAQCBzdHJ1Y3QgTm9kZSB7CiAgICAgICAgIHJldHVybiBzdGF0aWNfY2Fz
dDxQcmVkaWN0ZWRUeXBlPihtX29wSW5mbzIpOwogICAgIH0KICAgICAKLSAgICBib29sIHByZWRp
Y3QoUHJlZGljdGVkVHlwZSBwcmVkaWN0aW9uLCBQcmVkaWN0aW9uU291cmNlIHNvdXJjZSkKKyAg
ICBib29sIHByZWRpY3QoUHJlZGljdGVkVHlwZSBwcmVkaWN0aW9uKQogICAgIHsKICAgICAgICAg
QVNTRVJUKGhhc1ByZWRpY3Rpb24oKSk7CiAgICAgICAgIAotICAgICAgICAvLyBXZSBoYXZlIHBy
ZXZpb3VzbHkgZm91bmQgZW1waXJpY2FsbHkgdGhhdCBhc2NyaWJpbmcgc3RhdGljIHByZWRpY3Rp
b25zCi0gICAgICAgIC8vIHRvIGhlYXAgbG9hZHMgYXMgd2VsbCBhcyBjYWxscyBpcyBub3QgcHJv
Zml0YWJsZSwgYXMgdGhlc2UgcHJlZGljdGlvbnMKLSAgICAgICAgLy8gYXJlIHdyb25nIHRvbyBv
ZnRlbi4gSGVuY2UsIHRoaXMgY29tcGxldGVseSBpZ25vcmVzIHN0YXRpYyBwcmVkaWN0aW9ucy4K
LSAgICAgICAgaWYgKHNvdXJjZSA9PSBXZWFrUHJlZGljdGlvbikKLSAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKLSAgICAgICAgCi0gICAgICAgIGlmIChwcmVkaWN0aW9uID09IFByZWRpY3ROb25l
KQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAKLSAgICAgICAgQVNTRVJUKHNv
dXJjZSA9PSBTdHJvbmdQcmVkaWN0aW9uKTsKLSAgICAgICAgCi0gICAgICAgIHJldHVybiBtZXJn
ZVByZWRpY3Rpb24obV9vcEluZm8yLCBtYWtlUHJlZGljdGlvbihwcmVkaWN0aW9uLCBzb3VyY2Up
KTsKKyAgICAgICAgcmV0dXJuIG1lcmdlUHJlZGljdGlvbihtX29wSW5mbzIsIHByZWRpY3Rpb24p
OwogICAgIH0KICAgICAKICAgICBib29sIGhhc01ldGhvZENoZWNrRGF0YSgpCkBAIC04MDMsMTQg
Kzc5OCw2IEBAIHN0cnVjdCBOb2RlIHsKICAgICB9IGNoaWxkcmVuOwogCiBwcml2YXRlOgotICAg
IC8vIFRoaXMgaXMgcHJpdmF0ZSBiZWNhdXNlIGl0IG9ubHkgd29ya3MgZm9yIHRoZSBKU0NvbnN0
YW50IG9wLiBUaGUgREZHIGlzIHdyaXR0ZW4gdW5kZXIgdGhlCi0gICAgLy8gYXNzdW1wdGlvbiB0
aGF0ICJ2YWx1ZU9mSlNDb25zdGFudCIgY2FuIGNvcnJlY3RseSByZXR1cm4gYSBjb25zdGFudCBm
b3IgYW55IERGRyBub2RlIGZvcgotICAgIC8vIHdoaWNoIGhhc0NvbnN0YW50KCkgaXMgdHJ1ZS4K
LSAgICBKU1ZhbHVlIHZhbHVlT2ZKU0NvbnN0YW50KENvZGVCbG9jayogY29kZUJsb2NrKQotICAg
IHsKLSAgICAgICAgcmV0dXJuIGNvZGVCbG9jay0+Y29uc3RhbnRSZWdpc3RlcihGaXJzdENvbnN0
YW50UmVnaXN0ZXJJbmRleCArIGNvbnN0YW50TnVtYmVyKCkpLmdldCgpOwotICAgIH0KLQogICAg
IC8vIFRoZSB2aXJ0dWFsIHJlZ2lzdGVyIG51bWJlciAoc3BpbGwgbG9jYXRpb24pIGFzc29jaWF0
ZWQgd2l0aCB0aGlzIC4KICAgICBWaXJ0dWFsUmVnaXN0ZXIgbV92aXJ0dWFsUmVnaXN0ZXI7CiAg
ICAgLy8gVGhlIG51bWJlciBvZiB1c2VzIG9mIHRoZSByZXN1bHQgb2YgdGhpcyBvcGVyYXRpb24g
KCsxIGZvciAnbXVzdCBnZW5lcmF0ZScgbm9kZXMsIHdoaWNoIGhhdmUgc2lkZS1lZmZlY3RzKS4K
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJvcGFnYXRvci5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcm9wYWdhdG9yLmNwcAkocmV2
aXNpb24gOTU5MjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Byb3BhZ2F0b3Iu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NywyNSArNDcsMTEgQEAgcHVibGljOgogICAgICAgICAv
LyBzcGVjdWxhdGlvbiB0aGF0IGRvZXMgbm90IGNvbnRyYXZlbmUgdGhlIGV4cGVjdGVkIHZhbHVl
cy4KICAgICAgICAgbV9wcmVkaWN0aW9ucy5yZXNpemUobV9ncmFwaC5zaXplKCkpOwogICAgICAg
ICAKLSAgICAgICAgLy8gVXNlcyBpcyBhIGJhY2t3YXJkIGZsb3cgcHJvcGVydHkgdGhhdCBwcm9w
YWdhdGVzIHRoZSBoYXJkIGV4cGVjdGF0aW9ucyBhdAotICAgICAgICAvLyBjZXJ0YWluIHVzZXMg
dG8gdGhlaXIgdmFsdWUgc291cmNlcywgZW5zdXJpbmcgdGhhdCBwcmVkaWN0aW9ucyBhYm91dAot
ICAgICAgICAvLyB2YWx1ZXMgZG8gbm90IGNvbnRyYXZlbmUgdGhlIGNvZGUgaXRzZWxmLiBUaGlz
IGNvbWVzIHVwIG9ubHkgaW4gdGhlCi0gICAgICAgIC8vIGNhc2VzIG9mIG9idmlvdXMgY2VsbCB1
c2VzLCBsaWtlIEdldEJ5SWQgYW5kIGZyaWVuZHMgYXMgd2VsbCBhcyBDYWxsLgotICAgICAgICAv
LyBXZSdyZSBlc3NlbnRpYWxseSBzdGF0aWNhbGx5IHNwZWN1bGF0aW5nIHRoYXQgaWYgdGhlIHZh
bHVlIHByb2ZpbGUgaW5kaWNhdGVzCi0gICAgICAgIC8vIHRoYXQgb25seSBib29sZWFucyAoZm9y
IGV4YW1wbGUpIGZsb3cgaW50byBhIEdldEJ5SWQsIHRoZW4gdGhlIHZhbHVlCi0gICAgICAgIC8v
IHByb2ZpbGUgaXMgc2ltcGx5IHdyb25nIGR1ZSB0byBpbnN1ZmZpY2llbnQgY292ZXJhZ2UgYW5k
IG5lZWRzIHRvIGJlCi0gICAgICAgIC8vIGFkanVzdGVkIGFjY29yZGluZ2x5LiBUaGUgYWx0ZXJu
YXRpdmVzIHdvdWxkIGJlIHRvIGFzc3VtZSBlaXRoZXIKLSAgICAgICAgLy8gdGhhdCB0aGUgR2V0
QnlJZCBuZXZlciBleGVjdXRlcywgb3IgYWx3YXlzIGV4ZWN1dGVzIG9uIGEgYm9vbGVhbiBsZWFk
aW5nCi0gICAgICAgIC8vIHRvIHdoYXRldmVyIGJpemFycmUgYmVoYXZpb3IgdGhhdCdzIHN1cHBv
c2VkIHRvIGNhdXNlLgotICAgICAgICBtX3VzZXMucmVzaXplKG1fZ3JhcGguc2l6ZSgpKTsKLSAg
ICAgICAgbV92YXJpYWJsZVVzZXMuaW5pdGlhbGl6ZVNpbWlsYXJUbyhtX2dyYXBoLnByZWRpY3Rp
b25zKCkpOwotICAgICAgICAKICAgICAgICAgLy8gUmVwbGFjZW1lbnRzIGFyZSB1c2VkIHRvIGlt
cGxlbWVudCBsb2NhbCBjb21tb24gc3ViZXhwcmVzc2lvbiBlbGltaW5hdGlvbi4KICAgICAgICAg
bV9yZXBsYWNlbWVudHMucmVzaXplKG1fZ3JhcGguc2l6ZSgpKTsKICAgICAgICAgCiAgICAgICAg
IGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX2dyYXBoLnNpemUoKTsgKytpKSB7CiAgICAgICAg
ICAgICBtX3ByZWRpY3Rpb25zW2ldID0gUHJlZGljdE5vbmU7Ci0gICAgICAgICAgICBtX3VzZXNb
aV0gPSBQcmVkaWN0Tm9uZTsKICAgICAgICAgICAgIG1fcmVwbGFjZW1lbnRzW2ldID0gTm9Ob2Rl
OwogICAgICAgICB9CiAgICAgICAgIApAQCAtMzA2LDEzICsyOTIsNiBAQCBwcml2YXRlOgogICAg
ICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAgICAgCi0gICAgYm9vbCBtZXJnZVVzZShOb2RlSW5k
ZXggbm9kZUluZGV4LCBQcmVkaWN0ZWRUeXBlIHByZWRpY3Rpb24pCi0gICAgewotICAgICAgICBB
U1NFUlQobV9ncmFwaFtub2RlSW5kZXhdLmhhc1Jlc3VsdCgpKTsKLSAgICAgICAgCi0gICAgICAg
IHJldHVybiBKU0M6Om1lcmdlUHJlZGljdGlvbihtX3VzZXNbbm9kZUluZGV4XSwgcHJlZGljdGlv
bik7Ci0gICAgfQotICAgIAogICAgIGJvb2wgbWVyZ2VQcmVkaWN0aW9uKFByZWRpY3RlZFR5cGUg
cHJlZGljdGlvbikKICAgICB7CiAgICAgICAgIEFTU0VSVChtX2dyYXBoW21fY29tcGlsZUluZGV4
XS5oYXNSZXN1bHQoKSk7CkBAIC0zMzUsMjMgKzMxNCwxOSBAQCBwcml2YXRlOgogICAgICAgICAK
ICAgICAgICAgc3dpdGNoIChvcCkgewogICAgICAgICBjYXNlIEpTQ29uc3RhbnQ6IHsKLSAgICAg
ICAgICAgIGNoYW5nZWQgfD0gc2V0UHJlZGljdGlvbihtYWtlUHJlZGljdGlvbihwcmVkaWN0aW9u
RnJvbVZhbHVlKG1fZ3JhcGgudmFsdWVPZkpTQ29uc3RhbnQobV9jb2RlQmxvY2ssIG1fY29tcGls
ZUluZGV4KSksIFN0cm9uZ1ByZWRpY3Rpb24pKTsKKyAgICAgICAgICAgIGNoYW5nZWQgfD0gc2V0
UHJlZGljdGlvbihwcmVkaWN0aW9uRnJvbVZhbHVlKG1fZ3JhcGgudmFsdWVPZkpTQ29uc3RhbnQo
bV9jb2RlQmxvY2ssIG1fY29tcGlsZUluZGV4KSkpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgIH0KICAgICAgICAgICAgIAogICAgICAgICBjYXNlIEdldExvY2FsOiB7Ci0gICAgICAgICAg
ICBjaGFuZ2VkIHw9IG1fZ3JhcGgucHJlZGljdChub2RlLmxvY2FsKCksIG1fdXNlc1ttX2NvbXBp
bGVJbmRleF0gJiB+UHJlZGljdGlvblRhZ01hc2ssIFN0cm9uZ1ByZWRpY3Rpb24pOwotICAgICAg
ICAgICAgY2hhbmdlZCB8PSBtX3ZhcmlhYmxlVXNlcy5wcmVkaWN0KG5vZGUubG9jYWwoKSwgbV91
c2VzW21fY29tcGlsZUluZGV4XSAmIH5QcmVkaWN0aW9uVGFnTWFzaywgU3Ryb25nUHJlZGljdGlv
bik7Ci0KICAgICAgICAgICAgIFByZWRpY3RlZFR5cGUgcHJlZGljdGlvbiA9IG1fZ3JhcGguZ2V0
UHJlZGljdGlvbihub2RlLmxvY2FsKCkpOwotICAgICAgICAgICAgaWYgKGlzU3Ryb25nUHJlZGlj
dGlvbihwcmVkaWN0aW9uKSkKKyAgICAgICAgICAgIGlmIChwcmVkaWN0aW9uKQogICAgICAgICAg
ICAgICAgIGNoYW5nZWQgfD0gbWVyZ2VQcmVkaWN0aW9uKHByZWRpY3Rpb24pOwogICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgICAgIAogICAgICAgICBjYXNlIFNldExvY2Fs
OiB7Ci0gICAgICAgICAgICBjaGFuZ2VkIHw9IG1fZ3JhcGgucHJlZGljdChub2RlLmxvY2FsKCks
IG1fcHJlZGljdGlvbnNbbm9kZS5jaGlsZDEoKV0gJiB+UHJlZGljdGlvblRhZ01hc2ssIFN0cm9u
Z1ByZWRpY3Rpb24pOwotICAgICAgICAgICAgY2hhbmdlZCB8PSBtZXJnZVVzZShub2RlLmNoaWxk
MSgpLCBtX3ZhcmlhYmxlVXNlcy5nZXRQcmVkaWN0aW9uKG5vZGUubG9jYWwoKSkpOworICAgICAg
ICAgICAgY2hhbmdlZCB8PSBtX2dyYXBoLnByZWRpY3Qobm9kZS5sb2NhbCgpLCBtX3ByZWRpY3Rp
b25zW25vZGUuY2hpbGQxKCldKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAg
ICAgICAgICAKQEAgLTM2Miw3ICszMzcsNyBAQCBwcml2YXRlOgogICAgICAgICBjYXNlIEJpdExT
aGlmdDoKICAgICAgICAgY2FzZSBCaXRVUlNoaWZ0OgogICAgICAgICBjYXNlIFZhbHVlVG9JbnQz
MjogewotICAgICAgICAgICAgY2hhbmdlZCB8PSBzZXRQcmVkaWN0aW9uKG1ha2VQcmVkaWN0aW9u
KFByZWRpY3RJbnQzMiwgU3Ryb25nUHJlZGljdGlvbikpOworICAgICAgICAgICAgY2hhbmdlZCB8
PSBzZXRQcmVkaWN0aW9uKFByZWRpY3RJbnQzMik7CiAgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgfQogCkBAIC0zNzAsMzEgKzM0NSwzMSBAQCBwcml2YXRlOgogICAgICAgICAgICAgUHJlZGlj
dGVkVHlwZSBsZWZ0ID0gbV9wcmVkaWN0aW9uc1tub2RlLmNoaWxkMSgpXTsKICAgICAgICAgICAg
IFByZWRpY3RlZFR5cGUgcmlnaHQgPSBtX3ByZWRpY3Rpb25zW25vZGUuY2hpbGQyKCldOwogICAg
ICAgICAgICAgCi0gICAgICAgICAgICBpZiAoaXNTdHJvbmdQcmVkaWN0aW9uKGxlZnQpICYmIGlz
U3Ryb25nUHJlZGljdGlvbihyaWdodCkpIHsKKyAgICAgICAgICAgIGlmIChsZWZ0ICYmIHJpZ2h0
KSB7CiAgICAgICAgICAgICAgICAgaWYgKGlzSW50MzJQcmVkaWN0aW9uKG1lcmdlUHJlZGljdGlv
bnMobGVmdCwgcmlnaHQpKSAmJiBub2RlQ2FuU3BlY3VsYXRlSW50ZWdlcihub2RlLmFyaXRoTm9k
ZUZsYWdzKCkpKQotICAgICAgICAgICAgICAgICAgICBjaGFuZ2VkIHw9IG1lcmdlUHJlZGljdGlv
bihtYWtlUHJlZGljdGlvbihQcmVkaWN0SW50MzIsIFN0cm9uZ1ByZWRpY3Rpb24pKTsKKyAgICAg
ICAgICAgICAgICAgICAgY2hhbmdlZCB8PSBtZXJnZVByZWRpY3Rpb24oUHJlZGljdEludDMyKTsK
ICAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAgIGNoYW5nZWQgfD0gbWVy
Z2VQcmVkaWN0aW9uKG1ha2VQcmVkaWN0aW9uKFByZWRpY3REb3VibGUsIFN0cm9uZ1ByZWRpY3Rp
b24pKTsKKyAgICAgICAgICAgICAgICAgICAgY2hhbmdlZCB8PSBtZXJnZVByZWRpY3Rpb24oUHJl
ZGljdERvdWJsZSk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
fQogICAgICAgICAgICAgCiAgICAgICAgIGNhc2UgVUludDMyVG9OdW1iZXI6IHsKICAgICAgICAg
ICAgIGlmIChub2RlQ2FuU3BlY3VsYXRlSW50ZWdlcihub2RlLmFyaXRoTm9kZUZsYWdzKCkpKQot
ICAgICAgICAgICAgICAgIGNoYW5nZWQgfD0gc2V0UHJlZGljdGlvbihtYWtlUHJlZGljdGlvbihQ
cmVkaWN0SW50MzIsIFN0cm9uZ1ByZWRpY3Rpb24pKTsKKyAgICAgICAgICAgICAgICBjaGFuZ2Vk
IHw9IHNldFByZWRpY3Rpb24oUHJlZGljdEludDMyKTsKICAgICAgICAgICAgIGVsc2UKLSAgICAg
ICAgICAgICAgICBjaGFuZ2VkIHw9IHNldFByZWRpY3Rpb24obWFrZVByZWRpY3Rpb24oUHJlZGlj
dE51bWJlciwgU3Ryb25nUHJlZGljdGlvbikpOworICAgICAgICAgICAgICAgIGNoYW5nZWQgfD0g
c2V0UHJlZGljdGlvbihQcmVkaWN0TnVtYmVyKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICB9CiAKICAgICAgICAgY2FzZSBWYWx1ZVRvTnVtYmVyOiB7CiAgICAgICAgICAgICBQcmVkaWN0
ZWRUeXBlIHByZWRpY3Rpb24gPSBtX3ByZWRpY3Rpb25zW25vZGUuY2hpbGQxKCldOwogICAgICAg
ICAgICAgCi0gICAgICAgICAgICBpZiAoaXNTdHJvbmdQcmVkaWN0aW9uKHByZWRpY3Rpb24pKSB7
CisgICAgICAgICAgICBpZiAocHJlZGljdGlvbikgewogICAgICAgICAgICAgICAgIGlmICghKHBy
ZWRpY3Rpb24gJiBQcmVkaWN0RG91YmxlKSAmJiBub2RlQ2FuU3BlY3VsYXRlSW50ZWdlcihub2Rl
LmFyaXRoTm9kZUZsYWdzKCkpKQotICAgICAgICAgICAgICAgICAgICBjaGFuZ2VkIHw9IG1lcmdl
UHJlZGljdGlvbihtYWtlUHJlZGljdGlvbihQcmVkaWN0SW50MzIsIFN0cm9uZ1ByZWRpY3Rpb24p
KTsKKyAgICAgICAgICAgICAgICAgICAgY2hhbmdlZCB8PSBtZXJnZVByZWRpY3Rpb24oUHJlZGlj
dEludDMyKTsKICAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAgIGNoYW5n
ZWQgfD0gbWVyZ2VQcmVkaWN0aW9uKG1ha2VQcmVkaWN0aW9uKFByZWRpY3ROdW1iZXIsIFN0cm9u
Z1ByZWRpY3Rpb24pKTsKKyAgICAgICAgICAgICAgICAgICAgY2hhbmdlZCB8PSBtZXJnZVByZWRp
Y3Rpb24oUHJlZGljdE51bWJlcik7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICAKICAgICAg
ICAgICAgIGJyZWFrOwpAQCAtNDExLDE3ICszODYsMTcgQEAgcHJpdmF0ZToKICAgICAgICAgICAg
IFByZWRpY3RlZFR5cGUgbGVmdCA9IG1fcHJlZGljdGlvbnNbbm9kZS5jaGlsZDEoKV07CiAgICAg
ICAgICAgICBQcmVkaWN0ZWRUeXBlIHJpZ2h0ID0gbV9wcmVkaWN0aW9uc1tub2RlLmNoaWxkMigp
XTsKICAgICAgICAgICAgIAotICAgICAgICAgICAgaWYgKGlzU3Ryb25nUHJlZGljdGlvbihsZWZ0
KSAmJiBpc1N0cm9uZ1ByZWRpY3Rpb24ocmlnaHQpKSB7CisgICAgICAgICAgICBpZiAobGVmdCAm
JiByaWdodCkgewogICAgICAgICAgICAgICAgIGlmIChpc051bWJlclByZWRpY3Rpb24obGVmdCkg
JiYgaXNOdW1iZXJQcmVkaWN0aW9uKHJpZ2h0KSkgewogICAgICAgICAgICAgICAgICAgICBpZiAo
aXNJbnQzMlByZWRpY3Rpb24obWVyZ2VQcmVkaWN0aW9ucyhsZWZ0LCByaWdodCkpICYmIG5vZGVD
YW5TcGVjdWxhdGVJbnRlZ2VyKG5vZGUuYXJpdGhOb2RlRmxhZ3MoKSkpCi0gICAgICAgICAgICAg
ICAgICAgICAgICBjaGFuZ2VkIHw9IG1lcmdlUHJlZGljdGlvbihtYWtlUHJlZGljdGlvbihQcmVk
aWN0SW50MzIsIFN0cm9uZ1ByZWRpY3Rpb24pKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNo
YW5nZWQgfD0gbWVyZ2VQcmVkaWN0aW9uKFByZWRpY3RJbnQzMik7CiAgICAgICAgICAgICAgICAg
ICAgIGVsc2UKLSAgICAgICAgICAgICAgICAgICAgICAgIGNoYW5nZWQgfD0gbWVyZ2VQcmVkaWN0
aW9uKG1ha2VQcmVkaWN0aW9uKFByZWRpY3REb3VibGUsIFN0cm9uZ1ByZWRpY3Rpb24pKTsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIGNoYW5nZWQgfD0gbWVyZ2VQcmVkaWN0aW9uKFByZWRpY3RE
b3VibGUpOwogICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoIShsZWZ0ICYgUHJlZGljdE51bWJl
cikgfHwgIShyaWdodCAmIFByZWRpY3ROdW1iZXIpKSB7CiAgICAgICAgICAgICAgICAgICAgIC8v
IGxlZnQgb3IgcmlnaHQgaXMgZGVmaW5pdGVseSBzb21ldGhpbmcgb3RoZXIgdGhhbiBhIG51bWJl
ci4KLSAgICAgICAgICAgICAgICAgICAgY2hhbmdlZCB8PSBtZXJnZVByZWRpY3Rpb24obWFrZVBy
ZWRpY3Rpb24oUHJlZGljdFN0cmluZywgU3Ryb25nUHJlZGljdGlvbikpOworICAgICAgICAgICAg
ICAgICAgICBjaGFuZ2VkIHw9IG1lcmdlUHJlZGljdGlvbihQcmVkaWN0U3RyaW5nKTsKICAgICAg
ICAgICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgICAgICAgICAgY2hhbmdlZCB8PSBtZXJnZVBy
ZWRpY3Rpb24obWFrZVByZWRpY3Rpb24oUHJlZGljdFN0cmluZyB8IFByZWRpY3RJbnQzMiB8IFBy
ZWRpY3REb3VibGUsIFN0cm9uZ1ByZWRpY3Rpb24pKTsKKyAgICAgICAgICAgICAgICAgICAgY2hh
bmdlZCB8PSBtZXJnZVByZWRpY3Rpb24oUHJlZGljdFN0cmluZyB8IFByZWRpY3RJbnQzMiB8IFBy
ZWRpY3REb3VibGUpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
IH0KQEAgLTQzNSwyNyArNDEwLDI3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICBQcmVkaWN0ZWRU
eXBlIGxlZnQgPSBtX3ByZWRpY3Rpb25zW25vZGUuY2hpbGQxKCldOwogICAgICAgICAgICAgUHJl
ZGljdGVkVHlwZSByaWdodCA9IG1fcHJlZGljdGlvbnNbbm9kZS5jaGlsZDIoKV07CiAgICAgICAg
ICAgICAKLSAgICAgICAgICAgIGlmIChpc1N0cm9uZ1ByZWRpY3Rpb24obGVmdCkgJiYgaXNTdHJv
bmdQcmVkaWN0aW9uKHJpZ2h0KSkgeworICAgICAgICAgICAgaWYgKGxlZnQgJiYgcmlnaHQpIHsK
ICAgICAgICAgICAgICAgICBpZiAoaXNJbnQzMlByZWRpY3Rpb24obWVyZ2VQcmVkaWN0aW9ucyhs
ZWZ0LCByaWdodCkpICYmIG5vZGVDYW5TcGVjdWxhdGVJbnRlZ2VyKG5vZGUuYXJpdGhOb2RlRmxh
Z3MoKSkpCi0gICAgICAgICAgICAgICAgICAgIGNoYW5nZWQgfD0gbWVyZ2VQcmVkaWN0aW9uKG1h
a2VQcmVkaWN0aW9uKFByZWRpY3RJbnQzMiwgU3Ryb25nUHJlZGljdGlvbikpOworICAgICAgICAg
ICAgICAgICAgICBjaGFuZ2VkIHw9IG1lcmdlUHJlZGljdGlvbihQcmVkaWN0SW50MzIpOwogICAg
ICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICAgICAgY2hhbmdlZCB8PSBtZXJnZVBy
ZWRpY3Rpb24obWFrZVByZWRpY3Rpb24oUHJlZGljdERvdWJsZSwgU3Ryb25nUHJlZGljdGlvbikp
OworICAgICAgICAgICAgICAgICAgICBjaGFuZ2VkIHw9IG1lcmdlUHJlZGljdGlvbihQcmVkaWN0
RG91YmxlKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAg
ICAgICAgICAgICAKICAgICAgICAgY2FzZSBBcml0aFNxcnQ6IHsKLSAgICAgICAgICAgIGNoYW5n
ZWQgfD0gc2V0UHJlZGljdGlvbihtYWtlUHJlZGljdGlvbihQcmVkaWN0RG91YmxlLCBTdHJvbmdQ
cmVkaWN0aW9uKSk7CisgICAgICAgICAgICBjaGFuZ2VkIHw9IHNldFByZWRpY3Rpb24oUHJlZGlj
dERvdWJsZSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICAgICAgCiAg
ICAgICAgIGNhc2UgQXJpdGhBYnM6IHsKICAgICAgICAgICAgIFByZWRpY3RlZFR5cGUgY2hpbGQg
PSBtX3ByZWRpY3Rpb25zW25vZGUuY2hpbGQxKCldOwotICAgICAgICAgICAgaWYgKGlzU3Ryb25n
UHJlZGljdGlvbihjaGlsZCkpIHsKKyAgICAgICAgICAgIGlmIChjaGlsZCkgewogICAgICAgICAg
ICAgICAgIGlmIChub2RlQ2FuU3BlY3VsYXRlSW50ZWdlcihub2RlLmFyaXRoTm9kZUZsYWdzKCkp
KQogICAgICAgICAgICAgICAgICAgICBjaGFuZ2VkIHw9IG1lcmdlUHJlZGljdGlvbihjaGlsZCk7
CiAgICAgICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgICAgICBjaGFuZ2VkIHw9IHNl
dFByZWRpY3Rpb24obWFrZVByZWRpY3Rpb24oUHJlZGljdERvdWJsZSwgU3Ryb25nUHJlZGljdGlv
bikpOworICAgICAgICAgICAgICAgICAgICBjaGFuZ2VkIHw9IHNldFByZWRpY3Rpb24oUHJlZGlj
dERvdWJsZSk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQpA
QCAtNDY4LDY5ICs0NDMsNTUgQEAgcHJpdmF0ZToKICAgICAgICAgY2FzZSBDb21wYXJlRXE6CiAg
ICAgICAgIGNhc2UgQ29tcGFyZVN0cmljdEVxOgogICAgICAgICBjYXNlIEluc3RhbmNlT2Y6IHsK
LSAgICAgICAgICAgIGNoYW5nZWQgfD0gc2V0UHJlZGljdGlvbihtYWtlUHJlZGljdGlvbihQcmVk
aWN0Qm9vbGVhbiwgU3Ryb25nUHJlZGljdGlvbikpOworICAgICAgICAgICAgY2hhbmdlZCB8PSBz
ZXRQcmVkaWN0aW9uKFByZWRpY3RCb29sZWFuKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICB9CiAgICAgICAgICAgICAKICAgICAgICAgY2FzZSBHZXRCeUlkOgogICAgICAgICBjYXNlIEdl
dE1ldGhvZDoKICAgICAgICAgY2FzZSBHZXRCeVZhbDogewotICAgICAgICAgICAgY2hhbmdlZCB8
PSBtZXJnZVVzZShub2RlLmNoaWxkMSgpLCBQcmVkaWN0T2JqZWN0VW5rbm93biB8IFN0cm9uZ1By
ZWRpY3Rpb25UYWcpOwotICAgICAgICAgICAgY2hhbmdlZCB8PSBub2RlLnByZWRpY3QobV91c2Vz
W21fY29tcGlsZUluZGV4XSAmIH5QcmVkaWN0aW9uVGFnTWFzaywgU3Ryb25nUHJlZGljdGlvbik7
Ci0gICAgICAgICAgICBpZiAoaXNTdHJvbmdQcmVkaWN0aW9uKG5vZGUuZ2V0UHJlZGljdGlvbigp
KSkKKyAgICAgICAgICAgIGlmIChub2RlLmdldFByZWRpY3Rpb24oKSkKICAgICAgICAgICAgICAg
ICBjaGFuZ2VkIHw9IG1lcmdlUHJlZGljdGlvbihub2RlLmdldFByZWRpY3Rpb24oKSk7CiAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICAgICAgCiAgICAgICAgIGNhc2UgQ2hl
Y2tTdHJ1Y3R1cmU6IHsKLSAgICAgICAgICAgIC8vIFdlIGJhY2t3YXJkIHByb3BhZ2F0ZSB3aGF0
IHRoaXMgQ2hlY2tTdHJ1Y3R1cmUgdGVsbHMgdXMuIE1heWJlIHRoYXQncyB0aGUgcmlnaHQgd2F5
Ci0gICAgICAgICAgICAvLyB0byBnbzsgbWF5YmUgaXQgaXNuJ3QuIEknbSBub3Qgc3VyZS4gV2hh
dCB3ZSdkIHJlYWxseSB3YW50IGlzIGZsb3ctc2Vuc2l0aXZlCi0gICAgICAgICAgICAvLyBmb3J3
YXJkIHByb3BhZ2F0aW9uIG9mIHdoYXQgd2UgbGVhcm4gZnJvbSBoYXZpbmcgZXhlY3V0ZWQgQ2hl
Y2tTdHJ1Y3R1cmUuIEJ1dCBmb3IKLSAgICAgICAgICAgIC8vIG5vdyB3ZSBwcmVzZXJ2ZSB0aGUg
Zmxvdy1pbnNlbnNpdGl2ZSBuYXR1cmUgb2YgdGhpcyBhbmFseXNpcywgYmVjYXVzZSBpdCdzIGNo
ZWFwIHRvCi0gICAgICAgICAgICAvLyBydW4gYW5kIHNlZW1zIHRvIHdvcmsgd2VsbCBlbm91Z2gu
Ci0gICAgICAgICAgICBjaGFuZ2VkIHw9IG1lcmdlVXNlKG5vZGUuY2hpbGQxKCksIHByZWRpY3Rp
b25Gcm9tU3RydWN0dXJlKG5vZGUuc3RydWN0dXJlKCkpIHwgU3Ryb25nUHJlZGljdGlvblRhZyk7
Ci0gICAgICAgICAgICBjaGFuZ2VkIHw9IHNldFByZWRpY3Rpb24oUHJlZGljdE90aGVyIHwgU3Ry
b25nUHJlZGljdGlvblRhZyk7CisgICAgICAgICAgICBjaGFuZ2VkIHw9IHNldFByZWRpY3Rpb24o
UHJlZGljdE90aGVyKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgICAg
ICAKICAgICAgICAgY2FzZSBHZXRCeU9mZnNldDogewotICAgICAgICAgICAgY2hhbmdlZCB8PSBu
b2RlLnByZWRpY3QobV91c2VzW21fY29tcGlsZUluZGV4XSAmIH5QcmVkaWN0aW9uVGFnTWFzaywg
U3Ryb25nUHJlZGljdGlvbik7Ci0gICAgICAgICAgICBpZiAoaXNTdHJvbmdQcmVkaWN0aW9uKG5v
ZGUuZ2V0UHJlZGljdGlvbigpKSkKKyAgICAgICAgICAgIGlmIChub2RlLmdldFByZWRpY3Rpb24o
KSkKICAgICAgICAgICAgICAgICBjaGFuZ2VkIHw9IG1lcmdlUHJlZGljdGlvbihub2RlLmdldFBy
ZWRpY3Rpb24oKSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICAgICAg
CiAgICAgICAgIGNhc2UgQ2hlY2tNZXRob2Q6IHsKLSAgICAgICAgICAgIGNoYW5nZWQgfD0gbWVy
Z2VVc2Uobm9kZS5jaGlsZDEoKSwgUHJlZGljdE9iamVjdFVua25vd24gfCBTdHJvbmdQcmVkaWN0
aW9uVGFnKTsKICAgICAgICAgICAgIGNoYW5nZWQgfD0gc2V0UHJlZGljdGlvbihtX2dyYXBoLmdl
dE1ldGhvZENoZWNrUHJlZGljdGlvbihub2RlKSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgfQogCiAgICAgICAgIGNhc2UgQ2FsbDoKICAgICAgICAgY2FzZSBDb25zdHJ1Y3Q6IHsKLSAg
ICAgICAgICAgIGNoYW5nZWQgfD0gbWVyZ2VVc2UobV9ncmFwaC5tX3ZhckFyZ0NoaWxkcmVuW25v
ZGUuZmlyc3RDaGlsZCgpXSwgUHJlZGljdE9iamVjdFVua25vd24gfCBTdHJvbmdQcmVkaWN0aW9u
VGFnKTsKLSAgICAgICAgICAgIGNoYW5nZWQgfD0gbm9kZS5wcmVkaWN0KG1fdXNlc1ttX2NvbXBp
bGVJbmRleF0gJiB+UHJlZGljdGlvblRhZ01hc2ssIFN0cm9uZ1ByZWRpY3Rpb24pOwotICAgICAg
ICAgICAgaWYgKGlzU3Ryb25nUHJlZGljdGlvbihub2RlLmdldFByZWRpY3Rpb24oKSkpCisgICAg
ICAgICAgICBpZiAobm9kZS5nZXRQcmVkaWN0aW9uKCkpCiAgICAgICAgICAgICAgICAgY2hhbmdl
ZCB8PSBtZXJnZVByZWRpY3Rpb24obm9kZS5nZXRQcmVkaWN0aW9uKCkpOwogICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgICAgIAogICAgICAgICBjYXNlIENvbnZlcnRUaGlz
OiB7Ci0gICAgICAgICAgICBjaGFuZ2VkIHw9IHNldFByZWRpY3Rpb24obWFrZVByZWRpY3Rpb24o
UHJlZGljdE9iamVjdFVua25vd24sIFN0cm9uZ1ByZWRpY3Rpb24pKTsKKyAgICAgICAgICAgIGNo
YW5nZWQgfD0gc2V0UHJlZGljdGlvbihQcmVkaWN0T2JqZWN0VW5rbm93bik7CiAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgfQogICAgICAgICAgICAgCiAgICAgICAgIGNhc2UgR2V0R2xvYmFs
VmFyOiB7Ci0gICAgICAgICAgICBjaGFuZ2VkIHw9IG1fdmFyaWFibGVVc2VzLnByZWRpY3RHbG9i
YWxWYXIobm9kZS52YXJOdW1iZXIoKSwgbV91c2VzW21fY29tcGlsZUluZGV4XSAmIH5QcmVkaWN0
aW9uVGFnTWFzaywgU3Ryb25nUHJlZGljdGlvbik7CiAgICAgICAgICAgICBQcmVkaWN0ZWRUeXBl
IHByZWRpY3Rpb24gPSBtX2dyYXBoLmdldEdsb2JhbFZhclByZWRpY3Rpb24obm9kZS52YXJOdW1i
ZXIoKSk7Ci0gICAgICAgICAgICBpZiAoaXNTdHJvbmdQcmVkaWN0aW9uKHByZWRpY3Rpb24pKQor
ICAgICAgICAgICAgaWYgKHByZWRpY3Rpb24pCiAgICAgICAgICAgICAgICAgY2hhbmdlZCB8PSBt
ZXJnZVByZWRpY3Rpb24ocHJlZGljdGlvbik7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
fQogICAgICAgICAgICAgCiAgICAgICAgIGNhc2UgUHV0R2xvYmFsVmFyOiB7Ci0gICAgICAgICAg
ICBjaGFuZ2VkIHw9IG1fZ3JhcGgucHJlZGljdEdsb2JhbFZhcihub2RlLnZhck51bWJlcigpLCBt
X3ByZWRpY3Rpb25zW25vZGUuY2hpbGQxKCldICYgflByZWRpY3Rpb25UYWdNYXNrLCBTdHJvbmdQ
cmVkaWN0aW9uKTsKLSAgICAgICAgICAgIGNoYW5nZWQgfD0gbWVyZ2VVc2Uobm9kZS5jaGlsZDEo
KSwgbV92YXJpYWJsZVVzZXMuZ2V0R2xvYmFsVmFyUHJlZGljdGlvbihub2RlLnZhck51bWJlcigp
KSk7CisgICAgICAgICAgICBjaGFuZ2VkIHw9IG1fZ3JhcGgucHJlZGljdEdsb2JhbFZhcihub2Rl
LnZhck51bWJlcigpLCBtX3ByZWRpY3Rpb25zW25vZGUuY2hpbGQxKCldKTsKICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICB9CiAgICAgICAgICAgICAKQEAgLTUzOSw1NiArNTAwLDQ2IEBAIHBy
aXZhdGU6CiAgICAgICAgIGNhc2UgUmVzb2x2ZUJhc2U6CiAgICAgICAgIGNhc2UgUmVzb2x2ZUJh
c2VTdHJpY3RQdXQ6CiAgICAgICAgIGNhc2UgUmVzb2x2ZUdsb2JhbDogewotICAgICAgICAgICAg
Y2hhbmdlZCB8PSBub2RlLnByZWRpY3QobV91c2VzW21fY29tcGlsZUluZGV4XSAmIH5QcmVkaWN0
aW9uVGFnTWFzaywgU3Ryb25nUHJlZGljdGlvbik7CiAgICAgICAgICAgICBQcmVkaWN0ZWRUeXBl
IHByZWRpY3Rpb24gPSBub2RlLmdldFByZWRpY3Rpb24oKTsKLSAgICAgICAgICAgIGlmIChpc1N0
cm9uZ1ByZWRpY3Rpb24ocHJlZGljdGlvbikpCisgICAgICAgICAgICBpZiAocHJlZGljdGlvbikK
ICAgICAgICAgICAgICAgICBjaGFuZ2VkIHw9IG1lcmdlUHJlZGljdGlvbihwcmVkaWN0aW9uKTsK
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgICAgICAKICAgICAgICAgY2Fz
ZSBHZXRTY29wZUNoYWluOiB7Ci0gICAgICAgICAgICBjaGFuZ2VkIHw9IHNldFByZWRpY3Rpb24o
bWFrZVByZWRpY3Rpb24oUHJlZGljdENlbGxPdGhlciwgU3Ryb25nUHJlZGljdGlvbikpOworICAg
ICAgICAgICAgY2hhbmdlZCB8PSBzZXRQcmVkaWN0aW9uKFByZWRpY3RDZWxsT3RoZXIpOwogICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgICAgIAotICAgICAgICBjYXNlIFB1
dEJ5VmFsOgotICAgICAgICBjYXNlIFB1dEJ5VmFsQWxpYXM6Ci0gICAgICAgIGNhc2UgUHV0QnlJ
ZDoKLSAgICAgICAgY2FzZSBQdXRCeUlkRGlyZWN0OiB7Ci0gICAgICAgICAgICBjaGFuZ2VkIHw9
IG1lcmdlVXNlKG5vZGUuY2hpbGQxKCksIFByZWRpY3RPYmplY3RVbmtub3duIHwgU3Ryb25nUHJl
ZGljdGlvblRhZyk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotCiAgICAgICAgIGNh
c2UgR2V0Q2FsbGVlOiB7Ci0gICAgICAgICAgICBjaGFuZ2VkIHw9IHNldFByZWRpY3Rpb24obWFr
ZVByZWRpY3Rpb24oUHJlZGljdE9iamVjdE90aGVyLCBTdHJvbmdQcmVkaWN0aW9uKSk7CisgICAg
ICAgICAgICBjaGFuZ2VkIHw9IHNldFByZWRpY3Rpb24oUHJlZGljdE9iamVjdE90aGVyKTsKICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgICAgICAKICAgICAgICAgY2FzZSBD
cmVhdGVUaGlzOiB7Ci0gICAgICAgICAgICBjaGFuZ2VkIHw9IG1lcmdlVXNlKG5vZGUuY2hpbGQx
KCksIFByZWRpY3RPYmplY3RVbmtub3duIHwgU3Ryb25nUHJlZGljdGlvblRhZyk7Ci0gICAgICAg
ICAgICBjaGFuZ2VkIHw9IHNldFByZWRpY3Rpb24obWFrZVByZWRpY3Rpb24oUHJlZGljdEZpbmFs
T2JqZWN0LCBTdHJvbmdQcmVkaWN0aW9uKSk7CisgICAgICAgICAgICBjaGFuZ2VkIHw9IHNldFBy
ZWRpY3Rpb24oUHJlZGljdEZpbmFsT2JqZWN0KTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICB9CiAgICAgICAgICAgICAKICAgICAgICAgY2FzZSBTdHJDYXQ6IHsKLSAgICAgICAgICAgIGNo
YW5nZWQgfD0gc2V0UHJlZGljdGlvbihtYWtlUHJlZGljdGlvbihQcmVkaWN0U3RyaW5nLCBTdHJv
bmdQcmVkaWN0aW9uKSk7CisgICAgICAgICAgICBjaGFuZ2VkIHw9IHNldFByZWRpY3Rpb24oUHJl
ZGljdFN0cmluZyk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICAgICAg
CiAgICAgICAgIGNhc2UgVG9QcmltaXRpdmU6IHsKICAgICAgICAgICAgIFByZWRpY3RlZFR5cGUg
Y2hpbGQgPSBtX3ByZWRpY3Rpb25zW25vZGUuY2hpbGQxKCldOwotICAgICAgICAgICAgaWYgKGlz
U3Ryb25nUHJlZGljdGlvbihjaGlsZCkpIHsKKyAgICAgICAgICAgIGlmIChjaGlsZCkgewogICAg
ICAgICAgICAgICAgIGlmIChpc09iamVjdFByZWRpY3Rpb24oY2hpbGQpKSB7CiAgICAgICAgICAg
ICAgICAgICAgIC8vIEknZCBsb3ZlIHRvIGZvbGQgdGhpcyBjYXNlIGludG8gdGhlIGNhc2UgYmVs
b3csIGJ1dCBJIGNhbid0LCBiZWNhdXNlCiAgICAgICAgICAgICAgICAgICAgIC8vIHJlbW92aW5n
IFByZWRpY3RPYmplY3RNYXNrIGZyb20gc29tZXRoaW5nIHRoYXQgb25seSBoYXMgYW4gb2JqZWN0
CiAgICAgICAgICAgICAgICAgICAgIC8vIHByZWRpY3Rpb24gYW5kIG5vdGhpbmcgZWxzZSBtZWFu
cyB3ZSBoYXZlIGFuIGlsbC1mb3JtZWQgUHJlZGljdGVkVHlwZQogICAgICAgICAgICAgICAgICAg
ICAvLyAoc3Ryb25nIHByZWRpY3Qtbm9uZSkuIFRoaXMgc2hvdWxkIGJlIGtpbGxlZCBvbmNlIHdl
IHJlbW92ZSBhbGwgdHJhY2VzCiAgICAgICAgICAgICAgICAgICAgIC8vIG9mIHN0YXRpYyAoYWth
IHdlYWspIHByZWRpY3Rpb25zLgotICAgICAgICAgICAgICAgICAgICBjaGFuZ2VkIHw9IG1lcmdl
UHJlZGljdGlvbihtYWtlUHJlZGljdGlvbihQcmVkaWN0U3RyaW5nLCBTdHJvbmdQcmVkaWN0aW9u
KSk7CisgICAgICAgICAgICAgICAgICAgIGNoYW5nZWQgfD0gbWVyZ2VQcmVkaWN0aW9uKFByZWRp
Y3RTdHJpbmcpOwogICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoY2hpbGQgJiBQcmVkaWN0T2Jq
ZWN0TWFzaykgewogICAgICAgICAgICAgICAgICAgICAvLyBPYmplY3RzIGdldCB0dXJuZWQgaW50
byBzdHJpbmdzLiBTbyBpZiB0aGUgaW5wdXQgaGFzIGhpbnRzIG9mIG9iamVjdG5lc3MsCiAgICAg
ICAgICAgICAgICAgICAgIC8vIHRoZSBvdXRwdXQgd2lsbCBoYXZlIGhpbnN0cyBvZiBzdHJpbmdp
bmVzcy4KLSAgICAgICAgICAgICAgICAgICAgY2hhbmdlZCB8PSBtZXJnZVByZWRpY3Rpb24obWVy
Z2VQcmVkaWN0aW9ucyhjaGlsZCAmIH5QcmVkaWN0T2JqZWN0TWFzaywgbWFrZVByZWRpY3Rpb24o
UHJlZGljdFN0cmluZywgU3Ryb25nUHJlZGljdGlvbikpKTsKKyAgICAgICAgICAgICAgICAgICAg
Y2hhbmdlZCB8PSBtZXJnZVByZWRpY3Rpb24obWVyZ2VQcmVkaWN0aW9ucyhjaGlsZCAmIH5QcmVk
aWN0T2JqZWN0TWFzaywgUHJlZGljdFN0cmluZykpOwogICAgICAgICAgICAgICAgIH0gZWxzZQog
ICAgICAgICAgICAgICAgICAgICBjaGFuZ2VkIHw9IG1lcmdlUHJlZGljdGlvbihjaGlsZCk7CiAg
ICAgICAgICAgICB9CkBAIC02MTEsNiArNTYyLDEwIEBAIHByaXZhdGU6CiAgICAgICAgICAgICAK
ICAgICAgICAgLy8gVGhpcyBnZXRzIGlnbm9yZWQgYmVjYXVzZSBpdCBkb2Vzbid0IGRvIGFueXRo
aW5nLgogICAgICAgICBjYXNlIFBoYW50b206CisgICAgICAgIGNhc2UgUHV0QnlWYWw6CisgICAg
ICAgIGNhc2UgUHV0QnlWYWxBbGlhczoKKyAgICAgICAgY2FzZSBQdXRCeUlkOgorICAgICAgICBj
YXNlIFB1dEJ5SWREaXJlY3Q6CiAgICAgICAgICAgICBicmVhazsKICNlbHNlCiAgICAgICAgIGRl
ZmF1bHQ6CkBAIC02MTksOCArNTc0LDcgQEAgcHJpdmF0ZToKICAgICAgICAgfQogCiAjaWYgRU5B
QkxFKERGR19ERUJVR19QUk9QQUdBVElPTl9WRVJCT1NFKQotICAgICAgICBwcmludGYoImV4cGVj
dCglcykgIiwgcHJlZGljdGlvblRvU3RyaW5nKG1fcHJlZGljdGlvbnNbbV9jb21waWxlSW5kZXhd
KSk7Ci0gICAgICAgIHByaW50ZigidXNlKCVzKSAlc1xuIiwgcHJlZGljdGlvblRvU3RyaW5nKG1f
dXNlc1ttX2NvbXBpbGVJbmRleF0pLCBjaGFuZ2VkID8gIkNIQU5HRUQiIDogIiIpOworICAgICAg
ICBwcmludGYoIiVzICIsIHByZWRpY3Rpb25Ub1N0cmluZyhtX3ByZWRpY3Rpb25zW21fY29tcGls
ZUluZGV4XSkpOwogI2VuZGlmCiAgICAgICAgIAogICAgICAgICBtX2NoYW5nZWQgfD0gY2hhbmdl
ZDsKQEAgLTY3Niw3ICs2MzAsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgUHJlZGljdGVkVHlw
ZSBsZWZ0ID0gbV9wcmVkaWN0aW9uc1tub2RlLmNoaWxkMSgpXTsKICAgICAgICAgICAgIFByZWRp
Y3RlZFR5cGUgcmlnaHQgPSBtX3ByZWRpY3Rpb25zW25vZGUuY2hpbGQyKCldOwogICAgICAgICAg
ICAgCi0gICAgICAgICAgICBpZiAoaXNTdHJvbmdQcmVkaWN0aW9uKGxlZnQpICYmIGlzU3Ryb25n
UHJlZGljdGlvbihyaWdodCkgJiYgaXNOdW1iZXJQcmVkaWN0aW9uKGxlZnQpICYmIGlzTnVtYmVy
UHJlZGljdGlvbihyaWdodCkpIHsKKyAgICAgICAgICAgIGlmIChsZWZ0ICYmIHJpZ2h0ICYmIGlz
TnVtYmVyUHJlZGljdGlvbihsZWZ0KSAmJiBpc051bWJlclByZWRpY3Rpb24ocmlnaHQpKSB7CiAg
ICAgICAgICAgICAgICAgaWYgKGxlZnQgJiBQcmVkaWN0RG91YmxlKQogICAgICAgICAgICAgICAg
ICAgICB0b0RvdWJsZShub2RlLmNoaWxkMigpKTsKICAgICAgICAgICAgICAgICBpZiAocmlnaHQg
JiBQcmVkaWN0RG91YmxlKQpAQCAtNzAxLDcgKzY1NSw3IEBAIHByaXZhdGU6CiAgICAgICAgICAg
ICBQcmVkaWN0ZWRUeXBlIGxlZnQgPSBtX3ByZWRpY3Rpb25zW25vZGUuY2hpbGQxKCldOwogICAg
ICAgICAgICAgUHJlZGljdGVkVHlwZSByaWdodCA9IG1fcHJlZGljdGlvbnNbbm9kZS5jaGlsZDIo
KV07CiAgICAgICAgICAgICAKLSAgICAgICAgICAgIGlmIChpc1N0cm9uZ1ByZWRpY3Rpb24obGVm
dCkgJiYgaXNTdHJvbmdQcmVkaWN0aW9uKHJpZ2h0KSkgeworICAgICAgICAgICAgaWYgKGxlZnQg
JiYgcmlnaHQpIHsKICAgICAgICAgICAgICAgICBpZiAobGVmdCAmIFByZWRpY3REb3VibGUpCiAg
ICAgICAgICAgICAgICAgICAgIHRvRG91YmxlKG5vZGUuY2hpbGQyKCkpOwogICAgICAgICAgICAg
ICAgIGlmIChyaWdodCAmIFByZWRpY3REb3VibGUpCkBAIC03MTcsNyArNjcxLDcgQEAgcHJpdmF0
ZToKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIAogICAgICAgICAgICAgUHJlZGljdGVkVHlw
ZSBwcmVkaWN0aW9uID0gbV9wcmVkaWN0aW9uc1tub2RlLmNoaWxkMSgpXTsKLSAgICAgICAgICAg
IGlmIChpc1N0cm9uZ1ByZWRpY3Rpb24ocHJlZGljdGlvbikgJiYgKHByZWRpY3Rpb24gJiBQcmVk
aWN0RG91YmxlKSkKKyAgICAgICAgICAgIGlmIChwcmVkaWN0aW9uICYgUHJlZGljdERvdWJsZSkK
ICAgICAgICAgICAgICAgICB0b0RvdWJsZShub2RlLmNoaWxkMSgpKTsKICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICB9CkBAIC04NjYsMTQgKzgyMCwxMyBAQCBwcml2YXRlOgogICAgIHsKICAg
ICAgICAgUHJlZGljdGVkVHlwZSBsZWZ0ID0gbV9wcmVkaWN0aW9uc1tub2RlLmNoaWxkMSgpXTsK
ICAgICAgICAgUHJlZGljdGVkVHlwZSByaWdodCA9IG1fcHJlZGljdGlvbnNbbm9kZS5jaGlsZDIo
KV07Ci0gICAgICAgIHJldHVybiBpc1N0cm9uZ1ByZWRpY3Rpb24obGVmdCkgJiYgaXNTdHJvbmdQ
cmVkaWN0aW9uKHJpZ2h0KQotICAgICAgICAgICAgJiYgaXNOdW1iZXJQcmVkaWN0aW9uKGxlZnQp
ICYmIGlzTnVtYmVyUHJlZGljdGlvbihyaWdodCk7CisgICAgICAgIHJldHVybiBpc051bWJlclBy
ZWRpY3Rpb24obGVmdCkgJiYgaXNOdW1iZXJQcmVkaWN0aW9uKHJpZ2h0KTsKICAgICB9CiAgICAg
CiAgICAgYm9vbCBsb2dpY2FsTm90SXNQdXJlKE5vZGUmIG5vZGUpCiAgICAgewogICAgICAgICBQ
cmVkaWN0ZWRUeXBlIHByZWRpY3Rpb24gPSBtX3ByZWRpY3Rpb25zW25vZGUuY2hpbGQxKCldOwot
ICAgICAgICByZXR1cm4gaXNCb29sZWFuUHJlZGljdGlvbihwcmVkaWN0aW9uKSB8fCAhaXNTdHJv
bmdQcmVkaWN0aW9uKHByZWRpY3Rpb24pOworICAgICAgICByZXR1cm4gaXNCb29sZWFuUHJlZGlj
dGlvbihwcmVkaWN0aW9uKSB8fCAhcHJlZGljdGlvbjsKICAgICB9CiAgICAgCiAgICAgYm9vbCBj
bG9iYmVyc1dvcmxkKE5vZGVJbmRleCBub2RlSW5kZXgpCkBAIC0xMjMyLDkgKzExODUsNiBAQCBw
cml2YXRlOgogICAgIE5vZGVJbmRleCBtX2NvbXBpbGVJbmRleDsKICAgICAKICAgICBWZWN0b3I8
UHJlZGljdGVkVHlwZSwgMTY+IG1fcHJlZGljdGlvbnM7Ci0gICAgVmVjdG9yPFByZWRpY3RlZFR5
cGUsIDE2PiBtX3VzZXM7Ci0gICAgCi0gICAgUHJlZGljdGlvblRyYWNrZXIgbV92YXJpYWJsZVVz
ZXM7CiAKICNpZiBFTkFCTEUoREZHX0RFQlVHX1BST1BBR0FUSU9OX1ZFUkJPU0UpCiAgICAgdW5z
aWduZWQgbV9jb3VudDsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3Vs
YXRpdmVKSVQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
U3BlY3VsYXRpdmVKSVQuY3BwCShyZXZpc2lvbiA5NTkyNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02OTUsOCAr
Njk1LDE1IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSYgbm9kZSkKICAgICAg
ICAgYnJlYWs7CiAKICAgICBjYXNlIEdldExvY2FsOiB7Ci0gICAgICAgIEdQUlRlbXBvcmFyeSBy
ZXN1bHQodGhpcyk7CiAgICAgICAgIFByZWRpY3RlZFR5cGUgcHJlZGljdGlvbiA9IG1faml0Lmdy
YXBoKCkuZ2V0UHJlZGljdGlvbihub2RlLmxvY2FsKCkpOworCisgICAgICAgIC8vIElmIHdlIGhh
dmUgbm8gcHJlZGljdGlvbiBmb3IgdGhpcyBsb2NhbCwgdGhlbiBkb24ndCBhdHRlbXB0IHRvIGNv
bXBpbGUuCisgICAgICAgIGlmIChwcmVkaWN0aW9uID09IFByZWRpY3ROb25lKSB7CisgICAgICAg
ICAgICB0ZXJtaW5hdGVTcGVjdWxhdGl2ZUV4ZWN1dGlvbigpOworICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIEdQUlRlbXBvcmFyeSByZXN1bHQodGhpcyk7
CiAgICAgICAgIGlmIChpc0ludDMyUHJlZGljdGlvbihwcmVkaWN0aW9uKSkgewogICAgICAgICAg
ICAgbV9qaXQubG9hZDMyKEpJVENvbXBpbGVyOjpwYXlsb2FkRm9yKG5vZGUubG9jYWwoKSksIHJl
c3VsdC5ncHIoKSk7CiAKQEAgLTEzMDAsOCArMTMwNyw4IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6
OmNvbXBpbGUoTm9kZSYgbm9kZSkKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAg
ICAgIAotICAgICAgICBQcmVkaWN0ZWRUeXBlIHByZWRpY3Rpb24gPSBtX2ppdC5ncmFwaCgpLmdl
dFByZWRpY3Rpb24obV9qaXQuZ3JhcGgoKVtub2RlLmNoaWxkMSgpXSk7Ci0gICAgICAgIGlmIChp
c0Jvb2xlYW5QcmVkaWN0aW9uKHByZWRpY3Rpb24pIHx8ICFpc1N0cm9uZ1ByZWRpY3Rpb24ocHJl
ZGljdGlvbikpIHsKKyAgICAgICAgUHJlZGljdGVkVHlwZSBwcmVkaWN0aW9uID0gbV9qaXQuZ2V0
UHJlZGljdGlvbihub2RlLmNoaWxkMSgpKTsKKyAgICAgICAgaWYgKGlzQm9vbGVhblByZWRpY3Rp
b24ocHJlZGljdGlvbikgfHwgIXByZWRpY3Rpb24pIHsKICAgICAgICAgICAgIEpTVmFsdWVPcGVy
YW5kIHZhbHVlKHRoaXMsIG5vZGUuY2hpbGQxKCkpOwogICAgICAgICAgICAgR1BSVGVtcG9yYXJ5
IHJlc3VsdCh0aGlzKTsgLy8gRklYTUU6IFdlIGNvdWxkIHJldXNlLCBidXQgb24gc3BlY3VsYXRp
b24gZmFpbCB3b3VsZCBuZWVkIHJlY292ZXJ5IHRvIHJlc3RvcmUgdGFnIChha2luIHRvIGFkZCku
CiAgICAgICAgICAgICAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3Vs
YXRpdmVKSVQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Nw
ZWN1bGF0aXZlSklULmgJKHJldmlzaW9uIDk1OTI3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNzAsNyArMzcwLDcg
QEAgcHJpdmF0ZToKICAgICAgICAgaWYgKGlzSW50ZWdlcihub2RlSW5kZXgpKQogICAgICAgICAg
ICAgcmV0dXJuIHRydWU7CiAgICAgICAgIAotICAgICAgICBpZiAoaXNJbnQzMlByZWRpY3Rpb24o
bV9qaXQuZ3JhcGgoKS5nZXRQcmVkaWN0aW9uKG1faml0LmdyYXBoKClbbm9kZUluZGV4XSkpKQor
ICAgICAgICBpZiAoaXNJbnQzMlByZWRpY3Rpb24obV9qaXQuZ2V0UHJlZGljdGlvbihub2RlSW5k
ZXgpKSkKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICAKICAgICAgICAgcmV0dXJu
IGZhbHNlOwpAQCAtMzg5LDcgKzM4OSw3IEBAIHByaXZhdGU6CiAgICAgICAgIGlmIChpbmZvLmlz
SlNEb3VibGUoKSkKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICAKLSAgICAgICAg
aWYgKGlzRG91YmxlUHJlZGljdGlvbihtX2ppdC5ncmFwaCgpLmdldFByZWRpY3Rpb24obm9kZSkp
KQorICAgICAgICBpZiAoaXNEb3VibGVQcmVkaWN0aW9uKG1faml0LmdldFByZWRpY3Rpb24obm9k
ZUluZGV4KSkpCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKQEAgLTQxMSw3ICs0MTEsNyBAQCBwcml2YXRlOgogICAgICAgICBpZiAoaW5m
by5pc0pTSW50ZWdlcigpIHx8IGluZm8uaXNKU0RvdWJsZSgpKQogICAgICAgICAgICAgcmV0dXJu
IHRydWU7CiAgICAgICAgIAotICAgICAgICBQcmVkaWN0ZWRUeXBlIHByZWRpY3Rpb24gPSBtX2pp
dC5ncmFwaCgpLmdldFByZWRpY3Rpb24obm9kZSk7CisgICAgICAgIFByZWRpY3RlZFR5cGUgcHJl
ZGljdGlvbiA9IG1faml0LmdldFByZWRpY3Rpb24obm9kZUluZGV4KTsKICAgICAgICAgCiAgICAg
ICAgIGlmIChpc051bWJlclByZWRpY3Rpb24ocHJlZGljdGlvbikgfHwgcHJlZGljdGlvbiA9PSBQ
cmVkaWN0Tm9uZSkKICAgICAgICAgICAgIHJldHVybiB0cnVlOwpAQCAtNDMyLDcgKzQzMiw3IEBA
IHByaXZhdGU6CiAgICAgICAgIGlmIChpbmZvLmlzSlNEb3VibGUoKSkKICAgICAgICAgICAgIHJl
dHVybiB0cnVlOwogICAgICAgICAKLSAgICAgICAgaWYgKG1faml0LmdyYXBoKCkuZ2V0UHJlZGlj
dGlvbihub2RlKSAmIFByZWRpY3REb3VibGUpCisgICAgICAgIGlmIChtX2ppdC5nZXRQcmVkaWN0
aW9uKG5vZGVJbmRleCkgJiBQcmVkaWN0RG91YmxlKQogICAgICAgICAgICAgcmV0dXJuIHRydWU7
CiAgICAgICAgIAogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC00NDQsNyArNDQ0LDcgQEAgcHJp
dmF0ZToKICAgICAgICAgaWYgKGlzSlNDb25zdGFudChub2RlSW5kZXgpKQogICAgICAgICAgICAg
cHJlZGljdGlvbiA9IHByZWRpY3Rpb25Gcm9tVmFsdWUodmFsdWVPZkpTQ29uc3RhbnQobm9kZUlu
ZGV4KSk7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIHByZWRpY3Rpb24gPSBtX2ppdC5ncmFw
aCgpLmdldFByZWRpY3Rpb24obV9qaXQuZ3JhcGgoKVtub2RlSW5kZXhdKTsKKyAgICAgICAgICAg
IHByZWRpY3Rpb24gPSBtX2ppdC5nZXRQcmVkaWN0aW9uKG5vZGVJbmRleCk7CiAgICAgICAgIHJl
dHVybiBpc0ZpbmFsT2JqZWN0UHJlZGljdGlvbihwcmVkaWN0aW9uKTsKICAgICB9CiAgICAgCkBA
IC00NTQsNyArNDU0LDcgQEAgcHJpdmF0ZToKICAgICAgICAgaWYgKGlzSlNDb25zdGFudChub2Rl
SW5kZXgpKQogICAgICAgICAgICAgcHJlZGljdGlvbiA9IHByZWRpY3Rpb25Gcm9tVmFsdWUodmFs
dWVPZkpTQ29uc3RhbnQobm9kZUluZGV4KSk7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIHBy
ZWRpY3Rpb24gPSBtX2ppdC5ncmFwaCgpLmdldFByZWRpY3Rpb24obV9qaXQuZ3JhcGgoKVtub2Rl
SW5kZXhdKTsKKyAgICAgICAgICAgIHByZWRpY3Rpb24gPSBtX2ppdC5nZXRQcmVkaWN0aW9uKG5v
ZGVJbmRleCk7CiAgICAgICAgIHJldHVybiBpc0FycmF5UHJlZGljdGlvbihwcmVkaWN0aW9uKTsK
ICAgICB9CiAgICAgCkBAIC00NjcsNyArNDY3LDcgQEAgcHJpdmF0ZToKICAgICAgICAgaWYgKGlz
SlNDb25zdGFudChub2RlSW5kZXgpKQogICAgICAgICAgICAgcHJlZGljdGlvbiA9IHByZWRpY3Rp
b25Gcm9tVmFsdWUodmFsdWVPZkpTQ29uc3RhbnQobm9kZUluZGV4KSk7CiAgICAgICAgIGVsc2UK
LSAgICAgICAgICAgIHByZWRpY3Rpb24gPSBtX2ppdC5ncmFwaCgpLmdldFByZWRpY3Rpb24obV9q
aXQuZ3JhcGgoKVtub2RlSW5kZXhdKTsKKyAgICAgICAgICAgIHByZWRpY3Rpb24gPSBtX2ppdC5n
ZXRQcmVkaWN0aW9uKG5vZGVJbmRleCk7CiAgICAgICAgIHJldHVybiBpc09iamVjdFByZWRpY3Rp
b24ocHJlZGljdGlvbik7CiAgICAgfQogICAgIApAQCAtNDc4LDcgKzQ3OCw3IEBAIHByaXZhdGU6
CiAgICAgICAgIAogICAgICAgICBOb2RlJiBub2RlID0gbV9qaXQuZ3JhcGgoKVtub2RlSW5kZXhd
OwogCi0gICAgICAgIGlmIChpc0NlbGxQcmVkaWN0aW9uKG1faml0LmdyYXBoKCkuZ2V0UHJlZGlj
dGlvbihub2RlKSkpCisgICAgICAgIGlmIChpc0NlbGxQcmVkaWN0aW9uKG1faml0LmdldFByZWRp
Y3Rpb24obm9kZUluZGV4KSkpCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKIAogICAgICAgICBW
aXJ0dWFsUmVnaXN0ZXIgdmlydHVhbFJlZ2lzdGVyID0gbm9kZS52aXJ0dWFsUmVnaXN0ZXIoKTsK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAJKHJldmlzaW9uIDk1OTI3KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01NTQsOSAr
NTU0LDE4IEBAIEpJVENvZGUgSklUOjpwcml2YXRlQ29tcGlsZShDb2RlUHRyKiBmdW4KIAogI2lm
IEVOQUJMRShWQUxVRV9QUk9GSUxFUikKICAgICAgICAgQVNTRVJUKG1fYnl0ZWNvZGVPZmZzZXQg
PT0gKHVuc2lnbmVkKS0xKTsKLSAgICAgICAgZm9yIChpbnQgYXJndW1lbnRSZWdpc3RlciA9IC1S
ZWdpc3RlckZpbGU6OkNhbGxGcmFtZUhlYWRlclNpemUgLSBtX2NvZGVCbG9jay0+bV9udW1QYXJh
bWV0ZXJzICsgMTsgYXJndW1lbnRSZWdpc3RlciA8IC1SZWdpc3RlckZpbGU6OkNhbGxGcmFtZUhl
YWRlclNpemU7ICsrYXJndW1lbnRSZWdpc3RlcikgewotICAgICAgICAgICAgbG9hZFB0cihBZGRy
ZXNzKGNhbGxGcmFtZVJlZ2lzdGVyLCBhcmd1bWVudFJlZ2lzdGVyICogc2l6ZW9mKFJlZ2lzdGVy
KSksIHJlZ1QwKTsKLSAgICAgICAgICAgIGVtaXRWYWx1ZVByb2ZpbGluZ1NpdGUoRmlyc3RQcm9m
aWxpbmdTaXRlKTsKKyAgICAgICAgaWYgKHNob3VsZEVtaXRQcm9maWxpbmcoKSkgeworICAgICAg
ICAgICAgZm9yIChpbnQgYXJndW1lbnRSZWdpc3RlciA9IC1SZWdpc3RlckZpbGU6OkNhbGxGcmFt
ZUhlYWRlclNpemUgLSBtX2NvZGVCbG9jay0+bV9udW1QYXJhbWV0ZXJzOyBhcmd1bWVudFJlZ2lz
dGVyIDwgLVJlZ2lzdGVyRmlsZTo6Q2FsbEZyYW1lSGVhZGVyU2l6ZTsgKythcmd1bWVudFJlZ2lz
dGVyKSB7CisgICAgICAgICAgICAgICAgLy8gSWYgdGhpcyBpcyBhIGNvbnN0cnVjdG9yLCB0aGVu
IHdlIHdhbnQgdG8gcHV0IGluIGEgZHVtbXkgcHJvZmlsaW5nIHNpdGUgKHRvCisgICAgICAgICAg
ICAgICAgLy8ga2VlcCB0aGluZ3MgY29uc2lzdGVudCkgYnV0IHdlIGRvbid0IGFjdHVhbGx5IHdh
bnQgdG8gcmVjb3JkIHRoZSBkdW1teSB2YWx1ZS4KKyAgICAgICAgICAgICAgICBpZiAobV9jb2Rl
QmxvY2stPm1faXNDb25zdHJ1Y3RvcgorICAgICAgICAgICAgICAgICAgICAmJiBhcmd1bWVudFJl
Z2lzdGVyID09IC1SZWdpc3RlckZpbGU6OkNhbGxGcmFtZUhlYWRlclNpemUgLSBtX2NvZGVCbG9j
ay0+bV9udW1QYXJhbWV0ZXJzKQorICAgICAgICAgICAgICAgICAgICBtX2NvZGVCbG9jay0+YWRk
VmFsdWVQcm9maWxlKC0xKTsKKyAgICAgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAg
ICAgICAgbG9hZFB0cihBZGRyZXNzKGNhbGxGcmFtZVJlZ2lzdGVyLCBhcmd1bWVudFJlZ2lzdGVy
ICogc2l6ZW9mKFJlZ2lzdGVyKSksIHJlZ1QwKTsKKyAgICAgICAgICAgICAgICAgICAgZW1pdFZh
bHVlUHJvZmlsaW5nU2l0ZShGaXJzdFByb2ZpbGluZ1NpdGUpOworICAgICAgICAgICAgICAgIH0K
KyAgICAgICAgICAgIH0KICAgICAgICAgfQogI2VuZGlmCiAK
</data>
<flag name="review"
          id="105628"
          type_id="1"
          status="+"
          setter="oliver"
    />
          </attachment>
      

    </bug>

</bugzilla>