<?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>67161</bug_id>
          
          <creation_ts>2011-08-29 16:04:01 -0700</creation_ts>
          <short_desc>querySelector/querySelectorAll should use selector checker fast path</short_desc>
          <delta_ts>2011-10-11 22:04:25 -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>DOM</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Antti Koivisto">koivisto</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>dglazkov</cc>
    
    <cc>mathias</cc>
    
    <cc>oliver</cc>
    
    <cc>sam</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>458521</commentid>
    <comment_count>0</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2011-08-29 16:04:01 -0700</bug_when>
    <thetext>Descendant and child selectors can be matches substantially faster using SelectorChecker::fastCheckSelector() path. Currently it is used for style matching only.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>458556</commentid>
    <comment_count>1</comment_count>
      <attachid>105542</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2011-08-29 16:38:23 -0700</bug_when>
    <thetext>Created attachment 105542
patch, missing non-Mac build files

The patch is ~25% speedup in the overall native score of http://www.webkit.org/perf/slickspeed/. Some individual subtests (using child or descendant selectors) execute twice as fast.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>458803</commentid>
    <comment_count>2</comment_count>
      <attachid>105602</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2011-08-30 02:42:57 -0700</bug_when>
    <thetext>Created attachment 105602
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>458840</commentid>
    <comment_count>3</comment_count>
      <attachid>105615</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2011-08-30 04:45:59 -0700</bug_when>
    <thetext>Created attachment 105615
updated to tot</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>458843</commentid>
    <comment_count>4</comment_count>
      <attachid>105615</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-08-30 04:50:16 -0700</bug_when>
    <thetext>Comment on attachment 105615
updated to tot

Attachment 105615 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/9565414</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>458844</commentid>
    <comment_count>5</comment_count>
      <attachid>105615</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2011-08-30 04:50:22 -0700</bug_when>
    <thetext>Comment on attachment 105615
updated to tot

Attachment 105615 did not pass efl-ews (efl):
Output: http://queues.webkit.org/results/9566377</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>458846</commentid>
    <comment_count>6</comment_count>
      <attachid>105615</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2011-08-30 04:54:34 -0700</bug_when>
    <thetext>Comment on attachment 105615
updated to tot

Attachment 105615 did not pass qt-ews (qt):
Output: http://queues.webkit.org/results/9565415</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>458869</commentid>
    <comment_count>7</comment_count>
      <attachid>105615</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-08-30 06:23:21 -0700</bug_when>
    <thetext>Comment on attachment 105615
updated to tot

Attachment 105615 did not pass mac-ews (mac):
Output: http://queues.webkit.org/results/9563470</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>458892</commentid>
    <comment_count>8</comment_count>
      <attachid>105626</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2011-08-30 07:41:35 -0700</bug_when>
    <thetext>Created attachment 105626
build fix</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>458894</commentid>
    <comment_count>9</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-08-30 07:43:34 -0700</bug_when>
    <thetext>Attachment 105626 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u&apos;Source/WebCor...&quot; exit_code: 1

Source/WebCore/dom/SelectorQuery.h:54:  Missing space inside { }.  [whitespace/braces] [5]
Total errors found: 1 in 11 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>458898</commentid>
    <comment_count>10</comment_count>
      <attachid>105626</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2011-08-30 07:50:17 -0700</bug_when>
    <thetext>Comment on attachment 105626
build fix

Attachment 105626 did not pass efl-ews (efl):
Output: http://queues.webkit.org/results/9558602</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>458902</commentid>
    <comment_count>11</comment_count>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2011-08-30 07:55:21 -0700</bug_when>
    <thetext>This is really cool stuff, Antti.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>458913</commentid>
    <comment_count>12</comment_count>
      <attachid>105631</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2011-08-30 08:15:37 -0700</bug_when>
    <thetext>Created attachment 105631
style &amp; win build fix</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>458915</commentid>
    <comment_count>13</comment_count>
      <attachid>105631</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2011-08-30 08:20:18 -0700</bug_when>
    <thetext>Comment on attachment 105631
style &amp; win build fix

Attachment 105631 did not pass efl-ews (efl):
Output: http://queues.webkit.org/results/9563499</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>458991</commentid>
    <comment_count>14</comment_count>
      <attachid>105631</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2011-08-30 10:19:50 -0700</bug_when>
    <thetext>Comment on attachment 105631
style &amp; win build fix

Awesome! r=me, but do what Adam says about the windows build file.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>459007</commentid>
    <comment_count>15</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2011-08-30 10:43:30 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/94089</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>105542</attachid>
            <date>2011-08-29 16:38:23 -0700</date>
            <delta_ts>2011-08-30 02:42:57 -0700</delta_ts>
            <desc>patch, missing non-Mac build files</desc>
            <filename>queryselector-fastcheck-6.patch</filename>
            <type>text/plain</type>
            <size>30664</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDk0MDI2KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNDkgQEAKKzIwMTEtMDgtMjkgIEFudHRpIEtv
aXZpc3RvICA8YW50dGlAYXBwbGUuY29tPgorCisgICAgICAgIHF1ZXJ5U2VsZWN0b3IvcXVlcnlT
ZWxlY3RvckFsbCBzaG91bGQgdXNlIHNlbGVjdG9yIGNoZWNrZXIgZmFzdCBwYXRoIAorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjcxNjEKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBEZXNjZW5kYW50IGFuZCBj
aGlsZCBzZWxlY3RvcnMgY2FuIGJlIG1hdGNoZXMgc3Vic3RhbnRpYWxseSBmYXN0ZXIgdXNpbmcK
KyAgICAgICAgU2VsZWN0b3JDaGVja2VyOjpmYXN0Q2hlY2tTZWxlY3RvcigpIHBhdGguIEN1cnJl
bnRseSBpdCBpcyB1c2VkIGZvciBzdHlsZSBtYXRjaGluZyBvbmx5LiAgCisgICAgICAgIAorICAg
ICAgICBBZGQgU2VsZWN0b3JRdWVyeSBjbGFzcyB0aGF0IGNhbiBkbyBib3RoIHF1ZXJ5U2VsZWN0
b3IgYW5kIHF1ZXJ5U2VsZWN0b3JBbGwgZWZmaWNpZW50bHkgdXNpbmcKKyAgICAgICAgZmFzdCBw
YXRoLiBVc2UgaW5saW5lZCBsb29wIGZvciBET00gdHJhdmVyc2FsLgorICAgICAgICAKKyAgICAg
ICAgVGhlIHBhdGNoIGlzIH4yNSUgc3BlZWR1cCBpbiB0aGUgb3ZlcmFsbCBuYXRpdmUgc2NvcmUg
b2YgaHR0cDovL3d3dy53ZWJraXQub3JnL3BlcmYvc2xpY2tzcGVlZC8uIFNvbWUgaW5kaXZpZHVh
bAorICAgICAgICBzdWJ0ZXN0cyAodXNpbmcgY2hpbGQgb3IgZGVzY2VuZGFudCBzZWxlY3RvcnMp
IGV4ZWN1dGUgdHdpY2UgYXMgZmFzdC4KKworICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBjc3MvQ1NTU3R5bGVTZWxlY3Rvci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpDU1NTdHlsZVNlbGVjdG9yOjpTZWxlY3RvckNoZWNrZXI6OmNoZWNrU2Vs
ZWN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTU3R5bGVTZWxlY3Rvcjo6U2VsZWN0b3JDaGVj
a2VyOjppc0Zhc3RDaGVja2FibGVTZWxlY3Rvcik6CisgICAgICAgIChXZWJDb3JlOjpSdWxlRGF0
YTo6UnVsZURhdGEpOgorICAgICAgICAqIGNzcy9DU1NTdHlsZVNlbGVjdG9yLmg6CisgICAgICAg
IAorICAgICAgICAgICAgTWFrZSBmYXN0IHBhdGggYXZhaWxhYmxlIG91dHNpZGUgQ1NTU3R5bGVT
ZWxlY3Rvci4KKworICAgICAgICAqIGNzcy9TZWxlY3RvclF1ZXJ5LmNwcDogQWRkZWQuCisgICAg
ICAgIChXZWJDb3JlOjpTZWxlY3RvclF1ZXJ5OjpTZWxlY3RvclF1ZXJ5KToKKyAgICAgICAgKFdl
YkNvcmU6OlNlbGVjdG9yUXVlcnk6OnF1ZXJ5QWxsKToKKyAgICAgICAgKFdlYkNvcmU6OlNlbGVj
dG9yUXVlcnk6OnF1ZXJ5KToKKyAgICAgICAgKFdlYkNvcmU6OlNlbGVjdG9yUXVlcnk6OmNhblVz
ZUlkTG9va3VwKToKKyAgICAgICAgKFdlYkNvcmU6OlNlbGVjdG9yUXVlcnk6OmV4ZWN1dGUpOgor
ICAgICAgICAqIGNzcy9TZWxlY3RvclF1ZXJ5Lmg6IEFkZGVkLgorICAgICAgICAKKyAgICAgICAg
ICAgIE5ldyBjbGFzcyBmb3Igc2VsZWN0b3IgbWF0Y2hpbmcgaW4gdHJlZS4KKyAgICAgICAgCisg
ICAgICAgICogZG9tL05vZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6cXVlcnlTZWxl
Y3Rvcik6CisgICAgICAgIChXZWJDb3JlOjpOb2RlOjpxdWVyeVNlbGVjdG9yQWxsKToKKyAgICAg
ICAgCisgICAgICAgICAgICBTd2l0Y2ggdG8gU2VsZWN0b3JRdWVyeS4KKyAgICAgICAgCisgICAg
ICAgICogZG9tL1NlbGVjdG9yTm9kZUxpc3QuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIGRvbS9T
ZWxlY3Rvck5vZGVMaXN0Lmg6IFJlbW92ZWQuCisgICAgICAgIAorICAgICAgICAgICAgU2VsZWN0
b3JRdWVyeSBtYWtlcyB0aGVzZSBvYm9zb2xldGUuCisKIDIwMTEtMDgtMjkgIEpvaG4gQmF1bWFu
ICA8amJhdW1hbkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgU3BlZWQgdXAgdGV4SW1hZ2UgZnJv
bSBCR1JBCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCShyZXZpc2lvbiA5Mzk2NykKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtNTA4OSw4ICs1MDg5
LDYgQEAKIAkJQkM3RkE2MjEwRDFGMENCRDAwREIyMkE5IC8qIER5bmFtaWNOb2RlTGlzdC5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkM3RkE2MUYwRDFG
MENCRDAwREIyMkE5IC8qIER5bmFtaWNOb2RlTGlzdC5oICovOyB9OwogCQlCQzdGQTYyRDBEMUYw
RUZGMDBEQjIyQTkgLyogU3RhdGljTm9kZUxpc3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDN0ZBNjJCMEQxRjBFRkYwMERCMjJBOSAvKiBTdGF0aWNO
b2RlTGlzdC5oICovOyB9OwogCQlCQzdGQTYyRTBEMUYwRUZGMDBEQjIyQTkgLyogU3RhdGljTm9k
ZUxpc3QuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
QkM3RkE2MkMwRDFGMEVGRjAwREIyMkE5IC8qIFN0YXRpY05vZGVMaXN0LmNwcCAqLzsgfTsKLQkJ
QkM3RkE2ODEwRDFGMTY3OTAwREIyMkE5IC8qIFNlbGVjdG9yTm9kZUxpc3QuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDN0ZBNjdGMEQxRjE2NzkwMERC
MjJBOSAvKiBTZWxlY3Rvck5vZGVMaXN0LmggKi87IH07Ci0JCUJDN0ZBNjgyMEQxRjE2NzkwMERC
MjJBOSAvKiBTZWxlY3Rvck5vZGVMaXN0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEJDN0ZBNjgwMEQxRjE2NzkwMERCMjJBOSAvKiBTZWxlY3Rvck5v
ZGVMaXN0LmNwcCAqLzsgfTsKIAkJQkM4MEM5ODcwQ0QyOTRFRTAwQTBCN0IzIC8qIENTU1RpbWlu
Z0Z1bmN0aW9uVmFsdWUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQkM4MEM5ODUwQ0QyOTRFRTAwQTBCN0IzIC8qIENTU1RpbWluZ0Z1bmN0aW9uVmFs
dWUuY3BwICovOyB9OwogCQlCQzgwQzk4ODBDRDI5NEVFMDBBMEI3QjMgLyogQ1NTVGltaW5nRnVu
Y3Rpb25WYWx1ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQkM4MEM5ODYwQ0QyOTRFRTAwQTBCN0IzIC8qIENTU1RpbWluZ0Z1bmN0aW9uVmFsdWUuaCAq
LzsgfTsKIAkJQkM4MjQzMjkwRDBDRThBMjAwNDYwQzhGIC8qIEpTU1FMRXJyb3IuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDODI0MzI1MEQwQ0U4QTIw
MDQ2MEM4RiAvKiBKU1NRTEVycm9yLmggKi87IH07CkBAIC01NjQzLDYgKzU2NDEsOCBAQAogCQlF
NDQ2MTQzQzBDRDY4OUNDMDBGQURBNzUgLyogSlNIVE1MU291cmNlRWxlbWVudC5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTRCNDIzNzIwQ0JGQjZFMDAw
QUYyRUNFIC8qIEpTSFRNTFNvdXJjZUVsZW1lbnQuaCAqLzsgfTsKIAkJRTQ0NjE0NTEwQ0Q2OEEz
NTAwRkFEQTc1IC8qIFJlbmRlclZpZGVvLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEU0QjQxRTMzMENCRkI2MDkwMEFGMkVDRSAvKiBSZW5kZXJWaWRl
by5jcHAgKi87IH07CiAJCUU0NDYxNDUyMENENjhBMzUwMEZBREE3NSAvKiBSZW5kZXJWaWRlby5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTRCNDFFMzQw
Q0JGQjYwOTAwQUYyRUNFIC8qIFJlbmRlclZpZGVvLmggKi87IH07CisJCUU0NTY5QTRCMTQwQzI0
NzgwMDZFQjM0NCAvKiBTZWxlY3RvclF1ZXJ5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBFNDU2OUE0QTE0MEMyNDc4MDA2RUIzNDQgLyogU2VsZWN0b3JR
dWVyeS5oICovOyB9OworCQlFNDU2OUE0RDE0MEM0MTQ5MDA2RUIzNDQgLyogU2VsZWN0b3JRdWVy
eS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFNDU2
OUE0QzE0MEM0MTQ5MDA2RUIzNDQgLyogU2VsZWN0b3JRdWVyeS5jcHAgKi87IH07CiAJCUU0NjJB
NEExMTEzRTcxQkUwMDRBNDIyMCAvKiBJbnRQb2ludEhhc2guaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEU0NjJBNEEwMTEzRTcxQkUwMDRBNDIyMCAvKiBJ
bnRQb2ludEhhc2guaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQlFNDc3OEI3RjExNUE1ODFBMDBCNUQzNzIgLyogSlNDdXN0b21FdmVudC5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFNDc3OEI3RDExNUE1
ODFBMDBCNUQzNzIgLyogSlNDdXN0b21FdmVudC5jcHAgKi87IH07CiAJCUU0Nzc4QjgwMTE1QTU4
MUEwMEI1RDM3MiAvKiBKU0N1c3RvbUV2ZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBFNDc3OEI3RTExNUE1ODFBMDBCNUQzNzIgLyogSlNDdXN0b21F
dmVudC5oICovOyB9OwpAQCAtMTE3OTgsOCArMTE3OTgsNiBAQAogCQlCQzdGQTYxRjBEMUYwQ0JE
MDBEQjIyQTkgLyogRHluYW1pY05vZGVMaXN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IER5bmFtaWNOb2RlTGlzdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlC
QzdGQTYyQjBEMUYwRUZGMDBEQjIyQTkgLyogU3RhdGljTm9kZUxpc3QuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gU3RhdGljTm9kZUxpc3QuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJQkM3RkE2MkMwRDFGMEVGRjAwREIyMkE5IC8qIFN0YXRpY05vZGVMaXN0LmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFN0YXRpY05vZGVMaXN0LmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQkM3RkE2N0YwRDFGMTY3OTAwREIyMkE5
IC8qIFNlbGVjdG9yTm9kZUxpc3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
U2VsZWN0b3JOb2RlTGlzdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlCQzdGQTY4
MDBEMUYxNjc5MDBEQjIyQTkgLyogU2VsZWN0b3JOb2RlTGlzdC5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTZWxlY3Rvck5vZGVMaXN0LmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJQkM4MEM5ODUwQ0QyOTRFRTAwQTBCN0IzIC8qIENTU1RpbWluZ0Z1
bmN0aW9uVmFsdWUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENT
U1RpbWluZ0Z1bmN0aW9uVmFsdWUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlC
QzgwQzk4NjBDRDI5NEVFMDBBMEI3QjMgLyogQ1NTVGltaW5nRnVuY3Rpb25WYWx1ZS5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ1NTVGltaW5nRnVuY3Rpb25WYWx1ZS5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQzgyNDMyNTBEMENFOEEyMDA0NjBDOEYgLyog
SlNTUUxFcnJvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU1NRTEVycm9y
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xMjM4Niw2ICsxMjM4NCw4IEBACiAJ
CUU0NDYxNDExMENENjgyNjkwMEZBREE3NSAvKiBKU01lZGlhRXJyb3IuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gSlNNZWRpYUVycm9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUU0NDYxNDEyMENENjgyNjkwMEZBREE3NSAvKiBKU1RpbWVSYW5nZXMuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNUaW1lUmFuZ2VzLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTQ0NjE0MTMwQ0Q2ODI2OTAwRkFEQTc1IC8qIEpT
VGltZVJhbmdlcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU1RpbWVSYW5n
ZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTQ1NjlBNEExNDBDMjQ3ODAwNkVC
MzQ0IC8qIFNlbGVjdG9yUXVlcnkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
U2VsZWN0b3JRdWVyeS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFNDU2OUE0QzE0
MEM0MTQ5MDA2RUIzNDQgLyogU2VsZWN0b3JRdWVyeS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBTZWxlY3RvclF1ZXJ5LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJRTQ2MkE0QTAxMTNFNzFCRTAwNEE0MjIwIC8qIEludFBvaW50SGFzaC5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbnRQb2ludEhhc2guaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJRTQ3NzhCN0QxMTVBNTgxQTAwQjVEMzcyIC8qIEpTQ3VzdG9tRXZl
bnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNDdXN0b21FdmVu
dC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUU0Nzc4QjdFMTE1QTU4MUEwMEI1
RDM3MiAvKiBKU0N1c3RvbUV2ZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IEpTQ3VzdG9tRXZlbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE5NTEwLDYg
KzE5NTEwLDggQEAKIAkJCQlCQzc0REEzNjEwMTNGM0Y3MDA3OTg3QUQgLyogUkdCQ29sb3IuY3Bw
ICovLAogCQkJCUJDNzREQTM1MTAxM0YzRjcwMDc5ODdBRCAvKiBSR0JDb2xvci5oICovLAogCQkJ
CTg1OEMzOEVGMEFBOEZERDEwMEIxODdBNCAvKiBSR0JDb2xvci5pZGwgKi8sCisJCQkJRTQ1NjlB
NEMxNDBDNDE0OTAwNkVCMzQ0IC8qIFNlbGVjdG9yUXVlcnkuY3BwICovLAorCQkJCUU0NTY5QTRB
MTQwQzI0NzgwMDZFQjM0NCAvKiBTZWxlY3RvclF1ZXJ5LmggKi8sCiAJCQkJQTgwRTZDQ0EwQTE5
ODlDQTAwN0ZCOEM1IC8qIFNoYWRvd1ZhbHVlLmNwcCAqLywKIAkJCQlBODBFNkNCRTBBMTk4OUNB
MDA3RkI4QzUgLyogU2hhZG93VmFsdWUuaCAqLywKIAkJCQlBODBFNzM0QzBBMTk5Qzc3MDA3RkI4
QzUgLyogU3R5bGVCYXNlLmNwcCAqLywKQEAgLTIwMDMzLDggKzIwMDM1LDYgQEAKIAkJCQk4QTQx
M0FERTEyMDdCQkE1MDA4MjAxNkUgLyogU2NyaXB0UnVubmVyLmggKi8sCiAJCQkJMDg0QUVCRTIw
RkI1MDVGQTAwMzg0ODNFIC8qIFNlbGVjdEVsZW1lbnQuY3BwICovLAogCQkJCTA4NEFFQkUzMEZC
NTA1RkEwMDM4NDgzRSAvKiBTZWxlY3RFbGVtZW50LmggKi8sCi0JCQkJQkM3RkE2ODAwRDFGMTY3
OTAwREIyMkE5IC8qIFNlbGVjdG9yTm9kZUxpc3QuY3BwICovLAotCQkJCUJDN0ZBNjdGMEQxRjE2
NzkwMERCMjJBOSAvKiBTZWxlY3Rvck5vZGVMaXN0LmggKi8sCiAJCQkJQTc2NkNGOEIxMzgxMEUw
QzAwMTFBMEIzIC8qIFNoYWRvd0NvbnRlbnRFbGVtZW50LmNwcCAqLywKIAkJCQlBNzRDMkQzQjEz
ODExRTBEMDBGODM1NzIgLyogU2hhZG93Q29udGVudEVsZW1lbnQuaCAqLywKIAkJCQlBNzFDMzBC
NjEzODEyNjVFMDBEQkMzNTEgLyogU2hhZG93SW5jbHVzaW9uU2VsZWN0b3IuY3BwICovLApAQCAt
MjI4MTAsNyArMjI4MTAsNiBAQAogCQkJCTM3MUY0RkZDMEQyNUU3RjMwMEVDRTBENSAvKiBTZWdt
ZW50ZWRGb250RGF0YS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjJDM0RBMkYwRDAwNkMxRDAwRUY2
RjI2IC8qIFNlZ21lbnRlZFN0cmluZy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMDg0QUVCRTUwRkI1
MDVGQTAwMzg0ODNFIC8qIFNlbGVjdEVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAotCQkJCUJDN0ZB
NjgxMEQxRjE2NzkwMERCMjJBOSAvKiBTZWxlY3Rvck5vZGVMaXN0LmggaW4gSGVhZGVycyAqLywK
IAkJCQlBNzVFNDk3NjEwNzUyQUNCMDBDOUI4OTYgLyogU2VyaWFsaXplZFNjcmlwdFZhbHVlLmgg
aW4gSGVhZGVycyAqLywKIAkJCQk5MzMwOUUxMDA5OUU2NDkyMDA1NkU1ODEgLyogU2V0Tm9kZUF0
dHJpYnV0ZUNvbW1hbmQuaCBpbiBIZWFkZXJzICovLAogCQkJCUI4REJEQjRDMTMwQjBGOEEwMEY1
Q0RCMSAvKiBTZXRTZWxlY3Rpb25Db21tYW5kLmggaW4gSGVhZGVycyAqLywKQEAgLTIzNDE2LDYg
KzIzNDE1LDcgQEAKIAkJCQk5MzUwMEYzMjEzRkRFM0JFMDA5OUVDMjQgLyogTlNTY3JvbGxlcklt
cERldGFpbHMuaCBpbiBIZWFkZXJzICovLAogCQkJCUQwQTNBNzMxMTQwNUEzOTgwMEZCOEVEMyAv
KiBSZXNvdXJjZUxvYWRlck9wdGlvbnMuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDRTQzODk3MTQw
QjAwNTEwMDVFNDM3RSAvKiBFdmVudENvbnN0cnVjdG9ycy5oIGluIEhlYWRlcnMgKi8sCisJCQkJ
RTQ1NjlBNEIxNDBDMjQ3ODAwNkVCMzQ0IC8qIFNlbGVjdG9yUXVlcnkuaCBpbiBIZWFkZXJzICov
LAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9
OwpAQCAtMjU3NDcsNyArMjU3NDcsNiBAQAogCQkJCTM3MUY0RkZEMEQyNUU3RjMwMEVDRTBENSAv
KiBTZWdtZW50ZWRGb250RGF0YS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCMkMzREEyRTBEMDA2
QzFEMDBFRjZGMjYgLyogU2VnbWVudGVkU3RyaW5nLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTA4
NEFFQkU0MEZCNTA1RkEwMDM4NDgzRSAvKiBTZWxlY3RFbGVtZW50LmNwcCBpbiBTb3VyY2VzICov
LAotCQkJCUJDN0ZBNjgyMEQxRjE2NzkwMERCMjJBOSAvKiBTZWxlY3Rvck5vZGVMaXN0LmNwcCBp
biBTb3VyY2VzICovLAogCQkJCUE3NUU0OTc3MTA3NTJBQ0IwMEM5Qjg5NiAvKiBTZXJpYWxpemVk
U2NyaXB0VmFsdWUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJOTMzMDlFMEYwOTlFNjQ5MjAwNTZF
NTgxIC8qIFNldE5vZGVBdHRyaWJ1dGVDb21tYW5kLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUI4
REJEQjRCMTMwQjBGOEEwMEY1Q0RCMSAvKiBTZXRTZWxlY3Rpb25Db21tYW5kLmNwcCBpbiBTb3Vy
Y2VzICovLApAQCAtMjYyMjIsNiArMjYyMjEsNyBAQAogCQkJCTFBMTQxNEI1MTNBMEYwNTAwMDE5
OTk2QyAvKiBXZWJLaXRGb250RmFtaWx5TmFtZXMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJREY5
QUZENzMxM0ZDMzFEODAwMTVGRUI3IC8qIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9i
akMubW0gaW4gU291cmNlcyAqLywKIAkJCQlCQ0U0Mzg5QTE0MEIwMDczMDA1RTQzN0UgLyogSlNF
dmVudENvbnN0cnVjdG9ycy5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlFNDU2OUE0RDE0MEM0MTQ5
MDA2RUIzNDQgLyogU2VsZWN0b3JRdWVyeS5jcHAgaW4gU291cmNlcyAqLywKIAkJCSk7CiAJCQly
dW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNlbGVjdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9jc3MvQ1NTU3R5bGVTZWxlY3Rvci5jcHAJKHJldmlzaW9uIDkzOTY3KQorKysgU291
cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxlU2VsZWN0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04
NzUsOSArODc1LDIwIEBAIEVJbnNpZGVMaW5rIENTU1N0eWxlU2VsZWN0b3I6OlNlbGVjdG9yQ2gK
ICNlbmRpZgogfQogCi1ib29sIENTU1N0eWxlU2VsZWN0b3I6OlNlbGVjdG9yQ2hlY2tlcjo6Y2hl
Y2tTZWxlY3RvcihDU1NTZWxlY3Rvciogc2VsLCBFbGVtZW50KiBlbGVtZW50KSBjb25zdAorYm9v
bCBDU1NTdHlsZVNlbGVjdG9yOjpTZWxlY3RvckNoZWNrZXI6OmNoZWNrU2VsZWN0b3IoQ1NTU2Vs
ZWN0b3IqIHNlbCwgRWxlbWVudCogZWxlbWVudCwgYm9vbCBpc0Zhc3RDaGVja2FibGVTZWxlY3Rv
cikgY29uc3QKIHsKICAgICBQc2V1ZG9JZCBkeW5hbWljUHNldWRvID0gTk9QU0VVRE87CisgICAg
aWYgKGlzRmFzdENoZWNrYWJsZVNlbGVjdG9yICYmICFlbGVtZW50LT5pc1NWR0VsZW1lbnQoKSkg
eworICAgICAgICAvLyBmYXN0Q2hlY2tTZWxlY3RvciBhc3N1bWVzIGNsYXNzIGFuZCBpZCBtYXRj
aCBmb3IgdGhlIHRvcCBzZWxlY3Rvci4KKyAgICAgICAgaWYgKHNlbC0+bV9tYXRjaCA9PSBDU1NT
ZWxlY3Rvcjo6Q2xhc3MpIHsKKyAgICAgICAgICAgIGlmICghKGVsZW1lbnQtPmhhc0NsYXNzKCkg
JiYgc3RhdGljX2Nhc3Q8U3R5bGVkRWxlbWVudCo+KGVsZW1lbnQpLT5jbGFzc05hbWVzKCkuY29u
dGFpbnMoc2VsLT52YWx1ZSgpKSkpCisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
ICAgICB9IGVsc2UgaWYgKHNlbC0+bV9tYXRjaCA9PSBDU1NTZWxlY3Rvcjo6SWQpIHsKKyAgICAg
ICAgICAgIGlmICghKGVsZW1lbnQtPmhhc0lEKCkgJiYgZWxlbWVudC0+aWRGb3JTdHlsZVJlc29s
dXRpb24oKSA9PSBzZWwtPnZhbHVlKCkpKQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICAgICAgfQorICAgICAgICByZXR1cm4gZmFzdENoZWNrU2VsZWN0b3Ioc2VsLCBlbGVtZW50
KTsKKyAgICB9CiAgICAgcmV0dXJuIGNoZWNrU2VsZWN0b3Ioc2VsLCBlbGVtZW50LCBkeW5hbWlj
UHNldWRvLCBmYWxzZSwgZmFsc2UpID09IFNlbGVjdG9yTWF0Y2hlczsKIH0KIApAQCAtMjAxMiwx
NyArMjAyMyw2IEBAIGlubGluZSBib29sIHNlbGVjdG9yVGFnTWF0Y2hlcyhjb25zdCBFbGUKICAg
ICBjb25zdCBBdG9taWNTdHJpbmcmIG5hbWVzcGFjZVVSSSA9IHNlbGVjdG9yLT50YWcoKS5uYW1l
c3BhY2VVUkkoKTsKICAgICByZXR1cm4gbmFtZXNwYWNlVVJJID09IHN0YXJBdG9tIHx8IG5hbWVz
cGFjZVVSSSA9PSBlbGVtZW50LT5uYW1lc3BhY2VVUkkoKTsKIH0KLQotaW5saW5lIGJvb2wgaXNG
YXN0Q2hlY2thYmxlU2VsZWN0b3IoY29uc3QgQ1NTU2VsZWN0b3IqIHNlbGVjdG9yKQotewotICAg
IGZvciAoOyBzZWxlY3Rvcjsgc2VsZWN0b3IgPSBzZWxlY3Rvci0+dGFnSGlzdG9yeSgpKSB7Ci0g
ICAgICAgIGlmIChzZWxlY3Rvci0+cmVsYXRpb24oKSAhPSBDU1NTZWxlY3Rvcjo6RGVzY2VuZGFu
dCAmJiBzZWxlY3Rvci0+cmVsYXRpb24oKSAhPSBDU1NTZWxlY3Rvcjo6Q2hpbGQgJiYgc2VsZWN0
b3ItPnJlbGF0aW9uKCkgIT0gQ1NTU2VsZWN0b3I6OlN1YlNlbGVjdG9yKQotICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOwotICAgICAgICBpZiAoc2VsZWN0b3ItPm1fbWF0Y2ggIT0gQ1NTU2VsZWN0
b3I6Ok5vbmUgJiYgc2VsZWN0b3ItPm1fbWF0Y2ggIT0gQ1NTU2VsZWN0b3I6OklkICYmIHNlbGVj
dG9yLT5tX21hdGNoICE9IENTU1NlbGVjdG9yOjpDbGFzcykKLSAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKLSAgICB9Ci0gICAgcmV0dXJuIHRydWU7Ci19CiAgICAgCiB0ZW1wbGF0ZSA8Ym9vbCBj
aGVja1ZhbHVlKGNvbnN0IEVsZW1lbnQqLCBBdG9taWNTdHJpbmdJbXBsKik+CiBpbmxpbmUgYm9v
bCBmYXN0Q2hlY2tTaW5nbGVTZWxlY3Rvcihjb25zdCBDU1NTZWxlY3RvciomIHNlbGVjdG9yLCBj
b25zdCBFbGVtZW50KiYgZWxlbWVudCwgY29uc3QgQ1NTU2VsZWN0b3IqJiB0b3BDaGlsZE9yU3Vi
c2VsZWN0b3IsIGNvbnN0IEVsZW1lbnQqJiB0b3BDaGlsZE9yU3Vic2VsZWN0b3JNYXRjaEVsZW1l
bnQpCkBAIC0yMTE2LDYgKzIxMTYsMTcgQEAgYm9vbCBDU1NTdHlsZVNlbGVjdG9yOjpTZWxlY3Rv
ckNoZWNrZXI6OgogICAgIHJldHVybiB0cnVlOwogfQogCitib29sIENTU1N0eWxlU2VsZWN0b3I6
OlNlbGVjdG9yQ2hlY2tlcjo6aXNGYXN0Q2hlY2thYmxlU2VsZWN0b3IoY29uc3QgQ1NTU2VsZWN0
b3IqIHNlbGVjdG9yKQoreworICAgIGZvciAoOyBzZWxlY3Rvcjsgc2VsZWN0b3IgPSBzZWxlY3Rv
ci0+dGFnSGlzdG9yeSgpKSB7CisgICAgICAgIGlmIChzZWxlY3Rvci0+cmVsYXRpb24oKSAhPSBD
U1NTZWxlY3Rvcjo6RGVzY2VuZGFudCAmJiBzZWxlY3Rvci0+cmVsYXRpb24oKSAhPSBDU1NTZWxl
Y3Rvcjo6Q2hpbGQgJiYgc2VsZWN0b3ItPnJlbGF0aW9uKCkgIT0gQ1NTU2VsZWN0b3I6OlN1YlNl
bGVjdG9yKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBpZiAoc2VsZWN0b3It
Pm1fbWF0Y2ggIT0gQ1NTU2VsZWN0b3I6Ok5vbmUgJiYgc2VsZWN0b3ItPm1fbWF0Y2ggIT0gQ1NT
U2VsZWN0b3I6OklkICYmIHNlbGVjdG9yLT5tX21hdGNoICE9IENTU1NlbGVjdG9yOjpDbGFzcykK
KyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgICAgcmV0dXJuIHRydWU7Cit9CisK
IC8vIFJlY3Vyc2l2ZSBjaGVjayBvZiBzZWxlY3RvcnMgYW5kIGNvbWJpbmF0b3JzCiAvLyBJdCBj
YW4gcmV0dXJuIDMgZGlmZmVyZW50IHZhbHVlczoKIC8vICogU2VsZWN0b3JNYXRjaGVzICAgICAg
ICAgLSB0aGUgc2VsZWN0b3IgbWF0Y2hlcyB0aGUgZWxlbWVudCBlCkBAIC0zMDM1LDcgKzMwNDYs
NyBAQCBSdWxlRGF0YTo6UnVsZURhdGEoQ1NTU3R5bGVSdWxlKiBydWxlLCBDCiAgICAgLCBtX3Nl
bGVjdG9yKHNlbGVjdG9yKQogICAgICwgbV9zcGVjaWZpY2l0eShzZWxlY3Rvci0+c3BlY2lmaWNp
dHkoKSkKICAgICAsIG1fcG9zaXRpb24ocG9zaXRpb24pCi0gICAgLCBtX2hhc0Zhc3RDaGVja2Fi
bGVTZWxlY3Rvcihpc0Zhc3RDaGVja2FibGVTZWxlY3RvcihzZWxlY3RvcikpCisgICAgLCBtX2hh
c0Zhc3RDaGVja2FibGVTZWxlY3RvcihDU1NTdHlsZVNlbGVjdG9yOjpTZWxlY3RvckNoZWNrZXI6
OmlzRmFzdENoZWNrYWJsZVNlbGVjdG9yKHNlbGVjdG9yKSkKICAgICAsIG1faGFzTXVsdGlwYXJ0
U2VsZWN0b3Ioc2VsZWN0b3ItPnRhZ0hpc3RvcnkoKSkKICAgICAsIG1faGFzVG9wU2VsZWN0b3JN
YXRjaGluZ0hUTUxCYXNlZE9uUnVsZUhhc2goaXNTZWxlY3Rvck1hdGNoaW5nSFRNTEJhc2VkT25S
dWxlSGFzaChzZWxlY3RvcikpCiB7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVT
ZWxlY3Rvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNlbGVj
dG9yLmgJKHJldmlzaW9uIDkzOTY3KQorKysgU291cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxlU2Vs
ZWN0b3IuaAkod29ya2luZyBjb3B5KQpAQCAtMjc1LDEwICsyNzUsMTEgQEAgcHVibGljOgogICAg
ICAgICBwdWJsaWM6CiAgICAgICAgICAgICBTZWxlY3RvckNoZWNrZXIoRG9jdW1lbnQqLCBib29s
IHN0cmljdFBhcnNpbmcpOwogCi0gICAgICAgICAgICBib29sIGNoZWNrU2VsZWN0b3IoQ1NTU2Vs
ZWN0b3IqLCBFbGVtZW50KikgY29uc3Q7CisgICAgICAgICAgICBib29sIGNoZWNrU2VsZWN0b3Io
Q1NTU2VsZWN0b3IqLCBFbGVtZW50KiwgYm9vbCBpc0Zhc3RDaGVja2FibGVTZWxlY3RvciA9IGZh
bHNlKSBjb25zdDsKICAgICAgICAgICAgIFNlbGVjdG9yTWF0Y2ggY2hlY2tTZWxlY3RvcihDU1NT
ZWxlY3RvciosIEVsZW1lbnQqLCBQc2V1ZG9JZCYgZHluYW1pY1BzZXVkbywgYm9vbCBpc1N1YlNl
bGVjdG9yLCBib29sIGVuY291bnRlcmVkTGluaywgUmVuZGVyU3R5bGUqID0gMCwgUmVuZGVyU3R5
bGUqIGVsZW1lbnRQYXJlbnRTdHlsZSA9IDApIGNvbnN0OwogICAgICAgICAgICAgYm9vbCBjaGVj
a09uZVNlbGVjdG9yKENTU1NlbGVjdG9yKiwgRWxlbWVudCosIFBzZXVkb0lkJiBkeW5hbWljUHNl
dWRvLCBib29sIGlzU3ViU2VsZWN0b3IsIGJvb2wgZW5jb3VudGVyZWRMaW5rLCBSZW5kZXJTdHls
ZSosIFJlbmRlclN0eWxlKiBlbGVtZW50UGFyZW50U3R5bGUpIGNvbnN0OwogICAgICAgICAgICAg
Ym9vbCBjaGVja1Njcm9sbGJhclBzZXVkb0NsYXNzKENTU1NlbGVjdG9yKiwgUHNldWRvSWQmIGR5
bmFtaWNQc2V1ZG8pIGNvbnN0OworICAgICAgICAgICAgc3RhdGljIGJvb2wgaXNGYXN0Q2hlY2th
YmxlU2VsZWN0b3IoY29uc3QgQ1NTU2VsZWN0b3IqKTsKICAgICAgICAgICAgIHN0YXRpYyBib29s
IGZhc3RDaGVja1NlbGVjdG9yKGNvbnN0IENTU1NlbGVjdG9yKiwgY29uc3QgRWxlbWVudCopOwog
CiAgICAgICAgICAgICBFSW5zaWRlTGluayBkZXRlcm1pbmVMaW5rU3RhdGUoRWxlbWVudCogZWxl
bWVudCkgY29uc3Q7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvU2VsZWN0b3JRdWVyeS5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL1NlbGVjdG9yUXVlcnkuY3BwCShyZXZp
c2lvbiAwKQorKysgU291cmNlL1dlYkNvcmUvY3NzL1NlbGVjdG9yUXVlcnkuY3BwCShyZXZpc2lv
biAwKQpAQCAtMCwwICsxLDEyMSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMi
IEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1
ZGUgIlNlbGVjdG9yUXVlcnkuaCIKKworI2luY2x1ZGUgIkNTU1NlbGVjdG9yTGlzdC5oIgorI2lu
Y2x1ZGUgIkRvY3VtZW50LmgiCisjaW5jbHVkZSAiU3R5bGVkRWxlbWVudC5oIgorCituYW1lc3Bh
Y2UgV2ViQ29yZSB7CisKK1NlbGVjdG9yUXVlcnk6OlNlbGVjdG9yUXVlcnkoTm9kZSogcm9vdE5v
ZGUsIGNvbnN0IENTU1NlbGVjdG9yTGlzdCYgc2VsZWN0b3JMaXN0KQorICAgIDogbV9yb290Tm9k
ZShyb290Tm9kZSkKKyAgICAsIG1fc2VsZWN0b3JDaGVja2VyKHJvb3ROb2RlLT5kb2N1bWVudCgp
LCAhcm9vdE5vZGUtPmRvY3VtZW50KCktPmluUXVpcmtzTW9kZSgpKQoreworICAgIGZvciAoQ1NT
U2VsZWN0b3IqIHNlbGVjdG9yID0gc2VsZWN0b3JMaXN0LmZpcnN0KCk7IHNlbGVjdG9yOyBzZWxl
Y3RvciA9IENTU1NlbGVjdG9yTGlzdDo6bmV4dChzZWxlY3RvcikpIHsKKyAgICAgICAgU2VsZWN0
b3JEYXRhIGRhdGEgPSB7IAorICAgICAgICAgICAgLnNlbGVjdG9yID0gc2VsZWN0b3IsIAorICAg
ICAgICAgICAgLmlzRmFzdENoZWNrYWJsZSA9IENTU1N0eWxlU2VsZWN0b3I6OlNlbGVjdG9yQ2hl
Y2tlcjo6aXNGYXN0Q2hlY2thYmxlU2VsZWN0b3Ioc2VsZWN0b3IpLAorICAgICAgICB9OworICAg
ICAgICBtX3NlbGVjdG9ycy5hcHBlbmQoZGF0YSk7CisgICAgfQorfQorICAgIAordm9pZCBTZWxl
Y3RvclF1ZXJ5OjpxdWVyeUFsbChWZWN0b3I8UmVmUHRyPE5vZGU+ID4mIHJlc3VsdCkKK3sKKyAg
ICBleGVjdXRlPGZhbHNlPihyZXN1bHQpOworfQorCitQYXNzUmVmUHRyPEVsZW1lbnQ+IFNlbGVj
dG9yUXVlcnk6OnF1ZXJ5KCkgY29uc3QgCit7IAorICAgIFZlY3RvcjxSZWZQdHI8Tm9kZT4gPiBy
ZXN1bHQ7CisgICAgZXhlY3V0ZTx0cnVlPihyZXN1bHQpOworICAgIGlmIChyZXN1bHQuaXNFbXB0
eSgpKQorICAgICAgICByZXR1cm4gMDsKKyAgICBBU1NFUlQocmVzdWx0LnNpemUoKSA9PSAxKTsK
KyAgICBBU1NFUlQocmVzdWx0LmZpcnN0KCktPmlzRWxlbWVudE5vZGUoKSk7CisgICAgcmV0dXJu
IHN0YXRpY19jYXN0PEVsZW1lbnQqPihyZXN1bHQuZmlyc3QoKS5nZXQoKSk7Cit9CisKK2Jvb2wg
U2VsZWN0b3JRdWVyeTo6Y2FuVXNlSWRMb29rdXAoKSBjb25zdAoreworICAgIC8vIFdlIG5lZWQg
dG8gcmV0dXJuIHRoZSBtYXRjaGVzIGluIGRvY3VtZW50IG9yZGVyLiBUbyB1c2UgaWQgbG9va3Vw
IHdoaWxlIHRoZXJlIGlzIHBvc3NpYmxpdHkgb2YgbXVsdGlwbGUgbWF0Y2hlcworICAgIC8vIHdl
IHdvdWxkIG5lZWQgdG8gc29ydCB0aGUgcmVzdWx0cy4gRm9yIG5vdywganVzdCB0cmF2ZXJzZSB0
aGUgZG9jdW1lbnQgaW4gdGhhdCBjYXNlLgorICAgIGlmIChtX3NlbGVjdG9ycy5zaXplKCkgIT0g
MSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmICghbV9yb290Tm9kZS0+aW5Eb2N1bWVu
dCgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKG1fcm9vdE5vZGUtPmRvY3VtZW50
KCktPmluUXVpcmtzTW9kZSgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKG1fc2Vs
ZWN0b3JzWzBdLnNlbGVjdG9yLT5tX21hdGNoICE9IENTU1NlbGVjdG9yOjpJZCkKKyAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgIGlmIChtX3Jvb3ROb2RlLT5kb2N1bWVudCgpLT5jb250YWluc011
bHRpcGxlRWxlbWVudHNXaXRoSWQobV9zZWxlY3RvcnNbMF0uc2VsZWN0b3ItPnZhbHVlKCkpKQor
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK3RlbXBsYXRlIDxi
b29sIGZpcnN0TWF0Y2hPbmx5Pgordm9pZCBTZWxlY3RvclF1ZXJ5OjpleGVjdXRlKFZlY3RvcjxS
ZWZQdHI8Tm9kZT4gPiYgbWF0Y2hlZEVsZW1lbnRzKSBjb25zdAoreworICAgIGlmIChjYW5Vc2VJ
ZExvb2t1cCgpKSB7CisgICAgICAgIEFTU0VSVChtX3NlbGVjdG9ycy5zaXplKCkgPT0gMSk7Cisg
ICAgICAgIENTU1NlbGVjdG9yKiBzZWxlY3RvciA9IG1fc2VsZWN0b3JzWzBdLnNlbGVjdG9yOwor
ICAgICAgICBFbGVtZW50KiBlbGVtZW50ID0gbV9yb290Tm9kZS0+ZG9jdW1lbnQoKS0+Z2V0RWxl
bWVudEJ5SWQoc2VsZWN0b3ItPnZhbHVlKCkpOworICAgICAgICBpZiAoZWxlbWVudCAmJiBlbGVt
ZW50LT5pc0Rlc2NlbmRhbnRPZihtX3Jvb3ROb2RlKSAmJiBtX3NlbGVjdG9yQ2hlY2tlci5jaGVj
a1NlbGVjdG9yKHNlbGVjdG9yLCBlbGVtZW50LCBtX3NlbGVjdG9yc1swXS5pc0Zhc3RDaGVja2Fi
bGUpKQorICAgICAgICAgICAgbWF0Y2hlZEVsZW1lbnRzLmFwcGVuZChlbGVtZW50KTsKKyAgICAg
ICAgcmV0dXJuOworICAgIH0KKyAgICAKKyAgICB1bnNpZ25lZCBzZWxlY3RvckNvdW50ID0gbV9z
ZWxlY3RvcnMuc2l6ZSgpOworICAgIAorICAgIE5vZGUqIG4gPSBtX3Jvb3ROb2RlLT5maXJzdENo
aWxkKCk7CisgICAgd2hpbGUgKG4pIHsKKyAgICAgICAgaWYgKG4tPmlzRWxlbWVudE5vZGUoKSkg
eworICAgICAgICAgICAgRWxlbWVudCogZWxlbWVudCA9IHN0YXRpY19jYXN0PEVsZW1lbnQqPihu
KTsKKyAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBzZWxlY3RvckNvdW50OyAr
K2kpIHsKKyAgICAgICAgICAgICAgICBpZiAobV9zZWxlY3RvckNoZWNrZXIuY2hlY2tTZWxlY3Rv
cihtX3NlbGVjdG9yc1tpXS5zZWxlY3RvciwgZWxlbWVudCwgbV9zZWxlY3RvcnNbaV0uaXNGYXN0
Q2hlY2thYmxlKSkgeworICAgICAgICAgICAgICAgICAgICBtYXRjaGVkRWxlbWVudHMuYXBwZW5k
KGVsZW1lbnQpOworICAgICAgICAgICAgICAgICAgICBpZiAoZmlyc3RNYXRjaE9ubHkpCisgICAg
ICAgICAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChuLT5maXJz
dENoaWxkKCkpIHsKKyAgICAgICAgICAgICAgICBuID0gbi0+Zmlyc3RDaGlsZCgpOworICAgICAg
ICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIHdo
aWxlICghbi0+bmV4dFNpYmxpbmcoKSkgeworICAgICAgICAgICAgbiA9IG4tPnBhcmVudE5vZGUo
KTsKKyAgICAgICAgICAgIGlmIChuID09IG1fcm9vdE5vZGUpCisgICAgICAgICAgICAgICAgcmV0
dXJuOworICAgICAgICB9CisgICAgICAgIG4gPSBuLT5uZXh0U2libGluZygpOworICAgIH0KK30K
KworfQpJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL1NlbGVjdG9yUXVlcnkuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvU2VsZWN0b3JRdWVyeS5oCShyZXZpc2lvbiAwKQorKysg
U291cmNlL1dlYkNvcmUvY3NzL1NlbGVjdG9yUXVlcnkuaAkocmV2aXNpb24gMCkKQEAgLTAsMCAr
MSw2MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAq
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2lmbmRlZiBTZWxlY3RvclF1ZXJ5X2gKKyNkZWZpbmUgU2VsZWN0b3JR
dWVyeV9oCisKKyNpbmNsdWRlICJDU1NTdHlsZVNlbGVjdG9yLmgiCisjaW5jbHVkZSA8d3RmL1Zl
Y3Rvci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisgICAgCitjbGFzcyBOb2RlOworY2xhc3Mg
RWxlbWVudDsKK2NsYXNzIENTU1NlbGVjdG9yOworY2xhc3MgQ1NTU2VsZWN0b3JMaXN0OworCitj
bGFzcyBTZWxlY3RvclF1ZXJ5IHsKK3B1YmxpYzoKKyAgICBTZWxlY3RvclF1ZXJ5KE5vZGUqIHJv
b3ROb2RlLCBjb25zdCBDU1NTZWxlY3Rvckxpc3QmKTsKKyAgICAKKyAgICB2b2lkIHF1ZXJ5QWxs
KFZlY3RvcjxSZWZQdHI8Tm9kZT4gPiYpOworICAgIFBhc3NSZWZQdHI8RWxlbWVudD4gcXVlcnko
KSBjb25zdDsKKworcHJpdmF0ZToKKyAgICBib29sIGNhblVzZUlkTG9va3VwKCkgY29uc3Q7CisK
KyAgICB0ZW1wbGF0ZSA8Ym9vbCBmaXJzdE1hdGNoT25seT4KKyAgICB2b2lkIGV4ZWN1dGUoVmVj
dG9yPFJlZlB0cjxOb2RlPiA+JikgY29uc3Q7CisgICAgCisgICAgc3RydWN0IFNlbGVjdG9yRGF0
YSB7CisgICAgICAgIENTU1NlbGVjdG9yKiBzZWxlY3RvcjsKKyAgICAgICAgYm9vbCBpc0Zhc3RD
aGVja2FibGU7CisgICAgfTsKKyAgICBOb2RlKiBtX3Jvb3ROb2RlOworICAgIFZlY3RvcjxTZWxl
Y3RvckRhdGE+IG1fc2VsZWN0b3JzOworICAgIENTU1N0eWxlU2VsZWN0b3I6OlNlbGVjdG9yQ2hl
Y2tlciBtX3NlbGVjdG9yQ2hlY2tlcjsKK307CisKK30KKworI2VuZGlmCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9kb20vTm9kZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL05v
ZGUuY3BwCShyZXZpc2lvbiA5Mzk2NykKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtODEsNyArODEsNyBAQAogI2luY2x1ZGUgIlJlbmRlclRleHRDb250
cm9sLmgiCiAjaW5jbHVkZSAiUmVuZGVyVmlldy5oIgogI2luY2x1ZGUgIlNjb3BlZEV2ZW50UXVl
dWUuaCIKLSNpbmNsdWRlICJTZWxlY3Rvck5vZGVMaXN0LmgiCisjaW5jbHVkZSAiU2VsZWN0b3JR
dWVyeS5oIgogI2luY2x1ZGUgIlNoYWRvd1Jvb3QuaCIKICNpbmNsdWRlICJTdGF0aWNOb2RlTGlz
dC5oIgogI2luY2x1ZGUgIlRhZ05vZGVMaXN0LmgiCkBAIC0xNzY1LDI5ICsxNzY1LDkgQEAgUGFz
c1JlZlB0cjxFbGVtZW50PiBOb2RlOjpxdWVyeVNlbGVjdG9yKAogICAgICAgICBlYyA9IE5BTUVT
UEFDRV9FUlI7CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KLQotICAgIENTU1N0eWxlU2VsZWN0
b3I6OlNlbGVjdG9yQ2hlY2tlciBzZWxlY3RvckNoZWNrZXIoZG9jdW1lbnQoKSwgc3RyaWN0UGFy
c2luZyk7Ci0KLSAgICAvLyBGSVhNRTogd2UgY291bGQgYWxzbyBvcHRpbWl6ZSBmb3IgdGhlIHRo
ZSBbaWQ9ImZvbyJdIGNhc2UKLSAgICBpZiAoc3RyaWN0UGFyc2luZyAmJiBpbkRvY3VtZW50KCkg
JiYgcXVlcnlTZWxlY3Rvckxpc3QuaGFzT25lU2VsZWN0b3IoKSAmJiBxdWVyeVNlbGVjdG9yTGlz
dC5maXJzdCgpLT5tX21hdGNoID09IENTU1NlbGVjdG9yOjpJZCkgewotICAgICAgICBFbGVtZW50
KiBlbGVtZW50ID0gdHJlZVNjb3BlKCktPmdldEVsZW1lbnRCeUlkKHF1ZXJ5U2VsZWN0b3JMaXN0
LmZpcnN0KCktPnZhbHVlKCkpOwotICAgICAgICBpZiAoZWxlbWVudCAmJiAoaXNEb2N1bWVudE5v
ZGUoKSB8fCBlbGVtZW50LT5pc0Rlc2NlbmRhbnRPZih0aGlzKSkgJiYgc2VsZWN0b3JDaGVja2Vy
LmNoZWNrU2VsZWN0b3IocXVlcnlTZWxlY3Rvckxpc3QuZmlyc3QoKSwgZWxlbWVudCkpCi0gICAg
ICAgICAgICByZXR1cm4gZWxlbWVudDsKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgfQotCi0gICAg
Ly8gRklYTUU6IFdlIGNhbiBzcGVlZCB0aGlzIHVwIGJ5IGltcGxlbWVudGluZyBjYWNoaW5nIHNp
bWlsYXIgdG8gdGhlIG9uZSB1c2UgYnkgZ2V0RWxlbWVudEJ5SWQKLSAgICBmb3IgKE5vZGUqIG4g
PSBmaXJzdENoaWxkKCk7IG47IG4gPSBuLT50cmF2ZXJzZU5leHROb2RlKHRoaXMpKSB7Ci0gICAg
ICAgIGlmIChuLT5pc0VsZW1lbnROb2RlKCkpIHsKLSAgICAgICAgICAgIEVsZW1lbnQqIGVsZW1l
bnQgPSBzdGF0aWNfY2FzdDxFbGVtZW50Kj4obik7Ci0gICAgICAgICAgICBmb3IgKENTU1NlbGVj
dG9yKiBzZWxlY3RvciA9IHF1ZXJ5U2VsZWN0b3JMaXN0LmZpcnN0KCk7IHNlbGVjdG9yOyBzZWxl
Y3RvciA9IENTU1NlbGVjdG9yTGlzdDo6bmV4dChzZWxlY3RvcikpIHsKLSAgICAgICAgICAgICAg
ICBpZiAoc2VsZWN0b3JDaGVja2VyLmNoZWNrU2VsZWN0b3Ioc2VsZWN0b3IsIGVsZW1lbnQpKQot
ICAgICAgICAgICAgICAgICAgICByZXR1cm4gZWxlbWVudDsKLSAgICAgICAgICAgIH0KLSAgICAg
ICAgfQotICAgIH0KICAgICAKLSAgICByZXR1cm4gMDsKKyAgICBTZWxlY3RvclF1ZXJ5IHNlbGVj
dG9yUXVlcnkodGhpcywgcXVlcnlTZWxlY3Rvckxpc3QpOworICAgIHJldHVybiBzZWxlY3RvclF1
ZXJ5LnF1ZXJ5KCk7CiB9CiAKIFBhc3NSZWZQdHI8Tm9kZUxpc3Q+IE5vZGU6OnF1ZXJ5U2VsZWN0
b3JBbGwoY29uc3QgU3RyaW5nJiBzZWxlY3RvcnMsIEV4Y2VwdGlvbkNvZGUmIGVjKQpAQCAtMTgx
Myw3ICsxNzkzLDEwIEBAIFBhc3NSZWZQdHI8Tm9kZUxpc3Q+IE5vZGU6OnF1ZXJ5U2VsZWN0b3IK
ICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogCi0gICAgcmV0dXJuIGNyZWF0ZVNlbGVjdG9yTm9k
ZUxpc3QodGhpcywgcXVlcnlTZWxlY3Rvckxpc3QpOworICAgIFNlbGVjdG9yUXVlcnkgc2VsZWN0
b3JRdWVyeSh0aGlzLCBxdWVyeVNlbGVjdG9yTGlzdCk7CisgICAgVmVjdG9yPFJlZlB0cjxOb2Rl
PiA+IHJlc3VsdHM7CisgICAgc2VsZWN0b3JRdWVyeS5xdWVyeUFsbChyZXN1bHRzKTsKKyAgICBy
ZXR1cm4gU3RhdGljTm9kZUxpc3Q6OmFkb3B0KHJlc3VsdHMpOwogfQogCiBEb2N1bWVudCAqTm9k
ZTo6b3duZXJEb2N1bWVudCgpIGNvbnN0CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vU2VsZWN0
b3JOb2RlTGlzdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL1NlbGVjdG9y
Tm9kZUxpc3QuY3BwCShyZXZpc2lvbiA5Mzk2NykKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9TZWxl
Y3Rvck5vZGVMaXN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw3NCArMCwwIEBACi0vKgotICog
Q29weXJpZ2h0IChDKSAyMDA3LCAyMDA4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
LSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqCi0gKiAxLiAg
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0g
KiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KLSAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxlIENvbXB1
dGVyLCBJbmMuICgiQXBwbGUiKSBub3IgdGhlIG5hbWVzIG9mCi0gKiAgICAgaXRzIGNvbnRyaWJ1
dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAot
ICogICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4g
cGVybWlzc2lvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFO
RCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAot
ICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUiBQVVJQT1NFIEFSRQotICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
T1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQotICogRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMKLSAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKLSAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAotICogT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgotICogVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0j
aW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiU2VsZWN0b3JOb2RlTGlzdC5oIgotCi0jaW5j
bHVkZSAiQ1NTU2VsZWN0b3IuaCIKLSNpbmNsdWRlICJDU1NTZWxlY3Rvckxpc3QuaCIKLSNpbmNs
dWRlICJDU1NTdHlsZVNlbGVjdG9yLmgiCi0jaW5jbHVkZSAiRG9jdW1lbnQuaCIKLSNpbmNsdWRl
ICJFbGVtZW50LmgiCi0jaW5jbHVkZSAiSFRNTE5hbWVzLmgiCi0jaW5jbHVkZSAiU3RhdGljTm9k
ZUxpc3QuaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi11c2luZyBuYW1lc3BhY2UgSFRNTE5h
bWVzOwotCi1QYXNzUmVmUHRyPFN0YXRpY05vZGVMaXN0PiBjcmVhdGVTZWxlY3Rvck5vZGVMaXN0
KE5vZGUqIHJvb3ROb2RlLCBjb25zdCBDU1NTZWxlY3Rvckxpc3QmIHF1ZXJ5U2VsZWN0b3JMaXN0
KQotewotICAgIFZlY3RvcjxSZWZQdHI8Tm9kZT4gPiBub2RlczsKLSAgICBEb2N1bWVudCogZG9j
dW1lbnQgPSByb290Tm9kZS0+ZG9jdW1lbnQoKTsKLSAgICBDU1NTZWxlY3Rvciogb25seVNlbGVj
dG9yID0gcXVlcnlTZWxlY3Rvckxpc3QuaGFzT25lU2VsZWN0b3IoKSA/IHF1ZXJ5U2VsZWN0b3JM
aXN0LmZpcnN0KCkgOiAwOwotICAgIGJvb2wgc3RyaWN0UGFyc2luZyA9ICFkb2N1bWVudC0+aW5R
dWlya3NNb2RlKCk7Ci0KLSAgICBDU1NTdHlsZVNlbGVjdG9yOjpTZWxlY3RvckNoZWNrZXIgc2Vs
ZWN0b3JDaGVja2VyKGRvY3VtZW50LCBzdHJpY3RQYXJzaW5nKTsKLQotICAgIGlmIChzdHJpY3RQ
YXJzaW5nICYmIHJvb3ROb2RlLT5pbkRvY3VtZW50KCkgJiYgb25seVNlbGVjdG9yICYmIG9ubHlT
ZWxlY3Rvci0+bV9tYXRjaCA9PSBDU1NTZWxlY3Rvcjo6SWQgJiYgIWRvY3VtZW50LT5jb250YWlu
c011bHRpcGxlRWxlbWVudHNXaXRoSWQob25seVNlbGVjdG9yLT52YWx1ZSgpKSkgewotICAgICAg
ICBFbGVtZW50KiBlbGVtZW50ID0gZG9jdW1lbnQtPmdldEVsZW1lbnRCeUlkKG9ubHlTZWxlY3Rv
ci0+dmFsdWUoKSk7Ci0gICAgICAgIGlmIChlbGVtZW50ICYmIChyb290Tm9kZS0+aXNEb2N1bWVu
dE5vZGUoKSB8fCBlbGVtZW50LT5pc0Rlc2NlbmRhbnRPZihyb290Tm9kZSkpICYmIHNlbGVjdG9y
Q2hlY2tlci5jaGVja1NlbGVjdG9yKG9ubHlTZWxlY3RvciwgZWxlbWVudCkpCi0gICAgICAgICAg
ICBub2Rlcy5hcHBlbmQoZWxlbWVudCk7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgZm9yIChOb2Rl
KiBuID0gcm9vdE5vZGUtPmZpcnN0Q2hpbGQoKTsgbjsgbiA9IG4tPnRyYXZlcnNlTmV4dE5vZGUo
cm9vdE5vZGUpKSB7Ci0gICAgICAgICAgICBpZiAobi0+aXNFbGVtZW50Tm9kZSgpKSB7Ci0gICAg
ICAgICAgICAgICAgRWxlbWVudCogZWxlbWVudCA9IHN0YXRpY19jYXN0PEVsZW1lbnQqPihuKTsK
LSAgICAgICAgICAgICAgICBmb3IgKENTU1NlbGVjdG9yKiBzZWxlY3RvciA9IHF1ZXJ5U2VsZWN0
b3JMaXN0LmZpcnN0KCk7IHNlbGVjdG9yOyBzZWxlY3RvciA9IENTU1NlbGVjdG9yTGlzdDo6bmV4
dChzZWxlY3RvcikpIHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKHNlbGVjdG9yQ2hlY2tlci5j
aGVja1NlbGVjdG9yKHNlbGVjdG9yLCBlbGVtZW50KSkgewotICAgICAgICAgICAgICAgICAgICAg
ICAgbm9kZXMuYXBwZW5kKG4pOwotICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAg
ICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAg
ICAgIH0KLSAgICB9Ci0gICAgCi0gICAgcmV0dXJuIFN0YXRpY05vZGVMaXN0OjphZG9wdChub2Rl
cyk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Rv
bS9TZWxlY3Rvck5vZGVMaXN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL1Nl
bGVjdG9yTm9kZUxpc3QuaAkocmV2aXNpb24gOTM5NjcpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20v
U2VsZWN0b3JOb2RlTGlzdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDQ0ICswLDAgQEAKLS8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMDcsIDIwMDggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICoKLSAqIDEu
ICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
LSAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgotICogMy4gIE5laXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUgQ29t
cHV0ZXIsIEluYy4gKCJBcHBsZSIpIG5vciB0aGUgbmFtZXMgb2YKLSAqICAgICBpdHMgY29udHJp
YnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVk
Ci0gKiAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRl
biBwZXJtaXNzaW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
QU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVE
Ci0gKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSIFBVUlBPU0UgQVJFCi0gKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCi0gKiBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUwotICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOwotICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECi0gKiBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCi0gKiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0K
LSNpZm5kZWYgU2VsZWN0b3JOb2RlTGlzdF9oCi0jZGVmaW5lIFNlbGVjdG9yTm9kZUxpc3RfaAot
Ci0jaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi0g
ICAgY2xhc3MgQ1NTU2VsZWN0b3JMaXN0OwotICAgIGNsYXNzIE5vZGU7Ci0gICAgY2xhc3MgU3Rh
dGljTm9kZUxpc3Q7Ci0KLSAgICBQYXNzUmVmUHRyPFN0YXRpY05vZGVMaXN0PiBjcmVhdGVTZWxl
Y3Rvck5vZGVMaXN0KE5vZGUqIHJvb3ROb2RlLCBjb25zdCBDU1NTZWxlY3Rvckxpc3QmKTsKLQot
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gU2VsZWN0b3JOb2RlTGlzdF9oCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>105602</attachid>
            <date>2011-08-30 02:42:57 -0700</date>
            <delta_ts>2011-08-30 04:45:59 -0700</delta_ts>
            <desc>patch</desc>
            <filename>queryselector-fastcheck-7.patch</filename>
            <type>text/plain</type>
            <size>35480</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDk0MDYwKQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNTMgQEAKKzIwMTEtMDgtMzAgIEFudHRpIEtv
aXZpc3RvICA8YW50dGlAYXBwbGUuY29tPgorCisgICAgICAgIHF1ZXJ5U2VsZWN0b3IvcXVlcnlT
ZWxlY3RvckFsbCBzaG91bGQgdXNlIHNlbGVjdG9yIGNoZWNrZXIgZmFzdCBwYXRoIAorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjcxNjEKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBEZXNjZW5kYW50IGFuZCBj
aGlsZCBzZWxlY3RvcnMgY2FuIGJlIG1hdGNoZXMgc3Vic3RhbnRpYWxseSBmYXN0ZXIgdXNpbmcK
KyAgICAgICAgU2VsZWN0b3JDaGVja2VyOjpmYXN0Q2hlY2tTZWxlY3RvcigpIHBhdGguIEN1cnJl
bnRseSBpdCBpcyB1c2VkIGZvciBzdHlsZSBtYXRjaGluZyBvbmx5LiAgCisgICAgICAgIAorICAg
ICAgICBBZGQgU2VsZWN0b3JRdWVyeSBjbGFzcyB0aGF0IGNhbiBkbyBib3RoIHF1ZXJ5U2VsZWN0
b3IgYW5kIHF1ZXJ5U2VsZWN0b3JBbGwgZWZmaWNpZW50bHkgdXNpbmcKKyAgICAgICAgZmFzdCBw
YXRoLiBVc2UgaW5saW5lZCBsb29wIGZvciBET00gdHJhdmVyc2FsLgorICAgICAgICAKKyAgICAg
ICAgVGhlIHBhdGNoIGlzIH4yNSUgc3BlZWR1cCBpbiB0aGUgb3ZlcmFsbCBuYXRpdmUgc2NvcmUg
b2YgaHR0cDovL3d3dy53ZWJraXQub3JnL3BlcmYvc2xpY2tzcGVlZC8uCisgICAgICAgIFNvbWUg
aW5kaXZpZHVhbCBzdWJ0ZXN0cyAodXNpbmcgY2hpbGQgb3IgZGVzY2VuZGFudCBzZWxlY3RvcnMp
IGV4ZWN1dGUgdHdpY2UgYXMgZmFzdC4KKworICAgICAgICAqIEdOVW1ha2VmaWxlLmxpc3QuYW06
CisgICAgICAgICogV2ViQ29yZS5neXBpOgorICAgICAgICAqIFdlYkNvcmUucHJvOgorICAgICAg
ICAqIFdlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qOgorICAgICAgICAqIFdlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBjc3MvQ1NTU3R5bGVTZWxlY3Rvci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NTdHlsZVNlbGVjdG9yOjpTZWxlY3RvckNoZWNrZXI6
OmNoZWNrU2VsZWN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTU3R5bGVTZWxlY3Rvcjo6U2Vs
ZWN0b3JDaGVja2VyOjppc0Zhc3RDaGVja2FibGVTZWxlY3Rvcik6CisgICAgICAgIChXZWJDb3Jl
OjpSdWxlRGF0YTo6UnVsZURhdGEpOgorICAgICAgICAqIGNzcy9DU1NTdHlsZVNlbGVjdG9yLmg6
CisgICAgICAgIAorICAgICAgICAgICAgTWFrZSBmYXN0IHBhdGggY2hlY2tpbmcgYXZhaWxhYmxl
IG91dHNpZGUgQ1NTU3R5bGVTZWxlY3Rvci4KKyAgICAgICAgICAgIAorICAgICAgICAqIGRvbS9O
b2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6OnF1ZXJ5U2VsZWN0b3IpOgorICAgICAg
ICAoV2ViQ29yZTo6Tm9kZTo6cXVlcnlTZWxlY3RvckFsbCk6CisgICAgICAgIAorICAgICAgICAg
ICAgU3dpdGNoIHRvIFNlbGVjdG9yUXVlcnkuCisgICAgICAgIAorICAgICAgICAqIGRvbS9TZWxl
Y3Rvck5vZGVMaXN0LmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBkb20vU2VsZWN0b3JOb2RlTGlz
dC5oOiBSZW1vdmVkLgorICAgICAgICAKKyAgICAgICAgICAgIFNlbGVjdG9yUXVlcnkgbWFrZXMg
dGhlc2Ugb2Jvc29sZXRlLgorCisgICAgICAgICogZG9tL1NlbGVjdG9yUXVlcnkuY3BwOiBBZGRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OlNlbGVjdG9yUXVlcnk6OlNlbGVjdG9yUXVlcnkpOgorICAg
ICAgICAoV2ViQ29yZTo6U2VsZWN0b3JRdWVyeTo6cXVlcnlBbGwpOgorICAgICAgICAoV2ViQ29y
ZTo6U2VsZWN0b3JRdWVyeTo6cXVlcnlGaXJzdCk6CisgICAgICAgIChXZWJDb3JlOjpTZWxlY3Rv
clF1ZXJ5OjpjYW5Vc2VJZExvb2t1cCk6CisgICAgICAgIChXZWJDb3JlOjpTZWxlY3RvclF1ZXJ5
OjpleGVjdXRlKToKKyAgICAgICAgKiBkb20vU2VsZWN0b3JRdWVyeS5oOiBBZGRlZC4KKyAgICAg
ICAgCisgICAgICAgICAgICBDbGFzcyBmb3Igc2VsZWN0b3IgbWF0Y2hpbmcgaW4gdHJlZS4KKyAg
ICAKIDIwMTEtMDgtMjkgIFJ5b3N1a2UgTml3YSAgPHJuaXdhQHdlYmtpdC5vcmc+CiAKICAgICAg
ICAgVG91Y2ggSW50ZXJuYWxzLmNwcCBpbiBhbiBhdHRlbXB0IHRvIGZpeCBHVEsrIGJ1aWxkLgpJ
bmRleDogU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCShyZXZpc2lvbiA5Mzk2NykKKysrIFNv
dXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0JKHdvcmtpbmcgY29weSkKQEAgLTEyODQs
OCArMTI4NCw4IEBAIHdlYmNvcmVfc291cmNlcyArPSBcCiAJU291cmNlL1dlYkNvcmUvZG9tL1Nj
cmlwdFJ1bm5lci5oIFwKIAlTb3VyY2UvV2ViQ29yZS9kb20vU2VsZWN0RWxlbWVudC5jcHAgXAog
CVNvdXJjZS9XZWJDb3JlL2RvbS9TZWxlY3RFbGVtZW50LmggXAotCVNvdXJjZS9XZWJDb3JlL2Rv
bS9TZWxlY3Rvck5vZGVMaXN0LmNwcCBcCi0JU291cmNlL1dlYkNvcmUvZG9tL1NlbGVjdG9yTm9k
ZUxpc3QuaCBcCisJU291cmNlL1dlYkNvcmUvZG9tL1NlbGVjdG9yUXVlcnkuY3BwIFwKKwlTb3Vy
Y2UvV2ViQ29yZS9kb20vU2VsZWN0b3JRdWVyeS5oIFwKIAlTb3VyY2UvV2ViQ29yZS9kb20vU2hh
ZG93Q29udGVudEVsZW1lbnQuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93Q29udGVu
dEVsZW1lbnQuaCBcCiAJU291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd0luY2x1c2lvblNlbGVjdG9y
LmNwcCBcCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCShyZXZpc2lvbiA5Mzk2NykKKysrIFNvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUuZ3lwaQkod29ya2luZyBjb3B5KQpAQCAtNTM1MSw4ICs1MzUxLDggQEAK
ICAgICAgICAgICAgICdkb20vU2NyaXB0ZWRBbmltYXRpb25Db250cm9sbGVyLmgnLAogICAgICAg
ICAgICAgJ2RvbS9TZWxlY3RFbGVtZW50LmNwcCcsCiAgICAgICAgICAgICAnZG9tL1NlbGVjdEVs
ZW1lbnQuaCcsCi0gICAgICAgICAgICAnZG9tL1NlbGVjdG9yTm9kZUxpc3QuY3BwJywKLSAgICAg
ICAgICAgICdkb20vU2VsZWN0b3JOb2RlTGlzdC5oJywKKyAgICAgICAgICAgICdkb20vU2VsZWN0
b3JRdWVyeS5jcHAnLAorICAgICAgICAgICAgJ2RvbS9TZWxlY3RvclF1ZXJ5LmgnLAogICAgICAg
ICAgICAgJ2RvbS9TaGFkb3dDb250ZW50RWxlbWVudC5jcHAnLAogICAgICAgICAgICAgJ2RvbS9T
aGFkb3dDb250ZW50RWxlbWVudC5oJywKICAgICAgICAgICAgICdkb20vU2hhZG93SW5jbHVzaW9u
U2VsZWN0b3IuY3BwJywKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUucHJvCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUucHJvCShyZXZpc2lvbiA5Mzk2NykKKysrIFNv
dXJjZS9XZWJDb3JlL1dlYkNvcmUucHJvCSh3b3JraW5nIGNvcHkpCkBAIC01NDIsNyArNTQyLDcg
QEAgU09VUkNFUyArPSBcCiAgICAgZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuY3BwIFwKICAg
ICBkb20vU2NyaXB0UnVubmVyLmNwcCBcCiAgICAgZG9tL1NlbGVjdEVsZW1lbnQuY3BwIFwKLSAg
ICBkb20vU2VsZWN0b3JOb2RlTGlzdC5jcHAgXAorICAgIGRvbS9TZWxlY3RvclF1ZXJ5LmNwcCBc
CiAgICAgZG9tL1NoYWRvd0NvbnRlbnRFbGVtZW50LmNwcCBcCiAgICAgZG9tL1NoYWRvd0luY2x1
c2lvblNlbGVjdG9yLmNwcCBcCiAgICAgZG9tL1NoYWRvd1Jvb3QuY3BwIFwKQEAgLTE1MzYsNyAr
MTUzNiw3IEBAIEhFQURFUlMgKz0gXAogICAgIGRvbS9TY3JpcHRFbGVtZW50LmggXAogICAgIGRv
bS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmggXAogICAgIGRvbS9TZWxlY3RFbGVtZW50LmggXAot
ICAgIGRvbS9TZWxlY3Rvck5vZGVMaXN0LmggXAorICAgIGRvbS9TZWxlY3RvclF1ZXJ5LmggXAog
ICAgIGRvbS9TaGFkb3dDb250ZW50RWxlbWVudC5oIFwKICAgICBkb20vU2hhZG93SW5jbHVzaW9u
U2VsZWN0b3IuaCBcCiAgICAgZG9tL1NoYWRvd1Jvb3QuaCBcCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvago9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagkocmV2aXNpb24gOTM5NjcpCisrKyBT
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagkod29ya2luZyBjb3B5
KQpAQCAtNDgzMzAsMTE1ICs0ODMzMCwxMSBAQAogCQkJCT4KIAkJCTwvRmlsZT4KIAkJCTxGaWxl
Ci0JCQkJUmVsYXRpdmVQYXRoPSIuLlxkb21cU2VsZWN0b3JOb2RlTGlzdC5jcHAiCi0JCQkJPgot
CQkJCTxGaWxlQ29uZmlndXJhdGlvbgotCQkJCQlOYW1lPSJEZWJ1Z3xXaW4zMiIKLQkJCQkJRXhj
bHVkZWRGcm9tQnVpbGQ9InRydWUiCi0JCQkJCT4KLQkJCQkJPFRvb2wKLQkJCQkJCU5hbWU9IlZD
Q0xDb21waWxlclRvb2wiCi0JCQkJCS8+Ci0JCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4KLQkJCQk8
RmlsZUNvbmZpZ3VyYXRpb24KLQkJCQkJTmFtZT0iUmVsZWFzZXxXaW4zMiIKLQkJCQkJRXhjbHVk
ZWRGcm9tQnVpbGQ9InRydWUiCi0JCQkJCT4KLQkJCQkJPFRvb2wKLQkJCQkJCU5hbWU9IlZDQ0xD
b21waWxlclRvb2wiCi0JCQkJCS8+Ci0JCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4KLQkJCQk8Rmls
ZUNvbmZpZ3VyYXRpb24KLQkJCQkJTmFtZT0iRGVidWdfQ2Fpcm9fQ0ZMaXRlfFdpbjMyIgotCQkJ
CQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSIKLQkJCQkJPgotCQkJCQk8VG9vbAotCQkJCQkJTmFt
ZT0iVkNDTENvbXBpbGVyVG9vbCIKLQkJCQkJLz4KLQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPgot
CQkJCTxGaWxlQ29uZmlndXJhdGlvbgotCQkJCQlOYW1lPSJSZWxlYXNlX0NhaXJvX0NGTGl0ZXxX
aW4zMiIKLQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiCi0JCQkJCT4KLQkJCQkJPFRvb2wK
LQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCi0JCQkJCS8+Ci0JCQkJPC9GaWxlQ29uZmln
dXJhdGlvbj4KLQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24KLQkJCQkJTmFtZT0iRGVidWdfQWxsfFdp
bjMyIgotCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSIKLQkJCQkJPgotCQkJCQk8VG9vbAot
CQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKLQkJCQkJLz4KLQkJCQk8L0ZpbGVDb25maWd1
cmF0aW9uPgotCQkJCTxGaWxlQ29uZmlndXJhdGlvbgotCQkJCQlOYW1lPSJQcm9kdWN0aW9ufFdp
bjMyIgotCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSIKLQkJCQkJPgotCQkJCQk8VG9vbAot
CQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKLQkJCQkJLz4KLQkJCQk8L0ZpbGVDb25maWd1
cmF0aW9uPgotCQkJPC9GaWxlPgotCQkJPEZpbGUKLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGRvbVxT
ZWxlY3Rvck5vZGVMaXN0LmNwcCIKLQkJCQk+Ci0JCQkJPEZpbGVDb25maWd1cmF0aW9uCi0JCQkJ
CU5hbWU9IkRlYnVnfFdpbjMyIgotCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSIKLQkJCQkJ
PgotCQkJCQk8VG9vbAotCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKLQkJCQkJLz4KLQkJ
CQk8L0ZpbGVDb25maWd1cmF0aW9uPgotCQkJCTxGaWxlQ29uZmlndXJhdGlvbgotCQkJCQlOYW1l
PSJSZWxlYXNlfFdpbjMyIgotCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSIKLQkJCQkJPgot
CQkJCQk8VG9vbAotCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKLQkJCQkJLz4KLQkJCQk8
L0ZpbGVDb25maWd1cmF0aW9uPgotCQkJCTxGaWxlQ29uZmlndXJhdGlvbgotCQkJCQlOYW1lPSJE
ZWJ1Z19DYWlyb19DRkxpdGV8V2luMzIiCi0JCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIgot
CQkJCQk+Ci0JCQkJCTxUb29sCi0JCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgotCQkJCQkv
PgotCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+Ci0JCQkJPEZpbGVDb25maWd1cmF0aW9uCi0JCQkJ
CU5hbWU9IlJlbGVhc2VfQ2Fpcm9fQ0ZMaXRlfFdpbjMyIgotCQkJCQlFeGNsdWRlZEZyb21CdWls
ZD0idHJ1ZSIKLQkJCQkJPgotCQkJCQk8VG9vbAotCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9v
bCIKLQkJCQkJLz4KLQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPgotCQkJCTxGaWxlQ29uZmlndXJh
dGlvbgotCQkJCQlOYW1lPSJEZWJ1Z19BbGx8V2luMzIiCi0JCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxk
PSJ0cnVlIgotCQkJCQk+Ci0JCQkJCTxUb29sCi0JCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29s
IgotCQkJCQkvPgotCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+Ci0JCQkJPEZpbGVDb25maWd1cmF0
aW9uCi0JCQkJCU5hbWU9IlByb2R1Y3Rpb258V2luMzIiCi0JCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxk
PSJ0cnVlIgotCQkJCQk+Ci0JCQkJCTxUb29sCi0JCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29s
IgotCQkJCQkvPgotCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+Ci0JCQk8L0ZpbGU+Ci0JCQk8Rmls
ZQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cZG9tXFNlbGVjdG9yTm9kZUxpc3QuaCIKKwkJCQlSZWxh
dGl2ZVBhdGg9Ii4uXGRvbVxTZWxlY3RvclF1ZXJ5LmgiCiAJCQkJPgogCQkJPC9GaWxlPgogCQkJ
PEZpbGUKLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGRvbVxTZWxlY3Rvck5vZGVMaXN0LmgiCisJCQkJ
UmVsYXRpdmVQYXRoPSIuLlxkb21cU2VsZWN0b3JRdWVyeS5jcHAiCiAJCQkJPgogCQkJPC9GaWxl
PgogCQkJPEZpbGUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDkzOTY3KQorKysgU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC01MDg5LDgg
KzUwODksNiBAQAogCQlCQzdGQTYyMTBEMUYwQ0JEMDBEQjIyQTkgLyogRHluYW1pY05vZGVMaXN0
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzdGQTYx
RjBEMUYwQ0JEMDBEQjIyQTkgLyogRHluYW1pY05vZGVMaXN0LmggKi87IH07CiAJCUJDN0ZBNjJE
MEQxRjBFRkYwMERCMjJBOSAvKiBTdGF0aWNOb2RlTGlzdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkM3RkE2MkIwRDFGMEVGRjAwREIyMkE5IC8qIFN0
YXRpY05vZGVMaXN0LmggKi87IH07CiAJCUJDN0ZBNjJFMEQxRjBFRkYwMERCMjJBOSAvKiBTdGF0
aWNOb2RlTGlzdC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBCQzdGQTYyQzBEMUYwRUZGMDBEQjIyQTkgLyogU3RhdGljTm9kZUxpc3QuY3BwICovOyB9
OwotCQlCQzdGQTY4MTBEMUYxNjc5MDBEQjIyQTkgLyogU2VsZWN0b3JOb2RlTGlzdC5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkM3RkE2N0YwRDFGMTY3
OTAwREIyMkE5IC8qIFNlbGVjdG9yTm9kZUxpc3QuaCAqLzsgfTsKLQkJQkM3RkE2ODIwRDFGMTY3
OTAwREIyMkE5IC8qIFNlbGVjdG9yTm9kZUxpc3QuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkM3RkE2ODAwRDFGMTY3OTAwREIyMkE5IC8qIFNlbGVj
dG9yTm9kZUxpc3QuY3BwICovOyB9OwogCQlCQzgwQzk4NzBDRDI5NEVFMDBBMEI3QjMgLyogQ1NT
VGltaW5nRnVuY3Rpb25WYWx1ZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBCQzgwQzk4NTBDRDI5NEVFMDBBMEI3QjMgLyogQ1NTVGltaW5nRnVuY3Rp
b25WYWx1ZS5jcHAgKi87IH07CiAJCUJDODBDOTg4MENEMjk0RUUwMEEwQjdCMyAvKiBDU1NUaW1p
bmdGdW5jdGlvblZhbHVlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBCQzgwQzk4NjBDRDI5NEVFMDBBMEI3QjMgLyogQ1NTVGltaW5nRnVuY3Rpb25WYWx1
ZS5oICovOyB9OwogCQlCQzgyNDMyOTBEMENFOEEyMDA0NjBDOEYgLyogSlNTUUxFcnJvci5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkM4MjQzMjUwRDBD
RThBMjAwNDYwQzhGIC8qIEpTU1FMRXJyb3IuaCAqLzsgfTsKQEAgLTU2NDMsNiArNTY0MSw4IEBA
CiAJCUU0NDYxNDNDMENENjg5Q0MwMEZBREE3NSAvKiBKU0hUTUxTb3VyY2VFbGVtZW50LmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFNEI0MjM3MjBDQkZC
NkUwMDBBRjJFQ0UgLyogSlNIVE1MU291cmNlRWxlbWVudC5oICovOyB9OwogCQlFNDQ2MTQ1MTBD
RDY4QTM1MDBGQURBNzUgLyogUmVuZGVyVmlkZW8uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTRCNDFFMzMwQ0JGQjYwOTAwQUYyRUNFIC8qIFJlbmRl
clZpZGVvLmNwcCAqLzsgfTsKIAkJRTQ0NjE0NTIwQ0Q2OEEzNTAwRkFEQTc1IC8qIFJlbmRlclZp
ZGVvLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFNEI0
MUUzNDBDQkZCNjA5MDBBRjJFQ0UgLyogUmVuZGVyVmlkZW8uaCAqLzsgfTsKKwkJRTQ1MzIyQUIx
NDBDRTI2NzAwNUEwRjkyIC8qIFNlbGVjdG9yUXVlcnkuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTQ1MzIyQTkxNDBDRTI2NzAwNUEwRjkyIC8qIFNl
bGVjdG9yUXVlcnkuY3BwICovOyB9OworCQlFNDUzMjJBQzE0MENFMjY3MDA1QTBGOTIgLyogU2Vs
ZWN0b3JRdWVyeS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gRTQ1MzIyQUExNDBDRTI2NzAwNUEwRjkyIC8qIFNlbGVjdG9yUXVlcnkuaCAqLzsgfTsKIAkJ
RTQ2MkE0QTExMTNFNzFCRTAwNEE0MjIwIC8qIEludFBvaW50SGFzaC5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTQ2MkE0QTAxMTNFNzFCRTAwNEE0MjIw
IC8qIEludFBvaW50SGFzaC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CiAJCUU0Nzc4QjdGMTE1QTU4MUEwMEI1RDM3MiAvKiBKU0N1c3RvbUV2ZW50LmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEU0Nzc4QjdE
MTE1QTU4MUEwMEI1RDM3MiAvKiBKU0N1c3RvbUV2ZW50LmNwcCAqLzsgfTsKIAkJRTQ3NzhCODAx
MTVBNTgxQTAwQjVEMzcyIC8qIEpTQ3VzdG9tRXZlbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEU0Nzc4QjdFMTE1QTU4MUEwMEI1RDM3MiAvKiBKU0N1
c3RvbUV2ZW50LmggKi87IH07CkBAIC0xMTc5OCw4ICsxMTc5OCw2IEBACiAJCUJDN0ZBNjFGMEQx
RjBDQkQwMERCMjJBOSAvKiBEeW5hbWljTm9kZUxpc3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gRHluYW1pY05vZGVMaXN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUJDN0ZBNjJCMEQxRjBFRkYwMERCMjJBOSAvKiBTdGF0aWNOb2RlTGlzdC5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTdGF0aWNOb2RlTGlzdC5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlCQzdGQTYyQzBEMUYwRUZGMDBEQjIyQTkgLyogU3RhdGljTm9kZUxp
c3QuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU3RhdGljTm9kZUxp
c3QuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlCQzdGQTY3RjBEMUYxNjc5MDBE
QjIyQTkgLyogU2VsZWN0b3JOb2RlTGlzdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBTZWxlY3Rvck5vZGVMaXN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUJD
N0ZBNjgwMEQxRjE2NzkwMERCMjJBOSAvKiBTZWxlY3Rvck5vZGVMaXN0LmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNlbGVjdG9yTm9kZUxpc3QuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlCQzgwQzk4NTBDRDI5NEVFMDBBMEI3QjMgLyogQ1NTVGlt
aW5nRnVuY3Rpb25WYWx1ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gQ1NTVGltaW5nRnVuY3Rpb25WYWx1ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUJDODBDOTg2MENEMjk0RUUwMEEwQjdCMyAvKiBDU1NUaW1pbmdGdW5jdGlvblZhbHVlLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDU1NUaW1pbmdGdW5jdGlvblZhbHVl
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDODI0MzI1MEQwQ0U4QTIwMDQ2MEM4
RiAvKiBKU1NRTEVycm9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTU1FM
RXJyb3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTEyMzg2LDYgKzEyMzg0LDgg
QEAKIAkJRTQ0NjE0MTEwQ0Q2ODI2OTAwRkFEQTc1IC8qIEpTTWVkaWFFcnJvci5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU01lZGlhRXJyb3IuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJRTQ0NjE0MTIwQ0Q2ODI2OTAwRkFEQTc1IC8qIEpTVGltZVJhbmdlcy5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU1RpbWVSYW5nZXMuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFNDQ2MTQxMzBDRDY4MjY5MDBGQURBNzUg
LyogSlNUaW1lUmFuZ2VzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTVGlt
ZVJhbmdlcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFNDUzMjJBOTE0MENFMjY3
MDA1QTBGOTIgLyogU2VsZWN0b3JRdWVyeS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBTZWxlY3RvclF1ZXJ5LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJRTQ1MzIyQUExNDBDRTI2NzAwNUEwRjkyIC8qIFNlbGVjdG9yUXVlcnkuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2VsZWN0b3JRdWVyeS5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQlFNDYyQTRBMDExM0U3MUJFMDA0QTQyMjAgLyogSW50UG9pbnRIYXNoLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEludFBvaW50SGFzaC5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlFNDc3OEI3RDExNUE1ODFBMDBCNUQzNzIgLyogSlNDdXN0
b21FdmVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0N1c3Rv
bUV2ZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTQ3NzhCN0UxMTVBNTgx
QTAwQjVEMzcyIC8qIEpTQ3VzdG9tRXZlbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gSlNDdXN0b21FdmVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjAw
MzMsOCArMjAwMzMsOCBAQAogCQkJCThBNDEzQURFMTIwN0JCQTUwMDgyMDE2RSAvKiBTY3JpcHRS
dW5uZXIuaCAqLywKIAkJCQkwODRBRUJFMjBGQjUwNUZBMDAzODQ4M0UgLyogU2VsZWN0RWxlbWVu
dC5jcHAgKi8sCiAJCQkJMDg0QUVCRTMwRkI1MDVGQTAwMzg0ODNFIC8qIFNlbGVjdEVsZW1lbnQu
aCAqLywKLQkJCQlCQzdGQTY4MDBEMUYxNjc5MDBEQjIyQTkgLyogU2VsZWN0b3JOb2RlTGlzdC5j
cHAgKi8sCi0JCQkJQkM3RkE2N0YwRDFGMTY3OTAwREIyMkE5IC8qIFNlbGVjdG9yTm9kZUxpc3Qu
aCAqLywKKwkJCQlFNDUzMjJBOTE0MENFMjY3MDA1QTBGOTIgLyogU2VsZWN0b3JRdWVyeS5jcHAg
Ki8sCisJCQkJRTQ1MzIyQUExNDBDRTI2NzAwNUEwRjkyIC8qIFNlbGVjdG9yUXVlcnkuaCAqLywK
IAkJCQlBNzY2Q0Y4QjEzODEwRTBDMDAxMUEwQjMgLyogU2hhZG93Q29udGVudEVsZW1lbnQuY3Bw
ICovLAogCQkJCUE3NEMyRDNCMTM4MTFFMEQwMEY4MzU3MiAvKiBTaGFkb3dDb250ZW50RWxlbWVu
dC5oICovLAogCQkJCUE3MUMzMEI2MTM4MTI2NUUwMERCQzM1MSAvKiBTaGFkb3dJbmNsdXNpb25T
ZWxlY3Rvci5jcHAgKi8sCkBAIC0yMjgxMCw3ICsyMjgxMCw2IEBACiAJCQkJMzcxRjRGRkMwRDI1
RTdGMzAwRUNFMEQ1IC8qIFNlZ21lbnRlZEZvbnREYXRhLmggaW4gSGVhZGVycyAqLywKIAkJCQlC
MkMzREEyRjBEMDA2QzFEMDBFRjZGMjYgLyogU2VnbWVudGVkU3RyaW5nLmggaW4gSGVhZGVycyAq
LywKIAkJCQkwODRBRUJFNTBGQjUwNUZBMDAzODQ4M0UgLyogU2VsZWN0RWxlbWVudC5oIGluIEhl
YWRlcnMgKi8sCi0JCQkJQkM3RkE2ODEwRDFGMTY3OTAwREIyMkE5IC8qIFNlbGVjdG9yTm9kZUxp
c3QuaCBpbiBIZWFkZXJzICovLAogCQkJCUE3NUU0OTc2MTA3NTJBQ0IwMEM5Qjg5NiAvKiBTZXJp
YWxpemVkU2NyaXB0VmFsdWUuaCBpbiBIZWFkZXJzICovLAogCQkJCTkzMzA5RTEwMDk5RTY0OTIw
MDU2RTU4MSAvKiBTZXROb2RlQXR0cmlidXRlQ29tbWFuZC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
QjhEQkRCNEMxMzBCMEY4QTAwRjVDREIxIC8qIFNldFNlbGVjdGlvbkNvbW1hbmQuaCBpbiBIZWFk
ZXJzICovLApAQCAtMjM0MTYsNiArMjM0MTUsNyBAQAogCQkJCTkzNTAwRjMyMTNGREUzQkUwMDk5
RUMyNCAvKiBOU1Njcm9sbGVySW1wRGV0YWlscy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRDBBM0E3
MzExNDA1QTM5ODAwRkI4RUQzIC8qIFJlc291cmNlTG9hZGVyT3B0aW9ucy5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJQkNFNDM4OTcxNDBCMDA1MTAwNUU0MzdFIC8qIEV2ZW50Q29uc3RydWN0b3JzLmgg
aW4gSGVhZGVycyAqLywKKwkJCQlFNDUzMjJBQzE0MENFMjY3MDA1QTBGOTIgLyogU2VsZWN0b3JR
dWVyeS5oIGluIEhlYWRlcnMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0
cHJvY2Vzc2luZyA9IDA7CiAJCX07CkBAIC0yNTc0Nyw3ICsyNTc0Nyw2IEBACiAJCQkJMzcxRjRG
RkQwRDI1RTdGMzAwRUNFMEQ1IC8qIFNlZ21lbnRlZEZvbnREYXRhLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCUIyQzNEQTJFMEQwMDZDMUQwMEVGNkYyNiAvKiBTZWdtZW50ZWRTdHJpbmcuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJMDg0QUVCRTQwRkI1MDVGQTAwMzg0ODNFIC8qIFNlbGVjdEVsZW1l
bnQuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJQkM3RkE2ODIwRDFGMTY3OTAwREIyMkE5IC8qIFNl
bGVjdG9yTm9kZUxpc3QuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTc1RTQ5NzcxMDc1MkFDQjAw
QzlCODk2IC8qIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk5
MzMwOUUwRjA5OUU2NDkyMDA1NkU1ODEgLyogU2V0Tm9kZUF0dHJpYnV0ZUNvbW1hbmQuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJQjhEQkRCNEIxMzBCMEY4QTAwRjVDREIxIC8qIFNldFNlbGVjdGlv
bkNvbW1hbmQuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0yNjIyMiw2ICsyNjIyMSw3IEBACiAJCQkJ
MUExNDE0QjUxM0EwRjA1MDAwMTk5OTZDIC8qIFdlYktpdEZvbnRGYW1pbHlOYW1lcy5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQlERjlBRkQ3MzEzRkMzMUQ4MDAxNUZFQjcgLyogTWVkaWFQbGF5ZXJQ
cml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbSBpbiBTb3VyY2VzICovLAogCQkJCUJDRTQzODlBMTQw
QjAwNzMwMDVFNDM3RSAvKiBKU0V2ZW50Q29uc3RydWN0b3JzLmNwcCBpbiBTb3VyY2VzICovLAor
CQkJCUU0NTMyMkFCMTQwQ0UyNjcwMDVBMEY5MiAvKiBTZWxlY3RvclF1ZXJ5LmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAw
OwogCQl9OwpJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxlU2VsZWN0b3IuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNlbGVjdG9yLmNwcAkocmV2
aXNpb24gOTM5NjcpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVTZWxlY3Rvci5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTg3NSw5ICs4NzUsMjAgQEAgRUluc2lkZUxpbmsgQ1NTU3R5bGVT
ZWxlY3Rvcjo6U2VsZWN0b3JDaAogI2VuZGlmCiB9CiAKLWJvb2wgQ1NTU3R5bGVTZWxlY3Rvcjo6
U2VsZWN0b3JDaGVja2VyOjpjaGVja1NlbGVjdG9yKENTU1NlbGVjdG9yKiBzZWwsIEVsZW1lbnQq
IGVsZW1lbnQpIGNvbnN0Citib29sIENTU1N0eWxlU2VsZWN0b3I6OlNlbGVjdG9yQ2hlY2tlcjo6
Y2hlY2tTZWxlY3RvcihDU1NTZWxlY3Rvciogc2VsLCBFbGVtZW50KiBlbGVtZW50LCBib29sIGlz
RmFzdENoZWNrYWJsZVNlbGVjdG9yKSBjb25zdAogewogICAgIFBzZXVkb0lkIGR5bmFtaWNQc2V1
ZG8gPSBOT1BTRVVETzsKKyAgICBpZiAoaXNGYXN0Q2hlY2thYmxlU2VsZWN0b3IgJiYgIWVsZW1l
bnQtPmlzU1ZHRWxlbWVudCgpKSB7CisgICAgICAgIC8vIGZhc3RDaGVja1NlbGVjdG9yIGFzc3Vt
ZXMgY2xhc3MgYW5kIGlkIG1hdGNoIGZvciB0aGUgdG9wIHNlbGVjdG9yLgorICAgICAgICBpZiAo
c2VsLT5tX21hdGNoID09IENTU1NlbGVjdG9yOjpDbGFzcykgeworICAgICAgICAgICAgaWYgKCEo
ZWxlbWVudC0+aGFzQ2xhc3MoKSAmJiBzdGF0aWNfY2FzdDxTdHlsZWRFbGVtZW50Kj4oZWxlbWVu
dCktPmNsYXNzTmFtZXMoKS5jb250YWlucyhzZWwtPnZhbHVlKCkpKSkKKyAgICAgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0gZWxzZSBpZiAoc2VsLT5tX21hdGNoID09IENTU1Nl
bGVjdG9yOjpJZCkgeworICAgICAgICAgICAgaWYgKCEoZWxlbWVudC0+aGFzSUQoKSAmJiBlbGVt
ZW50LT5pZEZvclN0eWxlUmVzb2x1dGlvbigpID09IHNlbC0+dmFsdWUoKSkpCisgICAgICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisgICAgICAgIHJldHVybiBmYXN0Q2hlY2tT
ZWxlY3RvcihzZWwsIGVsZW1lbnQpOworICAgIH0KICAgICByZXR1cm4gY2hlY2tTZWxlY3Rvcihz
ZWwsIGVsZW1lbnQsIGR5bmFtaWNQc2V1ZG8sIGZhbHNlLCBmYWxzZSkgPT0gU2VsZWN0b3JNYXRj
aGVzOwogfQogCkBAIC0yMDEyLDE3ICsyMDIzLDYgQEAgaW5saW5lIGJvb2wgc2VsZWN0b3JUYWdN
YXRjaGVzKGNvbnN0IEVsZQogICAgIGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZXNwYWNlVVJJID0g
c2VsZWN0b3ItPnRhZygpLm5hbWVzcGFjZVVSSSgpOwogICAgIHJldHVybiBuYW1lc3BhY2VVUkkg
PT0gc3RhckF0b20gfHwgbmFtZXNwYWNlVVJJID09IGVsZW1lbnQtPm5hbWVzcGFjZVVSSSgpOwog
fQotCi1pbmxpbmUgYm9vbCBpc0Zhc3RDaGVja2FibGVTZWxlY3Rvcihjb25zdCBDU1NTZWxlY3Rv
ciogc2VsZWN0b3IpCi17Ci0gICAgZm9yICg7IHNlbGVjdG9yOyBzZWxlY3RvciA9IHNlbGVjdG9y
LT50YWdIaXN0b3J5KCkpIHsKLSAgICAgICAgaWYgKHNlbGVjdG9yLT5yZWxhdGlvbigpICE9IENT
U1NlbGVjdG9yOjpEZXNjZW5kYW50ICYmIHNlbGVjdG9yLT5yZWxhdGlvbigpICE9IENTU1NlbGVj
dG9yOjpDaGlsZCAmJiBzZWxlY3Rvci0+cmVsYXRpb24oKSAhPSBDU1NTZWxlY3Rvcjo6U3ViU2Vs
ZWN0b3IpCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIGlmIChzZWxlY3Rvci0+
bV9tYXRjaCAhPSBDU1NTZWxlY3Rvcjo6Tm9uZSAmJiBzZWxlY3Rvci0+bV9tYXRjaCAhPSBDU1NT
ZWxlY3Rvcjo6SWQgJiYgc2VsZWN0b3ItPm1fbWF0Y2ggIT0gQ1NTU2VsZWN0b3I6OkNsYXNzKQot
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLSAgICByZXR1cm4gdHJ1ZTsKLX0KICAg
ICAKIHRlbXBsYXRlIDxib29sIGNoZWNrVmFsdWUoY29uc3QgRWxlbWVudCosIEF0b21pY1N0cmlu
Z0ltcGwqKT4KIGlubGluZSBib29sIGZhc3RDaGVja1NpbmdsZVNlbGVjdG9yKGNvbnN0IENTU1Nl
bGVjdG9yKiYgc2VsZWN0b3IsIGNvbnN0IEVsZW1lbnQqJiBlbGVtZW50LCBjb25zdCBDU1NTZWxl
Y3RvciomIHRvcENoaWxkT3JTdWJzZWxlY3RvciwgY29uc3QgRWxlbWVudComIHRvcENoaWxkT3JT
dWJzZWxlY3Rvck1hdGNoRWxlbWVudCkKQEAgLTIxMTYsNiArMjExNiwxNyBAQCBib29sIENTU1N0
eWxlU2VsZWN0b3I6OlNlbGVjdG9yQ2hlY2tlcjo6CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKK2Jv
b2wgQ1NTU3R5bGVTZWxlY3Rvcjo6U2VsZWN0b3JDaGVja2VyOjppc0Zhc3RDaGVja2FibGVTZWxl
Y3Rvcihjb25zdCBDU1NTZWxlY3Rvciogc2VsZWN0b3IpCit7CisgICAgZm9yICg7IHNlbGVjdG9y
OyBzZWxlY3RvciA9IHNlbGVjdG9yLT50YWdIaXN0b3J5KCkpIHsKKyAgICAgICAgaWYgKHNlbGVj
dG9yLT5yZWxhdGlvbigpICE9IENTU1NlbGVjdG9yOjpEZXNjZW5kYW50ICYmIHNlbGVjdG9yLT5y
ZWxhdGlvbigpICE9IENTU1NlbGVjdG9yOjpDaGlsZCAmJiBzZWxlY3Rvci0+cmVsYXRpb24oKSAh
PSBDU1NTZWxlY3Rvcjo6U3ViU2VsZWN0b3IpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgICAgIGlmIChzZWxlY3Rvci0+bV9tYXRjaCAhPSBDU1NTZWxlY3Rvcjo6Tm9uZSAmJiBzZWxl
Y3Rvci0+bV9tYXRjaCAhPSBDU1NTZWxlY3Rvcjo6SWQgJiYgc2VsZWN0b3ItPm1fbWF0Y2ggIT0g
Q1NTU2VsZWN0b3I6OkNsYXNzKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAg
ICByZXR1cm4gdHJ1ZTsKK30KKwogLy8gUmVjdXJzaXZlIGNoZWNrIG9mIHNlbGVjdG9ycyBhbmQg
Y29tYmluYXRvcnMKIC8vIEl0IGNhbiByZXR1cm4gMyBkaWZmZXJlbnQgdmFsdWVzOgogLy8gKiBT
ZWxlY3Rvck1hdGNoZXMgICAgICAgICAtIHRoZSBzZWxlY3RvciBtYXRjaGVzIHRoZSBlbGVtZW50
IGUKQEAgLTMwMzUsNyArMzA0Niw3IEBAIFJ1bGVEYXRhOjpSdWxlRGF0YShDU1NTdHlsZVJ1bGUq
IHJ1bGUsIEMKICAgICAsIG1fc2VsZWN0b3Ioc2VsZWN0b3IpCiAgICAgLCBtX3NwZWNpZmljaXR5
KHNlbGVjdG9yLT5zcGVjaWZpY2l0eSgpKQogICAgICwgbV9wb3NpdGlvbihwb3NpdGlvbikKLSAg
ICAsIG1faGFzRmFzdENoZWNrYWJsZVNlbGVjdG9yKGlzRmFzdENoZWNrYWJsZVNlbGVjdG9yKHNl
bGVjdG9yKSkKKyAgICAsIG1faGFzRmFzdENoZWNrYWJsZVNlbGVjdG9yKENTU1N0eWxlU2VsZWN0
b3I6OlNlbGVjdG9yQ2hlY2tlcjo6aXNGYXN0Q2hlY2thYmxlU2VsZWN0b3Ioc2VsZWN0b3IpKQog
ICAgICwgbV9oYXNNdWx0aXBhcnRTZWxlY3RvcihzZWxlY3Rvci0+dGFnSGlzdG9yeSgpKQogICAg
ICwgbV9oYXNUb3BTZWxlY3Rvck1hdGNoaW5nSFRNTEJhc2VkT25SdWxlSGFzaChpc1NlbGVjdG9y
TWF0Y2hpbmdIVE1MQmFzZWRPblJ1bGVIYXNoKHNlbGVjdG9yKSkKIHsKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NTdHlsZVNlbGVjdG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvY3NzL0NTU1N0eWxlU2VsZWN0b3IuaAkocmV2aXNpb24gOTM5NjcpCisrKyBTb3VyY2UvV2Vi
Q29yZS9jc3MvQ1NTU3R5bGVTZWxlY3Rvci5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNzUsMTAgKzI3
NSwxMSBAQCBwdWJsaWM6CiAgICAgICAgIHB1YmxpYzoKICAgICAgICAgICAgIFNlbGVjdG9yQ2hl
Y2tlcihEb2N1bWVudCosIGJvb2wgc3RyaWN0UGFyc2luZyk7CiAKLSAgICAgICAgICAgIGJvb2wg
Y2hlY2tTZWxlY3RvcihDU1NTZWxlY3RvciosIEVsZW1lbnQqKSBjb25zdDsKKyAgICAgICAgICAg
IGJvb2wgY2hlY2tTZWxlY3RvcihDU1NTZWxlY3RvciosIEVsZW1lbnQqLCBib29sIGlzRmFzdENo
ZWNrYWJsZVNlbGVjdG9yID0gZmFsc2UpIGNvbnN0OwogICAgICAgICAgICAgU2VsZWN0b3JNYXRj
aCBjaGVja1NlbGVjdG9yKENTU1NlbGVjdG9yKiwgRWxlbWVudCosIFBzZXVkb0lkJiBkeW5hbWlj
UHNldWRvLCBib29sIGlzU3ViU2VsZWN0b3IsIGJvb2wgZW5jb3VudGVyZWRMaW5rLCBSZW5kZXJT
dHlsZSogPSAwLCBSZW5kZXJTdHlsZSogZWxlbWVudFBhcmVudFN0eWxlID0gMCkgY29uc3Q7CiAg
ICAgICAgICAgICBib29sIGNoZWNrT25lU2VsZWN0b3IoQ1NTU2VsZWN0b3IqLCBFbGVtZW50Kiwg
UHNldWRvSWQmIGR5bmFtaWNQc2V1ZG8sIGJvb2wgaXNTdWJTZWxlY3RvciwgYm9vbCBlbmNvdW50
ZXJlZExpbmssIFJlbmRlclN0eWxlKiwgUmVuZGVyU3R5bGUqIGVsZW1lbnRQYXJlbnRTdHlsZSkg
Y29uc3Q7CiAgICAgICAgICAgICBib29sIGNoZWNrU2Nyb2xsYmFyUHNldWRvQ2xhc3MoQ1NTU2Vs
ZWN0b3IqLCBQc2V1ZG9JZCYgZHluYW1pY1BzZXVkbykgY29uc3Q7CisgICAgICAgICAgICBzdGF0
aWMgYm9vbCBpc0Zhc3RDaGVja2FibGVTZWxlY3Rvcihjb25zdCBDU1NTZWxlY3RvciopOwogICAg
ICAgICAgICAgc3RhdGljIGJvb2wgZmFzdENoZWNrU2VsZWN0b3IoY29uc3QgQ1NTU2VsZWN0b3Iq
LCBjb25zdCBFbGVtZW50Kik7CiAKICAgICAgICAgICAgIEVJbnNpZGVMaW5rIGRldGVybWluZUxp
bmtTdGF0ZShFbGVtZW50KiBlbGVtZW50KSBjb25zdDsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Rv
bS9Ob2RlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAJKHJl
dmlzaW9uIDkzOTY3KQorKysgU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC04MSw3ICs4MSw3IEBACiAjaW5jbHVkZSAiUmVuZGVyVGV4dENvbnRyb2wuaCIKICNp
bmNsdWRlICJSZW5kZXJWaWV3LmgiCiAjaW5jbHVkZSAiU2NvcGVkRXZlbnRRdWV1ZS5oIgotI2lu
Y2x1ZGUgIlNlbGVjdG9yTm9kZUxpc3QuaCIKKyNpbmNsdWRlICJTZWxlY3RvclF1ZXJ5LmgiCiAj
aW5jbHVkZSAiU2hhZG93Um9vdC5oIgogI2luY2x1ZGUgIlN0YXRpY05vZGVMaXN0LmgiCiAjaW5j
bHVkZSAiVGFnTm9kZUxpc3QuaCIKQEAgLTE3NjUsMjkgKzE3NjUsOSBAQCBQYXNzUmVmUHRyPEVs
ZW1lbnQ+IE5vZGU6OnF1ZXJ5U2VsZWN0b3IoCiAgICAgICAgIGVjID0gTkFNRVNQQUNFX0VSUjsK
ICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQotCi0gICAgQ1NTU3R5bGVTZWxlY3Rvcjo6U2VsZWN0
b3JDaGVja2VyIHNlbGVjdG9yQ2hlY2tlcihkb2N1bWVudCgpLCBzdHJpY3RQYXJzaW5nKTsKLQot
ICAgIC8vIEZJWE1FOiB3ZSBjb3VsZCBhbHNvIG9wdGltaXplIGZvciB0aGUgdGhlIFtpZD0iZm9v
Il0gY2FzZQotICAgIGlmIChzdHJpY3RQYXJzaW5nICYmIGluRG9jdW1lbnQoKSAmJiBxdWVyeVNl
bGVjdG9yTGlzdC5oYXNPbmVTZWxlY3RvcigpICYmIHF1ZXJ5U2VsZWN0b3JMaXN0LmZpcnN0KCkt
Pm1fbWF0Y2ggPT0gQ1NTU2VsZWN0b3I6OklkKSB7Ci0gICAgICAgIEVsZW1lbnQqIGVsZW1lbnQg
PSB0cmVlU2NvcGUoKS0+Z2V0RWxlbWVudEJ5SWQocXVlcnlTZWxlY3Rvckxpc3QuZmlyc3QoKS0+
dmFsdWUoKSk7Ci0gICAgICAgIGlmIChlbGVtZW50ICYmIChpc0RvY3VtZW50Tm9kZSgpIHx8IGVs
ZW1lbnQtPmlzRGVzY2VuZGFudE9mKHRoaXMpKSAmJiBzZWxlY3RvckNoZWNrZXIuY2hlY2tTZWxl
Y3RvcihxdWVyeVNlbGVjdG9yTGlzdC5maXJzdCgpLCBlbGVtZW50KSkKLSAgICAgICAgICAgIHJl
dHVybiBlbGVtZW50OwotICAgICAgICByZXR1cm4gMDsKLSAgICB9Ci0KLSAgICAvLyBGSVhNRTog
V2UgY2FuIHNwZWVkIHRoaXMgdXAgYnkgaW1wbGVtZW50aW5nIGNhY2hpbmcgc2ltaWxhciB0byB0
aGUgb25lIHVzZSBieSBnZXRFbGVtZW50QnlJZAotICAgIGZvciAoTm9kZSogbiA9IGZpcnN0Q2hp
bGQoKTsgbjsgbiA9IG4tPnRyYXZlcnNlTmV4dE5vZGUodGhpcykpIHsKLSAgICAgICAgaWYgKG4t
PmlzRWxlbWVudE5vZGUoKSkgewotICAgICAgICAgICAgRWxlbWVudCogZWxlbWVudCA9IHN0YXRp
Y19jYXN0PEVsZW1lbnQqPihuKTsKLSAgICAgICAgICAgIGZvciAoQ1NTU2VsZWN0b3IqIHNlbGVj
dG9yID0gcXVlcnlTZWxlY3Rvckxpc3QuZmlyc3QoKTsgc2VsZWN0b3I7IHNlbGVjdG9yID0gQ1NT
U2VsZWN0b3JMaXN0OjpuZXh0KHNlbGVjdG9yKSkgewotICAgICAgICAgICAgICAgIGlmIChzZWxl
Y3RvckNoZWNrZXIuY2hlY2tTZWxlY3RvcihzZWxlY3RvciwgZWxlbWVudCkpCi0gICAgICAgICAg
ICAgICAgICAgIHJldHVybiBlbGVtZW50OwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAg
fQogICAgIAotICAgIHJldHVybiAwOworICAgIFNlbGVjdG9yUXVlcnkgc2VsZWN0b3JRdWVyeSh0
aGlzLCBxdWVyeVNlbGVjdG9yTGlzdCk7CisgICAgcmV0dXJuIHNlbGVjdG9yUXVlcnkucXVlcnlG
aXJzdCgpOwogfQogCiBQYXNzUmVmUHRyPE5vZGVMaXN0PiBOb2RlOjpxdWVyeVNlbGVjdG9yQWxs
KGNvbnN0IFN0cmluZyYgc2VsZWN0b3JzLCBFeGNlcHRpb25Db2RlJiBlYykKQEAgLTE4MTMsNyAr
MTc5Myw4IEBAIFBhc3NSZWZQdHI8Tm9kZUxpc3Q+IE5vZGU6OnF1ZXJ5U2VsZWN0b3IKICAgICAg
ICAgcmV0dXJuIDA7CiAgICAgfQogCi0gICAgcmV0dXJuIGNyZWF0ZVNlbGVjdG9yTm9kZUxpc3Qo
dGhpcywgcXVlcnlTZWxlY3Rvckxpc3QpOworICAgIFNlbGVjdG9yUXVlcnkgc2VsZWN0b3JRdWVy
eSh0aGlzLCBxdWVyeVNlbGVjdG9yTGlzdCk7CisgICAgcmV0dXJuIHNlbGVjdG9yUXVlcnkucXVl
cnlBbGwoKTsKIH0KIAogRG9jdW1lbnQgKk5vZGU6Om93bmVyRG9jdW1lbnQoKSBjb25zdApJbmRl
eDogU291cmNlL1dlYkNvcmUvZG9tL1NlbGVjdG9yTm9kZUxpc3QuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2RvbS9TZWxlY3Rvck5vZGVMaXN0LmNwcAkocmV2aXNpb24gOTM5Njcp
CisrKyBTb3VyY2UvV2ViQ29yZS9kb20vU2VsZWN0b3JOb2RlTGlzdC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTEsNzQgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNywgMjAwOCBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKLSAqIGFyZSBtZXQ6Ci0gKgotICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKiAzLiAgTmVp
dGhlciB0aGUgbmFtZSBvZiBBcHBsZSBDb21wdXRlciwgSW5jLiAoIkFwcGxlIikgbm9yIHRoZSBu
YW1lcyBvZgotICogICAgIGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBv
ciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKLSAqICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0
aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0gKgotICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFO
RCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKLSAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKLSAqIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkKLSAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCi0gKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7Ci0g
KiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQKLSAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YKLSAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUg
IlNlbGVjdG9yTm9kZUxpc3QuaCIKLQotI2luY2x1ZGUgIkNTU1NlbGVjdG9yLmgiCi0jaW5jbHVk
ZSAiQ1NTU2VsZWN0b3JMaXN0LmgiCi0jaW5jbHVkZSAiQ1NTU3R5bGVTZWxlY3Rvci5oIgotI2lu
Y2x1ZGUgIkRvY3VtZW50LmgiCi0jaW5jbHVkZSAiRWxlbWVudC5oIgotI2luY2x1ZGUgIkhUTUxO
YW1lcy5oIgotI2luY2x1ZGUgIlN0YXRpY05vZGVMaXN0LmgiCi0KLW5hbWVzcGFjZSBXZWJDb3Jl
IHsKLQotdXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKLQotUGFzc1JlZlB0cjxTdGF0aWNOb2Rl
TGlzdD4gY3JlYXRlU2VsZWN0b3JOb2RlTGlzdChOb2RlKiByb290Tm9kZSwgY29uc3QgQ1NTU2Vs
ZWN0b3JMaXN0JiBxdWVyeVNlbGVjdG9yTGlzdCkKLXsKLSAgICBWZWN0b3I8UmVmUHRyPE5vZGU+
ID4gbm9kZXM7Ci0gICAgRG9jdW1lbnQqIGRvY3VtZW50ID0gcm9vdE5vZGUtPmRvY3VtZW50KCk7
Ci0gICAgQ1NTU2VsZWN0b3IqIG9ubHlTZWxlY3RvciA9IHF1ZXJ5U2VsZWN0b3JMaXN0Lmhhc09u
ZVNlbGVjdG9yKCkgPyBxdWVyeVNlbGVjdG9yTGlzdC5maXJzdCgpIDogMDsKLSAgICBib29sIHN0
cmljdFBhcnNpbmcgPSAhZG9jdW1lbnQtPmluUXVpcmtzTW9kZSgpOwotCi0gICAgQ1NTU3R5bGVT
ZWxlY3Rvcjo6U2VsZWN0b3JDaGVja2VyIHNlbGVjdG9yQ2hlY2tlcihkb2N1bWVudCwgc3RyaWN0
UGFyc2luZyk7Ci0KLSAgICBpZiAoc3RyaWN0UGFyc2luZyAmJiByb290Tm9kZS0+aW5Eb2N1bWVu
dCgpICYmIG9ubHlTZWxlY3RvciAmJiBvbmx5U2VsZWN0b3ItPm1fbWF0Y2ggPT0gQ1NTU2VsZWN0
b3I6OklkICYmICFkb2N1bWVudC0+Y29udGFpbnNNdWx0aXBsZUVsZW1lbnRzV2l0aElkKG9ubHlT
ZWxlY3Rvci0+dmFsdWUoKSkpIHsKLSAgICAgICAgRWxlbWVudCogZWxlbWVudCA9IGRvY3VtZW50
LT5nZXRFbGVtZW50QnlJZChvbmx5U2VsZWN0b3ItPnZhbHVlKCkpOwotICAgICAgICBpZiAoZWxl
bWVudCAmJiAocm9vdE5vZGUtPmlzRG9jdW1lbnROb2RlKCkgfHwgZWxlbWVudC0+aXNEZXNjZW5k
YW50T2Yocm9vdE5vZGUpKSAmJiBzZWxlY3RvckNoZWNrZXIuY2hlY2tTZWxlY3Rvcihvbmx5U2Vs
ZWN0b3IsIGVsZW1lbnQpKQotICAgICAgICAgICAgbm9kZXMuYXBwZW5kKGVsZW1lbnQpOwotICAg
IH0gZWxzZSB7Ci0gICAgICAgIGZvciAoTm9kZSogbiA9IHJvb3ROb2RlLT5maXJzdENoaWxkKCk7
IG47IG4gPSBuLT50cmF2ZXJzZU5leHROb2RlKHJvb3ROb2RlKSkgewotICAgICAgICAgICAgaWYg
KG4tPmlzRWxlbWVudE5vZGUoKSkgewotICAgICAgICAgICAgICAgIEVsZW1lbnQqIGVsZW1lbnQg
PSBzdGF0aWNfY2FzdDxFbGVtZW50Kj4obik7Ci0gICAgICAgICAgICAgICAgZm9yIChDU1NTZWxl
Y3Rvciogc2VsZWN0b3IgPSBxdWVyeVNlbGVjdG9yTGlzdC5maXJzdCgpOyBzZWxlY3Rvcjsgc2Vs
ZWN0b3IgPSBDU1NTZWxlY3Rvckxpc3Q6Om5leHQoc2VsZWN0b3IpKSB7Ci0gICAgICAgICAgICAg
ICAgICAgIGlmIChzZWxlY3RvckNoZWNrZXIuY2hlY2tTZWxlY3RvcihzZWxlY3RvciwgZWxlbWVu
dCkpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIG5vZGVzLmFwcGVuZChuKTsKLSAgICAgICAg
ICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAg
ICAgICAgfQotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfQotICAgIAotICAgIHJldHVy
biBTdGF0aWNOb2RlTGlzdDo6YWRvcHQobm9kZXMpOwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vU2VsZWN0b3JOb2RlTGlzdC5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9TZWxlY3Rvck5vZGVMaXN0LmgJKHJldmlzaW9uIDkz
OTY3KQorKysgU291cmNlL1dlYkNvcmUvZG9tL1NlbGVjdG9yTm9kZUxpc3QuaAkod29ya2luZyBj
b3B5KQpAQCAtMSw0NCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA3LCAyMDA4IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwotICogYXJlIG1ldDoKLSAqCi0gKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiAg
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqIDMuICBO
ZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxlIENvbXB1dGVyLCBJbmMuICgiQXBwbGUiKSBub3IgdGhl
IG5hbWVzIG9mCi0gKiAgICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNl
IG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAotICogICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3
aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAqCi0gKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIg
QU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAotICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQotICogRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWQotICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKLSAqIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsK
LSAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORAotICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRgotICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaWZuZGVmIFNlbGVjdG9yTm9kZUxpc3RfaAot
I2RlZmluZSBTZWxlY3Rvck5vZGVMaXN0X2gKLQotI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+
Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotICAgIGNsYXNzIENTU1NlbGVjdG9yTGlzdDsKLSAg
ICBjbGFzcyBOb2RlOwotICAgIGNsYXNzIFN0YXRpY05vZGVMaXN0OwotCi0gICAgUGFzc1JlZlB0
cjxTdGF0aWNOb2RlTGlzdD4gY3JlYXRlU2VsZWN0b3JOb2RlTGlzdChOb2RlKiByb290Tm9kZSwg
Y29uc3QgQ1NTU2VsZWN0b3JMaXN0Jik7Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2Vu
ZGlmIC8vIFNlbGVjdG9yTm9kZUxpc3RfaApJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL1NlbGVj
dG9yUXVlcnkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9TZWxlY3RvclF1
ZXJ5LmNwcAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9TZWxlY3RvclF1ZXJ5
LmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxMjYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklC
VVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0Ug
QVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25m
aWcuaCIKKyNpbmNsdWRlICJTZWxlY3RvclF1ZXJ5LmgiCisKKyNpbmNsdWRlICJDU1NTZWxlY3Rv
ckxpc3QuaCIKKyNpbmNsdWRlICJEb2N1bWVudC5oIgorI2luY2x1ZGUgIlN0YXRpY05vZGVMaXN0
LmgiCisjaW5jbHVkZSAiU3R5bGVkRWxlbWVudC5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisK
K1NlbGVjdG9yUXVlcnk6OlNlbGVjdG9yUXVlcnkoTm9kZSogcm9vdE5vZGUsIGNvbnN0IENTU1Nl
bGVjdG9yTGlzdCYgc2VsZWN0b3JMaXN0KQorICAgIDogbV9yb290Tm9kZShyb290Tm9kZSkKKyAg
ICAsIG1fc2VsZWN0b3JDaGVja2VyKHJvb3ROb2RlLT5kb2N1bWVudCgpLCAhcm9vdE5vZGUtPmRv
Y3VtZW50KCktPmluUXVpcmtzTW9kZSgpKQoreworICAgIGZvciAoQ1NTU2VsZWN0b3IqIHNlbGVj
dG9yID0gc2VsZWN0b3JMaXN0LmZpcnN0KCk7IHNlbGVjdG9yOyBzZWxlY3RvciA9IENTU1NlbGVj
dG9yTGlzdDo6bmV4dChzZWxlY3RvcikpIHsKKyAgICAgICAgU2VsZWN0b3JEYXRhIGRhdGEgPSB7
IAorICAgICAgICAgICAgLnNlbGVjdG9yID0gc2VsZWN0b3IsIAorICAgICAgICAgICAgLmlzRmFz
dENoZWNrYWJsZSA9IENTU1N0eWxlU2VsZWN0b3I6OlNlbGVjdG9yQ2hlY2tlcjo6aXNGYXN0Q2hl
Y2thYmxlU2VsZWN0b3Ioc2VsZWN0b3IpLAorICAgICAgICB9OworICAgICAgICBtX3NlbGVjdG9y
cy5hcHBlbmQoZGF0YSk7CisgICAgfQorfQorICAgIAorUGFzc1JlZlB0cjxOb2RlTGlzdD4gU2Vs
ZWN0b3JRdWVyeTo6cXVlcnlBbGwoKSBjb25zdAoreworICAgIFZlY3RvcjxSZWZQdHI8Tm9kZT4g
PiByZXN1bHQ7CisgICAgZXhlY3V0ZTxmYWxzZT4ocmVzdWx0KTsKKyAgICByZXR1cm4gU3RhdGlj
Tm9kZUxpc3Q6OmFkb3B0KHJlc3VsdCk7Cit9CisKK1Bhc3NSZWZQdHI8RWxlbWVudD4gU2VsZWN0
b3JRdWVyeTo6cXVlcnlGaXJzdCgpIGNvbnN0IAoreyAKKyAgICBWZWN0b3I8UmVmUHRyPE5vZGU+
ID4gcmVzdWx0OworICAgIGV4ZWN1dGU8dHJ1ZT4ocmVzdWx0KTsKKyAgICBpZiAocmVzdWx0Lmlz
RW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIDA7CisgICAgQVNTRVJUKHJlc3VsdC5zaXplKCkgPT0g
MSk7CisgICAgQVNTRVJUKHJlc3VsdC5maXJzdCgpLT5pc0VsZW1lbnROb2RlKCkpOworICAgIHJl
dHVybiBzdGF0aWNfY2FzdDxFbGVtZW50Kj4ocmVzdWx0LmZpcnN0KCkuZ2V0KCkpOworfQorCiti
b29sIFNlbGVjdG9yUXVlcnk6OmNhblVzZUlkTG9va3VwKCkgY29uc3QKK3sKKyAgICAvLyBXZSBu
ZWVkIHRvIHJldHVybiB0aGUgbWF0Y2hlcyBpbiBkb2N1bWVudCBvcmRlci4gVG8gdXNlIGlkIGxv
b2t1cCB3aGlsZSB0aGVyZSBpcyBwb3NzaWJsaXR5IG9mIG11bHRpcGxlIG1hdGNoZXMKKyAgICAv
LyB3ZSB3b3VsZCBuZWVkIHRvIHNvcnQgdGhlIHJlc3VsdHMuIEZvciBub3csIGp1c3QgdHJhdmVy
c2UgdGhlIGRvY3VtZW50IGluIHRoYXQgY2FzZS4KKyAgICBpZiAobV9zZWxlY3RvcnMuc2l6ZSgp
ICE9IDEpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAobV9zZWxlY3RvcnNbMF0uc2Vs
ZWN0b3ItPm1fbWF0Y2ggIT0gQ1NTU2VsZWN0b3I6OklkKQorICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgaWYgKCFtX3Jvb3ROb2RlLT5pbkRvY3VtZW50KCkpCisgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICBpZiAobV9yb290Tm9kZS0+ZG9jdW1lbnQoKS0+aW5RdWlya3NNb2RlKCkpCisgICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAobV9yb290Tm9kZS0+ZG9jdW1lbnQoKS0+Y29udGFp
bnNNdWx0aXBsZUVsZW1lbnRzV2l0aElkKG1fc2VsZWN0b3JzWzBdLnNlbGVjdG9yLT52YWx1ZSgp
KSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIHJldHVybiB0cnVlOworfQorCit0ZW1wbGF0
ZSA8Ym9vbCBmaXJzdE1hdGNoT25seT4KK3ZvaWQgU2VsZWN0b3JRdWVyeTo6ZXhlY3V0ZShWZWN0
b3I8UmVmUHRyPE5vZGU+ID4mIG1hdGNoZWRFbGVtZW50cykgY29uc3QKK3sKKyAgICBpZiAoY2Fu
VXNlSWRMb29rdXAoKSkgeworICAgICAgICBBU1NFUlQobV9zZWxlY3RvcnMuc2l6ZSgpID09IDEp
OworICAgICAgICBDU1NTZWxlY3Rvciogc2VsZWN0b3IgPSBtX3NlbGVjdG9yc1swXS5zZWxlY3Rv
cjsKKyAgICAgICAgRWxlbWVudCogZWxlbWVudCA9IG1fcm9vdE5vZGUtPmRvY3VtZW50KCktPmdl
dEVsZW1lbnRCeUlkKHNlbGVjdG9yLT52YWx1ZSgpKTsKKyAgICAgICAgaWYgKCFlbGVtZW50IHx8
ICEobV9yb290Tm9kZS0+aXNEb2N1bWVudEVsZW1lbnQoKSB8fCBlbGVtZW50LT5pc0Rlc2NlbmRh
bnRPZihtX3Jvb3ROb2RlKSkpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIGlmIChtX3Nl
bGVjdG9yQ2hlY2tlci5jaGVja1NlbGVjdG9yKHNlbGVjdG9yLCBlbGVtZW50LCBtX3NlbGVjdG9y
c1swXS5pc0Zhc3RDaGVja2FibGUpKQorICAgICAgICAgICAgbWF0Y2hlZEVsZW1lbnRzLmFwcGVu
ZChlbGVtZW50KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICAKKyAgICB1bnNpZ25lZCBz
ZWxlY3RvckNvdW50ID0gbV9zZWxlY3RvcnMuc2l6ZSgpOworICAgIAorICAgIE5vZGUqIG4gPSBt
X3Jvb3ROb2RlLT5maXJzdENoaWxkKCk7CisgICAgd2hpbGUgKG4pIHsKKyAgICAgICAgaWYgKG4t
PmlzRWxlbWVudE5vZGUoKSkgeworICAgICAgICAgICAgRWxlbWVudCogZWxlbWVudCA9IHN0YXRp
Y19jYXN0PEVsZW1lbnQqPihuKTsKKyAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkg
PCBzZWxlY3RvckNvdW50OyArK2kpIHsKKyAgICAgICAgICAgICAgICBpZiAobV9zZWxlY3RvckNo
ZWNrZXIuY2hlY2tTZWxlY3RvcihtX3NlbGVjdG9yc1tpXS5zZWxlY3RvciwgZWxlbWVudCwgbV9z
ZWxlY3RvcnNbaV0uaXNGYXN0Q2hlY2thYmxlKSkgeworICAgICAgICAgICAgICAgICAgICBtYXRj
aGVkRWxlbWVudHMuYXBwZW5kKGVsZW1lbnQpOworICAgICAgICAgICAgICAgICAgICBpZiAoZmly
c3RNYXRjaE9ubHkpCisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgIGlmIChuLT5maXJzdENoaWxkKCkpIHsKKyAgICAgICAgICAgICAgICBuID0gbi0+Zmly
c3RDaGlsZCgpOworICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgfQorICAg
ICAgICB9CisgICAgICAgIHdoaWxlICghbi0+bmV4dFNpYmxpbmcoKSkgeworICAgICAgICAgICAg
biA9IG4tPnBhcmVudE5vZGUoKTsKKyAgICAgICAgICAgIGlmIChuID09IG1fcm9vdE5vZGUpCisg
ICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIG4gPSBuLT5uZXh0U2li
bGluZygpOworICAgIH0KK30KKworfQpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL1NlbGVjdG9y
UXVlcnkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vU2VsZWN0b3JRdWVyeS5o
CShyZXZpc2lvbiAwKQorKysgU291cmNlL1dlYkNvcmUvZG9tL1NlbGVjdG9yUXVlcnkuaAkocmV2
aXNpb24gMCkKQEAgLTAsMCArMSw2NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMg
SVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBTZWxlY3RvclF1ZXJ5X2gK
KyNkZWZpbmUgU2VsZWN0b3JRdWVyeV9oCisKKyNpbmNsdWRlICJDU1NTdHlsZVNlbGVjdG9yLmgi
CisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisgICAgCitj
bGFzcyBOb2RlOworY2xhc3MgTm9kZUxpc3Q7CitjbGFzcyBFbGVtZW50OworY2xhc3MgQ1NTU2Vs
ZWN0b3I7CitjbGFzcyBDU1NTZWxlY3Rvckxpc3Q7CisKK2NsYXNzIFNlbGVjdG9yUXVlcnkgewor
cHVibGljOgorICAgIFNlbGVjdG9yUXVlcnkoTm9kZSogcm9vdE5vZGUsIGNvbnN0IENTU1NlbGVj
dG9yTGlzdCYpOworICAgIAorICAgIFBhc3NSZWZQdHI8Tm9kZUxpc3Q+IHF1ZXJ5QWxsKCkgY29u
c3Q7CisgICAgUGFzc1JlZlB0cjxFbGVtZW50PiBxdWVyeUZpcnN0KCkgY29uc3Q7CisKK3ByaXZh
dGU6CisgICAgYm9vbCBjYW5Vc2VJZExvb2t1cCgpIGNvbnN0OworCisgICAgdGVtcGxhdGUgPGJv
b2wgZmlyc3RNYXRjaE9ubHk+CisgICAgdm9pZCBleGVjdXRlKFZlY3RvcjxSZWZQdHI8Tm9kZT4g
PiYpIGNvbnN0OworICAgIAorICAgIHN0cnVjdCBTZWxlY3RvckRhdGEgeworICAgICAgICBDU1NT
ZWxlY3Rvciogc2VsZWN0b3I7CisgICAgICAgIGJvb2wgaXNGYXN0Q2hlY2thYmxlOworICAgIH07
CisgICAgTm9kZSogbV9yb290Tm9kZTsKKyAgICBWZWN0b3I8U2VsZWN0b3JEYXRhPiBtX3NlbGVj
dG9yczsKKyAgICBDU1NTdHlsZVNlbGVjdG9yOjpTZWxlY3RvckNoZWNrZXIgbV9zZWxlY3RvckNo
ZWNrZXI7Cit9OworCit9CisKKyNlbmRpZgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>105615</attachid>
            <date>2011-08-30 04:45:59 -0700</date>
            <delta_ts>2011-08-30 07:41:55 -0700</delta_ts>
            <desc>updated to tot</desc>
            <filename>queryselector-fastcheck-8.patch</filename>
            <type>text/plain</type>
            <size>35673</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDk0MDY3KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNTMgQEAKKzIwMTEtMDgtMzAgIEFudHRpIEtv
aXZpc3RvICA8YW50dGlAYXBwbGUuY29tPgorCisgICAgICAgIHF1ZXJ5U2VsZWN0b3IvcXVlcnlT
ZWxlY3RvckFsbCBzaG91bGQgdXNlIHNlbGVjdG9yIGNoZWNrZXIgZmFzdCBwYXRoIAorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjcxNjEKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBEZXNjZW5kYW50IGFuZCBj
aGlsZCBzZWxlY3RvcnMgY2FuIGJlIG1hdGNoZXMgc3Vic3RhbnRpYWxseSBmYXN0ZXIgdXNpbmcK
KyAgICAgICAgU2VsZWN0b3JDaGVja2VyOjpmYXN0Q2hlY2tTZWxlY3RvcigpIHBhdGguIEN1cnJl
bnRseSBpdCBpcyB1c2VkIGZvciBzdHlsZSBtYXRjaGluZyBvbmx5LiAgCisgICAgICAgIAorICAg
ICAgICBBZGQgU2VsZWN0b3JRdWVyeSBjbGFzcyB0aGF0IGNhbiBkbyBib3RoIHF1ZXJ5U2VsZWN0
b3IgYW5kIHF1ZXJ5U2VsZWN0b3JBbGwgZWZmaWNpZW50bHkgdXNpbmcKKyAgICAgICAgZmFzdCBw
YXRoLiBVc2UgaW5saW5lZCBsb29wIGZvciBET00gdHJhdmVyc2FsLgorICAgICAgICAKKyAgICAg
ICAgVGhlIHBhdGNoIGlzIH4yNSUgc3BlZWR1cCBpbiB0aGUgb3ZlcmFsbCBuYXRpdmUgc2NvcmUg
b2YgaHR0cDovL3d3dy53ZWJraXQub3JnL3BlcmYvc2xpY2tzcGVlZC8uCisgICAgICAgIFNvbWUg
aW5kaXZpZHVhbCBzdWJ0ZXN0cyAodXNpbmcgY2hpbGQgb3IgZGVzY2VuZGFudCBzZWxlY3RvcnMp
IGV4ZWN1dGUgdHdpY2UgYXMgZmFzdC4KKworICAgICAgICAqIEdOVW1ha2VmaWxlLmxpc3QuYW06
CisgICAgICAgICogV2ViQ29yZS5neXBpOgorICAgICAgICAqIFdlYkNvcmUucHJvOgorICAgICAg
ICAqIFdlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qOgorICAgICAgICAqIFdlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBjc3MvQ1NTU3R5bGVTZWxlY3Rvci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NTdHlsZVNlbGVjdG9yOjpTZWxlY3RvckNoZWNrZXI6
OmNoZWNrU2VsZWN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTU3R5bGVTZWxlY3Rvcjo6U2Vs
ZWN0b3JDaGVja2VyOjppc0Zhc3RDaGVja2FibGVTZWxlY3Rvcik6CisgICAgICAgIChXZWJDb3Jl
OjpSdWxlRGF0YTo6UnVsZURhdGEpOgorICAgICAgICAqIGNzcy9DU1NTdHlsZVNlbGVjdG9yLmg6
CisgICAgICAgIAorICAgICAgICAgICAgTWFrZSBmYXN0IHBhdGggY2hlY2tpbmcgYXZhaWxhYmxl
IG91dHNpZGUgQ1NTU3R5bGVTZWxlY3Rvci4KKyAgICAgICAgICAgIAorICAgICAgICAqIGRvbS9O
b2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6OnF1ZXJ5U2VsZWN0b3IpOgorICAgICAg
ICAoV2ViQ29yZTo6Tm9kZTo6cXVlcnlTZWxlY3RvckFsbCk6CisgICAgICAgIAorICAgICAgICAg
ICAgU3dpdGNoIHRvIFNlbGVjdG9yUXVlcnkuCisgICAgICAgIAorICAgICAgICAqIGRvbS9TZWxl
Y3Rvck5vZGVMaXN0LmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBkb20vU2VsZWN0b3JOb2RlTGlz
dC5oOiBSZW1vdmVkLgorICAgICAgICAKKyAgICAgICAgICAgIFNlbGVjdG9yUXVlcnkgbWFrZXMg
dGhlc2Ugb2Jvc29sZXRlLgorCisgICAgICAgICogZG9tL1NlbGVjdG9yUXVlcnkuY3BwOiBBZGRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OlNlbGVjdG9yUXVlcnk6OlNlbGVjdG9yUXVlcnkpOgorICAg
ICAgICAoV2ViQ29yZTo6U2VsZWN0b3JRdWVyeTo6cXVlcnlBbGwpOgorICAgICAgICAoV2ViQ29y
ZTo6U2VsZWN0b3JRdWVyeTo6cXVlcnlGaXJzdCk6CisgICAgICAgIChXZWJDb3JlOjpTZWxlY3Rv
clF1ZXJ5OjpjYW5Vc2VJZExvb2t1cCk6CisgICAgICAgIChXZWJDb3JlOjpTZWxlY3RvclF1ZXJ5
OjpleGVjdXRlKToKKyAgICAgICAgKiBkb20vU2VsZWN0b3JRdWVyeS5oOiBBZGRlZC4KKyAgICAg
ICAgCisgICAgICAgICAgICBDbGFzcyBmb3Igc2VsZWN0b3IgbWF0Y2hpbmcgaW4gdHJlZS4KKyAg
ICAKIDIwMTEtMDgtMjkgIFl1cnkgU2VtaWtoYXRza3kgIDx5dXJ5c0BjaHJvbWl1bS5vcmc+CiAK
ICAgICAgICAgV2ViIEluc3BlY3Rvcjogd3Jvbmcgc2NyaXB0IGRpc3BsYXkgbmFtZSB3aGVuIHRo
ZXJlIGlzIGEgc2xhc2ggaW4gaXRzIFVSTCBxdWVyeSBwYXJhbWV0ZXJzCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L0dOVW1ha2VmaWxlLmxpc3QuYW0JKHJldmlzaW9uIDk0MDY3KQorKysgU291cmNlL1dlYkNvcmUv
R05VbWFrZWZpbGUubGlzdC5hbQkod29ya2luZyBjb3B5KQpAQCAtMTI4NCw4ICsxMjg0LDggQEAg
d2ViY29yZV9zb3VyY2VzICs9IFwKIAlTb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0UnVubmVyLmgg
XAogCVNvdXJjZS9XZWJDb3JlL2RvbS9TZWxlY3RFbGVtZW50LmNwcCBcCiAJU291cmNlL1dlYkNv
cmUvZG9tL1NlbGVjdEVsZW1lbnQuaCBcCi0JU291cmNlL1dlYkNvcmUvZG9tL1NlbGVjdG9yTm9k
ZUxpc3QuY3BwIFwKLQlTb3VyY2UvV2ViQ29yZS9kb20vU2VsZWN0b3JOb2RlTGlzdC5oIFwKKwlT
b3VyY2UvV2ViQ29yZS9kb20vU2VsZWN0b3JRdWVyeS5jcHAgXAorCVNvdXJjZS9XZWJDb3JlL2Rv
bS9TZWxlY3RvclF1ZXJ5LmggXAogCVNvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dDb250ZW50RWxl
bWVudC5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dDb250ZW50RWxlbWVudC5oIFwK
IAlTb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93SW5jbHVzaW9uU2VsZWN0b3IuY3BwIFwKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLmd5cGkJKHJldmlzaW9uIDk0MDY3KQorKysgU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS5neXBpCSh3b3JraW5nIGNvcHkpCkBAIC01MzU0LDggKzUzNTQsOCBAQAogICAgICAgICAgICAg
J2RvbS9TY3JpcHRlZEFuaW1hdGlvbkNvbnRyb2xsZXIuaCcsCiAgICAgICAgICAgICAnZG9tL1Nl
bGVjdEVsZW1lbnQuY3BwJywKICAgICAgICAgICAgICdkb20vU2VsZWN0RWxlbWVudC5oJywKLSAg
ICAgICAgICAgICdkb20vU2VsZWN0b3JOb2RlTGlzdC5jcHAnLAotICAgICAgICAgICAgJ2RvbS9T
ZWxlY3Rvck5vZGVMaXN0LmgnLAorICAgICAgICAgICAgJ2RvbS9TZWxlY3RvclF1ZXJ5LmNwcCcs
CisgICAgICAgICAgICAnZG9tL1NlbGVjdG9yUXVlcnkuaCcsCiAgICAgICAgICAgICAnZG9tL1No
YWRvd0NvbnRlbnRFbGVtZW50LmNwcCcsCiAgICAgICAgICAgICAnZG9tL1NoYWRvd0NvbnRlbnRF
bGVtZW50LmgnLAogICAgICAgICAgICAgJ2RvbS9TaGFkb3dJbmNsdXNpb25TZWxlY3Rvci5jcHAn
LApJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS5wcm8KPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvV2ViQ29yZS5wcm8JKHJldmlzaW9uIDk0MDY3KQorKysgU291cmNlL1dlYkNvcmUv
V2ViQ29yZS5wcm8JKHdvcmtpbmcgY29weSkKQEAgLTU0Miw3ICs1NDIsNyBAQCBTT1VSQ0VTICs9
IFwKICAgICBkb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5jcHAgXAogICAgIGRvbS9TY3JpcHRS
dW5uZXIuY3BwIFwKICAgICBkb20vU2VsZWN0RWxlbWVudC5jcHAgXAotICAgIGRvbS9TZWxlY3Rv
ck5vZGVMaXN0LmNwcCBcCisgICAgZG9tL1NlbGVjdG9yUXVlcnkuY3BwIFwKICAgICBkb20vU2hh
ZG93Q29udGVudEVsZW1lbnQuY3BwIFwKICAgICBkb20vU2hhZG93SW5jbHVzaW9uU2VsZWN0b3Iu
Y3BwIFwKICAgICBkb20vU2hhZG93Um9vdC5jcHAgXApAQCAtMTUzNiw3ICsxNTM2LDcgQEAgSEVB
REVSUyArPSBcCiAgICAgZG9tL1NjcmlwdEVsZW1lbnQuaCBcCiAgICAgZG9tL1NjcmlwdEV4ZWN1
dGlvbkNvbnRleHQuaCBcCiAgICAgZG9tL1NlbGVjdEVsZW1lbnQuaCBcCi0gICAgZG9tL1NlbGVj
dG9yTm9kZUxpc3QuaCBcCisgICAgZG9tL1NlbGVjdG9yUXVlcnkuaCBcCiAgICAgZG9tL1NoYWRv
d0NvbnRlbnRFbGVtZW50LmggXAogICAgIGRvbS9TaGFkb3dJbmNsdXNpb25TZWxlY3Rvci5oIFwK
ICAgICBkb20vU2hhZG93Um9vdC5oIFwKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNw
cm9qL1dlYkNvcmUudmNwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
dmNwcm9qL1dlYkNvcmUudmNwcm9qCShyZXZpc2lvbiA5NDA2NykKKysrIFNvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC00ODMzMCwx
MTUgKzQ4MzMwLDExIEBACiAJCQkJPgogCQkJPC9GaWxlPgogCQkJPEZpbGUKLQkJCQlSZWxhdGl2
ZVBhdGg9Ii4uXGRvbVxTZWxlY3Rvck5vZGVMaXN0LmNwcCIKLQkJCQk+Ci0JCQkJPEZpbGVDb25m
aWd1cmF0aW9uCi0JCQkJCU5hbWU9IkRlYnVnfFdpbjMyIgotCQkJCQlFeGNsdWRlZEZyb21CdWls
ZD0idHJ1ZSIKLQkJCQkJPgotCQkJCQk8VG9vbAotCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9v
bCIKLQkJCQkJLz4KLQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPgotCQkJCTxGaWxlQ29uZmlndXJh
dGlvbgotCQkJCQlOYW1lPSJSZWxlYXNlfFdpbjMyIgotCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0i
dHJ1ZSIKLQkJCQkJPgotCQkJCQk8VG9vbAotCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIK
LQkJCQkJLz4KLQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPgotCQkJCTxGaWxlQ29uZmlndXJhdGlv
bgotCQkJCQlOYW1lPSJEZWJ1Z19DYWlyb19DRkxpdGV8V2luMzIiCi0JCQkJCUV4Y2x1ZGVkRnJv
bUJ1aWxkPSJ0cnVlIgotCQkJCQk+Ci0JCQkJCTxUb29sCi0JCQkJCQlOYW1lPSJWQ0NMQ29tcGls
ZXJUb29sIgotCQkJCQkvPgotCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+Ci0JCQkJPEZpbGVDb25m
aWd1cmF0aW9uCi0JCQkJCU5hbWU9IlJlbGVhc2VfQ2Fpcm9fQ0ZMaXRlfFdpbjMyIgotCQkJCQlF
eGNsdWRlZEZyb21CdWlsZD0idHJ1ZSIKLQkJCQkJPgotCQkJCQk8VG9vbAotCQkJCQkJTmFtZT0i
VkNDTENvbXBpbGVyVG9vbCIKLQkJCQkJLz4KLQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPgotCQkJ
CTxGaWxlQ29uZmlndXJhdGlvbgotCQkJCQlOYW1lPSJEZWJ1Z19BbGx8V2luMzIiCi0JCQkJCUV4
Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIgotCQkJCQk+Ci0JCQkJCTxUb29sCi0JCQkJCQlOYW1lPSJW
Q0NMQ29tcGlsZXJUb29sIgotCQkJCQkvPgotCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+Ci0JCQkJ
PEZpbGVDb25maWd1cmF0aW9uCi0JCQkJCU5hbWU9IlByb2R1Y3Rpb258V2luMzIiCi0JCQkJCUV4
Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIgotCQkJCQk+Ci0JCQkJCTxUb29sCi0JCQkJCQlOYW1lPSJW
Q0NMQ29tcGlsZXJUb29sIgotCQkJCQkvPgotCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+Ci0JCQk8
L0ZpbGU+Ci0JCQk8RmlsZQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cZG9tXFNlbGVjdG9yTm9kZUxp
c3QuY3BwIgotCQkJCT4KLQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24KLQkJCQkJTmFtZT0iRGVidWd8
V2luMzIiCi0JCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIgotCQkJCQk+Ci0JCQkJCTxUb29s
Ci0JCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgotCQkJCQkvPgotCQkJCTwvRmlsZUNvbmZp
Z3VyYXRpb24+Ci0JCQkJPEZpbGVDb25maWd1cmF0aW9uCi0JCQkJCU5hbWU9IlJlbGVhc2V8V2lu
MzIiCi0JCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIgotCQkJCQk+Ci0JCQkJCTxUb29sCi0J
CQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgotCQkJCQkvPgotCQkJCTwvRmlsZUNvbmZpZ3Vy
YXRpb24+Ci0JCQkJPEZpbGVDb25maWd1cmF0aW9uCi0JCQkJCU5hbWU9IkRlYnVnX0NhaXJvX0NG
TGl0ZXxXaW4zMiIKLQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiCi0JCQkJCT4KLQkJCQkJ
PFRvb2wKLQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCi0JCQkJCS8+Ci0JCQkJPC9GaWxl
Q29uZmlndXJhdGlvbj4KLQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24KLQkJCQkJTmFtZT0iUmVsZWFz
ZV9DYWlyb19DRkxpdGV8V2luMzIiCi0JCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIgotCQkJ
CQk+Ci0JCQkJCTxUb29sCi0JCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgotCQkJCQkvPgot
CQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+Ci0JCQkJPEZpbGVDb25maWd1cmF0aW9uCi0JCQkJCU5h
bWU9IkRlYnVnX0FsbHxXaW4zMiIKLQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiCi0JCQkJ
CT4KLQkJCQkJPFRvb2wKLQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCi0JCQkJCS8+Ci0J
CQkJPC9GaWxlQ29uZmlndXJhdGlvbj4KLQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24KLQkJCQkJTmFt
ZT0iUHJvZHVjdGlvbnxXaW4zMiIKLQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiCi0JCQkJ
CT4KLQkJCQkJPFRvb2wKLQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCi0JCQkJCS8+Ci0J
CQkJPC9GaWxlQ29uZmlndXJhdGlvbj4KLQkJCTwvRmlsZT4KLQkJCTxGaWxlCi0JCQkJUmVsYXRp
dmVQYXRoPSIuLlxkb21cU2VsZWN0b3JOb2RlTGlzdC5oIgorCQkJCVJlbGF0aXZlUGF0aD0iLi5c
ZG9tXFNlbGVjdG9yUXVlcnkuaCIKIAkJCQk+CiAJCQk8L0ZpbGU+CiAJCQk8RmlsZQotCQkJCVJl
bGF0aXZlUGF0aD0iLi5cZG9tXFNlbGVjdG9yTm9kZUxpc3QuaCIKKwkJCQlSZWxhdGl2ZVBhdGg9
Ii4uXGRvbVxTZWxlY3RvclF1ZXJ5LmNwcCIKIAkJCQk+CiAJCQk8L0ZpbGU+CiAJCQk8RmlsZQpJ
bmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagkocmV2aXNpb24gOTQwNjcpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTUwOTgsOCArNTA5OCw2IEBACiAJ
CUJDN0ZBNjIxMEQxRjBDQkQwMERCMjJBOSAvKiBEeW5hbWljTm9kZUxpc3QuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDN0ZBNjFGMEQxRjBDQkQwMERC
MjJBOSAvKiBEeW5hbWljTm9kZUxpc3QuaCAqLzsgfTsKIAkJQkM3RkE2MkQwRDFGMEVGRjAwREIy
MkE5IC8qIFN0YXRpY05vZGVMaXN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBCQzdGQTYyQjBEMUYwRUZGMDBEQjIyQTkgLyogU3RhdGljTm9kZUxpc3Qu
aCAqLzsgfTsKIAkJQkM3RkE2MkUwRDFGMEVGRjAwREIyMkE5IC8qIFN0YXRpY05vZGVMaXN0LmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDN0ZBNjJD
MEQxRjBFRkYwMERCMjJBOSAvKiBTdGF0aWNOb2RlTGlzdC5jcHAgKi87IH07Ci0JCUJDN0ZBNjgx
MEQxRjE2NzkwMERCMjJBOSAvKiBTZWxlY3Rvck5vZGVMaXN0LmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzdGQTY3RjBEMUYxNjc5MDBEQjIyQTkgLyog
U2VsZWN0b3JOb2RlTGlzdC5oICovOyB9OwotCQlCQzdGQTY4MjBEMUYxNjc5MDBEQjIyQTkgLyog
U2VsZWN0b3JOb2RlTGlzdC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBCQzdGQTY4MDBEMUYxNjc5MDBEQjIyQTkgLyogU2VsZWN0b3JOb2RlTGlzdC5j
cHAgKi87IH07CiAJCUJDODBDOTg3MENEMjk0RUUwMEEwQjdCMyAvKiBDU1NUaW1pbmdGdW5jdGlv
blZhbHVlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEJDODBDOTg1MENEMjk0RUUwMEEwQjdCMyAvKiBDU1NUaW1pbmdGdW5jdGlvblZhbHVlLmNwcCAq
LzsgfTsKIAkJQkM4MEM5ODgwQ0QyOTRFRTAwQTBCN0IzIC8qIENTU1RpbWluZ0Z1bmN0aW9uVmFs
dWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDODBD
OTg2MENEMjk0RUUwMEEwQjdCMyAvKiBDU1NUaW1pbmdGdW5jdGlvblZhbHVlLmggKi87IH07CiAJ
CUJDODI0MzI5MEQwQ0U4QTIwMDQ2MEM4RiAvKiBKU1NRTEVycm9yLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzgyNDMyNTBEMENFOEEyMDA0NjBDOEYg
LyogSlNTUUxFcnJvci5oICovOyB9OwpAQCAtNTY1Miw2ICs1NjUwLDggQEAKIAkJRTQ0NjE0M0Mw
Q0Q2ODlDQzAwRkFEQTc1IC8qIEpTSFRNTFNvdXJjZUVsZW1lbnQuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEU0QjQyMzcyMENCRkI2RTAwMEFGMkVDRSAv
KiBKU0hUTUxTb3VyY2VFbGVtZW50LmggKi87IH07CiAJCUU0NDYxNDUxMENENjhBMzUwMEZBREE3
NSAvKiBSZW5kZXJWaWRlby5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBFNEI0MUUzMzBDQkZCNjA5MDBBRjJFQ0UgLyogUmVuZGVyVmlkZW8uY3BwICov
OyB9OwogCQlFNDQ2MTQ1MjBDRDY4QTM1MDBGQURBNzUgLyogUmVuZGVyVmlkZW8uaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEU0QjQxRTM0MENCRkI2MDkw
MEFGMkVDRSAvKiBSZW5kZXJWaWRlby5oICovOyB9OworCQlFNDUzMjJBQjE0MENFMjY3MDA1QTBG
OTIgLyogU2VsZWN0b3JRdWVyeS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBFNDUzMjJBOTE0MENFMjY3MDA1QTBGOTIgLyogU2VsZWN0b3JRdWVyeS5j
cHAgKi87IH07CisJCUU0NTMyMkFDMTQwQ0UyNjcwMDVBMEY5MiAvKiBTZWxlY3RvclF1ZXJ5Lmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFNDUzMjJBQTE0
MENFMjY3MDA1QTBGOTIgLyogU2VsZWN0b3JRdWVyeS5oICovOyB9OwogCQlFNDYyQTRBMTExM0U3
MUJFMDA0QTQyMjAgLyogSW50UG9pbnRIYXNoLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBFNDYyQTRBMDExM0U3MUJFMDA0QTQyMjAgLyogSW50UG9pbnRI
YXNoLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJ
RTQ3NzhCN0YxMTVBNTgxQTAwQjVEMzcyIC8qIEpTQ3VzdG9tRXZlbnQuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTQ3NzhCN0QxMTVBNTgxQTAwQjVE
MzcyIC8qIEpTQ3VzdG9tRXZlbnQuY3BwICovOyB9OwogCQlFNDc3OEI4MDExNUE1ODFBMDBCNUQz
NzIgLyogSlNDdXN0b21FdmVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gRTQ3NzhCN0UxMTVBNTgxQTAwQjVEMzcyIC8qIEpTQ3VzdG9tRXZlbnQuaCAq
LzsgfTsKQEAgLTExODE3LDggKzExODE3LDYgQEAKIAkJQkM3RkE2MUYwRDFGMENCRDAwREIyMkE5
IC8qIER5bmFtaWNOb2RlTGlzdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBE
eW5hbWljTm9kZUxpc3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkM3RkE2MkIw
RDFGMEVGRjAwREIyMkE5IC8qIFN0YXRpY05vZGVMaXN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFN0YXRpY05vZGVMaXN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUJDN0ZBNjJDMEQxRjBFRkYwMERCMjJBOSAvKiBTdGF0aWNOb2RlTGlzdC5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTdGF0aWNOb2RlTGlzdC5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUJDN0ZBNjdGMEQxRjE2NzkwMERCMjJBOSAvKiBTZWxl
Y3Rvck5vZGVMaXN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNlbGVjdG9y
Tm9kZUxpc3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQkM3RkE2ODAwRDFGMTY3
OTAwREIyMkE5IC8qIFNlbGVjdG9yTm9kZUxpc3QuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gU2VsZWN0b3JOb2RlTGlzdC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUJDODBDOTg1MENEMjk0RUUwMEEwQjdCMyAvKiBDU1NUaW1pbmdGdW5jdGlvblZh
bHVlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDU1NUaW1pbmdG
dW5jdGlvblZhbHVlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkM4MEM5ODYw
Q0QyOTRFRTAwQTBCN0IzIC8qIENTU1RpbWluZ0Z1bmN0aW9uVmFsdWUuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENTU1RpbWluZ0Z1bmN0aW9uVmFsdWUuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkM4MjQzMjUwRDBDRThBMjAwNDYwQzhGIC8qIEpTU1FMRXJy
b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNTUUxFcnJvci5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTI0MDUsNiArMTI0MDMsOCBAQAogCQlFNDQ2MTQx
MTBDRDY4MjY5MDBGQURBNzUgLyogSlNNZWRpYUVycm9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IEpTTWVkaWFFcnJvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlFNDQ2MTQxMjBDRDY4MjY5MDBGQURBNzUgLyogSlNUaW1lUmFuZ2VzLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTVGltZVJhbmdlcy5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUU0NDYxNDEzMENENjgyNjkwMEZBREE3NSAvKiBKU1RpbWVSYW5n
ZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNUaW1lUmFuZ2VzLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUU0NTMyMkE5MTQwQ0UyNjcwMDVBMEY5MiAvKiBT
ZWxlY3RvclF1ZXJ5LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNl
bGVjdG9yUXVlcnkuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFNDUzMjJBQTE0
MENFMjY3MDA1QTBGOTIgLyogU2VsZWN0b3JRdWVyeS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBTZWxlY3RvclF1ZXJ5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUU0NjJBNEEwMTEzRTcxQkUwMDRBNDIyMCAvKiBJbnRQb2ludEhhc2guaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gSW50UG9pbnRIYXNoLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUU0Nzc4QjdEMTE1QTU4MUEwMEI1RDM3MiAvKiBKU0N1c3RvbUV2ZW50LmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTQ3VzdG9tRXZlbnQuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFNDc3OEI3RTExNUE1ODFBMDBCNUQzNzIgLyog
SlNDdXN0b21FdmVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0N1c3Rv
bUV2ZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yMDA2Miw4ICsyMDA2Miw4
IEBACiAJCQkJOEE0MTNBREUxMjA3QkJBNTAwODIwMTZFIC8qIFNjcmlwdFJ1bm5lci5oICovLAog
CQkJCTA4NEFFQkUyMEZCNTA1RkEwMDM4NDgzRSAvKiBTZWxlY3RFbGVtZW50LmNwcCAqLywKIAkJ
CQkwODRBRUJFMzBGQjUwNUZBMDAzODQ4M0UgLyogU2VsZWN0RWxlbWVudC5oICovLAotCQkJCUJD
N0ZBNjgwMEQxRjE2NzkwMERCMjJBOSAvKiBTZWxlY3Rvck5vZGVMaXN0LmNwcCAqLywKLQkJCQlC
QzdGQTY3RjBEMUYxNjc5MDBEQjIyQTkgLyogU2VsZWN0b3JOb2RlTGlzdC5oICovLAorCQkJCUU0
NTMyMkE5MTQwQ0UyNjcwMDVBMEY5MiAvKiBTZWxlY3RvclF1ZXJ5LmNwcCAqLywKKwkJCQlFNDUz
MjJBQTE0MENFMjY3MDA1QTBGOTIgLyogU2VsZWN0b3JRdWVyeS5oICovLAogCQkJCUE3NjZDRjhC
MTM4MTBFMEMwMDExQTBCMyAvKiBTaGFkb3dDb250ZW50RWxlbWVudC5jcHAgKi8sCiAJCQkJQTc0
QzJEM0IxMzgxMUUwRDAwRjgzNTcyIC8qIFNoYWRvd0NvbnRlbnRFbGVtZW50LmggKi8sCiAJCQkJ
QTcxQzMwQjYxMzgxMjY1RTAwREJDMzUxIC8qIFNoYWRvd0luY2x1c2lvblNlbGVjdG9yLmNwcCAq
LywKQEAgLTIyODM5LDcgKzIyODM5LDYgQEAKIAkJCQkzNzFGNEZGQzBEMjVFN0YzMDBFQ0UwRDUg
LyogU2VnbWVudGVkRm9udERhdGEuaCBpbiBIZWFkZXJzICovLAogCQkJCUIyQzNEQTJGMEQwMDZD
MUQwMEVGNkYyNiAvKiBTZWdtZW50ZWRTdHJpbmcuaCBpbiBIZWFkZXJzICovLAogCQkJCTA4NEFF
QkU1MEZCNTA1RkEwMDM4NDgzRSAvKiBTZWxlY3RFbGVtZW50LmggaW4gSGVhZGVycyAqLywKLQkJ
CQlCQzdGQTY4MTBEMUYxNjc5MDBEQjIyQTkgLyogU2VsZWN0b3JOb2RlTGlzdC5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJQTc1RTQ5NzYxMDc1MkFDQjAwQzlCODk2IC8qIFNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTMzMDlFMTAwOTlFNjQ5MjAwNTZFNTgxIC8qIFNl
dE5vZGVBdHRyaWJ1dGVDb21tYW5kLmggaW4gSGVhZGVycyAqLywKIAkJCQlCOERCREI0QzEzMEIw
RjhBMDBGNUNEQjEgLyogU2V0U2VsZWN0aW9uQ29tbWFuZC5oIGluIEhlYWRlcnMgKi8sCkBAIC0y
MzQ0OCw2ICsyMzQ0Nyw3IEBACiAJCQkJOTM1MDBGMzIxM0ZERTNCRTAwOTlFQzI0IC8qIE5TU2Ny
b2xsZXJJbXBEZXRhaWxzLmggaW4gSGVhZGVycyAqLywKIAkJCQlEMEEzQTczMTE0MDVBMzk4MDBG
QjhFRDMgLyogUmVzb3VyY2VMb2FkZXJPcHRpb25zLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQ0U0
Mzg5NzE0MEIwMDUxMDA1RTQzN0UgLyogRXZlbnRDb25zdHJ1Y3RvcnMuaCBpbiBIZWFkZXJzICov
LAorCQkJCUU0NTMyMkFDMTQwQ0UyNjcwMDVBMEY5MiAvKiBTZWxlY3RvclF1ZXJ5LmggaW4gSGVh
ZGVycyAqLywKIAkJCQlCMTBCNjk4MDE0MEMxNzQwMDBCQzFDMjYgLyogV2ViVlRUVG9rZW4uaCBp
biBIZWFkZXJzICovLAogCQkJCUIxMEI2OTgyMTQwQzE3NDAwMEJDMUMyNiAvKiBXZWJWVFRUb2tl
bml6ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJKTsKQEAgLTI1NzgxLDcgKzI1NzgxLDYgQEAKIAkJ
CQkzNzFGNEZGRDBEMjVFN0YzMDBFQ0UwRDUgLyogU2VnbWVudGVkRm9udERhdGEuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJQjJDM0RBMkUwRDAwNkMxRDAwRUY2RjI2IC8qIFNlZ21lbnRlZFN0cmlu
Zy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwODRBRUJFNDBGQjUwNUZBMDAzODQ4M0UgLyogU2Vs
ZWN0RWxlbWVudC5jcHAgaW4gU291cmNlcyAqLywKLQkJCQlCQzdGQTY4MjBEMUYxNjc5MDBEQjIy
QTkgLyogU2VsZWN0b3JOb2RlTGlzdC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBNzVFNDk3NzEw
NzUyQUNCMDBDOUI4OTYgLyogU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTkzMzA5RTBGMDk5RTY0OTIwMDU2RTU4MSAvKiBTZXROb2RlQXR0cmlidXRlQ29tbWFu
ZC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCOERCREI0QjEzMEIwRjhBMDBGNUNEQjEgLyogU2V0
U2VsZWN0aW9uQ29tbWFuZC5jcHAgaW4gU291cmNlcyAqLywKQEAgLTI2MjU5LDYgKzI2MjU4LDcg
QEAKIAkJCQkxQTE0MTRCNTEzQTBGMDUwMDAxOTk5NkMgLyogV2ViS2l0Rm9udEZhbWlseU5hbWVz
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCURGOUFGRDczMTNGQzMxRDgwMDE1RkVCNyAvKiBNZWRp
YVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQkNF
NDM4OUExNDBCMDA3MzAwNUU0MzdFIC8qIEpTRXZlbnRDb25zdHJ1Y3RvcnMuY3BwIGluIFNvdXJj
ZXMgKi8sCisJCQkJRTQ1MzIyQUIxNDBDRTI2NzAwNUEwRjkyIC8qIFNlbGVjdG9yUXVlcnkuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJQjEwQjY5ODExNDBDMTc0MDAwQkMxQzI2IC8qIFdlYlZUVFRv
a2VuaXplci5jcHAgaW4gU291cmNlcyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVu
dFBvc3Rwcm9jZXNzaW5nID0gMDsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNl
bGVjdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVTZWxl
Y3Rvci5jcHAJKHJldmlzaW9uIDk0MDY3KQorKysgU291cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxl
U2VsZWN0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04NzUsOSArODc1LDIwIEBAIEVJbnNpZGVM
aW5rIENTU1N0eWxlU2VsZWN0b3I6OlNlbGVjdG9yQ2gKICNlbmRpZgogfQogCi1ib29sIENTU1N0
eWxlU2VsZWN0b3I6OlNlbGVjdG9yQ2hlY2tlcjo6Y2hlY2tTZWxlY3RvcihDU1NTZWxlY3Rvciog
c2VsLCBFbGVtZW50KiBlbGVtZW50KSBjb25zdAorYm9vbCBDU1NTdHlsZVNlbGVjdG9yOjpTZWxl
Y3RvckNoZWNrZXI6OmNoZWNrU2VsZWN0b3IoQ1NTU2VsZWN0b3IqIHNlbCwgRWxlbWVudCogZWxl
bWVudCwgYm9vbCBpc0Zhc3RDaGVja2FibGVTZWxlY3RvcikgY29uc3QKIHsKICAgICBQc2V1ZG9J
ZCBkeW5hbWljUHNldWRvID0gTk9QU0VVRE87CisgICAgaWYgKGlzRmFzdENoZWNrYWJsZVNlbGVj
dG9yICYmICFlbGVtZW50LT5pc1NWR0VsZW1lbnQoKSkgeworICAgICAgICAvLyBmYXN0Q2hlY2tT
ZWxlY3RvciBhc3N1bWVzIGNsYXNzIGFuZCBpZCBtYXRjaCBmb3IgdGhlIHRvcCBzZWxlY3Rvci4K
KyAgICAgICAgaWYgKHNlbC0+bV9tYXRjaCA9PSBDU1NTZWxlY3Rvcjo6Q2xhc3MpIHsKKyAgICAg
ICAgICAgIGlmICghKGVsZW1lbnQtPmhhc0NsYXNzKCkgJiYgc3RhdGljX2Nhc3Q8U3R5bGVkRWxl
bWVudCo+KGVsZW1lbnQpLT5jbGFzc05hbWVzKCkuY29udGFpbnMoc2VsLT52YWx1ZSgpKSkpCisg
ICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9IGVsc2UgaWYgKHNlbC0+bV9t
YXRjaCA9PSBDU1NTZWxlY3Rvcjo6SWQpIHsKKyAgICAgICAgICAgIGlmICghKGVsZW1lbnQtPmhh
c0lEKCkgJiYgZWxlbWVudC0+aWRGb3JTdHlsZVJlc29sdXRpb24oKSA9PSBzZWwtPnZhbHVlKCkp
KQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorICAgICAgICByZXR1
cm4gZmFzdENoZWNrU2VsZWN0b3Ioc2VsLCBlbGVtZW50KTsKKyAgICB9CiAgICAgcmV0dXJuIGNo
ZWNrU2VsZWN0b3Ioc2VsLCBlbGVtZW50LCBkeW5hbWljUHNldWRvLCBmYWxzZSwgZmFsc2UpID09
IFNlbGVjdG9yTWF0Y2hlczsKIH0KIApAQCAtMjAxMiwxNyArMjAyMyw2IEBAIGlubGluZSBib29s
IHNlbGVjdG9yVGFnTWF0Y2hlcyhjb25zdCBFbGUKICAgICBjb25zdCBBdG9taWNTdHJpbmcmIG5h
bWVzcGFjZVVSSSA9IHNlbGVjdG9yLT50YWcoKS5uYW1lc3BhY2VVUkkoKTsKICAgICByZXR1cm4g
bmFtZXNwYWNlVVJJID09IHN0YXJBdG9tIHx8IG5hbWVzcGFjZVVSSSA9PSBlbGVtZW50LT5uYW1l
c3BhY2VVUkkoKTsKIH0KLQotaW5saW5lIGJvb2wgaXNGYXN0Q2hlY2thYmxlU2VsZWN0b3IoY29u
c3QgQ1NTU2VsZWN0b3IqIHNlbGVjdG9yKQotewotICAgIGZvciAoOyBzZWxlY3Rvcjsgc2VsZWN0
b3IgPSBzZWxlY3Rvci0+dGFnSGlzdG9yeSgpKSB7Ci0gICAgICAgIGlmIChzZWxlY3Rvci0+cmVs
YXRpb24oKSAhPSBDU1NTZWxlY3Rvcjo6RGVzY2VuZGFudCAmJiBzZWxlY3Rvci0+cmVsYXRpb24o
KSAhPSBDU1NTZWxlY3Rvcjo6Q2hpbGQgJiYgc2VsZWN0b3ItPnJlbGF0aW9uKCkgIT0gQ1NTU2Vs
ZWN0b3I6OlN1YlNlbGVjdG9yKQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICBp
ZiAoc2VsZWN0b3ItPm1fbWF0Y2ggIT0gQ1NTU2VsZWN0b3I6Ok5vbmUgJiYgc2VsZWN0b3ItPm1f
bWF0Y2ggIT0gQ1NTU2VsZWN0b3I6OklkICYmIHNlbGVjdG9yLT5tX21hdGNoICE9IENTU1NlbGVj
dG9yOjpDbGFzcykKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0gICAgcmV0dXJu
IHRydWU7Ci19CiAgICAgCiB0ZW1wbGF0ZSA8Ym9vbCBjaGVja1ZhbHVlKGNvbnN0IEVsZW1lbnQq
LCBBdG9taWNTdHJpbmdJbXBsKik+CiBpbmxpbmUgYm9vbCBmYXN0Q2hlY2tTaW5nbGVTZWxlY3Rv
cihjb25zdCBDU1NTZWxlY3RvciomIHNlbGVjdG9yLCBjb25zdCBFbGVtZW50KiYgZWxlbWVudCwg
Y29uc3QgQ1NTU2VsZWN0b3IqJiB0b3BDaGlsZE9yU3Vic2VsZWN0b3IsIGNvbnN0IEVsZW1lbnQq
JiB0b3BDaGlsZE9yU3Vic2VsZWN0b3JNYXRjaEVsZW1lbnQpCkBAIC0yMTE2LDYgKzIxMTYsMTcg
QEAgYm9vbCBDU1NTdHlsZVNlbGVjdG9yOjpTZWxlY3RvckNoZWNrZXI6OgogICAgIHJldHVybiB0
cnVlOwogfQogCitib29sIENTU1N0eWxlU2VsZWN0b3I6OlNlbGVjdG9yQ2hlY2tlcjo6aXNGYXN0
Q2hlY2thYmxlU2VsZWN0b3IoY29uc3QgQ1NTU2VsZWN0b3IqIHNlbGVjdG9yKQoreworICAgIGZv
ciAoOyBzZWxlY3Rvcjsgc2VsZWN0b3IgPSBzZWxlY3Rvci0+dGFnSGlzdG9yeSgpKSB7CisgICAg
ICAgIGlmIChzZWxlY3Rvci0+cmVsYXRpb24oKSAhPSBDU1NTZWxlY3Rvcjo6RGVzY2VuZGFudCAm
JiBzZWxlY3Rvci0+cmVsYXRpb24oKSAhPSBDU1NTZWxlY3Rvcjo6Q2hpbGQgJiYgc2VsZWN0b3It
PnJlbGF0aW9uKCkgIT0gQ1NTU2VsZWN0b3I6OlN1YlNlbGVjdG9yKQorICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgICAgICBpZiAoc2VsZWN0b3ItPm1fbWF0Y2ggIT0gQ1NTU2VsZWN0b3I6
Ok5vbmUgJiYgc2VsZWN0b3ItPm1fbWF0Y2ggIT0gQ1NTU2VsZWN0b3I6OklkICYmIHNlbGVjdG9y
LT5tX21hdGNoICE9IENTU1NlbGVjdG9yOjpDbGFzcykKKyAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICB9CisgICAgcmV0dXJuIHRydWU7Cit9CisKIC8vIFJlY3Vyc2l2ZSBjaGVjayBvZiBz
ZWxlY3RvcnMgYW5kIGNvbWJpbmF0b3JzCiAvLyBJdCBjYW4gcmV0dXJuIDMgZGlmZmVyZW50IHZh
bHVlczoKIC8vICogU2VsZWN0b3JNYXRjaGVzICAgICAgICAgLSB0aGUgc2VsZWN0b3IgbWF0Y2hl
cyB0aGUgZWxlbWVudCBlCkBAIC0zMDM1LDcgKzMwNDYsNyBAQCBSdWxlRGF0YTo6UnVsZURhdGEo
Q1NTU3R5bGVSdWxlKiBydWxlLCBDCiAgICAgLCBtX3NlbGVjdG9yKHNlbGVjdG9yKQogICAgICwg
bV9zcGVjaWZpY2l0eShzZWxlY3Rvci0+c3BlY2lmaWNpdHkoKSkKICAgICAsIG1fcG9zaXRpb24o
cG9zaXRpb24pCi0gICAgLCBtX2hhc0Zhc3RDaGVja2FibGVTZWxlY3Rvcihpc0Zhc3RDaGVja2Fi
bGVTZWxlY3RvcihzZWxlY3RvcikpCisgICAgLCBtX2hhc0Zhc3RDaGVja2FibGVTZWxlY3RvcihD
U1NTdHlsZVNlbGVjdG9yOjpTZWxlY3RvckNoZWNrZXI6OmlzRmFzdENoZWNrYWJsZVNlbGVjdG9y
KHNlbGVjdG9yKSkKICAgICAsIG1faGFzTXVsdGlwYXJ0U2VsZWN0b3Ioc2VsZWN0b3ItPnRhZ0hp
c3RvcnkoKSkKICAgICAsIG1faGFzVG9wU2VsZWN0b3JNYXRjaGluZ0hUTUxCYXNlZE9uUnVsZUhh
c2goaXNTZWxlY3Rvck1hdGNoaW5nSFRNTEJhc2VkT25SdWxlSGFzaChzZWxlY3RvcikpCiB7Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVTZWxlY3Rvci5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNlbGVjdG9yLmgJKHJldmlzaW9uIDk0MDY3KQor
KysgU291cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxlU2VsZWN0b3IuaAkod29ya2luZyBjb3B5KQpA
QCAtMjc1LDEwICsyNzUsMTEgQEAgcHVibGljOgogICAgICAgICBwdWJsaWM6CiAgICAgICAgICAg
ICBTZWxlY3RvckNoZWNrZXIoRG9jdW1lbnQqLCBib29sIHN0cmljdFBhcnNpbmcpOwogCi0gICAg
ICAgICAgICBib29sIGNoZWNrU2VsZWN0b3IoQ1NTU2VsZWN0b3IqLCBFbGVtZW50KikgY29uc3Q7
CisgICAgICAgICAgICBib29sIGNoZWNrU2VsZWN0b3IoQ1NTU2VsZWN0b3IqLCBFbGVtZW50Kiwg
Ym9vbCBpc0Zhc3RDaGVja2FibGVTZWxlY3RvciA9IGZhbHNlKSBjb25zdDsKICAgICAgICAgICAg
IFNlbGVjdG9yTWF0Y2ggY2hlY2tTZWxlY3RvcihDU1NTZWxlY3RvciosIEVsZW1lbnQqLCBQc2V1
ZG9JZCYgZHluYW1pY1BzZXVkbywgYm9vbCBpc1N1YlNlbGVjdG9yLCBib29sIGVuY291bnRlcmVk
TGluaywgUmVuZGVyU3R5bGUqID0gMCwgUmVuZGVyU3R5bGUqIGVsZW1lbnRQYXJlbnRTdHlsZSA9
IDApIGNvbnN0OwogICAgICAgICAgICAgYm9vbCBjaGVja09uZVNlbGVjdG9yKENTU1NlbGVjdG9y
KiwgRWxlbWVudCosIFBzZXVkb0lkJiBkeW5hbWljUHNldWRvLCBib29sIGlzU3ViU2VsZWN0b3Is
IGJvb2wgZW5jb3VudGVyZWRMaW5rLCBSZW5kZXJTdHlsZSosIFJlbmRlclN0eWxlKiBlbGVtZW50
UGFyZW50U3R5bGUpIGNvbnN0OwogICAgICAgICAgICAgYm9vbCBjaGVja1Njcm9sbGJhclBzZXVk
b0NsYXNzKENTU1NlbGVjdG9yKiwgUHNldWRvSWQmIGR5bmFtaWNQc2V1ZG8pIGNvbnN0OworICAg
ICAgICAgICAgc3RhdGljIGJvb2wgaXNGYXN0Q2hlY2thYmxlU2VsZWN0b3IoY29uc3QgQ1NTU2Vs
ZWN0b3IqKTsKICAgICAgICAgICAgIHN0YXRpYyBib29sIGZhc3RDaGVja1NlbGVjdG9yKGNvbnN0
IENTU1NlbGVjdG9yKiwgY29uc3QgRWxlbWVudCopOwogCiAgICAgICAgICAgICBFSW5zaWRlTGlu
ayBkZXRlcm1pbmVMaW5rU3RhdGUoRWxlbWVudCogZWxlbWVudCkgY29uc3Q7CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9kb20vTm9kZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9t
L05vZGUuY3BwCShyZXZpc2lvbiA5NDA2NykKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtODEsNyArODEsNyBAQAogI2luY2x1ZGUgIlJlbmRlclRleHRD
b250cm9sLmgiCiAjaW5jbHVkZSAiUmVuZGVyVmlldy5oIgogI2luY2x1ZGUgIlNjb3BlZEV2ZW50
UXVldWUuaCIKLSNpbmNsdWRlICJTZWxlY3Rvck5vZGVMaXN0LmgiCisjaW5jbHVkZSAiU2VsZWN0
b3JRdWVyeS5oIgogI2luY2x1ZGUgIlNoYWRvd1Jvb3QuaCIKICNpbmNsdWRlICJTdGF0aWNOb2Rl
TGlzdC5oIgogI2luY2x1ZGUgIlRhZ05vZGVMaXN0LmgiCkBAIC0xNzY1LDI5ICsxNzY1LDkgQEAg
UGFzc1JlZlB0cjxFbGVtZW50PiBOb2RlOjpxdWVyeVNlbGVjdG9yKAogICAgICAgICBlYyA9IE5B
TUVTUEFDRV9FUlI7CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KLQotICAgIENTU1N0eWxlU2Vs
ZWN0b3I6OlNlbGVjdG9yQ2hlY2tlciBzZWxlY3RvckNoZWNrZXIoZG9jdW1lbnQoKSwgc3RyaWN0
UGFyc2luZyk7Ci0KLSAgICAvLyBGSVhNRTogd2UgY291bGQgYWxzbyBvcHRpbWl6ZSBmb3IgdGhl
IHRoZSBbaWQ9ImZvbyJdIGNhc2UKLSAgICBpZiAoc3RyaWN0UGFyc2luZyAmJiBpbkRvY3VtZW50
KCkgJiYgcXVlcnlTZWxlY3Rvckxpc3QuaGFzT25lU2VsZWN0b3IoKSAmJiBxdWVyeVNlbGVjdG9y
TGlzdC5maXJzdCgpLT5tX21hdGNoID09IENTU1NlbGVjdG9yOjpJZCkgewotICAgICAgICBFbGVt
ZW50KiBlbGVtZW50ID0gdHJlZVNjb3BlKCktPmdldEVsZW1lbnRCeUlkKHF1ZXJ5U2VsZWN0b3JM
aXN0LmZpcnN0KCktPnZhbHVlKCkpOwotICAgICAgICBpZiAoZWxlbWVudCAmJiAoaXNEb2N1bWVu
dE5vZGUoKSB8fCBlbGVtZW50LT5pc0Rlc2NlbmRhbnRPZih0aGlzKSkgJiYgc2VsZWN0b3JDaGVj
a2VyLmNoZWNrU2VsZWN0b3IocXVlcnlTZWxlY3Rvckxpc3QuZmlyc3QoKSwgZWxlbWVudCkpCi0g
ICAgICAgICAgICByZXR1cm4gZWxlbWVudDsKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgfQotCi0g
ICAgLy8gRklYTUU6IFdlIGNhbiBzcGVlZCB0aGlzIHVwIGJ5IGltcGxlbWVudGluZyBjYWNoaW5n
IHNpbWlsYXIgdG8gdGhlIG9uZSB1c2UgYnkgZ2V0RWxlbWVudEJ5SWQKLSAgICBmb3IgKE5vZGUq
IG4gPSBmaXJzdENoaWxkKCk7IG47IG4gPSBuLT50cmF2ZXJzZU5leHROb2RlKHRoaXMpKSB7Ci0g
ICAgICAgIGlmIChuLT5pc0VsZW1lbnROb2RlKCkpIHsKLSAgICAgICAgICAgIEVsZW1lbnQqIGVs
ZW1lbnQgPSBzdGF0aWNfY2FzdDxFbGVtZW50Kj4obik7Ci0gICAgICAgICAgICBmb3IgKENTU1Nl
bGVjdG9yKiBzZWxlY3RvciA9IHF1ZXJ5U2VsZWN0b3JMaXN0LmZpcnN0KCk7IHNlbGVjdG9yOyBz
ZWxlY3RvciA9IENTU1NlbGVjdG9yTGlzdDo6bmV4dChzZWxlY3RvcikpIHsKLSAgICAgICAgICAg
ICAgICBpZiAoc2VsZWN0b3JDaGVja2VyLmNoZWNrU2VsZWN0b3Ioc2VsZWN0b3IsIGVsZW1lbnQp
KQotICAgICAgICAgICAgICAgICAgICByZXR1cm4gZWxlbWVudDsKLSAgICAgICAgICAgIH0KLSAg
ICAgICAgfQotICAgIH0KICAgICAKLSAgICByZXR1cm4gMDsKKyAgICBTZWxlY3RvclF1ZXJ5IHNl
bGVjdG9yUXVlcnkodGhpcywgcXVlcnlTZWxlY3Rvckxpc3QpOworICAgIHJldHVybiBzZWxlY3Rv
clF1ZXJ5LnF1ZXJ5Rmlyc3QoKTsKIH0KIAogUGFzc1JlZlB0cjxOb2RlTGlzdD4gTm9kZTo6cXVl
cnlTZWxlY3RvckFsbChjb25zdCBTdHJpbmcmIHNlbGVjdG9ycywgRXhjZXB0aW9uQ29kZSYgZWMp
CkBAIC0xODEzLDcgKzE3OTMsOCBAQCBQYXNzUmVmUHRyPE5vZGVMaXN0PiBOb2RlOjpxdWVyeVNl
bGVjdG9yCiAgICAgICAgIHJldHVybiAwOwogICAgIH0KIAotICAgIHJldHVybiBjcmVhdGVTZWxl
Y3Rvck5vZGVMaXN0KHRoaXMsIHF1ZXJ5U2VsZWN0b3JMaXN0KTsKKyAgICBTZWxlY3RvclF1ZXJ5
IHNlbGVjdG9yUXVlcnkodGhpcywgcXVlcnlTZWxlY3Rvckxpc3QpOworICAgIHJldHVybiBzZWxl
Y3RvclF1ZXJ5LnF1ZXJ5QWxsKCk7CiB9CiAKIERvY3VtZW50ICpOb2RlOjpvd25lckRvY3VtZW50
KCkgY29uc3QKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9TZWxlY3Rvck5vZGVMaXN0LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vU2VsZWN0b3JOb2RlTGlzdC5jcHAJKHJl
dmlzaW9uIDk0MDY3KQorKysgU291cmNlL1dlYkNvcmUvZG9tL1NlbGVjdG9yTm9kZUxpc3QuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDc0ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MDcsIDIwMDggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICoKLSAqIDEuICBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KLSAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgotICogMy4gIE5laXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUgQ29tcHV0ZXIsIEluYy4gKCJBcHBs
ZSIpIG5vciB0aGUgbmFtZXMgb2YKLSAqICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2Vk
IHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCi0gKiAgICAgZnJvbSB0aGlz
IHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICoK
LSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRP
UlMgIkFTIElTIiBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0gKiBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJF
Ci0gKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZCi0gKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUwotICogKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOwotICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECi0gKiBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAot
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GCi0gKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcu
aCIKLSNpbmNsdWRlICJTZWxlY3Rvck5vZGVMaXN0LmgiCi0KLSNpbmNsdWRlICJDU1NTZWxlY3Rv
ci5oIgotI2luY2x1ZGUgIkNTU1NlbGVjdG9yTGlzdC5oIgotI2luY2x1ZGUgIkNTU1N0eWxlU2Vs
ZWN0b3IuaCIKLSNpbmNsdWRlICJEb2N1bWVudC5oIgotI2luY2x1ZGUgIkVsZW1lbnQuaCIKLSNp
bmNsdWRlICJIVE1MTmFtZXMuaCIKLSNpbmNsdWRlICJTdGF0aWNOb2RlTGlzdC5oIgotCi1uYW1l
c3BhY2UgV2ViQ29yZSB7Ci0KLXVzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7Ci0KLVBhc3NSZWZQ
dHI8U3RhdGljTm9kZUxpc3Q+IGNyZWF0ZVNlbGVjdG9yTm9kZUxpc3QoTm9kZSogcm9vdE5vZGUs
IGNvbnN0IENTU1NlbGVjdG9yTGlzdCYgcXVlcnlTZWxlY3Rvckxpc3QpCi17Ci0gICAgVmVjdG9y
PFJlZlB0cjxOb2RlPiA+IG5vZGVzOwotICAgIERvY3VtZW50KiBkb2N1bWVudCA9IHJvb3ROb2Rl
LT5kb2N1bWVudCgpOwotICAgIENTU1NlbGVjdG9yKiBvbmx5U2VsZWN0b3IgPSBxdWVyeVNlbGVj
dG9yTGlzdC5oYXNPbmVTZWxlY3RvcigpID8gcXVlcnlTZWxlY3Rvckxpc3QuZmlyc3QoKSA6IDA7
Ci0gICAgYm9vbCBzdHJpY3RQYXJzaW5nID0gIWRvY3VtZW50LT5pblF1aXJrc01vZGUoKTsKLQot
ICAgIENTU1N0eWxlU2VsZWN0b3I6OlNlbGVjdG9yQ2hlY2tlciBzZWxlY3RvckNoZWNrZXIoZG9j
dW1lbnQsIHN0cmljdFBhcnNpbmcpOwotCi0gICAgaWYgKHN0cmljdFBhcnNpbmcgJiYgcm9vdE5v
ZGUtPmluRG9jdW1lbnQoKSAmJiBvbmx5U2VsZWN0b3IgJiYgb25seVNlbGVjdG9yLT5tX21hdGNo
ID09IENTU1NlbGVjdG9yOjpJZCAmJiAhZG9jdW1lbnQtPmNvbnRhaW5zTXVsdGlwbGVFbGVtZW50
c1dpdGhJZChvbmx5U2VsZWN0b3ItPnZhbHVlKCkpKSB7Ci0gICAgICAgIEVsZW1lbnQqIGVsZW1l
bnQgPSBkb2N1bWVudC0+Z2V0RWxlbWVudEJ5SWQob25seVNlbGVjdG9yLT52YWx1ZSgpKTsKLSAg
ICAgICAgaWYgKGVsZW1lbnQgJiYgKHJvb3ROb2RlLT5pc0RvY3VtZW50Tm9kZSgpIHx8IGVsZW1l
bnQtPmlzRGVzY2VuZGFudE9mKHJvb3ROb2RlKSkgJiYgc2VsZWN0b3JDaGVja2VyLmNoZWNrU2Vs
ZWN0b3Iob25seVNlbGVjdG9yLCBlbGVtZW50KSkKLSAgICAgICAgICAgIG5vZGVzLmFwcGVuZChl
bGVtZW50KTsKLSAgICB9IGVsc2UgewotICAgICAgICBmb3IgKE5vZGUqIG4gPSByb290Tm9kZS0+
Zmlyc3RDaGlsZCgpOyBuOyBuID0gbi0+dHJhdmVyc2VOZXh0Tm9kZShyb290Tm9kZSkpIHsKLSAg
ICAgICAgICAgIGlmIChuLT5pc0VsZW1lbnROb2RlKCkpIHsKLSAgICAgICAgICAgICAgICBFbGVt
ZW50KiBlbGVtZW50ID0gc3RhdGljX2Nhc3Q8RWxlbWVudCo+KG4pOwotICAgICAgICAgICAgICAg
IGZvciAoQ1NTU2VsZWN0b3IqIHNlbGVjdG9yID0gcXVlcnlTZWxlY3Rvckxpc3QuZmlyc3QoKTsg
c2VsZWN0b3I7IHNlbGVjdG9yID0gQ1NTU2VsZWN0b3JMaXN0OjpuZXh0KHNlbGVjdG9yKSkgewot
ICAgICAgICAgICAgICAgICAgICBpZiAoc2VsZWN0b3JDaGVja2VyLmNoZWNrU2VsZWN0b3Ioc2Vs
ZWN0b3IsIGVsZW1lbnQpKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBub2Rlcy5hcHBlbmQo
bik7Ci0gICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAg
fQotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgIH0KLSAg
ICAKLSAgICByZXR1cm4gU3RhdGljTm9kZUxpc3Q6OmFkb3B0KG5vZGVzKTsKLX0KLQotfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL1NlbGVjdG9yTm9kZUxp
c3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vU2VsZWN0b3JOb2RlTGlzdC5o
CShyZXZpc2lvbiA5NDA2NykKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9TZWxlY3Rvck5vZGVMaXN0
LmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNDQgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykg
MjAwNywgMjAwOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKgotICogMS4gIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgotICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCi0gKiAzLiAgTmVpdGhlciB0aGUgbmFtZSBvZiBBcHBsZSBDb21wdXRlciwgSW5jLiAoIkFw
cGxlIikgbm9yIHRoZSBuYW1lcyBvZgotICogICAgIGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVz
ZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKLSAqICAgICBmcm9tIHRo
aXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0g
KgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJV
VE9SUyAiQVMgSVMiIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKLSAqIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBB
UkUKLSAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKLSAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCi0gKiAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7Ci0gKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKLSAqIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
Ci0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YKLSAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lmbmRlZiBTZWxlY3Rv
ck5vZGVMaXN0X2gKLSNkZWZpbmUgU2VsZWN0b3JOb2RlTGlzdF9oCi0KLSNpbmNsdWRlIDx3dGYv
UGFzc1JlZlB0ci5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLSAgICBjbGFzcyBDU1NTZWxl
Y3Rvckxpc3Q7Ci0gICAgY2xhc3MgTm9kZTsKLSAgICBjbGFzcyBTdGF0aWNOb2RlTGlzdDsKLQot
ICAgIFBhc3NSZWZQdHI8U3RhdGljTm9kZUxpc3Q+IGNyZWF0ZVNlbGVjdG9yTm9kZUxpc3QoTm9k
ZSogcm9vdE5vZGUsIGNvbnN0IENTU1NlbGVjdG9yTGlzdCYpOwotCi19IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCi0KLSNlbmRpZiAvLyBTZWxlY3Rvck5vZGVMaXN0X2gKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2RvbS9TZWxlY3RvclF1ZXJ5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9k
b20vU2VsZWN0b3JRdWVyeS5jcHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViQ29yZS9kb20v
U2VsZWN0b3JRdWVyeS5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTI2IEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFO
RCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAor
ICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
T1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
aW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiU2VsZWN0b3JRdWVyeS5oIgorCisjaW5jbHVk
ZSAiQ1NTU2VsZWN0b3JMaXN0LmgiCisjaW5jbHVkZSAiRG9jdW1lbnQuaCIKKyNpbmNsdWRlICJT
dGF0aWNOb2RlTGlzdC5oIgorI2luY2x1ZGUgIlN0eWxlZEVsZW1lbnQuaCIKKworbmFtZXNwYWNl
IFdlYkNvcmUgeworCitTZWxlY3RvclF1ZXJ5OjpTZWxlY3RvclF1ZXJ5KE5vZGUqIHJvb3ROb2Rl
LCBjb25zdCBDU1NTZWxlY3Rvckxpc3QmIHNlbGVjdG9yTGlzdCkKKyAgICA6IG1fcm9vdE5vZGUo
cm9vdE5vZGUpCisgICAgLCBtX3NlbGVjdG9yQ2hlY2tlcihyb290Tm9kZS0+ZG9jdW1lbnQoKSwg
IXJvb3ROb2RlLT5kb2N1bWVudCgpLT5pblF1aXJrc01vZGUoKSkKK3sKKyAgICBmb3IgKENTU1Nl
bGVjdG9yKiBzZWxlY3RvciA9IHNlbGVjdG9yTGlzdC5maXJzdCgpOyBzZWxlY3Rvcjsgc2VsZWN0
b3IgPSBDU1NTZWxlY3Rvckxpc3Q6Om5leHQoc2VsZWN0b3IpKSB7CisgICAgICAgIFNlbGVjdG9y
RGF0YSBkYXRhID0geyAKKyAgICAgICAgICAgIC5zZWxlY3RvciA9IHNlbGVjdG9yLCAKKyAgICAg
ICAgICAgIC5pc0Zhc3RDaGVja2FibGUgPSBDU1NTdHlsZVNlbGVjdG9yOjpTZWxlY3RvckNoZWNr
ZXI6OmlzRmFzdENoZWNrYWJsZVNlbGVjdG9yKHNlbGVjdG9yKSwKKyAgICAgICAgfTsKKyAgICAg
ICAgbV9zZWxlY3RvcnMuYXBwZW5kKGRhdGEpOworICAgIH0KK30KKyAgICAKK1Bhc3NSZWZQdHI8
Tm9kZUxpc3Q+IFNlbGVjdG9yUXVlcnk6OnF1ZXJ5QWxsKCkgY29uc3QKK3sKKyAgICBWZWN0b3I8
UmVmUHRyPE5vZGU+ID4gcmVzdWx0OworICAgIGV4ZWN1dGU8ZmFsc2U+KHJlc3VsdCk7CisgICAg
cmV0dXJuIFN0YXRpY05vZGVMaXN0OjphZG9wdChyZXN1bHQpOworfQorCitQYXNzUmVmUHRyPEVs
ZW1lbnQ+IFNlbGVjdG9yUXVlcnk6OnF1ZXJ5Rmlyc3QoKSBjb25zdCAKK3sgCisgICAgVmVjdG9y
PFJlZlB0cjxOb2RlPiA+IHJlc3VsdDsKKyAgICBleGVjdXRlPHRydWU+KHJlc3VsdCk7CisgICAg
aWYgKHJlc3VsdC5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybiAwOworICAgIEFTU0VSVChyZXN1
bHQuc2l6ZSgpID09IDEpOworICAgIEFTU0VSVChyZXN1bHQuZmlyc3QoKS0+aXNFbGVtZW50Tm9k
ZSgpKTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8RWxlbWVudCo+KHJlc3VsdC5maXJzdCgpLmdl
dCgpKTsKK30KKworYm9vbCBTZWxlY3RvclF1ZXJ5OjpjYW5Vc2VJZExvb2t1cCgpIGNvbnN0Cit7
CisgICAgLy8gV2UgbmVlZCB0byByZXR1cm4gdGhlIG1hdGNoZXMgaW4gZG9jdW1lbnQgb3JkZXIu
IFRvIHVzZSBpZCBsb29rdXAgd2hpbGUgdGhlcmUgaXMgcG9zc2libGl0eSBvZiBtdWx0aXBsZSBt
YXRjaGVzCisgICAgLy8gd2Ugd291bGQgbmVlZCB0byBzb3J0IHRoZSByZXN1bHRzLiBGb3Igbm93
LCBqdXN0IHRyYXZlcnNlIHRoZSBkb2N1bWVudCBpbiB0aGF0IGNhc2UuCisgICAgaWYgKG1fc2Vs
ZWN0b3JzLnNpemUoKSAhPSAxKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKG1fc2Vs
ZWN0b3JzWzBdLnNlbGVjdG9yLT5tX21hdGNoICE9IENTU1NlbGVjdG9yOjpJZCkKKyAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgIGlmICghbV9yb290Tm9kZS0+aW5Eb2N1bWVudCgpKQorICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgaWYgKG1fcm9vdE5vZGUtPmRvY3VtZW50KCktPmluUXVpcmtz
TW9kZSgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKG1fcm9vdE5vZGUtPmRvY3Vt
ZW50KCktPmNvbnRhaW5zTXVsdGlwbGVFbGVtZW50c1dpdGhJZChtX3NlbGVjdG9yc1swXS5zZWxl
Y3Rvci0+dmFsdWUoKSkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICByZXR1cm4gdHJ1ZTsK
K30KKwordGVtcGxhdGUgPGJvb2wgZmlyc3RNYXRjaE9ubHk+Cit2b2lkIFNlbGVjdG9yUXVlcnk6
OmV4ZWN1dGUoVmVjdG9yPFJlZlB0cjxOb2RlPiA+JiBtYXRjaGVkRWxlbWVudHMpIGNvbnN0Cit7
CisgICAgaWYgKGNhblVzZUlkTG9va3VwKCkpIHsKKyAgICAgICAgQVNTRVJUKG1fc2VsZWN0b3Jz
LnNpemUoKSA9PSAxKTsKKyAgICAgICAgQ1NTU2VsZWN0b3IqIHNlbGVjdG9yID0gbV9zZWxlY3Rv
cnNbMF0uc2VsZWN0b3I7CisgICAgICAgIEVsZW1lbnQqIGVsZW1lbnQgPSBtX3Jvb3ROb2RlLT5k
b2N1bWVudCgpLT5nZXRFbGVtZW50QnlJZChzZWxlY3Rvci0+dmFsdWUoKSk7CisgICAgICAgIGlm
ICghZWxlbWVudCB8fCAhKG1fcm9vdE5vZGUtPmlzRG9jdW1lbnROb2RlKCkgfHwgZWxlbWVudC0+
aXNEZXNjZW5kYW50T2YobV9yb290Tm9kZSkpKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAg
ICBpZiAobV9zZWxlY3RvckNoZWNrZXIuY2hlY2tTZWxlY3RvcihzZWxlY3RvciwgZWxlbWVudCwg
bV9zZWxlY3RvcnNbMF0uaXNGYXN0Q2hlY2thYmxlKSkKKyAgICAgICAgICAgIG1hdGNoZWRFbGVt
ZW50cy5hcHBlbmQoZWxlbWVudCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgCisgICAg
dW5zaWduZWQgc2VsZWN0b3JDb3VudCA9IG1fc2VsZWN0b3JzLnNpemUoKTsKKyAgICAKKyAgICBO
b2RlKiBuID0gbV9yb290Tm9kZS0+Zmlyc3RDaGlsZCgpOworICAgIHdoaWxlIChuKSB7CisgICAg
ICAgIGlmIChuLT5pc0VsZW1lbnROb2RlKCkpIHsKKyAgICAgICAgICAgIEVsZW1lbnQqIGVsZW1l
bnQgPSBzdGF0aWNfY2FzdDxFbGVtZW50Kj4obik7CisgICAgICAgICAgICBmb3IgKHVuc2lnbmVk
IGkgPSAwOyBpIDwgc2VsZWN0b3JDb3VudDsgKytpKSB7CisgICAgICAgICAgICAgICAgaWYgKG1f
c2VsZWN0b3JDaGVja2VyLmNoZWNrU2VsZWN0b3IobV9zZWxlY3RvcnNbaV0uc2VsZWN0b3IsIGVs
ZW1lbnQsIG1fc2VsZWN0b3JzW2ldLmlzRmFzdENoZWNrYWJsZSkpIHsKKyAgICAgICAgICAgICAg
ICAgICAgbWF0Y2hlZEVsZW1lbnRzLmFwcGVuZChlbGVtZW50KTsKKyAgICAgICAgICAgICAgICAg
ICAgaWYgKGZpcnN0TWF0Y2hPbmx5KQorICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwor
ICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAg
ICB9CisgICAgICAgICAgICBpZiAoZWxlbWVudC0+Zmlyc3RDaGlsZCgpKSB7CisgICAgICAgICAg
ICAgICAgbiA9IGVsZW1lbnQtPmZpcnN0Q2hpbGQoKTsKKyAgICAgICAgICAgICAgICBjb250aW51
ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICB3aGlsZSAoIW4tPm5leHRTaWJs
aW5nKCkpIHsKKyAgICAgICAgICAgIG4gPSBuLT5wYXJlbnROb2RlKCk7CisgICAgICAgICAgICBp
ZiAobiA9PSBtX3Jvb3ROb2RlKQorICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQor
ICAgICAgICBuID0gbi0+bmV4dFNpYmxpbmcoKTsKKyAgICB9Cit9CisKK30KSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2RvbS9TZWxlY3RvclF1ZXJ5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvZG9tL1NlbGVjdG9yUXVlcnkuaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJDb3JlL2Rv
bS9TZWxlY3RvclF1ZXJ5LmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNjQgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5E
IElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisg
KiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBP
UiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNp
Zm5kZWYgU2VsZWN0b3JRdWVyeV9oCisjZGVmaW5lIFNlbGVjdG9yUXVlcnlfaAorCisjaW5jbHVk
ZSAiQ1NTU3R5bGVTZWxlY3Rvci5oIgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKworbmFtZXNw
YWNlIFdlYkNvcmUgeworICAgIAorY2xhc3MgTm9kZTsKK2NsYXNzIE5vZGVMaXN0OworY2xhc3Mg
RWxlbWVudDsKK2NsYXNzIENTU1NlbGVjdG9yOworY2xhc3MgQ1NTU2VsZWN0b3JMaXN0OworCitj
bGFzcyBTZWxlY3RvclF1ZXJ5IHsKK3B1YmxpYzoKKyAgICBTZWxlY3RvclF1ZXJ5KE5vZGUqIHJv
b3ROb2RlLCBjb25zdCBDU1NTZWxlY3Rvckxpc3QmKTsKKyAgICAKKyAgICBQYXNzUmVmUHRyPE5v
ZGVMaXN0PiBxdWVyeUFsbCgpIGNvbnN0OworICAgIFBhc3NSZWZQdHI8RWxlbWVudD4gcXVlcnlG
aXJzdCgpIGNvbnN0OworCitwcml2YXRlOgorICAgIGJvb2wgY2FuVXNlSWRMb29rdXAoKSBjb25z
dDsKKworICAgIHRlbXBsYXRlIDxib29sIGZpcnN0TWF0Y2hPbmx5PgorICAgIHZvaWQgZXhlY3V0
ZShWZWN0b3I8UmVmUHRyPE5vZGU+ID4mKSBjb25zdDsKKyAgICAKKyAgICBzdHJ1Y3QgU2VsZWN0
b3JEYXRhIHsKKyAgICAgICAgQ1NTU2VsZWN0b3IqIHNlbGVjdG9yOworICAgICAgICBib29sIGlz
RmFzdENoZWNrYWJsZTsKKyAgICB9OworICAgIE5vZGUqIG1fcm9vdE5vZGU7CisgICAgVmVjdG9y
PFNlbGVjdG9yRGF0YT4gbV9zZWxlY3RvcnM7CisgICAgQ1NTU3R5bGVTZWxlY3Rvcjo6U2VsZWN0
b3JDaGVja2VyIG1fc2VsZWN0b3JDaGVja2VyOworfTsKKworfQorCisjZW5kaWYK
</data>
<flag name="commit-queue"
          id="101832"
          type_id="3"
          status="-"
          setter="webkit.review.bot"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>105626</attachid>
            <date>2011-08-30 07:41:35 -0700</date>
            <delta_ts>2011-08-30 08:15:37 -0700</delta_ts>
            <desc>build fix</desc>
            <filename>queryselector-fastcheck-9.patch</filename>
            <type>text/plain</type>
            <size>35695</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDk0MDY3KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNTMgQEAKKzIwMTEtMDgtMzAgIEFudHRpIEtv
aXZpc3RvICA8YW50dGlAYXBwbGUuY29tPgorCisgICAgICAgIHF1ZXJ5U2VsZWN0b3IvcXVlcnlT
ZWxlY3RvckFsbCBzaG91bGQgdXNlIHNlbGVjdG9yIGNoZWNrZXIgZmFzdCBwYXRoIAorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjcxNjEKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBEZXNjZW5kYW50IGFuZCBj
aGlsZCBzZWxlY3RvcnMgY2FuIGJlIG1hdGNoZXMgc3Vic3RhbnRpYWxseSBmYXN0ZXIgdXNpbmcK
KyAgICAgICAgU2VsZWN0b3JDaGVja2VyOjpmYXN0Q2hlY2tTZWxlY3RvcigpIHBhdGguIEN1cnJl
bnRseSBpdCBpcyB1c2VkIGZvciBzdHlsZSBtYXRjaGluZyBvbmx5LiAgCisgICAgICAgIAorICAg
ICAgICBBZGQgU2VsZWN0b3JRdWVyeSBjbGFzcyB0aGF0IGNhbiBkbyBib3RoIHF1ZXJ5U2VsZWN0
b3IgYW5kIHF1ZXJ5U2VsZWN0b3JBbGwgZWZmaWNpZW50bHkgdXNpbmcKKyAgICAgICAgZmFzdCBw
YXRoLiBVc2UgaW5saW5lZCBsb29wIGZvciBET00gdHJhdmVyc2FsLgorICAgICAgICAKKyAgICAg
ICAgVGhlIHBhdGNoIGlzIH4yNSUgc3BlZWR1cCBpbiB0aGUgb3ZlcmFsbCBuYXRpdmUgc2NvcmUg
b2YgaHR0cDovL3d3dy53ZWJraXQub3JnL3BlcmYvc2xpY2tzcGVlZC8uCisgICAgICAgIFNvbWUg
aW5kaXZpZHVhbCBzdWJ0ZXN0cyAodXNpbmcgY2hpbGQgb3IgZGVzY2VuZGFudCBzZWxlY3RvcnMp
IGV4ZWN1dGUgdHdpY2UgYXMgZmFzdC4KKworICAgICAgICAqIEdOVW1ha2VmaWxlLmxpc3QuYW06
CisgICAgICAgICogV2ViQ29yZS5neXBpOgorICAgICAgICAqIFdlYkNvcmUucHJvOgorICAgICAg
ICAqIFdlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qOgorICAgICAgICAqIFdlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBjc3MvQ1NTU3R5bGVTZWxlY3Rvci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NTdHlsZVNlbGVjdG9yOjpTZWxlY3RvckNoZWNrZXI6
OmNoZWNrU2VsZWN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTU3R5bGVTZWxlY3Rvcjo6U2Vs
ZWN0b3JDaGVja2VyOjppc0Zhc3RDaGVja2FibGVTZWxlY3Rvcik6CisgICAgICAgIChXZWJDb3Jl
OjpSdWxlRGF0YTo6UnVsZURhdGEpOgorICAgICAgICAqIGNzcy9DU1NTdHlsZVNlbGVjdG9yLmg6
CisgICAgICAgIAorICAgICAgICAgICAgTWFrZSBmYXN0IHBhdGggY2hlY2tpbmcgYXZhaWxhYmxl
IG91dHNpZGUgQ1NTU3R5bGVTZWxlY3Rvci4KKyAgICAgICAgICAgIAorICAgICAgICAqIGRvbS9O
b2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6OnF1ZXJ5U2VsZWN0b3IpOgorICAgICAg
ICAoV2ViQ29yZTo6Tm9kZTo6cXVlcnlTZWxlY3RvckFsbCk6CisgICAgICAgIAorICAgICAgICAg
ICAgU3dpdGNoIHRvIFNlbGVjdG9yUXVlcnkuCisgICAgICAgIAorICAgICAgICAqIGRvbS9TZWxl
Y3Rvck5vZGVMaXN0LmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBkb20vU2VsZWN0b3JOb2RlTGlz
dC5oOiBSZW1vdmVkLgorICAgICAgICAKKyAgICAgICAgICAgIFNlbGVjdG9yUXVlcnkgbWFrZXMg
dGhlc2Ugb2Jvc29sZXRlLgorCisgICAgICAgICogZG9tL1NlbGVjdG9yUXVlcnkuY3BwOiBBZGRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OlNlbGVjdG9yUXVlcnk6OlNlbGVjdG9yUXVlcnkpOgorICAg
ICAgICAoV2ViQ29yZTo6U2VsZWN0b3JRdWVyeTo6cXVlcnlBbGwpOgorICAgICAgICAoV2ViQ29y
ZTo6U2VsZWN0b3JRdWVyeTo6cXVlcnlGaXJzdCk6CisgICAgICAgIChXZWJDb3JlOjpTZWxlY3Rv
clF1ZXJ5OjpjYW5Vc2VJZExvb2t1cCk6CisgICAgICAgIChXZWJDb3JlOjpTZWxlY3RvclF1ZXJ5
OjpleGVjdXRlKToKKyAgICAgICAgKiBkb20vU2VsZWN0b3JRdWVyeS5oOiBBZGRlZC4KKyAgICAg
ICAgCisgICAgICAgICAgICBDbGFzcyBmb3Igc2VsZWN0b3IgbWF0Y2hpbmcgaW4gdHJlZS4KKyAg
ICAKIDIwMTEtMDgtMjkgIFl1cnkgU2VtaWtoYXRza3kgIDx5dXJ5c0BjaHJvbWl1bS5vcmc+CiAK
ICAgICAgICAgV2ViIEluc3BlY3Rvcjogd3Jvbmcgc2NyaXB0IGRpc3BsYXkgbmFtZSB3aGVuIHRo
ZXJlIGlzIGEgc2xhc2ggaW4gaXRzIFVSTCBxdWVyeSBwYXJhbWV0ZXJzCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L0dOVW1ha2VmaWxlLmxpc3QuYW0JKHJldmlzaW9uIDk0MDY3KQorKysgU291cmNlL1dlYkNvcmUv
R05VbWFrZWZpbGUubGlzdC5hbQkod29ya2luZyBjb3B5KQpAQCAtMTI4NCw4ICsxMjg0LDggQEAg
d2ViY29yZV9zb3VyY2VzICs9IFwKIAlTb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0UnVubmVyLmgg
XAogCVNvdXJjZS9XZWJDb3JlL2RvbS9TZWxlY3RFbGVtZW50LmNwcCBcCiAJU291cmNlL1dlYkNv
cmUvZG9tL1NlbGVjdEVsZW1lbnQuaCBcCi0JU291cmNlL1dlYkNvcmUvZG9tL1NlbGVjdG9yTm9k
ZUxpc3QuY3BwIFwKLQlTb3VyY2UvV2ViQ29yZS9kb20vU2VsZWN0b3JOb2RlTGlzdC5oIFwKKwlT
b3VyY2UvV2ViQ29yZS9kb20vU2VsZWN0b3JRdWVyeS5jcHAgXAorCVNvdXJjZS9XZWJDb3JlL2Rv
bS9TZWxlY3RvclF1ZXJ5LmggXAogCVNvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dDb250ZW50RWxl
bWVudC5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dDb250ZW50RWxlbWVudC5oIFwK
IAlTb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93SW5jbHVzaW9uU2VsZWN0b3IuY3BwIFwKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLmd5cGkJKHJldmlzaW9uIDk0MDY3KQorKysgU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS5neXBpCSh3b3JraW5nIGNvcHkpCkBAIC01MzU0LDggKzUzNTQsOCBAQAogICAgICAgICAgICAg
J2RvbS9TY3JpcHRlZEFuaW1hdGlvbkNvbnRyb2xsZXIuaCcsCiAgICAgICAgICAgICAnZG9tL1Nl
bGVjdEVsZW1lbnQuY3BwJywKICAgICAgICAgICAgICdkb20vU2VsZWN0RWxlbWVudC5oJywKLSAg
ICAgICAgICAgICdkb20vU2VsZWN0b3JOb2RlTGlzdC5jcHAnLAotICAgICAgICAgICAgJ2RvbS9T
ZWxlY3Rvck5vZGVMaXN0LmgnLAorICAgICAgICAgICAgJ2RvbS9TZWxlY3RvclF1ZXJ5LmNwcCcs
CisgICAgICAgICAgICAnZG9tL1NlbGVjdG9yUXVlcnkuaCcsCiAgICAgICAgICAgICAnZG9tL1No
YWRvd0NvbnRlbnRFbGVtZW50LmNwcCcsCiAgICAgICAgICAgICAnZG9tL1NoYWRvd0NvbnRlbnRF
bGVtZW50LmgnLAogICAgICAgICAgICAgJ2RvbS9TaGFkb3dJbmNsdXNpb25TZWxlY3Rvci5jcHAn
LApJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS5wcm8KPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvV2ViQ29yZS5wcm8JKHJldmlzaW9uIDk0MDY3KQorKysgU291cmNlL1dlYkNvcmUv
V2ViQ29yZS5wcm8JKHdvcmtpbmcgY29weSkKQEAgLTU0Miw3ICs1NDIsNyBAQCBTT1VSQ0VTICs9
IFwKICAgICBkb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5jcHAgXAogICAgIGRvbS9TY3JpcHRS
dW5uZXIuY3BwIFwKICAgICBkb20vU2VsZWN0RWxlbWVudC5jcHAgXAotICAgIGRvbS9TZWxlY3Rv
ck5vZGVMaXN0LmNwcCBcCisgICAgZG9tL1NlbGVjdG9yUXVlcnkuY3BwIFwKICAgICBkb20vU2hh
ZG93Q29udGVudEVsZW1lbnQuY3BwIFwKICAgICBkb20vU2hhZG93SW5jbHVzaW9uU2VsZWN0b3Iu
Y3BwIFwKICAgICBkb20vU2hhZG93Um9vdC5jcHAgXApAQCAtMTUzNiw3ICsxNTM2LDcgQEAgSEVB
REVSUyArPSBcCiAgICAgZG9tL1NjcmlwdEVsZW1lbnQuaCBcCiAgICAgZG9tL1NjcmlwdEV4ZWN1
dGlvbkNvbnRleHQuaCBcCiAgICAgZG9tL1NlbGVjdEVsZW1lbnQuaCBcCi0gICAgZG9tL1NlbGVj
dG9yTm9kZUxpc3QuaCBcCisgICAgZG9tL1NlbGVjdG9yUXVlcnkuaCBcCiAgICAgZG9tL1NoYWRv
d0NvbnRlbnRFbGVtZW50LmggXAogICAgIGRvbS9TaGFkb3dJbmNsdXNpb25TZWxlY3Rvci5oIFwK
ICAgICBkb20vU2hhZG93Um9vdC5oIFwKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNw
cm9qL1dlYkNvcmUudmNwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
dmNwcm9qL1dlYkNvcmUudmNwcm9qCShyZXZpc2lvbiA5NDA2NykKKysrIFNvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC00ODMzMCwx
MTUgKzQ4MzMwLDExIEBACiAJCQkJPgogCQkJPC9GaWxlPgogCQkJPEZpbGUKLQkJCQlSZWxhdGl2
ZVBhdGg9Ii4uXGRvbVxTZWxlY3Rvck5vZGVMaXN0LmNwcCIKLQkJCQk+Ci0JCQkJPEZpbGVDb25m
aWd1cmF0aW9uCi0JCQkJCU5hbWU9IkRlYnVnfFdpbjMyIgotCQkJCQlFeGNsdWRlZEZyb21CdWls
ZD0idHJ1ZSIKLQkJCQkJPgotCQkJCQk8VG9vbAotCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9v
bCIKLQkJCQkJLz4KLQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPgotCQkJCTxGaWxlQ29uZmlndXJh
dGlvbgotCQkJCQlOYW1lPSJSZWxlYXNlfFdpbjMyIgotCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0i
dHJ1ZSIKLQkJCQkJPgotCQkJCQk8VG9vbAotCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIK
LQkJCQkJLz4KLQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPgotCQkJCTxGaWxlQ29uZmlndXJhdGlv
bgotCQkJCQlOYW1lPSJEZWJ1Z19DYWlyb19DRkxpdGV8V2luMzIiCi0JCQkJCUV4Y2x1ZGVkRnJv
bUJ1aWxkPSJ0cnVlIgotCQkJCQk+Ci0JCQkJCTxUb29sCi0JCQkJCQlOYW1lPSJWQ0NMQ29tcGls
ZXJUb29sIgotCQkJCQkvPgotCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+Ci0JCQkJPEZpbGVDb25m
aWd1cmF0aW9uCi0JCQkJCU5hbWU9IlJlbGVhc2VfQ2Fpcm9fQ0ZMaXRlfFdpbjMyIgotCQkJCQlF
eGNsdWRlZEZyb21CdWlsZD0idHJ1ZSIKLQkJCQkJPgotCQkJCQk8VG9vbAotCQkJCQkJTmFtZT0i
VkNDTENvbXBpbGVyVG9vbCIKLQkJCQkJLz4KLQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPgotCQkJ
CTxGaWxlQ29uZmlndXJhdGlvbgotCQkJCQlOYW1lPSJEZWJ1Z19BbGx8V2luMzIiCi0JCQkJCUV4
Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIgotCQkJCQk+Ci0JCQkJCTxUb29sCi0JCQkJCQlOYW1lPSJW
Q0NMQ29tcGlsZXJUb29sIgotCQkJCQkvPgotCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+Ci0JCQkJ
PEZpbGVDb25maWd1cmF0aW9uCi0JCQkJCU5hbWU9IlByb2R1Y3Rpb258V2luMzIiCi0JCQkJCUV4
Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIgotCQkJCQk+Ci0JCQkJCTxUb29sCi0JCQkJCQlOYW1lPSJW
Q0NMQ29tcGlsZXJUb29sIgotCQkJCQkvPgotCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+Ci0JCQk8
L0ZpbGU+Ci0JCQk8RmlsZQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cZG9tXFNlbGVjdG9yTm9kZUxp
c3QuY3BwIgotCQkJCT4KLQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24KLQkJCQkJTmFtZT0iRGVidWd8
V2luMzIiCi0JCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIgotCQkJCQk+Ci0JCQkJCTxUb29s
Ci0JCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgotCQkJCQkvPgotCQkJCTwvRmlsZUNvbmZp
Z3VyYXRpb24+Ci0JCQkJPEZpbGVDb25maWd1cmF0aW9uCi0JCQkJCU5hbWU9IlJlbGVhc2V8V2lu
MzIiCi0JCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIgotCQkJCQk+Ci0JCQkJCTxUb29sCi0J
CQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgotCQkJCQkvPgotCQkJCTwvRmlsZUNvbmZpZ3Vy
YXRpb24+Ci0JCQkJPEZpbGVDb25maWd1cmF0aW9uCi0JCQkJCU5hbWU9IkRlYnVnX0NhaXJvX0NG
TGl0ZXxXaW4zMiIKLQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiCi0JCQkJCT4KLQkJCQkJ
PFRvb2wKLQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCi0JCQkJCS8+Ci0JCQkJPC9GaWxl
Q29uZmlndXJhdGlvbj4KLQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24KLQkJCQkJTmFtZT0iUmVsZWFz
ZV9DYWlyb19DRkxpdGV8V2luMzIiCi0JCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIgotCQkJ
CQk+Ci0JCQkJCTxUb29sCi0JCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgotCQkJCQkvPgot
CQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+Ci0JCQkJPEZpbGVDb25maWd1cmF0aW9uCi0JCQkJCU5h
bWU9IkRlYnVnX0FsbHxXaW4zMiIKLQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiCi0JCQkJ
CT4KLQkJCQkJPFRvb2wKLQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCi0JCQkJCS8+Ci0J
CQkJPC9GaWxlQ29uZmlndXJhdGlvbj4KLQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24KLQkJCQkJTmFt
ZT0iUHJvZHVjdGlvbnxXaW4zMiIKLQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiCi0JCQkJ
CT4KLQkJCQkJPFRvb2wKLQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCi0JCQkJCS8+Ci0J
CQkJPC9GaWxlQ29uZmlndXJhdGlvbj4KLQkJCTwvRmlsZT4KLQkJCTxGaWxlCi0JCQkJUmVsYXRp
dmVQYXRoPSIuLlxkb21cU2VsZWN0b3JOb2RlTGlzdC5oIgorCQkJCVJlbGF0aXZlUGF0aD0iLi5c
ZG9tXFNlbGVjdG9yUXVlcnkuaCIKIAkJCQk+CiAJCQk8L0ZpbGU+CiAJCQk8RmlsZQotCQkJCVJl
bGF0aXZlUGF0aD0iLi5cZG9tXFNlbGVjdG9yTm9kZUxpc3QuaCIKKwkJCQlSZWxhdGl2ZVBhdGg9
Ii4uXGRvbVxTZWxlY3RvclF1ZXJ5LmNwcCIKIAkJCQk+CiAJCQk8L0ZpbGU+CiAJCQk8RmlsZQpJ
bmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagkocmV2aXNpb24gOTQwNjcpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTUwOTgsOCArNTA5OCw2IEBACiAJ
CUJDN0ZBNjIxMEQxRjBDQkQwMERCMjJBOSAvKiBEeW5hbWljTm9kZUxpc3QuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDN0ZBNjFGMEQxRjBDQkQwMERC
MjJBOSAvKiBEeW5hbWljTm9kZUxpc3QuaCAqLzsgfTsKIAkJQkM3RkE2MkQwRDFGMEVGRjAwREIy
MkE5IC8qIFN0YXRpY05vZGVMaXN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBCQzdGQTYyQjBEMUYwRUZGMDBEQjIyQTkgLyogU3RhdGljTm9kZUxpc3Qu
aCAqLzsgfTsKIAkJQkM3RkE2MkUwRDFGMEVGRjAwREIyMkE5IC8qIFN0YXRpY05vZGVMaXN0LmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDN0ZBNjJD
MEQxRjBFRkYwMERCMjJBOSAvKiBTdGF0aWNOb2RlTGlzdC5jcHAgKi87IH07Ci0JCUJDN0ZBNjgx
MEQxRjE2NzkwMERCMjJBOSAvKiBTZWxlY3Rvck5vZGVMaXN0LmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzdGQTY3RjBEMUYxNjc5MDBEQjIyQTkgLyog
U2VsZWN0b3JOb2RlTGlzdC5oICovOyB9OwotCQlCQzdGQTY4MjBEMUYxNjc5MDBEQjIyQTkgLyog
U2VsZWN0b3JOb2RlTGlzdC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBCQzdGQTY4MDBEMUYxNjc5MDBEQjIyQTkgLyogU2VsZWN0b3JOb2RlTGlzdC5j
cHAgKi87IH07CiAJCUJDODBDOTg3MENEMjk0RUUwMEEwQjdCMyAvKiBDU1NUaW1pbmdGdW5jdGlv
blZhbHVlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEJDODBDOTg1MENEMjk0RUUwMEEwQjdCMyAvKiBDU1NUaW1pbmdGdW5jdGlvblZhbHVlLmNwcCAq
LzsgfTsKIAkJQkM4MEM5ODgwQ0QyOTRFRTAwQTBCN0IzIC8qIENTU1RpbWluZ0Z1bmN0aW9uVmFs
dWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDODBD
OTg2MENEMjk0RUUwMEEwQjdCMyAvKiBDU1NUaW1pbmdGdW5jdGlvblZhbHVlLmggKi87IH07CiAJ
CUJDODI0MzI5MEQwQ0U4QTIwMDQ2MEM4RiAvKiBKU1NRTEVycm9yLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzgyNDMyNTBEMENFOEEyMDA0NjBDOEYg
LyogSlNTUUxFcnJvci5oICovOyB9OwpAQCAtNTY1Miw2ICs1NjUwLDggQEAKIAkJRTQ0NjE0M0Mw
Q0Q2ODlDQzAwRkFEQTc1IC8qIEpTSFRNTFNvdXJjZUVsZW1lbnQuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEU0QjQyMzcyMENCRkI2RTAwMEFGMkVDRSAv
KiBKU0hUTUxTb3VyY2VFbGVtZW50LmggKi87IH07CiAJCUU0NDYxNDUxMENENjhBMzUwMEZBREE3
NSAvKiBSZW5kZXJWaWRlby5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBFNEI0MUUzMzBDQkZCNjA5MDBBRjJFQ0UgLyogUmVuZGVyVmlkZW8uY3BwICov
OyB9OwogCQlFNDQ2MTQ1MjBDRDY4QTM1MDBGQURBNzUgLyogUmVuZGVyVmlkZW8uaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEU0QjQxRTM0MENCRkI2MDkw
MEFGMkVDRSAvKiBSZW5kZXJWaWRlby5oICovOyB9OworCQlFNDUzMjJBQjE0MENFMjY3MDA1QTBG
OTIgLyogU2VsZWN0b3JRdWVyeS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBFNDUzMjJBOTE0MENFMjY3MDA1QTBGOTIgLyogU2VsZWN0b3JRdWVyeS5j
cHAgKi87IH07CisJCUU0NTMyMkFDMTQwQ0UyNjcwMDVBMEY5MiAvKiBTZWxlY3RvclF1ZXJ5Lmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFNDUzMjJBQTE0
MENFMjY3MDA1QTBGOTIgLyogU2VsZWN0b3JRdWVyeS5oICovOyB9OwogCQlFNDYyQTRBMTExM0U3
MUJFMDA0QTQyMjAgLyogSW50UG9pbnRIYXNoLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBFNDYyQTRBMDExM0U3MUJFMDA0QTQyMjAgLyogSW50UG9pbnRI
YXNoLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJ
RTQ3NzhCN0YxMTVBNTgxQTAwQjVEMzcyIC8qIEpTQ3VzdG9tRXZlbnQuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTQ3NzhCN0QxMTVBNTgxQTAwQjVE
MzcyIC8qIEpTQ3VzdG9tRXZlbnQuY3BwICovOyB9OwogCQlFNDc3OEI4MDExNUE1ODFBMDBCNUQz
NzIgLyogSlNDdXN0b21FdmVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gRTQ3NzhCN0UxMTVBNTgxQTAwQjVEMzcyIC8qIEpTQ3VzdG9tRXZlbnQuaCAq
LzsgfTsKQEAgLTExODE3LDggKzExODE3LDYgQEAKIAkJQkM3RkE2MUYwRDFGMENCRDAwREIyMkE5
IC8qIER5bmFtaWNOb2RlTGlzdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBE
eW5hbWljTm9kZUxpc3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkM3RkE2MkIw
RDFGMEVGRjAwREIyMkE5IC8qIFN0YXRpY05vZGVMaXN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFN0YXRpY05vZGVMaXN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUJDN0ZBNjJDMEQxRjBFRkYwMERCMjJBOSAvKiBTdGF0aWNOb2RlTGlzdC5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTdGF0aWNOb2RlTGlzdC5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUJDN0ZBNjdGMEQxRjE2NzkwMERCMjJBOSAvKiBTZWxl
Y3Rvck5vZGVMaXN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNlbGVjdG9y
Tm9kZUxpc3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQkM3RkE2ODAwRDFGMTY3
OTAwREIyMkE5IC8qIFNlbGVjdG9yTm9kZUxpc3QuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gU2VsZWN0b3JOb2RlTGlzdC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUJDODBDOTg1MENEMjk0RUUwMEEwQjdCMyAvKiBDU1NUaW1pbmdGdW5jdGlvblZh
bHVlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDU1NUaW1pbmdG
dW5jdGlvblZhbHVlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkM4MEM5ODYw
Q0QyOTRFRTAwQTBCN0IzIC8qIENTU1RpbWluZ0Z1bmN0aW9uVmFsdWUuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENTU1RpbWluZ0Z1bmN0aW9uVmFsdWUuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkM4MjQzMjUwRDBDRThBMjAwNDYwQzhGIC8qIEpTU1FMRXJy
b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNTUUxFcnJvci5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTI0MDUsNiArMTI0MDMsOCBAQAogCQlFNDQ2MTQx
MTBDRDY4MjY5MDBGQURBNzUgLyogSlNNZWRpYUVycm9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IEpTTWVkaWFFcnJvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlFNDQ2MTQxMjBDRDY4MjY5MDBGQURBNzUgLyogSlNUaW1lUmFuZ2VzLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTVGltZVJhbmdlcy5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUU0NDYxNDEzMENENjgyNjkwMEZBREE3NSAvKiBKU1RpbWVSYW5n
ZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNUaW1lUmFuZ2VzLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUU0NTMyMkE5MTQwQ0UyNjcwMDVBMEY5MiAvKiBT
ZWxlY3RvclF1ZXJ5LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNl
bGVjdG9yUXVlcnkuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFNDUzMjJBQTE0
MENFMjY3MDA1QTBGOTIgLyogU2VsZWN0b3JRdWVyeS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBTZWxlY3RvclF1ZXJ5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUU0NjJBNEEwMTEzRTcxQkUwMDRBNDIyMCAvKiBJbnRQb2ludEhhc2guaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gSW50UG9pbnRIYXNoLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUU0Nzc4QjdEMTE1QTU4MUEwMEI1RDM3MiAvKiBKU0N1c3RvbUV2ZW50LmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTQ3VzdG9tRXZlbnQuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFNDc3OEI3RTExNUE1ODFBMDBCNUQzNzIgLyog
SlNDdXN0b21FdmVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0N1c3Rv
bUV2ZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yMDA2Miw4ICsyMDA2Miw4
IEBACiAJCQkJOEE0MTNBREUxMjA3QkJBNTAwODIwMTZFIC8qIFNjcmlwdFJ1bm5lci5oICovLAog
CQkJCTA4NEFFQkUyMEZCNTA1RkEwMDM4NDgzRSAvKiBTZWxlY3RFbGVtZW50LmNwcCAqLywKIAkJ
CQkwODRBRUJFMzBGQjUwNUZBMDAzODQ4M0UgLyogU2VsZWN0RWxlbWVudC5oICovLAotCQkJCUJD
N0ZBNjgwMEQxRjE2NzkwMERCMjJBOSAvKiBTZWxlY3Rvck5vZGVMaXN0LmNwcCAqLywKLQkJCQlC
QzdGQTY3RjBEMUYxNjc5MDBEQjIyQTkgLyogU2VsZWN0b3JOb2RlTGlzdC5oICovLAorCQkJCUU0
NTMyMkE5MTQwQ0UyNjcwMDVBMEY5MiAvKiBTZWxlY3RvclF1ZXJ5LmNwcCAqLywKKwkJCQlFNDUz
MjJBQTE0MENFMjY3MDA1QTBGOTIgLyogU2VsZWN0b3JRdWVyeS5oICovLAogCQkJCUE3NjZDRjhC
MTM4MTBFMEMwMDExQTBCMyAvKiBTaGFkb3dDb250ZW50RWxlbWVudC5jcHAgKi8sCiAJCQkJQTc0
QzJEM0IxMzgxMUUwRDAwRjgzNTcyIC8qIFNoYWRvd0NvbnRlbnRFbGVtZW50LmggKi8sCiAJCQkJ
QTcxQzMwQjYxMzgxMjY1RTAwREJDMzUxIC8qIFNoYWRvd0luY2x1c2lvblNlbGVjdG9yLmNwcCAq
LywKQEAgLTIyODM5LDcgKzIyODM5LDYgQEAKIAkJCQkzNzFGNEZGQzBEMjVFN0YzMDBFQ0UwRDUg
LyogU2VnbWVudGVkRm9udERhdGEuaCBpbiBIZWFkZXJzICovLAogCQkJCUIyQzNEQTJGMEQwMDZD
MUQwMEVGNkYyNiAvKiBTZWdtZW50ZWRTdHJpbmcuaCBpbiBIZWFkZXJzICovLAogCQkJCTA4NEFF
QkU1MEZCNTA1RkEwMDM4NDgzRSAvKiBTZWxlY3RFbGVtZW50LmggaW4gSGVhZGVycyAqLywKLQkJ
CQlCQzdGQTY4MTBEMUYxNjc5MDBEQjIyQTkgLyogU2VsZWN0b3JOb2RlTGlzdC5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJQTc1RTQ5NzYxMDc1MkFDQjAwQzlCODk2IC8qIFNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTMzMDlFMTAwOTlFNjQ5MjAwNTZFNTgxIC8qIFNl
dE5vZGVBdHRyaWJ1dGVDb21tYW5kLmggaW4gSGVhZGVycyAqLywKIAkJCQlCOERCREI0QzEzMEIw
RjhBMDBGNUNEQjEgLyogU2V0U2VsZWN0aW9uQ29tbWFuZC5oIGluIEhlYWRlcnMgKi8sCkBAIC0y
MzQ0OCw2ICsyMzQ0Nyw3IEBACiAJCQkJOTM1MDBGMzIxM0ZERTNCRTAwOTlFQzI0IC8qIE5TU2Ny
b2xsZXJJbXBEZXRhaWxzLmggaW4gSGVhZGVycyAqLywKIAkJCQlEMEEzQTczMTE0MDVBMzk4MDBG
QjhFRDMgLyogUmVzb3VyY2VMb2FkZXJPcHRpb25zLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQ0U0
Mzg5NzE0MEIwMDUxMDA1RTQzN0UgLyogRXZlbnRDb25zdHJ1Y3RvcnMuaCBpbiBIZWFkZXJzICov
LAorCQkJCUU0NTMyMkFDMTQwQ0UyNjcwMDVBMEY5MiAvKiBTZWxlY3RvclF1ZXJ5LmggaW4gSGVh
ZGVycyAqLywKIAkJCQlCMTBCNjk4MDE0MEMxNzQwMDBCQzFDMjYgLyogV2ViVlRUVG9rZW4uaCBp
biBIZWFkZXJzICovLAogCQkJCUIxMEI2OTgyMTQwQzE3NDAwMEJDMUMyNiAvKiBXZWJWVFRUb2tl
bml6ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJKTsKQEAgLTI1NzgxLDcgKzI1NzgxLDYgQEAKIAkJ
CQkzNzFGNEZGRDBEMjVFN0YzMDBFQ0UwRDUgLyogU2VnbWVudGVkRm9udERhdGEuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJQjJDM0RBMkUwRDAwNkMxRDAwRUY2RjI2IC8qIFNlZ21lbnRlZFN0cmlu
Zy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwODRBRUJFNDBGQjUwNUZBMDAzODQ4M0UgLyogU2Vs
ZWN0RWxlbWVudC5jcHAgaW4gU291cmNlcyAqLywKLQkJCQlCQzdGQTY4MjBEMUYxNjc5MDBEQjIy
QTkgLyogU2VsZWN0b3JOb2RlTGlzdC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBNzVFNDk3NzEw
NzUyQUNCMDBDOUI4OTYgLyogU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTkzMzA5RTBGMDk5RTY0OTIwMDU2RTU4MSAvKiBTZXROb2RlQXR0cmlidXRlQ29tbWFu
ZC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCOERCREI0QjEzMEIwRjhBMDBGNUNEQjEgLyogU2V0
U2VsZWN0aW9uQ29tbWFuZC5jcHAgaW4gU291cmNlcyAqLywKQEAgLTI2MjU5LDYgKzI2MjU4LDcg
QEAKIAkJCQkxQTE0MTRCNTEzQTBGMDUwMDAxOTk5NkMgLyogV2ViS2l0Rm9udEZhbWlseU5hbWVz
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCURGOUFGRDczMTNGQzMxRDgwMDE1RkVCNyAvKiBNZWRp
YVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQkNF
NDM4OUExNDBCMDA3MzAwNUU0MzdFIC8qIEpTRXZlbnRDb25zdHJ1Y3RvcnMuY3BwIGluIFNvdXJj
ZXMgKi8sCisJCQkJRTQ1MzIyQUIxNDBDRTI2NzAwNUEwRjkyIC8qIFNlbGVjdG9yUXVlcnkuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJQjEwQjY5ODExNDBDMTc0MDAwQkMxQzI2IC8qIFdlYlZUVFRv
a2VuaXplci5jcHAgaW4gU291cmNlcyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVu
dFBvc3Rwcm9jZXNzaW5nID0gMDsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNl
bGVjdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVTZWxl
Y3Rvci5jcHAJKHJldmlzaW9uIDk0MDY3KQorKysgU291cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxl
U2VsZWN0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04NzUsOSArODc1LDIwIEBAIEVJbnNpZGVM
aW5rIENTU1N0eWxlU2VsZWN0b3I6OlNlbGVjdG9yQ2gKICNlbmRpZgogfQogCi1ib29sIENTU1N0
eWxlU2VsZWN0b3I6OlNlbGVjdG9yQ2hlY2tlcjo6Y2hlY2tTZWxlY3RvcihDU1NTZWxlY3Rvciog
c2VsLCBFbGVtZW50KiBlbGVtZW50KSBjb25zdAorYm9vbCBDU1NTdHlsZVNlbGVjdG9yOjpTZWxl
Y3RvckNoZWNrZXI6OmNoZWNrU2VsZWN0b3IoQ1NTU2VsZWN0b3IqIHNlbCwgRWxlbWVudCogZWxl
bWVudCwgYm9vbCBpc0Zhc3RDaGVja2FibGVTZWxlY3RvcikgY29uc3QKIHsKICAgICBQc2V1ZG9J
ZCBkeW5hbWljUHNldWRvID0gTk9QU0VVRE87CisgICAgaWYgKGlzRmFzdENoZWNrYWJsZVNlbGVj
dG9yICYmICFlbGVtZW50LT5pc1NWR0VsZW1lbnQoKSkgeworICAgICAgICAvLyBmYXN0Q2hlY2tT
ZWxlY3RvciBhc3N1bWVzIGNsYXNzIGFuZCBpZCBtYXRjaCBmb3IgdGhlIHRvcCBzZWxlY3Rvci4K
KyAgICAgICAgaWYgKHNlbC0+bV9tYXRjaCA9PSBDU1NTZWxlY3Rvcjo6Q2xhc3MpIHsKKyAgICAg
ICAgICAgIGlmICghKGVsZW1lbnQtPmhhc0NsYXNzKCkgJiYgc3RhdGljX2Nhc3Q8U3R5bGVkRWxl
bWVudCo+KGVsZW1lbnQpLT5jbGFzc05hbWVzKCkuY29udGFpbnMoc2VsLT52YWx1ZSgpKSkpCisg
ICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9IGVsc2UgaWYgKHNlbC0+bV9t
YXRjaCA9PSBDU1NTZWxlY3Rvcjo6SWQpIHsKKyAgICAgICAgICAgIGlmICghKGVsZW1lbnQtPmhh
c0lEKCkgJiYgZWxlbWVudC0+aWRGb3JTdHlsZVJlc29sdXRpb24oKSA9PSBzZWwtPnZhbHVlKCkp
KQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorICAgICAgICByZXR1
cm4gZmFzdENoZWNrU2VsZWN0b3Ioc2VsLCBlbGVtZW50KTsKKyAgICB9CiAgICAgcmV0dXJuIGNo
ZWNrU2VsZWN0b3Ioc2VsLCBlbGVtZW50LCBkeW5hbWljUHNldWRvLCBmYWxzZSwgZmFsc2UpID09
IFNlbGVjdG9yTWF0Y2hlczsKIH0KIApAQCAtMjAxMiwxNyArMjAyMyw2IEBAIGlubGluZSBib29s
IHNlbGVjdG9yVGFnTWF0Y2hlcyhjb25zdCBFbGUKICAgICBjb25zdCBBdG9taWNTdHJpbmcmIG5h
bWVzcGFjZVVSSSA9IHNlbGVjdG9yLT50YWcoKS5uYW1lc3BhY2VVUkkoKTsKICAgICByZXR1cm4g
bmFtZXNwYWNlVVJJID09IHN0YXJBdG9tIHx8IG5hbWVzcGFjZVVSSSA9PSBlbGVtZW50LT5uYW1l
c3BhY2VVUkkoKTsKIH0KLQotaW5saW5lIGJvb2wgaXNGYXN0Q2hlY2thYmxlU2VsZWN0b3IoY29u
c3QgQ1NTU2VsZWN0b3IqIHNlbGVjdG9yKQotewotICAgIGZvciAoOyBzZWxlY3Rvcjsgc2VsZWN0
b3IgPSBzZWxlY3Rvci0+dGFnSGlzdG9yeSgpKSB7Ci0gICAgICAgIGlmIChzZWxlY3Rvci0+cmVs
YXRpb24oKSAhPSBDU1NTZWxlY3Rvcjo6RGVzY2VuZGFudCAmJiBzZWxlY3Rvci0+cmVsYXRpb24o
KSAhPSBDU1NTZWxlY3Rvcjo6Q2hpbGQgJiYgc2VsZWN0b3ItPnJlbGF0aW9uKCkgIT0gQ1NTU2Vs
ZWN0b3I6OlN1YlNlbGVjdG9yKQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICBp
ZiAoc2VsZWN0b3ItPm1fbWF0Y2ggIT0gQ1NTU2VsZWN0b3I6Ok5vbmUgJiYgc2VsZWN0b3ItPm1f
bWF0Y2ggIT0gQ1NTU2VsZWN0b3I6OklkICYmIHNlbGVjdG9yLT5tX21hdGNoICE9IENTU1NlbGVj
dG9yOjpDbGFzcykKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0gICAgcmV0dXJu
IHRydWU7Ci19CiAgICAgCiB0ZW1wbGF0ZSA8Ym9vbCBjaGVja1ZhbHVlKGNvbnN0IEVsZW1lbnQq
LCBBdG9taWNTdHJpbmdJbXBsKik+CiBpbmxpbmUgYm9vbCBmYXN0Q2hlY2tTaW5nbGVTZWxlY3Rv
cihjb25zdCBDU1NTZWxlY3RvciomIHNlbGVjdG9yLCBjb25zdCBFbGVtZW50KiYgZWxlbWVudCwg
Y29uc3QgQ1NTU2VsZWN0b3IqJiB0b3BDaGlsZE9yU3Vic2VsZWN0b3IsIGNvbnN0IEVsZW1lbnQq
JiB0b3BDaGlsZE9yU3Vic2VsZWN0b3JNYXRjaEVsZW1lbnQpCkBAIC0yMTE2LDYgKzIxMTYsMTcg
QEAgYm9vbCBDU1NTdHlsZVNlbGVjdG9yOjpTZWxlY3RvckNoZWNrZXI6OgogICAgIHJldHVybiB0
cnVlOwogfQogCitib29sIENTU1N0eWxlU2VsZWN0b3I6OlNlbGVjdG9yQ2hlY2tlcjo6aXNGYXN0
Q2hlY2thYmxlU2VsZWN0b3IoY29uc3QgQ1NTU2VsZWN0b3IqIHNlbGVjdG9yKQoreworICAgIGZv
ciAoOyBzZWxlY3Rvcjsgc2VsZWN0b3IgPSBzZWxlY3Rvci0+dGFnSGlzdG9yeSgpKSB7CisgICAg
ICAgIGlmIChzZWxlY3Rvci0+cmVsYXRpb24oKSAhPSBDU1NTZWxlY3Rvcjo6RGVzY2VuZGFudCAm
JiBzZWxlY3Rvci0+cmVsYXRpb24oKSAhPSBDU1NTZWxlY3Rvcjo6Q2hpbGQgJiYgc2VsZWN0b3It
PnJlbGF0aW9uKCkgIT0gQ1NTU2VsZWN0b3I6OlN1YlNlbGVjdG9yKQorICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgICAgICBpZiAoc2VsZWN0b3ItPm1fbWF0Y2ggIT0gQ1NTU2VsZWN0b3I6
Ok5vbmUgJiYgc2VsZWN0b3ItPm1fbWF0Y2ggIT0gQ1NTU2VsZWN0b3I6OklkICYmIHNlbGVjdG9y
LT5tX21hdGNoICE9IENTU1NlbGVjdG9yOjpDbGFzcykKKyAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICB9CisgICAgcmV0dXJuIHRydWU7Cit9CisKIC8vIFJlY3Vyc2l2ZSBjaGVjayBvZiBz
ZWxlY3RvcnMgYW5kIGNvbWJpbmF0b3JzCiAvLyBJdCBjYW4gcmV0dXJuIDMgZGlmZmVyZW50IHZh
bHVlczoKIC8vICogU2VsZWN0b3JNYXRjaGVzICAgICAgICAgLSB0aGUgc2VsZWN0b3IgbWF0Y2hl
cyB0aGUgZWxlbWVudCBlCkBAIC0zMDM1LDcgKzMwNDYsNyBAQCBSdWxlRGF0YTo6UnVsZURhdGEo
Q1NTU3R5bGVSdWxlKiBydWxlLCBDCiAgICAgLCBtX3NlbGVjdG9yKHNlbGVjdG9yKQogICAgICwg
bV9zcGVjaWZpY2l0eShzZWxlY3Rvci0+c3BlY2lmaWNpdHkoKSkKICAgICAsIG1fcG9zaXRpb24o
cG9zaXRpb24pCi0gICAgLCBtX2hhc0Zhc3RDaGVja2FibGVTZWxlY3Rvcihpc0Zhc3RDaGVja2Fi
bGVTZWxlY3RvcihzZWxlY3RvcikpCisgICAgLCBtX2hhc0Zhc3RDaGVja2FibGVTZWxlY3RvcihD
U1NTdHlsZVNlbGVjdG9yOjpTZWxlY3RvckNoZWNrZXI6OmlzRmFzdENoZWNrYWJsZVNlbGVjdG9y
KHNlbGVjdG9yKSkKICAgICAsIG1faGFzTXVsdGlwYXJ0U2VsZWN0b3Ioc2VsZWN0b3ItPnRhZ0hp
c3RvcnkoKSkKICAgICAsIG1faGFzVG9wU2VsZWN0b3JNYXRjaGluZ0hUTUxCYXNlZE9uUnVsZUhh
c2goaXNTZWxlY3Rvck1hdGNoaW5nSFRNTEJhc2VkT25SdWxlSGFzaChzZWxlY3RvcikpCiB7Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVTZWxlY3Rvci5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNlbGVjdG9yLmgJKHJldmlzaW9uIDk0MDY3KQor
KysgU291cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxlU2VsZWN0b3IuaAkod29ya2luZyBjb3B5KQpA
QCAtMjc1LDEwICsyNzUsMTEgQEAgcHVibGljOgogICAgICAgICBwdWJsaWM6CiAgICAgICAgICAg
ICBTZWxlY3RvckNoZWNrZXIoRG9jdW1lbnQqLCBib29sIHN0cmljdFBhcnNpbmcpOwogCi0gICAg
ICAgICAgICBib29sIGNoZWNrU2VsZWN0b3IoQ1NTU2VsZWN0b3IqLCBFbGVtZW50KikgY29uc3Q7
CisgICAgICAgICAgICBib29sIGNoZWNrU2VsZWN0b3IoQ1NTU2VsZWN0b3IqLCBFbGVtZW50Kiwg
Ym9vbCBpc0Zhc3RDaGVja2FibGVTZWxlY3RvciA9IGZhbHNlKSBjb25zdDsKICAgICAgICAgICAg
IFNlbGVjdG9yTWF0Y2ggY2hlY2tTZWxlY3RvcihDU1NTZWxlY3RvciosIEVsZW1lbnQqLCBQc2V1
ZG9JZCYgZHluYW1pY1BzZXVkbywgYm9vbCBpc1N1YlNlbGVjdG9yLCBib29sIGVuY291bnRlcmVk
TGluaywgUmVuZGVyU3R5bGUqID0gMCwgUmVuZGVyU3R5bGUqIGVsZW1lbnRQYXJlbnRTdHlsZSA9
IDApIGNvbnN0OwogICAgICAgICAgICAgYm9vbCBjaGVja09uZVNlbGVjdG9yKENTU1NlbGVjdG9y
KiwgRWxlbWVudCosIFBzZXVkb0lkJiBkeW5hbWljUHNldWRvLCBib29sIGlzU3ViU2VsZWN0b3Is
IGJvb2wgZW5jb3VudGVyZWRMaW5rLCBSZW5kZXJTdHlsZSosIFJlbmRlclN0eWxlKiBlbGVtZW50
UGFyZW50U3R5bGUpIGNvbnN0OwogICAgICAgICAgICAgYm9vbCBjaGVja1Njcm9sbGJhclBzZXVk
b0NsYXNzKENTU1NlbGVjdG9yKiwgUHNldWRvSWQmIGR5bmFtaWNQc2V1ZG8pIGNvbnN0OworICAg
ICAgICAgICAgc3RhdGljIGJvb2wgaXNGYXN0Q2hlY2thYmxlU2VsZWN0b3IoY29uc3QgQ1NTU2Vs
ZWN0b3IqKTsKICAgICAgICAgICAgIHN0YXRpYyBib29sIGZhc3RDaGVja1NlbGVjdG9yKGNvbnN0
IENTU1NlbGVjdG9yKiwgY29uc3QgRWxlbWVudCopOwogCiAgICAgICAgICAgICBFSW5zaWRlTGlu
ayBkZXRlcm1pbmVMaW5rU3RhdGUoRWxlbWVudCogZWxlbWVudCkgY29uc3Q7CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9kb20vTm9kZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9t
L05vZGUuY3BwCShyZXZpc2lvbiA5NDA2NykKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtODEsNyArODEsNyBAQAogI2luY2x1ZGUgIlJlbmRlclRleHRD
b250cm9sLmgiCiAjaW5jbHVkZSAiUmVuZGVyVmlldy5oIgogI2luY2x1ZGUgIlNjb3BlZEV2ZW50
UXVldWUuaCIKLSNpbmNsdWRlICJTZWxlY3Rvck5vZGVMaXN0LmgiCisjaW5jbHVkZSAiU2VsZWN0
b3JRdWVyeS5oIgogI2luY2x1ZGUgIlNoYWRvd1Jvb3QuaCIKICNpbmNsdWRlICJTdGF0aWNOb2Rl
TGlzdC5oIgogI2luY2x1ZGUgIlRhZ05vZGVMaXN0LmgiCkBAIC0xNzY1LDI5ICsxNzY1LDkgQEAg
UGFzc1JlZlB0cjxFbGVtZW50PiBOb2RlOjpxdWVyeVNlbGVjdG9yKAogICAgICAgICBlYyA9IE5B
TUVTUEFDRV9FUlI7CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KLQotICAgIENTU1N0eWxlU2Vs
ZWN0b3I6OlNlbGVjdG9yQ2hlY2tlciBzZWxlY3RvckNoZWNrZXIoZG9jdW1lbnQoKSwgc3RyaWN0
UGFyc2luZyk7Ci0KLSAgICAvLyBGSVhNRTogd2UgY291bGQgYWxzbyBvcHRpbWl6ZSBmb3IgdGhl
IHRoZSBbaWQ9ImZvbyJdIGNhc2UKLSAgICBpZiAoc3RyaWN0UGFyc2luZyAmJiBpbkRvY3VtZW50
KCkgJiYgcXVlcnlTZWxlY3Rvckxpc3QuaGFzT25lU2VsZWN0b3IoKSAmJiBxdWVyeVNlbGVjdG9y
TGlzdC5maXJzdCgpLT5tX21hdGNoID09IENTU1NlbGVjdG9yOjpJZCkgewotICAgICAgICBFbGVt
ZW50KiBlbGVtZW50ID0gdHJlZVNjb3BlKCktPmdldEVsZW1lbnRCeUlkKHF1ZXJ5U2VsZWN0b3JM
aXN0LmZpcnN0KCktPnZhbHVlKCkpOwotICAgICAgICBpZiAoZWxlbWVudCAmJiAoaXNEb2N1bWVu
dE5vZGUoKSB8fCBlbGVtZW50LT5pc0Rlc2NlbmRhbnRPZih0aGlzKSkgJiYgc2VsZWN0b3JDaGVj
a2VyLmNoZWNrU2VsZWN0b3IocXVlcnlTZWxlY3Rvckxpc3QuZmlyc3QoKSwgZWxlbWVudCkpCi0g
ICAgICAgICAgICByZXR1cm4gZWxlbWVudDsKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgfQotCi0g
ICAgLy8gRklYTUU6IFdlIGNhbiBzcGVlZCB0aGlzIHVwIGJ5IGltcGxlbWVudGluZyBjYWNoaW5n
IHNpbWlsYXIgdG8gdGhlIG9uZSB1c2UgYnkgZ2V0RWxlbWVudEJ5SWQKLSAgICBmb3IgKE5vZGUq
IG4gPSBmaXJzdENoaWxkKCk7IG47IG4gPSBuLT50cmF2ZXJzZU5leHROb2RlKHRoaXMpKSB7Ci0g
ICAgICAgIGlmIChuLT5pc0VsZW1lbnROb2RlKCkpIHsKLSAgICAgICAgICAgIEVsZW1lbnQqIGVs
ZW1lbnQgPSBzdGF0aWNfY2FzdDxFbGVtZW50Kj4obik7Ci0gICAgICAgICAgICBmb3IgKENTU1Nl
bGVjdG9yKiBzZWxlY3RvciA9IHF1ZXJ5U2VsZWN0b3JMaXN0LmZpcnN0KCk7IHNlbGVjdG9yOyBz
ZWxlY3RvciA9IENTU1NlbGVjdG9yTGlzdDo6bmV4dChzZWxlY3RvcikpIHsKLSAgICAgICAgICAg
ICAgICBpZiAoc2VsZWN0b3JDaGVja2VyLmNoZWNrU2VsZWN0b3Ioc2VsZWN0b3IsIGVsZW1lbnQp
KQotICAgICAgICAgICAgICAgICAgICByZXR1cm4gZWxlbWVudDsKLSAgICAgICAgICAgIH0KLSAg
ICAgICAgfQotICAgIH0KICAgICAKLSAgICByZXR1cm4gMDsKKyAgICBTZWxlY3RvclF1ZXJ5IHNl
bGVjdG9yUXVlcnkodGhpcywgcXVlcnlTZWxlY3Rvckxpc3QpOworICAgIHJldHVybiBzZWxlY3Rv
clF1ZXJ5LnF1ZXJ5Rmlyc3QoKTsKIH0KIAogUGFzc1JlZlB0cjxOb2RlTGlzdD4gTm9kZTo6cXVl
cnlTZWxlY3RvckFsbChjb25zdCBTdHJpbmcmIHNlbGVjdG9ycywgRXhjZXB0aW9uQ29kZSYgZWMp
CkBAIC0xODEzLDcgKzE3OTMsOCBAQCBQYXNzUmVmUHRyPE5vZGVMaXN0PiBOb2RlOjpxdWVyeVNl
bGVjdG9yCiAgICAgICAgIHJldHVybiAwOwogICAgIH0KIAotICAgIHJldHVybiBjcmVhdGVTZWxl
Y3Rvck5vZGVMaXN0KHRoaXMsIHF1ZXJ5U2VsZWN0b3JMaXN0KTsKKyAgICBTZWxlY3RvclF1ZXJ5
IHNlbGVjdG9yUXVlcnkodGhpcywgcXVlcnlTZWxlY3Rvckxpc3QpOworICAgIHJldHVybiBzZWxl
Y3RvclF1ZXJ5LnF1ZXJ5QWxsKCk7CiB9CiAKIERvY3VtZW50ICpOb2RlOjpvd25lckRvY3VtZW50
KCkgY29uc3QKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9TZWxlY3Rvck5vZGVMaXN0LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vU2VsZWN0b3JOb2RlTGlzdC5jcHAJKHJl
dmlzaW9uIDk0MDY3KQorKysgU291cmNlL1dlYkNvcmUvZG9tL1NlbGVjdG9yTm9kZUxpc3QuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDc0ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MDcsIDIwMDggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICoKLSAqIDEuICBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KLSAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgotICogMy4gIE5laXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUgQ29tcHV0ZXIsIEluYy4gKCJBcHBs
ZSIpIG5vciB0aGUgbmFtZXMgb2YKLSAqICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2Vk
IHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCi0gKiAgICAgZnJvbSB0aGlz
IHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICoK
LSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRP
UlMgIkFTIElTIiBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0gKiBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJF
Ci0gKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZCi0gKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUwotICogKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOwotICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECi0gKiBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAot
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GCi0gKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcu
aCIKLSNpbmNsdWRlICJTZWxlY3Rvck5vZGVMaXN0LmgiCi0KLSNpbmNsdWRlICJDU1NTZWxlY3Rv
ci5oIgotI2luY2x1ZGUgIkNTU1NlbGVjdG9yTGlzdC5oIgotI2luY2x1ZGUgIkNTU1N0eWxlU2Vs
ZWN0b3IuaCIKLSNpbmNsdWRlICJEb2N1bWVudC5oIgotI2luY2x1ZGUgIkVsZW1lbnQuaCIKLSNp
bmNsdWRlICJIVE1MTmFtZXMuaCIKLSNpbmNsdWRlICJTdGF0aWNOb2RlTGlzdC5oIgotCi1uYW1l
c3BhY2UgV2ViQ29yZSB7Ci0KLXVzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7Ci0KLVBhc3NSZWZQ
dHI8U3RhdGljTm9kZUxpc3Q+IGNyZWF0ZVNlbGVjdG9yTm9kZUxpc3QoTm9kZSogcm9vdE5vZGUs
IGNvbnN0IENTU1NlbGVjdG9yTGlzdCYgcXVlcnlTZWxlY3Rvckxpc3QpCi17Ci0gICAgVmVjdG9y
PFJlZlB0cjxOb2RlPiA+IG5vZGVzOwotICAgIERvY3VtZW50KiBkb2N1bWVudCA9IHJvb3ROb2Rl
LT5kb2N1bWVudCgpOwotICAgIENTU1NlbGVjdG9yKiBvbmx5U2VsZWN0b3IgPSBxdWVyeVNlbGVj
dG9yTGlzdC5oYXNPbmVTZWxlY3RvcigpID8gcXVlcnlTZWxlY3Rvckxpc3QuZmlyc3QoKSA6IDA7
Ci0gICAgYm9vbCBzdHJpY3RQYXJzaW5nID0gIWRvY3VtZW50LT5pblF1aXJrc01vZGUoKTsKLQot
ICAgIENTU1N0eWxlU2VsZWN0b3I6OlNlbGVjdG9yQ2hlY2tlciBzZWxlY3RvckNoZWNrZXIoZG9j
dW1lbnQsIHN0cmljdFBhcnNpbmcpOwotCi0gICAgaWYgKHN0cmljdFBhcnNpbmcgJiYgcm9vdE5v
ZGUtPmluRG9jdW1lbnQoKSAmJiBvbmx5U2VsZWN0b3IgJiYgb25seVNlbGVjdG9yLT5tX21hdGNo
ID09IENTU1NlbGVjdG9yOjpJZCAmJiAhZG9jdW1lbnQtPmNvbnRhaW5zTXVsdGlwbGVFbGVtZW50
c1dpdGhJZChvbmx5U2VsZWN0b3ItPnZhbHVlKCkpKSB7Ci0gICAgICAgIEVsZW1lbnQqIGVsZW1l
bnQgPSBkb2N1bWVudC0+Z2V0RWxlbWVudEJ5SWQob25seVNlbGVjdG9yLT52YWx1ZSgpKTsKLSAg
ICAgICAgaWYgKGVsZW1lbnQgJiYgKHJvb3ROb2RlLT5pc0RvY3VtZW50Tm9kZSgpIHx8IGVsZW1l
bnQtPmlzRGVzY2VuZGFudE9mKHJvb3ROb2RlKSkgJiYgc2VsZWN0b3JDaGVja2VyLmNoZWNrU2Vs
ZWN0b3Iob25seVNlbGVjdG9yLCBlbGVtZW50KSkKLSAgICAgICAgICAgIG5vZGVzLmFwcGVuZChl
bGVtZW50KTsKLSAgICB9IGVsc2UgewotICAgICAgICBmb3IgKE5vZGUqIG4gPSByb290Tm9kZS0+
Zmlyc3RDaGlsZCgpOyBuOyBuID0gbi0+dHJhdmVyc2VOZXh0Tm9kZShyb290Tm9kZSkpIHsKLSAg
ICAgICAgICAgIGlmIChuLT5pc0VsZW1lbnROb2RlKCkpIHsKLSAgICAgICAgICAgICAgICBFbGVt
ZW50KiBlbGVtZW50ID0gc3RhdGljX2Nhc3Q8RWxlbWVudCo+KG4pOwotICAgICAgICAgICAgICAg
IGZvciAoQ1NTU2VsZWN0b3IqIHNlbGVjdG9yID0gcXVlcnlTZWxlY3Rvckxpc3QuZmlyc3QoKTsg
c2VsZWN0b3I7IHNlbGVjdG9yID0gQ1NTU2VsZWN0b3JMaXN0OjpuZXh0KHNlbGVjdG9yKSkgewot
ICAgICAgICAgICAgICAgICAgICBpZiAoc2VsZWN0b3JDaGVja2VyLmNoZWNrU2VsZWN0b3Ioc2Vs
ZWN0b3IsIGVsZW1lbnQpKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBub2Rlcy5hcHBlbmQo
bik7Ci0gICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAg
fQotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgIH0KLSAg
ICAKLSAgICByZXR1cm4gU3RhdGljTm9kZUxpc3Q6OmFkb3B0KG5vZGVzKTsKLX0KLQotfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL1NlbGVjdG9yTm9kZUxp
c3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vU2VsZWN0b3JOb2RlTGlzdC5o
CShyZXZpc2lvbiA5NDA2NykKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9TZWxlY3Rvck5vZGVMaXN0
LmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNDQgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykg
MjAwNywgMjAwOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKgotICogMS4gIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgotICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCi0gKiAzLiAgTmVpdGhlciB0aGUgbmFtZSBvZiBBcHBsZSBDb21wdXRlciwgSW5jLiAoIkFw
cGxlIikgbm9yIHRoZSBuYW1lcyBvZgotICogICAgIGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVz
ZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKLSAqICAgICBmcm9tIHRo
aXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0g
KgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJV
VE9SUyAiQVMgSVMiIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKLSAqIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBB
UkUKLSAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKLSAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCi0gKiAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7Ci0gKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKLSAqIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
Ci0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YKLSAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lmbmRlZiBTZWxlY3Rv
ck5vZGVMaXN0X2gKLSNkZWZpbmUgU2VsZWN0b3JOb2RlTGlzdF9oCi0KLSNpbmNsdWRlIDx3dGYv
UGFzc1JlZlB0ci5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLSAgICBjbGFzcyBDU1NTZWxl
Y3Rvckxpc3Q7Ci0gICAgY2xhc3MgTm9kZTsKLSAgICBjbGFzcyBTdGF0aWNOb2RlTGlzdDsKLQot
ICAgIFBhc3NSZWZQdHI8U3RhdGljTm9kZUxpc3Q+IGNyZWF0ZVNlbGVjdG9yTm9kZUxpc3QoTm9k
ZSogcm9vdE5vZGUsIGNvbnN0IENTU1NlbGVjdG9yTGlzdCYpOwotCi19IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCi0KLSNlbmRpZiAvLyBTZWxlY3Rvck5vZGVMaXN0X2gKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2RvbS9TZWxlY3RvclF1ZXJ5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9k
b20vU2VsZWN0b3JRdWVyeS5jcHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViQ29yZS9kb20v
U2VsZWN0b3JRdWVyeS5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTIxIEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFO
RCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAor
ICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
T1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
aW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiU2VsZWN0b3JRdWVyeS5oIgorCisjaW5jbHVk
ZSAiQ1NTU2VsZWN0b3JMaXN0LmgiCisjaW5jbHVkZSAiRG9jdW1lbnQuaCIKKyNpbmNsdWRlICJT
dGF0aWNOb2RlTGlzdC5oIgorI2luY2x1ZGUgIlN0eWxlZEVsZW1lbnQuaCIKKworbmFtZXNwYWNl
IFdlYkNvcmUgeworCitTZWxlY3RvclF1ZXJ5OjpTZWxlY3RvclF1ZXJ5KE5vZGUqIHJvb3ROb2Rl
LCBjb25zdCBDU1NTZWxlY3Rvckxpc3QmIHNlbGVjdG9yTGlzdCkKKyAgICA6IG1fcm9vdE5vZGUo
cm9vdE5vZGUpCisgICAgLCBtX3NlbGVjdG9yQ2hlY2tlcihyb290Tm9kZS0+ZG9jdW1lbnQoKSwg
IXJvb3ROb2RlLT5kb2N1bWVudCgpLT5pblF1aXJrc01vZGUoKSkKK3sKKyAgICBmb3IgKENTU1Nl
bGVjdG9yKiBzZWxlY3RvciA9IHNlbGVjdG9yTGlzdC5maXJzdCgpOyBzZWxlY3Rvcjsgc2VsZWN0
b3IgPSBDU1NTZWxlY3Rvckxpc3Q6Om5leHQoc2VsZWN0b3IpKQorICAgICAgICBtX3NlbGVjdG9y
cy5hcHBlbmQoU2VsZWN0b3JEYXRhKHNlbGVjdG9yLCBDU1NTdHlsZVNlbGVjdG9yOjpTZWxlY3Rv
ckNoZWNrZXI6OmlzRmFzdENoZWNrYWJsZVNlbGVjdG9yKHNlbGVjdG9yKSkpOworfQorICAgIAor
UGFzc1JlZlB0cjxOb2RlTGlzdD4gU2VsZWN0b3JRdWVyeTo6cXVlcnlBbGwoKSBjb25zdAorewor
ICAgIFZlY3RvcjxSZWZQdHI8Tm9kZT4gPiByZXN1bHQ7CisgICAgZXhlY3V0ZTxmYWxzZT4ocmVz
dWx0KTsKKyAgICByZXR1cm4gU3RhdGljTm9kZUxpc3Q6OmFkb3B0KHJlc3VsdCk7Cit9CisKK1Bh
c3NSZWZQdHI8RWxlbWVudD4gU2VsZWN0b3JRdWVyeTo6cXVlcnlGaXJzdCgpIGNvbnN0IAoreyAK
KyAgICBWZWN0b3I8UmVmUHRyPE5vZGU+ID4gcmVzdWx0OworICAgIGV4ZWN1dGU8dHJ1ZT4ocmVz
dWx0KTsKKyAgICBpZiAocmVzdWx0LmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIDA7CisgICAg
QVNTRVJUKHJlc3VsdC5zaXplKCkgPT0gMSk7CisgICAgQVNTRVJUKHJlc3VsdC5maXJzdCgpLT5p
c0VsZW1lbnROb2RlKCkpOworICAgIHJldHVybiBzdGF0aWNfY2FzdDxFbGVtZW50Kj4ocmVzdWx0
LmZpcnN0KCkuZ2V0KCkpOworfQorCitib29sIFNlbGVjdG9yUXVlcnk6OmNhblVzZUlkTG9va3Vw
KCkgY29uc3QKK3sKKyAgICAvLyBXZSBuZWVkIHRvIHJldHVybiB0aGUgbWF0Y2hlcyBpbiBkb2N1
bWVudCBvcmRlci4gVG8gdXNlIGlkIGxvb2t1cCB3aGlsZSB0aGVyZSBpcyBwb3NzaWJsaXR5IG9m
IG11bHRpcGxlIG1hdGNoZXMKKyAgICAvLyB3ZSB3b3VsZCBuZWVkIHRvIHNvcnQgdGhlIHJlc3Vs
dHMuIEZvciBub3csIGp1c3QgdHJhdmVyc2UgdGhlIGRvY3VtZW50IGluIHRoYXQgY2FzZS4KKyAg
ICBpZiAobV9zZWxlY3RvcnMuc2l6ZSgpICE9IDEpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICBpZiAobV9zZWxlY3RvcnNbMF0uc2VsZWN0b3ItPm1fbWF0Y2ggIT0gQ1NTU2VsZWN0b3I6Oklk
KQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKCFtX3Jvb3ROb2RlLT5pbkRvY3VtZW50
KCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAobV9yb290Tm9kZS0+ZG9jdW1lbnQo
KS0+aW5RdWlya3NNb2RlKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAobV9yb290
Tm9kZS0+ZG9jdW1lbnQoKS0+Y29udGFpbnNNdWx0aXBsZUVsZW1lbnRzV2l0aElkKG1fc2VsZWN0
b3JzWzBdLnNlbGVjdG9yLT52YWx1ZSgpKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIHJl
dHVybiB0cnVlOworfQorCit0ZW1wbGF0ZSA8Ym9vbCBmaXJzdE1hdGNoT25seT4KK3ZvaWQgU2Vs
ZWN0b3JRdWVyeTo6ZXhlY3V0ZShWZWN0b3I8UmVmUHRyPE5vZGU+ID4mIG1hdGNoZWRFbGVtZW50
cykgY29uc3QKK3sKKyAgICBpZiAoY2FuVXNlSWRMb29rdXAoKSkgeworICAgICAgICBBU1NFUlQo
bV9zZWxlY3RvcnMuc2l6ZSgpID09IDEpOworICAgICAgICBDU1NTZWxlY3Rvciogc2VsZWN0b3Ig
PSBtX3NlbGVjdG9yc1swXS5zZWxlY3RvcjsKKyAgICAgICAgRWxlbWVudCogZWxlbWVudCA9IG1f
cm9vdE5vZGUtPmRvY3VtZW50KCktPmdldEVsZW1lbnRCeUlkKHNlbGVjdG9yLT52YWx1ZSgpKTsK
KyAgICAgICAgaWYgKCFlbGVtZW50IHx8ICEobV9yb290Tm9kZS0+aXNEb2N1bWVudE5vZGUoKSB8
fCBlbGVtZW50LT5pc0Rlc2NlbmRhbnRPZihtX3Jvb3ROb2RlKSkpCisgICAgICAgICAgICByZXR1
cm47CisgICAgICAgIGlmIChtX3NlbGVjdG9yQ2hlY2tlci5jaGVja1NlbGVjdG9yKHNlbGVjdG9y
LCBlbGVtZW50LCBtX3NlbGVjdG9yc1swXS5pc0Zhc3RDaGVja2FibGUpKQorICAgICAgICAgICAg
bWF0Y2hlZEVsZW1lbnRzLmFwcGVuZChlbGVtZW50KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0K
KyAgICAKKyAgICB1bnNpZ25lZCBzZWxlY3RvckNvdW50ID0gbV9zZWxlY3RvcnMuc2l6ZSgpOwor
ICAgIAorICAgIE5vZGUqIG4gPSBtX3Jvb3ROb2RlLT5maXJzdENoaWxkKCk7CisgICAgd2hpbGUg
KG4pIHsKKyAgICAgICAgaWYgKG4tPmlzRWxlbWVudE5vZGUoKSkgeworICAgICAgICAgICAgRWxl
bWVudCogZWxlbWVudCA9IHN0YXRpY19jYXN0PEVsZW1lbnQqPihuKTsKKyAgICAgICAgICAgIGZv
ciAodW5zaWduZWQgaSA9IDA7IGkgPCBzZWxlY3RvckNvdW50OyArK2kpIHsKKyAgICAgICAgICAg
ICAgICBpZiAobV9zZWxlY3RvckNoZWNrZXIuY2hlY2tTZWxlY3RvcihtX3NlbGVjdG9yc1tpXS5z
ZWxlY3RvciwgZWxlbWVudCwgbV9zZWxlY3RvcnNbaV0uaXNGYXN0Q2hlY2thYmxlKSkgeworICAg
ICAgICAgICAgICAgICAgICBtYXRjaGVkRWxlbWVudHMuYXBwZW5kKGVsZW1lbnQpOworICAgICAg
ICAgICAgICAgICAgICBpZiAoZmlyc3RNYXRjaE9ubHkpCisgICAgICAgICAgICAgICAgICAgICAg
ICByZXR1cm47CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0K
KyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChlbGVtZW50LT5maXJzdENoaWxkKCkpIHsK
KyAgICAgICAgICAgICAgICBuID0gZWxlbWVudC0+Zmlyc3RDaGlsZCgpOworICAgICAgICAgICAg
ICAgIGNvbnRpbnVlOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIHdoaWxlICgh
bi0+bmV4dFNpYmxpbmcoKSkgeworICAgICAgICAgICAgbiA9IG4tPnBhcmVudE5vZGUoKTsKKyAg
ICAgICAgICAgIGlmIChuID09IG1fcm9vdE5vZGUpCisgICAgICAgICAgICAgICAgcmV0dXJuOwor
ICAgICAgICB9CisgICAgICAgIG4gPSBuLT5uZXh0U2libGluZygpOworICAgIH0KK30KKworfQpJ
bmRleDogU291cmNlL1dlYkNvcmUvZG9tL1NlbGVjdG9yUXVlcnkuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9kb20vU2VsZWN0b3JRdWVyeS5oCShyZXZpc2lvbiAwKQorKysgU291cmNl
L1dlYkNvcmUvZG9tL1NlbGVjdG9yUXVlcnkuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw2NSBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICog
MS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
IElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2lmbmRlZiBTZWxlY3RvclF1ZXJ5X2gKKyNkZWZpbmUgU2VsZWN0b3JRdWVyeV9o
CisKKyNpbmNsdWRlICJDU1NTdHlsZVNlbGVjdG9yLmgiCisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5o
PgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisgICAgCitjbGFzcyBOb2RlOworY2xhc3MgTm9kZUxp
c3Q7CitjbGFzcyBFbGVtZW50OworY2xhc3MgQ1NTU2VsZWN0b3I7CitjbGFzcyBDU1NTZWxlY3Rv
ckxpc3Q7CisKK2NsYXNzIFNlbGVjdG9yUXVlcnkgeworcHVibGljOgorICAgIFNlbGVjdG9yUXVl
cnkoTm9kZSogcm9vdE5vZGUsIGNvbnN0IENTU1NlbGVjdG9yTGlzdCYpOworICAgIAorICAgIFBh
c3NSZWZQdHI8Tm9kZUxpc3Q+IHF1ZXJ5QWxsKCkgY29uc3Q7CisgICAgUGFzc1JlZlB0cjxFbGVt
ZW50PiBxdWVyeUZpcnN0KCkgY29uc3Q7CisKK3ByaXZhdGU6CisgICAgYm9vbCBjYW5Vc2VJZExv
b2t1cCgpIGNvbnN0OworCisgICAgdGVtcGxhdGUgPGJvb2wgZmlyc3RNYXRjaE9ubHk+CisgICAg
dm9pZCBleGVjdXRlKFZlY3RvcjxSZWZQdHI8Tm9kZT4gPiYpIGNvbnN0OworICAgIAorICAgIHN0
cnVjdCBTZWxlY3RvckRhdGEgeworICAgICAgICBTZWxlY3RvckRhdGEoQ1NTU2VsZWN0b3IqIHNl
bGVjdG9yLCBib29sIGlzRmFzdENoZWNrYWJsZSkgOiBzZWxlY3RvcihzZWxlY3RvciksIGlzRmFz
dENoZWNrYWJsZShpc0Zhc3RDaGVja2FibGUpIHt9CisgICAgICAgIENTU1NlbGVjdG9yKiBzZWxl
Y3RvcjsKKyAgICAgICAgYm9vbCBpc0Zhc3RDaGVja2FibGU7CisgICAgfTsKKyAgICBOb2RlKiBt
X3Jvb3ROb2RlOworICAgIFZlY3RvcjxTZWxlY3RvckRhdGE+IG1fc2VsZWN0b3JzOworICAgIENT
U1N0eWxlU2VsZWN0b3I6OlNlbGVjdG9yQ2hlY2tlciBtX3NlbGVjdG9yQ2hlY2tlcjsKK307CisK
K30KKworI2VuZGlmCg==
</data>
<flag name="commit-queue"
          id="101844"
          type_id="3"
          status="-"
          setter="gyuyoung.kim"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>105631</attachid>
            <date>2011-08-30 08:15:37 -0700</date>
            <delta_ts>2011-08-30 10:19:50 -0700</delta_ts>
            <desc>style &amp; win build fix</desc>
            <filename>queryselector-fastcheck-10.patch</filename>
            <type>text/plain</type>
            <size>36235</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDk0MDY3KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNTQgQEAKKzIwMTEtMDgtMzAgIEFudHRpIEtv
aXZpc3RvICA8YW50dGlAYXBwbGUuY29tPgorCisgICAgICAgIHF1ZXJ5U2VsZWN0b3IvcXVlcnlT
ZWxlY3RvckFsbCBzaG91bGQgdXNlIHNlbGVjdG9yIGNoZWNrZXIgZmFzdCBwYXRoIAorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjcxNjEKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBEZXNjZW5kYW50IGFuZCBj
aGlsZCBzZWxlY3RvcnMgY2FuIGJlIG1hdGNoZXMgc3Vic3RhbnRpYWxseSBmYXN0ZXIgdXNpbmcK
KyAgICAgICAgU2VsZWN0b3JDaGVja2VyOjpmYXN0Q2hlY2tTZWxlY3RvcigpIHBhdGguIEN1cnJl
bnRseSBpdCBpcyB1c2VkIGZvciBzdHlsZSBtYXRjaGluZyBvbmx5LiAgCisgICAgICAgIAorICAg
ICAgICBBZGQgU2VsZWN0b3JRdWVyeSBjbGFzcyB0aGF0IGNhbiBkbyBib3RoIHF1ZXJ5U2VsZWN0
b3IgYW5kIHF1ZXJ5U2VsZWN0b3JBbGwgZWZmaWNpZW50bHkgdXNpbmcKKyAgICAgICAgZmFzdCBw
YXRoLiBVc2UgaW5saW5lZCBsb29wIGZvciBET00gdHJhdmVyc2FsLgorICAgICAgICAKKyAgICAg
ICAgVGhlIHBhdGNoIGlzIH4yNSUgc3BlZWR1cCBpbiB0aGUgb3ZlcmFsbCBuYXRpdmUgc2NvcmUg
b2YgaHR0cDovL3d3dy53ZWJraXQub3JnL3BlcmYvc2xpY2tzcGVlZC8uCisgICAgICAgIFNvbWUg
aW5kaXZpZHVhbCBzdWJ0ZXN0cyAodXNpbmcgY2hpbGQgb3IgZGVzY2VuZGFudCBzZWxlY3RvcnMp
IGV4ZWN1dGUgdHdpY2UgYXMgZmFzdC4KKworICAgICAgICAqIEdOVW1ha2VmaWxlLmxpc3QuYW06
CisgICAgICAgICogV2ViQ29yZS5neXBpOgorICAgICAgICAqIFdlYkNvcmUucHJvOgorICAgICAg
ICAqIFdlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qOgorICAgICAgICAqIFdlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBjc3MvQ1NTU3R5bGVTZWxlY3Rvci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NTdHlsZVNlbGVjdG9yOjpTZWxlY3RvckNoZWNrZXI6
OmNoZWNrU2VsZWN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTU3R5bGVTZWxlY3Rvcjo6U2Vs
ZWN0b3JDaGVja2VyOjppc0Zhc3RDaGVja2FibGVTZWxlY3Rvcik6CisgICAgICAgIChXZWJDb3Jl
OjpSdWxlRGF0YTo6UnVsZURhdGEpOgorICAgICAgICAqIGNzcy9DU1NTdHlsZVNlbGVjdG9yLmg6
CisgICAgICAgIAorICAgICAgICAgICAgTWFrZSBmYXN0IHBhdGggY2hlY2tpbmcgYXZhaWxhYmxl
IG91dHNpZGUgQ1NTU3R5bGVTZWxlY3Rvci4KKyAgICAgICAgICAgIAorICAgICAgICAqIGRvbS9E
T01BbGxJbk9uZS5jcHA6CisgICAgICAgICogZG9tL05vZGUuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Tm9kZTo6cXVlcnlTZWxlY3Rvcik6CisgICAgICAgIChXZWJDb3JlOjpOb2RlOjpxdWVyeVNl
bGVjdG9yQWxsKToKKyAgICAgICAgCisgICAgICAgICAgICBTd2l0Y2ggdG8gU2VsZWN0b3JRdWVy
eS4KKyAgICAgICAgCisgICAgICAgICogZG9tL1NlbGVjdG9yTm9kZUxpc3QuY3BwOiBSZW1vdmVk
LgorICAgICAgICAqIGRvbS9TZWxlY3Rvck5vZGVMaXN0Lmg6IFJlbW92ZWQuCisgICAgICAgIAor
ICAgICAgICAgICAgU2VsZWN0b3JRdWVyeSBtYWtlcyB0aGVzZSBvYm9zb2xldGUuCisKKyAgICAg
ICAgKiBkb20vU2VsZWN0b3JRdWVyeS5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6U2Vs
ZWN0b3JRdWVyeTo6U2VsZWN0b3JRdWVyeSk6CisgICAgICAgIChXZWJDb3JlOjpTZWxlY3RvclF1
ZXJ5OjpxdWVyeUFsbCk6CisgICAgICAgIChXZWJDb3JlOjpTZWxlY3RvclF1ZXJ5OjpxdWVyeUZp
cnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNlbGVjdG9yUXVlcnk6OmNhblVzZUlkTG9va3VwKToK
KyAgICAgICAgKFdlYkNvcmU6OlNlbGVjdG9yUXVlcnk6OmV4ZWN1dGUpOgorICAgICAgICAqIGRv
bS9TZWxlY3RvclF1ZXJ5Lmg6IEFkZGVkLgorICAgICAgICAKKyAgICAgICAgICAgIENsYXNzIGZv
ciBzZWxlY3RvciBtYXRjaGluZyBpbiB0cmVlLgorICAgIAogMjAxMS0wOC0yOSAgWXVyeSBTZW1p
a2hhdHNreSAgPHl1cnlzQGNocm9taXVtLm9yZz4KIAogICAgICAgICBXZWIgSW5zcGVjdG9yOiB3
cm9uZyBzY3JpcHQgZGlzcGxheSBuYW1lIHdoZW4gdGhlcmUgaXMgYSBzbGFzaCBpbiBpdHMgVVJM
IHF1ZXJ5IHBhcmFtZXRlcnMKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3Qu
YW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQkocmV2
aXNpb24gOTQwNjcpCisrKyBTb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xMjg0LDggKzEyODQsOCBAQCB3ZWJjb3JlX3NvdXJjZXMgKz0gXAogCVNv
dXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRSdW5uZXIuaCBcCiAJU291cmNlL1dlYkNvcmUvZG9tL1Nl
bGVjdEVsZW1lbnQuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9kb20vU2VsZWN0RWxlbWVudC5oIFwK
LQlTb3VyY2UvV2ViQ29yZS9kb20vU2VsZWN0b3JOb2RlTGlzdC5jcHAgXAotCVNvdXJjZS9XZWJD
b3JlL2RvbS9TZWxlY3Rvck5vZGVMaXN0LmggXAorCVNvdXJjZS9XZWJDb3JlL2RvbS9TZWxlY3Rv
clF1ZXJ5LmNwcCBcCisJU291cmNlL1dlYkNvcmUvZG9tL1NlbGVjdG9yUXVlcnkuaCBcCiAJU291
cmNlL1dlYkNvcmUvZG9tL1NoYWRvd0NvbnRlbnRFbGVtZW50LmNwcCBcCiAJU291cmNlL1dlYkNv
cmUvZG9tL1NoYWRvd0NvbnRlbnRFbGVtZW50LmggXAogCVNvdXJjZS9XZWJDb3JlL2RvbS9TaGFk
b3dJbmNsdXNpb25TZWxlY3Rvci5jcHAgXApJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS5n
eXBpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQkocmV2aXNpb24g
OTQwNjcpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkJKHdvcmtpbmcgY29weSkKQEAg
LTUzNTQsOCArNTM1NCw4IEBACiAgICAgICAgICAgICAnZG9tL1NjcmlwdGVkQW5pbWF0aW9uQ29u
dHJvbGxlci5oJywKICAgICAgICAgICAgICdkb20vU2VsZWN0RWxlbWVudC5jcHAnLAogICAgICAg
ICAgICAgJ2RvbS9TZWxlY3RFbGVtZW50LmgnLAotICAgICAgICAgICAgJ2RvbS9TZWxlY3Rvck5v
ZGVMaXN0LmNwcCcsCi0gICAgICAgICAgICAnZG9tL1NlbGVjdG9yTm9kZUxpc3QuaCcsCisgICAg
ICAgICAgICAnZG9tL1NlbGVjdG9yUXVlcnkuY3BwJywKKyAgICAgICAgICAgICdkb20vU2VsZWN0
b3JRdWVyeS5oJywKICAgICAgICAgICAgICdkb20vU2hhZG93Q29udGVudEVsZW1lbnQuY3BwJywK
ICAgICAgICAgICAgICdkb20vU2hhZG93Q29udGVudEVsZW1lbnQuaCcsCiAgICAgICAgICAgICAn
ZG9tL1NoYWRvd0luY2x1c2lvblNlbGVjdG9yLmNwcCcsCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnBybwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnBybwkocmV2
aXNpb24gOTQwNjcpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnBybwkod29ya2luZyBjb3B5
KQpAQCAtNTQyLDcgKzU0Miw3IEBAIFNPVVJDRVMgKz0gXAogICAgIGRvbS9TY3JpcHRFeGVjdXRp
b25Db250ZXh0LmNwcCBcCiAgICAgZG9tL1NjcmlwdFJ1bm5lci5jcHAgXAogICAgIGRvbS9TZWxl
Y3RFbGVtZW50LmNwcCBcCi0gICAgZG9tL1NlbGVjdG9yTm9kZUxpc3QuY3BwIFwKKyAgICBkb20v
U2VsZWN0b3JRdWVyeS5jcHAgXAogICAgIGRvbS9TaGFkb3dDb250ZW50RWxlbWVudC5jcHAgXAog
ICAgIGRvbS9TaGFkb3dJbmNsdXNpb25TZWxlY3Rvci5jcHAgXAogICAgIGRvbS9TaGFkb3dSb290
LmNwcCBcCkBAIC0xNTM2LDcgKzE1MzYsNyBAQCBIRUFERVJTICs9IFwKICAgICBkb20vU2NyaXB0
RWxlbWVudC5oIFwKICAgICBkb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIFwKICAgICBkb20v
U2VsZWN0RWxlbWVudC5oIFwKLSAgICBkb20vU2VsZWN0b3JOb2RlTGlzdC5oIFwKKyAgICBkb20v
U2VsZWN0b3JRdWVyeS5oIFwKICAgICBkb20vU2hhZG93Q29udGVudEVsZW1lbnQuaCBcCiAgICAg
ZG9tL1NoYWRvd0luY2x1c2lvblNlbGVjdG9yLmggXAogICAgIGRvbS9TaGFkb3dSb290LmggXApJ
bmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oJKHJl
dmlzaW9uIDk0MDY3KQorKysgU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52
Y3Byb2oJKHdvcmtpbmcgY29weSkKQEAgLTQ4MzMwLDExNSArNDgzMzAsMTEgQEAKIAkJCQk+CiAJ
CQk8L0ZpbGU+CiAJCQk8RmlsZQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cZG9tXFNlbGVjdG9yTm9k
ZUxpc3QuY3BwIgotCQkJCT4KLQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24KLQkJCQkJTmFtZT0iRGVi
dWd8V2luMzIiCi0JCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIgotCQkJCQk+Ci0JCQkJCTxU
b29sCi0JCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgotCQkJCQkvPgotCQkJCTwvRmlsZUNv
bmZpZ3VyYXRpb24+Ci0JCQkJPEZpbGVDb25maWd1cmF0aW9uCi0JCQkJCU5hbWU9IlJlbGVhc2V8
V2luMzIiCi0JCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIgotCQkJCQk+Ci0JCQkJCTxUb29s
Ci0JCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgotCQkJCQkvPgotCQkJCTwvRmlsZUNvbmZp
Z3VyYXRpb24+Ci0JCQkJPEZpbGVDb25maWd1cmF0aW9uCi0JCQkJCU5hbWU9IkRlYnVnX0NhaXJv
X0NGTGl0ZXxXaW4zMiIKLQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiCi0JCQkJCT4KLQkJ
CQkJPFRvb2wKLQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCi0JCQkJCS8+Ci0JCQkJPC9G
aWxlQ29uZmlndXJhdGlvbj4KLQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24KLQkJCQkJTmFtZT0iUmVs
ZWFzZV9DYWlyb19DRkxpdGV8V2luMzIiCi0JCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIgot
CQkJCQk+Ci0JCQkJCTxUb29sCi0JCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgotCQkJCQkv
PgotCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+Ci0JCQkJPEZpbGVDb25maWd1cmF0aW9uCi0JCQkJ
CU5hbWU9IkRlYnVnX0FsbHxXaW4zMiIKLQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiCi0J
CQkJCT4KLQkJCQkJPFRvb2wKLQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCi0JCQkJCS8+
Ci0JCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4KLQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24KLQkJCQkJ
TmFtZT0iUHJvZHVjdGlvbnxXaW4zMiIKLQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiCi0J
CQkJCT4KLQkJCQkJPFRvb2wKLQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCi0JCQkJCS8+
Ci0JCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4KLQkJCTwvRmlsZT4KLQkJCTxGaWxlCi0JCQkJUmVs
YXRpdmVQYXRoPSIuLlxkb21cU2VsZWN0b3JOb2RlTGlzdC5jcHAiCi0JCQkJPgotCQkJCTxGaWxl
Q29uZmlndXJhdGlvbgotCQkJCQlOYW1lPSJEZWJ1Z3xXaW4zMiIKLQkJCQkJRXhjbHVkZWRGcm9t
QnVpbGQ9InRydWUiCi0JCQkJCT4KLQkJCQkJPFRvb2wKLQkJCQkJCU5hbWU9IlZDQ0xDb21waWxl
clRvb2wiCi0JCQkJCS8+Ci0JCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4KLQkJCQk8RmlsZUNvbmZp
Z3VyYXRpb24KLQkJCQkJTmFtZT0iUmVsZWFzZXxXaW4zMiIKLQkJCQkJRXhjbHVkZWRGcm9tQnVp
bGQ9InRydWUiCi0JCQkJCT4KLQkJCQkJPFRvb2wKLQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRv
b2wiCi0JCQkJCS8+Ci0JCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4KLQkJCQk8RmlsZUNvbmZpZ3Vy
YXRpb24KLQkJCQkJTmFtZT0iRGVidWdfQ2Fpcm9fQ0ZMaXRlfFdpbjMyIgotCQkJCQlFeGNsdWRl
ZEZyb21CdWlsZD0idHJ1ZSIKLQkJCQkJPgotCQkJCQk8VG9vbAotCQkJCQkJTmFtZT0iVkNDTENv
bXBpbGVyVG9vbCIKLQkJCQkJLz4KLQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPgotCQkJCTxGaWxl
Q29uZmlndXJhdGlvbgotCQkJCQlOYW1lPSJSZWxlYXNlX0NhaXJvX0NGTGl0ZXxXaW4zMiIKLQkJ
CQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiCi0JCQkJCT4KLQkJCQkJPFRvb2wKLQkJCQkJCU5h
bWU9IlZDQ0xDb21waWxlclRvb2wiCi0JCQkJCS8+Ci0JCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4K
LQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24KLQkJCQkJTmFtZT0iRGVidWdfQWxsfFdpbjMyIgotCQkJ
CQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSIKLQkJCQkJPgotCQkJCQk8VG9vbAotCQkJCQkJTmFt
ZT0iVkNDTENvbXBpbGVyVG9vbCIKLQkJCQkJLz4KLQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPgot
CQkJCTxGaWxlQ29uZmlndXJhdGlvbgotCQkJCQlOYW1lPSJQcm9kdWN0aW9ufFdpbjMyIgotCQkJ
CQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSIKLQkJCQkJPgotCQkJCQk8VG9vbAotCQkJCQkJTmFt
ZT0iVkNDTENvbXBpbGVyVG9vbCIKLQkJCQkJLz4KLQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPgot
CQkJPC9GaWxlPgotCQkJPEZpbGUKLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGRvbVxTZWxlY3Rvck5v
ZGVMaXN0LmgiCisJCQkJUmVsYXRpdmVQYXRoPSIuLlxkb21cU2VsZWN0b3JRdWVyeS5oIgogCQkJ
CT4KIAkJCTwvRmlsZT4KIAkJCTxGaWxlCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxkb21cU2VsZWN0
b3JOb2RlTGlzdC5oIgorCQkJCVJlbGF0aXZlUGF0aD0iLi5cZG9tXFNlbGVjdG9yUXVlcnkuY3Bw
IgogCQkJCT4KIAkJCTwvRmlsZT4KIAkJCTxGaWxlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiA5NDA2NykKKysr
IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2lu
ZyBjb3B5KQpAQCAtNTA5OCw4ICs1MDk4LDYgQEAKIAkJQkM3RkE2MjEwRDFGMENCRDAwREIyMkE5
IC8qIER5bmFtaWNOb2RlTGlzdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQkM3RkE2MUYwRDFGMENCRDAwREIyMkE5IC8qIER5bmFtaWNOb2RlTGlzdC5o
ICovOyB9OwogCQlCQzdGQTYyRDBEMUYwRUZGMDBEQjIyQTkgLyogU3RhdGljTm9kZUxpc3QuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDN0ZBNjJCMEQx
RjBFRkYwMERCMjJBOSAvKiBTdGF0aWNOb2RlTGlzdC5oICovOyB9OwogCQlCQzdGQTYyRTBEMUYw
RUZGMDBEQjIyQTkgLyogU3RhdGljTm9kZUxpc3QuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkM3RkE2MkMwRDFGMEVGRjAwREIyMkE5IC8qIFN0YXRp
Y05vZGVMaXN0LmNwcCAqLzsgfTsKLQkJQkM3RkE2ODEwRDFGMTY3OTAwREIyMkE5IC8qIFNlbGVj
dG9yTm9kZUxpc3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEJDN0ZBNjdGMEQxRjE2NzkwMERCMjJBOSAvKiBTZWxlY3Rvck5vZGVMaXN0LmggKi87IH07
Ci0JCUJDN0ZBNjgyMEQxRjE2NzkwMERCMjJBOSAvKiBTZWxlY3Rvck5vZGVMaXN0LmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDN0ZBNjgwMEQxRjE2
NzkwMERCMjJBOSAvKiBTZWxlY3Rvck5vZGVMaXN0LmNwcCAqLzsgfTsKIAkJQkM4MEM5ODcwQ0Qy
OTRFRTAwQTBCN0IzIC8qIENTU1RpbWluZ0Z1bmN0aW9uVmFsdWUuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkM4MEM5ODUwQ0QyOTRFRTAwQTBCN0Iz
IC8qIENTU1RpbWluZ0Z1bmN0aW9uVmFsdWUuY3BwICovOyB9OwogCQlCQzgwQzk4ODBDRDI5NEVF
MDBBMEI3QjMgLyogQ1NTVGltaW5nRnVuY3Rpb25WYWx1ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkM4MEM5ODYwQ0QyOTRFRTAwQTBCN0IzIC8qIENT
U1RpbWluZ0Z1bmN0aW9uVmFsdWUuaCAqLzsgfTsKIAkJQkM4MjQzMjkwRDBDRThBMjAwNDYwQzhG
IC8qIEpTU1FMRXJyb3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEJDODI0MzI1MEQwQ0U4QTIwMDQ2MEM4RiAvKiBKU1NRTEVycm9yLmggKi87IH07CkBA
IC01NjUyLDYgKzU2NTAsOCBAQAogCQlFNDQ2MTQzQzBDRDY4OUNDMDBGQURBNzUgLyogSlNIVE1M
U291cmNlRWxlbWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gRTRCNDIzNzIwQ0JGQjZFMDAwQUYyRUNFIC8qIEpTSFRNTFNvdXJjZUVsZW1lbnQuaCAq
LzsgfTsKIAkJRTQ0NjE0NTEwQ0Q2OEEzNTAwRkFEQTc1IC8qIFJlbmRlclZpZGVvLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEU0QjQxRTMzMENCRkI2
MDkwMEFGMkVDRSAvKiBSZW5kZXJWaWRlby5jcHAgKi87IH07CiAJCUU0NDYxNDUyMENENjhBMzUw
MEZBREE3NSAvKiBSZW5kZXJWaWRlby5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gRTRCNDFFMzQwQ0JGQjYwOTAwQUYyRUNFIC8qIFJlbmRlclZpZGVvLmgg
Ki87IH07CisJCUU0NTMyMkFCMTQwQ0UyNjcwMDVBMEY5MiAvKiBTZWxlY3RvclF1ZXJ5LmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEU0NTMyMkE5MTQw
Q0UyNjcwMDVBMEY5MiAvKiBTZWxlY3RvclF1ZXJ5LmNwcCAqLzsgfTsKKwkJRTQ1MzIyQUMxNDBD
RTI2NzAwNUEwRjkyIC8qIFNlbGVjdG9yUXVlcnkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEU0NTMyMkFBMTQwQ0UyNjcwMDVBMEY5MiAvKiBTZWxlY3Rv
clF1ZXJ5LmggKi87IH07CiAJCUU0NjJBNEExMTEzRTcxQkUwMDRBNDIyMCAvKiBJbnRQb2ludEhh
c2guaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEU0NjJB
NEEwMTEzRTcxQkUwMDRBNDIyMCAvKiBJbnRQb2ludEhhc2guaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlFNDc3OEI3RjExNUE1ODFBMDBCNUQzNzIg
LyogSlNDdXN0b21FdmVudC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBFNDc3OEI3RDExNUE1ODFBMDBCNUQzNzIgLyogSlNDdXN0b21FdmVudC5jcHAg
Ki87IH07CiAJCUU0Nzc4QjgwMTE1QTU4MUEwMEI1RDM3MiAvKiBKU0N1c3RvbUV2ZW50LmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFNDc3OEI3RTExNUE1
ODFBMDBCNUQzNzIgLyogSlNDdXN0b21FdmVudC5oICovOyB9OwpAQCAtMTE4MTcsOCArMTE4MTcs
NiBAQAogCQlCQzdGQTYxRjBEMUYwQ0JEMDBEQjIyQTkgLyogRHluYW1pY05vZGVMaXN0LmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IER5bmFtaWNOb2RlTGlzdC5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlCQzdGQTYyQjBEMUYwRUZGMDBEQjIyQTkgLyogU3RhdGlj
Tm9kZUxpc3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU3RhdGljTm9kZUxp
c3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkM3RkE2MkMwRDFGMEVGRjAwREIy
MkE5IC8qIFN0YXRpY05vZGVMaXN0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IFN0YXRpY05vZGVMaXN0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJ
QkM3RkE2N0YwRDFGMTY3OTAwREIyMkE5IC8qIFNlbGVjdG9yTm9kZUxpc3QuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2VsZWN0b3JOb2RlTGlzdC5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwotCQlCQzdGQTY4MDBEMUYxNjc5MDBEQjIyQTkgLyogU2VsZWN0b3JOb2Rl
TGlzdC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTZWxlY3Rvck5v
ZGVMaXN0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkM4MEM5ODUwQ0QyOTRF
RTAwQTBCN0IzIC8qIENTU1RpbWluZ0Z1bmN0aW9uVmFsdWUuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENTU1RpbWluZ0Z1bmN0aW9uVmFsdWUuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlCQzgwQzk4NjBDRDI5NEVFMDBBMEI3QjMgLyogQ1NTVGlt
aW5nRnVuY3Rpb25WYWx1ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ1NT
VGltaW5nRnVuY3Rpb25WYWx1ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQzgy
NDMyNTBEMENFOEEyMDA0NjBDOEYgLyogSlNTUUxFcnJvci5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBKU1NRTEVycm9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBA
IC0xMjQwNSw2ICsxMjQwMyw4IEBACiAJCUU0NDYxNDExMENENjgyNjkwMEZBREE3NSAvKiBKU01l
ZGlhRXJyb3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNNZWRpYUVycm9y
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUU0NDYxNDEyMENENjgyNjkwMEZBREE3
NSAvKiBKU1RpbWVSYW5nZXMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gSlNUaW1lUmFuZ2VzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTQ0NjE0
MTMwQ0Q2ODI2OTAwRkFEQTc1IC8qIEpTVGltZVJhbmdlcy5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBKU1RpbWVSYW5nZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJRTQ1MzIyQTkxNDBDRTI2NzAwNUEwRjkyIC8qIFNlbGVjdG9yUXVlcnkuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU2VsZWN0b3JRdWVyeS5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCUU0NTMyMkFBMTQwQ0UyNjcwMDVBMEY5MiAvKiBTZWxlY3Rv
clF1ZXJ5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNlbGVjdG9yUXVlcnku
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTQ2MkE0QTAxMTNFNzFCRTAwNEE0MjIw
IC8qIEludFBvaW50SGFzaC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbnRQ
b2ludEhhc2guaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTQ3NzhCN0QxMTVBNTgx
QTAwQjVEMzcyIC8qIEpTQ3VzdG9tRXZlbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gSlNDdXN0b21FdmVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUU0Nzc4QjdFMTE1QTU4MUEwMEI1RDM3MiAvKiBKU0N1c3RvbUV2ZW50LmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTQ3VzdG9tRXZlbnQuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKQEAgLTIwMDYyLDggKzIwMDYyLDggQEAKIAkJCQk4QTQxM0FERTEyMDdCQkE1
MDA4MjAxNkUgLyogU2NyaXB0UnVubmVyLmggKi8sCiAJCQkJMDg0QUVCRTIwRkI1MDVGQTAwMzg0
ODNFIC8qIFNlbGVjdEVsZW1lbnQuY3BwICovLAogCQkJCTA4NEFFQkUzMEZCNTA1RkEwMDM4NDgz
RSAvKiBTZWxlY3RFbGVtZW50LmggKi8sCi0JCQkJQkM3RkE2ODAwRDFGMTY3OTAwREIyMkE5IC8q
IFNlbGVjdG9yTm9kZUxpc3QuY3BwICovLAotCQkJCUJDN0ZBNjdGMEQxRjE2NzkwMERCMjJBOSAv
KiBTZWxlY3Rvck5vZGVMaXN0LmggKi8sCisJCQkJRTQ1MzIyQTkxNDBDRTI2NzAwNUEwRjkyIC8q
IFNlbGVjdG9yUXVlcnkuY3BwICovLAorCQkJCUU0NTMyMkFBMTQwQ0UyNjcwMDVBMEY5MiAvKiBT
ZWxlY3RvclF1ZXJ5LmggKi8sCiAJCQkJQTc2NkNGOEIxMzgxMEUwQzAwMTFBMEIzIC8qIFNoYWRv
d0NvbnRlbnRFbGVtZW50LmNwcCAqLywKIAkJCQlBNzRDMkQzQjEzODExRTBEMDBGODM1NzIgLyog
U2hhZG93Q29udGVudEVsZW1lbnQuaCAqLywKIAkJCQlBNzFDMzBCNjEzODEyNjVFMDBEQkMzNTEg
LyogU2hhZG93SW5jbHVzaW9uU2VsZWN0b3IuY3BwICovLApAQCAtMjI4MzksNyArMjI4MzksNiBA
QAogCQkJCTM3MUY0RkZDMEQyNUU3RjMwMEVDRTBENSAvKiBTZWdtZW50ZWRGb250RGF0YS5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJQjJDM0RBMkYwRDAwNkMxRDAwRUY2RjI2IC8qIFNlZ21lbnRlZFN0
cmluZy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMDg0QUVCRTUwRkI1MDVGQTAwMzg0ODNFIC8qIFNl
bGVjdEVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAotCQkJCUJDN0ZBNjgxMEQxRjE2NzkwMERCMjJB
OSAvKiBTZWxlY3Rvck5vZGVMaXN0LmggaW4gSGVhZGVycyAqLywKIAkJCQlBNzVFNDk3NjEwNzUy
QUNCMDBDOUI4OTYgLyogU2VyaWFsaXplZFNjcmlwdFZhbHVlLmggaW4gSGVhZGVycyAqLywKIAkJ
CQk5MzMwOUUxMDA5OUU2NDkyMDA1NkU1ODEgLyogU2V0Tm9kZUF0dHJpYnV0ZUNvbW1hbmQuaCBp
biBIZWFkZXJzICovLAogCQkJCUI4REJEQjRDMTMwQjBGOEEwMEY1Q0RCMSAvKiBTZXRTZWxlY3Rp
b25Db21tYW5kLmggaW4gSGVhZGVycyAqLywKQEAgLTIzNDQ4LDYgKzIzNDQ3LDcgQEAKIAkJCQk5
MzUwMEYzMjEzRkRFM0JFMDA5OUVDMjQgLyogTlNTY3JvbGxlckltcERldGFpbHMuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUQwQTNBNzMxMTQwNUEzOTgwMEZCOEVEMyAvKiBSZXNvdXJjZUxvYWRlck9w
dGlvbnMuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDRTQzODk3MTQwQjAwNTEwMDVFNDM3RSAvKiBF
dmVudENvbnN0cnVjdG9ycy5oIGluIEhlYWRlcnMgKi8sCisJCQkJRTQ1MzIyQUMxNDBDRTI2NzAw
NUEwRjkyIC8qIFNlbGVjdG9yUXVlcnkuaCBpbiBIZWFkZXJzICovLAogCQkJCUIxMEI2OTgwMTQw
QzE3NDAwMEJDMUMyNiAvKiBXZWJWVFRUb2tlbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjEwQjY5
ODIxNDBDMTc0MDAwQkMxQzI2IC8qIFdlYlZUVFRva2VuaXplci5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkpOwpAQCAtMjU3ODEsNyArMjU3ODEsNiBAQAogCQkJCTM3MUY0RkZEMEQyNUU3RjMwMEVDRTBE
NSAvKiBTZWdtZW50ZWRGb250RGF0YS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCMkMzREEyRTBE
MDA2QzFEMDBFRjZGMjYgLyogU2VnbWVudGVkU3RyaW5nLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTA4NEFFQkU0MEZCNTA1RkEwMDM4NDgzRSAvKiBTZWxlY3RFbGVtZW50LmNwcCBpbiBTb3VyY2Vz
ICovLAotCQkJCUJDN0ZBNjgyMEQxRjE2NzkwMERCMjJBOSAvKiBTZWxlY3Rvck5vZGVMaXN0LmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCUE3NUU0OTc3MTA3NTJBQ0IwMEM5Qjg5NiAvKiBTZXJpYWxp
emVkU2NyaXB0VmFsdWUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJOTMzMDlFMEYwOTlFNjQ5MjAw
NTZFNTgxIC8qIFNldE5vZGVBdHRyaWJ1dGVDb21tYW5kLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CUI4REJEQjRCMTMwQjBGOEEwMEY1Q0RCMSAvKiBTZXRTZWxlY3Rpb25Db21tYW5kLmNwcCBpbiBT
b3VyY2VzICovLApAQCAtMjYyNTksNiArMjYyNTgsNyBAQAogCQkJCTFBMTQxNEI1MTNBMEYwNTAw
MDE5OTk2QyAvKiBXZWJLaXRGb250RmFtaWx5TmFtZXMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
REY5QUZENzMxM0ZDMzFEODAwMTVGRUI3IC8qIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlv
bk9iakMubW0gaW4gU291cmNlcyAqLywKIAkJCQlCQ0U0Mzg5QTE0MEIwMDczMDA1RTQzN0UgLyog
SlNFdmVudENvbnN0cnVjdG9ycy5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlFNDUzMjJBQjE0MENF
MjY3MDA1QTBGOTIgLyogU2VsZWN0b3JRdWVyeS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCMTBC
Njk4MTE0MEMxNzQwMDBCQzFDMjYgLyogV2ViVlRUVG9rZW5pemVyLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwpJbmRl
eDogU291cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxlU2VsZWN0b3IuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNlbGVjdG9yLmNwcAkocmV2aXNpb24gOTQwNjcp
CisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVTZWxlY3Rvci5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTg3NSw5ICs4NzUsMjAgQEAgRUluc2lkZUxpbmsgQ1NTU3R5bGVTZWxlY3Rvcjo6U2Vs
ZWN0b3JDaAogI2VuZGlmCiB9CiAKLWJvb2wgQ1NTU3R5bGVTZWxlY3Rvcjo6U2VsZWN0b3JDaGVj
a2VyOjpjaGVja1NlbGVjdG9yKENTU1NlbGVjdG9yKiBzZWwsIEVsZW1lbnQqIGVsZW1lbnQpIGNv
bnN0Citib29sIENTU1N0eWxlU2VsZWN0b3I6OlNlbGVjdG9yQ2hlY2tlcjo6Y2hlY2tTZWxlY3Rv
cihDU1NTZWxlY3Rvciogc2VsLCBFbGVtZW50KiBlbGVtZW50LCBib29sIGlzRmFzdENoZWNrYWJs
ZVNlbGVjdG9yKSBjb25zdAogewogICAgIFBzZXVkb0lkIGR5bmFtaWNQc2V1ZG8gPSBOT1BTRVVE
TzsKKyAgICBpZiAoaXNGYXN0Q2hlY2thYmxlU2VsZWN0b3IgJiYgIWVsZW1lbnQtPmlzU1ZHRWxl
bWVudCgpKSB7CisgICAgICAgIC8vIGZhc3RDaGVja1NlbGVjdG9yIGFzc3VtZXMgY2xhc3MgYW5k
IGlkIG1hdGNoIGZvciB0aGUgdG9wIHNlbGVjdG9yLgorICAgICAgICBpZiAoc2VsLT5tX21hdGNo
ID09IENTU1NlbGVjdG9yOjpDbGFzcykgeworICAgICAgICAgICAgaWYgKCEoZWxlbWVudC0+aGFz
Q2xhc3MoKSAmJiBzdGF0aWNfY2FzdDxTdHlsZWRFbGVtZW50Kj4oZWxlbWVudCktPmNsYXNzTmFt
ZXMoKS5jb250YWlucyhzZWwtPnZhbHVlKCkpKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgICAgIH0gZWxzZSBpZiAoc2VsLT5tX21hdGNoID09IENTU1NlbGVjdG9yOjpJZCkg
eworICAgICAgICAgICAgaWYgKCEoZWxlbWVudC0+aGFzSUQoKSAmJiBlbGVtZW50LT5pZEZvclN0
eWxlUmVzb2x1dGlvbigpID09IHNlbC0+dmFsdWUoKSkpCisgICAgICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgICAgICB9CisgICAgICAgIHJldHVybiBmYXN0Q2hlY2tTZWxlY3RvcihzZWws
IGVsZW1lbnQpOworICAgIH0KICAgICByZXR1cm4gY2hlY2tTZWxlY3RvcihzZWwsIGVsZW1lbnQs
IGR5bmFtaWNQc2V1ZG8sIGZhbHNlLCBmYWxzZSkgPT0gU2VsZWN0b3JNYXRjaGVzOwogfQogCkBA
IC0yMDEyLDE3ICsyMDIzLDYgQEAgaW5saW5lIGJvb2wgc2VsZWN0b3JUYWdNYXRjaGVzKGNvbnN0
IEVsZQogICAgIGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZXNwYWNlVVJJID0gc2VsZWN0b3ItPnRh
ZygpLm5hbWVzcGFjZVVSSSgpOwogICAgIHJldHVybiBuYW1lc3BhY2VVUkkgPT0gc3RhckF0b20g
fHwgbmFtZXNwYWNlVVJJID09IGVsZW1lbnQtPm5hbWVzcGFjZVVSSSgpOwogfQotCi1pbmxpbmUg
Ym9vbCBpc0Zhc3RDaGVja2FibGVTZWxlY3Rvcihjb25zdCBDU1NTZWxlY3Rvciogc2VsZWN0b3Ip
Ci17Ci0gICAgZm9yICg7IHNlbGVjdG9yOyBzZWxlY3RvciA9IHNlbGVjdG9yLT50YWdIaXN0b3J5
KCkpIHsKLSAgICAgICAgaWYgKHNlbGVjdG9yLT5yZWxhdGlvbigpICE9IENTU1NlbGVjdG9yOjpE
ZXNjZW5kYW50ICYmIHNlbGVjdG9yLT5yZWxhdGlvbigpICE9IENTU1NlbGVjdG9yOjpDaGlsZCAm
JiBzZWxlY3Rvci0+cmVsYXRpb24oKSAhPSBDU1NTZWxlY3Rvcjo6U3ViU2VsZWN0b3IpCi0gICAg
ICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIGlmIChzZWxlY3Rvci0+bV9tYXRjaCAhPSBD
U1NTZWxlY3Rvcjo6Tm9uZSAmJiBzZWxlY3Rvci0+bV9tYXRjaCAhPSBDU1NTZWxlY3Rvcjo6SWQg
JiYgc2VsZWN0b3ItPm1fbWF0Y2ggIT0gQ1NTU2VsZWN0b3I6OkNsYXNzKQotICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOwotICAgIH0KLSAgICByZXR1cm4gdHJ1ZTsKLX0KICAgICAKIHRlbXBsYXRl
IDxib29sIGNoZWNrVmFsdWUoY29uc3QgRWxlbWVudCosIEF0b21pY1N0cmluZ0ltcGwqKT4KIGlu
bGluZSBib29sIGZhc3RDaGVja1NpbmdsZVNlbGVjdG9yKGNvbnN0IENTU1NlbGVjdG9yKiYgc2Vs
ZWN0b3IsIGNvbnN0IEVsZW1lbnQqJiBlbGVtZW50LCBjb25zdCBDU1NTZWxlY3RvciomIHRvcENo
aWxkT3JTdWJzZWxlY3RvciwgY29uc3QgRWxlbWVudComIHRvcENoaWxkT3JTdWJzZWxlY3Rvck1h
dGNoRWxlbWVudCkKQEAgLTIxMTYsNiArMjExNiwxNyBAQCBib29sIENTU1N0eWxlU2VsZWN0b3I6
OlNlbGVjdG9yQ2hlY2tlcjo6CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKK2Jvb2wgQ1NTU3R5bGVT
ZWxlY3Rvcjo6U2VsZWN0b3JDaGVja2VyOjppc0Zhc3RDaGVja2FibGVTZWxlY3Rvcihjb25zdCBD
U1NTZWxlY3Rvciogc2VsZWN0b3IpCit7CisgICAgZm9yICg7IHNlbGVjdG9yOyBzZWxlY3RvciA9
IHNlbGVjdG9yLT50YWdIaXN0b3J5KCkpIHsKKyAgICAgICAgaWYgKHNlbGVjdG9yLT5yZWxhdGlv
bigpICE9IENTU1NlbGVjdG9yOjpEZXNjZW5kYW50ICYmIHNlbGVjdG9yLT5yZWxhdGlvbigpICE9
IENTU1NlbGVjdG9yOjpDaGlsZCAmJiBzZWxlY3Rvci0+cmVsYXRpb24oKSAhPSBDU1NTZWxlY3Rv
cjo6U3ViU2VsZWN0b3IpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIGlmIChz
ZWxlY3Rvci0+bV9tYXRjaCAhPSBDU1NTZWxlY3Rvcjo6Tm9uZSAmJiBzZWxlY3Rvci0+bV9tYXRj
aCAhPSBDU1NTZWxlY3Rvcjo6SWQgJiYgc2VsZWN0b3ItPm1fbWF0Y2ggIT0gQ1NTU2VsZWN0b3I6
OkNsYXNzKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICByZXR1cm4gdHJ1
ZTsKK30KKwogLy8gUmVjdXJzaXZlIGNoZWNrIG9mIHNlbGVjdG9ycyBhbmQgY29tYmluYXRvcnMK
IC8vIEl0IGNhbiByZXR1cm4gMyBkaWZmZXJlbnQgdmFsdWVzOgogLy8gKiBTZWxlY3Rvck1hdGNo
ZXMgICAgICAgICAtIHRoZSBzZWxlY3RvciBtYXRjaGVzIHRoZSBlbGVtZW50IGUKQEAgLTMwMzUs
NyArMzA0Niw3IEBAIFJ1bGVEYXRhOjpSdWxlRGF0YShDU1NTdHlsZVJ1bGUqIHJ1bGUsIEMKICAg
ICAsIG1fc2VsZWN0b3Ioc2VsZWN0b3IpCiAgICAgLCBtX3NwZWNpZmljaXR5KHNlbGVjdG9yLT5z
cGVjaWZpY2l0eSgpKQogICAgICwgbV9wb3NpdGlvbihwb3NpdGlvbikKLSAgICAsIG1faGFzRmFz
dENoZWNrYWJsZVNlbGVjdG9yKGlzRmFzdENoZWNrYWJsZVNlbGVjdG9yKHNlbGVjdG9yKSkKKyAg
ICAsIG1faGFzRmFzdENoZWNrYWJsZVNlbGVjdG9yKENTU1N0eWxlU2VsZWN0b3I6OlNlbGVjdG9y
Q2hlY2tlcjo6aXNGYXN0Q2hlY2thYmxlU2VsZWN0b3Ioc2VsZWN0b3IpKQogICAgICwgbV9oYXNN
dWx0aXBhcnRTZWxlY3RvcihzZWxlY3Rvci0+dGFnSGlzdG9yeSgpKQogICAgICwgbV9oYXNUb3BT
ZWxlY3Rvck1hdGNoaW5nSFRNTEJhc2VkT25SdWxlSGFzaChpc1NlbGVjdG9yTWF0Y2hpbmdIVE1M
QmFzZWRPblJ1bGVIYXNoKHNlbGVjdG9yKSkKIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9D
U1NTdHlsZVNlbGVjdG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL0NTU1N0
eWxlU2VsZWN0b3IuaAkocmV2aXNpb24gOTQwNjcpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
U3R5bGVTZWxlY3Rvci5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNzUsMTAgKzI3NSwxMSBAQCBwdWJs
aWM6CiAgICAgICAgIHB1YmxpYzoKICAgICAgICAgICAgIFNlbGVjdG9yQ2hlY2tlcihEb2N1bWVu
dCosIGJvb2wgc3RyaWN0UGFyc2luZyk7CiAKLSAgICAgICAgICAgIGJvb2wgY2hlY2tTZWxlY3Rv
cihDU1NTZWxlY3RvciosIEVsZW1lbnQqKSBjb25zdDsKKyAgICAgICAgICAgIGJvb2wgY2hlY2tT
ZWxlY3RvcihDU1NTZWxlY3RvciosIEVsZW1lbnQqLCBib29sIGlzRmFzdENoZWNrYWJsZVNlbGVj
dG9yID0gZmFsc2UpIGNvbnN0OwogICAgICAgICAgICAgU2VsZWN0b3JNYXRjaCBjaGVja1NlbGVj
dG9yKENTU1NlbGVjdG9yKiwgRWxlbWVudCosIFBzZXVkb0lkJiBkeW5hbWljUHNldWRvLCBib29s
IGlzU3ViU2VsZWN0b3IsIGJvb2wgZW5jb3VudGVyZWRMaW5rLCBSZW5kZXJTdHlsZSogPSAwLCBS
ZW5kZXJTdHlsZSogZWxlbWVudFBhcmVudFN0eWxlID0gMCkgY29uc3Q7CiAgICAgICAgICAgICBi
b29sIGNoZWNrT25lU2VsZWN0b3IoQ1NTU2VsZWN0b3IqLCBFbGVtZW50KiwgUHNldWRvSWQmIGR5
bmFtaWNQc2V1ZG8sIGJvb2wgaXNTdWJTZWxlY3RvciwgYm9vbCBlbmNvdW50ZXJlZExpbmssIFJl
bmRlclN0eWxlKiwgUmVuZGVyU3R5bGUqIGVsZW1lbnRQYXJlbnRTdHlsZSkgY29uc3Q7CiAgICAg
ICAgICAgICBib29sIGNoZWNrU2Nyb2xsYmFyUHNldWRvQ2xhc3MoQ1NTU2VsZWN0b3IqLCBQc2V1
ZG9JZCYgZHluYW1pY1BzZXVkbykgY29uc3Q7CisgICAgICAgICAgICBzdGF0aWMgYm9vbCBpc0Zh
c3RDaGVja2FibGVTZWxlY3Rvcihjb25zdCBDU1NTZWxlY3RvciopOwogICAgICAgICAgICAgc3Rh
dGljIGJvb2wgZmFzdENoZWNrU2VsZWN0b3IoY29uc3QgQ1NTU2VsZWN0b3IqLCBjb25zdCBFbGVt
ZW50Kik7CiAKICAgICAgICAgICAgIEVJbnNpZGVMaW5rIGRldGVybWluZUxpbmtTdGF0ZShFbGVt
ZW50KiBlbGVtZW50KSBjb25zdDsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9ET01BbGxJbk9u
ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL0RPTUFsbEluT25lLmNwcAko
cmV2aXNpb24gOTQwNjcpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vRE9NQWxsSW5PbmUuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0xMTUsNyArMTE1LDcgQEAKICNpbmNsdWRlICJTY3JpcHRSdW5uZXIu
Y3BwIgogI2luY2x1ZGUgIlNjcmlwdGFibGVEb2N1bWVudFBhcnNlci5jcHAiCiAjaW5jbHVkZSAi
U2VsZWN0RWxlbWVudC5jcHAiCi0jaW5jbHVkZSAiU2VsZWN0b3JOb2RlTGlzdC5jcHAiCisjaW5j
bHVkZSAiU2VsZWN0b3JRdWVyeS5jcHAiCiAjaW5jbHVkZSAiU2hhZG93Q29udGVudEVsZW1lbnQu
Y3BwIgogI2luY2x1ZGUgIlNoYWRvd0luY2x1c2lvblNlbGVjdG9yLmNwcCIKICNpbmNsdWRlICJT
aGFkb3dSb290LmNwcCIKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAJKHJldmlzaW9uIDk0MDY3KQorKysg
U291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04MSw3ICs4MSw3
IEBACiAjaW5jbHVkZSAiUmVuZGVyVGV4dENvbnRyb2wuaCIKICNpbmNsdWRlICJSZW5kZXJWaWV3
LmgiCiAjaW5jbHVkZSAiU2NvcGVkRXZlbnRRdWV1ZS5oIgotI2luY2x1ZGUgIlNlbGVjdG9yTm9k
ZUxpc3QuaCIKKyNpbmNsdWRlICJTZWxlY3RvclF1ZXJ5LmgiCiAjaW5jbHVkZSAiU2hhZG93Um9v
dC5oIgogI2luY2x1ZGUgIlN0YXRpY05vZGVMaXN0LmgiCiAjaW5jbHVkZSAiVGFnTm9kZUxpc3Qu
aCIKQEAgLTE3NjUsMjkgKzE3NjUsOSBAQCBQYXNzUmVmUHRyPEVsZW1lbnQ+IE5vZGU6OnF1ZXJ5
U2VsZWN0b3IoCiAgICAgICAgIGVjID0gTkFNRVNQQUNFX0VSUjsKICAgICAgICAgcmV0dXJuIDA7
CiAgICAgfQotCi0gICAgQ1NTU3R5bGVTZWxlY3Rvcjo6U2VsZWN0b3JDaGVja2VyIHNlbGVjdG9y
Q2hlY2tlcihkb2N1bWVudCgpLCBzdHJpY3RQYXJzaW5nKTsKLQotICAgIC8vIEZJWE1FOiB3ZSBj
b3VsZCBhbHNvIG9wdGltaXplIGZvciB0aGUgdGhlIFtpZD0iZm9vIl0gY2FzZQotICAgIGlmIChz
dHJpY3RQYXJzaW5nICYmIGluRG9jdW1lbnQoKSAmJiBxdWVyeVNlbGVjdG9yTGlzdC5oYXNPbmVT
ZWxlY3RvcigpICYmIHF1ZXJ5U2VsZWN0b3JMaXN0LmZpcnN0KCktPm1fbWF0Y2ggPT0gQ1NTU2Vs
ZWN0b3I6OklkKSB7Ci0gICAgICAgIEVsZW1lbnQqIGVsZW1lbnQgPSB0cmVlU2NvcGUoKS0+Z2V0
RWxlbWVudEJ5SWQocXVlcnlTZWxlY3Rvckxpc3QuZmlyc3QoKS0+dmFsdWUoKSk7Ci0gICAgICAg
IGlmIChlbGVtZW50ICYmIChpc0RvY3VtZW50Tm9kZSgpIHx8IGVsZW1lbnQtPmlzRGVzY2VuZGFu
dE9mKHRoaXMpKSAmJiBzZWxlY3RvckNoZWNrZXIuY2hlY2tTZWxlY3RvcihxdWVyeVNlbGVjdG9y
TGlzdC5maXJzdCgpLCBlbGVtZW50KSkKLSAgICAgICAgICAgIHJldHVybiBlbGVtZW50OwotICAg
ICAgICByZXR1cm4gMDsKLSAgICB9Ci0KLSAgICAvLyBGSVhNRTogV2UgY2FuIHNwZWVkIHRoaXMg
dXAgYnkgaW1wbGVtZW50aW5nIGNhY2hpbmcgc2ltaWxhciB0byB0aGUgb25lIHVzZSBieSBnZXRF
bGVtZW50QnlJZAotICAgIGZvciAoTm9kZSogbiA9IGZpcnN0Q2hpbGQoKTsgbjsgbiA9IG4tPnRy
YXZlcnNlTmV4dE5vZGUodGhpcykpIHsKLSAgICAgICAgaWYgKG4tPmlzRWxlbWVudE5vZGUoKSkg
ewotICAgICAgICAgICAgRWxlbWVudCogZWxlbWVudCA9IHN0YXRpY19jYXN0PEVsZW1lbnQqPihu
KTsKLSAgICAgICAgICAgIGZvciAoQ1NTU2VsZWN0b3IqIHNlbGVjdG9yID0gcXVlcnlTZWxlY3Rv
ckxpc3QuZmlyc3QoKTsgc2VsZWN0b3I7IHNlbGVjdG9yID0gQ1NTU2VsZWN0b3JMaXN0OjpuZXh0
KHNlbGVjdG9yKSkgewotICAgICAgICAgICAgICAgIGlmIChzZWxlY3RvckNoZWNrZXIuY2hlY2tT
ZWxlY3RvcihzZWxlY3RvciwgZWxlbWVudCkpCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiBl
bGVtZW50OwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfQogICAgIAotICAgIHJldHVy
biAwOworICAgIFNlbGVjdG9yUXVlcnkgc2VsZWN0b3JRdWVyeSh0aGlzLCBxdWVyeVNlbGVjdG9y
TGlzdCk7CisgICAgcmV0dXJuIHNlbGVjdG9yUXVlcnkucXVlcnlGaXJzdCgpOwogfQogCiBQYXNz
UmVmUHRyPE5vZGVMaXN0PiBOb2RlOjpxdWVyeVNlbGVjdG9yQWxsKGNvbnN0IFN0cmluZyYgc2Vs
ZWN0b3JzLCBFeGNlcHRpb25Db2RlJiBlYykKQEAgLTE4MTMsNyArMTc5Myw4IEBAIFBhc3NSZWZQ
dHI8Tm9kZUxpc3Q+IE5vZGU6OnF1ZXJ5U2VsZWN0b3IKICAgICAgICAgcmV0dXJuIDA7CiAgICAg
fQogCi0gICAgcmV0dXJuIGNyZWF0ZVNlbGVjdG9yTm9kZUxpc3QodGhpcywgcXVlcnlTZWxlY3Rv
ckxpc3QpOworICAgIFNlbGVjdG9yUXVlcnkgc2VsZWN0b3JRdWVyeSh0aGlzLCBxdWVyeVNlbGVj
dG9yTGlzdCk7CisgICAgcmV0dXJuIHNlbGVjdG9yUXVlcnkucXVlcnlBbGwoKTsKIH0KIAogRG9j
dW1lbnQgKk5vZGU6Om93bmVyRG9jdW1lbnQoKSBjb25zdApJbmRleDogU291cmNlL1dlYkNvcmUv
ZG9tL1NlbGVjdG9yTm9kZUxpc3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Rv
bS9TZWxlY3Rvck5vZGVMaXN0LmNwcAkocmV2aXNpb24gOTQwNjcpCisrKyBTb3VyY2UvV2ViQ29y
ZS9kb20vU2VsZWN0b3JOb2RlTGlzdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNzQgKzAsMCBA
QAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNywgMjAwOCBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0g
KgotICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQotICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKiAzLiAgTmVpdGhlciB0aGUgbmFtZSBvZiBB
cHBsZSBDb21wdXRlciwgSW5jLiAoIkFwcGxlIikgbm9yIHRoZSBuYW1lcyBvZgotICogICAgIGl0
cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3Rz
IGRlcml2ZWQKLSAqICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlv
ciB3cml0dGVuIHBlcm1pc3Npb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKLSAqIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
IElNUExJRUQKLSAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKLSAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKLSAqIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTCi0gKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7Ci0gKiBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQKLSAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKLSAqIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
Ci0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIlNlbGVjdG9yTm9kZUxpc3Qu
aCIKLQotI2luY2x1ZGUgIkNTU1NlbGVjdG9yLmgiCi0jaW5jbHVkZSAiQ1NTU2VsZWN0b3JMaXN0
LmgiCi0jaW5jbHVkZSAiQ1NTU3R5bGVTZWxlY3Rvci5oIgotI2luY2x1ZGUgIkRvY3VtZW50Lmgi
Ci0jaW5jbHVkZSAiRWxlbWVudC5oIgotI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgotI2luY2x1ZGUg
IlN0YXRpY05vZGVMaXN0LmgiCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotdXNpbmcgbmFtZXNw
YWNlIEhUTUxOYW1lczsKLQotUGFzc1JlZlB0cjxTdGF0aWNOb2RlTGlzdD4gY3JlYXRlU2VsZWN0
b3JOb2RlTGlzdChOb2RlKiByb290Tm9kZSwgY29uc3QgQ1NTU2VsZWN0b3JMaXN0JiBxdWVyeVNl
bGVjdG9yTGlzdCkKLXsKLSAgICBWZWN0b3I8UmVmUHRyPE5vZGU+ID4gbm9kZXM7Ci0gICAgRG9j
dW1lbnQqIGRvY3VtZW50ID0gcm9vdE5vZGUtPmRvY3VtZW50KCk7Ci0gICAgQ1NTU2VsZWN0b3Iq
IG9ubHlTZWxlY3RvciA9IHF1ZXJ5U2VsZWN0b3JMaXN0Lmhhc09uZVNlbGVjdG9yKCkgPyBxdWVy
eVNlbGVjdG9yTGlzdC5maXJzdCgpIDogMDsKLSAgICBib29sIHN0cmljdFBhcnNpbmcgPSAhZG9j
dW1lbnQtPmluUXVpcmtzTW9kZSgpOwotCi0gICAgQ1NTU3R5bGVTZWxlY3Rvcjo6U2VsZWN0b3JD
aGVja2VyIHNlbGVjdG9yQ2hlY2tlcihkb2N1bWVudCwgc3RyaWN0UGFyc2luZyk7Ci0KLSAgICBp
ZiAoc3RyaWN0UGFyc2luZyAmJiByb290Tm9kZS0+aW5Eb2N1bWVudCgpICYmIG9ubHlTZWxlY3Rv
ciAmJiBvbmx5U2VsZWN0b3ItPm1fbWF0Y2ggPT0gQ1NTU2VsZWN0b3I6OklkICYmICFkb2N1bWVu
dC0+Y29udGFpbnNNdWx0aXBsZUVsZW1lbnRzV2l0aElkKG9ubHlTZWxlY3Rvci0+dmFsdWUoKSkp
IHsKLSAgICAgICAgRWxlbWVudCogZWxlbWVudCA9IGRvY3VtZW50LT5nZXRFbGVtZW50QnlJZChv
bmx5U2VsZWN0b3ItPnZhbHVlKCkpOwotICAgICAgICBpZiAoZWxlbWVudCAmJiAocm9vdE5vZGUt
PmlzRG9jdW1lbnROb2RlKCkgfHwgZWxlbWVudC0+aXNEZXNjZW5kYW50T2Yocm9vdE5vZGUpKSAm
JiBzZWxlY3RvckNoZWNrZXIuY2hlY2tTZWxlY3Rvcihvbmx5U2VsZWN0b3IsIGVsZW1lbnQpKQot
ICAgICAgICAgICAgbm9kZXMuYXBwZW5kKGVsZW1lbnQpOwotICAgIH0gZWxzZSB7Ci0gICAgICAg
IGZvciAoTm9kZSogbiA9IHJvb3ROb2RlLT5maXJzdENoaWxkKCk7IG47IG4gPSBuLT50cmF2ZXJz
ZU5leHROb2RlKHJvb3ROb2RlKSkgewotICAgICAgICAgICAgaWYgKG4tPmlzRWxlbWVudE5vZGUo
KSkgewotICAgICAgICAgICAgICAgIEVsZW1lbnQqIGVsZW1lbnQgPSBzdGF0aWNfY2FzdDxFbGVt
ZW50Kj4obik7Ci0gICAgICAgICAgICAgICAgZm9yIChDU1NTZWxlY3Rvciogc2VsZWN0b3IgPSBx
dWVyeVNlbGVjdG9yTGlzdC5maXJzdCgpOyBzZWxlY3Rvcjsgc2VsZWN0b3IgPSBDU1NTZWxlY3Rv
ckxpc3Q6Om5leHQoc2VsZWN0b3IpKSB7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChzZWxlY3Rv
ckNoZWNrZXIuY2hlY2tTZWxlY3RvcihzZWxlY3RvciwgZWxlbWVudCkpIHsKLSAgICAgICAgICAg
ICAgICAgICAgICAgIG5vZGVzLmFwcGVuZChuKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGJy
ZWFrOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAg
ICAgfQotICAgICAgICB9Ci0gICAgfQotICAgIAotICAgIHJldHVybiBTdGF0aWNOb2RlTGlzdDo6
YWRvcHQobm9kZXMpOwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9kb20vU2VsZWN0b3JOb2RlTGlzdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2RvbS9TZWxlY3Rvck5vZGVMaXN0LmgJKHJldmlzaW9uIDk0MDY3KQorKysgU291cmNlL1dl
YkNvcmUvZG9tL1NlbGVjdG9yTm9kZUxpc3QuaAkod29ya2luZyBjb3B5KQpAQCAtMSw0NCArMCww
IEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA3LCAyMDA4IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoK
LSAqCi0gKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiAgUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCi0gKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9m
IEFwcGxlIENvbXB1dGVyLCBJbmMuICgiQXBwbGUiKSBub3IgdGhlIG5hbWVzIG9mCi0gKiAgICAg
aXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVj
dHMgZGVyaXZlZAotICogICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHBy
aW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQotICogRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUgSU1QTElFRAotICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQotICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQotICogRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMKLSAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKLSAqIExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORAotICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgotICogVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KLSAqLwotCi0jaWZuZGVmIFNlbGVjdG9yTm9kZUxpc3RfaAotI2RlZmluZSBTZWxlY3Rvck5v
ZGVMaXN0X2gKLQotI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+Ci0KLW5hbWVzcGFjZSBXZWJD
b3JlIHsKLQotICAgIGNsYXNzIENTU1NlbGVjdG9yTGlzdDsKLSAgICBjbGFzcyBOb2RlOwotICAg
IGNsYXNzIFN0YXRpY05vZGVMaXN0OwotCi0gICAgUGFzc1JlZlB0cjxTdGF0aWNOb2RlTGlzdD4g
Y3JlYXRlU2VsZWN0b3JOb2RlTGlzdChOb2RlKiByb290Tm9kZSwgY29uc3QgQ1NTU2VsZWN0b3JM
aXN0Jik7Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIFNlbGVjdG9yTm9k
ZUxpc3RfaApJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL1NlbGVjdG9yUXVlcnkuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9TZWxlY3RvclF1ZXJ5LmNwcAkocmV2aXNpb24g
MCkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9TZWxlY3RvclF1ZXJ5LmNwcAkocmV2aXNpb24gMCkK
QEAgLTAsMCArMSwxMjEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQg
QU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICog
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJT
ZWxlY3RvclF1ZXJ5LmgiCisKKyNpbmNsdWRlICJDU1NTZWxlY3Rvckxpc3QuaCIKKyNpbmNsdWRl
ICJEb2N1bWVudC5oIgorI2luY2x1ZGUgIlN0YXRpY05vZGVMaXN0LmgiCisjaW5jbHVkZSAiU3R5
bGVkRWxlbWVudC5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1NlbGVjdG9yUXVlcnk6OlNl
bGVjdG9yUXVlcnkoTm9kZSogcm9vdE5vZGUsIGNvbnN0IENTU1NlbGVjdG9yTGlzdCYgc2VsZWN0
b3JMaXN0KQorICAgIDogbV9yb290Tm9kZShyb290Tm9kZSkKKyAgICAsIG1fc2VsZWN0b3JDaGVj
a2VyKHJvb3ROb2RlLT5kb2N1bWVudCgpLCAhcm9vdE5vZGUtPmRvY3VtZW50KCktPmluUXVpcmtz
TW9kZSgpKQoreworICAgIGZvciAoQ1NTU2VsZWN0b3IqIHNlbGVjdG9yID0gc2VsZWN0b3JMaXN0
LmZpcnN0KCk7IHNlbGVjdG9yOyBzZWxlY3RvciA9IENTU1NlbGVjdG9yTGlzdDo6bmV4dChzZWxl
Y3RvcikpCisgICAgICAgIG1fc2VsZWN0b3JzLmFwcGVuZChTZWxlY3RvckRhdGEoc2VsZWN0b3Is
IENTU1N0eWxlU2VsZWN0b3I6OlNlbGVjdG9yQ2hlY2tlcjo6aXNGYXN0Q2hlY2thYmxlU2VsZWN0
b3Ioc2VsZWN0b3IpKSk7Cit9CisgICAgCitQYXNzUmVmUHRyPE5vZGVMaXN0PiBTZWxlY3RvclF1
ZXJ5OjpxdWVyeUFsbCgpIGNvbnN0Cit7CisgICAgVmVjdG9yPFJlZlB0cjxOb2RlPiA+IHJlc3Vs
dDsKKyAgICBleGVjdXRlPGZhbHNlPihyZXN1bHQpOworICAgIHJldHVybiBTdGF0aWNOb2RlTGlz
dDo6YWRvcHQocmVzdWx0KTsKK30KKworUGFzc1JlZlB0cjxFbGVtZW50PiBTZWxlY3RvclF1ZXJ5
OjpxdWVyeUZpcnN0KCkgY29uc3QgCit7IAorICAgIFZlY3RvcjxSZWZQdHI8Tm9kZT4gPiByZXN1
bHQ7CisgICAgZXhlY3V0ZTx0cnVlPihyZXN1bHQpOworICAgIGlmIChyZXN1bHQuaXNFbXB0eSgp
KQorICAgICAgICByZXR1cm4gMDsKKyAgICBBU1NFUlQocmVzdWx0LnNpemUoKSA9PSAxKTsKKyAg
ICBBU1NFUlQocmVzdWx0LmZpcnN0KCktPmlzRWxlbWVudE5vZGUoKSk7CisgICAgcmV0dXJuIHN0
YXRpY19jYXN0PEVsZW1lbnQqPihyZXN1bHQuZmlyc3QoKS5nZXQoKSk7Cit9CisKK2Jvb2wgU2Vs
ZWN0b3JRdWVyeTo6Y2FuVXNlSWRMb29rdXAoKSBjb25zdAoreworICAgIC8vIFdlIG5lZWQgdG8g
cmV0dXJuIHRoZSBtYXRjaGVzIGluIGRvY3VtZW50IG9yZGVyLiBUbyB1c2UgaWQgbG9va3VwIHdo
aWxlIHRoZXJlIGlzIHBvc3NpYmxpdHkgb2YgbXVsdGlwbGUgbWF0Y2hlcworICAgIC8vIHdlIHdv
dWxkIG5lZWQgdG8gc29ydCB0aGUgcmVzdWx0cy4gRm9yIG5vdywganVzdCB0cmF2ZXJzZSB0aGUg
ZG9jdW1lbnQgaW4gdGhhdCBjYXNlLgorICAgIGlmIChtX3NlbGVjdG9ycy5zaXplKCkgIT0gMSkK
KyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmIChtX3NlbGVjdG9yc1swXS5zZWxlY3Rvci0+
bV9tYXRjaCAhPSBDU1NTZWxlY3Rvcjo6SWQpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBp
ZiAoIW1fcm9vdE5vZGUtPmluRG9jdW1lbnQoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
IGlmIChtX3Jvb3ROb2RlLT5kb2N1bWVudCgpLT5pblF1aXJrc01vZGUoKSkKKyAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgIGlmIChtX3Jvb3ROb2RlLT5kb2N1bWVudCgpLT5jb250YWluc011bHRp
cGxlRWxlbWVudHNXaXRoSWQobV9zZWxlY3RvcnNbMF0uc2VsZWN0b3ItPnZhbHVlKCkpKQorICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK3RlbXBsYXRlIDxib29s
IGZpcnN0TWF0Y2hPbmx5Pgordm9pZCBTZWxlY3RvclF1ZXJ5OjpleGVjdXRlKFZlY3RvcjxSZWZQ
dHI8Tm9kZT4gPiYgbWF0Y2hlZEVsZW1lbnRzKSBjb25zdAoreworICAgIGlmIChjYW5Vc2VJZExv
b2t1cCgpKSB7CisgICAgICAgIEFTU0VSVChtX3NlbGVjdG9ycy5zaXplKCkgPT0gMSk7CisgICAg
ICAgIENTU1NlbGVjdG9yKiBzZWxlY3RvciA9IG1fc2VsZWN0b3JzWzBdLnNlbGVjdG9yOworICAg
ICAgICBFbGVtZW50KiBlbGVtZW50ID0gbV9yb290Tm9kZS0+ZG9jdW1lbnQoKS0+Z2V0RWxlbWVu
dEJ5SWQoc2VsZWN0b3ItPnZhbHVlKCkpOworICAgICAgICBpZiAoIWVsZW1lbnQgfHwgIShtX3Jv
b3ROb2RlLT5pc0RvY3VtZW50Tm9kZSgpIHx8IGVsZW1lbnQtPmlzRGVzY2VuZGFudE9mKG1fcm9v
dE5vZGUpKSkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgaWYgKG1fc2VsZWN0b3JDaGVj
a2VyLmNoZWNrU2VsZWN0b3Ioc2VsZWN0b3IsIGVsZW1lbnQsIG1fc2VsZWN0b3JzWzBdLmlzRmFz
dENoZWNrYWJsZSkpCisgICAgICAgICAgICBtYXRjaGVkRWxlbWVudHMuYXBwZW5kKGVsZW1lbnQp
OworICAgICAgICByZXR1cm47CisgICAgfQorICAgIAorICAgIHVuc2lnbmVkIHNlbGVjdG9yQ291
bnQgPSBtX3NlbGVjdG9ycy5zaXplKCk7CisgICAgCisgICAgTm9kZSogbiA9IG1fcm9vdE5vZGUt
PmZpcnN0Q2hpbGQoKTsKKyAgICB3aGlsZSAobikgeworICAgICAgICBpZiAobi0+aXNFbGVtZW50
Tm9kZSgpKSB7CisgICAgICAgICAgICBFbGVtZW50KiBlbGVtZW50ID0gc3RhdGljX2Nhc3Q8RWxl
bWVudCo+KG4pOworICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHNlbGVjdG9y
Q291bnQ7ICsraSkgeworICAgICAgICAgICAgICAgIGlmIChtX3NlbGVjdG9yQ2hlY2tlci5jaGVj
a1NlbGVjdG9yKG1fc2VsZWN0b3JzW2ldLnNlbGVjdG9yLCBlbGVtZW50LCBtX3NlbGVjdG9yc1tp
XS5pc0Zhc3RDaGVja2FibGUpKSB7CisgICAgICAgICAgICAgICAgICAgIG1hdGNoZWRFbGVtZW50
cy5hcHBlbmQoZWxlbWVudCk7CisgICAgICAgICAgICAgICAgICAgIGlmIChmaXJzdE1hdGNoT25s
eSkKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYg
KGVsZW1lbnQtPmZpcnN0Q2hpbGQoKSkgeworICAgICAgICAgICAgICAgIG4gPSBlbGVtZW50LT5m
aXJzdENoaWxkKCk7CisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICB9Cisg
ICAgICAgIH0KKyAgICAgICAgd2hpbGUgKCFuLT5uZXh0U2libGluZygpKSB7CisgICAgICAgICAg
ICBuID0gbi0+cGFyZW50Tm9kZSgpOworICAgICAgICAgICAgaWYgKG4gPT0gbV9yb290Tm9kZSkK
KyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgbiA9IG4tPm5leHRT
aWJsaW5nKCk7CisgICAgfQorfQorCit9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vU2VsZWN0
b3JRdWVyeS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9TZWxlY3RvclF1ZXJ5
LmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vU2VsZWN0b3JRdWVyeS5oCShy
ZXZpc2lvbiAwKQpAQCAtMCwwICsxLDY1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAg
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJB
UyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICog
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFNlbGVjdG9yUXVlcnlf
aAorI2RlZmluZSBTZWxlY3RvclF1ZXJ5X2gKKworI2luY2x1ZGUgIkNTU1N0eWxlU2VsZWN0b3Iu
aCIKKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKyAgICAK
K2NsYXNzIE5vZGU7CitjbGFzcyBOb2RlTGlzdDsKK2NsYXNzIEVsZW1lbnQ7CitjbGFzcyBDU1NT
ZWxlY3RvcjsKK2NsYXNzIENTU1NlbGVjdG9yTGlzdDsKKworY2xhc3MgU2VsZWN0b3JRdWVyeSB7
CitwdWJsaWM6CisgICAgU2VsZWN0b3JRdWVyeShOb2RlKiByb290Tm9kZSwgY29uc3QgQ1NTU2Vs
ZWN0b3JMaXN0Jik7CisgICAgCisgICAgUGFzc1JlZlB0cjxOb2RlTGlzdD4gcXVlcnlBbGwoKSBj
b25zdDsKKyAgICBQYXNzUmVmUHRyPEVsZW1lbnQ+IHF1ZXJ5Rmlyc3QoKSBjb25zdDsKKworcHJp
dmF0ZToKKyAgICBib29sIGNhblVzZUlkTG9va3VwKCkgY29uc3Q7CisKKyAgICB0ZW1wbGF0ZSA8
Ym9vbCBmaXJzdE1hdGNoT25seT4KKyAgICB2b2lkIGV4ZWN1dGUoVmVjdG9yPFJlZlB0cjxOb2Rl
PiA+JikgY29uc3Q7CisgICAgCisgICAgc3RydWN0IFNlbGVjdG9yRGF0YSB7CisgICAgICAgIFNl
bGVjdG9yRGF0YShDU1NTZWxlY3Rvciogc2VsZWN0b3IsIGJvb2wgaXNGYXN0Q2hlY2thYmxlKSA6
IHNlbGVjdG9yKHNlbGVjdG9yKSwgaXNGYXN0Q2hlY2thYmxlKGlzRmFzdENoZWNrYWJsZSkgeyB9
CisgICAgICAgIENTU1NlbGVjdG9yKiBzZWxlY3RvcjsKKyAgICAgICAgYm9vbCBpc0Zhc3RDaGVj
a2FibGU7CisgICAgfTsKKyAgICBOb2RlKiBtX3Jvb3ROb2RlOworICAgIFZlY3RvcjxTZWxlY3Rv
ckRhdGE+IG1fc2VsZWN0b3JzOworICAgIENTU1N0eWxlU2VsZWN0b3I6OlNlbGVjdG9yQ2hlY2tl
ciBtX3NlbGVjdG9yQ2hlY2tlcjsKK307CisKK30KKworI2VuZGlmCg==
</data>
<flag name="review"
          id="101849"
          type_id="1"
          status="+"
          setter="sam"
    />
    <flag name="commit-queue"
          id="101851"
          type_id="3"
          status="-"
          setter="gyuyoung.kim"
    />
          </attachment>
      

    </bug>

</bugzilla>