<?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>120477</bug_id>
          
          <creation_ts>2013-08-29 09:35:45 -0700</creation_ts>
          <short_desc>REGRESSION(r154804): Broke Windows build (assumes LLInt features not enabled on this build) (Requested by bfulgham on #webkit).</short_desc>
          <delta_ts>2013-08-29 09:40:04 -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>New Bugs</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>
          
          <blocked>120326</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="WebKit Commit Bot">commit-queue</reporter>
          <assigned_to name="WebKit Commit Bot">commit-queue</assigned_to>
          <cc>fpizlo</cc>
    
    <cc>oliver</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>922499</commentid>
    <comment_count>0</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-08-29 09:35:45 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/154804 broke the build:
Broke Windows build (assumes LLInt features not enabled on this build) (Requested by bfulgham on #webkit).

This is an automatic bug report generated by webkitbot. If this bug
report was created because of a flaky test, please file a bug for the flaky
test (if we don&apos;t already have one on file) and dup this bug against that bug
so that we can track how often these flaky tests fail.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>922501</commentid>
    <comment_count>1</comment_count>
      <attachid>209992</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-08-29 09:36:07 -0700</bug_when>
    <thetext>Created attachment 209992
ROLLOUT of r154804

Any committer can land this patch automatically by marking it commit-queue+.  The commit-queue will build and test the patch before landing to ensure that the rollout will be successful.  This process takes approximately 15 minutes.

If you would like to land the rollout faster, you can use the following command:

  webkit-patch land-attachment ATTACHMENT_ID

where ATTACHMENT_ID is the ID of this attachment.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>922503</commentid>
    <comment_count>2</comment_count>
      <attachid>209992</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-08-29 09:40:02 -0700</bug_when>
    <thetext>Comment on attachment 209992
ROLLOUT of r154804

Clearing flags on attachment: 209992

Committed r154814: &lt;http://trac.webkit.org/changeset/154814&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>922504</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-08-29 09:40:04 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>209992</attachid>
            <date>2013-08-29 09:36:07 -0700</date>
            <delta_ts>2013-08-29 09:40:02 -0700</delta_ts>
            <desc>ROLLOUT of r154804</desc>
            <filename>bug-120477-20130829093606.patch</filename>
            <type>text/plain</type>
            <size>137873</size>
            <attacher name="WebKit Commit Bot">commit-queue</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTU0ODEzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA1
YmFlZTdlNzY3MTA3MjY2ZjRhNTUxZDg1ZDk5NGMyYWIyMDgzMGViLi5kYjI3ZDQzZjQwMjkzZjll
MWViYzcwZDNmMDJjNjE3ZmQ5NmMzMjU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNDMgQEAKKzIwMTMtMDgtMjkgIENvbW1pdCBRdWV1ZSAgPGNvbW1pdC1xdWV1ZUB3ZWJr
aXQub3JnPgorCisgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIxNTQ4MDQuCisgICAg
ICAgIGh0dHA6Ly90cmFjLndlYmtpdC5vcmcvY2hhbmdlc2V0LzE1NDgwNAorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTIwNDc3CisKKyAgICAgICAgQnJv
a2UgV2luZG93cyBidWlsZCAoYXNzdW1lcyBMTEludCBmZWF0dXJlcyBub3QgZW5hYmxlZCBvbgor
ICAgICAgICB0aGlzIGJ1aWxkKSAoUmVxdWVzdGVkIGJ5IGJmdWxnaGFtIG9uICN3ZWJraXQpLgor
CisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogR05VbWFrZWZpbGUubGlzdC5h
bToKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHBy
b2o6CisgICAgICAgICogSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoK
KyAgICAgICAgKiBUYXJnZXQucHJpOgorICAgICAgICAqIGJ5dGVjb2RlL0NvZGVCbG9jay5jcHA6
CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6bGlua0luY29taW5nQ2FsbCk6CisgICAgICAgIChK
U0M6OkNvZGVCbG9jazo6dW5saW5rSW5jb21pbmdDYWxscyk6CisgICAgICAgIChKU0M6OkNvZGVC
bG9jazo6cmVvcHRpbWl6ZSk6CisgICAgICAgIChKU0M6OlByb2dyYW1Db2RlQmxvY2s6OnJlcGxh
Y2VtZW50KToKKyAgICAgICAgKEpTQzo6RXZhbENvZGVCbG9jazo6cmVwbGFjZW1lbnQpOgorICAg
ICAgICAoSlNDOjpGdW5jdGlvbkNvZGVCbG9jazo6cmVwbGFjZW1lbnQpOgorICAgICAgICAoSlND
OjpQcm9ncmFtQ29kZUJsb2NrOjpjb21waWxlT3B0aW1pemVkKToKKyAgICAgICAgKEpTQzo6UHJv
Z3JhbUNvZGVCbG9jazo6cmVwbGFjZVdpdGhEZWZlcnJlZE9wdGltaXplZENvZGUpOgorICAgICAg
ICAoSlNDOjpFdmFsQ29kZUJsb2NrOjpjb21waWxlT3B0aW1pemVkKToKKyAgICAgICAgKEpTQzo6
RXZhbENvZGVCbG9jazo6cmVwbGFjZVdpdGhEZWZlcnJlZE9wdGltaXplZENvZGUpOgorICAgICAg
ICAoSlNDOjpGdW5jdGlvbkNvZGVCbG9jazo6Y29tcGlsZU9wdGltaXplZCk6CisgICAgICAgIChK
U0M6OkZ1bmN0aW9uQ29kZUJsb2NrOjpyZXBsYWNlV2l0aERlZmVycmVkT3B0aW1pemVkQ29kZSk6
CisgICAgICAgIChKU0M6OlByb2dyYW1Db2RlQmxvY2s6OmppdENvbXBpbGVJbXBsKToKKyAgICAg
ICAgKEpTQzo6RXZhbENvZGVCbG9jazo6aml0Q29tcGlsZUltcGwpOgorICAgICAgICAoSlNDOjpG
dW5jdGlvbkNvZGVCbG9jazo6aml0Q29tcGlsZUltcGwpOgorICAgICAgICAqIGJ5dGVjb2RlL0Nv
ZGVCbG9jay5oOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmppdFR5cGUpOgorICAgICAgICAo
SlNDOjpDb2RlQmxvY2s6OmppdENvbXBpbGUpOgorICAgICAgICAqIGJ5dGVjb2RlL0RlZmVycmVk
Q29tcGlsYXRpb25DYWxsYmFjay5jcHA6IFJlbW92ZWQuCisgICAgICAgICogYnl0ZWNvZGUvRGVm
ZXJyZWRDb21waWxhdGlvbkNhbGxiYWNrLmg6IFJlbW92ZWQuCisgICAgICAgICogZGZnL0RGR0Ry
aXZlci5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6Y29tcGlsZSk6CisgICAgICAgIChKU0M6OkRG
Rzo6dHJ5Q29tcGlsZSk6CisgICAgICAgIChKU0M6OkRGRzo6dHJ5Q29tcGlsZUZ1bmN0aW9uKToK
KyAgICAgICAgKEpTQzo6REZHOjp0cnlGaW5hbGl6ZVBsYW4pOgorICAgICAgICAqIGRmZy9ERkdE
cml2ZXIuaDoKKyAgICAgICAgKEpTQzo6REZHOjp0cnlDb21waWxlKToKKyAgICAgICAgKEpTQzo6
REZHOjp0cnlDb21waWxlRnVuY3Rpb24pOgorICAgICAgICAoSlNDOjpERkc6OnRyeUZpbmFsaXpl
UGxhbik6CisgICAgICAgICogZGZnL0RGR0ZhaWxlZEZpbmFsaXplci5jcHA6CisgICAgICAgIChK
U0M6OkRGRzo6RmFpbGVkRmluYWxpemVyOjpmaW5hbGl6ZSk6CisgICAgICAgIChKU0M6OkRGRzo6
RmFpbGVkRmluYWxpemVyOjpmaW5hbGl6ZUZ1bmN0aW9uKToKKyAgICAgICAgKiBkZmcvREZHRmFp
bGVkRmluYWxpemVyLmg6CisgICAgICAgICogZGZnL0RGR0ZpbmFsaXplci5oOgorICAgICAgICAq
IGRmZy9ERkdKSVRGaW5hbGl6ZXIuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkpJVEZpbmFsaXpl
cjo6ZmluYWxpemUpOgorICAgICAgICAoSlNDOjpERkc6OkpJVEZpbmFsaXplcjo6ZmluYWxpemVG
dW5jdGlvbik6CisgICAgICAgICogZGZnL0RGR0pJVEZpbmFsaXplci5oOgorICAgICAgICAqIGRm
Zy9ERkdPU1JFeGl0UHJlcGFyYXRpb24uY3BwOgorICAgICAgICAoSlNDOjpERkc6OnByZXBhcmVD
b2RlT3JpZ2luRm9yT1NSRXhpdCk6CisgICAgICAgICogZGZnL0RGR09wZXJhdGlvbnMuY3BwOgor
ICAgICAgICAqIGRmZy9ERkdQbGFuLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpQbGFuOjpQbGFu
KToKKyAgICAgICAgKEpTQzo6REZHOjpQbGFuOjpjb21waWxlSW5UaHJlYWRJbXBsKToKKyAgICAg
ICAgKEpTQzo6REZHOjpQbGFuOjpmaW5hbGl6ZSk6CisgICAgICAgICogZGZnL0RGR1BsYW4uaDoK
KyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHA6CisgICAgICAgIChKU0M6
OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUpOgorICAgICAgICAqIGRmZy9ERkdXb3JrbGlz
dC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6V29ya2xpc3Q6OmNvbXBsZXRlQWxsUmVhZHlQbGFu
c0ZvclZNKToKKyAgICAgICAgKEpTQzo6REZHOjpXb3JrbGlzdDo6cnVuVGhyZWFkKToKKyAgICAg
ICAgKiBmdGwvRlRMSklURmluYWxpemVyLmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpKSVRGaW5h
bGl6ZXI6OmZpbmFsaXplKToKKyAgICAgICAgKEpTQzo6RlRMOjpKSVRGaW5hbGl6ZXI6OmZpbmFs
aXplRnVuY3Rpb24pOgorICAgICAgICAqIGZ0bC9GVExKSVRGaW5hbGl6ZXIuaDoKKyAgICAgICAg
KiBoZWFwL0hlYXAuaDoKKyAgICAgICAgKiBpbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHA6Cisg
ICAgICAgIChKU0M6OkludGVycHJldGVyOjpleGVjdXRlKToKKyAgICAgICAgKEpTQzo6SW50ZXJw
cmV0ZXI6OmV4ZWN1dGVDYWxsKToKKyAgICAgICAgKEpTQzo6SW50ZXJwcmV0ZXI6OmV4ZWN1dGVD
b25zdHJ1Y3QpOgorICAgICAgICAoSlNDOjpJbnRlcnByZXRlcjo6cHJlcGFyZUZvclJlcGVhdENh
bGwpOgorICAgICAgICAqIGppdC9KSVREcml2ZXIuaDogQWRkZWQuCisgICAgICAgIChKU0M6Ompp
dENvbXBpbGVJZkFwcHJvcHJpYXRlSW1wbCk6CisgICAgICAgIChKU0M6OmppdENvbXBpbGVGdW5j
dGlvbklmQXBwcm9wcmlhdGVJbXBsKToKKyAgICAgICAgKEpTQzo6aml0Q29tcGlsZUlmQXBwcm9w
cmlhdGUpOgorICAgICAgICAoSlNDOjpqaXRDb21waWxlRnVuY3Rpb25JZkFwcHJvcHJpYXRlKToK
KyAgICAgICAgKiBqaXQvSklUU3R1YnMuY3BwOgorICAgICAgICAoSlNDOjpERUZJTkVfU1RVQl9G
VU5DVElPTik6CisgICAgICAgIChKU0M6OmppdENvbXBpbGVGb3IpOgorICAgICAgICAoSlNDOjps
YXp5TGlua0Zvcik6CisgICAgICAgICogaml0L0pJVFRvREZHRGVmZXJyZWRDb21waWxhdGlvbkNh
bGxiYWNrLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBqaXQvSklUVG9ERkdEZWZlcnJlZENvbXBp
bGF0aW9uQ2FsbGJhY2suaDogUmVtb3ZlZC4KKyAgICAgICAgKiBsbGludC9MTEludEVudHJ5cG9p
bnRzLmNwcDoKKyAgICAgICAgKEpTQzo6TExJbnQ6OmdldEZ1bmN0aW9uRW50cnlwb2ludCk6Cisg
ICAgICAgIChKU0M6OkxMSW50OjpnZXRFdmFsRW50cnlwb2ludCk6CisgICAgICAgIChKU0M6OkxM
SW50OjpnZXRQcm9ncmFtRW50cnlwb2ludCk6CisgICAgICAgICogbGxpbnQvTExJbnRFbnRyeXBv
aW50cy5oOgorICAgICAgICAoSlNDOjpMTEludDo6Z2V0RW50cnlwb2ludCk6CisgICAgICAgICog
bGxpbnQvTExJbnRTbG93UGF0aHMuY3BwOgorICAgICAgICAoSlNDOjpMTEludDo6aml0Q29tcGls
ZUFuZFNldEhldXJpc3RpY3MpOgorICAgICAgICAoSlNDOjpMTEludDo6c2V0VXBDYWxsKToKKyAg
ICAgICAgKiBydW50aW1lL0FycmF5UHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6aXNOdW1l
cmljQ29tcGFyZUZ1bmN0aW9uKToKKyAgICAgICAgKiBydW50aW1lL0NvbW1vblNsb3dQYXRocy5j
cHA6CisgICAgICAgICogcnVudGltZS9Db21waWxhdGlvblJlc3VsdC5jcHA6CisgICAgICAgIChX
VEY6OnByaW50SW50ZXJuYWwpOgorICAgICAgICAqIHJ1bnRpbWUvQ29tcGlsYXRpb25SZXN1bHQu
aDoKKyAgICAgICAgKiBydW50aW1lL0V4ZWN1dGFibGUuY3BwOgorICAgICAgICAoSlNDOjpFdmFs
RXhlY3V0YWJsZTo6Y29tcGlsZU9wdGltaXplZCk6CisgICAgICAgIChKU0M6OkV2YWxFeGVjdXRh
YmxlOjpqaXRDb21waWxlKToKKyAgICAgICAgKEpTQzo6RXZhbEV4ZWN1dGFibGU6OmNvbXBpbGVJ
bnRlcm5hbCk6CisgICAgICAgIChKU0M6OkV2YWxFeGVjdXRhYmxlOjpyZXBsYWNlV2l0aERlZmVy
cmVkT3B0aW1pemVkQ29kZSk6CisgICAgICAgIChKU0M6OlByb2dyYW1FeGVjdXRhYmxlOjpjb21w
aWxlT3B0aW1pemVkKToKKyAgICAgICAgKEpTQzo6UHJvZ3JhbUV4ZWN1dGFibGU6OmppdENvbXBp
bGUpOgorICAgICAgICAoSlNDOjpQcm9ncmFtRXhlY3V0YWJsZTo6Y29tcGlsZUludGVybmFsKToK
KyAgICAgICAgKEpTQzo6UHJvZ3JhbUV4ZWN1dGFibGU6OnJlcGxhY2VXaXRoRGVmZXJyZWRPcHRp
bWl6ZWRDb2RlKToKKyAgICAgICAgKEpTQzo6RnVuY3Rpb25FeGVjdXRhYmxlOjpjb21waWxlT3B0
aW1pemVkRm9yQ2FsbCk6CisgICAgICAgIChKU0M6OkZ1bmN0aW9uRXhlY3V0YWJsZTo6Y29tcGls
ZU9wdGltaXplZEZvckNvbnN0cnVjdCk6CisgICAgICAgIChKU0M6OkZ1bmN0aW9uRXhlY3V0YWJs
ZTo6aml0Q29tcGlsZUZvckNhbGwpOgorICAgICAgICAoSlNDOjpGdW5jdGlvbkV4ZWN1dGFibGU6
OmppdENvbXBpbGVGb3JDb25zdHJ1Y3QpOgorICAgICAgICAoSlNDOjpGdW5jdGlvbkV4ZWN1dGFi
bGU6OnByb2R1Y2VDb2RlQmxvY2tGb3IpOgorICAgICAgICAoSlNDOjpGdW5jdGlvbkV4ZWN1dGFi
bGU6OmNvbXBpbGVGb3JDYWxsSW50ZXJuYWwpOgorICAgICAgICAoSlNDOjpGdW5jdGlvbkV4ZWN1
dGFibGU6OnJlcGxhY2VXaXRoRGVmZXJyZWRPcHRpbWl6ZWRDb2RlRm9yQ2FsbCk6CisgICAgICAg
IChKU0M6OkZ1bmN0aW9uRXhlY3V0YWJsZTo6Y29tcGlsZUZvckNvbnN0cnVjdEludGVybmFsKToK
KyAgICAgICAgKEpTQzo6RnVuY3Rpb25FeGVjdXRhYmxlOjpyZXBsYWNlV2l0aERlZmVycmVkT3B0
aW1pemVkQ29kZUZvckNvbnN0cnVjdCk6CisgICAgICAgICogcnVudGltZS9FeGVjdXRhYmxlLmg6
CisgICAgICAgIChKU0M6OkV4ZWN1dGFibGVCYXNlOjpvZmZzZXRPZkpJVENvZGVXaXRoQXJpdHlD
aGVja0Zvcik6CisgICAgICAgIChKU0M6OkV4ZWN1dGFibGVCYXNlOjpvZmZzZXRPZk51bVBhcmFt
ZXRlcnNGb3IpOgorICAgICAgICAoSlNDOjpFeGVjdXRhYmxlQmFzZTo6Y2F0Y2hSb3V0aW5lRm9y
KToKKyAgICAgICAgKEpTQzo6RXZhbEV4ZWN1dGFibGU6OmNvbXBpbGUpOgorICAgICAgICAoSlND
OjpQcm9ncmFtRXhlY3V0YWJsZTo6Y29tcGlsZSk6CisgICAgICAgIChKU0M6OkZ1bmN0aW9uRXhl
Y3V0YWJsZTo6Y29tcGlsZUZvckNhbGwpOgorICAgICAgICAoSlNDOjpGdW5jdGlvbkV4ZWN1dGFi
bGU6OmNvbXBpbGVGb3JDb25zdHJ1Y3QpOgorICAgICAgICAoSlNDOjpGdW5jdGlvbkV4ZWN1dGFi
bGU6OmNvbXBpbGVGb3IpOgorICAgICAgICAoSlNDOjpGdW5jdGlvbkV4ZWN1dGFibGU6OmNvbXBp
bGVPcHRpbWl6ZWRGb3IpOgorICAgICAgICAoSlNDOjpGdW5jdGlvbkV4ZWN1dGFibGU6OnJlcGxh
Y2VXaXRoRGVmZXJyZWRPcHRpbWl6ZWRDb2RlRm9yKToKKyAgICAgICAgKEpTQzo6RnVuY3Rpb25F
eGVjdXRhYmxlOjpqaXRDb21waWxlRm9yKToKKyAgICAgICAgKiBydW50aW1lL0V4ZWN1dGlvbkhh
cm5lc3MuaDogQWRkZWQuCisgICAgICAgIChKU0M6OnByZXBhcmVGb3JFeGVjdXRpb25JbXBsKToK
KyAgICAgICAgKEpTQzo6cHJlcGFyZUZ1bmN0aW9uRm9yRXhlY3V0aW9uSW1wbCk6CisgICAgICAg
IChKU0M6Omluc3RhbGxPcHRpbWl6ZWRDb2RlKToKKyAgICAgICAgKEpTQzo6cHJlcGFyZUZvckV4
ZWN1dGlvbik6CisgICAgICAgIChKU0M6OnByZXBhcmVGdW5jdGlvbkZvckV4ZWN1dGlvbik6Cisg
ICAgICAgIChKU0M6OnJlcGxhY2VXaXRoRGVmZXJyZWRPcHRpbWl6ZWRDb2RlKToKKwogMjAxMy0w
OC0yOCAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgogCiAgICAgICAgIENvZGVCbG9j
ayBjb21waWxhdGlvbiBhbmQgaW5zdGFsbGF0aW9uIHNob3VsZCBiZSBzaW1wbGlmaWVkIGFuZCBy
YXRpb25hbGl6ZWQKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3Rz
LnR4dCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAppbmRleCAxNzhkYjgx
OTA4NzhkZDViYTA5NTA1NGJjYjM0NGU3NGY3ZmFmODczLi45OTc5YzE3MTFjMmEyYWEzMmMxOGUx
ZGRjZjdiNWRlYzMyZjQ5M2UzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01h
a2VMaXN0cy50eHQKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CkBA
IC01Myw3ICs1Myw2IEBAIHNldChKYXZhU2NyaXB0Q29yZV9TT1VSQ0VTCiAgICAgYnl0ZWNvZGUv
Q29kZU9yaWdpbi5jcHAKICAgICBieXRlY29kZS9Db2RlVHlwZS5jcHAKICAgICBieXRlY29kZS9E
RkdFeGl0UHJvZmlsZS5jcHAKLSAgICBieXRlY29kZS9EZWZlcnJlZENvbXBpbGF0aW9uQ2FsbGJh
Y2suY3BwCiAgICAgYnl0ZWNvZGUvRXhlY3V0aW9uQ291bnRlci5jcHAKICAgICBieXRlY29kZS9F
eGl0S2luZC5jcHAKICAgICBieXRlY29kZS9HZXRCeUlkU3RhdHVzLmNwcApAQCAtMjQ0LDcgKzI0
Myw2IEBAIHNldChKYXZhU2NyaXB0Q29yZV9TT1VSQ0VTCiAgICAgaml0L0pJVFN0dWJSb3V0aW5l
LmNwcAogICAgIGppdC9KSVRTdHVicy5jcHAKICAgICBqaXQvSklUVGh1bmtzLmNwcAotICAgIGpp
dC9KSVRUb0RGR0RlZmVycmVkQ29tcGlsYXRpb25DYWxsYmFjay5jcHAKICAgICBqaXQvSnVtcFJl
cGxhY2VtZW50V2F0Y2hwb2ludC5jcHAKICAgICBqaXQvVGh1bmtHZW5lcmF0b3JzLmNwcAogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvR05VbWFrZWZpbGUubGlzdC5hbSBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCmluZGV4IDJhZWRkYjE2MDc3
ODVhMDVhMjk4M2E2MjAyYTcxOTZkZGQ4NDRhZWUuLmQ0YThlZGM5ZDgyYTNiNDEyNTQxYmU0NmE3
N2E2NTg3Mzk4MDU4MWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9HTlVtYWtl
ZmlsZS5saXN0LmFtCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9HTlVtYWtlZmlsZS5saXN0
LmFtCkBAIC0xMTMsMTEgKzExMyw5IEBAIGphdmFzY3JpcHRjb3JlX3NvdXJjZXMgKz0gXAogCVNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2tXaXRoSklUVHlwZS5oIFwKIAlT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZU9yaWdpbi5jcHAgXAogCVNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlT3JpZ2luLmggXAorCVNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9EYXRhRm9ybWF0LmggXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9ERkdFeGl0UHJvZmlsZS5jcHAgXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9ERkdFeGl0UHJvZmlsZS5oIFwKLQlTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRGF0
YUZvcm1hdC5oIFwKLQlTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRGVmZXJyZWRDb21w
aWxhdGlvbkNhbGxiYWNrLmNwcCBcCi0JU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0Rl
ZmVycmVkQ29tcGlsYXRpb25DYWxsYmFjay5oIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvRXZhbENvZGVDYWNoZS5oIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
RXhlY3V0aW9uQ291bnRlci5jcHAgXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9F
eGVjdXRpb25Db3VudGVyLmggXApAQCAtNjA2LDYgKzYwNCw3IEBAIGphdmFzY3JpcHRjb3JlX3Nv
dXJjZXMgKz0gXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQ29tcGlsYXRpb25FZmZv
cnQuaCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVREaXNhc3NlbWJsZXIuY3BwIFwK
IAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVERpc2Fzc2VtYmxlci5oIFwKKwlTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVERyaXZlci5oIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVC5jcHAgXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmggXAogCVNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklURXhjZXB0aW9ucy5jcHAgXApAQCAtNjI5LDggKzYyOCw2
IEBAIGphdmFzY3JpcHRjb3JlX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklUU3R1YnNYODZDb21tb24uaCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRU
aHVua3MuY3BwIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFRodW5rcy5oIFwKLQlT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFRvREZHRGVmZXJyZWRDb21waWxhdGlvbkNhbGxi
YWNrLmNwcCBcCi0JU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRUb0RGR0RlZmVycmVkQ29t
cGlsYXRpb25DYWxsYmFjay5oIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFdyaXRl
QmFycmllci5oIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pTSW50ZXJmYWNlSklULmgg
XAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSnVtcFJlcGxhY2VtZW50V2F0Y2hwb2ludC5j
cHAgXApAQCAtNzg2LDYgKzc4Myw3IEBAIGphdmFzY3JpcHRjb3JlX3NvdXJjZXMgKz0gXAogCVNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4Y2VwdGlvbkhlbHBlcnMuaCBcCiAJU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5jcHAgXAogCVNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuaCBcCisJU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvRXhlY3V0aW9uSGFybmVzcy5oIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9GbG9hdDMyQXJyYXkuaCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRmxvYXQ2
NEFycmF5LmggXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uQ29uc3Ry
dWN0b3IuY3BwIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0
Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2ogYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qCmluZGV4IDlm
MWQ5ZWYwMWZiNzU2ODJhYTlhMmUzNTJlM2EwZWEyOWMzZTI3MjguLjVlZGRiOTg5YjViNWNkMTk1
ZWY3ZjM3M2YwMjE2OTZmNzQ0ZjFiOGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2oKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUu
dmN4cHJvagpAQCAtMzAyLDcgKzMwMiw2IEBACiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxi
eXRlY29kZVxDb2RlQmxvY2tIYXNoLmNwcCIgLz4NCiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIu
LlxieXRlY29kZVxDb2RlT3JpZ2luLmNwcCIgLz4NCiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIu
LlxieXRlY29kZVxDb2RlVHlwZS5jcHAiIC8+DQotICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5c
Ynl0ZWNvZGVcRGVmZXJyZWRDb21waWxhdGlvbkNhbGxiYWNrLmNwcCIgLz4NCiAgICAgPENsQ29t
cGlsZSBJbmNsdWRlPSIuLlxieXRlY29kZVxFeGVjdXRpb25Db3VudGVyLmNwcCIgLz4NCiAgICAg
PENsQ29tcGlsZSBJbmNsdWRlPSIuLlxieXRlY29kZVxFeGl0S2luZC5jcHAiIC8+DQogICAgIDxD
bENvbXBpbGUgSW5jbHVkZT0iLi5cYnl0ZWNvZGVcR2V0QnlJZFN0YXR1cy5jcHAiIC8+DQpAQCAt
Mzc4LDcgKzM3Nyw2IEBACiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxqaXRcSklUU3R1YlJv
dXRpbmUuY3BwIiAvPg0KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGppdFxKSVRTdHVicy5j
cHAiIC8+DQogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5caml0XEpJVFRodW5rcy5jcHAiIC8+
DQotICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5caml0XEpJVFRvREZHRGVmZXJyZWRDb21waWxh
dGlvbkNhbGxiYWNrLmNwcCIgLz4NCiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxqaXRcSnVt
cFJlcGxhY2VtZW50V2F0Y2hwb2ludC5jcHAiIC8+DQogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0i
Li5caml0XFRodW5rR2VuZXJhdG9ycy5jcHAiIC8+DQogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0i
Li5cbGxpbnRcTExJbnRDTG9vcC5jcHAiIC8+DQpAQCAtNjI1LDcgKzYyMyw2IEBACiAgICAgPENs
SW5jbHVkZSBJbmNsdWRlPSIuLlxieXRlY29kZVxDb2RlVHlwZS5oIiAvPg0KICAgICA8Q2xJbmNs
dWRlIEluY2x1ZGU9Ii4uXGJ5dGVjb2RlXENvbW1lbnQuaCIgLz4NCiAgICAgPENsSW5jbHVkZSBJ
bmNsdWRlPSIuLlxieXRlY29kZVxEYXRhRm9ybWF0LmgiIC8+DQotICAgIDxDbEluY2x1ZGUgSW5j
bHVkZT0iLi5cYnl0ZWNvZGVcRGVmZXJyZWRDb21waWxhdGlvbkNhbGxiYWNrLmgiIC8+DQogICAg
IDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cYnl0ZWNvZGVcRXZhbENvZGVDYWNoZS5oIiAvPg0KICAg
ICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGJ5dGVjb2RlXEV4ZWN1dGlvbkNvdW50ZXIuaCIgLz4N
CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxieXRlY29kZVxFeGl0S2luZC5oIiAvPg0KQEAg
LTc0Myw2ICs3NDAsNyBAQAogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5caml0XEpJVENvZGUu
aCIgLz4NCiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxqaXRcSklUQ29tcGlsYXRpb25FZmZv
cnQuaCIgLz4NCiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxqaXRcSklURGlzYXNzZW1ibGVy
LmgiIC8+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5caml0XEpJVERyaXZlci5oIiAvPg0K
ICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGppdFxKSVRFeGNlcHRpb25zLmgiIC8+DQogICAg
IDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5caml0XEpJVElubGluZXMuaCIgLz4NCiAgICAgPENsSW5j
bHVkZSBJbmNsdWRlPSIuLlxqaXRcSklUU3R1YkNhbGwuaCIgLz4NCkBAIC03NTIsNyArNzUwLDYg
QEAKICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGppdFxKSVRTdHVic1g4NkNvbW1vbi5oIiAv
Pg0KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGppdFxKSVRTdHVic1g4Nl82NC5oIiAvPg0K
ICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGppdFxKSVRUaHVua3MuaCIgLz4NCi0gICAgPENs
SW5jbHVkZSBJbmNsdWRlPSIuLlxqaXRcSklUVG9ERkdEZWZlcnJlZENvbXBpbGF0aW9uQ2FsbGJh
Y2suaCIgLz4NCiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxqaXRcSklUV3JpdGVCYXJyaWVy
LmgiIC8+DQogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5caml0XEpTSW50ZXJmYWNlSklULmgi
IC8+DQogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5caml0XEp1bXBSZXBsYWNlbWVudFdhdGNo
cG9pbnQuaCIgLz4NCkBAIC04NDAsNiArODM3LDcgQEAKICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9
Ii4uXHJ1bnRpbWVcRXJyb3JQcm90b3R5cGUuaCIgLz4NCiAgICAgPENsSW5jbHVkZSBJbmNsdWRl
PSIuLlxydW50aW1lXEV4Y2VwdGlvbkhlbHBlcnMuaCIgLz4NCiAgICAgPENsSW5jbHVkZSBJbmNs
dWRlPSIuLlxydW50aW1lXEV4ZWN1dGFibGUuaCIgLz4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRl
PSIuLlxydW50aW1lXEV4ZWN1dGlvbkhhcm5lc3MuaCIgLz4NCiAgICAgPENsSW5jbHVkZSBJbmNs
dWRlPSIuLlxydW50aW1lXEZsb2F0MzJBcnJheS5oIiAvPg0KICAgICA8Q2xJbmNsdWRlIEluY2x1
ZGU9Ii4uXHJ1bnRpbWVcRmxvYXQ2NEFycmF5LmgiIC8+DQogICAgIDxDbEluY2x1ZGUgSW5jbHVk
ZT0iLi5ccnVudGltZVxGdW5jdGlvbkNvbnN0cnVjdG9yLmgiIC8+DQpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2ogYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagppbmRleCA5ZjcxMTJiNDY4MDQ4OTQzMTU3NjU3NmZmNjdiZDFhZTk1MTEwNTY4
Li4yYjZlYTNlODdhM2M5MWM5ZWI1OTYwZTAyNDM2MGNkMTU3ODhmYWQ1IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagpAQCAtODYsNiArODYsOCBAQAogCQkwRjFFM0E0NjE1MzRDQkFGMDAw
Rjk0NTYgLyogREZHQXJndW1lbnRQb3NpdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMEYxRTNBNDMxNTM0Q0JBRDAwMEY5NDU2IC8qIERGR0FyZ3Vt
ZW50UG9zaXRpb24uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQkwRjFFM0E0NzE1MzRDQkI5MDAwRjk0NTYgLyogREZHRG91YmxlRm9ybWF0U3RhdGUu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMUUzQTQ0
MTUzNENCQUQwMDBGOTQ1NiAvKiBERkdEb3VibGVGb3JtYXRTdGF0ZS5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGMUUzQTY3MTUzQTIxRTIwMDBG
OTQ1NiAvKiBERkdTaWxlbnRSZWdpc3RlclNhdmVQbGFuLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjFFM0E2NTE1M0EyMURGMDAwRjk0NTYgLyogREZH
U2lsZW50UmVnaXN0ZXJTYXZlUGxhbi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CisJCTBGMjFDMjY4MTRCRTVGNjgwMEFEQzY0QiAvKiBKSVREcml2ZXIu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMjFDMjY2
MTRCRTVGNUUwMEFEQzY0QiAvKiBKSVREcml2ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OworCQkwRjIxQzI3QzE0QkU3Mjc2MDBBREM2NEIgLyogRXhl
Y3V0aW9uSGFybmVzcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMEYyMUMyN0ExNEJFNzI3MzAwQURDNjRCIC8qIEV4ZWN1dGlvbkhhcm5lc3MuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwRjIxQzI3RDE0
QkU3MjdBMDBBREM2NEIgLyogQ29kZVNwZWNpYWxpemF0aW9uS2luZC5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYyMUMyNzkxNEJFNzI3MzAwQURDNjRC
IC8qIENvZGVTcGVjaWFsaXphdGlvbktpbmQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQkwRjIxQzI3RjE0QkVBQTgyMDBBREM2NEIgLyogQnl0ZWNv
ZGVDb252ZW50aW9ucy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMEYyMUMyN0UxNEJFQUE4MDAwQURDNjRCIC8qIEJ5dGVjb2RlQ29udmVudGlvbnMuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwRjIzNUJE
MTE3MTc4RTFDMDA2OTBDN0YgLyogRlRMQ0FyZ3VtZW50R2V0dGVyLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMjM1QkJCMTcxNzhFMUMwMDY5MEM3
RiAvKiBGVExDQXJndW1lbnRHZXR0ZXIuY3BwICovOyB9OwpAQCAtMzQ1LDEwICszNDcsNiBAQAog
CQkwRkMwOTc5MjE0NkE2RjczMDBDRjI0NDIgLyogREZHT1NSRXhpdENvbXBpbGVyLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGQzA5NzhGMTQ2QTZG
NjMwMENGMjQ0MiAvKiBERkdPU1JFeGl0Q29tcGlsZXIuY3BwICovOyB9OwogCQkwRkMwOTdBMTE0
NkIyOENBMDBDRjI0NDIgLyogREZHVGh1bmtzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGQzA5NzlGMTQ2QjI4QzcwMENGMjQ0MiAvKiBERkdUaHVu
a3MuY3BwICovOyB9OwogCQkwRkMwOTdBMjE0NkIyOENDMDBDRjI0NDIgLyogREZHVGh1bmtzLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkMwOTdBMDE0
NkIyOEM3MDBDRjI0NDIgLyogREZHVGh1bmtzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJMEZDNzEyREUxN0NEODc3OTAwOENDOTNDIC8qIERlZmVy
cmVkQ29tcGlsYXRpb25DYWxsYmFjay5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAwRkM3MTJEQzE3Q0Q4Nzc4MDA4Q0M5M0MgLyogRGVmZXJyZWRDb21w
aWxhdGlvbkNhbGxiYWNrLmNwcCAqLzsgfTsKLQkJMEZDNzEyREYxN0NEODc3QzAwOENDOTNDIC8q
IERlZmVycmVkQ29tcGlsYXRpb25DYWxsYmFjay5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMEZDNzEyREQxN0NEODc3ODAwOENDOTNDIC8qIERlZmVycmVk
Q29tcGlsYXRpb25DYWxsYmFjay5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07Ci0JCTBGQzcxMkUyMTdDRDg3OTEwMDhDQzkzQyAvKiBKSVRUb0RGR0RlZmVy
cmVkQ29tcGlsYXRpb25DYWxsYmFjay5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAwRkM3MTJFMDE3Q0Q4NzhGMDA4Q0M5M0MgLyogSklUVG9ERkdEZWZl
cnJlZENvbXBpbGF0aW9uQ2FsbGJhY2suY3BwICovOyB9OwotCQkwRkM3MTJFMzE3Q0Q4NzkzMDA4
Q0M5M0MgLyogSklUVG9ERkdEZWZlcnJlZENvbXBpbGF0aW9uQ2FsbGJhY2suaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGQzcxMkUxMTdDRDg3OEYwMDhD
QzkzQyAvKiBKSVRUb0RGR0RlZmVycmVkQ29tcGlsYXRpb25DYWxsYmFjay5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGQzgxNTBBMTQwNDNCRjUw
MENGQTYwMyAvKiBXcml0ZUJhcnJpZXJTdXBwb3J0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkM4MTUwOTE0MDQzQkQyMDBDRkE2MDMgLyogV3JpdGVC
YXJyaWVyU3VwcG9ydC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CiAJCTBGQzgxNTBCMTQwNDNDMEUwMENGQTYwMyAvKiBXcml0ZUJhcnJpZXJTdXBwb3J0
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGQzgx
NTA4MTQwNDNCQ0EwMENGQTYwMyAvKiBXcml0ZUJhcnJpZXJTdXBwb3J0LmNwcCAqLzsgfTsKIAkJ
MEZDODE1MTUxNDA1MTE5QjAwQ0ZBNjAzIC8qIFZUYWJsZVNwZWN0cnVtLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkM4MTUxNDE0MDUxMThEMDBDRkE2
MDMgLyogVlRhYmxlU3BlY3RydW0uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwpAQCAtMTI0NSw3ICsxMjQzLDkgQEAKIAkJMEYxRTNBNDQxNTM0Q0JBRDAw
MEY5NDU2IC8qIERGR0RvdWJsZUZvcm1hdFN0YXRlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgbmFtZSA9IERGR0RvdWJsZUZvcm1hdFN0YXRlLmg7IHBhdGggPSBkZmcvREZHRG91YmxlRm9y
bWF0U3RhdGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEYxRTNBNTAxNTM3QzJD
QjAwMEY5NDU2IC8qIERGR1Nsb3dQYXRoR2VuZXJhdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgbmFtZSA9IERGR1Nsb3dQYXRoR2VuZXJhdG9yLmg7IHBhdGggPSBkZmcvREZHU2xvd1Bh
dGhHZW5lcmF0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEYxRTNBNjUxNTNB
MjFERjAwMEY5NDU2IC8qIERGR1NpbGVudFJlZ2lzdGVyU2F2ZVBsYW4uaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBuYW1lID0gREZHU2lsZW50UmVnaXN0ZXJTYXZlUGxhbi5oOyBwYXRoID0g
ZGZnL0RGR1NpbGVudFJlZ2lzdGVyU2F2ZVBsYW4uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJMEYyMUMyNjYxNEJFNUY1RTAwQURDNjRCIC8qIEpJVERyaXZlci5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBKSVREcml2ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJMEYyMUMyNzkxNEJFNzI3MzAwQURDNjRCIC8qIENvZGVTcGVjaWFsaXphdGlvbktp
bmQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ29kZVNwZWNpYWxpemF0aW9u
S2luZC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjIxQzI3QTE0QkU3MjczMDBB
REM2NEIgLyogRXhlY3V0aW9uSGFybmVzcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBFeGVjdXRpb25IYXJuZXNzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBG
MjFDMjdFMTRCRUFBODAwMEFEQzY0QiAvKiBCeXRlY29kZUNvbnZlbnRpb25zLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEJ5dGVjb2RlQ29udmVudGlvbnMuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEYyMzVCQkIxNzE3OEUxQzAwNjkwQzdGIC8qIEZUTENBcmd1
bWVudEdldHRlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBGVExD
QXJndW1lbnRHZXR0ZXIuY3BwOyBwYXRoID0gZnRsL0ZUTENBcmd1bWVudEdldHRlci5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGMjM1QkJDMTcxNzhFMUMwMDY5MEM3RiAvKiBG
VExDQXJndW1lbnRHZXR0ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gRlRM
Q0FyZ3VtZW50R2V0dGVyLmg7IHBhdGggPSBmdGwvRlRMQ0FyZ3VtZW50R2V0dGVyLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xNTE0LDEwICsxNTE0LDYgQEAKIAkJMEZDMDk3OEYx
NDZBNkY2MzAwQ0YyNDQyIC8qIERGR09TUkV4aXRDb21waWxlci5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBERkdPU1JFeGl0Q29tcGlsZXIuY3BwOyBwYXRoID0gZGZn
L0RGR09TUkV4aXRDb21waWxlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBG
QzA5NzlGMTQ2QjI4QzcwMENGMjQ0MiAvKiBERkdUaHVua3MuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBuYW1lID0gREZHVGh1bmtzLmNwcDsgcGF0aCA9IGRmZy9ERkdUaHVua3Mu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRkMwOTdBMDE0NkIyOEM3MDBDRjI0
NDIgLyogREZHVGh1bmtzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IERGR1Ro
dW5rcy5oOyBwYXRoID0gZGZnL0RGR1RodW5rcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwotCQkwRkM3MTJEQzE3Q0Q4Nzc4MDA4Q0M5M0MgLyogRGVmZXJyZWRDb21waWxhdGlvbkNhbGxi
YWNrLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IERlZmVycmVkQ29tcGlsYXRpb25DYWxsYmFjay5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTBGQzcxMkREMTdDRDg3NzgwMDhDQzkz
QyAvKiBEZWZlcnJlZENvbXBpbGF0aW9uQ2FsbGJhY2suaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRGVmZXJy
ZWRDb21waWxhdGlvbkNhbGxiYWNrLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTBG
QzcxMkUwMTdDRDg3OEYwMDhDQzkzQyAvKiBKSVRUb0RGR0RlZmVycmVkQ29tcGlsYXRpb25DYWxs
YmFjay5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKSVRUb0RGR0RlZmVycmVkQ29tcGlsYXRpb25D
YWxsYmFjay5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTBGQzcxMkUxMTdDRDg3
OEYwMDhDQzkzQyAvKiBKSVRUb0RGR0RlZmVycmVkQ29tcGlsYXRpb25DYWxsYmFjay5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBKSVRUb0RGR0RlZmVycmVkQ29tcGlsYXRpb25DYWxsYmFjay5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQkwRkM4MTUwODE0MDQzQkNBMDBDRkE2MDMgLyogV3JpdGVC
YXJyaWVyU3VwcG9ydC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBX
cml0ZUJhcnJpZXJTdXBwb3J0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEZD
ODE1MDkxNDA0M0JEMjAwQ0ZBNjAzIC8qIFdyaXRlQmFycmllclN1cHBvcnQuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV3JpdGVCYXJyaWVyU3VwcG9ydC5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQkwRkM4MTUxMjE0MDUxMTg2MDBDRkE2MDMgLyogVlRhYmxlU3Bl
Y3RydW0uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gVlRhYmxlU3Bl
Y3RydW0uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjY0MCw2ICsyNjM2LDcg
QEAKIAkJCQkwRjA3NzZCRDE0RkYwMDI4MDAxMDIzMzIgLyogSklUQ29tcGlsYXRpb25FZmZvcnQu
aCAqLywKIAkJCQkwRkFGN0VGQTE2NUJBOTE5MDAwQzg0NTUgLyogSklURGlzYXNzZW1ibGVyLmNw
cCAqLywKIAkJCQkwRkFGN0VGQjE2NUJBOTE5MDAwQzg0NTUgLyogSklURGlzYXNzZW1ibGVyLmgg
Ki8sCisJCQkJMEYyMUMyNjYxNEJFNUY1RTAwQURDNjRCIC8qIEpJVERyaXZlci5oICovLAogCQkJ
CTBGNDY4MDdGMTRCQTU3MjcwMEJGRTI3MiAvKiBKSVRFeGNlcHRpb25zLmNwcCAqLywKIAkJCQkw
RjQ2ODA4MDE0QkE1NzI3MDBCRkUyNzIgLyogSklURXhjZXB0aW9ucy5oICovLAogCQkJCTg2Q0M4
NUEwMEVFNzlBNDcwMDI4ODY4MiAvKiBKSVRJbmxpbmVzLmggKi8sCkBAIC0yNjYxLDggKzI2NTgs
NiBAQAogCQkJCUE3QTRBRTBDMTc5NzNCNEQwMDU2MTJCMSAvKiBKSVRTdHVic1g4NkNvbW1vbi5o
ICovLAogCQkJCTBGNUVGOTFCMTY4NzhGNzgwMDNFNUMyNSAvKiBKSVRUaHVua3MuY3BwICovLAog
CQkJCTBGNUVGOTFDMTY4NzhGNzgwMDNFNUMyNSAvKiBKSVRUaHVua3MuaCAqLywKLQkJCQkwRkM3
MTJFMDE3Q0Q4NzhGMDA4Q0M5M0MgLyogSklUVG9ERkdEZWZlcnJlZENvbXBpbGF0aW9uQ2FsbGJh
Y2suY3BwICovLAotCQkJCTBGQzcxMkUxMTdDRDg3OEYwMDhDQzkzQyAvKiBKSVRUb0RGR0RlZmVy
cmVkQ29tcGlsYXRpb25DYWxsYmFjay5oICovLAogCQkJCUE3NkY1NEEyMTNCMjhBQUIwMEVGMkJD
RSAvKiBKSVRXcml0ZUJhcnJpZXIuaCAqLywKIAkJCQlBNzZDNTE3NDExODI3NDhEMDA3MTVCMDUg
LyogSlNJbnRlcmZhY2VKSVQuaCAqLywKIAkJCQkwRjc2NkQzMjE1QUUyNTM1MDA4RjM2M0UgLyog
SnVtcFJlcGxhY2VtZW50V2F0Y2hwb2ludC5jcHAgKi8sCkBAIC0zMDQ1LDYgKzMwNDAsNyBAQAog
CQkJCUE3MjcwMUIzMERBREU5NDkwMEU1NDhENyAvKiBFeGNlcHRpb25IZWxwZXJzLmggKi8sCiAJ
CQkJODZDQTAzMkQxMDM4RTg0NDAwMjhBNjA5IC8qIEV4ZWN1dGFibGUuY3BwICovLAogCQkJCTg2
Q0FGRUUyMTAzNURERTYwMDI4QTYwOSAvKiBFeGVjdXRhYmxlLmggKi8sCisJCQkJMEYyMUMyN0Ex
NEJFNzI3MzAwQURDNjRCIC8qIEV4ZWN1dGlvbkhhcm5lc3MuaCAqLywKIAkJCQlBN0E4QUYyOTE3
QURCNUYzMDA1QUIxNzQgLyogRmxvYXQzMkFycmF5LmggKi8sCiAJCQkJQTdBOEFGMkExN0FEQjVG
MzAwNUFCMTc0IC8qIEZsb2F0NjRBcnJheS5oICovLAogCQkJCUJDMjY4MEMwMEUxNkQ0RTkwMEEw
NkU5MiAvKiBGdW5jdGlvbkNvbnN0cnVjdG9yLmNwcCAqLywKQEAgLTM2NTIsOCArMzY0OCw2IEBA
CiAJCQkJMEY4Rjk0M0YxNjY3NjMyRDAwRDYxOTcxIC8qIENvZGVUeXBlLmNwcCAqLywKIAkJCQkw
RjBCODNBNTE0QkNGNTA0MDA4ODVCNEYgLyogQ29kZVR5cGUuaCAqLywKIAkJCQkwRjQyNkE0QTE0
NjBDRDZCMDAxMzFGOEYgLyogRGF0YUZvcm1hdC5oICovLAotCQkJCTBGQzcxMkRDMTdDRDg3Nzgw
MDhDQzkzQyAvKiBEZWZlcnJlZENvbXBpbGF0aW9uQ2FsbGJhY2suY3BwICovLAotCQkJCTBGQzcx
MkREMTdDRDg3NzgwMDhDQzkzQyAvKiBEZWZlcnJlZENvbXBpbGF0aW9uQ2FsbGJhY2suaCAqLywK
IAkJCQkwRkJDMEFFNDE0OTZDN0MxMDBENEZCREQgLyogREZHRXhpdFByb2ZpbGUuY3BwICovLAog
CQkJCTBGQkMwQUU1MTQ5NkM3QzEwMEQ0RkJERCAvKiBERkdFeGl0UHJvZmlsZS5oICovLAogCQkJ
CTk2OUEwNzkyMEVEMUQzQUUwMEYxRjY4MSAvKiBFdmFsQ29kZUNhY2hlLmggKi8sCkBAIC0zODAy
LDcgKzM3OTYsNiBAQAogCQkJCTVERTZFNUIzMEUxNzI4RUMwMDE4MDQwNyAvKiBjcmVhdGVfaGFz
aF90YWJsZSBpbiBIZWFkZXJzICovLAogCQkJCTBGNDI2QTRCMTQ2MENENkUwMDEzMUY4RiAvKiBE
YXRhRm9ybWF0LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjJCNjZERjE3QjZCNUFCMDBBN0FFM0Yg
LyogRGF0YVZpZXcuaCBpbiBIZWFkZXJzICovLAotCQkJCTBGQzcxMkRGMTdDRDg3N0MwMDhDQzkz
QyAvKiBEZWZlcnJlZENvbXBpbGF0aW9uQ2FsbGJhY2suaCBpbiBIZWFkZXJzICovLAogCQkJCUJD
RDIwMzRBMEUxNzEzNUUwMDJDN0U4MiAvKiBEYXRlQ29uc3RydWN0b3IuaCBpbiBIZWFkZXJzICov
LAogCQkJCTQxMzU5Q0YzMEZERDg5QUQwMDIwNjE4MCAvKiBEYXRlQ29udmVyc2lvbi5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJQkMxMTY2MDIwRTE5OTdCNDAwODA2NkREIC8qIERhdGVJbnN0YW5jZS5o
IGluIEhlYWRlcnMgKi8sCkBAIC0zOTQ0LDYgKzM5MzcsNyBAQAogCQkJCTg2Q0FGRUUzMTAzNURE
RTYwMDI4QTYwOSAvKiBFeGVjdXRhYmxlLmggaW4gSGVhZGVycyAqLywKIAkJCQlBNzY2QjQ0RjBF
RThEQ0QxMDA5NTE4Q0EgLyogRXhlY3V0YWJsZUFsbG9jYXRvci5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJMEY1NkExRDMxNTAwMEYzNTAwMjk5MkIxIC8qIEV4ZWN1dGlvbkNvdW50ZXIuaCBpbiBIZWFk
ZXJzICovLAorCQkJCTBGMjFDMjdDMTRCRTcyNzYwMEFEQzY0QiAvKiBFeGVjdXRpb25IYXJuZXNz
LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkIxMDU4NjE2NzU0ODEyMDBGOEFCNkUgLyogRXhpdEtp
bmQuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMEI4M0FCMTRCQ0Y1QkIwMDg4NUI0RiAvKiBFeHBy
ZXNzaW9uUmFuZ2VJbmZvLmggaW4gSGVhZGVycyAqLywKIAkJCQlBN0E4QUYzODE3QURCNUYzMDA1
QUIxNzQgLyogRmxvYXQzMkFycmF5LmggaW4gSGVhZGVycyAqLywKQEAgLTQwMzIsNiArNDAyNiw3
IEBACiAJCQkJODZDQ0VGREUwRjQxM0Y4OTAwRkQ3RjlFIC8qIEpJVENvZGUuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTBGMDc3NkJGMTRGRjAwMkIwMDEwMjMzMiAvKiBKSVRDb21waWxhdGlvbkVmZm9y
dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZBRjdFRkUxNjVCQTkxRjAwMEM4NDU1IC8qIEpJVERp
c2Fzc2VtYmxlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEYyMUMyNjgxNEJFNUY2ODAwQURDNjRC
IC8qIEpJVERyaXZlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY0NjgwODIxNEJBNTcyRDAwQkZF
MjcyIC8qIEpJVEV4Y2VwdGlvbnMuaCBpbiBIZWFkZXJzICovLAogCQkJCTg2Q0M4NUExMEVFNzlB
NDcwMDI4ODY4MiAvKiBKSVRJbmxpbmVzLmggaW4gSGVhZGVycyAqLywKIAkJCQk5NjA2MjY5NjBG
QjhFQzAyMDA5Nzk4QUIgLyogSklUU3R1YkNhbGwuaCBpbiBIZWFkZXJzICovLApAQCAtNDEwMSw3
ICs0MDk2LDYgQEAKIAkJCQlCQzE4QzQyNDBFMTZGNUNEMDBCMzQ0NjAgLyogSlNPYmplY3QuaCBp
biBIZWFkZXJzICovLAogCQkJCUJDMThDNDI1MEUxNkY1Q0QwMEIzNDQ2MCAvKiBKU09iamVjdFJl
Zi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTcyODBBMjgxMTU1N0UzMDAwRDU2OTU3IC8qIEpTT2Jq
ZWN0UmVmUHJpdmF0ZS5oIGluIEhlYWRlcnMgKi8sCi0JCQkJMEZDNzEyRTMxN0NEODc5MzAwOEND
OTNDIC8qIEpJVFRvREZHRGVmZXJyZWRDb21waWxhdGlvbkNhbGxiYWNrLmggaW4gSGVhZGVycyAq
LywKIAkJCQlBN0Y5OTM1RjBGRDczMjUxMDBBMEIyRDAgLyogSlNPTk9iamVjdC5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJQkM4N0NEQjkxMDcxMkFENDAwMDYxNENGIC8qIEpTT05PYmplY3QubHV0Lmgg
aW4gSGVhZGVycyAqLywKIAkJCQk5NTM0QUFGQjBFNUI3QTk2MDBCOEE0NUIgLyogSlNQcm9maWxl
clByaXZhdGUuaCBpbiBIZWFkZXJzICovLApAQCAtNTAxNSw3ICs1MDA5LDYgQEAKIAkJCQkwRkUy
MjhFRTE0MzZBQjJDMDAxOTZDNDggLyogT3B0aW9ucy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkx
NDhGMjFCQzEwN0VDNTREMDA0MkVDMkMgLyogUGFyc2VyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTkzMDUyQzM0MEZCNzkyMTkwMDQ4RkRDMyAvKiBQYXJzZXJBcmVuYS5jcHAgaW4gU291cmNlcyAq
LywKLQkJCQkwRkM3MTJFMjE3Q0Q4NzkxMDA4Q0M5M0MgLyogSklUVG9ERkdEZWZlcnJlZENvbXBp
bGF0aW9uQ2FsbGJhY2suY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEY5RkM4QzMxNEUxQjVGRTAw
RDUyQUUwIC8qIFBvbHltb3JwaGljUHV0QnlJZExpc3QuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
MEY5ODIwNjAxNkJGRTM4MTAwMjQwRDAyIC8qIFByZWNpc2VKdW1wVGFyZ2V0cy5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQk5NTc0MkY2NTBERDExRjVBMDAwOTE3RkIgLyogUHJvZmlsZS5jcHAgaW4g
U291cmNlcyAqLywKQEAgLTUwOTQsNyArNTA4Nyw2IEBACiAJCQkJMTRFODRGOUUxNEVFMUFDQzAw
RDZENUQ0IC8qIFdlYWtCbG9jay5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxNEY3MjU2NTE0RUUy
NjVFMDBCMTY1MkIgLyogV2Vha0hhbmRsZU93bmVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTE0
RTg0RkEwMTRFRTFBQ0MwMEQ2RDVENCAvKiBXZWFrU2V0LmNwcCBpbiBTb3VyY2VzICovLAotCQkJ
CTBGQzcxMkRFMTdDRDg3NzkwMDhDQzkzQyAvKiBEZWZlcnJlZENvbXBpbGF0aW9uQ2FsbGJhY2su
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEY2RTVDMTkxNzI0QUYzRDAwNUM1NzRGIC8qIFdlYktp
dExMVk1MaWJyYXJ5QW5jaG9yLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGQzgxNTBCMTQwNDND
MEUwMENGQTYwMyAvKiBXcml0ZUJhcnJpZXJTdXBwb3J0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CUE3RTVBQjNBMTc5OUU0QjIwMEQyODMzRCAvKiBYODZEaXNhc3NlbWJsZXIuY3BwIGluIFNvdXJj
ZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvVGFyZ2V0LnByaSBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9UYXJnZXQucHJpCmluZGV4IDE0M2YwMzhkYjMwOGFjM2E1ZDJj
Yzc5M2EwYzRlMjFhYmNjYTExZWYuLjcxYTJmOWVhMWQxNDVhMTQyNmQzM2NiN2Y2NTJjYjM2ZTYx
OWE1YmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9UYXJnZXQucHJpCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9UYXJnZXQucHJpCkBAIC02MSw3ICs2MSw2IEBAIFNPVVJD
RVMgKz0gXAogICAgIGJ5dGVjb2RlL0NvZGVPcmlnaW4uY3BwIFwKICAgICBieXRlY29kZS9Db2Rl
VHlwZS5jcHAgXAogICAgIGJ5dGVjb2RlL0RGR0V4aXRQcm9maWxlLmNwcCBcCi0gICAgYnl0ZWNv
ZGUvRGVmZXJyZWRDb21waWxhdGlvbkNhbGxiYWNrLmNwcCBcCiAgICAgYnl0ZWNvZGUvRXhlY3V0
aW9uQ291bnRlci5jcHAgXAogICAgIGJ5dGVjb2RlL0V4aXRLaW5kLmNwcCBcCiAgICAgYnl0ZWNv
ZGUvR2V0QnlJZFN0YXR1cy5jcHAgXApAQCAtMjIyLDcgKzIyMSw2IEBAIFNPVVJDRVMgKz0gXAog
ICAgIGppdC9KSVRTdHViUm91dGluZS5jcHAgXAogICAgIGppdC9KSVRTdHVicy5jcHAgXAogICAg
IGppdC9KSVRUaHVua3MuY3BwIFwKLSAgICBqaXQvSklUVG9ERkdEZWZlcnJlZENvbXBpbGF0aW9u
Q2FsbGJhY2suY3BwIFwKICAgICBqaXQvSnVtcFJlcGxhY2VtZW50V2F0Y2hwb2ludC5jcHAgXAog
ICAgIGppdC9UaHVua0dlbmVyYXRvcnMuY3BwIFwKICAgICBsbGludC9MTEludENMb29wLmNwcCBc
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCmluZGV4IDNm
NDU3YWVlMTkxYTJhZDYwOTUyZDMxNjE5YjI2OWVhMzQzZjBjYTQuLjc5MjVmYWI1YTU3Nzg4NWQx
YTBkOTQ1MjA0OWUwYWZkYzQwN2NmYjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9Db2RlQmxvY2suY3BwCkBAIC0zNCw3ICszNCw2IEBACiAjaW5jbHVkZSAiQ2FsbExpbmtT
dGF0dXMuaCIKICNpbmNsdWRlICJERkdDYXBhYmlsaXRpZXMuaCIKICNpbmNsdWRlICJERkdDb21t
b24uaCIKLSNpbmNsdWRlICJERkdEcml2ZXIuaCIKICNpbmNsdWRlICJERkdOb2RlLmgiCiAjaW5j
bHVkZSAiREZHUmVwYXRjaC5oIgogI2luY2x1ZGUgIkRGR1dvcmtsaXN0LmgiCkBAIC00Niw3ICs0
NSw2IEBACiAjaW5jbHVkZSAiSlNDSlNWYWx1ZS5oIgogI2luY2x1ZGUgIkpTRnVuY3Rpb24uaCIK
ICNpbmNsdWRlICJKU05hbWVTY29wZS5oIgotI2luY2x1ZGUgIkxMSW50RW50cnlwb2ludHMuaCIK
ICNpbmNsdWRlICJMb3dMZXZlbEludGVycHJldGVyLmgiCiAjaW5jbHVkZSAiT3BlcmF0aW9ucy5o
IgogI2luY2x1ZGUgIlBvbHltb3JwaGljUHV0QnlJZExpc3QuaCIKQEAgLTI1MzgsMjIgKzI1MzYs
MjAgQEAgdm9pZCBDb2RlQmxvY2s6OmxpbmtJbmNvbWluZ0NhbGwoRXhlY1N0YXRlKiBjYWxsZXJG
cmFtZSwgQ2FsbExpbmtJbmZvKiBpbmNvbWluZykKICAgICBub3RpY2VJbmNvbWluZ0NhbGwoY2Fs
bGVyRnJhbWUpOwogICAgIG1faW5jb21pbmdDYWxscy5wdXNoKGluY29taW5nKTsKIH0KLSNlbmRp
ZiAvLyBFTkFCTEUoSklUKQogCiB2b2lkIENvZGVCbG9jazo6dW5saW5rSW5jb21pbmdDYWxscygp
CiB7CiAjaWYgRU5BQkxFKExMSU5UKQogICAgIHdoaWxlIChtX2luY29taW5nTExJbnRDYWxscy5i
ZWdpbigpICE9IG1faW5jb21pbmdMTEludENhbGxzLmVuZCgpKQogICAgICAgICBtX2luY29taW5n
TExJbnRDYWxscy5iZWdpbigpLT51bmxpbmsoKTsKLSNlbmRpZiAvLyBFTkFCTEUoTExJTlQpCi0j
aWYgRU5BQkxFKEpJVCkKKyNlbmRpZgogICAgIGlmIChtX2luY29taW5nQ2FsbHMuaXNFbXB0eSgp
KQogICAgICAgICByZXR1cm47CiAgICAgUmVwYXRjaEJ1ZmZlciByZXBhdGNoQnVmZmVyKHRoaXMp
OwogICAgIHdoaWxlIChtX2luY29taW5nQ2FsbHMuYmVnaW4oKSAhPSBtX2luY29taW5nQ2FsbHMu
ZW5kKCkpCiAgICAgICAgIG1faW5jb21pbmdDYWxscy5iZWdpbigpLT51bmxpbmsoKm1fdm0sIHJl
cGF0Y2hCdWZmZXIpOwotI2VuZGlmIC8vIEVOQUJMRShKSVQpCiB9CisjZW5kaWYgLy8gRU5BQkxF
KEpJVCkKIAogI2lmIEVOQUJMRShMTElOVCkKIHZvaWQgQ29kZUJsb2NrOjpsaW5rSW5jb21pbmdD
YWxsKEV4ZWNTdGF0ZSogY2FsbGVyRnJhbWUsIExMSW50Q2FsbExpbmtJbmZvKiBpbmNvbWluZykK
QEAgLTI2OTMsMTA4ICsyNjg5LDc4IEBAIHZvaWQgQ29kZUJsb2NrOjpjb3B5UG9zdFBhcnNlRGF0
YUZyb21BbHRlcm5hdGl2ZSgpCiAgICAgY29weVBvc3RQYXJzZURhdGFGcm9tKG1fYWx0ZXJuYXRp
dmUuZ2V0KCkpOwogfQogCi1Db21waWxhdGlvblJlc3VsdCBDb2RlQmxvY2s6OnByZXBhcmVGb3JF
eGVjdXRpb25JbXBsKAotICAgIEV4ZWNTdGF0ZSogZXhlYywgSklUQ29kZTo6SklUVHlwZSBqaXRU
eXBlLCBKSVRDb21waWxhdGlvbkVmZm9ydCBlZmZvcnQsCi0gICAgdW5zaWduZWQgYnl0ZWNvZGVJ
bmRleCwgUGFzc1JlZlB0cjxEZWZlcnJlZENvbXBpbGF0aW9uQ2FsbGJhY2s+IGNhbGxiYWNrKQot
ewotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7Ci0gICAgCi0gICAgaWYgKGppdFR5cGUgPT0gSklU
Q29kZTo6SW50ZXJwcmV0ZXJUaHVuaykgewotICAgICAgICBzd2l0Y2ggKGNvZGVUeXBlKCkpIHsK
LSAgICAgICAgY2FzZSBHbG9iYWxDb2RlOgotICAgICAgICAgICAgTExJbnQ6OnNldFByb2dyYW1F
bnRyeXBvaW50KHZtLCBzdGF0aWNfY2FzdDxQcm9ncmFtQ29kZUJsb2NrKj4odGhpcykpOwotICAg
ICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgRXZhbENvZGU6Ci0gICAgICAgICAgICBMTElu
dDo6c2V0RXZhbEVudHJ5cG9pbnQodm0sIHN0YXRpY19jYXN0PEV2YWxDb2RlQmxvY2sqPih0aGlz
KSk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBGdW5jdGlvbkNvZGU6Ci0gICAg
ICAgICAgICBMTEludDo6c2V0RnVuY3Rpb25FbnRyeXBvaW50KHZtLCBzdGF0aWNfY2FzdDxGdW5j
dGlvbkNvZGVCbG9jayo+KHRoaXMpKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0g
ICAgICAgIHJldHVybiBDb21waWxhdGlvblN1Y2Nlc3NmdWw7Ci0gICAgfQotICAgIAogI2lmIEVO
QUJMRShKSVQpCi0gICAgaWYgKEpJVENvZGU6OmlzT3B0aW1pemluZ0pJVChqaXRUeXBlKSkgewot
ICAgICAgICBBU1NFUlQoZWZmb3J0ID09IEpJVENvbXBpbGF0aW9uQ2FuRmFpbCk7Ci0gICAgICAg
IGJvb2wgaGFkQ2FsbGJhY2sgPSAhIWNhbGxiYWNrOwotICAgICAgICBDb21waWxhdGlvblJlc3Vs
dCByZXN1bHQgPSBERkc6OnRyeUNvbXBpbGUoZXhlYywgdGhpcywgYnl0ZWNvZGVJbmRleCwgY2Fs
bGJhY2spOwotICAgICAgICBBU1NFUlRfVU5VU0VEKGhhZENhbGxiYWNrLCByZXN1bHQgIT0gQ29t
cGlsYXRpb25EZWZlcnJlZCB8fCBoYWRDYWxsYmFjayk7Ci0gICAgICAgIHJldHVybiByZXN1bHQ7
Ci0gICAgfQotICAgIAotICAgIE1hY3JvQXNzZW1ibGVyQ29kZVB0ciBqaXRDb2RlV2l0aEFyaXR5
Q2hlY2s7Ci0gICAgUmVmUHRyPEpJVENvZGU+IGppdENvZGUgPSBKSVQ6OmNvbXBpbGUoJnZtLCB0
aGlzLCBlZmZvcnQsICZqaXRDb2RlV2l0aEFyaXR5Q2hlY2spOwotICAgIGlmICghaml0Q29kZSkK
LSAgICAgICAgcmV0dXJuIENvbXBpbGF0aW9uRmFpbGVkOwotICAgIHNldEpJVENvZGUoaml0Q29k
ZSwgaml0Q29kZVdpdGhBcml0eUNoZWNrKTsKLSAgICByZXR1cm4gQ29tcGlsYXRpb25TdWNjZXNz
ZnVsOwotI2Vsc2UKLSAgICBVTlVTRURfUEFSQU0oZWZmb3J0KTsKLSAgICBVTlVTRURfUEFSQU0o
Ynl0ZWNvZGVJbmRleCk7Ci0gICAgVU5VU0VEX1BBUkFNKGNhbGxiYWNrKTsKLSAgICByZXR1cm4g
Q29tcGlsYXRpb25GYWlsZWQ7Ci0jZW5kaWYgLy8gRU5BQkxFKEpJVCkKK3ZvaWQgQ29kZUJsb2Nr
OjpyZW9wdGltaXplKCkKK3sKKyAgICBBU1NFUlQocmVwbGFjZW1lbnQoKSAhPSB0aGlzKTsKKyAg
ICBBU1NFUlQocmVwbGFjZW1lbnQoKS0+YWx0ZXJuYXRpdmUoKSA9PSB0aGlzKTsKKyAgICBpZiAo
REZHOjpzaG91bGRTaG93RGlzYXNzZW1ibHkoKSkKKyAgICAgICAgZGF0YUxvZygqcmVwbGFjZW1l
bnQoKSwgIiB3aWxsIGJlIGpldHRpc29uZWQgZHVlIHRvIHJlb3B0aW1pemF0aW9uIG9mICIsICp0
aGlzLCAiLlxuIik7CisgICAgcmVwbGFjZW1lbnQoKS0+amV0dGlzb24oKTsKKyAgICBjb3VudFJl
b3B0aW1pemF0aW9uKCk7CiB9CiAKLUNvbXBpbGF0aW9uUmVzdWx0IENvZGVCbG9jazo6cHJlcGFy
ZUZvckV4ZWN1dGlvbigKLSAgICBFeGVjU3RhdGUqIGV4ZWMsIEpJVENvZGU6OkpJVFR5cGUgaml0
VHlwZSwKLSAgICBKSVRDb21waWxhdGlvbkVmZm9ydCBlZmZvcnQsIHVuc2lnbmVkIGJ5dGVjb2Rl
SW5kZXgpCitDb2RlQmxvY2sqIFByb2dyYW1Db2RlQmxvY2s6OnJlcGxhY2VtZW50KCkKIHsKLSAg
ICBDb21waWxhdGlvblJlc3VsdCByZXN1bHQgPQotICAgICAgICBwcmVwYXJlRm9yRXhlY3V0aW9u
SW1wbChleGVjLCBqaXRUeXBlLCBlZmZvcnQsIGJ5dGVjb2RlSW5kZXgsIDApOwotICAgIEFTU0VS
VChyZXN1bHQgIT0gQ29tcGlsYXRpb25EZWZlcnJlZCk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKKyAg
ICByZXR1cm4gJnN0YXRpY19jYXN0PFByb2dyYW1FeGVjdXRhYmxlKj4ob3duZXJFeGVjdXRhYmxl
KCkpLT5nZW5lcmF0ZWRCeXRlY29kZSgpOwogfQogCi1Db21waWxhdGlvblJlc3VsdCBDb2RlQmxv
Y2s6OnByZXBhcmVGb3JFeGVjdXRpb25Bc3luY2hyb25vdXNseSgKLSAgICBFeGVjU3RhdGUqIGV4
ZWMsIEpJVENvZGU6OkpJVFR5cGUgaml0VHlwZSwKLSAgICBQYXNzUmVmUHRyPERlZmVycmVkQ29t
cGlsYXRpb25DYWxsYmFjaz4gcGFzc2VkQ2FsbGJhY2ssCi0gICAgSklUQ29tcGlsYXRpb25FZmZv
cnQgZWZmb3J0LCB1bnNpZ25lZCBieXRlY29kZUluZGV4KQorQ29kZUJsb2NrKiBFdmFsQ29kZUJs
b2NrOjpyZXBsYWNlbWVudCgpCiB7Ci0gICAgUmVmUHRyPERlZmVycmVkQ29tcGlsYXRpb25DYWxs
YmFjaz4gY2FsbGJhY2sgPSBwYXNzZWRDYWxsYmFjazsKLSAgICBDb21waWxhdGlvblJlc3VsdCBy
ZXN1bHQgPQotICAgICAgICBwcmVwYXJlRm9yRXhlY3V0aW9uSW1wbChleGVjLCBqaXRUeXBlLCBl
ZmZvcnQsIGJ5dGVjb2RlSW5kZXgsIGNhbGxiYWNrKTsKLSAgICBpZiAocmVzdWx0ICE9IENvbXBp
bGF0aW9uRGVmZXJyZWQpCi0gICAgICAgIGNhbGxiYWNrLT5jb21waWxhdGlvbkRpZENvbXBsZXRl
KHRoaXMsIHJlc3VsdCk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKKyAgICByZXR1cm4gJnN0YXRpY19j
YXN0PEV2YWxFeGVjdXRhYmxlKj4ob3duZXJFeGVjdXRhYmxlKCkpLT5nZW5lcmF0ZWRCeXRlY29k
ZSgpOworfQorCitDb2RlQmxvY2sqIEZ1bmN0aW9uQ29kZUJsb2NrOjpyZXBsYWNlbWVudCgpCit7
CisgICAgcmV0dXJuICZzdGF0aWNfY2FzdDxGdW5jdGlvbkV4ZWN1dGFibGUqPihvd25lckV4ZWN1
dGFibGUoKSktPmdlbmVyYXRlZEJ5dGVjb2RlRm9yKG1faXNDb25zdHJ1Y3RvciA/IENvZGVGb3JD
b25zdHJ1Y3QgOiBDb2RlRm9yQ2FsbCk7CiB9CiAKLXZvaWQgQ29kZUJsb2NrOjppbnN0YWxsKCkK
KyNpZiBFTkFCTEUoREZHX0pJVCkKK0pTT2JqZWN0KiBQcm9ncmFtQ29kZUJsb2NrOjpjb21waWxl
T3B0aW1pemVkKEV4ZWNTdGF0ZSogZXhlYywgSlNTY29wZSogc2NvcGUsIENvbXBpbGF0aW9uUmVz
dWx0JiByZXN1bHQsIHVuc2lnbmVkIGJ5dGVjb2RlSW5kZXgpCiB7Ci0gICAgb3duZXJFeGVjdXRh
YmxlKCktPmluc3RhbGxDb2RlKHRoaXMpOworICAgIGlmIChKSVRDb2RlOjppc0hpZ2hlclRpZXIo
cmVwbGFjZW1lbnQoKS0+aml0VHlwZSgpLCBqaXRUeXBlKCkpKSB7CisgICAgICAgIHJlc3VsdCA9
IENvbXBpbGF0aW9uTm90TmVlZGVkOworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisgICAgSlNP
YmplY3QqIGVycm9yID0gc3RhdGljX2Nhc3Q8UHJvZ3JhbUV4ZWN1dGFibGUqPihvd25lckV4ZWN1
dGFibGUoKSktPmNvbXBpbGVPcHRpbWl6ZWQoZXhlYywgc2NvcGUsIHJlc3VsdCwgYnl0ZWNvZGVJ
bmRleCk7CisgICAgcmV0dXJuIGVycm9yOwogfQogCi1QYXNzUmVmUHRyPENvZGVCbG9jaz4gQ29k
ZUJsb2NrOjpuZXdSZXBsYWNlbWVudCgpCitDb21waWxhdGlvblJlc3VsdCBQcm9ncmFtQ29kZUJs
b2NrOjpyZXBsYWNlV2l0aERlZmVycmVkT3B0aW1pemVkQ29kZShQYXNzUmVmUHRyPERGRzo6UGxh
bj4gcGxhbikKIHsKLSAgICByZXR1cm4gb3duZXJFeGVjdXRhYmxlKCktPm5ld1JlcGxhY2VtZW50
Q29kZUJsb2NrRm9yKHNwZWNpYWxpemF0aW9uS2luZCgpKTsKKyAgICByZXR1cm4gc3RhdGljX2Nh
c3Q8UHJvZ3JhbUV4ZWN1dGFibGUqPihvd25lckV4ZWN1dGFibGUoKSktPnJlcGxhY2VXaXRoRGVm
ZXJyZWRPcHRpbWl6ZWRDb2RlKHBsYW4pOwogfQogCi0jaWYgRU5BQkxFKEpJVCkKLXZvaWQgQ29k
ZUJsb2NrOjpyZW9wdGltaXplKCkKK0pTT2JqZWN0KiBFdmFsQ29kZUJsb2NrOjpjb21waWxlT3B0
aW1pemVkKEV4ZWNTdGF0ZSogZXhlYywgSlNTY29wZSogc2NvcGUsIENvbXBpbGF0aW9uUmVzdWx0
JiByZXN1bHQsIHVuc2lnbmVkIGJ5dGVjb2RlSW5kZXgpCiB7Ci0gICAgQVNTRVJUKHJlcGxhY2Vt
ZW50KCkgIT0gdGhpcyk7Ci0gICAgQVNTRVJUKHJlcGxhY2VtZW50KCktPmFsdGVybmF0aXZlKCkg
PT0gdGhpcyk7Ci0gICAgaWYgKERGRzo6c2hvdWxkU2hvd0Rpc2Fzc2VtYmx5KCkpCi0gICAgICAg
IGRhdGFMb2coKnJlcGxhY2VtZW50KCksICIgd2lsbCBiZSBqZXR0aXNvbmVkIGR1ZSB0byByZW9w
dGltaXphdGlvbiBvZiAiLCAqdGhpcywgIi5cbiIpOwotICAgIHJlcGxhY2VtZW50KCktPmpldHRp
c29uKCk7Ci0gICAgY291bnRSZW9wdGltaXphdGlvbigpOworICAgIGlmIChKSVRDb2RlOjppc0hp
Z2hlclRpZXIocmVwbGFjZW1lbnQoKS0+aml0VHlwZSgpLCBqaXRUeXBlKCkpKSB7CisgICAgICAg
IHJlc3VsdCA9IENvbXBpbGF0aW9uTm90TmVlZGVkOworICAgICAgICByZXR1cm4gMDsKKyAgICB9
CisgICAgSlNPYmplY3QqIGVycm9yID0gc3RhdGljX2Nhc3Q8RXZhbEV4ZWN1dGFibGUqPihvd25l
ckV4ZWN1dGFibGUoKSktPmNvbXBpbGVPcHRpbWl6ZWQoZXhlYywgc2NvcGUsIHJlc3VsdCwgYnl0
ZWNvZGVJbmRleCk7CisgICAgcmV0dXJuIGVycm9yOwogfQogCi1Db2RlQmxvY2sqIFByb2dyYW1D
b2RlQmxvY2s6OnJlcGxhY2VtZW50KCkKK0NvbXBpbGF0aW9uUmVzdWx0IEV2YWxDb2RlQmxvY2s6
OnJlcGxhY2VXaXRoRGVmZXJyZWRPcHRpbWl6ZWRDb2RlKFBhc3NSZWZQdHI8REZHOjpQbGFuPiBw
bGFuKQogewotICAgIHJldHVybiAmc3RhdGljX2Nhc3Q8UHJvZ3JhbUV4ZWN1dGFibGUqPihvd25l
ckV4ZWN1dGFibGUoKSktPmdlbmVyYXRlZEJ5dGVjb2RlKCk7CisgICAgcmV0dXJuIHN0YXRpY19j
YXN0PEV2YWxFeGVjdXRhYmxlKj4ob3duZXJFeGVjdXRhYmxlKCkpLT5yZXBsYWNlV2l0aERlZmVy
cmVkT3B0aW1pemVkQ29kZShwbGFuKTsKIH0KIAotQ29kZUJsb2NrKiBFdmFsQ29kZUJsb2NrOjpy
ZXBsYWNlbWVudCgpCitKU09iamVjdCogRnVuY3Rpb25Db2RlQmxvY2s6OmNvbXBpbGVPcHRpbWl6
ZWQoRXhlY1N0YXRlKiBleGVjLCBKU1Njb3BlKiBzY29wZSwgQ29tcGlsYXRpb25SZXN1bHQmIHJl
c3VsdCwgdW5zaWduZWQgYnl0ZWNvZGVJbmRleCkKIHsKLSAgICByZXR1cm4gJnN0YXRpY19jYXN0
PEV2YWxFeGVjdXRhYmxlKj4ob3duZXJFeGVjdXRhYmxlKCkpLT5nZW5lcmF0ZWRCeXRlY29kZSgp
OworICAgIGlmIChKSVRDb2RlOjppc0hpZ2hlclRpZXIocmVwbGFjZW1lbnQoKS0+aml0VHlwZSgp
LCBqaXRUeXBlKCkpKSB7CisgICAgICAgIHJlc3VsdCA9IENvbXBpbGF0aW9uTm90TmVlZGVkOwor
ICAgICAgICByZXR1cm4gMDsKKyAgICB9CisgICAgSlNPYmplY3QqIGVycm9yID0gc3RhdGljX2Nh
c3Q8RnVuY3Rpb25FeGVjdXRhYmxlKj4ob3duZXJFeGVjdXRhYmxlKCkpLT5jb21waWxlT3B0aW1p
emVkRm9yKGV4ZWMsIHNjb3BlLCByZXN1bHQsIGJ5dGVjb2RlSW5kZXgsIG1faXNDb25zdHJ1Y3Rv
ciA/IENvZGVGb3JDb25zdHJ1Y3QgOiBDb2RlRm9yQ2FsbCk7CisgICAgcmV0dXJuIGVycm9yOwog
fQogCi1Db2RlQmxvY2sqIEZ1bmN0aW9uQ29kZUJsb2NrOjpyZXBsYWNlbWVudCgpCitDb21waWxh
dGlvblJlc3VsdCBGdW5jdGlvbkNvZGVCbG9jazo6cmVwbGFjZVdpdGhEZWZlcnJlZE9wdGltaXpl
ZENvZGUoUGFzc1JlZlB0cjxERkc6OlBsYW4+IHBsYW4pCiB7Ci0gICAgcmV0dXJuICZzdGF0aWNf
Y2FzdDxGdW5jdGlvbkV4ZWN1dGFibGUqPihvd25lckV4ZWN1dGFibGUoKSktPmdlbmVyYXRlZEJ5
dGVjb2RlRm9yKG1faXNDb25zdHJ1Y3RvciA/IENvZGVGb3JDb25zdHJ1Y3QgOiBDb2RlRm9yQ2Fs
bCk7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PEZ1bmN0aW9uRXhlY3V0YWJsZSo+KG93bmVyRXhl
Y3V0YWJsZSgpKS0+cmVwbGFjZVdpdGhEZWZlcnJlZE9wdGltaXplZENvZGVGb3IocGxhbiwgbV9p
c0NvbnN0cnVjdG9yID8gQ29kZUZvckNvbnN0cnVjdCA6IENvZGVGb3JDYWxsKTsKIH0KKyNlbmRp
ZiAvLyBFTkFCTEUoREZHX0pJVCkKIAogREZHOjpDYXBhYmlsaXR5TGV2ZWwgUHJvZ3JhbUNvZGVC
bG9jazo6Y2FwYWJpbGl0eUxldmVsSW50ZXJuYWwoKQogewpAQCAtMjgzOCw2ICsyODA0LDI3IEBA
IHZvaWQgRnVuY3Rpb25Db2RlQmxvY2s6OmpldHRpc29uSW1wbCgpCiB7CiAgICAgc3RhdGljX2Nh
c3Q8RnVuY3Rpb25FeGVjdXRhYmxlKj4ob3duZXJFeGVjdXRhYmxlKCkpLT5qZXR0aXNvbk9wdGlt
aXplZENvZGVGb3IoKnZtKCksIG1faXNDb25zdHJ1Y3RvciA/IENvZGVGb3JDb25zdHJ1Y3QgOiBD
b2RlRm9yQ2FsbCk7CiB9CisKK0NvbXBpbGF0aW9uUmVzdWx0IFByb2dyYW1Db2RlQmxvY2s6Ompp
dENvbXBpbGVJbXBsKEV4ZWNTdGF0ZSogZXhlYykKK3sKKyAgICBBU1NFUlQoaml0VHlwZSgpID09
IEpJVENvZGU6OkludGVycHJldGVyVGh1bmspOworICAgIEFTU0VSVCh0aGlzID09IHJlcGxhY2Vt
ZW50KCkpOworICAgIHJldHVybiBzdGF0aWNfY2FzdDxQcm9ncmFtRXhlY3V0YWJsZSo+KG93bmVy
RXhlY3V0YWJsZSgpKS0+aml0Q29tcGlsZShleGVjKTsKK30KKworQ29tcGlsYXRpb25SZXN1bHQg
RXZhbENvZGVCbG9jazo6aml0Q29tcGlsZUltcGwoRXhlY1N0YXRlKiBleGVjKQoreworICAgIEFT
U0VSVChqaXRUeXBlKCkgPT0gSklUQ29kZTo6SW50ZXJwcmV0ZXJUaHVuayk7CisgICAgQVNTRVJU
KHRoaXMgPT0gcmVwbGFjZW1lbnQoKSk7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PEV2YWxFeGVj
dXRhYmxlKj4ob3duZXJFeGVjdXRhYmxlKCkpLT5qaXRDb21waWxlKGV4ZWMpOworfQorCitDb21w
aWxhdGlvblJlc3VsdCBGdW5jdGlvbkNvZGVCbG9jazo6aml0Q29tcGlsZUltcGwoRXhlY1N0YXRl
KiBleGVjKQoreworICAgIEFTU0VSVChqaXRUeXBlKCkgPT0gSklUQ29kZTo6SW50ZXJwcmV0ZXJU
aHVuayk7CisgICAgQVNTRVJUKHRoaXMgPT0gcmVwbGFjZW1lbnQoKSk7CisgICAgcmV0dXJuIHN0
YXRpY19jYXN0PEZ1bmN0aW9uRXhlY3V0YWJsZSo+KG93bmVyRXhlY3V0YWJsZSgpKS0+aml0Q29t
cGlsZUZvcihleGVjLCBtX2lzQ29uc3RydWN0b3IgPyBDb2RlRm9yQ29uc3RydWN0IDogQ29kZUZv
ckNhbGwpOworfQogI2VuZGlmCiAKIEpTR2xvYmFsT2JqZWN0KiBDb2RlQmxvY2s6Omdsb2JhbE9i
amVjdEZvcihDb2RlT3JpZ2luIGNvZGVPcmlnaW4pCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvQ29kZUJsb2NrLmgKaW5kZXggMjBhOTgxNDIyOGQxNzNhYmIwZjViNzIwZGIxODc4MGFh
YjAyZTFhNC4uMzY2MjU3OTFiNDUwMDNlZjQ3MjM3YmZiY2UxMjhlYjQ5MDlhYzQ1NCAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaApAQCAtNDgsNyArNDgsNiBA
QAogI2luY2x1ZGUgIkRGR09TUkVudHJ5LmgiCiAjaW5jbHVkZSAiREZHT1NSRXhpdC5oIgogI2lu
Y2x1ZGUgIkRGR1ZhcmlhYmxlRXZlbnRTdHJlYW0uaCIKLSNpbmNsdWRlICJEZWZlcnJlZENvbXBp
bGF0aW9uQ2FsbGJhY2suaCIKICNpbmNsdWRlICJFdmFsQ29kZUNhY2hlLmgiCiAjaW5jbHVkZSAi
RXhlY3V0aW9uQ291bnRlci5oIgogI2luY2x1ZGUgIkV4cHJlc3Npb25SYW5nZUluZm8uaCIKQEAg
LTIwMyw4ICsyMDIsNiBAQCBwdWJsaWM6CiAKICAgICB1bnNpZ25lZCBieXRlY29kZU9mZnNldChF
eGVjU3RhdGUqLCBSZXR1cm5BZGRyZXNzUHRyKTsKIAotICAgIHZvaWQgdW5saW5rSW5jb21pbmdD
YWxscygpOwotCiAjaWYgRU5BQkxFKEpJVCkKICAgICB1bnNpZ25lZCBieXRlY29kZU9mZnNldEZv
ckNhbGxBdEluZGV4KHVuc2lnbmVkIGluZGV4KQogICAgIHsKQEAgLTIzNCw2ICsyMzEsOCBAQCBw
dWJsaWM6CiAgICAgdm9pZCBsaW5rSW5jb21pbmdDYWxsKEV4ZWNTdGF0ZSogY2FsbGVyRnJhbWUs
IExMSW50Q2FsbExpbmtJbmZvKik7CiAjZW5kaWYgLy8gRU5BQkxFKExMSU5UKQogCisgICAgdm9p
ZCB1bmxpbmtJbmNvbWluZ0NhbGxzKCk7CisKICNpZiBFTkFCTEUoREZHX0pJVCkgfHwgRU5BQkxF
KExMSU5UKQogICAgIHZvaWQgc2V0SklUQ29kZU1hcChQYXNzT3duUHRyPENvbXBhY3RKSVRDb2Rl
TWFwPiBqaXRDb2RlTWFwKQogICAgIHsKQEAgLTI2NSwzOCArMjY0LDcgQEAgcHVibGljOgogCiAg
ICAgaW50IGFyZ3VtZW50SW5kZXhBZnRlckNhcHR1cmUoc2l6ZV90IGFyZ3VtZW50KTsKIAotICAg
IC8vIFByZXBhcmVzIHRoaXMgY29kZSBibG9jayBmb3IgZXhlY3V0aW9uLiBUaGlzIGlzIHN5bmNo
cm9ub3VzLiBUaGlzIGNvbXBpbGUKLSAgICAvLyBtYXkgZmFpbCwgaWYgeW91IHBhc3NlZCBKSVRD
b21waWxhdGlvbkNhbkZhaWwuCi0gICAgQ29tcGlsYXRpb25SZXN1bHQgcHJlcGFyZUZvckV4ZWN1
dGlvbigKLSAgICAgICAgRXhlY1N0YXRlKiwgSklUQ29kZTo6SklUVHlwZSwKLSAgICAgICAgSklU
Q29tcGlsYXRpb25FZmZvcnQgPSBKSVRDb21waWxhdGlvbk11c3RTdWNjZWVkLAotICAgICAgICB1
bnNpZ25lZCBieXRlY29kZUluZGV4ID0gVUlOVF9NQVgpOwotICAgIAotICAgIC8vIFVzZSB0aGlz
IG1ldGhvZCBmb3IgYXN5bmNocm9ub3VzIGNvbXBpbGVzLiBUaGlzIHdpbGwgZG8gYSBjb21waWxl
IGF0IHNvbWUKLSAgICAvLyBwb2ludCBpbiB0aW1lIGJldHdlZW4gd2hlbiB5b3UgY2FsbGVkIGlu
dG8gdGhpcyBtZXRob2QgYW5kIHNvbWUgcG9pbnQgaW4gdGhlCi0gICAgLy8gZnV0dXJlLiBJZiB5
b3UncmUgbHVja3kgdGhlbiBpdCBtaWdodCBjb21wbGV0ZSBiZWZvcmUgdGhpcyBtZXRob2QgcmV0
dXJucy4KLSAgICAvLyBPbmNlIGl0IGNvbXBsZXRlcywgdGhlIGNhbGxiYWNrIGlzIGNhbGxlZCB3
aXRoIHRoZSByZXN1bHQuIElmIHRoZSBjb21waWxlCi0gICAgLy8gZGlkIGhhcHBlbiB0byBjb21w
bGV0ZSBiZWZvcmUgdGhlIG1ldGhvZCByZXR1cm5zLCB0aGUgcmVzdWx0IG9mIHRoZSBjb21waWxl
Ci0gICAgLy8gbWF5IGJlIHJldHVybmVkLiBJZiB0aGUgY29tcGlsZSBkaWRuJ3QgaGFwcGVuIHRv
IGNvbXBsZXRlIHlldCwgb3IgaWYgd2UKLSAgICAvLyBkaWRuJ3QgaGFwcGVuIHRvIG5vdGljZSB0
aGF0IHRoZSBjb21waWxlIGFscmVhZHkgY29tcGxldGVkLCB3ZSByZXR1cm4KLSAgICAvLyBDb21w
aWxhdGlvbkRlZmVycmVkLgotICAgIC8vCi0gICAgLy8gTm90ZSB0aGF0IGFzeW5jaHJvbm91cyBj
b21waWxlcyBkb24ndCBhY3R1YWxseSBjb21wbGV0ZSB1bmxlc3MgeW91IGNhbGwgaW50bwotICAg
IC8vIERGRzo6V29ya2xpc3Q6OmNvbXBsZXRlQWxsUmVhZHlQbGFuc0ZvclZNKCkuIFlvdSB1c3Vh
bGx5IGZvcmNlIGEgY2FsbCB0bwotICAgIC8vIHRoaXMgb24gdGhlIG1haW4gdGhyZWFkIGJ5IGxp
c3RlbmluZyB0byB0aGUgY2FsbGJhY2sncwotICAgIC8vIGNvbXBpbGF0aW9uRGlkQmVjb21lUmVh
ZHlBc3luY2hyb25vdXNseSgpIG5vdGlmaWNhdGlvbi4gTm90ZSB0aGF0IHRoaXMgY2FsbAotICAg
IC8vIGhhcHBlbnMgb24gYW5vdGhlciB0aHJlYWQuCi0gICAgQ29tcGlsYXRpb25SZXN1bHQgcHJl
cGFyZUZvckV4ZWN1dGlvbkFzeW5jaHJvbm91c2x5KAotICAgICAgICBFeGVjU3RhdGUqLCBKSVRD
b2RlOjpKSVRUeXBlLCBQYXNzUmVmUHRyPERlZmVycmVkQ29tcGlsYXRpb25DYWxsYmFjaz4sCi0g
ICAgICAgIEpJVENvbXBpbGF0aW9uRWZmb3J0ID0gSklUQ29tcGlsYXRpb25NdXN0U3VjY2VlZCwK
LSAgICAgICAgdW5zaWduZWQgYnl0ZWNvZGVJbmRleCA9IFVJTlRfTUFYKTsKLSAgICAKLSAgICAv
LyBFeGFjdGx5IGVxdWl2YWxlbnQgdG8gY29kZUJsb2NrLT5vd25lckV4ZWN1dGFibGUoKS0+aW5z
dGFsbENvZGUoY29kZUJsb2NrKTsKLSAgICB2b2lkIGluc3RhbGwoKTsKLSAgICAKLSAgICAvLyBF
eGFjdGx5IGVxdWl2YWxlbnQgdG8gY29kZUJsb2NrLT5vd25lckV4ZWN1dGFibGUoKS0+bmV3UmVw
bGFjZW1lbnRDb2RlQmxvY2tGb3IoY29kZUJsb2NrLT5zcGVjaWFsaXphdGlvbktpbmQoKSkKLSAg
ICBQYXNzUmVmUHRyPENvZGVCbG9jaz4gbmV3UmVwbGFjZW1lbnQoKTsKLSAgICAKKyNpZiBFTkFC
TEUoSklUKQogICAgIHZvaWQgc2V0SklUQ29kZShQYXNzUmVmUHRyPEpJVENvZGU+IGNvZGUsIE1h
Y3JvQXNzZW1ibGVyQ29kZVB0ciBjb2RlV2l0aEFyaXR5Q2hlY2spCiAgICAgewogICAgICAgICBD
b25jdXJyZW50SklUTG9ja2VyIGxvY2tlcihtX2xvY2spOwpAQCAtMzE4LDE0ICsyODYsMjMgQEAg
cHVibGljOgogICAgICAgICBXVEY6OmxvYWRMb2FkRmVuY2UoKTsgLy8gVGhpcyBwcm9iYWJseSBp
c24ndCBuZWVkZWQuIE9oIHdlbGwsIHBhcmFub2lhIGlzIGdvb2QuCiAgICAgICAgIHJldHVybiBy
ZXN1bHQ7CiAgICAgfQotCi0jaWYgRU5BQkxFKEpJVCkKICAgICBib29sIGhhc0Jhc2VsaW5lSklU
UHJvZmlsaW5nKCkgY29uc3QKICAgICB7CiAgICAgICAgIHJldHVybiBqaXRUeXBlKCkgPT0gSklU
Q29kZTo6QmFzZWxpbmVKSVQ7CiAgICAgfQorI2lmIEVOQUJMRShERkdfSklUKQorICAgIHZpcnR1
YWwgSlNPYmplY3QqIGNvbXBpbGVPcHRpbWl6ZWQoRXhlY1N0YXRlKiwgSlNTY29wZSosIENvbXBp
bGF0aW9uUmVzdWx0JiwgdW5zaWduZWQgYnl0ZWNvZGVJbmRleCkgPSAwOworICAgIHZpcnR1YWwg
Q29tcGlsYXRpb25SZXN1bHQgcmVwbGFjZVdpdGhEZWZlcnJlZE9wdGltaXplZENvZGUoUGFzc1Jl
ZlB0cjxERkc6OlBsYW4+KSA9IDA7CisjZW5kaWYgLy8gRU5BQkxFKERGR19KSVQpCiAgICAgdm9p
ZCBqZXR0aXNvbigpOwotICAgIAorICAgIENvbXBpbGF0aW9uUmVzdWx0IGppdENvbXBpbGUoRXhl
Y1N0YXRlKiBleGVjKQorICAgIHsKKyAgICAgICAgaWYgKGppdFR5cGUoKSAhPSBKSVRDb2RlOjpJ
bnRlcnByZXRlclRodW5rKSB7CisgICAgICAgICAgICBBU1NFUlQoaml0VHlwZSgpID09IEpJVENv
ZGU6OkJhc2VsaW5lSklUKTsKKyAgICAgICAgICAgIHJldHVybiBDb21waWxhdGlvbk5vdE5lZWRl
ZDsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gaml0Q29tcGlsZUltcGwoZXhlYyk7CisgICAg
fQogICAgIHZpcnR1YWwgQ29kZUJsb2NrKiByZXBsYWNlbWVudCgpID0gMDsKIAogICAgIHZpcnR1
YWwgREZHOjpDYXBhYmlsaXR5TGV2ZWwgY2FwYWJpbGl0eUxldmVsSW50ZXJuYWwoKSA9IDA7CkBA
IC0zMzgsNiArMzE1LDggQEAgcHVibGljOgogICAgIERGRzo6Q2FwYWJpbGl0eUxldmVsIGNhcGFi
aWxpdHlMZXZlbFN0YXRlKCkgeyByZXR1cm4gbV9jYXBhYmlsaXR5TGV2ZWxTdGF0ZTsgfQogCiAg
ICAgYm9vbCBoYXNPcHRpbWl6ZWRSZXBsYWNlbWVudCgpOworI2Vsc2UKKyAgICBKSVRDb2RlOjpK
SVRUeXBlIGppdFR5cGUoKSBjb25zdCB7IHJldHVybiBKSVRDb2RlOjpJbnRlcnByZXRlclRodW5r
OyB9CiAjZW5kaWYKIAogICAgIFNjcmlwdEV4ZWN1dGFibGUqIG93bmVyRXhlY3V0YWJsZSgpIGNv
bnN0IHsgcmV0dXJuIG1fb3duZXJFeGVjdXRhYmxlLmdldCgpOyB9CkBAIC05OTAsNiArOTY5LDcg
QEAgcHVibGljOgogICAgIAogcHJvdGVjdGVkOgogI2lmIEVOQUJMRShKSVQpCisgICAgdmlydHVh
bCBDb21waWxhdGlvblJlc3VsdCBqaXRDb21waWxlSW1wbChFeGVjU3RhdGUqKSA9IDA7CiAgICAg
dmlydHVhbCB2b2lkIGpldHRpc29uSW1wbCgpID0gMDsKICNlbmRpZgogICAgIHZpcnR1YWwgdm9p
ZCB2aXNpdFdlYWtSZWZlcmVuY2VzKFNsb3RWaXNpdG9yJik7CkBAIC0xMDA0LDEwICs5ODQsNiBA
QCBwcm90ZWN0ZWQ6CiBwcml2YXRlOgogICAgIGZyaWVuZCBjbGFzcyBERkdDb2RlQmxvY2tzOwog
ICAgIAotICAgIENvbXBpbGF0aW9uUmVzdWx0IHByZXBhcmVGb3JFeGVjdXRpb25JbXBsKAotICAg
ICAgICBFeGVjU3RhdGUqLCBKSVRDb2RlOjpKSVRUeXBlLCBKSVRDb21waWxhdGlvbkVmZm9ydCwg
dW5zaWduZWQgYnl0ZWNvZGVJbmRleCwKLSAgICAgICAgUGFzc1JlZlB0cjxEZWZlcnJlZENvbXBp
bGF0aW9uQ2FsbGJhY2s+KTsKLSAgICAKICAgICB2b2lkIG5vdGljZUluY29taW5nQ2FsbChFeGVj
U3RhdGUqIGNhbGxlckZyYW1lKTsKICAgICAKICAgICBkb3VibGUgb3B0aW1pemF0aW9uVGhyZXNo
b2xkU2NhbGluZ0ZhY3RvcigpOwpAQCAtMTEwOSwxMiArMTA4NSwxMiBAQCBwcml2YXRlOgogICAg
IFNlZ21lbnRlZFZlY3RvcjxMTEludENhbGxMaW5rSW5mbywgOD4gbV9sbGludENhbGxMaW5rSW5m
b3M7CiAgICAgU2VudGluZWxMaW5rZWRMaXN0PExMSW50Q2FsbExpbmtJbmZvLCBCYXNpY1Jhd1Nl
bnRpbmVsTm9kZTxMTEludENhbGxMaW5rSW5mbz4gPiBtX2luY29taW5nTExJbnRDYWxsczsKICNl
bmRpZgotICAgIFJlZlB0cjxKSVRDb2RlPiBtX2ppdENvZGU7Ci0gICAgTWFjcm9Bc3NlbWJsZXJD
b2RlUHRyIG1faml0Q29kZVdpdGhBcml0eUNoZWNrOwogI2lmIEVOQUJMRShKSVQpCiAgICAgVmVj
dG9yPFN0cnVjdHVyZVN0dWJJbmZvPiBtX3N0cnVjdHVyZVN0dWJJbmZvczsKICAgICBWZWN0b3I8
QnlWYWxJbmZvPiBtX2J5VmFsSW5mb3M7CiAgICAgVmVjdG9yPENhbGxMaW5rSW5mbz4gbV9jYWxs
TGlua0luZm9zOworICAgIFJlZlB0cjxKSVRDb2RlPiBtX2ppdENvZGU7CisgICAgTWFjcm9Bc3Nl
bWJsZXJDb2RlUHRyIG1faml0Q29kZVdpdGhBcml0eUNoZWNrOwogICAgIFNlbnRpbmVsTGlua2Vk
TGlzdDxDYWxsTGlua0luZm8sIEJhc2ljUmF3U2VudGluZWxOb2RlPENhbGxMaW5rSW5mbz4gPiBt
X2luY29taW5nQ2FsbHM7CiAjZW5kaWYKICNpZiBFTkFCTEUoREZHX0pJVCkgfHwgRU5BQkxFKExM
SU5UKQpAQCAtMTIxOCw3ICsxMTk0LDEzIEBAIHB1YmxpYzoKIAogI2lmIEVOQUJMRShKSVQpCiBw
cm90ZWN0ZWQ6CisjaWYgRU5BQkxFKERGR19KSVQpCisgICAgdmlydHVhbCBKU09iamVjdCogY29t
cGlsZU9wdGltaXplZChFeGVjU3RhdGUqLCBKU1Njb3BlKiwgQ29tcGlsYXRpb25SZXN1bHQmLCB1
bnNpZ25lZCBieXRlY29kZUluZGV4KTsKKyAgICB2aXJ0dWFsIENvbXBpbGF0aW9uUmVzdWx0IHJl
cGxhY2VXaXRoRGVmZXJyZWRPcHRpbWl6ZWRDb2RlKFBhc3NSZWZQdHI8REZHOjpQbGFuPik7Cisj
ZW5kaWYgLy8gRU5BQkxFKERGR19KSVQpCisKICAgICB2aXJ0dWFsIHZvaWQgamV0dGlzb25JbXBs
KCk7CisgICAgdmlydHVhbCBDb21waWxhdGlvblJlc3VsdCBqaXRDb21waWxlSW1wbChFeGVjU3Rh
dGUqKTsKICAgICB2aXJ0dWFsIENvZGVCbG9jayogcmVwbGFjZW1lbnQoKTsKICAgICB2aXJ0dWFs
IERGRzo6Q2FwYWJpbGl0eUxldmVsIGNhcGFiaWxpdHlMZXZlbEludGVybmFsKCk7CiAjZW5kaWYK
QEAgLTEyNDEsNyArMTIyMywxMyBAQCBwdWJsaWM6CiAgICAgCiAjaWYgRU5BQkxFKEpJVCkKIHBy
b3RlY3RlZDoKKyNpZiBFTkFCTEUoREZHX0pJVCkKKyAgICB2aXJ0dWFsIEpTT2JqZWN0KiBjb21w
aWxlT3B0aW1pemVkKEV4ZWNTdGF0ZSosIEpTU2NvcGUqLCBDb21waWxhdGlvblJlc3VsdCYsIHVu
c2lnbmVkIGJ5dGVjb2RlSW5kZXgpOworICAgIHZpcnR1YWwgQ29tcGlsYXRpb25SZXN1bHQgcmVw
bGFjZVdpdGhEZWZlcnJlZE9wdGltaXplZENvZGUoUGFzc1JlZlB0cjxERkc6OlBsYW4+KTsKKyNl
bmRpZiAvLyBFTkFCTEUoREZHX0pJVCkKKwogICAgIHZpcnR1YWwgdm9pZCBqZXR0aXNvbkltcGwo
KTsKKyAgICB2aXJ0dWFsIENvbXBpbGF0aW9uUmVzdWx0IGppdENvbXBpbGVJbXBsKEV4ZWNTdGF0
ZSopOwogICAgIHZpcnR1YWwgQ29kZUJsb2NrKiByZXBsYWNlbWVudCgpOwogICAgIHZpcnR1YWwg
REZHOjpDYXBhYmlsaXR5TGV2ZWwgY2FwYWJpbGl0eUxldmVsSW50ZXJuYWwoKTsKICNlbmRpZgpA
QCAtMTI2NCw3ICsxMjUyLDEzIEBAIHB1YmxpYzoKICAgICAKICNpZiBFTkFCTEUoSklUKQogcHJv
dGVjdGVkOgorI2lmIEVOQUJMRShERkdfSklUKQorICAgIHZpcnR1YWwgSlNPYmplY3QqIGNvbXBp
bGVPcHRpbWl6ZWQoRXhlY1N0YXRlKiwgSlNTY29wZSosIENvbXBpbGF0aW9uUmVzdWx0JiwgdW5z
aWduZWQgYnl0ZWNvZGVJbmRleCk7CisgICAgdmlydHVhbCBDb21waWxhdGlvblJlc3VsdCByZXBs
YWNlV2l0aERlZmVycmVkT3B0aW1pemVkQ29kZShQYXNzUmVmUHRyPERGRzo6UGxhbj4pOworI2Vu
ZGlmIC8vIEVOQUJMRShERkdfSklUKQorCiAgICAgdmlydHVhbCB2b2lkIGpldHRpc29uSW1wbCgp
OworICAgIHZpcnR1YWwgQ29tcGlsYXRpb25SZXN1bHQgaml0Q29tcGlsZUltcGwoRXhlY1N0YXRl
Kik7CiAgICAgdmlydHVhbCBDb2RlQmxvY2sqIHJlcGxhY2VtZW50KCk7CiAgICAgdmlydHVhbCBE
Rkc6OkNhcGFiaWxpdHlMZXZlbCBjYXBhYmlsaXR5TGV2ZWxJbnRlcm5hbCgpOwogI2VuZGlmCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRGVmZXJyZWRDb21waWxh
dGlvbkNhbGxiYWNrLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9EZWZlcnJl
ZENvbXBpbGF0aW9uQ2FsbGJhY2suY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAz
NWFmN2M3YjljNzY4ZTZkY2I0ZDg5YmQxMzI5Nzk5YTg3YWY0MzIxLi4wMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9EZWZlcnJlZENvbXBpbGF0aW9uQ2FsbGJhY2suY3BwCisrKyAvZGV2L251bGwKQEAgLTEs
MzUgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6
Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
Ci0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKLSAqLwot
Ci0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiRGVmZXJyZWRDb21waWxhdGlvbkNhbGxi
YWNrLmgiCi0KLW5hbWVzcGFjZSBKU0MgewotCi1EZWZlcnJlZENvbXBpbGF0aW9uQ2FsbGJhY2s6
OkRlZmVycmVkQ29tcGlsYXRpb25DYWxsYmFjaygpIHsgfQotRGVmZXJyZWRDb21waWxhdGlvbkNh
bGxiYWNrOjp+RGVmZXJyZWRDb21waWxhdGlvbkNhbGxiYWNrKCkgeyB9Ci0KLX0gLy8gSlNDCi0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9EZWZlcnJlZENvbXBp
bGF0aW9uQ2FsbGJhY2suaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9EZWZlcnJl
ZENvbXBpbGF0aW9uQ2FsbGJhY2suaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjQy
MWUzZTI1MDE3Y2M5ZjgzNzQ0MGZmZTJiZmIyZjNmMGI3ZGJhZC4uMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvRGVmZXJyZWRDb21waWxhdGlvbkNhbGxiYWNrLmgKKysrIC9kZXYvbnVsbApAQCAtMSw1MCAr
MCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQot
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
Ci0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAotICovCi0KLSNp
Zm5kZWYgRGVmZXJyZWRDb21waWxhdGlvbkNhbGxiYWNrX2gKLSNkZWZpbmUgRGVmZXJyZWRDb21w
aWxhdGlvbkNhbGxiYWNrX2gKLQotI2luY2x1ZGUgIkNvbXBpbGF0aW9uUmVzdWx0LmgiCi0jaW5j
bHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KLQotbmFtZXNwYWNlIEpTQyB7Ci0KLWNsYXNzIENvZGVC
bG9jazsKLQotY2xhc3MgRGVmZXJyZWRDb21waWxhdGlvbkNhbGxiYWNrIDogcHVibGljIFJlZkNv
dW50ZWQ8RGVmZXJyZWRDb21waWxhdGlvbkNhbGxiYWNrPiB7Ci1wcm90ZWN0ZWQ6Ci0gICAgRGVm
ZXJyZWRDb21waWxhdGlvbkNhbGxiYWNrKCk7Ci0KLXB1YmxpYzoKLSAgICB2aXJ0dWFsIH5EZWZl
cnJlZENvbXBpbGF0aW9uQ2FsbGJhY2soKTsKLQotICAgIHZpcnR1YWwgdm9pZCBjb21waWxhdGlv
bkRpZEJlY29tZVJlYWR5QXN5bmNocm9ub3VzbHkoQ29kZUJsb2NrKikgPSAwOwotICAgIHZpcnR1
YWwgdm9pZCBjb21waWxhdGlvbkRpZENvbXBsZXRlKENvZGVCbG9jayosIENvbXBpbGF0aW9uUmVz
dWx0KSA9IDA7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBKU0MKLQotI2VuZGlmIC8vIERlZmVycmVk
Q29tcGlsYXRpb25DYWxsYmFja19oCi0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHRHJpdmVyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRHJpdmVy
LmNwcAppbmRleCA0ZGU2MzZmOTA0ZmNhMDBiNzcxZjhjMGM1NTVjNmY0ZjZhYzVhMjZjLi4xNzEz
ZjJmYmIxZjBjNGMyNGRjN2FiYTY2Y2YxZjg5OTQ5NTExZjhiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0RyaXZlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdEcml2ZXIuY3BwCkBAIC01NSw3ICs1NSw3IEBAIHVuc2lnbmVkIGdldE51bUNv
bXBpbGF0aW9ucygpCiAgICAgcmV0dXJuIG51bUNvbXBpbGF0aW9uczsKIH0KIAotQ29tcGlsYXRp
b25SZXN1bHQgdHJ5Q29tcGlsZShFeGVjU3RhdGUqIGV4ZWMsIENvZGVCbG9jayogY29kZUJsb2Nr
LCB1bnNpZ25lZCBvc3JFbnRyeUJ5dGVjb2RlSW5kZXgsIFBhc3NSZWZQdHI8RGVmZXJyZWRDb21w
aWxhdGlvbkNhbGxiYWNrPiBjYWxsYmFjaykKK3N0YXRpYyBDb21waWxhdGlvblJlc3VsdCBjb21w
aWxlKENvbXBpbGVNb2RlIGNvbXBpbGVNb2RlLCBFeGVjU3RhdGUqIGV4ZWMsIENvZGVCbG9jayog
Y29kZUJsb2NrLCBSZWZQdHI8SlNDOjpKSVRDb2RlPiYgaml0Q29kZSwgTWFjcm9Bc3NlbWJsZXJD
b2RlUHRyKiBqaXRDb2RlV2l0aEFyaXR5Q2hlY2ssIHVuc2lnbmVkIG9zckVudHJ5Qnl0ZWNvZGVJ
bmRleCkKIHsKICAgICBTYW1wbGluZ1JlZ2lvbiBzYW1wbGluZ1JlZ2lvbigiREZHIENvbXBpbGF0
aW9uIChEcml2ZXIpIik7CiAgICAgCkBAIC05OSwxMiArOTksMTIgQEAgQ29tcGlsYXRpb25SZXN1
bHQgdHJ5Q29tcGlsZShFeGVjU3RhdGUqIGV4ZWMsIENvZGVCbG9jayogY29kZUJsb2NrLCB1bnNp
Z25lZCBvc3IKICAgICBlbHNlCiAgICAgICAgIG51bVZhcnNXaXRoVmFsdWVzID0gMDsKICAgICBS
ZWZQdHI8UGxhbj4gcGxhbiA9IGFkb3B0UmVmKAotICAgICAgICBuZXcgUGxhbihjb2RlQmxvY2ss
IG9zckVudHJ5Qnl0ZWNvZGVJbmRleCwgbnVtVmFyc1dpdGhWYWx1ZXMpKTsKKyAgICAgICAgbmV3
IFBsYW4oY29tcGlsZU1vZGUsIGNvZGVCbG9jaywgb3NyRW50cnlCeXRlY29kZUluZGV4LCBudW1W
YXJzV2l0aFZhbHVlcykpOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgcGxhbi0+bXVzdEhh
bmRsZVZhbHVlcy5zaXplKCk7ICsraSkgewogICAgICAgICBpbnQgb3BlcmFuZCA9IHBsYW4tPm11
c3RIYW5kbGVWYWx1ZXMub3BlcmFuZEZvckluZGV4KGkpOwogICAgICAgICBpZiAob3BlcmFuZElz
QXJndW1lbnQob3BlcmFuZCkKICAgICAgICAgICAgICYmICFvcGVyYW5kVG9Bcmd1bWVudChvcGVy
YW5kKQotICAgICAgICAgICAgJiYgY29kZUJsb2NrLT5jb2RlVHlwZSgpID09IEZ1bmN0aW9uQ29k
ZQorICAgICAgICAgICAgJiYgY29tcGlsZU1vZGUgPT0gQ29tcGlsZUZ1bmN0aW9uCiAgICAgICAg
ICAgICAmJiBjb2RlQmxvY2stPnNwZWNpYWxpemF0aW9uS2luZCgpID09IENvZGVGb3JDb25zdHJ1
Y3QpIHsKICAgICAgICAgICAgIC8vIFVnaC4gSWYgd2UncmUgaW4gYSBjb25zdHJ1Y3RvciwgdGhl
ICd0aGlzJyBhcmd1bWVudCBtYXkgaG9sZCBnYXJiYWdlLiBJdCB3aWxsCiAgICAgICAgICAgICAv
LyBhbHNvIG5ldmVyIGJlIHVzZWQuIEl0IGRvZXNuJ3QgbWF0dGVyIHdoYXQgd2UgcHV0IGludG8g
dGhlIHZhbHVlIGZvciB0aGlzLApAQCAtMTE1LDggKzExNSw3IEBAIENvbXBpbGF0aW9uUmVzdWx0
IHRyeUNvbXBpbGUoRXhlY1N0YXRlKiBleGVjLCBDb2RlQmxvY2sqIGNvZGVCbG9jaywgdW5zaWdu
ZWQgb3NyCiAgICAgICAgICAgICBwbGFuLT5tdXN0SGFuZGxlVmFsdWVzW2ldID0gZXhlYy0+dW5j
aGVja2VkUihvcGVyYW5kKS5qc1ZhbHVlKCk7CiAgICAgfQogICAgIAotICAgIGlmIChlbmFibGVD
b25jdXJyZW50SklUKCkgJiYgY2FsbGJhY2spIHsKLSAgICAgICAgcGxhbi0+Y2FsbGJhY2sgPSBj
YWxsYmFjazsKKyAgICBpZiAoZW5hYmxlQ29uY3VycmVudEpJVCgpKSB7CiAgICAgICAgIGlmICgh
dm0ud29ya2xpc3QpCiAgICAgICAgICAgICB2bS53b3JrbGlzdCA9IGdsb2JhbFdvcmtsaXN0KCk7
CiAgICAgICAgIGlmIChsb2dDb21waWxhdGlvbkNoYW5nZXMoKSkKQEAgLTEyNiw3ICsxMjUsMjIg
QEAgQ29tcGlsYXRpb25SZXN1bHQgdHJ5Q29tcGlsZShFeGVjU3RhdGUqIGV4ZWMsIENvZGVCbG9j
ayogY29kZUJsb2NrLCB1bnNpZ25lZCBvc3IKICAgICB9CiAgICAgCiAgICAgcGxhbi0+Y29tcGls
ZUluVGhyZWFkKCp2bS5kZmdTdGF0ZSk7Ci0gICAgcmV0dXJuIHBsYW4tPmZpbmFsaXplV2l0aG91
dE5vdGlmeWluZ0NhbGxiYWNrKCk7CisgICAgcmV0dXJuIHBsYW4tPmZpbmFsaXplKGppdENvZGUs
IGppdENvZGVXaXRoQXJpdHlDaGVjayk7Cit9CisKK0NvbXBpbGF0aW9uUmVzdWx0IHRyeUNvbXBp
bGUoRXhlY1N0YXRlKiBleGVjLCBDb2RlQmxvY2sqIGNvZGVCbG9jaywgUmVmUHRyPEpTQzo6SklU
Q29kZT4mIGppdENvZGUsIHVuc2lnbmVkIGJ5dGVjb2RlSW5kZXgpCit7CisgICAgcmV0dXJuIGNv
bXBpbGUoQ29tcGlsZU90aGVyLCBleGVjLCBjb2RlQmxvY2ssIGppdENvZGUsIDAsIGJ5dGVjb2Rl
SW5kZXgpOworfQorCitDb21waWxhdGlvblJlc3VsdCB0cnlDb21waWxlRnVuY3Rpb24oRXhlY1N0
YXRlKiBleGVjLCBDb2RlQmxvY2sqIGNvZGVCbG9jaywgUmVmUHRyPEpTQzo6SklUQ29kZT4mIGpp
dENvZGUsIE1hY3JvQXNzZW1ibGVyQ29kZVB0ciYgaml0Q29kZVdpdGhBcml0eUNoZWNrLCB1bnNp
Z25lZCBieXRlY29kZUluZGV4KQoreworICAgIHJldHVybiBjb21waWxlKENvbXBpbGVGdW5jdGlv
biwgZXhlYywgY29kZUJsb2NrLCBqaXRDb2RlLCAmaml0Q29kZVdpdGhBcml0eUNoZWNrLCBieXRl
Y29kZUluZGV4KTsKK30KKworQ29tcGlsYXRpb25SZXN1bHQgdHJ5RmluYWxpemVQbGFuKFBhc3NS
ZWZQdHI8UGxhbj4gcGxhbiwgUmVmUHRyPEpTQzo6SklUQ29kZT4mIGppdENvZGUsIE1hY3JvQXNz
ZW1ibGVyQ29kZVB0ciogaml0Q29kZVdpdGhBcml0eUNoZWNrKQoreworICAgIHJldHVybiBwbGFu
LT5maW5hbGl6ZShqaXRDb2RlLCBqaXRDb2RlV2l0aEFyaXR5Q2hlY2spOwogfQogCiB9IH0gLy8g
bmFtZXNwYWNlIEpTQzo6REZHCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0RyaXZlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEcml2ZXIuaAppbmRl
eCAzOTdmZGM5NzA2ZGI1MGFmMzQxZTQ3M2IxODliODEwMjRiN2FlMWUyLi5jYzdhOTJkOTVjNDcx
YTg0MmQ1YmVlOTZkMGE5NDU5MGQ0MjZjMjZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0RyaXZlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
RHJpdmVyLmgKQEAgLTQyLDkgKzQyLDE3IEBAIG5hbWVzcGFjZSBERkcgewogSlNfRVhQT1JUX1BS
SVZBVEUgdW5zaWduZWQgZ2V0TnVtQ29tcGlsYXRpb25zKCk7CiAKICNpZiBFTkFCTEUoREZHX0pJ
VCkKLUNvbXBpbGF0aW9uUmVzdWx0IHRyeUNvbXBpbGUoRXhlY1N0YXRlKiwgQ29kZUJsb2NrKiwg
dW5zaWduZWQgb3NyRW50cnlCeXRlY29kZUluZGV4LCBQYXNzUmVmUHRyPERlZmVycmVkQ29tcGls
YXRpb25DYWxsYmFjaz4pOworQ29tcGlsYXRpb25SZXN1bHQgdHJ5Q29tcGlsZShFeGVjU3RhdGUq
LCBDb2RlQmxvY2sqLCBSZWZQdHI8SlNDOjpKSVRDb2RlPiYsIHVuc2lnbmVkIGJ5dGVjb2RlSW5k
ZXgpOworQ29tcGlsYXRpb25SZXN1bHQgdHJ5Q29tcGlsZUZ1bmN0aW9uKEV4ZWNTdGF0ZSosIENv
ZGVCbG9jayosIFJlZlB0cjxKU0M6OkpJVENvZGU+JiwgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyJiBq
aXRDb2RlV2l0aEFyaXR5Q2hlY2ssIHVuc2lnbmVkIGJ5dGVjb2RlSW5kZXgpOworQ29tcGlsYXRp
b25SZXN1bHQgdHJ5RmluYWxpemVQbGFuKFBhc3NSZWZQdHI8UGxhbj4sIFJlZlB0cjxKU0M6OkpJ
VENvZGU+JiwgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyKiBqaXRDb2RlV2l0aEFyaXR5Q2hlY2spOwog
I2Vsc2UKLWlubGluZSBDb21waWxhdGlvblJlc3VsdCB0cnlDb21waWxlKEV4ZWNTdGF0ZSosIENv
ZGVCbG9jayosIHVuc2lnbmVkLCBQYXNzUmVmUHRyPERlZmVycmVkQ29tcGlsYXRpb25DYWxsYmFj
az4pIHsgcmV0dXJuIENvbXBpbGF0aW9uRmFpbGVkOyB9CitpbmxpbmUgQ29tcGlsYXRpb25SZXN1
bHQgdHJ5Q29tcGlsZShFeGVjU3RhdGUqLCBDb2RlQmxvY2sqLCBSZWZQdHI8SlNDOjpKSVRDb2Rl
PiYsIHVuc2lnbmVkKSB7IHJldHVybiBDb21waWxhdGlvbkZhaWxlZDsgfQoraW5saW5lIENvbXBp
bGF0aW9uUmVzdWx0IHRyeUNvbXBpbGVGdW5jdGlvbihFeGVjU3RhdGUqLCBDb2RlQmxvY2sqLCBS
ZWZQdHI8SlNDOjpKSVRDb2RlPiYsIE1hY3JvQXNzZW1ibGVyQ29kZVB0ciYsIHVuc2lnbmVkKSB7
IHJldHVybiBDb21waWxhdGlvbkZhaWxlZDsgfQoraW5saW5lIENvbXBpbGF0aW9uUmVzdWx0IHRy
eUZpbmFsaXplUGxhbihQYXNzUmVmUHRyPFBsYW4+LCBSZWZQdHI8SlNDOjpKSVRDb2RlPiYsIE1h
Y3JvQXNzZW1ibGVyQ29kZVB0ciopCit7CisgICAgVU5SRUFDSEFCTEVfRk9SX1BMQVRGT1JNKCk7
CisgICAgcmV0dXJuIENvbXBpbGF0aW9uRmFpbGVkOworfQogI2VuZGlmCiAKIH0gfSAvLyBuYW1l
c3BhY2UgSlNDOjpERkcKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
RmFpbGVkRmluYWxpemVyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRmFpbGVk
RmluYWxpemVyLmNwcAppbmRleCBmYjAwZTIwMjFkM2FlYWNjYzE1ZDY2OTgzMDk0MmMxNWExMDM1
YjQwLi4wOTM2YjU1MTliMjgyNGI2ZjMxMTYwZDI5YzQ4ODY1ZjcxZDk2MTQyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZhaWxlZEZpbmFsaXplci5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGYWlsZWRGaW5hbGl6ZXIuY3BwCkBAIC0zOSwx
MiArMzksMTIgQEAgRmFpbGVkRmluYWxpemVyOjp+RmFpbGVkRmluYWxpemVyKCkKIHsKIH0KIAot
Ym9vbCBGYWlsZWRGaW5hbGl6ZXI6OmZpbmFsaXplKCkKK2Jvb2wgRmFpbGVkRmluYWxpemVyOjpm
aW5hbGl6ZShSZWZQdHI8SlNDOjpKSVRDb2RlPiYpCiB7CiAgICAgcmV0dXJuIGZhbHNlOwogfQog
Ci1ib29sIEZhaWxlZEZpbmFsaXplcjo6ZmluYWxpemVGdW5jdGlvbigpCitib29sIEZhaWxlZEZp
bmFsaXplcjo6ZmluYWxpemVGdW5jdGlvbihSZWZQdHI8SlNDOjpKSVRDb2RlPiYsIE1hY3JvQXNz
ZW1ibGVyQ29kZVB0ciYpCiB7CiAgICAgcmV0dXJuIGZhbHNlOwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGYWlsZWRGaW5hbGl6ZXIuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHRmFpbGVkRmluYWxpemVyLmgKaW5kZXggYWQzOTgyZWM2YTc2OTUy
YjE0YjUyNWZhZThmZTlmNGQwZjg4YTliNC4uYmVjYTEyNzc2MDg3NWUwM2U2NWNkMzBjZWFhM2Fk
N2Q5ODI5NjkzMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGYWls
ZWRGaW5hbGl6ZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZhaWxlZEZp
bmFsaXplci5oCkBAIC0zOSw4ICszOSw4IEBAIHB1YmxpYzoKICAgICBGYWlsZWRGaW5hbGl6ZXIo
UGxhbiYpOwogICAgIHZpcnR1YWwgfkZhaWxlZEZpbmFsaXplcigpOwogICAgIAotICAgIGJvb2wg
ZmluYWxpemUoKTsKLSAgICBib29sIGZpbmFsaXplRnVuY3Rpb24oKTsKKyAgICBib29sIGZpbmFs
aXplKFJlZlB0cjxKU0M6OkpJVENvZGU+JiBlbnRyeSk7CisgICAgYm9vbCBmaW5hbGl6ZUZ1bmN0
aW9uKFJlZlB0cjxKU0M6OkpJVENvZGU+JiBlbnRyeSwgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyJiB3
aXRoQXJpdHlDaGVjayk7CiB9OwogCiB9IH0gLy8gbmFtZXNwYWNlIEpTQzo6REZHCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpbmFsaXplci5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdGaW5hbGl6ZXIuaAppbmRleCAwYjkyYWRiNjdhMjZhZDMxMGZl
ZWViNTJkZGRjNGVhZWE5OWU4MDBmLi5lNTk4ODY1YzAxNGRmNWU2ZDNmMTBhNjVhOWFlYWU3ZTY4
MzQzZjg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpbmFsaXpl
ci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRmluYWxpemVyLmgKQEAgLTQ2
LDggKzQ2LDggQEAgcHVibGljOgogICAgIEZpbmFsaXplcihQbGFuJik7CiAgICAgdmlydHVhbCB+
RmluYWxpemVyKCk7CiAgICAgCi0gICAgdmlydHVhbCBib29sIGZpbmFsaXplKCkgPSAwOwotICAg
IHZpcnR1YWwgYm9vbCBmaW5hbGl6ZUZ1bmN0aW9uKCkgPSAwOworICAgIHZpcnR1YWwgYm9vbCBm
aW5hbGl6ZShSZWZQdHI8SlNDOjpKSVRDb2RlPiYgZW50cnkpID0gMDsKKyAgICB2aXJ0dWFsIGJv
b2wgZmluYWxpemVGdW5jdGlvbihSZWZQdHI8SlNDOjpKSVRDb2RlPiYgZW50cnksIE1hY3JvQXNz
ZW1ibGVyQ29kZVB0ciYgd2l0aEFyaXR5Q2hlY2spID0gMDsKIAogcHJvdGVjdGVkOgogICAgIFBs
YW4mIG1fcGxhbjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklU
RmluYWxpemVyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklURmluYWxpemVy
LmNwcAppbmRleCAxNTBlZWE2YzhkOGMzODI5ZDI1ODQ1ZjZmZjM3NWJkMDQ0MzA0Y2FmLi4yODNj
YjFiNmM1ODNlMjIwMzFjMWE2MTFlOWI0YzgwYmVhNjgzNjY5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVEZpbmFsaXplci5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdKSVRGaW5hbGl6ZXIuY3BwCkBAIC0yOCw3ICsyOCw2IEBACiAKICNp
ZiBFTkFCTEUoREZHX0pJVCkKIAotI2luY2x1ZGUgIkNvZGVCbG9jay5oIgogI2luY2x1ZGUgIkRG
R0NvbW1vbi5oIgogI2luY2x1ZGUgIkRGR1BsYW4uaCIKIApAQCAtNDYsMjMgKzQ1LDIzIEBAIEpJ
VEZpbmFsaXplcjo6fkpJVEZpbmFsaXplcigpCiB7CiB9CiAKLWJvb2wgSklURmluYWxpemVyOjpm
aW5hbGl6ZSgpCitib29sIEpJVEZpbmFsaXplcjo6ZmluYWxpemUoUmVmUHRyPEpTQzo6SklUQ29k
ZT4mIGVudHJ5KQogewogICAgIGZpbmFsaXplQ29tbW9uKCk7CiAgICAgCiAgICAgbV9qaXRDb2Rl
LT5pbml0aWFsaXplQ29kZVJlZihtX2xpbmtCdWZmZXItPmZpbmFsaXplQ29kZVdpdGhvdXREaXNh
c3NlbWJseSgpKTsKLSAgICBtX3BsYW4uY29kZUJsb2NrLT5zZXRKSVRDb2RlKG1faml0Q29kZSwg
TWFjcm9Bc3NlbWJsZXJDb2RlUHRyKCkpOworICAgIGVudHJ5ID0gbV9qaXRDb2RlOwogICAgIAog
ICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIEpJVEZpbmFsaXplcjo6ZmluYWxpemVGdW5jdGlv
bigpCitib29sIEpJVEZpbmFsaXplcjo6ZmluYWxpemVGdW5jdGlvbihSZWZQdHI8SlNDOjpKSVRD
b2RlPiYgZW50cnksIE1hY3JvQXNzZW1ibGVyQ29kZVB0ciYgd2l0aEFyaXR5Q2hlY2spCiB7CiAg
ICAgZmluYWxpemVDb21tb24oKTsKICAgICAKLSAgICBNYWNyb0Fzc2VtYmxlckNvZGVQdHIgd2l0
aEFyaXR5Q2hlY2sgPSBtX2xpbmtCdWZmZXItPmxvY2F0aW9uT2YobV9hcml0eUNoZWNrKTsKKyAg
ICB3aXRoQXJpdHlDaGVjayA9IG1fbGlua0J1ZmZlci0+bG9jYXRpb25PZihtX2FyaXR5Q2hlY2sp
OwogICAgIG1faml0Q29kZS0+aW5pdGlhbGl6ZUNvZGVSZWYobV9saW5rQnVmZmVyLT5maW5hbGl6
ZUNvZGVXaXRob3V0RGlzYXNzZW1ibHkoKSk7Ci0gICAgbV9wbGFuLmNvZGVCbG9jay0+c2V0SklU
Q29kZShtX2ppdENvZGUsIHdpdGhBcml0eUNoZWNrKTsKKyAgICBlbnRyeSA9IG1faml0Q29kZTsK
ICAgICAKICAgICByZXR1cm4gdHJ1ZTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHSklURmluYWxpemVyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0pJVEZpbmFsaXplci5oCmluZGV4IDJkYmE4ZDMwNWJmMWJjZTJjYmYwZTQ4NTAwMmRkMjBlZjZm
ZDRhZDYuLjExNGFmYWVlNTFkY2UyYWQ1YmU5M2I5MzNiZjBiZjAxOTg4NWZiNmIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklURmluYWxpemVyLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRGaW5hbGl6ZXIuaApAQCAtNDIsOCArNDIsOCBA
QCBwdWJsaWM6CiAgICAgSklURmluYWxpemVyKFBsYW4mLCBQYXNzUmVmUHRyPEpJVENvZGU+LCBQ
YXNzT3duUHRyPExpbmtCdWZmZXI+LCBNYWNyb0Fzc2VtYmxlcjo6TGFiZWwgYXJpdHlDaGVjayA9
IE1hY3JvQXNzZW1ibGVyOjpMYWJlbCgpKTsKICAgICB2aXJ0dWFsIH5KSVRGaW5hbGl6ZXIoKTsK
ICAgICAKLSAgICBib29sIGZpbmFsaXplKCk7Ci0gICAgYm9vbCBmaW5hbGl6ZUZ1bmN0aW9uKCk7
CisgICAgYm9vbCBmaW5hbGl6ZShSZWZQdHI8SlNDOjpKSVRDb2RlPiYgZW50cnkpOworICAgIGJv
b2wgZmluYWxpemVGdW5jdGlvbihSZWZQdHI8SlNDOjpKSVRDb2RlPiYgZW50cnksIE1hY3JvQXNz
ZW1ibGVyQ29kZVB0ciYgd2l0aEFyaXR5Q2hlY2spOwogCiBwcml2YXRlOgogICAgIHZvaWQgZmlu
YWxpemVDb21tb24oKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
T1NSRXhpdFByZXBhcmF0aW9uLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NS
RXhpdFByZXBhcmF0aW9uLmNwcAppbmRleCA2NGZiOWRkNjNiNTQxZjZmNjE3MGVmMDJjODY0MTEw
N2ViN2IyZDBhLi40NGRiMGYxYTkxNGNkZjliNDE1Y2Q2MTYwOTk5ZTRlMDVjYWFjNGFjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXRQcmVwYXJhdGlvbi5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0UHJlcGFyYXRpb24u
Y3BwCkBAIC0zMCwyOCArMzAsMTkgQEAKIAogI2luY2x1ZGUgIkNvZGVCbG9jay5oIgogI2luY2x1
ZGUgIkV4ZWN1dGFibGUuaCIKLSNpbmNsdWRlICJKSVRDb2RlLmgiCiAjaW5jbHVkZSAiT3BlcmF0
aW9ucy5oIgogCiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CiAKIHZvaWQgcHJlcGFy
ZUNvZGVPcmlnaW5Gb3JPU1JFeGl0KEV4ZWNTdGF0ZSogZXhlYywgQ29kZU9yaWdpbiBjb2RlT3Jp
Z2luKQogewotICAgIERlZmVyR0MgZGVmZXJHQyhleGVjLT52bSgpLmhlYXApOwotICAgIAogICAg
IGZvciAoOyBjb2RlT3JpZ2luLmlubGluZUNhbGxGcmFtZTsgY29kZU9yaWdpbiA9IGNvZGVPcmln
aW4uaW5saW5lQ2FsbEZyYW1lLT5jYWxsZXIpIHsKICAgICAgICAgRnVuY3Rpb25FeGVjdXRhYmxl
KiBleGVjdXRhYmxlID0KICAgICAgICAgICAgIHN0YXRpY19jYXN0PEZ1bmN0aW9uRXhlY3V0YWJs
ZSo+KGNvZGVPcmlnaW4uaW5saW5lQ2FsbEZyYW1lLT5leGVjdXRhYmxlLmdldCgpKTsKICAgICAg
ICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBleGVjdXRhYmxlLT5iYXNlbGluZUNvZGVCbG9ja0Zv
cigKICAgICAgICAgICAgIGNvZGVPcmlnaW4uaW5saW5lQ2FsbEZyYW1lLT5pc0NhbGwgPyBDb2Rl
Rm9yQ2FsbCA6IENvZGVGb3JDb25zdHJ1Y3QpOwogICAgICAgICAKLSAgICAgICAgaWYgKGNvZGVC
bG9jay0+aml0VHlwZSgpID09IEpTQzo6SklUQ29kZTo6QmFzZWxpbmVKSVQpCi0gICAgICAgICAg
ICBjb250aW51ZTsKLSAgICAgICAgQVNTRVJUKGNvZGVCbG9jay0+aml0VHlwZSgpID09IEpTQzo6
SklUQ29kZTo6SW50ZXJwcmV0ZXJUaHVuayk7Ci0gICAgICAgIENvbXBpbGF0aW9uUmVzdWx0IHJl
c3VsdCA9IGNvZGVCbG9jay0+cHJlcGFyZUZvckV4ZWN1dGlvbigKLSAgICAgICAgICAgIGV4ZWMs
IEpTQzo6SklUQ29kZTo6QmFzZWxpbmVKSVQsIEpJVENvbXBpbGF0aW9uTXVzdFN1Y2NlZWQpOwot
ICAgICAgICBBU1NFUlRfVU5VU0VEKHJlc3VsdCwgcmVzdWx0ID09IENvbXBpbGF0aW9uU3VjY2Vz
c2Z1bCk7Ci0gICAgICAgIGNvZGVCbG9jay0+aW5zdGFsbCgpOworICAgICAgICBjb2RlQmxvY2st
PmppdENvbXBpbGUoZXhlYyk7CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdPcGVyYXRpb25zLmNwcAppbmRleCBjYzhlN2FmYzIxYTAyNGNlMTU2NjM2YzA3NjkyZWY5
OGQ4ZjE5OWY0Li4zMzEyYmExZjU2MjVkM2RhYjA1N2RkMTVhN2U2ZmZiN2IwYzhhYTc5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAKQEAgLTEyODEsNyAr
MTI4MSw3IEBAIGlubGluZSBjaGFyKiBsaW5rRm9yKEV4ZWNTdGF0ZSogZXhlY0NhbGxlZSwgQ29k
ZVNwZWNpYWxpemF0aW9uS2luZCBraW5kKQogICAgICAgICBjb2RlUHRyID0gZXhlY3V0YWJsZS0+
Z2VuZXJhdGVkSklUQ29kZUZvcihraW5kKS0+YWRkcmVzc0ZvckNhbGwoKTsKICAgICBlbHNlIHsK
ICAgICAgICAgRnVuY3Rpb25FeGVjdXRhYmxlKiBmdW5jdGlvbkV4ZWN1dGFibGUgPSBzdGF0aWNf
Y2FzdDxGdW5jdGlvbkV4ZWN1dGFibGUqPihleGVjdXRhYmxlKTsKLSAgICAgICAgSlNPYmplY3Qq
IGVycm9yID0gZnVuY3Rpb25FeGVjdXRhYmxlLT5wcmVwYXJlRm9yRXhlY3V0aW9uKGV4ZWNDYWxs
ZWUsIGNhbGxlZS0+c2NvcGUoKSwga2luZCk7CisgICAgICAgIEpTT2JqZWN0KiBlcnJvciA9IGZ1
bmN0aW9uRXhlY3V0YWJsZS0+Y29tcGlsZUZvcihleGVjQ2FsbGVlLCBjYWxsZWUtPnNjb3BlKCks
IGtpbmQpOwogICAgICAgICBpZiAoZXJyb3IpIHsKICAgICAgICAgICAgIHZtLT50aHJvd0V4Y2Vw
dGlvbihleGVjLCBjcmVhdGVTdGFja092ZXJmbG93RXJyb3IoZXhlYykpOwogICAgICAgICAgICAg
cmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KHZtLT5nZXRDVElTdHViKHRocm93RXhjZXB0
aW9uRnJvbUNhbGxTbG93UGF0aEdlbmVyYXRvcikuY29kZSgpLmV4ZWN1dGFibGVBZGRyZXNzKCkp
OwpAQCAtMTMyNiw3ICsxMzI2LDcgQEAgaW5saW5lIGNoYXIqIHZpcnR1YWxGb3JXaXRoRnVuY3Rp
b24oRXhlY1N0YXRlKiBleGVjQ2FsbGVlLCBDb2RlU3BlY2lhbGl6YXRpb25LaW4KICAgICBFeGVj
dXRhYmxlQmFzZSogZXhlY3V0YWJsZSA9IGZ1bmN0aW9uLT5leGVjdXRhYmxlKCk7CiAgICAgaWYg
KFVOTElLRUxZKCFleGVjdXRhYmxlLT5oYXNKSVRDb2RlRm9yKGtpbmQpKSkgewogICAgICAgICBG
dW5jdGlvbkV4ZWN1dGFibGUqIGZ1bmN0aW9uRXhlY3V0YWJsZSA9IHN0YXRpY19jYXN0PEZ1bmN0
aW9uRXhlY3V0YWJsZSo+KGV4ZWN1dGFibGUpOwotICAgICAgICBKU09iamVjdCogZXJyb3IgPSBm
dW5jdGlvbkV4ZWN1dGFibGUtPnByZXBhcmVGb3JFeGVjdXRpb24oZXhlY0NhbGxlZSwgZnVuY3Rp
b24tPnNjb3BlKCksIGtpbmQpOworICAgICAgICBKU09iamVjdCogZXJyb3IgPSBmdW5jdGlvbkV4
ZWN1dGFibGUtPmNvbXBpbGVGb3IoZXhlY0NhbGxlZSwgZnVuY3Rpb24tPnNjb3BlKCksIGtpbmQp
OwogICAgICAgICBpZiAoZXJyb3IpIHsKICAgICAgICAgICAgIGV4ZWMtPnZtKCkudGhyb3dFeGNl
cHRpb24oZXhlY0NhbGxlZSwgZXJyb3IpOwogICAgICAgICAgICAgcmV0dXJuIHJlaW50ZXJwcmV0
X2Nhc3Q8Y2hhcio+KHZtLT5nZXRDVElTdHViKHRocm93RXhjZXB0aW9uRnJvbUNhbGxTbG93UGF0
aEdlbmVyYXRvcikuY29kZSgpLmV4ZWN1dGFibGVBZGRyZXNzKCkpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQbGFuLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHUGxhbi5jcHAKaW5kZXggZjVhNzQzNGJhZjNlYzEwZjJiOWY0ZWNmMjQ5NjY5N2M1
Njc1N2JhMi4uNTlmMzc5MDhhN2I3ZWU0NzgyZjg1NjZhYTdhNzE4NjM0MzI2ZjgzYyAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQbGFuLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1BsYW4uY3BwCkBAIC04MCw5ICs4MCwxMCBAQCBzdGF0aWMg
dm9pZCBkdW1wQW5kVmVyaWZ5R3JhcGgoR3JhcGgmIGdyYXBoLCBjb25zdCBjaGFyKiB0ZXh0KQog
fQogCiBQbGFuOjpQbGFuKAotICAgIFBhc3NSZWZQdHI8Q29kZUJsb2NrPiBwYXNzZWRDb2RlQmxv
Y2ssIHVuc2lnbmVkIG9zckVudHJ5Qnl0ZWNvZGVJbmRleCwKKyAgICBDb21waWxlTW9kZSBjb21w
aWxlTW9kZSwgUGFzc1JlZlB0cjxDb2RlQmxvY2s+IHBhc3NlZENvZGVCbG9jaywgdW5zaWduZWQg
b3NyRW50cnlCeXRlY29kZUluZGV4LAogICAgIHVuc2lnbmVkIG51bVZhcnNXaXRoVmFsdWVzKQot
ICAgIDogdm0oKnBhc3NlZENvZGVCbG9jay0+dm0oKSkKKyAgICA6IGNvbXBpbGVNb2RlKGNvbXBp
bGVNb2RlKQorICAgICwgdm0oKnBhc3NlZENvZGVCbG9jay0+dm0oKSkKICAgICAsIGNvZGVCbG9j
ayhwYXNzZWRDb2RlQmxvY2spCiAgICAgLCBvc3JFbnRyeUJ5dGVjb2RlSW5kZXgob3NyRW50cnlC
eXRlY29kZUluZGV4KQogICAgICwgbnVtVmFyc1dpdGhWYWx1ZXMobnVtVmFyc1dpdGhWYWx1ZXMp
CkBAIC0yMDcsNyArMjA4LDcgQEAgUGxhbjo6Q29tcGlsYXRpb25QYXRoIFBsYW46OmNvbXBpbGVJ
blRocmVhZEltcGwoTG9uZ0xpdmVkU3RhdGUmIGxvbmdMaXZlZFN0YXRlKQogCiAjaWYgRU5BQkxF
KEZUTF9KSVQpCiAgICAgaWYgKE9wdGlvbnM6OnVzZUV4cGVyaW1lbnRhbEZUTCgpCi0gICAgICAg
ICYmIGNvZGVCbG9jay0+Y29kZVR5cGUoKSA9PSBGdW5jdGlvbkNvZGUKKyAgICAgICAgJiYgY29t
cGlsZU1vZGUgPT0gQ29tcGlsZUZ1bmN0aW9uCiAgICAgICAgICYmIEZUTDo6Y2FuQ29tcGlsZShk
ZmcpKSB7CiAgICAgICAgIAogICAgICAgICBwZXJmb3JtQ3JpdGljYWxFZGdlQnJlYWtpbmcoZGZn
KTsKQEAgLTI1NCwxMCArMjU1LDEyIEBAIFBsYW46OkNvbXBpbGF0aW9uUGF0aCBQbGFuOjpjb21w
aWxlSW5UaHJlYWRJbXBsKExvbmdMaXZlZFN0YXRlJiBsb25nTGl2ZWRTdGF0ZSkKICAgICBkdW1w
QW5kVmVyaWZ5R3JhcGgoZGZnLCAiR3JhcGggYWZ0ZXIgb3B0aW1pemF0aW9uOiIpOwogCiAgICAg
SklUQ29tcGlsZXIgZGF0YUZsb3dKSVQoZGZnKTsKLSAgICBpZiAoY29kZUJsb2NrLT5jb2RlVHlw
ZSgpID09IEZ1bmN0aW9uQ29kZSkgeworICAgIGlmIChjb21waWxlTW9kZSA9PSBDb21waWxlRnVu
Y3Rpb24pIHsKICAgICAgICAgZGF0YUZsb3dKSVQuY29tcGlsZUZ1bmN0aW9uKCk7CiAgICAgICAg
IGRhdGFGbG93SklULmxpbmtGdW5jdGlvbigpOwogICAgIH0gZWxzZSB7CisgICAgICAgIEFTU0VS
VChjb21waWxlTW9kZSA9PSBDb21waWxlT3RoZXIpOworICAgICAgICAKICAgICAgICAgZGF0YUZs
b3dKSVQuY29tcGlsZSgpOwogICAgICAgICBkYXRhRmxvd0pJVC5saW5rKCk7CiAgICAgfQpAQCAt
MjgwLDM2ICsyODMsMjUgQEAgdm9pZCBQbGFuOjpyZWFsbHlBZGQoQ29tbW9uRGF0YSogY29tbW9u
RGF0YSkKICAgICB3cml0ZUJhcnJpZXJzLnRyaWdnZXIodm0pOwogfQogCi12b2lkIFBsYW46Om5v
dGlmeVJlYWR5KCkKLXsKLSAgICBjYWxsYmFjay0+Y29tcGlsYXRpb25EaWRCZWNvbWVSZWFkeUFz
eW5jaHJvbm91c2x5KGNvZGVCbG9jay5nZXQoKSk7Ci0gICAgaXNDb21waWxlZCA9IHRydWU7Ci19
Ci0KLUNvbXBpbGF0aW9uUmVzdWx0IFBsYW46OmZpbmFsaXplV2l0aG91dE5vdGlmeWluZ0NhbGxi
YWNrKCkKK0NvbXBpbGF0aW9uUmVzdWx0IFBsYW46OmZpbmFsaXplKFJlZlB0cjxKU0M6OkpJVENv
ZGU+JiBqaXRDb2RlLCBNYWNyb0Fzc2VtYmxlckNvZGVQdHIqIGppdENvZGVXaXRoQXJpdHlDaGVj
aykKIHsKICAgICBpZiAoIWlzU3RpbGxWYWxpZCgpKQogICAgICAgICByZXR1cm4gQ29tcGlsYXRp
b25JbnZhbGlkYXRlZDsKICAgICAKICAgICBib29sIHJlc3VsdDsKLSAgICBpZiAoY29kZUJsb2Nr
LT5jb2RlVHlwZSgpID09IEZ1bmN0aW9uQ29kZSkKLSAgICAgICAgcmVzdWx0ID0gZmluYWxpemVy
LT5maW5hbGl6ZUZ1bmN0aW9uKCk7CisgICAgaWYgKGNvbXBpbGVNb2RlID09IENvbXBpbGVGdW5j
dGlvbikKKyAgICAgICAgcmVzdWx0ID0gZmluYWxpemVyLT5maW5hbGl6ZUZ1bmN0aW9uKGppdENv
ZGUsICpqaXRDb2RlV2l0aEFyaXR5Q2hlY2spOwogICAgIGVsc2UKLSAgICAgICAgcmVzdWx0ID0g
ZmluYWxpemVyLT5maW5hbGl6ZSgpOworICAgICAgICByZXN1bHQgPSBmaW5hbGl6ZXItPmZpbmFs
aXplKGppdENvZGUpOwogICAgIAogICAgIGlmICghcmVzdWx0KQogICAgICAgICByZXR1cm4gQ29t
cGlsYXRpb25GYWlsZWQ7CiAgICAgCi0gICAgcmVhbGx5QWRkKGNvZGVCbG9jay0+aml0Q29kZSgp
LT5kZmdDb21tb24oKSk7CisgICAgcmVhbGx5QWRkKGppdENvZGUtPmRmZ0NvbW1vbigpKTsKICAg
ICAKICAgICByZXR1cm4gQ29tcGlsYXRpb25TdWNjZXNzZnVsOwogfQogCi12b2lkIFBsYW46OmZp
bmFsaXplQW5kTm90aWZ5Q2FsbGJhY2soKQotewotICAgIGNhbGxiYWNrLT5jb21waWxhdGlvbkRp
ZENvbXBsZXRlKGNvZGVCbG9jay5nZXQoKSwgZmluYWxpemVXaXRob3V0Tm90aWZ5aW5nQ2FsbGJh
Y2soKSk7Ci19Ci0KIENvZGVCbG9jayogUGxhbjo6a2V5KCkKIHsKICAgICByZXR1cm4gY29kZUJs
b2NrLT5hbHRlcm5hdGl2ZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdQbGFuLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1BsYW4uaAppbmRleCA1
OTg2OGQwMmZiMjQ1NTgzNjQ4NWM5ZGU5ZGUwMjc5Y2FjMDc0N2UyLi43ZDU2ZDNlMWQ3ZjJjZGI1
MjQxNTNhM2I4YTQxNWIwYzgyZTIxYzUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1BsYW4uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1BsYW4u
aApAQCAtMzYsNyArMzYsNiBAQAogI2luY2x1ZGUgIkRGR0Rlc2lyZWRXZWFrUmVmZXJlbmNlcy5o
IgogI2luY2x1ZGUgIkRGR0Rlc2lyZWRXcml0ZUJhcnJpZXJzLmgiCiAjaW5jbHVkZSAiREZHRmlu
YWxpemVyLmgiCi0jaW5jbHVkZSAiRGVmZXJyZWRDb21waWxhdGlvbkNhbGxiYWNrLmgiCiAjaW5j
bHVkZSAiT3BlcmFuZHMuaCIKICNpbmNsdWRlICJQcm9maWxlckNvbXBpbGF0aW9uLmgiCiAjaW5j
bHVkZSA8d3RmL1RocmVhZFNhZmVSZWZDb3VudGVkLmg+CkBAIC00OSwyMiArNDgsMjMgQEAgbmFt
ZXNwYWNlIERGRyB7CiAKIGNsYXNzIExvbmdMaXZlZFN0YXRlOwogCitlbnVtIENvbXBpbGVNb2Rl
IHsgQ29tcGlsZUZ1bmN0aW9uLCBDb21waWxlT3RoZXIgfTsKKwogI2lmIEVOQUJMRShERkdfSklU
KQogCiBzdHJ1Y3QgUGxhbiA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxQbGFuPiB7CiAg
ICAgUGxhbigKLSAgICAgICAgUGFzc1JlZlB0cjxDb2RlQmxvY2s+LCB1bnNpZ25lZCBvc3JFbnRy
eUJ5dGVjb2RlSW5kZXgsIHVuc2lnbmVkIG51bVZhcnNXaXRoVmFsdWVzKTsKKyAgICAgICAgQ29t
cGlsZU1vZGUgY29tcGlsZU1vZGUsIFBhc3NSZWZQdHI8Q29kZUJsb2NrPiBjb2RlQmxvY2ssCisg
ICAgICAgIHVuc2lnbmVkIG9zckVudHJ5Qnl0ZWNvZGVJbmRleCwgdW5zaWduZWQgbnVtVmFyc1dp
dGhWYWx1ZXMpOwogICAgIH5QbGFuKCk7CiAgICAgCiAgICAgdm9pZCBjb21waWxlSW5UaHJlYWQo
TG9uZ0xpdmVkU3RhdGUmKTsKICAgICAKLSAgICBDb21waWxhdGlvblJlc3VsdCBmaW5hbGl6ZVdp
dGhvdXROb3RpZnlpbmdDYWxsYmFjaygpOwotICAgIHZvaWQgZmluYWxpemVBbmROb3RpZnlDYWxs
YmFjaygpOwotICAgIAotICAgIHZvaWQgbm90aWZ5UmVhZHkoKTsKKyAgICBDb21waWxhdGlvblJl
c3VsdCBmaW5hbGl6ZShSZWZQdHI8SlNDOjpKSVRDb2RlPiYgaml0Q29kZSwgTWFjcm9Bc3NlbWJs
ZXJDb2RlUHRyKiBqaXRDb2RlV2l0aEFyaXR5Q2hlY2spOwogICAgIAogICAgIENvZGVCbG9jayog
a2V5KCk7CiAgICAgCisgICAgY29uc3QgQ29tcGlsZU1vZGUgY29tcGlsZU1vZGU7CiAgICAgVk0m
IHZtOwogICAgIFJlZlB0cjxDb2RlQmxvY2s+IGNvZGVCbG9jazsKICAgICBjb25zdCB1bnNpZ25l
ZCBvc3JFbnRyeUJ5dGVjb2RlSW5kZXg7CkBAIC04Niw4ICs4Niw2IEBAIHN0cnVjdCBQbGFuIDog
cHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFBsYW4+IHsKICAgICAKICAgICBib29sIGlzQ29t
cGlsZWQ7CiAKLSAgICBSZWZQdHI8RGVmZXJyZWRDb21waWxhdGlvbkNhbGxiYWNrPiBjYWxsYmFj
azsKLQogcHJpdmF0ZToKICAgICBlbnVtIENvbXBpbGF0aW9uUGF0aCB7IEZhaWxQYXRoLCBERkdQ
YXRoLCBGVExQYXRoIH07CiAgICAgQ29tcGlsYXRpb25QYXRoIGNvbXBpbGVJblRocmVhZEltcGwo
TG9uZ0xpdmVkU3RhdGUmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCmluZGV4IDhlNDcwMjFkNzU3MzMwNjg2YzA1MzZiMjQ3
YzQxZjM2NTIyMWRkZGUuLjk1N2MxODAxZmNkNWVkZmMyNGRiN2QxYjIxMzRkNTE5OGYwYjlmYTkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQz
Ml82NC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJ
VDMyXzY0LmNwcApAQCAtMzgzNyw4ICszODM3LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29t
cGlsZShOb2RlKiBub2RlKQogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAg
Ci0gICAgICAgIHN3aXRjaCAobm9kZS0+Y2hpbGQxKCkudXNlS2luZCgpKSB7Ci0gICAgICAgIGNh
c2UgQ2VsbFVzZTogeworICAgICAgICBpZiAoaXNDZWxsU3BlY3VsYXRpb24obm9kZS0+Y2hpbGQx
KCktPnByZWRpY3Rpb24oKSkpIHsKICAgICAgICAgICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIGJh
c2UodGhpcywgbm9kZS0+Y2hpbGQxKCkpOwogICAgICAgICAgICAgR1BSVGVtcG9yYXJ5IHJlc3Vs
dFRhZyh0aGlzLCBiYXNlKTsKICAgICAgICAgICAgIEdQUlRlbXBvcmFyeSByZXN1bHRQYXlsb2Fk
KHRoaXMpOwpAQCAtMzg1NSwzMCArMzg1NCwyMiBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21w
aWxlKE5vZGUqIG5vZGUpCiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICAK
LSAgICAgICAgY2FzZSBVbnR5cGVkVXNlOiB7Ci0gICAgICAgICAgICBKU1ZhbHVlT3BlcmFuZCBi
YXNlKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKLSAgICAgICAgICAgIEdQUlRlbXBvcmFyeSByZXN1
bHRUYWcodGhpcywgYmFzZSk7Ci0gICAgICAgICAgICBHUFJUZW1wb3JhcnkgcmVzdWx0UGF5bG9h
ZCh0aGlzKTsKKyAgICAgICAgSlNWYWx1ZU9wZXJhbmQgYmFzZSh0aGlzLCBub2RlLT5jaGlsZDEo
KSk7CisgICAgICAgIEdQUlRlbXBvcmFyeSByZXN1bHRUYWcodGhpcywgYmFzZSk7CisgICAgICAg
IEdQUlRlbXBvcmFyeSByZXN1bHRQYXlsb2FkKHRoaXMpOwogICAgICAgICAKLSAgICAgICAgICAg
IEdQUlJlZyBiYXNlVGFnR1BSID0gYmFzZS50YWdHUFIoKTsKLSAgICAgICAgICAgIEdQUlJlZyBi
YXNlUGF5bG9hZEdQUiA9IGJhc2UucGF5bG9hZEdQUigpOwotICAgICAgICAgICAgR1BSUmVnIHJl
c3VsdFRhZ0dQUiA9IHJlc3VsdFRhZy5ncHIoKTsKLSAgICAgICAgICAgIEdQUlJlZyByZXN1bHRQ
YXlsb2FkR1BSID0gcmVzdWx0UGF5bG9hZC5ncHIoKTsKKyAgICAgICAgR1BSUmVnIGJhc2VUYWdH
UFIgPSBiYXNlLnRhZ0dQUigpOworICAgICAgICBHUFJSZWcgYmFzZVBheWxvYWRHUFIgPSBiYXNl
LnBheWxvYWRHUFIoKTsKKyAgICAgICAgR1BSUmVnIHJlc3VsdFRhZ0dQUiA9IHJlc3VsdFRhZy5n
cHIoKTsKKyAgICAgICAgR1BSUmVnIHJlc3VsdFBheWxvYWRHUFIgPSByZXN1bHRQYXlsb2FkLmdw
cigpOwogICAgICAgICAKLSAgICAgICAgICAgIGJhc2UudXNlKCk7CisgICAgICAgIGJhc2UudXNl
KCk7CiAgICAgICAgIAotICAgICAgICAgICAgSklUQ29tcGlsZXI6Okp1bXAgbm90Q2VsbCA9IG1f
aml0LmJyYW5jaDMyKEpJVENvbXBpbGVyOjpOb3RFcXVhbCwgYmFzZVRhZ0dQUiwgVHJ1c3RlZElt
bTMyKEpTVmFsdWU6OkNlbGxUYWcpKTsKKyAgICAgICAgSklUQ29tcGlsZXI6Okp1bXAgbm90Q2Vs
bCA9IG1faml0LmJyYW5jaDMyKEpJVENvbXBpbGVyOjpOb3RFcXVhbCwgYmFzZVRhZ0dQUiwgVHJ1
c3RlZEltbTMyKEpTVmFsdWU6OkNlbGxUYWcpKTsKICAgICAgICAgCi0gICAgICAgICAgICBjYWNo
ZWRHZXRCeUlkKG5vZGUtPmNvZGVPcmlnaW4sIGJhc2VUYWdHUFIsIGJhc2VQYXlsb2FkR1BSLCBy
ZXN1bHRUYWdHUFIsIHJlc3VsdFBheWxvYWRHUFIsIG5vZGUtPmlkZW50aWZpZXJOdW1iZXIoKSwg
bm90Q2VsbCk7CisgICAgICAgIGNhY2hlZEdldEJ5SWQobm9kZS0+Y29kZU9yaWdpbiwgYmFzZVRh
Z0dQUiwgYmFzZVBheWxvYWRHUFIsIHJlc3VsdFRhZ0dQUiwgcmVzdWx0UGF5bG9hZEdQUiwgbm9k
ZS0+aWRlbnRpZmllck51bWJlcigpLCBub3RDZWxsKTsKICAgICAgICAgCi0gICAgICAgICAgICBq
c1ZhbHVlUmVzdWx0KHJlc3VsdFRhZ0dQUiwgcmVzdWx0UGF5bG9hZEdQUiwgbm9kZSwgVXNlQ2hp
bGRyZW5DYWxsZWRFeHBsaWNpdGx5KTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0g
ICAgICAgICAgICAKLSAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJU
X05PVF9SRUFDSEVEKCk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQorICAgICAgICBq
c1ZhbHVlUmVzdWx0KHJlc3VsdFRhZ0dQUiwgcmVzdWx0UGF5bG9hZEdQUiwgbm9kZSwgVXNlQ2hp
bGRyZW5DYWxsZWRFeHBsaWNpdGx5KTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1dvcmtsaXN0LmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHV29ya2xpc3QuY3BwCmluZGV4IDA1MTY0MWQ5YWJhNzVkOWY4
MzBhZDlmMWI3MzljZGYzNjk0MmUwMDQuLmE3M2U1NmQ1NDhkODAzMGZjZGVkOTQ2MjY0YWRhNjE4
YWY1NThlNjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHV29ya2xp
c3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHV29ya2xpc3QuY3BwCkBA
IC0xNjUsNyArMTY1LDEwIEBAIFdvcmtsaXN0OjpTdGF0ZSBXb3JrbGlzdDo6Y29tcGxldGVBbGxS
ZWFkeVBsYW5zRm9yVk0oVk0mIHZtLCBDb2RlQmxvY2sqIHJlcXVlc3RlCiAgICAgICAgIAogICAg
ICAgICBSRUxFQVNFX0FTU0VSVChwbGFuLT5pc0NvbXBpbGVkKTsKICAgICAgICAgCi0gICAgICAg
IHBsYW4tPmZpbmFsaXplQW5kTm90aWZ5Q2FsbGJhY2soKTsKKyAgICAgICAgQ29tcGlsYXRpb25S
ZXN1bHQgY29tcGlsYXRpb25SZXN1bHQgPQorICAgICAgICAgICAgcHJvZmlsZWRCbG9jay0+cmVw
bGFjZVdpdGhEZWZlcnJlZE9wdGltaXplZENvZGUocGxhbik7CisgICAgICAgIFJFTEVBU0VfQVNT
RVJUKGNvbXBpbGF0aW9uUmVzdWx0ICE9IENvbXBpbGF0aW9uRGVmZXJyZWQpOworICAgICAgICBw
cm9maWxlZEJsb2NrLT5zZXRPcHRpbWl6YXRpb25UaHJlc2hvbGRCYXNlZE9uQ29tcGlsYXRpb25S
ZXN1bHQoY29tcGlsYXRpb25SZXN1bHQpOwogICAgICAgICAKICAgICAgICAgaWYgKHByb2ZpbGVk
QmxvY2sgPT0gcmVxdWVzdGVkUHJvZmlsZWRCbG9jaykKICAgICAgICAgICAgIHJlc3VsdGluZ1N0
YXRlID0gQ29tcGlsZWQ7CkBAIC0yNDAsNyArMjQzLDggQEAgdm9pZCBXb3JrbGlzdDo6cnVuVGhy
ZWFkKCkKICAgICAgICAgCiAgICAgICAgIHsKICAgICAgICAgICAgIE11dGV4TG9ja2VyIGxvY2tl
cihtX2xvY2spOwotICAgICAgICAgICAgcGxhbi0+bm90aWZ5UmVhZHkoKTsKKyAgICAgICAgICAg
IHBsYW4tPmtleSgpLT5mb3JjZU9wdGltaXphdGlvblNsb3dQYXRoQ29uY3VycmVudGx5KCk7Cisg
ICAgICAgICAgICBwbGFuLT5pc0NvbXBpbGVkID0gdHJ1ZTsKICAgICAgICAgICAgIAogICAgICAg
ICAgICAgaWYgKE9wdGlvbnM6OnZlcmJvc2VDb21waWxhdGlvblF1ZXVlKCkpIHsKICAgICAgICAg
ICAgICAgICBkdW1wKGxvY2tlciwgV1RGOjpkYXRhRmlsZSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMSklURmluYWxpemVyLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9mdGwvRlRMSklURmluYWxpemVyLmNwcAppbmRleCAwNzdlMDhhZTQ4NjZlMGViYjE5
NTgzNDZkZTRhODAxZDk0ODdmN2Q4Li5hOWFmZjdiMzllZjc3ZGRlMTExM2RhZGZiODdkZmE2MmVh
M2UyY2U4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTEpJVEZpbmFs
aXplci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExKSVRGaW5hbGl6ZXIu
Y3BwCkBAIC00NCwxMyArNDQsMTMgQEAgSklURmluYWxpemVyOjp+SklURmluYWxpemVyKCkKIHsK
IH0KIAotYm9vbCBKSVRGaW5hbGl6ZXI6OmZpbmFsaXplKCkKK2Jvb2wgSklURmluYWxpemVyOjpm
aW5hbGl6ZShSZWZQdHI8SlNDOjpKSVRDb2RlPiYpCiB7CiAgICAgUkVMRUFTRV9BU1NFUlRfTk9U
X1JFQUNIRUQoKTsKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLWJvb2wgSklURmluYWxpemVyOjpm
aW5hbGl6ZUZ1bmN0aW9uKCkKK2Jvb2wgSklURmluYWxpemVyOjpmaW5hbGl6ZUZ1bmN0aW9uKFJl
ZlB0cjxKU0M6OkpJVENvZGU+JiBlbnRyeSwgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyJiB3aXRoQXJp
dHlDaGVjaykKIHsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSBtX2ppdENvZGUtPmhhbmRsZXMoKS5z
aXplKCk7IGktLTspIHsKICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OmNhY2hlRmx1c2goCkBAIC02
NCwxMyArNjQsMTIgQEAgYm9vbCBKSVRGaW5hbGl6ZXI6OmZpbmFsaXplRnVuY3Rpb24oKQogICAg
ICAgICAgICAgICAgICgiRlRMIGV4aXQgdGh1bmtzIGZvciAlcyIsIHRvQ1N0cmluZyhDb2RlQmxv
Y2tXaXRoSklUVHlwZShtX3BsYW4uY29kZUJsb2NrLmdldCgpLCBKSVRDb2RlOjpGVExKSVQpKS5k
YXRhKCkpKSk7CiAgICAgfSAvLyBlbHNlIHRoaXMgZnVuY3Rpb24gaGFkIG5vIE9TUiBleGl0cywg
c28gbm8gZXhpdCB0aHVua3MuCiAgICAgCi0gICAgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyIHdpdGhB
cml0eUNoZWNrID0gbV9lbnRyeXBvaW50TGlua0J1ZmZlci0+bG9jYXRpb25PZihtX2FyaXR5Q2hl
Y2spOworICAgIHdpdGhBcml0eUNoZWNrID0gbV9lbnRyeXBvaW50TGlua0J1ZmZlci0+bG9jYXRp
b25PZihtX2FyaXR5Q2hlY2spOwogICAgIG1faml0Q29kZS0+aW5pdGlhbGl6ZUNvZGUoCiAgICAg
ICAgIEZJTkFMSVpFX0RGR19DT0RFKAogICAgICAgICAgICAgKm1fZW50cnlwb2ludExpbmtCdWZm
ZXIsCiAgICAgICAgICAgICAoIkZUTCBlbnRyeXBvaW50IHRodW5rIGZvciAlcyB3aXRoIExMVk0g
Z2VuZXJhdGVkIGNvZGUgYXQgJXAiLCB0b0NTdHJpbmcoQ29kZUJsb2NrV2l0aEpJVFR5cGUobV9w
bGFuLmNvZGVCbG9jay5nZXQoKSwgSklUQ29kZTo6RlRMSklUKSkuZGF0YSgpLCBtX2Z1bmN0aW9u
KSkpOwotICAgIAotICAgIG1fcGxhbi5jb2RlQmxvY2stPnNldEpJVENvZGUobV9qaXRDb2RlLCB3
aXRoQXJpdHlDaGVjayk7CisgICAgZW50cnkgPSBtX2ppdENvZGU7CiAgICAgCiAgICAgcmV0dXJu
IHRydWU7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTEpJVEZp
bmFsaXplci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExKSVRGaW5hbGl6ZXIuaApp
bmRleCA4ODZiZDJkOWE0NDhkM2I4NzcxMjRjYzk5YzdkMTUzY2FkYWU0YTg4Li4zZGMwMGY4NzNi
OGY5M2RjOTJiYTZiZTFlNWQ5OGNkNTllMjQxNDY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZnRsL0ZUTEpJVEZpbmFsaXplci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9mdGwvRlRMSklURmluYWxpemVyLmgKQEAgLTY1LDggKzY1LDggQEAgcHVibGljOgogICAgICAg
ICBtX2ppdENvZGUgPSBqaXRDb2RlOwogICAgIH0KICAgICAKLSAgICBib29sIGZpbmFsaXplKCk7
Ci0gICAgYm9vbCBmaW5hbGl6ZUZ1bmN0aW9uKCk7CisgICAgYm9vbCBmaW5hbGl6ZShSZWZQdHI8
SlNDOjpKSVRDb2RlPiYgZW50cnkpOworICAgIGJvb2wgZmluYWxpemVGdW5jdGlvbihSZWZQdHI8
SlNDOjpKSVRDb2RlPiYgZW50cnksIE1hY3JvQXNzZW1ibGVyQ29kZVB0ciYgd2l0aEFyaXR5Q2hl
Y2spOwogCiBwcml2YXRlOgogICAgIE93blB0cjxMaW5rQnVmZmVyPiBtX2V4aXRUaHVua3NMaW5r
QnVmZmVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5oCmluZGV4IGU0MjJmYjY0OThjYzBmMDcz
MWMyYmRhMzZmNjhmNDQ1ODgwMTI5NDguLjI4MTIzOTNhMDkwNTdkZmVlODZkYmJiMzM2OTJmZjIw
ZTJjY2YyMDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmgKQEAgLTE4NCw4ICsxODQsNiBA
QCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgY29uc3QgSklUU3R1YlJvdXRpbmVTZXQmIGppdFN0
dWJSb3V0aW5lcygpIHsgcmV0dXJuIG1faml0U3R1YlJvdXRpbmVzOyB9CiAgICAgICAgIAogICAg
ICAgICB2b2lkIGFkZFJlZmVyZW5jZShKU0NlbGwqLCBBcnJheUJ1ZmZlciopOwotICAgICAgICAK
LSAgICAgICAgYm9vbCBpc0RlZmVycmVkKCkgY29uc3QgeyByZXR1cm4gISFtX2RlZmVycmFsRGVw
dGg7IH0KIAogICAgIHByaXZhdGU6CiAgICAgICAgIGZyaWVuZCBjbGFzcyBDb2RlQmxvY2s7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcApp
bmRleCA1MDA1NzI1MTY2NTkwYzEwMWNlOTJjMjk3NmMzYmQ4Yzg4YWE3YTAyLi41OWY4ZTUwMjVm
ZmZiOWZiOGZlZGMyNjk4MDZmYWU4ZjFlZDcxMjZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAKQEAgLTczNCw3ICs3MzQsNyBAQCBm
YWlsZWRKU09OUDoKICAgICBpZiAoSlNPYmplY3QqIGVycm9yID0gcHJvZ3JhbS0+aW5pdGlhbGl6
ZUdsb2JhbFByb3BlcnRpZXModm0sIGNhbGxGcmFtZSwgc2NvcGUpKQogICAgICAgICByZXR1cm4g
Y2hlY2tlZFJldHVybihjYWxsRnJhbWUtPnZtKCkudGhyb3dFeGNlcHRpb24oY2FsbEZyYW1lLCBl
cnJvcikpOwogCi0gICAgaWYgKEpTT2JqZWN0KiBlcnJvciA9IHByb2dyYW0tPnByZXBhcmVGb3JF
eGVjdXRpb24oY2FsbEZyYW1lLCBzY29wZSwgQ29kZUZvckNhbGwpKQorICAgIGlmIChKU09iamVj
dCogZXJyb3IgPSBwcm9ncmFtLT5jb21waWxlKGNhbGxGcmFtZSwgc2NvcGUpKQogICAgICAgICBy
ZXR1cm4gY2hlY2tlZFJldHVybihjYWxsRnJhbWUtPnZtKCkudGhyb3dFeGNlcHRpb24oY2FsbEZy
YW1lLCBlcnJvcikpOwogCiAgICAgUHJvZ3JhbUNvZGVCbG9jayogY29kZUJsb2NrID0gJnByb2dy
YW0tPmdlbmVyYXRlZEJ5dGVjb2RlKCk7CkBAIC04MDMsNyArODAzLDcgQEAgSlNWYWx1ZSBJbnRl
cnByZXRlcjo6ZXhlY3V0ZUNhbGwoQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIEpTT2JqZWN0KiBmdW5j
dGlvbiwgQ2FsbFQKIAogICAgIGlmIChpc0pTQ2FsbCkgewogICAgICAgICAvLyBDb21waWxlIHRo
ZSBjYWxsZWU6Ci0gICAgICAgIEpTT2JqZWN0KiBjb21waWxlRXJyb3IgPSBjYWxsRGF0YS5qcy5m
dW5jdGlvbkV4ZWN1dGFibGUtPnByZXBhcmVGb3JFeGVjdXRpb24oY2FsbEZyYW1lLCBzY29wZSwg
Q29kZUZvckNhbGwpOworICAgICAgICBKU09iamVjdCogY29tcGlsZUVycm9yID0gY2FsbERhdGEu
anMuZnVuY3Rpb25FeGVjdXRhYmxlLT5jb21waWxlRm9yQ2FsbChjYWxsRnJhbWUsIHNjb3BlKTsK
ICAgICAgICAgaWYgKFVOTElLRUxZKCEhY29tcGlsZUVycm9yKSkgewogICAgICAgICAgICAgcmV0
dXJuIGNoZWNrZWRSZXR1cm4oY2FsbEZyYW1lLT52bSgpLnRocm93RXhjZXB0aW9uKGNhbGxGcmFt
ZSwgY29tcGlsZUVycm9yKSk7CiAgICAgICAgIH0KQEAgLTg4Miw3ICs4ODIsNyBAQCBKU09iamVj
dCogSW50ZXJwcmV0ZXI6OmV4ZWN1dGVDb25zdHJ1Y3QoQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIEpT
T2JqZWN0KiBjb25zdHJ1YwogCiAgICAgaWYgKGlzSlNDb25zdHJ1Y3QpIHsKICAgICAgICAgLy8g
Q29tcGlsZSB0aGUgY2FsbGVlOgotICAgICAgICBKU09iamVjdCogY29tcGlsZUVycm9yID0gY29u
c3RydWN0RGF0YS5qcy5mdW5jdGlvbkV4ZWN1dGFibGUtPnByZXBhcmVGb3JFeGVjdXRpb24oY2Fs
bEZyYW1lLCBzY29wZSwgQ29kZUZvckNvbnN0cnVjdCk7CisgICAgICAgIEpTT2JqZWN0KiBjb21w
aWxlRXJyb3IgPSBjb25zdHJ1Y3REYXRhLmpzLmZ1bmN0aW9uRXhlY3V0YWJsZS0+Y29tcGlsZUZv
ckNvbnN0cnVjdChjYWxsRnJhbWUsIHNjb3BlKTsKICAgICAgICAgaWYgKFVOTElLRUxZKCEhY29t
cGlsZUVycm9yKSkgewogICAgICAgICAgICAgcmV0dXJuIGNoZWNrZWRSZXR1cm4oY2FsbEZyYW1l
LT52bSgpLnRocm93RXhjZXB0aW9uKGNhbGxGcmFtZSwgY29tcGlsZUVycm9yKSk7CiAgICAgICAg
IH0KQEAgLTk1Niw3ICs5NTYsNyBAQCBDYWxsRnJhbWVDbG9zdXJlIEludGVycHJldGVyOjpwcmVw
YXJlRm9yUmVwZWF0Q2FsbChGdW5jdGlvbkV4ZWN1dGFibGUqIGZ1bmN0aW9uRQogICAgIH0KIAog
ICAgIC8vIENvbXBpbGUgdGhlIGNhbGxlZToKLSAgICBKU09iamVjdCogZXJyb3IgPSBmdW5jdGlv
bkV4ZWN1dGFibGUtPnByZXBhcmVGb3JFeGVjdXRpb24oY2FsbEZyYW1lLCBzY29wZSwgQ29kZUZv
ckNhbGwpOworICAgIEpTT2JqZWN0KiBlcnJvciA9IGZ1bmN0aW9uRXhlY3V0YWJsZS0+Y29tcGls
ZUZvckNhbGwoY2FsbEZyYW1lLCBzY29wZSk7CiAgICAgaWYgKGVycm9yKSB7CiAgICAgICAgIGNh
bGxGcmFtZS0+dm0oKS50aHJvd0V4Y2VwdGlvbihjYWxsRnJhbWUsIGVycm9yKTsKICAgICAgICAg
cmV0dXJuIENhbGxGcmFtZUNsb3N1cmUoKTsKQEAgLTEwNzIsNyArMTA3Miw3IEBAIEpTVmFsdWUg
SW50ZXJwcmV0ZXI6OmV4ZWN1dGUoRXZhbEV4ZWN1dGFibGUqIGV2YWwsIENhbGxGcmFtZSogY2Fs
bEZyYW1lLCBKU1ZhbHVlCiAgICAgICAgIH0KICAgICB9CiAKLSAgICBKU09iamVjdCogY29tcGls
ZUVycm9yID0gZXZhbC0+cHJlcGFyZUZvckV4ZWN1dGlvbihjYWxsRnJhbWUsIHNjb3BlLCBDb2Rl
Rm9yQ2FsbCk7CisgICAgSlNPYmplY3QqIGNvbXBpbGVFcnJvciA9IGV2YWwtPmNvbXBpbGUoY2Fs
bEZyYW1lLCBzY29wZSk7CiAgICAgaWYgKFVOTElLRUxZKCEhY29tcGlsZUVycm9yKSkKICAgICAg
ICAgcmV0dXJuIGNoZWNrZWRSZXR1cm4oY2FsbEZyYW1lLT52bSgpLnRocm93RXhjZXB0aW9uKGNh
bGxGcmFtZSwgY29tcGlsZUVycm9yKSk7CiAgICAgRXZhbENvZGVCbG9jayogY29kZUJsb2NrID0g
JmV2YWwtPmdlbmVyYXRlZEJ5dGVjb2RlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVERyaXZlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVREcml2
ZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5hZDgwMDIyYTM4NmExODBlYWE0YTY2MjYxZjgxOTYyMjBhNDcyYzI1
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVREcml2ZXIu
aApAQCAtMCwwICsxLDE1MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiwgMjAxMyBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLiAKKyAqLworCisjaWZuZGVmIEpJVERyaXZlcl9oCisjZGVmaW5lIEpJVERyaXZlcl9o
CisKKyNpbmNsdWRlIDx3dGYvUGxhdGZvcm0uaD4KKworI2lmIEVOQUJMRShKSVQpCisKKyNpbmNs
dWRlICJCeXRlY29kZUdlbmVyYXRvci5oIgorI2luY2x1ZGUgIkNvbXBpbGF0aW9uUmVzdWx0Lmgi
CisjaW5jbHVkZSAiREZHRHJpdmVyLmgiCisjaW5jbHVkZSAiSklULmgiCisjaW5jbHVkZSAiTExJ
bnRFbnRyeXBvaW50cy5oIgorCituYW1lc3BhY2UgSlNDIHsKKwordGVtcGxhdGU8dHlwZW5hbWUg
Q29kZUJsb2NrVHlwZT4KK2lubGluZSBDb21waWxhdGlvblJlc3VsdCBqaXRDb21waWxlSWZBcHBy
b3ByaWF0ZUltcGwoCisgICAgRXhlY1N0YXRlKiBleGVjLCBDb2RlQmxvY2tUeXBlKiBjb2RlQmxv
Y2ssIFJlZlB0cjxKSVRDb2RlPiYgaml0Q29kZSwKKyAgICBKSVRDb2RlOjpKSVRUeXBlIGppdFR5
cGUsIHVuc2lnbmVkIGJ5dGVjb2RlSW5kZXgsIEpJVENvbXBpbGF0aW9uRWZmb3J0IGVmZm9ydCkK
K3sKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIAorICAgIGlmIChqaXRUeXBlID09IGNv
ZGVCbG9jay0+aml0VHlwZSgpKQorICAgICAgICByZXR1cm4gQ29tcGlsYXRpb25Ob3ROZWVkZWQ7
CisgICAgCisgICAgaWYgKCF2bS5jYW5Vc2VKSVQoKSkKKyAgICAgICAgcmV0dXJuIENvbXBpbGF0
aW9uTm90TmVlZGVkOyAvLyBGSVhNRTogSW52ZXN0aWdhdGUgaWYgdGhpcyBpcyByaWdodC4gaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExNjI0NgorICAgIAorICAgIGNv
ZGVCbG9jay0+dW5saW5rSW5jb21pbmdDYWxscygpOworICAgIAorICAgIFJlZlB0cjxKSVRDb2Rl
PiBvbGRKSVRDb2RlID0gaml0Q29kZTsKKyAgICAKKyAgICBpZiAoSklUQ29kZTo6aXNPcHRpbWl6
aW5nSklUKGppdFR5cGUpKSB7CisgICAgICAgIENvbXBpbGF0aW9uUmVzdWx0IHJlc3VsdCA9Cisg
ICAgICAgICAgICBERkc6OnRyeUNvbXBpbGUoZXhlYywgY29kZUJsb2NrLCBqaXRDb2RlLCBieXRl
Y29kZUluZGV4KTsKKyAgICAgICAgaWYgKHJlc3VsdCA9PSBDb21waWxhdGlvblN1Y2Nlc3NmdWwp
CisgICAgICAgICAgICBjb2RlQmxvY2stPmFsdGVybmF0aXZlKCktPnVubGlua0luY29taW5nQ2Fs
bHMoKTsKKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBBU1NFUlQob2xkSklUQ29kZSA9PSBq
aXRDb2RlKTsKKyAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgICAgIH0KKyAgICB9IGVs
c2UgeworICAgICAgICBSZWZQdHI8SklUQ29kZT4gcmVzdWx0ID0gSklUOjpjb21waWxlKCZ2bSwg
Y29kZUJsb2NrLCBlZmZvcnQpOworICAgICAgICBpZiAocmVzdWx0KQorICAgICAgICAgICAgaml0
Q29kZSA9IHJlc3VsdDsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgcmV0dXJuIENvbXBpbGF0
aW9uRmFpbGVkOworICAgIH0KKyAgICAKKyAgICByZXR1cm4gQ29tcGlsYXRpb25TdWNjZXNzZnVs
OworfQorCitpbmxpbmUgQ29tcGlsYXRpb25SZXN1bHQgaml0Q29tcGlsZUZ1bmN0aW9uSWZBcHBy
b3ByaWF0ZUltcGwoCisgICAgRXhlY1N0YXRlKiBleGVjLCBGdW5jdGlvbkNvZGVCbG9jayogY29k
ZUJsb2NrLCBSZWZQdHI8SklUQ29kZT4mIGppdENvZGUsCisgICAgTWFjcm9Bc3NlbWJsZXJDb2Rl
UHRyJiBqaXRDb2RlV2l0aEFyaXR5Q2hlY2ssIEpJVENvZGU6OkpJVFR5cGUgaml0VHlwZSwKKyAg
ICB1bnNpZ25lZCBieXRlY29kZUluZGV4LCBKSVRDb21waWxhdGlvbkVmZm9ydCBlZmZvcnQpCit7
CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICAKKyAgICBpZiAoaml0VHlwZSA9PSBjb2Rl
QmxvY2stPmppdFR5cGUoKSkKKyAgICAgICAgcmV0dXJuIENvbXBpbGF0aW9uTm90TmVlZGVkOwor
ICAgIAorICAgIGlmICghdm0uY2FuVXNlSklUKCkpCisgICAgICAgIHJldHVybiBDb21waWxhdGlv
bk5vdE5lZWRlZDsgLy8gRklYTUU6IEludmVzdGlnYXRlIGlmIHRoaXMgaXMgcmlnaHQuIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTYyNDYKKyAgICAKKyAgICBjb2Rl
QmxvY2stPnVubGlua0luY29taW5nQ2FsbHMoKTsKKyAgICAKKyAgICBSZWZQdHI8SklUQ29kZT4g
b2xkSklUQ29kZSA9IGppdENvZGU7CisgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyIG9sZEpJVENv
ZGVXaXRoQXJpdHlDaGVjayA9IGppdENvZGVXaXRoQXJpdHlDaGVjazsKKyAgICAKKyAgICBpZiAo
SklUQ29kZTo6aXNPcHRpbWl6aW5nSklUKGppdFR5cGUpKSB7CisgICAgICAgIENvbXBpbGF0aW9u
UmVzdWx0IHJlc3VsdCA9IERGRzo6dHJ5Q29tcGlsZUZ1bmN0aW9uKAorICAgICAgICAgICAgZXhl
YywgY29kZUJsb2NrLCBqaXRDb2RlLCBqaXRDb2RlV2l0aEFyaXR5Q2hlY2ssIGJ5dGVjb2RlSW5k
ZXgpOworICAgICAgICBpZiAocmVzdWx0ID09IENvbXBpbGF0aW9uU3VjY2Vzc2Z1bCkKKyAgICAg
ICAgICAgIGNvZGVCbG9jay0+YWx0ZXJuYXRpdmUoKS0+dW5saW5rSW5jb21pbmdDYWxscygpOwor
ICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIEFTU0VSVChvbGRKSVRDb2RlID09IGppdENvZGUp
OworICAgICAgICAgICAgQVNTRVJUX1VOVVNFRChvbGRKSVRDb2RlV2l0aEFyaXR5Q2hlY2ssIG9s
ZEpJVENvZGVXaXRoQXJpdHlDaGVjayA9PSBqaXRDb2RlV2l0aEFyaXR5Q2hlY2spOworICAgICAg
ICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICAgICAgfQorICAgIH0gZWxzZSB7CisgICAgICAgIFJl
ZlB0cjxKSVRDb2RlPiByZXN1bHQgPQorICAgICAgICAgICAgSklUOjpjb21waWxlKCZ2bSwgY29k
ZUJsb2NrLCBlZmZvcnQsICZqaXRDb2RlV2l0aEFyaXR5Q2hlY2spOworICAgICAgICBpZiAocmVz
dWx0KQorICAgICAgICAgICAgaml0Q29kZSA9IHJlc3VsdDsKKyAgICAgICAgZWxzZSB7CisgICAg
ICAgICAgICBBU1NFUlRfVU5VU0VEKG9sZEpJVENvZGVXaXRoQXJpdHlDaGVjaywgb2xkSklUQ29k
ZVdpdGhBcml0eUNoZWNrID09IGppdENvZGVXaXRoQXJpdHlDaGVjayk7CisgICAgICAgICAgICBy
ZXR1cm4gQ29tcGlsYXRpb25GYWlsZWQ7CisgICAgICAgIH0KKyAgICB9CisKKyAgICByZXR1cm4g
Q29tcGlsYXRpb25TdWNjZXNzZnVsOworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBDb2RlQmxvY2tU
eXBlPgoraW5saW5lIENvbXBpbGF0aW9uUmVzdWx0IGppdENvbXBpbGVJZkFwcHJvcHJpYXRlKAor
ICAgIEV4ZWNTdGF0ZSogZXhlYywgQ29kZUJsb2NrVHlwZSogY29kZUJsb2NrLCBSZWZQdHI8SklU
Q29kZT4mIGppdENvZGUsCisgICAgSklUQ29kZTo6SklUVHlwZSBqaXRUeXBlLCB1bnNpZ25lZCBi
eXRlY29kZUluZGV4LCBKSVRDb21waWxhdGlvbkVmZm9ydCBlZmZvcnQpCit7CisgICAgQ29tcGls
YXRpb25SZXN1bHQgcmVzdWx0ID0gaml0Q29tcGlsZUlmQXBwcm9wcmlhdGVJbXBsKAorICAgICAg
ICBleGVjLCBjb2RlQmxvY2ssIGppdENvZGUsIGppdFR5cGUsIGJ5dGVjb2RlSW5kZXgsIGVmZm9y
dCk7CisgICAgaWYgKHJlc3VsdCA9PSBDb21waWxhdGlvblN1Y2Nlc3NmdWwpIHsKKyAgICAgICAg
Y29kZUJsb2NrLT5zZXRKSVRDb2RlKGppdENvZGUsIE1hY3JvQXNzZW1ibGVyQ29kZVB0cigpKTsK
KyAgICAgICAgY29kZUJsb2NrLT52bSgpLT5oZWFwLnJlcG9ydEV4dHJhTWVtb3J5Q29zdChqaXRD
b2RlLT5zaXplKCkpOworICAgIH0KKyAgICByZXR1cm4gcmVzdWx0OworfSAgICAKKworaW5saW5l
IENvbXBpbGF0aW9uUmVzdWx0IGppdENvbXBpbGVGdW5jdGlvbklmQXBwcm9wcmlhdGUoCisgICAg
RXhlY1N0YXRlKiBleGVjLCBGdW5jdGlvbkNvZGVCbG9jayogY29kZUJsb2NrLCBSZWZQdHI8SklU
Q29kZT4mIGppdENvZGUsCisgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyJiBqaXRDb2RlV2l0aEFy
aXR5Q2hlY2ssIEpJVENvZGU6OkpJVFR5cGUgaml0VHlwZSwKKyAgICB1bnNpZ25lZCBieXRlY29k
ZUluZGV4LCBKSVRDb21waWxhdGlvbkVmZm9ydCBlZmZvcnQpCit7CisgICAgQ29tcGlsYXRpb25S
ZXN1bHQgcmVzdWx0ID0gaml0Q29tcGlsZUZ1bmN0aW9uSWZBcHByb3ByaWF0ZUltcGwoCisgICAg
ICAgIGV4ZWMsIGNvZGVCbG9jaywgaml0Q29kZSwgaml0Q29kZVdpdGhBcml0eUNoZWNrLCBqaXRU
eXBlLCBieXRlY29kZUluZGV4LCBlZmZvcnQpOworICAgIGlmIChyZXN1bHQgPT0gQ29tcGlsYXRp
b25TdWNjZXNzZnVsKSB7CisgICAgICAgIGNvZGVCbG9jay0+c2V0SklUQ29kZShqaXRDb2RlLCBq
aXRDb2RlV2l0aEFyaXR5Q2hlY2spOworICAgICAgICBjb2RlQmxvY2stPnZtKCktPmhlYXAucmVw
b3J0RXh0cmFNZW1vcnlDb3N0KGppdENvZGUtPnNpemUoKSk7CisgICAgfQorICAgIHJldHVybiBy
ZXN1bHQ7Cit9CisKK30gLy8gbmFtZXNwYWNlIEpTQworCisjZW5kaWYgLy8gRU5BQkxFKEpJVCkK
KworI2VuZGlmIC8vIEpJVERyaXZlcl9oCisKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklUU3R1YnMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRTdHVi
cy5jcHAKaW5kZXggODgzYjIxMWVmYTI5YzhkYWJiZWY3NWZkMTU5OGY2MGQ2NWQwNGI4OC4uOWY5
NDE2MzgyMmRkZmFlY2JiNjBhM2VhNmExYTlkOGVkY2M0Nzg3NyAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVRTdHVicy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVRTdHVicy5jcHAKQEAgLTUxLDcgKzUxLDYgQEAKICNpbmNsdWRlIDx3dGYvSW5s
aW5lQVNNLmg+CiAjaW5jbHVkZSAiSklULmgiCiAjaW5jbHVkZSAiSklURXhjZXB0aW9ucy5oIgot
I2luY2x1ZGUgIkpJVFRvREZHRGVmZXJyZWRDb21waWxhdGlvbkNhbGxiYWNrLmgiCiAjaW5jbHVk
ZSAiSlNBY3RpdmF0aW9uLmgiCiAjaW5jbHVkZSAiSlNBcnJheS5oIgogI2luY2x1ZGUgIkpTRnVu
Y3Rpb24uaCIKQEAgLTk5OSw3ICs5OTgsNyBAQCBERUZJTkVfU1RVQl9GVU5DVElPTih2b2lkLCBv
cHRpbWl6ZSkKICAgICAgICAgaWYgKE9wdGlvbnM6OnZlcmJvc2VPU1IoKSkKICAgICAgICAgICAg
IGRhdGFMb2coIkNvbnNpZGVyaW5nIE9TUiAiLCAqY29kZUJsb2NrLCAiIC0+ICIsICpjb2RlQmxv
Y2stPnJlcGxhY2VtZW50KCksICIuXG4iKTsKICAgICAgICAgLy8gSWYgd2UgaGF2ZSBhbiBvcHRp
bWl6ZWQgcmVwbGFjZW1lbnQsIHRoZW4gaXQgbXVzdCBiZSB0aGUgY2FzZSB0aGF0IHdlIGVudGVy
ZWQKLSAgICAgICAgLy8gY3RpX29wdGltaXplIGZyb20gYSBsb29wLiBUaGF0J3MgYmVjYXVzZSBp
ZiB0aGVyZSdzIGFuIG9wdGltaXplZCByZXBsYWNlbWVudCwKKyAgICAgICAgLy8gY3RpX29wdGlt
aXplIGZyb20gYSBsb29wLiBUaGF0J3MgYmVjYXVzZSBpcyB0aGVyZSdzIGFuIG9wdGltaXplZCBy
ZXBsYWNlbWVudCwKICAgICAgICAgLy8gdGhlbiBhbGwgY2FsbHMgdG8gdGhpcyBmdW5jdGlvbiB3
aWxsIGJlIHJlbGlua2VkIHRvIHRoZSByZXBsYWNlbWVudCBhbmQgc28KICAgICAgICAgLy8gdGhl
IHByb2xvZ3VlIE9TUiB3aWxsIG5ldmVyIGZpcmUuCiAgICAgICAgIApAQCAtMTAzMywxMiArMTAz
MiwxNiBAQCBERUZJTkVfU1RVQl9GVU5DVElPTih2b2lkLCBvcHRpbWl6ZSkKICAgICAgICAgaWYg
KE9wdGlvbnM6OnZlcmJvc2VPU1IoKSkKICAgICAgICAgICAgIGRhdGFMb2coIlRyaWdnZXJpbmcg
b3B0aW1pemVkIGNvbXBpbGF0aW9uIG9mICIsICpjb2RlQmxvY2ssICJcbiIpOwogICAgICAgICAK
LSAgICAgICAgUmVmUHRyPERlZmVycmVkQ29tcGlsYXRpb25DYWxsYmFjaz4gY2FsbGJhY2sgPQot
ICAgICAgICAgICAgSklUVG9ERkdEZWZlcnJlZENvbXBpbGF0aW9uQ2FsbGJhY2s6OmNyZWF0ZSgp
OwotICAgICAgICBSZWZQdHI8Q29kZUJsb2NrPiBuZXdDb2RlQmxvY2sgPSBjb2RlQmxvY2stPm5l
d1JlcGxhY2VtZW50KCk7Ci0gICAgICAgIENvbXBpbGF0aW9uUmVzdWx0IHJlc3VsdCA9IG5ld0Nv
ZGVCbG9jay0+cHJlcGFyZUZvckV4ZWN1dGlvbkFzeW5jaHJvbm91c2x5KAotICAgICAgICAgICAg
Y2FsbEZyYW1lLCBKSVRDb2RlOjpERkdKSVQsIGNhbGxiYWNrLCBKSVRDb21waWxhdGlvbkNhbkZh
aWwsIGJ5dGVjb2RlSW5kZXgpOworICAgICAgICBKU1Njb3BlKiBzY29wZSA9IGNhbGxGcmFtZS0+
c2NvcGUoKTsKKyAgICAgICAgQ29tcGlsYXRpb25SZXN1bHQgcmVzdWx0OworICAgICAgICBKU09i
amVjdCogZXJyb3IgPSBjb2RlQmxvY2stPmNvbXBpbGVPcHRpbWl6ZWQoY2FsbEZyYW1lLCBzY29w
ZSwgcmVzdWx0LCBieXRlY29kZUluZGV4KTsKKyAgICAgICAgaWYgKE9wdGlvbnM6OnZlcmJvc2VP
U1IoKSkgeworICAgICAgICAgICAgZGF0YUxvZygiT3B0aW1pemluZyBjb21waWxhdGlvbiBvZiAi
LCAqY29kZUJsb2NrLCAiIHJlc3VsdDogIiwgcmVzdWx0LCAiXG4iKTsKKyAgICAgICAgICAgIGlm
IChlcnJvcikKKyAgICAgICAgICAgICAgICBkYXRhTG9nKCJXQVJOSU5HOiBvcHRpbWl6ZWQgY29t
cGlsYXRpb24gZmFpbGVkIHdpdGggYSBKUyBlcnJvci5cbiIpOworICAgICAgICB9CiAgICAgICAg
IAorICAgICAgICBjb2RlQmxvY2stPnNldE9wdGltaXphdGlvblRocmVzaG9sZEJhc2VkT25Db21w
aWxhdGlvblJlc3VsdChyZXN1bHQpOwogICAgICAgICBpZiAocmVzdWx0ICE9IENvbXBpbGF0aW9u
U3VjY2Vzc2Z1bCkKICAgICAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC0xMTY1LDcgKzExNjgs
NyBAQCBpbmxpbmUgdm9pZCogaml0Q29tcGlsZUZvcihDYWxsRnJhbWUqIGNhbGxGcmFtZSwgQ29k
ZVNwZWNpYWxpemF0aW9uS2luZCBraW5kKQogICAgIEFTU0VSVCghZnVuY3Rpb24tPmlzSG9zdEZ1
bmN0aW9uKCkpOwogICAgIEZ1bmN0aW9uRXhlY3V0YWJsZSogZXhlY3V0YWJsZSA9IGZ1bmN0aW9u
LT5qc0V4ZWN1dGFibGUoKTsKICAgICBKU1Njb3BlKiBjYWxsRGF0YVNjb3BlQ2hhaW4gPSBmdW5j
dGlvbi0+c2NvcGUoKTsKLSAgICBKU09iamVjdCogZXJyb3IgPSBleGVjdXRhYmxlLT5wcmVwYXJl
Rm9yRXhlY3V0aW9uKGNhbGxGcmFtZSwgY2FsbERhdGFTY29wZUNoYWluLCBraW5kKTsKKyAgICBK
U09iamVjdCogZXJyb3IgPSBleGVjdXRhYmxlLT5jb21waWxlRm9yKGNhbGxGcmFtZSwgY2FsbERh
dGFTY29wZUNoYWluLCBraW5kKTsKICAgICBpZiAoIWVycm9yKQogICAgICAgICByZXR1cm4gZnVu
Y3Rpb247CiAgICAgY2FsbEZyYW1lLT52bSgpLnRocm93RXhjZXB0aW9uKGNhbGxGcmFtZSwgZXJy
b3IpOwpAQCAtMTI2NCw3ICsxMjY3LDcgQEAgaW5saW5lIHZvaWQqIGxhenlMaW5rRm9yKENhbGxG
cmFtZSogY2FsbEZyYW1lLCBDb2RlU3BlY2lhbGl6YXRpb25LaW5kIGtpbmQpCiAgICAgICAgIGNv
ZGVQdHIgPSBleGVjdXRhYmxlLT5nZW5lcmF0ZWRKSVRDb2RlRm9yKGtpbmQpLT5hZGRyZXNzRm9y
Q2FsbCgpOwogICAgIGVsc2UgewogICAgICAgICBGdW5jdGlvbkV4ZWN1dGFibGUqIGZ1bmN0aW9u
RXhlY3V0YWJsZSA9IHN0YXRpY19jYXN0PEZ1bmN0aW9uRXhlY3V0YWJsZSo+KGV4ZWN1dGFibGUp
OwotICAgICAgICBpZiAoSlNPYmplY3QqIGVycm9yID0gZnVuY3Rpb25FeGVjdXRhYmxlLT5wcmVw
YXJlRm9yRXhlY3V0aW9uKGNhbGxGcmFtZSwgY2FsbGVlLT5zY29wZSgpLCBraW5kKSkgeworICAg
ICAgICBpZiAoSlNPYmplY3QqIGVycm9yID0gZnVuY3Rpb25FeGVjdXRhYmxlLT5jb21waWxlRm9y
KGNhbGxGcmFtZSwgY2FsbGVlLT5zY29wZSgpLCBraW5kKSkgewogICAgICAgICAgICAgY2FsbEZy
YW1lLT52bSgpLnRocm93RXhjZXB0aW9uKGNhbGxGcmFtZSwgZXJyb3IpOwogICAgICAgICAgICAg
cmV0dXJuIDA7CiAgICAgICAgIH0KQEAgLTEzNDEsNyArMTM0NCw3IEBAIERFRklORV9TVFVCX0ZV
TkNUSU9OKHZvaWQqLCB2bV9sYXp5TGlua0Nsb3N1cmVDYWxsKQogICAgICAgICAKICAgICAgICAg
RnVuY3Rpb25FeGVjdXRhYmxlKiBmdW5jdGlvbkV4ZWN1dGFibGUgPSBqc0Nhc3Q8RnVuY3Rpb25F
eGVjdXRhYmxlKj4oZXhlY3V0YWJsZSk7CiAgICAgICAgIEpTU2NvcGUqIHNjb3BlQ2hhaW4gPSBj
YWxsZWUtPnNjb3BlKCk7Ci0gICAgICAgIEpTT2JqZWN0KiBlcnJvciA9IGZ1bmN0aW9uRXhlY3V0
YWJsZS0+cHJlcGFyZUZvckV4ZWN1dGlvbihjYWxsRnJhbWUsIHNjb3BlQ2hhaW4sIENvZGVGb3JD
YWxsKTsKKyAgICAgICAgSlNPYmplY3QqIGVycm9yID0gZnVuY3Rpb25FeGVjdXRhYmxlLT5jb21w
aWxlRm9yKGNhbGxGcmFtZSwgc2NvcGVDaGFpbiwgQ29kZUZvckNhbGwpOwogICAgICAgICBpZiAo
ZXJyb3IpIHsKICAgICAgICAgICAgIGNhbGxGcmFtZS0+dm0oKS50aHJvd0V4Y2VwdGlvbihjYWxs
RnJhbWUsIGVycm9yKTsKICAgICAgICAgICAgIHJldHVybiAwOwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVRUb0RGR0RlZmVycmVkQ29tcGlsYXRpb25DYWxsYmFjay5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFRvREZHRGVmZXJyZWRDb21waWxhdGlv
bkNhbGxiYWNrLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzgzMTI1ZGE0ODlk
ZjIzOGVmOWRjNWI2NmU3NWJiZTFkMWQzOWE0MS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFRvREZHRGVm
ZXJyZWRDb21waWxhdGlvbkNhbGxiYWNrLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDcxICswLDAg
QEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAq
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
Ci0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCi0gKi8KLQotI2luY2x1
ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIkpJVFRvREZHRGVmZXJyZWRDb21waWxhdGlvbkNhbGxi
YWNrLmgiCi0KLSNpZiBFTkFCTEUoREZHX0pJVCkKLQotI2luY2x1ZGUgIkNvZGVCbG9jay5oIgot
I2luY2x1ZGUgIkV4ZWN1dGFibGUuaCIKLQotbmFtZXNwYWNlIEpTQyB7Ci0KLUpJVFRvREZHRGVm
ZXJyZWRDb21waWxhdGlvbkNhbGxiYWNrOjpKSVRUb0RGR0RlZmVycmVkQ29tcGlsYXRpb25DYWxs
YmFjaygpIHsgfQotSklUVG9ERkdEZWZlcnJlZENvbXBpbGF0aW9uQ2FsbGJhY2s6On5KSVRUb0RG
R0RlZmVycmVkQ29tcGlsYXRpb25DYWxsYmFjaygpIHsgfQotCi1QYXNzUmVmUHRyPEpJVFRvREZH
RGVmZXJyZWRDb21waWxhdGlvbkNhbGxiYWNrPiBKSVRUb0RGR0RlZmVycmVkQ29tcGlsYXRpb25D
YWxsYmFjazo6Y3JlYXRlKCkKLXsKLSAgICByZXR1cm4gYWRvcHRSZWYobmV3IEpJVFRvREZHRGVm
ZXJyZWRDb21waWxhdGlvbkNhbGxiYWNrKCkpOwotfQotCi12b2lkIEpJVFRvREZHRGVmZXJyZWRD
b21waWxhdGlvbkNhbGxiYWNrOjpjb21waWxhdGlvbkRpZEJlY29tZVJlYWR5QXN5bmNocm9ub3Vz
bHkoCi0gICAgQ29kZUJsb2NrKiBjb2RlQmxvY2spCi17Ci0gICAgQVNTRVJUKGNvZGVCbG9jay0+
YWx0ZXJuYXRpdmUoKS0+aml0VHlwZSgpID09IEpJVENvZGU6OkJhc2VsaW5lSklUKTsKLSAgICAK
LSAgICBpZiAoT3B0aW9uczo6dmVyYm9zZU9TUigpKQotICAgICAgICBkYXRhTG9nKCJPcHRpbWl6
aW5nIGNvbXBpbGF0aW9uIG9mICIsICpjb2RlQmxvY2ssICIgZGlkIGJlY29tZSByZWFkeS5cbiIp
OwotICAgIAotICAgIGNvZGVCbG9jay0+YWx0ZXJuYXRpdmUoKS0+Zm9yY2VPcHRpbWl6YXRpb25T
bG93UGF0aENvbmN1cnJlbnRseSgpOwotfQotCi12b2lkIEpJVFRvREZHRGVmZXJyZWRDb21waWxh
dGlvbkNhbGxiYWNrOjpjb21waWxhdGlvbkRpZENvbXBsZXRlKAotICAgIENvZGVCbG9jayogY29k
ZUJsb2NrLCBDb21waWxhdGlvblJlc3VsdCByZXN1bHQpCi17Ci0gICAgQVNTRVJUKGNvZGVCbG9j
ay0+YWx0ZXJuYXRpdmUoKS0+aml0VHlwZSgpID09IEpJVENvZGU6OkJhc2VsaW5lSklUKTsKLSAg
ICAKLSAgICBpZiAoT3B0aW9uczo6dmVyYm9zZU9TUigpKQotICAgICAgICBkYXRhTG9nKCJPcHRp
bWl6aW5nIGNvbXBpbGF0aW9uIG9mICIsICpjb2RlQmxvY2ssICIgcmVzdWx0OiAiLCByZXN1bHQs
ICJcbiIpOwotICAgIAotICAgIGlmIChyZXN1bHQgPT0gQ29tcGlsYXRpb25TdWNjZXNzZnVsKQot
ICAgICAgICBjb2RlQmxvY2stPmluc3RhbGwoKTsKLSAgICAKLSAgICBjb2RlQmxvY2stPmFsdGVy
bmF0aXZlKCktPnNldE9wdGltaXphdGlvblRocmVzaG9sZEJhc2VkT25Db21waWxhdGlvblJlc3Vs
dChyZXN1bHQpOwotfQotCi19IC8vIEpTQwotCi0jZW5kaWYgLy8gRU5BQkxFKERGR19KSVQpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFRvREZHRGVmZXJyZWRDb21w
aWxhdGlvbkNhbGxiYWNrLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFRvREZHRGVm
ZXJyZWRDb21waWxhdGlvbkNhbGxiYWNrLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwNDEyNDVjZDAwY2I1YTIwMGMwMmI1YjE1YmFjM2VkMjM5OTc4OTkuLjAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVRUb0RGR0RlZmVycmVkQ29tcGlsYXRpb25DYWxsYmFjay5oCisrKyAvZGV2L251bGwKQEAg
LTEsNTggKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBt
ZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAq
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKLSAq
LwotCi0jaWZuZGVmIEpJVFRvREZHRGVmZXJyZWRDb21waWxhdGlvbkNhbGxiYWNrX2gKLSNkZWZp
bmUgSklUVG9ERkdEZWZlcnJlZENvbXBpbGF0aW9uQ2FsbGJhY2tfaAotCi0jaW5jbHVkZSA8d3Rm
L1BsYXRmb3JtLmg+Ci0KLSNpZiBFTkFCTEUoREZHX0pJVCkKLQotI2luY2x1ZGUgIkRlZmVycmVk
Q29tcGlsYXRpb25DYWxsYmFjay5oIgotI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+Ci0KLW5h
bWVzcGFjZSBKU0MgewotCi1jbGFzcyBTY3JpcHRFeGVjdXRhYmxlOwotCi1jbGFzcyBKSVRUb0RG
R0RlZmVycmVkQ29tcGlsYXRpb25DYWxsYmFjayA6IHB1YmxpYyBEZWZlcnJlZENvbXBpbGF0aW9u
Q2FsbGJhY2sgewotcHJvdGVjdGVkOgotICAgIEpJVFRvREZHRGVmZXJyZWRDb21waWxhdGlvbkNh
bGxiYWNrKCk7Ci0KLXB1YmxpYzoKLSAgICB2aXJ0dWFsIH5KSVRUb0RGR0RlZmVycmVkQ29tcGls
YXRpb25DYWxsYmFjaygpOwotCi0gICAgc3RhdGljIFBhc3NSZWZQdHI8SklUVG9ERkdEZWZlcnJl
ZENvbXBpbGF0aW9uQ2FsbGJhY2s+IGNyZWF0ZSgpOwotICAgIAotICAgIHZpcnR1YWwgdm9pZCBj
b21waWxhdGlvbkRpZEJlY29tZVJlYWR5QXN5bmNocm9ub3VzbHkoQ29kZUJsb2NrKik7Ci0gICAg
dmlydHVhbCB2b2lkIGNvbXBpbGF0aW9uRGlkQ29tcGxldGUoQ29kZUJsb2NrKiwgQ29tcGlsYXRp
b25SZXN1bHQpOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgSlNDCi0KLSNlbmRpZiAvLyBFTkFCTEUo
REZHX0pJVCkKLQotI2VuZGlmIC8vIEpJVFRvREZHRGVmZXJyZWRDb21waWxhdGlvbkNhbGxiYWNr
X2gKLQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RW50cnlw
b2ludHMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RW50cnlwb2ludHMu
Y3BwCmluZGV4IGQ5OWU3NGVlYjlmYmJkNDJkNjRhYWJjYjM2MTFlMzY0ZTJkZmE4M2UuLmM5YjE3
ZGE0MzgxYzY3ZGE5Y2Y0MGZkNTgxODExM2ZmZGEwYmM2ZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9sbGludC9MTEludEVudHJ5cG9pbnRzLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvbGxpbnQvTExJbnRFbnRyeXBvaW50cy5jcHAKQEAgLTEsNSArMSw1IEBACiAv
KgotICogQ29weXJpZ2h0IChDKSAyMDEyLCAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI4LDc3ICsyOCw2MiBAQAog
CiAjaWYgRU5BQkxFKExMSU5UKQogCi0jaW5jbHVkZSAiQ29kZUJsb2NrLmgiCiAjaW5jbHVkZSAi
SklUQ29kZS5oIgorI2luY2x1ZGUgIlZNLmgiCiAjaW5jbHVkZSAiSlNPYmplY3QuaCIKICNpbmNs
dWRlICJMTEludFRodW5rcy5oIgogI2luY2x1ZGUgIkxvd0xldmVsSW50ZXJwcmV0ZXIuaCIKLSNp
bmNsdWRlICJWTS5oIgogCiAKIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgTExJbnQgewogCi12
b2lkIHNldEZ1bmN0aW9uRW50cnlwb2ludChWTSYgdm0sIEZ1bmN0aW9uQ29kZUJsb2NrKiBjb2Rl
QmxvY2spCit2b2lkIGdldEZ1bmN0aW9uRW50cnlwb2ludChWTSYgdm0sIENvZGVTcGVjaWFsaXph
dGlvbktpbmQga2luZCwgUmVmUHRyPEpJVENvZGU+JiBqaXRDb2RlLCBNYWNyb0Fzc2VtYmxlckNv
ZGVQdHImIGFyaXR5Q2hlY2spCiB7Ci0gICAgQ29kZVNwZWNpYWxpemF0aW9uS2luZCBraW5kID0g
Y29kZUJsb2NrLT5zcGVjaWFsaXphdGlvbktpbmQoKTsKLSAgICAKICAgICBpZiAoIXZtLmNhblVz
ZUpJVCgpKSB7CiAgICAgICAgIGlmIChraW5kID09IENvZGVGb3JDYWxsKSB7Ci0gICAgICAgICAg
ICBjb2RlQmxvY2stPnNldEpJVENvZGUoCi0gICAgICAgICAgICAgICAgYWRvcHRSZWYobmV3IERp
cmVjdEpJVENvZGUoTWFjcm9Bc3NlbWJsZXJDb2RlUmVmOjpjcmVhdGVMTEludENvZGVSZWYobGxp
bnRfZnVuY3Rpb25fZm9yX2NhbGxfcHJvbG9ndWUpLCBKSVRDb2RlOjpJbnRlcnByZXRlclRodW5r
KSksCi0gICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyOjpjcmVhdGVMTEludENv
ZGVQdHIobGxpbnRfZnVuY3Rpb25fZm9yX2NhbGxfYXJpdHlfY2hlY2spKTsKKyAgICAgICAgICAg
IGppdENvZGUgPSBhZG9wdFJlZihuZXcgRGlyZWN0SklUQ29kZShNYWNyb0Fzc2VtYmxlckNvZGVS
ZWY6OmNyZWF0ZUxMSW50Q29kZVJlZihsbGludF9mdW5jdGlvbl9mb3JfY2FsbF9wcm9sb2d1ZSks
IEpJVENvZGU6OkludGVycHJldGVyVGh1bmspKTsKKyAgICAgICAgICAgIGFyaXR5Q2hlY2sgPSBN
YWNyb0Fzc2VtYmxlckNvZGVQdHI6OmNyZWF0ZUxMSW50Q29kZVB0cihsbGludF9mdW5jdGlvbl9m
b3JfY2FsbF9hcml0eV9jaGVjayk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAog
ICAgICAgICBBU1NFUlQoa2luZCA9PSBDb2RlRm9yQ29uc3RydWN0KTsKLSAgICAgICAgY29kZUJs
b2NrLT5zZXRKSVRDb2RlKAotICAgICAgICAgICAgYWRvcHRSZWYobmV3IERpcmVjdEpJVENvZGUo
TWFjcm9Bc3NlbWJsZXJDb2RlUmVmOjpjcmVhdGVMTEludENvZGVSZWYobGxpbnRfZnVuY3Rpb25f
Zm9yX2NvbnN0cnVjdF9wcm9sb2d1ZSksIEpJVENvZGU6OkludGVycHJldGVyVGh1bmspKSwKLSAg
ICAgICAgICAgIE1hY3JvQXNzZW1ibGVyQ29kZVB0cjo6Y3JlYXRlTExJbnRDb2RlUHRyKGxsaW50
X2Z1bmN0aW9uX2Zvcl9jb25zdHJ1Y3RfYXJpdHlfY2hlY2spKTsKKyAgICAgICAgaml0Q29kZSA9
IGFkb3B0UmVmKG5ldyBEaXJlY3RKSVRDb2RlKE1hY3JvQXNzZW1ibGVyQ29kZVJlZjo6Y3JlYXRl
TExJbnRDb2RlUmVmKGxsaW50X2Z1bmN0aW9uX2Zvcl9jb25zdHJ1Y3RfcHJvbG9ndWUpLCBKSVRD
b2RlOjpJbnRlcnByZXRlclRodW5rKSk7CisgICAgICAgIGFyaXR5Q2hlY2sgPSBNYWNyb0Fzc2Vt
YmxlckNvZGVQdHI6OmNyZWF0ZUxMSW50Q29kZVB0cihsbGludF9mdW5jdGlvbl9mb3JfY29uc3Ry
dWN0X2FyaXR5X2NoZWNrKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICAKICNpZiBFTkFC
TEUoSklUKQogICAgIGlmIChraW5kID09IENvZGVGb3JDYWxsKSB7Ci0gICAgICAgIGNvZGVCbG9j
ay0+c2V0SklUQ29kZSgKLSAgICAgICAgICAgIGFkb3B0UmVmKG5ldyBEaXJlY3RKSVRDb2RlKHZt
LmdldENUSVN0dWIoZnVuY3Rpb25Gb3JDYWxsRW50cnlUaHVua0dlbmVyYXRvciksIEpJVENvZGU6
OkludGVycHJldGVyVGh1bmspKSwKLSAgICAgICAgICAgIHZtLmdldENUSVN0dWIoZnVuY3Rpb25G
b3JDYWxsQXJpdHlDaGVja1RodW5rR2VuZXJhdG9yKS5jb2RlKCkpOworICAgICAgICBqaXRDb2Rl
ID0gYWRvcHRSZWYobmV3IERpcmVjdEpJVENvZGUodm0uZ2V0Q1RJU3R1YihmdW5jdGlvbkZvckNh
bGxFbnRyeVRodW5rR2VuZXJhdG9yKSwgSklUQ29kZTo6SW50ZXJwcmV0ZXJUaHVuaykpOworICAg
ICAgICBhcml0eUNoZWNrID0gdm0uZ2V0Q1RJU3R1YihmdW5jdGlvbkZvckNhbGxBcml0eUNoZWNr
VGh1bmtHZW5lcmF0b3IpLmNvZGUoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAogICAgIEFT
U0VSVChraW5kID09IENvZGVGb3JDb25zdHJ1Y3QpOwotICAgIGNvZGVCbG9jay0+c2V0SklUQ29k
ZSgKLSAgICAgICAgYWRvcHRSZWYobmV3IERpcmVjdEpJVENvZGUodm0uZ2V0Q1RJU3R1YihmdW5j
dGlvbkZvckNvbnN0cnVjdEVudHJ5VGh1bmtHZW5lcmF0b3IpLCBKSVRDb2RlOjpJbnRlcnByZXRl
clRodW5rKSksCi0gICAgICAgIHZtLmdldENUSVN0dWIoZnVuY3Rpb25Gb3JDb25zdHJ1Y3RBcml0
eUNoZWNrVGh1bmtHZW5lcmF0b3IpLmNvZGUoKSk7CisgICAgaml0Q29kZSA9IGFkb3B0UmVmKG5l
dyBEaXJlY3RKSVRDb2RlKHZtLmdldENUSVN0dWIoZnVuY3Rpb25Gb3JDb25zdHJ1Y3RFbnRyeVRo
dW5rR2VuZXJhdG9yKSwgSklUQ29kZTo6SW50ZXJwcmV0ZXJUaHVuaykpOworICAgIGFyaXR5Q2hl
Y2sgPSB2bS5nZXRDVElTdHViKGZ1bmN0aW9uRm9yQ29uc3RydWN0QXJpdHlDaGVja1RodW5rR2Vu
ZXJhdG9yKS5jb2RlKCk7CiAjZW5kaWYgLy8gRU5BQkxFKEpJVCkKIH0KIAotdm9pZCBzZXRFdmFs
RW50cnlwb2ludChWTSYgdm0sIEV2YWxDb2RlQmxvY2sqIGNvZGVCbG9jaykKK3ZvaWQgZ2V0RXZh
bEVudHJ5cG9pbnQoVk0mIHZtLCBSZWZQdHI8SklUQ29kZT4mIGppdENvZGUpCiB7CiAgICAgaWYg
KCF2bS5jYW5Vc2VKSVQoKSkgewotICAgICAgICBjb2RlQmxvY2stPnNldEpJVENvZGUoCi0gICAg
ICAgICAgICBhZG9wdFJlZihuZXcgRGlyZWN0SklUQ29kZShNYWNyb0Fzc2VtYmxlckNvZGVSZWY6
OmNyZWF0ZUxMSW50Q29kZVJlZihsbGludF9ldmFsX3Byb2xvZ3VlKSwgSklUQ29kZTo6SW50ZXJw
cmV0ZXJUaHVuaykpLAotICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyKCkpOworICAg
ICAgICBqaXRDb2RlID0gYWRvcHRSZWYobmV3IERpcmVjdEpJVENvZGUoTWFjcm9Bc3NlbWJsZXJD
b2RlUmVmOjpjcmVhdGVMTEludENvZGVSZWYobGxpbnRfZXZhbF9wcm9sb2d1ZSksIEpJVENvZGU6
OkludGVycHJldGVyVGh1bmspKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSNpZiBFTkFCTEUo
SklUKQotICAgIGNvZGVCbG9jay0+c2V0SklUQ29kZSgKLSAgICAgICAgYWRvcHRSZWYobmV3IERp
cmVjdEpJVENvZGUodm0uZ2V0Q1RJU3R1YihldmFsRW50cnlUaHVua0dlbmVyYXRvciksIEpJVENv
ZGU6OkludGVycHJldGVyVGh1bmspKSwKLSAgICAgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyKCkp
OworI2lmIEVOQUJMRShKSVQpICAgIAorICAgIGppdENvZGUgPSBhZG9wdFJlZihuZXcgRGlyZWN0
SklUQ29kZSh2bS5nZXRDVElTdHViKGV2YWxFbnRyeVRodW5rR2VuZXJhdG9yKSwgSklUQ29kZTo6
SW50ZXJwcmV0ZXJUaHVuaykpOwogI2VuZGlmCiB9CiAKLXZvaWQgc2V0UHJvZ3JhbUVudHJ5cG9p
bnQoVk0mIHZtLCBQcm9ncmFtQ29kZUJsb2NrKiBjb2RlQmxvY2spCit2b2lkIGdldFByb2dyYW1F
bnRyeXBvaW50KFZNJiB2bSwgUmVmUHRyPEpJVENvZGU+JiBqaXRDb2RlKQogewogICAgIGlmICgh
dm0uY2FuVXNlSklUKCkpIHsKLSAgICAgICAgY29kZUJsb2NrLT5zZXRKSVRDb2RlKAotICAgICAg
ICAgICAgYWRvcHRSZWYobmV3IERpcmVjdEpJVENvZGUoTWFjcm9Bc3NlbWJsZXJDb2RlUmVmOjpj
cmVhdGVMTEludENvZGVSZWYobGxpbnRfcHJvZ3JhbV9wcm9sb2d1ZSksIEpJVENvZGU6OkludGVy
cHJldGVyVGh1bmspKSwKLSAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyQ29kZVB0cigpKTsKKyAg
ICAgICAgaml0Q29kZSA9IGFkb3B0UmVmKG5ldyBEaXJlY3RKSVRDb2RlKE1hY3JvQXNzZW1ibGVy
Q29kZVJlZjo6Y3JlYXRlTExJbnRDb2RlUmVmKGxsaW50X3Byb2dyYW1fcHJvbG9ndWUpLCBKSVRD
b2RlOjpJbnRlcnByZXRlclRodW5rKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAjaWYgRU5B
QkxFKEpJVCkKLSAgICBjb2RlQmxvY2stPnNldEpJVENvZGUoCi0gICAgICAgIGFkb3B0UmVmKG5l
dyBEaXJlY3RKSVRDb2RlKHZtLmdldENUSVN0dWIocHJvZ3JhbUVudHJ5VGh1bmtHZW5lcmF0b3Ip
LCBKSVRDb2RlOjpJbnRlcnByZXRlclRodW5rKSksCi0gICAgICAgIE1hY3JvQXNzZW1ibGVyQ29k
ZVB0cigpKTsKKyAgICBqaXRDb2RlID0gYWRvcHRSZWYobmV3IERpcmVjdEpJVENvZGUodm0uZ2V0
Q1RJU3R1Yihwcm9ncmFtRW50cnlUaHVua0dlbmVyYXRvciksIEpJVENvZGU6OkludGVycHJldGVy
VGh1bmspKTsKICNlbmRpZgogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
bGxpbnQvTExJbnRFbnRyeXBvaW50cy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xM
SW50RW50cnlwb2ludHMuaAppbmRleCAwYjdhZjA2MmJkZTRmZWYxMTNmZGY5YmU4YWVmMWE3Y2Y5
NmJmNmU0Li5lZDZkMGRiZTJkZmE1ZjM4OTM5MzZmMzg3MDFmMDU3YTE5MDBkMjRiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRFbnRyeXBvaW50cy5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludEVudHJ5cG9pbnRzLmgKQEAgLTEsNSAr
MSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEyLCAyMDEzIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTM3LDcgKzM3
LDYgQEAKIG5hbWVzcGFjZSBKU0MgewogCiBjbGFzcyBFdmFsQ29kZUJsb2NrOwotY2xhc3MgRnVu
Y3Rpb25Db2RlQmxvY2s7CiBjbGFzcyBWTTsKIGNsYXNzIE1hY3JvQXNzZW1ibGVyQ29kZVB0cjsK
IGNsYXNzIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjsKQEAgLTQ1LDkgKzQ0LDE5IEBAIGNsYXNzIFBy
b2dyYW1Db2RlQmxvY2s7CiAKIG5hbWVzcGFjZSBMTEludCB7CiAKLXZvaWQgc2V0RnVuY3Rpb25F
bnRyeXBvaW50KFZNJiwgRnVuY3Rpb25Db2RlQmxvY2sqKTsKLXZvaWQgc2V0RXZhbEVudHJ5cG9p
bnQoVk0mLCBFdmFsQ29kZUJsb2NrKik7Ci12b2lkIHNldFByb2dyYW1FbnRyeXBvaW50KFZNJiwg
UHJvZ3JhbUNvZGVCbG9jayopOwordm9pZCBnZXRGdW5jdGlvbkVudHJ5cG9pbnQoVk0mLCBDb2Rl
U3BlY2lhbGl6YXRpb25LaW5kLCBSZWZQdHI8SklUQ29kZT4mLCBNYWNyb0Fzc2VtYmxlckNvZGVQ
dHImIGFyaXR5Q2hlY2spOwordm9pZCBnZXRFdmFsRW50cnlwb2ludChWTSYsIFJlZlB0cjxKSVRD
b2RlPiYpOwordm9pZCBnZXRQcm9ncmFtRW50cnlwb2ludChWTSYsIFJlZlB0cjxKSVRDb2RlPiYp
OworCitpbmxpbmUgdm9pZCBnZXRFbnRyeXBvaW50KFZNJiB2bSwgRXZhbENvZGVCbG9jayosIFJl
ZlB0cjxKSVRDb2RlPiYgaml0Q29kZSkKK3sKKyAgICBnZXRFdmFsRW50cnlwb2ludCh2bSwgaml0
Q29kZSk7Cit9CisKK2lubGluZSB2b2lkIGdldEVudHJ5cG9pbnQoVk0mIHZtLCBQcm9ncmFtQ29k
ZUJsb2NrKiwgUmVmUHRyPEpJVENvZGU+JiBqaXRDb2RlKQoreworICAgIGdldFByb2dyYW1FbnRy
eXBvaW50KHZtLCBqaXRDb2RlKTsKK30KIAogfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkxMSW50CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCmluZGV4
IDg1NjFjNjc2MGIxOGVmYTRhNTU2MmQ0ZWQzYmU0YzJkODE1NWE4MTAuLjBmZDMwNTQ3MDY5YWY4
Yzg2NTI1ZDI4OGI3ZDZiYTc3Yjc2ZTY1ODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcApAQCAtMzcsNiArMzcsNyBAQAogI2luY2x1ZGUgIkhv
c3RDYWxsUmV0dXJuVmFsdWUuaCIKICNpbmNsdWRlICJJbnRlcnByZXRlci5oIgogI2luY2x1ZGUg
IkpJVC5oIgorI2luY2x1ZGUgIkpJVERyaXZlci5oIgogI2luY2x1ZGUgIkpTQWN0aXZhdGlvbi5o
IgogI2luY2x1ZGUgIkpTQ0pTVmFsdWUuaCIKICNpbmNsdWRlICJKU0dsb2JhbE9iamVjdEZ1bmN0
aW9ucy5oIgpAQCAtMjc5LDggKzI4MCw2IEBAIGlubGluZSBib29sIHNob3VsZEpJVChFeGVjU3Rh
dGUqIGV4ZWMpCiAvLyBSZXR1cm5zIHRydWUgaWYgd2Ugc2hvdWxkIHRyeSB0byBPU1IuCiBpbmxp
bmUgYm9vbCBqaXRDb21waWxlQW5kU2V0SGV1cmlzdGljcyhDb2RlQmxvY2sqIGNvZGVCbG9jaywg
RXhlY1N0YXRlKiBleGVjKQogewotICAgIERlZmVyR0MgZGVmZXJHQyhleGVjLT52bSgpLmhlYXAp
OwotICAgIAogICAgIGNvZGVCbG9jay0+dXBkYXRlQWxsVmFsdWVQcm9maWxlUHJlZGljdGlvbnMo
KTsKICAgICAKICAgICBpZiAoIWNvZGVCbG9jay0+Y2hlY2tJZkpJVFRocmVzaG9sZFJlYWNoZWQo
KSkgewpAQCAtMjg5LDMzICsyODgsMjMgQEAgaW5saW5lIGJvb2wgaml0Q29tcGlsZUFuZFNldEhl
dXJpc3RpY3MoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEV4ZWNTdGF0ZSogZXhlYykKICAgICAgICAg
cmV0dXJuIGZhbHNlOwogICAgIH0KICAgICAKLSAgICBzd2l0Y2ggKGNvZGVCbG9jay0+aml0VHlw
ZSgpKSB7Ci0gICAgY2FzZSBKSVRDb2RlOjpCYXNlbGluZUpJVDogeworICAgIENvbXBpbGF0aW9u
UmVzdWx0IHJlc3VsdCA9IGNvZGVCbG9jay0+aml0Q29tcGlsZShleGVjKTsKKyAgICBzd2l0Y2gg
KHJlc3VsdCkgeworICAgIGNhc2UgQ29tcGlsYXRpb25Ob3ROZWVkZWQ6CiAgICAgICAgIGlmIChP
cHRpb25zOjp2ZXJib3NlT1NSKCkpCiAgICAgICAgICAgICBkYXRhTG9nRigiICAgIENvZGUgd2Fz
IGFscmVhZHkgY29tcGlsZWQuXG4iKTsKICAgICAgICAgY29kZUJsb2NrLT5qaXRTb29uKCk7CiAg
ICAgICAgIHJldHVybiB0cnVlOwotICAgIH0KLSAgICBjYXNlIEpJVENvZGU6OkludGVycHJldGVy
VGh1bms6IHsKLSAgICAgICAgQ29tcGlsYXRpb25SZXN1bHQgcmVzdWx0ID0gY29kZUJsb2NrLT5w
cmVwYXJlRm9yRXhlY3V0aW9uKAotICAgICAgICAgICAgZXhlYywgSklUQ29kZTo6QmFzZWxpbmVK
SVQsIEpJVENvbXBpbGF0aW9uQ2FuRmFpbCk7Ci0gICAgICAgIHN3aXRjaCAocmVzdWx0KSB7Ci0g
ICAgICAgIGNhc2UgQ29tcGlsYXRpb25GYWlsZWQ6Ci0gICAgICAgICAgICBpZiAoT3B0aW9uczo6
dmVyYm9zZU9TUigpKQotICAgICAgICAgICAgICAgIGRhdGFMb2dGKCIgICAgSklUIGNvbXBpbGF0
aW9uIGZhaWxlZC5cbiIpOwotICAgICAgICAgICAgY29kZUJsb2NrLT5kb250SklUQW55dGltZVNv
b24oKTsKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgY2FzZSBDb21waWxhdGlv
blN1Y2Nlc3NmdWw6Ci0gICAgICAgICAgICBpZiAoT3B0aW9uczo6dmVyYm9zZU9TUigpKQotICAg
ICAgICAgICAgICAgIGRhdGFMb2dGKCIgICAgSklUIGNvbXBpbGF0aW9uIHN1Y2Nlc3NmdWwuXG4i
KTsKLSAgICAgICAgICAgIGNvZGVCbG9jay0+aW5zdGFsbCgpOwotICAgICAgICAgICAgY29kZUJs
b2NrLT5qaXRTb29uKCk7Ci0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgZGVmYXVs
dDoKLSAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgICAg
ICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIH0KLSAgICB9CisgICAgY2FzZSBDb21waWxhdGlvbkZh
aWxlZDoKKyAgICAgICAgaWYgKE9wdGlvbnM6OnZlcmJvc2VPU1IoKSkKKyAgICAgICAgICAgIGRh
dGFMb2dGKCIgICAgSklUIGNvbXBpbGF0aW9uIGZhaWxlZC5cbiIpOworICAgICAgICBjb2RlQmxv
Y2stPmRvbnRKSVRBbnl0aW1lU29vbigpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgY2Fz
ZSBDb21waWxhdGlvblN1Y2Nlc3NmdWw6CisgICAgICAgIGlmIChPcHRpb25zOjp2ZXJib3NlT1NS
KCkpCisgICAgICAgICAgICBkYXRhTG9nRigiICAgIEpJVCBjb21waWxhdGlvbiBzdWNjZXNzZnVs
LlxuIik7CisgICAgICAgIGNvZGVCbG9jay0+aml0U29vbigpOworICAgICAgICByZXR1cm4gdHJ1
ZTsKICAgICBkZWZhdWx0OgogICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwog
ICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0xMDE1LDcgKzEwMDQsNyBAQCBpbmxpbmUgU2xvd1Bh
dGhSZXR1cm5UeXBlIHNldFVwQ2FsbChFeGVjU3RhdGUqIGV4ZWNDYWxsZWUsIEluc3RydWN0aW9u
KiBwYywgQ29kZQogICAgICAgICBjb2RlUHRyID0gZXhlY3V0YWJsZS0+aG9zdENvZGVFbnRyeUZv
cihraW5kKTsKICAgICBlbHNlIHsKICAgICAgICAgRnVuY3Rpb25FeGVjdXRhYmxlKiBmdW5jdGlv
bkV4ZWN1dGFibGUgPSBzdGF0aWNfY2FzdDxGdW5jdGlvbkV4ZWN1dGFibGUqPihleGVjdXRhYmxl
KTsKLSAgICAgICAgSlNPYmplY3QqIGVycm9yID0gZnVuY3Rpb25FeGVjdXRhYmxlLT5wcmVwYXJl
Rm9yRXhlY3V0aW9uKGV4ZWNDYWxsZWUsIGNhbGxlZS0+c2NvcGUoKSwga2luZCk7CisgICAgICAg
IEpTT2JqZWN0KiBlcnJvciA9IGZ1bmN0aW9uRXhlY3V0YWJsZS0+Y29tcGlsZUZvcihleGVjQ2Fs
bGVlLCBjYWxsZWUtPnNjb3BlKCksIGtpbmQpOwogICAgICAgICBpZiAoZXJyb3IpCiAgICAgICAg
ICAgICBMTElOVF9DQUxMX1RIUk9XKGV4ZWNDYWxsZWUtPmNhbGxlckZyYW1lKCksIHBjLCBlcnJv
cik7CiAgICAgICAgIGNvZGVCbG9jayA9ICZmdW5jdGlvbkV4ZWN1dGFibGUtPmdlbmVyYXRlZEJ5
dGVjb2RlRm9yKGtpbmQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvQXJyYXlQcm90b3R5cGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJy
YXlQcm90b3R5cGUuY3BwCmluZGV4IDQ1ODJjOTk5ZDYzOTRkZDhiNzhhZGU3ZmJhYzA3OWIxZjk0
YmUzMDEuLmRiMjFjNGIwMjk2ZGQ5MmI4NmQxZTBmMjRmNDkyNjU3M2IwNjVjNjMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5UHJvdG90eXBlLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheVByb3RvdHlwZS5jcHAKQEAgLTc4
LDcgKzc4LDcgQEAgc3RhdGljIGlubGluZSBib29sIGlzTnVtZXJpY0NvbXBhcmVGdW5jdGlvbihF
eGVjU3RhdGUqIGV4ZWMsIENhbGxUeXBlIGNhbGxUeXBlLAogCiAgICAgRnVuY3Rpb25FeGVjdXRh
YmxlKiBleGVjdXRhYmxlID0gY2FsbERhdGEuanMuZnVuY3Rpb25FeGVjdXRhYmxlOwogCi0gICAg
SlNPYmplY3QqIGVycm9yID0gZXhlY3V0YWJsZS0+cHJlcGFyZUZvckV4ZWN1dGlvbihleGVjLCBj
YWxsRGF0YS5qcy5zY29wZSwgQ29kZUZvckNhbGwpOworICAgIEpTT2JqZWN0KiBlcnJvciA9IGV4
ZWN1dGFibGUtPmNvbXBpbGVGb3JDYWxsKGV4ZWMsIGNhbGxEYXRhLmpzLnNjb3BlKTsKICAgICBp
ZiAoZXJyb3IpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHAKaW5kZXggZWI0YThiZmRjMjg2NDZh
ZjM0MTlkNGQ1MzU2ZDBhZTk4MTNhNWUxNC4uOTBlNzYxOThhZmMzYjQ2OGQ1MTE5ZjY1MDgwNDhl
NTk4ZDE1ZmIwNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29t
bW9uU2xvd1BhdGhzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21t
b25TbG93UGF0aHMuY3BwCkBAIC0zNyw2ICszNyw3IEBACiAjaW5jbHVkZSAiSG9zdENhbGxSZXR1
cm5WYWx1ZS5oIgogI2luY2x1ZGUgIkludGVycHJldGVyLmgiCiAjaW5jbHVkZSAiSklULmgiCisj
aW5jbHVkZSAiSklURHJpdmVyLmgiCiAjaW5jbHVkZSAiSklUU3R1YnMuaCIKICNpbmNsdWRlICJK
U0FjdGl2YXRpb24uaCIKICNpbmNsdWRlICJKU0NKU1ZhbHVlLmgiCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21waWxhdGlvblJlc3VsdC5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21waWxhdGlvblJlc3VsdC5jcHAKaW5kZXggODc4ODky
ZmVjZDIzOGU2ZTZiNDcxODZkMTRkMDBiYmNiZDBmMzM1Ny4uMmQ0YmE5N2NiMDMzMTg5MzVhMGY4
YzM1N2QyYWYxNWZjOWJmNjBhZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvQ29tcGlsYXRpb25SZXN1bHQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0NvbXBpbGF0aW9uUmVzdWx0LmNwcApAQCAtNDIsNiArNDIsOSBAQCB2b2lkIHByaW50
SW50ZXJuYWwoUHJpbnRTdHJlYW0mIG91dCwgQ29tcGlsYXRpb25SZXN1bHQgcmVzdWx0KQogICAg
IGNhc2UgQ29tcGlsYXRpb25TdWNjZXNzZnVsOgogICAgICAgICBvdXQucHJpbnQoIkNvbXBpbGF0
aW9uU3VjY2Vzc2Z1bCIpOwogICAgICAgICByZXR1cm47CisgICAgY2FzZSBDb21waWxhdGlvbk5v
dE5lZWRlZDoKKyAgICAgICAgb3V0LnByaW50KCJDb21waWxhdGlvbk5vdE5lZWRlZCIpOworICAg
ICAgICByZXR1cm47CiAgICAgY2FzZSBDb21waWxhdGlvbkRlZmVycmVkOgogICAgICAgICBvdXQu
cHJpbnQoIkNvbXBpbGF0aW9uRGVmZXJyZWQiKTsKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tcGlsYXRpb25SZXN1bHQuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbXBpbGF0aW9uUmVzdWx0LmgKaW5kZXggZGI2
YTBjNDZhMTY0YWY0MmZhZDhkMTQ2NjZmY2EzZjllZWJhNDdiYi4uNmFlMGI3ZDJjMmYzNGU0MmRi
YjkzNDI4YTZjZjNhZmIwZmY0Yzk2NCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvQ29tcGlsYXRpb25SZXN1bHQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9Db21waWxhdGlvblJlc3VsdC5oCkBAIC0zMCwzNCArMzAsNyBAQAogCiBuYW1lc3Bh
Y2UgSlNDIHsKIAotZW51bSBDb21waWxhdGlvblJlc3VsdCB7Ci0gICAgLy8gV2UgdHJpZWQgdG8g
Y29tcGlsZSB0aGUgY29kZSwgYnV0IHdlIGNvdWxkbid0IGNvbXBpbGUgaXQuIFRoaXMgY291bGQg
YmUKLSAgICAvLyBiZWNhdXNlIHdlIHJhbiBvdXQgb2YgbWVtb3J5LCBvciBiZWNhdXNlIHRoZSBj
b21waWxlciBlbmNvdW50ZXJlZCBhbgotICAgIC8vIGludGVybmFsIGVycm9yIGFuZCBkZWNpZGVk
IHRvIGJhaWwgb3V0IGdyYWNlZnVsbHkuIEVpdGhlciB3YXksIHRoaXMgaW1wbGllcwotICAgIC8v
IHRoYXQgd2Ugc2hvdWxkbid0IHRyeSB0byBjb21waWxlIHRoaXMgY29kZSBibG9jayBhZ2Fpbi4K
LSAgICBDb21waWxhdGlvbkZhaWxlZCwKLSAgICAKLSAgICAvLyBUaGUgcHJvZmlsaW5nIGFzc3Vt
cHRpb25zIHRoYXQgd2VyZSBmZWQgaW50byB0aGUgY29tcGlsZXIgd2VyZSBpbnZhbGlkYXRlZAot
ICAgIC8vIGV2ZW4gYmVmb3JlIHdlIGZpbmlzaGVkIGNvbXBpbGluZy4gVGhpcyBtZWFucyB3ZSBz
aG91bGQgdHJ5IGFnYWluOiBpbiBzdWNoCi0gICAgLy8gY2FzZXMgdGhlIHByb2ZpbGluZyB3aWxs
IG5vdyBiZSB1cGRhdGVkIGFuZCB0aGUgbmV4dCBjb21waWxhdGlvbiB3b24ndAotICAgIC8vIGVu
Y291bnRlciB0aGUgc2FtZSBwcm9ibGVtLiBCdXQgaXQgZG9lcyBtZWFuIHRoYXQgd2Ugc2hvdWxk
IGV4ZXJjaXNlCi0gICAgLy8gZXhwb25lbnRpYWwgYmFjay1vZmYsIHRvIGdldCBldmVuIG1vcmUg
cHJvZmlsaW5nIHNvIHRoYXQgbmV3IHByb2ZpbGluZwotICAgIC8vIHBhdGhvbG9naWVzIGFyZW4n
dCBlbmNvdW50ZXJlZC4KLSAgICBDb21waWxhdGlvbkludmFsaWRhdGVkLAotICAgIAotICAgIC8v
IFRoZSBjb21waWxhdGlvbiBzdWNjZWVkZWQgYW5kIHRoZSBjb2RlIGJsb2NrIG5vdyBoYXMgSklU
Q29kZSBmb3IgdGhlIG5ld2x5Ci0gICAgLy8gY29tcGlsZWQgY29kZS4gSG93ZXZlciwgY29tcGls
YXRpb24gc3VjY2VzcyBkb2Vzbid0IG1lYW4gdGhhdCB0aGUgQ29kZUJsb2NrCi0gICAgLy8gd2ls
bCBleGVjdXRlIHlldDsgeW91IHR5cGljYWxseSBoYXZlIHRvIGluc3RhbGwgaXQgZmlyc3QsIHVu
bGVzcyB5b3UgcGxhbgotICAgIC8vIG9uIGludm9raW5nIGl0IG1hbnVhbGx5IChzb21ldGhpbmcg
dGhhdCAqY291bGQqIGJlIGRvbmUgZm9yIHNvbWUga2luZHMgb2YKLSAgICAvLyBPU1IgZW50cnkp
LgotICAgIENvbXBpbGF0aW9uU3VjY2Vzc2Z1bCwKLSAgICAKLSAgICAvLyBXZSBkZWNpZGVkIHRv
IGRvIHRoZSBjb21waWxhdGlvbiBhc3luY2hyb25vdXNseS4gVGhpcyBtZWFucyB0aGF0IHdlIGhh
dmVuJ3QKLSAgICAvLyB5ZXQgY29tcGlsZWQgdGhlIGNvZGUuIFRoaXMgb25seSBoYXBwZW5zIHdo
ZW4geW91IHBhc3MgYQotICAgIC8vIERlZmVycmVkQ29tcGlsYXRpb25DYWxsYmFjay4gVGhhdCBj
YWxsYmFjayB3aWxsIGdldCBjYWxsZWQgd2l0aCBzb21lCi0gICAgLy8gaW50ZXJlc3RpbmcgcmVz
dWx0LCBvbmNlIGNvbXBpbGF0aW9uIGNvbXBsZXRlcy4KLSAgICBDb21waWxhdGlvbkRlZmVycmVk
Ci19OworZW51bSBDb21waWxhdGlvblJlc3VsdCB7IENvbXBpbGF0aW9uRmFpbGVkLCBDb21waWxh
dGlvbkludmFsaWRhdGVkLCBDb21waWxhdGlvblN1Y2Nlc3NmdWwsIENvbXBpbGF0aW9uTm90TmVl
ZGVkLCBDb21waWxhdGlvbkRlZmVycmVkIH07CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuY3BwCmluZGV4IDlmMmY5MGVm
Mjk3MGY0MmFjMWZhOWI4YmQyMDZhODQ0ZmZiYmMzOWYuLjQ2ZTQ4ZTY1YmJlZDVhYTM3ZGExNDMz
NjRkNGU0OTEwMjM0ZTk5YmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0V4ZWN1dGFibGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4
ZWN1dGFibGUuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOSwg
MjAxMCwgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQg
KEMpIDIwMDksIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zMCw3ICszMCw5IEBACiAjaW5jbHVkZSAiQnl0ZWNv
ZGVHZW5lcmF0b3IuaCIKICNpbmNsdWRlICJDb2RlQmxvY2suaCIKICNpbmNsdWRlICJERkdEcml2
ZXIuaCIKKyNpbmNsdWRlICJFeGVjdXRpb25IYXJuZXNzLmgiCiAjaW5jbHVkZSAiSklULmgiCisj
aW5jbHVkZSAiSklURHJpdmVyLmgiCiAjaW5jbHVkZSAiT3BlcmF0aW9ucy5oIgogI2luY2x1ZGUg
IlBhcnNlci5oIgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KQEAgLTExMiwxOTAgKzExNCw2IEBA
IHZvaWQgU2NyaXB0RXhlY3V0YWJsZTo6ZGVzdHJveShKU0NlbGwqIGNlbGwpCiB9CiAjZW5kaWYK
IAotdm9pZCBTY3JpcHRFeGVjdXRhYmxlOjppbnN0YWxsQ29kZShDb2RlQmxvY2sqIGdlbmVyaWND
b2RlQmxvY2spCi17Ci0gICAgUkVMRUFTRV9BU1NFUlQoZ2VuZXJpY0NvZGVCbG9jay0+b3duZXJF
eGVjdXRhYmxlKCkgPT0gdGhpcyk7Ci0gICAgCi0gICAgVk0mIHZtID0gKmdlbmVyaWNDb2RlQmxv
Y2stPnZtKCk7Ci0gICAgCi0gICAgaWYgKHZtLm1fcGVyQnl0ZWNvZGVQcm9maWxlcikKLSAgICAg
ICAgdm0ubV9wZXJCeXRlY29kZVByb2ZpbGVyLT5lbnN1cmVCeXRlY29kZXNGb3IoZ2VuZXJpY0Nv
ZGVCbG9jayk7Ci0gICAgCi0gICAgQVNTRVJUKHZtLmhlYXAuaXNEZWZlcnJlZCgpKTsKLSAgICAK
LSAgICBpZiAoSklUQ29kZTo6aXNKSVQoZ2VuZXJpY0NvZGVCbG9jay0+aml0VHlwZSgpKSkgewot
ICAgICAgICB2bS5oZWFwLnJlcG9ydEV4dHJhTWVtb3J5Q29zdCgKLSAgICAgICAgICAgIHNpemVv
ZihDb2RlQmxvY2spICsgZ2VuZXJpY0NvZGVCbG9jay0+aml0Q29kZSgpLT5zaXplKCkpOwotICAg
IH0gZWxzZQotICAgICAgICB2bS5oZWFwLnJlcG9ydEV4dHJhTWVtb3J5Q29zdChzaXplb2YoQ29k
ZUJsb2NrKSk7Ci0gICAgCi0gICAgQ29kZVNwZWNpYWxpemF0aW9uS2luZCBraW5kID0gZ2VuZXJp
Y0NvZGVCbG9jay0+c3BlY2lhbGl6YXRpb25LaW5kKCk7Ci0gICAgCi0gICAgUmVmUHRyPENvZGVC
bG9jaz4gb2xkQ29kZUJsb2NrOwotICAgIAotICAgIHN3aXRjaCAoa2luZCkgewotICAgIGNhc2Ug
Q29kZUZvckNhbGw6Ci0gICAgICAgIG1faml0Q29kZUZvckNhbGwgPSBnZW5lcmljQ29kZUJsb2Nr
LT5qaXRDb2RlKCk7Ci0gICAgICAgIG1faml0Q29kZUZvckNhbGxXaXRoQXJpdHlDaGVjayA9IGdl
bmVyaWNDb2RlQmxvY2stPmppdENvZGVXaXRoQXJpdHlDaGVjaygpOwotICAgICAgICBtX251bVBh
cmFtZXRlcnNGb3JDYWxsID0gZ2VuZXJpY0NvZGVCbG9jay0+bnVtUGFyYW1ldGVycygpOwotICAg
ICAgICBicmVhazsKLSAgICBjYXNlIENvZGVGb3JDb25zdHJ1Y3Q6Ci0gICAgICAgIG1faml0Q29k
ZUZvckNvbnN0cnVjdCA9IGdlbmVyaWNDb2RlQmxvY2stPmppdENvZGUoKTsKLSAgICAgICAgbV9q
aXRDb2RlRm9yQ29uc3RydWN0V2l0aEFyaXR5Q2hlY2sgPSBnZW5lcmljQ29kZUJsb2NrLT5qaXRD
b2RlV2l0aEFyaXR5Q2hlY2soKTsKLSAgICAgICAgbV9udW1QYXJhbWV0ZXJzRm9yQ29uc3RydWN0
ID0gZ2VuZXJpY0NvZGVCbG9jay0+bnVtUGFyYW1ldGVycygpOwotICAgICAgICBicmVhazsKLSAg
ICB9Ci0gICAgCi0gICAgc3dpdGNoIChnZW5lcmljQ29kZUJsb2NrLT5jb2RlVHlwZSgpKSB7Ci0g
ICAgY2FzZSBHbG9iYWxDb2RlOiB7Ci0gICAgICAgIFByb2dyYW1FeGVjdXRhYmxlKiBleGVjdXRh
YmxlID0ganNDYXN0PFByb2dyYW1FeGVjdXRhYmxlKj4odGhpcyk7Ci0gICAgICAgIFByb2dyYW1D
b2RlQmxvY2sqIGNvZGVCbG9jayA9IHN0YXRpY19jYXN0PFByb2dyYW1Db2RlQmxvY2sqPihnZW5l
cmljQ29kZUJsb2NrKTsKLSAgICAgICAgCi0gICAgICAgIEFTU0VSVCghY29kZUJsb2NrLT5qaXRD
b2RlV2l0aEFyaXR5Q2hlY2soKSk7Ci0gICAgICAgIEFTU0VSVChraW5kID09IENvZGVGb3JDYWxs
KTsKLSAgICAgICAgCi0gICAgICAgIG9sZENvZGVCbG9jayA9IGV4ZWN1dGFibGUtPm1fcHJvZ3Jh
bUNvZGVCbG9jazsKLSAgICAgICAgZXhlY3V0YWJsZS0+bV9wcm9ncmFtQ29kZUJsb2NrID0gY29k
ZUJsb2NrOwotICAgICAgICBicmVhazsKLSAgICB9Ci0gICAgICAgIAotICAgIGNhc2UgRXZhbENv
ZGU6IHsKLSAgICAgICAgRXZhbEV4ZWN1dGFibGUqIGV4ZWN1dGFibGUgPSBqc0Nhc3Q8RXZhbEV4
ZWN1dGFibGUqPih0aGlzKTsKLSAgICAgICAgRXZhbENvZGVCbG9jayogY29kZUJsb2NrID0gc3Rh
dGljX2Nhc3Q8RXZhbENvZGVCbG9jayo+KGdlbmVyaWNDb2RlQmxvY2spOwotICAgICAgICAKLSAg
ICAgICAgQVNTRVJUKCFjb2RlQmxvY2stPmppdENvZGVXaXRoQXJpdHlDaGVjaygpKTsKLSAgICAg
ICAgQVNTRVJUKGtpbmQgPT0gQ29kZUZvckNhbGwpOwotICAgICAgICAKLSAgICAgICAgb2xkQ29k
ZUJsb2NrID0gZXhlY3V0YWJsZS0+bV9ldmFsQ29kZUJsb2NrOwotICAgICAgICBleGVjdXRhYmxl
LT5tX2V2YWxDb2RlQmxvY2sgPSBjb2RlQmxvY2s7Ci0gICAgICAgIGJyZWFrOwotICAgIH0KLSAg
ICAgICAgCi0gICAgY2FzZSBGdW5jdGlvbkNvZGU6IHsKLSAgICAgICAgRnVuY3Rpb25FeGVjdXRh
YmxlKiBleGVjdXRhYmxlID0ganNDYXN0PEZ1bmN0aW9uRXhlY3V0YWJsZSo+KHRoaXMpOwotICAg
ICAgICBGdW5jdGlvbkNvZGVCbG9jayogY29kZUJsb2NrID0gc3RhdGljX2Nhc3Q8RnVuY3Rpb25D
b2RlQmxvY2sqPihnZW5lcmljQ29kZUJsb2NrKTsKLSAgICAgICAgCi0gICAgICAgIHN3aXRjaCAo
a2luZCkgewotICAgICAgICBjYXNlIENvZGVGb3JDYWxsOgotICAgICAgICAgICAgb2xkQ29kZUJs
b2NrID0gZXhlY3V0YWJsZS0+bV9jb2RlQmxvY2tGb3JDYWxsOwotICAgICAgICAgICAgZXhlY3V0
YWJsZS0+bV9jb2RlQmxvY2tGb3JDYWxsID0gY29kZUJsb2NrOwotICAgICAgICAgICAgYnJlYWs7
Ci0gICAgICAgIGNhc2UgQ29kZUZvckNvbnN0cnVjdDoKLSAgICAgICAgICAgIG9sZENvZGVCbG9j
ayA9IGV4ZWN1dGFibGUtPm1fY29kZUJsb2NrRm9yQ29uc3RydWN0OwotICAgICAgICAgICAgZXhl
Y3V0YWJsZS0+bV9jb2RlQmxvY2tGb3JDb25zdHJ1Y3QgPSBjb2RlQmxvY2s7Ci0gICAgICAgICAg
ICBicmVhazsKLSAgICAgICAgfQotICAgICAgICBicmVhazsKLSAgICB9IH0KLQotICAgIGlmIChv
bGRDb2RlQmxvY2spCi0gICAgICAgIG9sZENvZGVCbG9jay0+dW5saW5rSW5jb21pbmdDYWxscygp
OwotfQotCi1QYXNzUmVmUHRyPENvZGVCbG9jaz4gU2NyaXB0RXhlY3V0YWJsZTo6bmV3Q29kZUJs
b2NrRm9yKAotICAgIENvZGVTcGVjaWFsaXphdGlvbktpbmQga2luZCwgSlNTY29wZSogc2NvcGUs
IEpTT2JqZWN0KiYgZXhjZXB0aW9uKQotewotICAgIFZNKiB2bSA9IHNjb3BlLT52bSgpOwotCi0g
ICAgQVNTRVJUKHZtLT5oZWFwLmlzRGVmZXJyZWQoKSk7Ci0gICAgCi0gICAgaWYgKGNsYXNzSW5m
bygpID09IEV2YWxFeGVjdXRhYmxlOjppbmZvKCkpIHsKLSAgICAgICAgRXZhbEV4ZWN1dGFibGUq
IGV4ZWN1dGFibGUgPSBqc0Nhc3Q8RXZhbEV4ZWN1dGFibGUqPih0aGlzKTsKLSAgICAgICAgUkVM
RUFTRV9BU1NFUlQoa2luZCA9PSBDb2RlRm9yQ2FsbCk7Ci0gICAgICAgIFJFTEVBU0VfQVNTRVJU
KCFleGVjdXRhYmxlLT5tX2V2YWxDb2RlQmxvY2spOwotICAgICAgICByZXR1cm4gYWRvcHRSZWYo
bmV3IEV2YWxDb2RlQmxvY2soCi0gICAgICAgICAgICBleGVjdXRhYmxlLCBleGVjdXRhYmxlLT5t
X3VubGlua2VkRXZhbENvZGVCbG9jay5nZXQoKSwgc2NvcGUsCi0gICAgICAgICAgICBleGVjdXRh
YmxlLT5zb3VyY2UoKS5wcm92aWRlcigpKSk7Ci0gICAgfQotICAgIAotICAgIGlmIChjbGFzc0lu
Zm8oKSA9PSBQcm9ncmFtRXhlY3V0YWJsZTo6aW5mbygpKSB7Ci0gICAgICAgIFByb2dyYW1FeGVj
dXRhYmxlKiBleGVjdXRhYmxlID0ganNDYXN0PFByb2dyYW1FeGVjdXRhYmxlKj4odGhpcyk7Ci0g
ICAgICAgIFJFTEVBU0VfQVNTRVJUKGtpbmQgPT0gQ29kZUZvckNhbGwpOwotICAgICAgICBSRUxF
QVNFX0FTU0VSVCghZXhlY3V0YWJsZS0+bV9wcm9ncmFtQ29kZUJsb2NrKTsKLSAgICAgICAgcmV0
dXJuIGFkb3B0UmVmKG5ldyBQcm9ncmFtQ29kZUJsb2NrKAotICAgICAgICAgICAgZXhlY3V0YWJs
ZSwgZXhlY3V0YWJsZS0+bV91bmxpbmtlZFByb2dyYW1Db2RlQmxvY2suZ2V0KCksIHNjb3BlLAot
ICAgICAgICAgICAgZXhlY3V0YWJsZS0+c291cmNlKCkucHJvdmlkZXIoKSwgZXhlY3V0YWJsZS0+
c291cmNlKCkuc3RhcnRDb2x1bW4oKSkpOwotICAgIH0KLSAgICAKLSAgICBSRUxFQVNFX0FTU0VS
VChjbGFzc0luZm8oKSA9PSBGdW5jdGlvbkV4ZWN1dGFibGU6OmluZm8oKSk7Ci0gICAgRnVuY3Rp
b25FeGVjdXRhYmxlKiBleGVjdXRhYmxlID0ganNDYXN0PEZ1bmN0aW9uRXhlY3V0YWJsZSo+KHRo
aXMpOwotICAgIFJFTEVBU0VfQVNTRVJUKCFleGVjdXRhYmxlLT5jb2RlQmxvY2tGb3Ioa2luZCkp
OwotICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBzY29wZS0+Z2xvYmFsT2JqZWN0
KCk7Ci0gICAgUGFyc2VyRXJyb3IgZXJyb3I7Ci0gICAgRGVidWdnZXJNb2RlIGRlYnVnZ2VyTW9k
ZSA9IGdsb2JhbE9iamVjdC0+aGFzRGVidWdnZXIoKSA/IERlYnVnZ2VyT24gOiBEZWJ1Z2dlck9m
ZjsKLSAgICBQcm9maWxlck1vZGUgcHJvZmlsZXJNb2RlID0gZ2xvYmFsT2JqZWN0LT5oYXNQcm9m
aWxlcigpID8gUHJvZmlsZXJPbiA6IFByb2ZpbGVyT2ZmOwotICAgIFVubGlua2VkRnVuY3Rpb25D
b2RlQmxvY2sqIHVubGlua2VkQ29kZUJsb2NrID0KLSAgICAgICAgZXhlY3V0YWJsZS0+bV91bmxp
bmtlZEV4ZWN1dGFibGUtPmNvZGVCbG9ja0ZvcigKLSAgICAgICAgICAgICp2bSwgZXhlY3V0YWJs
ZS0+bV9zb3VyY2UsIGtpbmQsIGRlYnVnZ2VyTW9kZSwgcHJvZmlsZXJNb2RlLCBlcnJvcik7Ci0g
ICAgaWYgKCF1bmxpbmtlZENvZGVCbG9jaykgewotICAgICAgICBleGNlcHRpb24gPSB2bS0+dGhy
b3dFeGNlcHRpb24oCi0gICAgICAgICAgICBnbG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMoKSwKLSAg
ICAgICAgICAgIGVycm9yLnRvRXJyb3JPYmplY3QoZ2xvYmFsT2JqZWN0LCBleGVjdXRhYmxlLT5t
X3NvdXJjZSkpOwotICAgICAgICByZXR1cm4gMDsKLSAgICB9Ci0gICAgCi0gICAgU291cmNlUHJv
dmlkZXIqIHByb3ZpZGVyID0gZXhlY3V0YWJsZS0+c291cmNlKCkucHJvdmlkZXIoKTsKLSAgICB1
bnNpZ25lZCBzb3VyY2VPZmZzZXQgPSBleGVjdXRhYmxlLT5zb3VyY2UoKS5zdGFydE9mZnNldCgp
OwotICAgIHVuc2lnbmVkIHN0YXJ0Q29sdW1uID0gZXhlY3V0YWJsZS0+c291cmNlKCkuc3RhcnRD
b2x1bW4oKTsKLQotICAgIHJldHVybiBhZG9wdFJlZihuZXcgRnVuY3Rpb25Db2RlQmxvY2soCi0g
ICAgICAgIGV4ZWN1dGFibGUsIHVubGlua2VkQ29kZUJsb2NrLCBzY29wZSwgcHJvdmlkZXIsIHNv
dXJjZU9mZnNldCwgc3RhcnRDb2x1bW4pKTsKLX0KLQotUGFzc1JlZlB0cjxDb2RlQmxvY2s+IFNj
cmlwdEV4ZWN1dGFibGU6Om5ld1JlcGxhY2VtZW50Q29kZUJsb2NrRm9yKAotICAgIENvZGVTcGVj
aWFsaXphdGlvbktpbmQga2luZCkKLXsKLSAgICBpZiAoY2xhc3NJbmZvKCkgPT0gRXZhbEV4ZWN1
dGFibGU6OmluZm8oKSkgewotICAgICAgICBSRUxFQVNFX0FTU0VSVChraW5kID09IENvZGVGb3JD
YWxsKTsKLSAgICAgICAgRXZhbEV4ZWN1dGFibGUqIGV4ZWN1dGFibGUgPSBqc0Nhc3Q8RXZhbEV4
ZWN1dGFibGUqPih0aGlzKTsKLSAgICAgICAgUmVmUHRyPEV2YWxDb2RlQmxvY2s+IHJlc3VsdCA9
IGFkb3B0UmVmKG5ldyBFdmFsQ29kZUJsb2NrKAotICAgICAgICAgICAgQ29kZUJsb2NrOjpDb3B5
UGFyc2VkQmxvY2ssICpleGVjdXRhYmxlLT5tX2V2YWxDb2RlQmxvY2spKTsKLSAgICAgICAgcmVz
dWx0LT5zZXRBbHRlcm5hdGl2ZShleGVjdXRhYmxlLT5tX2V2YWxDb2RlQmxvY2spOwotICAgICAg
ICByZXR1cm4gcmVzdWx0OwotICAgIH0KLSAgICAKLSAgICBpZiAoY2xhc3NJbmZvKCkgPT0gUHJv
Z3JhbUV4ZWN1dGFibGU6OmluZm8oKSkgewotICAgICAgICBSRUxFQVNFX0FTU0VSVChraW5kID09
IENvZGVGb3JDYWxsKTsKLSAgICAgICAgUHJvZ3JhbUV4ZWN1dGFibGUqIGV4ZWN1dGFibGUgPSBq
c0Nhc3Q8UHJvZ3JhbUV4ZWN1dGFibGUqPih0aGlzKTsKLSAgICAgICAgUmVmUHRyPFByb2dyYW1D
b2RlQmxvY2s+IHJlc3VsdCA9IGFkb3B0UmVmKG5ldyBQcm9ncmFtQ29kZUJsb2NrKAotICAgICAg
ICAgICAgQ29kZUJsb2NrOjpDb3B5UGFyc2VkQmxvY2ssICpleGVjdXRhYmxlLT5tX3Byb2dyYW1D
b2RlQmxvY2spKTsKLSAgICAgICAgcmVzdWx0LT5zZXRBbHRlcm5hdGl2ZShleGVjdXRhYmxlLT5t
X3Byb2dyYW1Db2RlQmxvY2spOwotICAgICAgICByZXR1cm4gcmVzdWx0OwotICAgIH0KLQotICAg
IFJFTEVBU0VfQVNTRVJUKGNsYXNzSW5mbygpID09IEZ1bmN0aW9uRXhlY3V0YWJsZTo6aW5mbygp
KTsKLSAgICBGdW5jdGlvbkV4ZWN1dGFibGUqIGV4ZWN1dGFibGUgPSBqc0Nhc3Q8RnVuY3Rpb25F
eGVjdXRhYmxlKj4odGhpcyk7Ci0gICAgUmVmUHRyPEZ1bmN0aW9uQ29kZUJsb2NrPiByZXN1bHQg
PSBhZG9wdFJlZihuZXcgRnVuY3Rpb25Db2RlQmxvY2soCi0gICAgICAgIENvZGVCbG9jazo6Q29w
eVBhcnNlZEJsb2NrLCAqZXhlY3V0YWJsZS0+Y29kZUJsb2NrRm9yKGtpbmQpKSk7Ci0gICAgcmVz
dWx0LT5zZXRBbHRlcm5hdGl2ZShleGVjdXRhYmxlLT5jb2RlQmxvY2tGb3Ioa2luZCkpOwotICAg
IHJldHVybiByZXN1bHQ7Ci19Ci0KLUpTT2JqZWN0KiBTY3JpcHRFeGVjdXRhYmxlOjpwcmVwYXJl
Rm9yRXhlY3V0aW9uSW1wbCgKLSAgICBFeGVjU3RhdGUqIGV4ZWMsIEpTU2NvcGUqIHNjb3BlLCBD
b2RlU3BlY2lhbGl6YXRpb25LaW5kIGtpbmQpCi17Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsK
LSAgICBEZWZlckdDIGRlZmVyR0Modm0uaGVhcCk7Ci0gICAgCi0gICAgSlNPYmplY3QqIGV4Y2Vw
dGlvbiA9IDA7Ci0gICAgUmVmUHRyPENvZGVCbG9jaz4gY29kZUJsb2NrID0gbmV3Q29kZUJsb2Nr
Rm9yKGtpbmQsIHNjb3BlLCBleGNlcHRpb24pOwotICAgIGlmICghY29kZUJsb2NrKSB7Ci0gICAg
ICAgIFJFTEVBU0VfQVNTRVJUKGV4Y2VwdGlvbik7Ci0gICAgICAgIHJldHVybiBleGNlcHRpb247
Ci0gICAgfQotICAgIAotICAgIEpJVENvZGU6OkpJVFR5cGUgaml0VHlwZTsKLSNpZiBFTkFCTEUo
TExJTlQpCi0gICAgaml0VHlwZSA9IEpJVENvZGU6OkludGVycHJldGVyVGh1bms7Ci0jZWxzZQot
ICAgIGppdFR5cGUgPSBKSVRDb2RlOjpCYXNlbGluZUpJVDsKLSNlbmRpZgotICAgIGNvZGVCbG9j
ay0+cHJlcGFyZUZvckV4ZWN1dGlvbihleGVjLCBqaXRUeXBlKTsKLQotICAgIGluc3RhbGxDb2Rl
KGNvZGVCbG9jay5nZXQoKSk7Ci0gICAgcmV0dXJuIDA7Ci19Ci0KIGNvbnN0IENsYXNzSW5mbyBF
dmFsRXhlY3V0YWJsZTo6c19pbmZvID0geyAiRXZhbEV4ZWN1dGFibGUiLCAmU2NyaXB0RXhlY3V0
YWJsZTo6c19pbmZvLCAwLCAwLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEV2YWxFeGVjdXRhYmxlKSB9
OwogCiBFdmFsRXhlY3V0YWJsZSogRXZhbEV4ZWN1dGFibGU6OmNyZWF0ZShFeGVjU3RhdGUqIGV4
ZWMsIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgYm9vbCBpc0luU3RyaWN0Q29udGV4dCkgCkBA
IC0zNTgsNiArMTc2LDI4IEBAIHZvaWQgRnVuY3Rpb25FeGVjdXRhYmxlOjpkZXN0cm95KEpTQ2Vs
bCogY2VsbCkKICAgICBzdGF0aWNfY2FzdDxGdW5jdGlvbkV4ZWN1dGFibGUqPihjZWxsKS0+RnVu
Y3Rpb25FeGVjdXRhYmxlOjp+RnVuY3Rpb25FeGVjdXRhYmxlKCk7CiB9CiAKKyNpZiBFTkFCTEUo
REZHX0pJVCkKK0pTT2JqZWN0KiBFdmFsRXhlY3V0YWJsZTo6Y29tcGlsZU9wdGltaXplZChFeGVj
U3RhdGUqIGV4ZWMsIEpTU2NvcGUqIHNjb3BlLCBDb21waWxhdGlvblJlc3VsdCYgcmVzdWx0LCB1
bnNpZ25lZCBieXRlY29kZUluZGV4KQoreworICAgIEFTU0VSVChleGVjLT52bSgpLmR5bmFtaWNH
bG9iYWxPYmplY3QpOworICAgIEFTU0VSVCghIW1fZXZhbENvZGVCbG9jayk7CisgICAgSlNPYmpl
Y3QqIGVycm9yID0gMDsKKyAgICBpZiAoIUpJVENvZGU6OmlzT3B0aW1pemluZ0pJVChtX2V2YWxD
b2RlQmxvY2stPmppdFR5cGUoKSkpCisgICAgICAgIGVycm9yID0gY29tcGlsZUludGVybmFsKGV4
ZWMsIHNjb3BlLCBKSVRDb2RlOjpuZXh0VGllckpJVChtX2V2YWxDb2RlQmxvY2stPmppdFR5cGUo
KSksICZyZXN1bHQsIGJ5dGVjb2RlSW5kZXgpOworICAgIGVsc2UKKyAgICAgICAgcmVzdWx0ID0g
Q29tcGlsYXRpb25Ob3ROZWVkZWQ7CisgICAgQVNTRVJUKCEhbV9ldmFsQ29kZUJsb2NrKTsKKyAg
ICByZXR1cm4gZXJyb3I7Cit9CisjZW5kaWYgLy8gRU5BQkxFKERGR19KSVQpCisKKyNpZiBFTkFC
TEUoSklUKQorQ29tcGlsYXRpb25SZXN1bHQgRXZhbEV4ZWN1dGFibGU6OmppdENvbXBpbGUoRXhl
Y1N0YXRlKiBleGVjKQoreworICAgIHJldHVybiBqaXRDb21waWxlSWZBcHByb3ByaWF0ZShleGVj
LCBtX2V2YWxDb2RlQmxvY2suZ2V0KCksIG1faml0Q29kZUZvckNhbGwsIEpJVENvZGU6OmJvdHRv
bVRpZXJKSVQoKSwgVUlOVF9NQVgsIEpJVENvbXBpbGF0aW9uQ2FuRmFpbCk7Cit9CisjZW5kaWYK
KwogaW5saW5lIGNvbnN0IGNoYXIqIHNhbXBsaW5nRGVzY3JpcHRpb24oSklUQ29kZTo6SklUVHlw
ZSBqaXRUeXBlKQogewogICAgIHN3aXRjaCAoaml0VHlwZSkgewpAQCAtMzc1LDYgKzIxNSwzOSBA
QCBpbmxpbmUgY29uc3QgY2hhciogc2FtcGxpbmdEZXNjcmlwdGlvbihKSVRDb2RlOjpKSVRUeXBl
IGppdFR5cGUpCiAgICAgfQogfQogCitKU09iamVjdCogRXZhbEV4ZWN1dGFibGU6OmNvbXBpbGVJ
bnRlcm5hbChFeGVjU3RhdGUqIGV4ZWMsIEpTU2NvcGUqIHNjb3BlLCBKSVRDb2RlOjpKSVRUeXBl
IGppdFR5cGUsIENvbXBpbGF0aW9uUmVzdWx0KiByZXN1bHQsIHVuc2lnbmVkIGJ5dGVjb2RlSW5k
ZXgpCit7CisgICAgU2FtcGxpbmdSZWdpb24gc2FtcGxpbmdSZWdpb24oc2FtcGxpbmdEZXNjcmlw
dGlvbihqaXRUeXBlKSk7CisgICAgCisgICAgaWYgKHJlc3VsdCkKKyAgICAgICAgKnJlc3VsdCA9
IENvbXBpbGF0aW9uRmFpbGVkOworICAgIAorICAgIFJlZlB0cjxFdmFsQ29kZUJsb2NrPiBuZXdD
b2RlQmxvY2s7CisgICAgCisgICAgaWYgKCEhbV9ldmFsQ29kZUJsb2NrKSB7CisgICAgICAgIG5l
d0NvZGVCbG9jayA9IGFkb3B0UmVmKG5ldyBFdmFsQ29kZUJsb2NrKENvZGVCbG9jazo6Q29weVBh
cnNlZEJsb2NrLCAqbV9ldmFsQ29kZUJsb2NrKSk7CisgICAgICAgIG5ld0NvZGVCbG9jay0+c2V0
QWx0ZXJuYXRpdmUoc3RhdGljX3BvaW50ZXJfY2FzdDxDb2RlQmxvY2s+KG1fZXZhbENvZGVCbG9j
aykpOworICAgIH0gZWxzZSB7CisgICAgICAgIG5ld0NvZGVCbG9jayA9IGFkb3B0UmVmKG5ldyBF
dmFsQ29kZUJsb2NrKHRoaXMsIG1fdW5saW5rZWRFdmFsQ29kZUJsb2NrLmdldCgpLCBzY29wZSwg
c291cmNlKCkucHJvdmlkZXIoKSkpOworICAgICAgICBBU1NFUlQoKGppdFR5cGUgPT0gSklUQ29k
ZTo6Ym90dG9tVGllckpJVCgpKSA9PSAhbV9ldmFsQ29kZUJsb2NrKTsKKyAgICB9CisKKyAgICBD
b21waWxhdGlvblJlc3VsdCB0aGVSZXN1bHQgPSBwcmVwYXJlRm9yRXhlY3V0aW9uKAorICAgICAg
ICBleGVjLCBtX2V2YWxDb2RlQmxvY2ssIG5ld0NvZGVCbG9jay5nZXQoKSwgbV9qaXRDb2RlRm9y
Q2FsbCwgaml0VHlwZSwgYnl0ZWNvZGVJbmRleCk7CisgICAgaWYgKHJlc3VsdCkKKyAgICAgICAg
KnJlc3VsdCA9IHRoZVJlc3VsdDsKKworICAgIHJldHVybiAwOworfQorCisjaWYgRU5BQkxFKERG
R19KSVQpCitDb21waWxhdGlvblJlc3VsdCBFdmFsRXhlY3V0YWJsZTo6cmVwbGFjZVdpdGhEZWZl
cnJlZE9wdGltaXplZENvZGUoUGFzc1JlZlB0cjxERkc6OlBsYW4+IHBsYW4pCit7CisgICAgcmV0
dXJuIEpTQzo6cmVwbGFjZVdpdGhEZWZlcnJlZE9wdGltaXplZENvZGUoCisgICAgICAgIHBsYW4s
IG1fZXZhbENvZGVCbG9jaywgbV9qaXRDb2RlRm9yQ2FsbCwgMCwgMCk7Cit9CisjZW5kaWYgLy8g
RU5BQkxFKERGR19KSVQpCisKICNpZiBFTkFCTEUoSklUKQogdm9pZCBFdmFsRXhlY3V0YWJsZTo6
amV0dGlzb25PcHRpbWl6ZWRDb2RlKFZNJiB2bSkKIHsKQEAgLTQyNSw2ICsyOTgsNjAgQEAgSlNP
YmplY3QqIFByb2dyYW1FeGVjdXRhYmxlOjpjaGVja1N5bnRheChFeGVjU3RhdGUqIGV4ZWMpCiAg
ICAgcmV0dXJuIGVycm9yLnRvRXJyb3JPYmplY3QobGV4aWNhbEdsb2JhbE9iamVjdCwgbV9zb3Vy
Y2UpOwogfQogCisjaWYgRU5BQkxFKERGR19KSVQpCitKU09iamVjdCogUHJvZ3JhbUV4ZWN1dGFi
bGU6OmNvbXBpbGVPcHRpbWl6ZWQoRXhlY1N0YXRlKiBleGVjLCBKU1Njb3BlKiBzY29wZSwgQ29t
cGlsYXRpb25SZXN1bHQmIHJlc3VsdCwgdW5zaWduZWQgYnl0ZWNvZGVJbmRleCkKK3sKKyAgICBS
RUxFQVNFX0FTU0VSVChleGVjLT52bSgpLmR5bmFtaWNHbG9iYWxPYmplY3QpOworICAgIEFTU0VS
VCghIW1fcHJvZ3JhbUNvZGVCbG9jayk7CisgICAgSlNPYmplY3QqIGVycm9yID0gMDsKKyAgICBp
ZiAoIUpJVENvZGU6OmlzT3B0aW1pemluZ0pJVChtX3Byb2dyYW1Db2RlQmxvY2stPmppdFR5cGUo
KSkpCisgICAgICAgIGVycm9yID0gY29tcGlsZUludGVybmFsKGV4ZWMsIHNjb3BlLCBKSVRDb2Rl
OjpuZXh0VGllckpJVChtX3Byb2dyYW1Db2RlQmxvY2stPmppdFR5cGUoKSksICZyZXN1bHQsIGJ5
dGVjb2RlSW5kZXgpOworICAgIGVsc2UKKyAgICAgICAgcmVzdWx0ID0gQ29tcGlsYXRpb25Ob3RO
ZWVkZWQ7CisgICAgQVNTRVJUKCEhbV9wcm9ncmFtQ29kZUJsb2NrKTsKKyAgICByZXR1cm4gZXJy
b3I7Cit9CisjZW5kaWYgLy8gRU5BQkxFKERGR19KSVQpCisKKyNpZiBFTkFCTEUoSklUKQorQ29t
cGlsYXRpb25SZXN1bHQgUHJvZ3JhbUV4ZWN1dGFibGU6OmppdENvbXBpbGUoRXhlY1N0YXRlKiBl
eGVjKQoreworICAgIHJldHVybiBqaXRDb21waWxlSWZBcHByb3ByaWF0ZShleGVjLCBtX3Byb2dy
YW1Db2RlQmxvY2suZ2V0KCksIG1faml0Q29kZUZvckNhbGwsIEpJVENvZGU6OmJvdHRvbVRpZXJK
SVQoKSwgVUlOVF9NQVgsIEpJVENvbXBpbGF0aW9uQ2FuRmFpbCk7Cit9CisjZW5kaWYKKworSlNP
YmplY3QqIFByb2dyYW1FeGVjdXRhYmxlOjpjb21waWxlSW50ZXJuYWwoRXhlY1N0YXRlKiBleGVj
LCBKU1Njb3BlKiBzY29wZSwgSklUQ29kZTo6SklUVHlwZSBqaXRUeXBlLCBDb21waWxhdGlvblJl
c3VsdCogcmVzdWx0LCB1bnNpZ25lZCBieXRlY29kZUluZGV4KQoreworICAgIFNhbXBsaW5nUmVn
aW9uIHNhbXBsaW5nUmVnaW9uKHNhbXBsaW5nRGVzY3JpcHRpb24oaml0VHlwZSkpOworICAgIAor
ICAgIGlmIChyZXN1bHQpCisgICAgICAgICpyZXN1bHQgPSBDb21waWxhdGlvbkZhaWxlZDsKKyAg
ICAKKyAgICBSZWZQdHI8UHJvZ3JhbUNvZGVCbG9jaz4gbmV3Q29kZUJsb2NrOworICAgIAorICAg
IGlmICghIW1fcHJvZ3JhbUNvZGVCbG9jaykgeworICAgICAgICBuZXdDb2RlQmxvY2sgPSBhZG9w
dFJlZihuZXcgUHJvZ3JhbUNvZGVCbG9jayhDb2RlQmxvY2s6OkNvcHlQYXJzZWRCbG9jaywgKm1f
cHJvZ3JhbUNvZGVCbG9jaykpOworICAgICAgICBuZXdDb2RlQmxvY2stPnNldEFsdGVybmF0aXZl
KHN0YXRpY19wb2ludGVyX2Nhc3Q8Q29kZUJsb2NrPihtX3Byb2dyYW1Db2RlQmxvY2spKTsKKyAg
ICB9IGVsc2UgeworICAgICAgICBuZXdDb2RlQmxvY2sgPSBhZG9wdFJlZihuZXcgUHJvZ3JhbUNv
ZGVCbG9jayh0aGlzLCBtX3VubGlua2VkUHJvZ3JhbUNvZGVCbG9jay5nZXQoKSwgc2NvcGUsIHNv
dXJjZSgpLnByb3ZpZGVyKCksIHNvdXJjZSgpLnN0YXJ0Q29sdW1uKCkpKTsKKyAgICB9CisKKyAg
ICBDb21waWxhdGlvblJlc3VsdCB0aGVSZXN1bHQgPSBwcmVwYXJlRm9yRXhlY3V0aW9uKAorICAg
ICAgICBleGVjLCBtX3Byb2dyYW1Db2RlQmxvY2ssIG5ld0NvZGVCbG9jay5nZXQoKSwgbV9qaXRD
b2RlRm9yQ2FsbCwgaml0VHlwZSwgYnl0ZWNvZGVJbmRleCk7CisgICAgaWYgKHJlc3VsdCkKKyAg
ICAgICAgKnJlc3VsdCA9IHRoZVJlc3VsdDsKKworICAgIHJldHVybiAwOworfQorCisjaWYgRU5B
QkxFKERGR19KSVQpCitDb21waWxhdGlvblJlc3VsdCBQcm9ncmFtRXhlY3V0YWJsZTo6cmVwbGFj
ZVdpdGhEZWZlcnJlZE9wdGltaXplZENvZGUoUGFzc1JlZlB0cjxERkc6OlBsYW4+IHBsYW4pCit7
CisgICAgcmV0dXJuIEpTQzo6cmVwbGFjZVdpdGhEZWZlcnJlZE9wdGltaXplZENvZGUoCisgICAg
ICAgIHBsYW4sIG1fcHJvZ3JhbUNvZGVCbG9jaywgbV9qaXRDb2RlRm9yQ2FsbCwgMCwgMCk7Cit9
CisjZW5kaWYgLy8gRU5BQkxFKERGR19KSVQpCisKICNpZiBFTkFCTEUoSklUKQogdm9pZCBQcm9n
cmFtRXhlY3V0YWJsZTo6amV0dGlzb25PcHRpbWl6ZWRDb2RlKFZNJiB2bSkKIHsKQEAgLTUxNyw2
ICs0NDQsMTQxIEBAIEZ1bmN0aW9uQ29kZUJsb2NrKiBGdW5jdGlvbkV4ZWN1dGFibGU6OmJhc2Vs
aW5lQ29kZUJsb2NrRm9yKENvZGVTcGVjaWFsaXphdGlvbktpCiAgICAgcmV0dXJuIHJlc3VsdDsK
IH0KIAorI2lmIEVOQUJMRShERkdfSklUKQorSlNPYmplY3QqIEZ1bmN0aW9uRXhlY3V0YWJsZTo6
Y29tcGlsZU9wdGltaXplZEZvckNhbGwoRXhlY1N0YXRlKiBleGVjLCBKU1Njb3BlKiBzY29wZSwg
Q29tcGlsYXRpb25SZXN1bHQmIHJlc3VsdCwgdW5zaWduZWQgYnl0ZWNvZGVJbmRleCkKK3sKKyAg
ICBSRUxFQVNFX0FTU0VSVChleGVjLT52bSgpLmR5bmFtaWNHbG9iYWxPYmplY3QpOworICAgIEFT
U0VSVCghIW1fY29kZUJsb2NrRm9yQ2FsbCk7CisgICAgSlNPYmplY3QqIGVycm9yID0gMDsKKyAg
ICBpZiAoIUpJVENvZGU6OmlzT3B0aW1pemluZ0pJVChtX2NvZGVCbG9ja0ZvckNhbGwtPmppdFR5
cGUoKSkpCisgICAgICAgIGVycm9yID0gY29tcGlsZUZvckNhbGxJbnRlcm5hbChleGVjLCBzY29w
ZSwgSklUQ29kZTo6bmV4dFRpZXJKSVQobV9jb2RlQmxvY2tGb3JDYWxsLT5qaXRUeXBlKCkpLCAm
cmVzdWx0LCBieXRlY29kZUluZGV4KTsKKyAgICBlbHNlCisgICAgICAgIHJlc3VsdCA9IENvbXBp
bGF0aW9uTm90TmVlZGVkOworICAgIEFTU0VSVCghIW1fY29kZUJsb2NrRm9yQ2FsbCk7CisgICAg
cmV0dXJuIGVycm9yOworfQorCitKU09iamVjdCogRnVuY3Rpb25FeGVjdXRhYmxlOjpjb21waWxl
T3B0aW1pemVkRm9yQ29uc3RydWN0KEV4ZWNTdGF0ZSogZXhlYywgSlNTY29wZSogc2NvcGUsIENv
bXBpbGF0aW9uUmVzdWx0JiByZXN1bHQsIHVuc2lnbmVkIGJ5dGVjb2RlSW5kZXgpCit7CisgICAg
UkVMRUFTRV9BU1NFUlQoZXhlYy0+dm0oKS5keW5hbWljR2xvYmFsT2JqZWN0KTsKKyAgICBBU1NF
UlQoISFtX2NvZGVCbG9ja0ZvckNvbnN0cnVjdCk7CisgICAgSlNPYmplY3QqIGVycm9yID0gMDsK
KyAgICBpZiAoIUpJVENvZGU6OmlzT3B0aW1pemluZ0pJVChtX2NvZGVCbG9ja0ZvckNvbnN0cnVj
dC0+aml0VHlwZSgpKSkKKyAgICAgICAgZXJyb3IgPSBjb21waWxlRm9yQ29uc3RydWN0SW50ZXJu
YWwoZXhlYywgc2NvcGUsIEpJVENvZGU6Om5leHRUaWVySklUKG1fY29kZUJsb2NrRm9yQ29uc3Ry
dWN0LT5qaXRUeXBlKCkpLCAmcmVzdWx0LCBieXRlY29kZUluZGV4KTsKKyAgICBlbHNlCisgICAg
ICAgIHJlc3VsdCA9IENvbXBpbGF0aW9uTm90TmVlZGVkOworICAgIEFTU0VSVCghIW1fY29kZUJs
b2NrRm9yQ29uc3RydWN0KTsKKyAgICByZXR1cm4gZXJyb3I7Cit9CisjZW5kaWYgLy8gRU5BQkxF
KERGR19KSVQpCisKKyNpZiBFTkFCTEUoSklUKQorQ29tcGlsYXRpb25SZXN1bHQgRnVuY3Rpb25F
eGVjdXRhYmxlOjpqaXRDb21waWxlRm9yQ2FsbChFeGVjU3RhdGUqIGV4ZWMpCit7CisgICAgcmV0
dXJuIGppdENvbXBpbGVGdW5jdGlvbklmQXBwcm9wcmlhdGUoZXhlYywgbV9jb2RlQmxvY2tGb3JD
YWxsLmdldCgpLCBtX2ppdENvZGVGb3JDYWxsLCBtX2ppdENvZGVGb3JDYWxsV2l0aEFyaXR5Q2hl
Y2ssIEpJVENvZGU6OmJvdHRvbVRpZXJKSVQoKSwgVUlOVF9NQVgsIEpJVENvbXBpbGF0aW9uQ2Fu
RmFpbCk7Cit9CisKK0NvbXBpbGF0aW9uUmVzdWx0IEZ1bmN0aW9uRXhlY3V0YWJsZTo6aml0Q29t
cGlsZUZvckNvbnN0cnVjdChFeGVjU3RhdGUqIGV4ZWMpCit7CisgICAgcmV0dXJuIGppdENvbXBp
bGVGdW5jdGlvbklmQXBwcm9wcmlhdGUoZXhlYywgbV9jb2RlQmxvY2tGb3JDb25zdHJ1Y3QuZ2V0
KCksIG1faml0Q29kZUZvckNvbnN0cnVjdCwgbV9qaXRDb2RlRm9yQ29uc3RydWN0V2l0aEFyaXR5
Q2hlY2ssIEpJVENvZGU6OmJvdHRvbVRpZXJKSVQoKSwgVUlOVF9NQVgsIEpJVENvbXBpbGF0aW9u
Q2FuRmFpbCk7Cit9CisjZW5kaWYKKworUGFzc1JlZlB0cjxGdW5jdGlvbkNvZGVCbG9jaz4gRnVu
Y3Rpb25FeGVjdXRhYmxlOjpwcm9kdWNlQ29kZUJsb2NrRm9yKEpTU2NvcGUqIHNjb3BlLCBDb2Rl
U3BlY2lhbGl6YXRpb25LaW5kIHNwZWNpYWxpemF0aW9uS2luZCwgSlNPYmplY3QqJiBleGNlcHRp
b24pCit7CisgICAgUmVmUHRyPEZ1bmN0aW9uQ29kZUJsb2NrPiBhbHRlcm5hdGl2ZSA9IGNvZGVC
bG9ja0ZvcihzcGVjaWFsaXphdGlvbktpbmQpOworICAgIAorICAgIGlmICghIWFsdGVybmF0aXZl
KSB7CisgICAgICAgIFJlZlB0cjxGdW5jdGlvbkNvZGVCbG9jaz4gcmVzdWx0ID0gYWRvcHRSZWYo
bmV3IEZ1bmN0aW9uQ29kZUJsb2NrKENvZGVCbG9jazo6Q29weVBhcnNlZEJsb2NrLCAqY29kZUJs
b2NrRm9yKHNwZWNpYWxpemF0aW9uS2luZCkpKTsKKyAgICAgICAgcmVzdWx0LT5zZXRBbHRlcm5h
dGl2ZShhbHRlcm5hdGl2ZSk7CisgICAgICAgIHJldHVybiByZXN1bHQucmVsZWFzZSgpOworICAg
IH0KKworICAgIFZNKiB2bSA9IHNjb3BlLT52bSgpOworICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QgPSBzY29wZS0+Z2xvYmFsT2JqZWN0KCk7CisgICAgUGFyc2VyRXJyb3IgZXJyb3I7
CisgICAgRGVidWdnZXJNb2RlIGRlYnVnZ2VyTW9kZSA9IGdsb2JhbE9iamVjdC0+aGFzRGVidWdn
ZXIoKSA/IERlYnVnZ2VyT24gOiBEZWJ1Z2dlck9mZjsKKyAgICBQcm9maWxlck1vZGUgcHJvZmls
ZXJNb2RlID0gZ2xvYmFsT2JqZWN0LT5oYXNQcm9maWxlcigpID8gUHJvZmlsZXJPbiA6IFByb2Zp
bGVyT2ZmOworICAgIFVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2sqIHVubGlua2VkQ29kZUJsb2Nr
ID0gbV91bmxpbmtlZEV4ZWN1dGFibGUtPmNvZGVCbG9ja0Zvcigqdm0sIG1fc291cmNlLCBzcGVj
aWFsaXphdGlvbktpbmQsIGRlYnVnZ2VyTW9kZSwgcHJvZmlsZXJNb2RlLCBlcnJvcik7CisgICAg
cmVjb3JkUGFyc2UobV91bmxpbmtlZEV4ZWN1dGFibGUtPmZlYXR1cmVzKCksIG1fdW5saW5rZWRF
eGVjdXRhYmxlLT5oYXNDYXB0dXJlZFZhcmlhYmxlcygpLCBsaW5lTm8oKSwgbGFzdExpbmUoKSwg
c3RhcnRDb2x1bW4oKSk7CisKKyAgICBpZiAoIXVubGlua2VkQ29kZUJsb2NrKSB7CisgICAgICAg
IGV4Y2VwdGlvbiA9IHZtLT50aHJvd0V4Y2VwdGlvbihnbG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMo
KSwgZXJyb3IudG9FcnJvck9iamVjdChnbG9iYWxPYmplY3QsIG1fc291cmNlKSk7CisgICAgICAg
IHJldHVybiAwOworICAgIH0KKworICAgIFNvdXJjZVByb3ZpZGVyKiBwcm92aWRlciA9IHNvdXJj
ZSgpLnByb3ZpZGVyKCk7CisgICAgdW5zaWduZWQgc291cmNlT2Zmc2V0ID0gc291cmNlKCkuc3Rh
cnRPZmZzZXQoKTsKKyAgICB1bnNpZ25lZCBzdGFydENvbHVtbiA9IHNvdXJjZSgpLnN0YXJ0Q29s
dW1uKCk7CisKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IEZ1bmN0aW9uQ29kZUJsb2NrKHRoaXMs
IHVubGlua2VkQ29kZUJsb2NrLCBzY29wZSwgcHJvdmlkZXIsIHNvdXJjZU9mZnNldCwgc3RhcnRD
b2x1bW4pKTsKK30KKworCitKU09iamVjdCogRnVuY3Rpb25FeGVjdXRhYmxlOjpjb21waWxlRm9y
Q2FsbEludGVybmFsKEV4ZWNTdGF0ZSogZXhlYywgSlNTY29wZSogc2NvcGUsIEpJVENvZGU6OkpJ
VFR5cGUgaml0VHlwZSwgQ29tcGlsYXRpb25SZXN1bHQqIHJlc3VsdCwgdW5zaWduZWQgYnl0ZWNv
ZGVJbmRleCkKK3sKKyAgICBTYW1wbGluZ1JlZ2lvbiBzYW1wbGluZ1JlZ2lvbihzYW1wbGluZ0Rl
c2NyaXB0aW9uKGppdFR5cGUpKTsKKyAgICAKKyAgICBpZiAocmVzdWx0KQorICAgICAgICAqcmVz
dWx0ID0gQ29tcGlsYXRpb25GYWlsZWQ7CisgICAgCisgICAgQVNTRVJUKChqaXRUeXBlID09IEpJ
VENvZGU6OmJvdHRvbVRpZXJKSVQoKSkgPT0gIW1fY29kZUJsb2NrRm9yQ2FsbCk7CisgICAgSlNP
YmplY3QqIGV4Y2VwdGlvbiA9IDA7CisgICAgCisgICAgUmVmUHRyPEZ1bmN0aW9uQ29kZUJsb2Nr
PiBuZXdDb2RlQmxvY2sgPSBwcm9kdWNlQ29kZUJsb2NrRm9yKHNjb3BlLCBDb2RlRm9yQ2FsbCwg
ZXhjZXB0aW9uKTsKKyAgICBpZiAoIW5ld0NvZGVCbG9jaykKKyAgICAgICAgcmV0dXJuIGV4Y2Vw
dGlvbjsKKyAgICAKKyAgICBDb21waWxhdGlvblJlc3VsdCB0aGVSZXN1bHQgPSBwcmVwYXJlRnVu
Y3Rpb25Gb3JFeGVjdXRpb24oCisgICAgICAgIGV4ZWMsIG1fY29kZUJsb2NrRm9yQ2FsbCwgbmV3
Q29kZUJsb2NrLmdldCgpLCBtX2ppdENvZGVGb3JDYWxsLAorICAgICAgICBtX2ppdENvZGVGb3JD
YWxsV2l0aEFyaXR5Q2hlY2ssIG1fbnVtUGFyYW1ldGVyc0ZvckNhbGwsIGppdFR5cGUsCisgICAg
ICAgIGJ5dGVjb2RlSW5kZXgsIENvZGVGb3JDYWxsKTsKKyAgICBpZiAocmVzdWx0KQorICAgICAg
ICAqcmVzdWx0ID0gdGhlUmVzdWx0OworICAgIHJldHVybiAwOworfQorCisjaWYgRU5BQkxFKERG
R19KSVQpCitDb21waWxhdGlvblJlc3VsdCBGdW5jdGlvbkV4ZWN1dGFibGU6OnJlcGxhY2VXaXRo
RGVmZXJyZWRPcHRpbWl6ZWRDb2RlRm9yQ2FsbChQYXNzUmVmUHRyPERGRzo6UGxhbj4gcGxhbikK
K3sKKyAgICByZXR1cm4gSlNDOjpyZXBsYWNlV2l0aERlZmVycmVkT3B0aW1pemVkQ29kZSgKKyAg
ICAgICAgcGxhbiwgbV9jb2RlQmxvY2tGb3JDYWxsLCBtX2ppdENvZGVGb3JDYWxsLCAmbV9qaXRD
b2RlRm9yQ2FsbFdpdGhBcml0eUNoZWNrLAorICAgICAgICAmbV9udW1QYXJhbWV0ZXJzRm9yQ2Fs
bCk7Cit9CisjZW5kaWYgLy8gRU5BQkxFKERGR19KSVQpCisKK0pTT2JqZWN0KiBGdW5jdGlvbkV4
ZWN1dGFibGU6OmNvbXBpbGVGb3JDb25zdHJ1Y3RJbnRlcm5hbChFeGVjU3RhdGUqIGV4ZWMsIEpT
U2NvcGUqIHNjb3BlLCBKSVRDb2RlOjpKSVRUeXBlIGppdFR5cGUsIENvbXBpbGF0aW9uUmVzdWx0
KiByZXN1bHQsIHVuc2lnbmVkIGJ5dGVjb2RlSW5kZXgpCit7CisgICAgU2FtcGxpbmdSZWdpb24g
c2FtcGxpbmdSZWdpb24oc2FtcGxpbmdEZXNjcmlwdGlvbihqaXRUeXBlKSk7CisgICAgCisgICAg
aWYgKHJlc3VsdCkKKyAgICAgICAgKnJlc3VsdCA9IENvbXBpbGF0aW9uRmFpbGVkOworICAgIAor
ICAgIEFTU0VSVCgoaml0VHlwZSA9PSBKSVRDb2RlOjpib3R0b21UaWVySklUKCkpID09ICFtX2Nv
ZGVCbG9ja0ZvckNvbnN0cnVjdCk7CisgICAgSlNPYmplY3QqIGV4Y2VwdGlvbiA9IDA7CisgICAg
UmVmUHRyPEZ1bmN0aW9uQ29kZUJsb2NrPiBuZXdDb2RlQmxvY2sgPSBwcm9kdWNlQ29kZUJsb2Nr
Rm9yKHNjb3BlLCBDb2RlRm9yQ29uc3RydWN0LCBleGNlcHRpb24pOworICAgIGlmICghbmV3Q29k
ZUJsb2NrKQorICAgICAgICByZXR1cm4gZXhjZXB0aW9uOworCisgICAgQ29tcGlsYXRpb25SZXN1
bHQgdGhlUmVzdWx0ID0gcHJlcGFyZUZ1bmN0aW9uRm9yRXhlY3V0aW9uKAorICAgICAgICBleGVj
LCBtX2NvZGVCbG9ja0ZvckNvbnN0cnVjdCwgbmV3Q29kZUJsb2NrLmdldCgpLCBtX2ppdENvZGVG
b3JDb25zdHJ1Y3QsCisgICAgICAgIG1faml0Q29kZUZvckNvbnN0cnVjdFdpdGhBcml0eUNoZWNr
LCBtX251bVBhcmFtZXRlcnNGb3JDb25zdHJ1Y3QsIGppdFR5cGUsCisgICAgICAgIGJ5dGVjb2Rl
SW5kZXgsIENvZGVGb3JDb25zdHJ1Y3QpOworICAgIGlmIChyZXN1bHQpCisgICAgICAgICpyZXN1
bHQgPSB0aGVSZXN1bHQ7CisKKyAgICByZXR1cm4gMDsKK30KKworI2lmIEVOQUJMRShERkdfSklU
KQorQ29tcGlsYXRpb25SZXN1bHQgRnVuY3Rpb25FeGVjdXRhYmxlOjpyZXBsYWNlV2l0aERlZmVy
cmVkT3B0aW1pemVkQ29kZUZvckNvbnN0cnVjdChQYXNzUmVmUHRyPERGRzo6UGxhbj4gcGxhbikK
K3sKKyAgICByZXR1cm4gSlNDOjpyZXBsYWNlV2l0aERlZmVycmVkT3B0aW1pemVkQ29kZSgKKyAg
ICAgICAgcGxhbiwgbV9jb2RlQmxvY2tGb3JDb25zdHJ1Y3QsIG1faml0Q29kZUZvckNvbnN0cnVj
dCwKKyAgICAgICAgJm1faml0Q29kZUZvckNvbnN0cnVjdFdpdGhBcml0eUNoZWNrLCAmbV9udW1Q
YXJhbWV0ZXJzRm9yQ29uc3RydWN0KTsKK30KKyNlbmRpZiAvLyBFTkFCTEUoREZHX0pJVCkKKwog
I2lmIEVOQUJMRShKSVQpCiB2b2lkIEZ1bmN0aW9uRXhlY3V0YWJsZTo6amV0dGlzb25PcHRpbWl6
ZWRDb2RlRm9yQ2FsbChWTSYgdm0pCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9FeGVjdXRhYmxlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9F
eGVjdXRhYmxlLmgKaW5kZXggYTAzMWJiNGI4MWQ4NWIwNjYxMzVhNjk1NTg1ODlhYzlkOTRlMTYz
OS4uNWQzMDZhYTIxZDVlNWRmNTIwODUzODE5ZGEyZGMxZWI4MTgyZTI1MSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuaApAQCAtMTYxLDIzICsxNjEsNiBAQCBw
dWJsaWM6CiAgICAgICAgIHJldHVybiBnZW5lcmF0ZWRKSVRDb2RlRm9yQ29uc3RydWN0V2l0aEFy
aXR5Q2hlY2soKTsKICAgICB9CiAgICAgICAgIAotICAgIHN0YXRpYyBwdHJkaWZmX3Qgb2Zmc2V0
T2ZKSVRDb2RlV2l0aEFyaXR5Q2hlY2tGb3IoQ29kZVNwZWNpYWxpemF0aW9uS2luZCBraW5kKQot
ICAgIHsKLSAgICAgICAgaWYgKGtpbmQgPT0gQ29kZUZvckNhbGwpCi0gICAgICAgICAgICByZXR1
cm4gT0JKRUNUX09GRlNFVE9GKEV4ZWN1dGFibGVCYXNlLCBtX2ppdENvZGVGb3JDYWxsV2l0aEFy
aXR5Q2hlY2spOwotICAgICAgICBBU1NFUlQoa2luZCA9PSBDb2RlRm9yQ29uc3RydWN0KTsKLSAg
ICAgICAgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihFeGVjdXRhYmxlQmFzZSwgbV9qaXRDb2RlRm9y
Q29uc3RydWN0V2l0aEFyaXR5Q2hlY2spOwotICAgIH0KLSAgICAgICAgCi0gICAgc3RhdGljIHB0
cmRpZmZfdCBvZmZzZXRPZk51bVBhcmFtZXRlcnNGb3IoQ29kZVNwZWNpYWxpemF0aW9uS2luZCBr
aW5kKQotICAgIHsKLSAgICAgICAgaWYgKGtpbmQgPT0gQ29kZUZvckNhbGwpCi0gICAgICAgICAg
ICByZXR1cm4gT0JKRUNUX09GRlNFVE9GKEV4ZWN1dGFibGVCYXNlLCBtX251bVBhcmFtZXRlcnNG
b3JDYWxsKTsKLSAgICAgICAgQVNTRVJUKGtpbmQgPT0gQ29kZUZvckNvbnN0cnVjdCk7Ci0gICAg
ICAgIHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoRXhlY3V0YWJsZUJhc2UsIG1fbnVtUGFyYW1ldGVy
c0ZvckNvbnN0cnVjdCk7Ci0gICAgfQotI2VuZGlmIC8vIEVOQUJMRShKSVQpCi0KICAgICBib29s
IGhhc0pJVENvZGVGb3JDYWxsKCkgY29uc3QKICAgICB7CiAgICAgICAgIHJldHVybiBtX251bVBh
cmFtZXRlcnNGb3JDYWxsID49IDA7CkBAIC0xOTYsNiArMTc5LDIzIEBAIHB1YmxpYzoKICAgICAg
ICAgcmV0dXJuIGhhc0pJVENvZGVGb3JDb25zdHJ1Y3QoKTsKICAgICB9CiAKKyAgICBzdGF0aWMg
cHRyZGlmZl90IG9mZnNldE9mSklUQ29kZVdpdGhBcml0eUNoZWNrRm9yKENvZGVTcGVjaWFsaXph
dGlvbktpbmQga2luZCkKKyAgICB7CisgICAgICAgIGlmIChraW5kID09IENvZGVGb3JDYWxsKQor
ICAgICAgICAgICAgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihFeGVjdXRhYmxlQmFzZSwgbV9qaXRD
b2RlRm9yQ2FsbFdpdGhBcml0eUNoZWNrKTsKKyAgICAgICAgQVNTRVJUKGtpbmQgPT0gQ29kZUZv
ckNvbnN0cnVjdCk7CisgICAgICAgIHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoRXhlY3V0YWJsZUJh
c2UsIG1faml0Q29kZUZvckNvbnN0cnVjdFdpdGhBcml0eUNoZWNrKTsKKyAgICB9CisgICAgICAg
IAorICAgIHN0YXRpYyBwdHJkaWZmX3Qgb2Zmc2V0T2ZOdW1QYXJhbWV0ZXJzRm9yKENvZGVTcGVj
aWFsaXphdGlvbktpbmQga2luZCkKKyAgICB7CisgICAgICAgIGlmIChraW5kID09IENvZGVGb3JD
YWxsKQorICAgICAgICAgICAgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihFeGVjdXRhYmxlQmFzZSwg
bV9udW1QYXJhbWV0ZXJzRm9yQ2FsbCk7CisgICAgICAgIEFTU0VSVChraW5kID09IENvZGVGb3JD
b25zdHJ1Y3QpOworICAgICAgICByZXR1cm4gT0JKRUNUX09GRlNFVE9GKEV4ZWN1dGFibGVCYXNl
LCBtX251bVBhcmFtZXRlcnNGb3JDb25zdHJ1Y3QpOworICAgIH0KKyNlbmRpZiAvLyBFTkFCTEUo
SklUKQorCiAgICAgLy8gSW50cmluc2ljcyBhcmUgb25seSBmb3IgY2FsbHMsIGN1cnJlbnRseS4K
ICAgICBJbnRyaW5zaWMgaW50cmluc2ljKCkgY29uc3Q7CiAgICAgICAgIApAQCAtMjQ0LDcgKzI0
NCw2IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIExMSW50OjpDTG9vcDo6Y2F0Y2hSb3V0aW5l
Rm9yKGNhdGNoUENGb3JJbnRlcnByZXRlcik7CiAjZW5kaWYKICAgICB9Ci0gICAgCiAjZW5kaWYg
Ly8gRU5BQkxFKEpJVCB8fCBFTkFCTEUoTExJTlRfQ19MT09QKQogCiBwcm90ZWN0ZWQ6CkBAIC00
MDMsMjAgKzQwMiw2IEBAIHB1YmxpYzoKICAgICAgICAgbV9zdGFydENvbHVtbiA9IHN0YXJ0Q29s
dW1uOwogICAgIH0KIAotICAgIHZvaWQgaW5zdGFsbENvZGUoQ29kZUJsb2NrKik7Ci0gICAgUGFz
c1JlZlB0cjxDb2RlQmxvY2s+IG5ld0NvZGVCbG9ja0ZvcihDb2RlU3BlY2lhbGl6YXRpb25LaW5k
LCBKU1Njb3BlKiwgSlNPYmplY3QqJiBleGNlcHRpb24pOwotICAgIFBhc3NSZWZQdHI8Q29kZUJs
b2NrPiBuZXdSZXBsYWNlbWVudENvZGVCbG9ja0ZvcihDb2RlU3BlY2lhbGl6YXRpb25LaW5kKTsK
LSAgICAKLSAgICBKU09iamVjdCogcHJlcGFyZUZvckV4ZWN1dGlvbihFeGVjU3RhdGUqIGV4ZWMs
IEpTU2NvcGUqIHNjb3BlLCBDb2RlU3BlY2lhbGl6YXRpb25LaW5kIGtpbmQpCi0gICAgewotICAg
ICAgICBpZiAoaGFzSklUQ29kZUZvcihraW5kKSkKLSAgICAgICAgICAgIHJldHVybiAwOwotICAg
ICAgICByZXR1cm4gcHJlcGFyZUZvckV4ZWN1dGlvbkltcGwoZXhlYywgc2NvcGUsIGtpbmQpOwot
ICAgIH0KLQotcHJpdmF0ZToKLSAgICBKU09iamVjdCogcHJlcGFyZUZvckV4ZWN1dGlvbkltcGwo
RXhlY1N0YXRlKiwgSlNTY29wZSosIENvZGVTcGVjaWFsaXphdGlvbktpbmQpOwotCiBwcm90ZWN0
ZWQ6CiAgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYgdm0pCiAgICAgewpAQCAtNDQ1LDggKzQz
MCwyNCBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgdm9pZCBkZXN0cm95KEpTQ2VsbCopOwogCisg
ICAgSlNPYmplY3QqIGNvbXBpbGUoRXhlY1N0YXRlKiBleGVjLCBKU1Njb3BlKiBzY29wZSkKKyAg
ICB7CisgICAgICAgIFJFTEVBU0VfQVNTRVJUKGV4ZWMtPnZtKCkuZHluYW1pY0dsb2JhbE9iamVj
dCk7CisgICAgICAgIEpTT2JqZWN0KiBlcnJvciA9IDA7CisgICAgICAgIGlmICghbV9ldmFsQ29k
ZUJsb2NrKQorICAgICAgICAgICAgZXJyb3IgPSBjb21waWxlSW50ZXJuYWwoZXhlYywgc2NvcGUs
IEpJVENvZGU6OmJvdHRvbVRpZXJKSVQoKSk7CisgICAgICAgIEFTU0VSVCghZXJyb3IgPT0gISFt
X2V2YWxDb2RlQmxvY2spOworICAgICAgICByZXR1cm4gZXJyb3I7CisgICAgfQorICAgICAgICAK
KyNpZiBFTkFCTEUoREZHX0pJVCkKKyAgICBKU09iamVjdCogY29tcGlsZU9wdGltaXplZChFeGVj
U3RhdGUqLCBKU1Njb3BlKiwgQ29tcGlsYXRpb25SZXN1bHQmLCB1bnNpZ25lZCBieXRlY29kZUlu
ZGV4KTsKKyAgICBDb21waWxhdGlvblJlc3VsdCByZXBsYWNlV2l0aERlZmVycmVkT3B0aW1pemVk
Q29kZShQYXNzUmVmUHRyPERGRzo6UGxhbj4pOworI2VuZGlmIC8vIEVOQUJMRShERkdfSklUKQor
ICAgICAgICAKICNpZiBFTkFCTEUoSklUKQogICAgIHZvaWQgamV0dGlzb25PcHRpbWl6ZWRDb2Rl
KFZNJik7CisgICAgQ29tcGlsYXRpb25SZXN1bHQgaml0Q29tcGlsZShFeGVjU3RhdGUqKTsKICNl
bmRpZgogCiAgICAgRXZhbENvZGVCbG9jayYgZ2VuZXJhdGVkQnl0ZWNvZGUoKQpAQCAtNDgwLDEw
ICs0ODEsMTAgQEAgcHVibGljOgogICAgIHVuc2lnbmVkIG51bWJlck9mRnVuY3Rpb25EZWNscygp
IHsgcmV0dXJuIG1fdW5saW5rZWRFdmFsQ29kZUJsb2NrLT5udW1iZXJPZkZ1bmN0aW9uRGVjbHMo
KTsgfQogCiBwcml2YXRlOgotICAgIGZyaWVuZCBjbGFzcyBTY3JpcHRFeGVjdXRhYmxlOwogICAg
IHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IE92ZXJyaWRlc1Zpc2l0Q2hp
bGRyZW4gfCBTY3JpcHRFeGVjdXRhYmxlOjpTdHJ1Y3R1cmVGbGFnczsKICAgICBFdmFsRXhlY3V0
YWJsZShFeGVjU3RhdGUqLCBjb25zdCBTb3VyY2VDb2RlJiwgYm9vbCk7CiAKKyAgICBKU09iamVj
dCogY29tcGlsZUludGVybmFsKEV4ZWNTdGF0ZSosIEpTU2NvcGUqLCBKSVRDb2RlOjpKSVRUeXBl
LCBDb21waWxhdGlvblJlc3VsdCogPSAwLCB1bnNpZ25lZCBieXRlY29kZUluZGV4ID0gVUlOVF9N
QVgpOwogICAgIHN0YXRpYyB2b2lkIHZpc2l0Q2hpbGRyZW4oSlNDZWxsKiwgU2xvdFZpc2l0b3Im
KTsKIAogICAgIFJlZlB0cjxFdmFsQ29kZUJsb2NrPiBtX2V2YWxDb2RlQmxvY2s7CkBAIC01MDcs
OCArNTA4LDI0IEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyB2b2lkIGRlc3Ryb3koSlNDZWxsKik7
CiAKKyAgICBKU09iamVjdCogY29tcGlsZShFeGVjU3RhdGUqIGV4ZWMsIEpTU2NvcGUqIHNjb3Bl
KQorICAgIHsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQoZXhlYy0+dm0oKS5keW5hbWljR2xvYmFs
T2JqZWN0KTsKKyAgICAgICAgSlNPYmplY3QqIGVycm9yID0gMDsKKyAgICAgICAgaWYgKCFtX3By
b2dyYW1Db2RlQmxvY2spCisgICAgICAgICAgICBlcnJvciA9IGNvbXBpbGVJbnRlcm5hbChleGVj
LCBzY29wZSwgSklUQ29kZTo6Ym90dG9tVGllckpJVCgpKTsKKyAgICAgICAgQVNTRVJUKCFlcnJv
ciA9PSAhIW1fcHJvZ3JhbUNvZGVCbG9jayk7CisgICAgICAgIHJldHVybiBlcnJvcjsKKyAgICB9
CisKKyNpZiBFTkFCTEUoREZHX0pJVCkKKyAgICBKU09iamVjdCogY29tcGlsZU9wdGltaXplZChF
eGVjU3RhdGUqLCBKU1Njb3BlKiwgQ29tcGlsYXRpb25SZXN1bHQmLCB1bnNpZ25lZCBieXRlY29k
ZUluZGV4KTsKKyAgICBDb21waWxhdGlvblJlc3VsdCByZXBsYWNlV2l0aERlZmVycmVkT3B0aW1p
emVkQ29kZShQYXNzUmVmUHRyPERGRzo6UGxhbj4pOworI2VuZGlmIC8vIEVOQUJMRShERkdfSklU
KQorICAgICAgICAKICNpZiBFTkFCTEUoSklUKQogICAgIHZvaWQgamV0dGlzb25PcHRpbWl6ZWRD
b2RlKFZNJik7CisgICAgQ29tcGlsYXRpb25SZXN1bHQgaml0Q29tcGlsZShFeGVjU3RhdGUqKTsK
ICNlbmRpZgogCiAgICAgUHJvZ3JhbUNvZGVCbG9jayYgZ2VuZXJhdGVkQnl0ZWNvZGUoKQpAQCAt
NTQwLDEyICs1NTcsMTEgQEAgcHVibGljOgogICAgIEV4ZWN1dGFibGVJbmZvIGV4ZWN1dGFibGVJ
bmZvKCkgY29uc3QgeyByZXR1cm4gRXhlY3V0YWJsZUluZm8obmVlZHNBY3RpdmF0aW9uKCksIHVz
ZXNFdmFsKCksIGlzU3RyaWN0TW9kZSgpLCBmYWxzZSk7IH0KIAogcHJpdmF0ZToKLSAgICBmcmll
bmQgY2xhc3MgU2NyaXB0RXhlY3V0YWJsZTsKLSAgICAKICAgICBzdGF0aWMgY29uc3QgdW5zaWdu
ZWQgU3RydWN0dXJlRmxhZ3MgPSBPdmVycmlkZXNWaXNpdENoaWxkcmVuIHwgU2NyaXB0RXhlY3V0
YWJsZTo6U3RydWN0dXJlRmxhZ3M7CiAKICAgICBQcm9ncmFtRXhlY3V0YWJsZShFeGVjU3RhdGUq
LCBjb25zdCBTb3VyY2VDb2RlJik7CiAKKyAgICBKU09iamVjdCogY29tcGlsZUludGVybmFsKEV4
ZWNTdGF0ZSosIEpTU2NvcGUqLCBKSVRDb2RlOjpKSVRUeXBlLCBDb21waWxhdGlvblJlc3VsdCog
PSAwLCB1bnNpZ25lZCBieXRlY29kZUluZGV4ID0gVUlOVF9NQVgpOwogICAgIHN0YXRpYyB2b2lk
IHZpc2l0Q2hpbGRyZW4oSlNDZWxsKiwgU2xvdFZpc2l0b3ImKTsKIAogICAgIFdyaXRlQmFycmll
cjxVbmxpbmtlZFByb2dyYW1Db2RlQmxvY2s+IG1fdW5saW5rZWRQcm9ncmFtQ29kZUJsb2NrOwpA
QCAtNTg0LDggKzYwMCwyNiBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiAqbV9jb2RlQmxvY2tG
b3JDb25zdHJ1Y3Q7CiAgICAgfQogICAgICAgICAKKyAgICBQYXNzUmVmUHRyPEZ1bmN0aW9uQ29k
ZUJsb2NrPiBwcm9kdWNlQ29kZUJsb2NrRm9yKEpTU2NvcGUqLCBDb2RlU3BlY2lhbGl6YXRpb25L
aW5kLCBKU09iamVjdComIGV4Y2VwdGlvbik7CisKKyAgICBKU09iamVjdCogY29tcGlsZUZvckNh
bGwoRXhlY1N0YXRlKiBleGVjLCBKU1Njb3BlKiBzY29wZSkKKyAgICB7CisgICAgICAgIFJFTEVB
U0VfQVNTRVJUKGV4ZWMtPnZtKCkuZHluYW1pY0dsb2JhbE9iamVjdCk7CisgICAgICAgIEpTT2Jq
ZWN0KiBlcnJvciA9IDA7CisgICAgICAgIGlmICghbV9jb2RlQmxvY2tGb3JDYWxsKQorICAgICAg
ICAgICAgZXJyb3IgPSBjb21waWxlRm9yQ2FsbEludGVybmFsKGV4ZWMsIHNjb3BlLCBKSVRDb2Rl
Ojpib3R0b21UaWVySklUKCkpOworICAgICAgICBBU1NFUlQoIWVycm9yID09ICEhbV9jb2RlQmxv
Y2tGb3JDYWxsKTsKKyAgICAgICAgcmV0dXJuIGVycm9yOworICAgIH0KKworI2lmIEVOQUJMRShE
RkdfSklUKQorICAgIEpTT2JqZWN0KiBjb21waWxlT3B0aW1pemVkRm9yQ2FsbChFeGVjU3RhdGUq
LCBKU1Njb3BlKiwgQ29tcGlsYXRpb25SZXN1bHQmLCB1bnNpZ25lZCBieXRlY29kZUluZGV4KTsK
KyAgICBDb21waWxhdGlvblJlc3VsdCByZXBsYWNlV2l0aERlZmVycmVkT3B0aW1pemVkQ29kZUZv
ckNhbGwoUGFzc1JlZlB0cjxERkc6OlBsYW4+KTsKKyNlbmRpZiAvLyBFTkFCTEUoREZHX0pJVCkK
KyAgICAgICAgCiAjaWYgRU5BQkxFKEpJVCkKICAgICB2b2lkIGpldHRpc29uT3B0aW1pemVkQ29k
ZUZvckNhbGwoVk0mKTsKKyAgICBDb21waWxhdGlvblJlc3VsdCBqaXRDb21waWxlRm9yQ2FsbChF
eGVjU3RhdGUqKTsKICNlbmRpZgogCiAgICAgYm9vbCBpc0dlbmVyYXRlZEZvckNhbGwoKSBjb25z
dApAQCAtNTk5LDggKzYzMywyNCBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiAqbV9jb2RlQmxv
Y2tGb3JDYWxsOwogICAgIH0KIAorICAgIEpTT2JqZWN0KiBjb21waWxlRm9yQ29uc3RydWN0KEV4
ZWNTdGF0ZSogZXhlYywgSlNTY29wZSogc2NvcGUpCisgICAgeworICAgICAgICBSRUxFQVNFX0FT
U0VSVChleGVjLT52bSgpLmR5bmFtaWNHbG9iYWxPYmplY3QpOworICAgICAgICBKU09iamVjdCog
ZXJyb3IgPSAwOworICAgICAgICBpZiAoIW1fY29kZUJsb2NrRm9yQ29uc3RydWN0KQorICAgICAg
ICAgICAgZXJyb3IgPSBjb21waWxlRm9yQ29uc3RydWN0SW50ZXJuYWwoZXhlYywgc2NvcGUsIEpJ
VENvZGU6OmJvdHRvbVRpZXJKSVQoKSk7CisgICAgICAgIEFTU0VSVCghZXJyb3IgPT0gISFtX2Nv
ZGVCbG9ja0ZvckNvbnN0cnVjdCk7CisgICAgICAgIHJldHVybiBlcnJvcjsKKyAgICB9CisKKyNp
ZiBFTkFCTEUoREZHX0pJVCkKKyAgICBKU09iamVjdCogY29tcGlsZU9wdGltaXplZEZvckNvbnN0
cnVjdChFeGVjU3RhdGUqLCBKU1Njb3BlKiwgQ29tcGlsYXRpb25SZXN1bHQmLCB1bnNpZ25lZCBi
eXRlY29kZUluZGV4KTsKKyAgICBDb21waWxhdGlvblJlc3VsdCByZXBsYWNlV2l0aERlZmVycmVk
T3B0aW1pemVkQ29kZUZvckNvbnN0cnVjdChQYXNzUmVmUHRyPERGRzo6UGxhbj4pOworI2VuZGlm
IC8vIEVOQUJMRShERkdfSklUKQorICAgICAgICAKICNpZiBFTkFCTEUoSklUKQogICAgIHZvaWQg
amV0dGlzb25PcHRpbWl6ZWRDb2RlRm9yQ29uc3RydWN0KFZNJik7CisgICAgQ29tcGlsYXRpb25S
ZXN1bHQgaml0Q29tcGlsZUZvckNvbnN0cnVjdChFeGVjU3RhdGUqKTsKICNlbmRpZgogCiAgICAg
Ym9vbCBpc0dlbmVyYXRlZEZvckNvbnN0cnVjdCgpIGNvbnN0CkBAIC02MTQsNiArNjY0LDM5IEBA
IHB1YmxpYzoKICAgICAgICAgcmV0dXJuICptX2NvZGVCbG9ja0ZvckNvbnN0cnVjdDsKICAgICB9
CiAgICAgICAgIAorICAgIEpTT2JqZWN0KiBjb21waWxlRm9yKEV4ZWNTdGF0ZSogZXhlYywgSlNT
Y29wZSogc2NvcGUsIENvZGVTcGVjaWFsaXphdGlvbktpbmQga2luZCkKKyAgICB7CisgICAgICAg
IEFTU0VSVChleGVjLT5jYWxsZWUoKSk7CisgICAgICAgIEFTU0VSVChleGVjLT5jYWxsZWUoKS0+
aW5oZXJpdHMoSlNGdW5jdGlvbjo6aW5mbygpKSk7CisgICAgICAgIEFTU0VSVChqc0Nhc3Q8SlNG
dW5jdGlvbio+KGV4ZWMtPmNhbGxlZSgpKS0+anNFeGVjdXRhYmxlKCkgPT0gdGhpcyk7CisKKyAg
ICAgICAgaWYgKGtpbmQgPT0gQ29kZUZvckNhbGwpCisgICAgICAgICAgICByZXR1cm4gY29tcGls
ZUZvckNhbGwoZXhlYywgc2NvcGUpOworICAgICAgICBBU1NFUlQoa2luZCA9PSBDb2RlRm9yQ29u
c3RydWN0KTsKKyAgICAgICAgcmV0dXJuIGNvbXBpbGVGb3JDb25zdHJ1Y3QoZXhlYywgc2NvcGUp
OworICAgIH0KKyAgICAgICAgCisjaWYgRU5BQkxFKERGR19KSVQpCisgICAgSlNPYmplY3QqIGNv
bXBpbGVPcHRpbWl6ZWRGb3IoRXhlY1N0YXRlKiBleGVjLCBKU1Njb3BlKiBzY29wZSwgQ29tcGls
YXRpb25SZXN1bHQmIHJlc3VsdCwgdW5zaWduZWQgYnl0ZWNvZGVJbmRleCwgQ29kZVNwZWNpYWxp
emF0aW9uS2luZCBraW5kKQorICAgIHsKKyAgICAgICAgQVNTRVJUKGV4ZWMtPmNhbGxlZSgpKTsK
KyAgICAgICAgQVNTRVJUKGV4ZWMtPmNhbGxlZSgpLT5pbmhlcml0cyhKU0Z1bmN0aW9uOjppbmZv
KCkpKTsKKyAgICAgICAgQVNTRVJUKGpzQ2FzdDxKU0Z1bmN0aW9uKj4oZXhlYy0+Y2FsbGVlKCkp
LT5qc0V4ZWN1dGFibGUoKSA9PSB0aGlzKTsKKyAgICAgICAgICAgIAorICAgICAgICBpZiAoa2lu
ZCA9PSBDb2RlRm9yQ2FsbCkKKyAgICAgICAgICAgIHJldHVybiBjb21waWxlT3B0aW1pemVkRm9y
Q2FsbChleGVjLCBzY29wZSwgcmVzdWx0LCBieXRlY29kZUluZGV4KTsKKyAgICAgICAgQVNTRVJU
KGtpbmQgPT0gQ29kZUZvckNvbnN0cnVjdCk7CisgICAgICAgIHJldHVybiBjb21waWxlT3B0aW1p
emVkRm9yQ29uc3RydWN0KGV4ZWMsIHNjb3BlLCByZXN1bHQsIGJ5dGVjb2RlSW5kZXgpOworICAg
IH0KKyAgICAgICAgCisgICAgQ29tcGlsYXRpb25SZXN1bHQgcmVwbGFjZVdpdGhEZWZlcnJlZE9w
dGltaXplZENvZGVGb3IoUGFzc1JlZlB0cjxERkc6OlBsYW4+IHBsYW4sIENvZGVTcGVjaWFsaXph
dGlvbktpbmQga2luZCkKKyAgICB7CisgICAgICAgIGlmIChraW5kID09IENvZGVGb3JDYWxsKQor
ICAgICAgICAgICAgcmV0dXJuIHJlcGxhY2VXaXRoRGVmZXJyZWRPcHRpbWl6ZWRDb2RlRm9yQ2Fs
bChwbGFuKTsKKyAgICAgICAgcmV0dXJuIHJlcGxhY2VXaXRoRGVmZXJyZWRPcHRpbWl6ZWRDb2Rl
Rm9yQ29uc3RydWN0KHBsYW4pOworICAgIH0KKyNlbmRpZiAvLyBFTkFCTEUoREZHX0pJVCkKKwog
I2lmIEVOQUJMRShKSVQpCiAgICAgdm9pZCBqZXR0aXNvbk9wdGltaXplZENvZGVGb3IoVk0mIHZt
LCBDb2RlU3BlY2lhbGl6YXRpb25LaW5kIGtpbmQpCiAgICAgewpAQCAtNjI0LDYgKzcwNywxNCBA
QCBwdWJsaWM6CiAgICAgICAgICAgICBqZXR0aXNvbk9wdGltaXplZENvZGVGb3JDb25zdHJ1Y3Qo
dm0pOwogICAgICAgICB9CiAgICAgfQorICAgICAgICAKKyAgICBDb21waWxhdGlvblJlc3VsdCBq
aXRDb21waWxlRm9yKEV4ZWNTdGF0ZSogZXhlYywgQ29kZVNwZWNpYWxpemF0aW9uS2luZCBraW5k
KQorICAgIHsKKyAgICAgICAgaWYgKGtpbmQgPT0gQ29kZUZvckNhbGwpCisgICAgICAgICAgICBy
ZXR1cm4gaml0Q29tcGlsZUZvckNhbGwoZXhlYyk7CisgICAgICAgIEFTU0VSVChraW5kID09IENv
ZGVGb3JDb25zdHJ1Y3QpOworICAgICAgICByZXR1cm4gaml0Q29tcGlsZUZvckNvbnN0cnVjdChl
eGVjKTsKKyAgICB9CiAjZW5kaWYKICAgICAgICAgCiAgICAgYm9vbCBpc0dlbmVyYXRlZEZvcihD
b2RlU3BlY2lhbGl6YXRpb25LaW5kIGtpbmQpCkBAIC02NzMsNiArNzY0LDkgQEAgcHVibGljOgog
cHJpdmF0ZToKICAgICBGdW5jdGlvbkV4ZWN1dGFibGUoVk0mLCBjb25zdCBTb3VyY2VDb2RlJiwg
VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqLCB1bnNpZ25lZCBmaXJzdExpbmUsIHVuc2lnbmVk
IGxhc3RMaW5lLCB1bnNpZ25lZCBzdGFydENvbHVtbik7CiAKKyAgICBKU09iamVjdCogY29tcGls
ZUZvckNhbGxJbnRlcm5hbChFeGVjU3RhdGUqLCBKU1Njb3BlKiwgSklUQ29kZTo6SklUVHlwZSwg
Q29tcGlsYXRpb25SZXN1bHQqID0gMCwgdW5zaWduZWQgYnl0ZWNvZGVJbmRleCA9IFVJTlRfTUFY
KTsKKyAgICBKU09iamVjdCogY29tcGlsZUZvckNvbnN0cnVjdEludGVybmFsKEV4ZWNTdGF0ZSos
IEpTU2NvcGUqLCBKSVRDb2RlOjpKSVRUeXBlLCBDb21waWxhdGlvblJlc3VsdCogPSAwLCB1bnNp
Z25lZCBieXRlY29kZUluZGV4ID0gVUlOVF9NQVgpOworICAgICAgICAKICAgICBSZWZQdHI8RnVu
Y3Rpb25Db2RlQmxvY2s+JiBjb2RlQmxvY2tGb3IoQ29kZVNwZWNpYWxpemF0aW9uS2luZCBraW5k
KQogICAgIHsKICAgICAgICAgaWYgKGtpbmQgPT0gQ29kZUZvckNhbGwpCkBAIC02OTIsOCArNzg2
LDYgQEAgcHJpdmF0ZToKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAotICAgIGZyaWVu
ZCBjbGFzcyBTY3JpcHRFeGVjdXRhYmxlOwotCiAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0
cnVjdHVyZUZsYWdzID0gT3ZlcnJpZGVzVmlzaXRDaGlsZHJlbiB8IFNjcmlwdEV4ZWN1dGFibGU6
OlN0cnVjdHVyZUZsYWdzOwogICAgIFdyaXRlQmFycmllcjxVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0
YWJsZT4gbV91bmxpbmtlZEV4ZWN1dGFibGU7CiAgICAgUmVmUHRyPEZ1bmN0aW9uQ29kZUJsb2Nr
PiBtX2NvZGVCbG9ja0ZvckNhbGw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9FeGVjdXRpb25IYXJuZXNzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9FeGVjdXRpb25IYXJuZXNzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjJkNzdlNTc4YmZiNDFmNGE3YTMzMTAy
NTFjNjM4OGEzYjA3ZDhjZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0V4ZWN1dGlvbkhhcm5lc3MuaApAQCAtMCwwICsxLDE2NyBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxMiwgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBg
QVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVmIEV4ZWN1
dGlvbkhhcm5lc3NfaAorI2RlZmluZSBFeGVjdXRpb25IYXJuZXNzX2gKKworI2luY2x1ZGUgPHd0
Zi9QbGF0Zm9ybS5oPgorCisjaW5jbHVkZSAiQ29tcGlsYXRpb25SZXN1bHQuaCIKKyNpbmNsdWRl
ICJERkdEcml2ZXIuaCIKKyNpbmNsdWRlICJERkdQbGFuLmgiCisjaW5jbHVkZSAiSklURHJpdmVy
LmgiCisjaW5jbHVkZSAiTExJbnRFbnRyeXBvaW50cy5oIgorCituYW1lc3BhY2UgSlNDIHsKKwor
dGVtcGxhdGU8dHlwZW5hbWUgQ29kZUJsb2NrVHlwZT4KK2lubGluZSBDb21waWxhdGlvblJlc3Vs
dCBwcmVwYXJlRm9yRXhlY3V0aW9uSW1wbCgKKyAgICBFeGVjU3RhdGUqIGV4ZWMsIENvZGVCbG9j
a1R5cGUqIGNvZGVCbG9jaywgUmVmUHRyPEpJVENvZGU+JiBqaXRDb2RlLAorICAgIEpJVENvZGU6
OkpJVFR5cGUgaml0VHlwZSwgdW5zaWduZWQgYnl0ZWNvZGVJbmRleCkKK3sKKyAgICBVTlVTRURf
UEFSQU0oYnl0ZWNvZGVJbmRleCk7CisjaWYgRU5BQkxFKExMSU5UKQorICAgIGlmIChKSVRDb2Rl
Ojppc0Jhc2VsaW5lQ29kZShqaXRUeXBlKSkgeworICAgICAgICAvLyBTdGFydCBvZmYgaW4gdGhl
IGxvdyBsZXZlbCBpbnRlcnByZXRlci4KKyAgICAgICAgTExJbnQ6OmdldEVudHJ5cG9pbnQoZXhl
Yy0+dm0oKSwgY29kZUJsb2NrLCBqaXRDb2RlKTsKKyAgICAgICAgaWYgKGV4ZWMtPnZtKCkubV9w
ZXJCeXRlY29kZVByb2ZpbGVyKQorICAgICAgICAgICAgZXhlYy0+dm0oKS5tX3BlckJ5dGVjb2Rl
UHJvZmlsZXItPmVuc3VyZUJ5dGVjb2Rlc0Zvcihjb2RlQmxvY2spOworICAgICAgICByZXR1cm4g
Q29tcGlsYXRpb25TdWNjZXNzZnVsOworICAgIH0KKyNlbmRpZiAvLyBFTkFCTEUoTExJTlQpCisj
aWYgRU5BQkxFKEpJVCkKKyAgICByZXR1cm4gaml0Q29tcGlsZUlmQXBwcm9wcmlhdGVJbXBsKAor
ICAgICAgICBleGVjLCBjb2RlQmxvY2ssIGppdENvZGUsIGppdFR5cGUsIGJ5dGVjb2RlSW5kZXgs
CisgICAgICAgIEpJVENvZGU6OmlzQmFzZWxpbmVDb2RlKGppdFR5cGUpID8gSklUQ29tcGlsYXRp
b25NdXN0U3VjY2VlZCA6IEpJVENvbXBpbGF0aW9uQ2FuRmFpbCk7CisjZW5kaWYKKyAgICBSRUxF
QVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBDb21waWxhdGlvbkZhaWxlZDsK
K30KKworaW5saW5lIENvbXBpbGF0aW9uUmVzdWx0IHByZXBhcmVGdW5jdGlvbkZvckV4ZWN1dGlv
bkltcGwoCisgICAgRXhlY1N0YXRlKiBleGVjLCBGdW5jdGlvbkNvZGVCbG9jayogY29kZUJsb2Nr
LCBSZWZQdHI8SklUQ29kZT4mIGppdENvZGUsCisgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyJiBq
aXRDb2RlV2l0aEFyaXR5Q2hlY2ssIEpJVENvZGU6OkpJVFR5cGUgaml0VHlwZSwKKyAgICB1bnNp
Z25lZCBieXRlY29kZUluZGV4LCBDb2RlU3BlY2lhbGl6YXRpb25LaW5kIGtpbmQpCit7CisgICAg
VU5VU0VEX1BBUkFNKGJ5dGVjb2RlSW5kZXgpOworICAgIFVOVVNFRF9QQVJBTShqaXRDb2RlV2l0
aEFyaXR5Q2hlY2spOworI2lmIEVOQUJMRShMTElOVCkKKyAgICBpZiAoSklUQ29kZTo6aXNCYXNl
bGluZUNvZGUoaml0VHlwZSkpIHsKKyAgICAgICAgLy8gU3RhcnQgb2ZmIGluIHRoZSBsb3cgbGV2
ZWwgaW50ZXJwcmV0ZXIuCisgICAgICAgIExMSW50OjpnZXRGdW5jdGlvbkVudHJ5cG9pbnQoZXhl
Yy0+dm0oKSwga2luZCwgaml0Q29kZSwgaml0Q29kZVdpdGhBcml0eUNoZWNrKTsKKyAgICAgICAg
aWYgKGV4ZWMtPnZtKCkubV9wZXJCeXRlY29kZVByb2ZpbGVyKQorICAgICAgICAgICAgZXhlYy0+
dm0oKS5tX3BlckJ5dGVjb2RlUHJvZmlsZXItPmVuc3VyZUJ5dGVjb2Rlc0Zvcihjb2RlQmxvY2sp
OworICAgICAgICByZXR1cm4gQ29tcGlsYXRpb25TdWNjZXNzZnVsOworICAgIH0KKyNlbHNlCisg
ICAgVU5VU0VEX1BBUkFNKGtpbmQpOworI2VuZGlmIC8vIEVOQUJMRShMTElOVCkKKyNpZiBFTkFC
TEUoSklUKQorICAgIHJldHVybiBqaXRDb21waWxlRnVuY3Rpb25JZkFwcHJvcHJpYXRlSW1wbCgK
KyAgICAgICAgZXhlYywgY29kZUJsb2NrLCBqaXRDb2RlLCBqaXRDb2RlV2l0aEFyaXR5Q2hlY2ss
IGppdFR5cGUsIGJ5dGVjb2RlSW5kZXgsCisgICAgICAgIEpJVENvZGU6OmlzQmFzZWxpbmVDb2Rl
KGppdFR5cGUpID8gSklUQ29tcGlsYXRpb25NdXN0U3VjY2VlZCA6IEpJVENvbXBpbGF0aW9uQ2Fu
RmFpbCk7CisjZW5kaWYKKyAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJl
dHVybiBDb21waWxhdGlvbkZhaWxlZDsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgQ29kZUJsb2Nr
VHlwZT4KK2lubGluZSBDb21waWxhdGlvblJlc3VsdCBpbnN0YWxsT3B0aW1pemVkQ29kZSgKKyAg
ICBDb21waWxhdGlvblJlc3VsdCByZXN1bHQsIFJlZlB0cjxDb2RlQmxvY2tUeXBlPiYgc2luaywg
Q29kZUJsb2NrVHlwZSogY29kZUJsb2NrLAorICAgIFBhc3NSZWZQdHI8SklUQ29kZT4gaml0Q29k
ZSwgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyIGppdENvZGVXaXRoQXJpdHlDaGVjaywKKyAgICBpbnQq
IG51bVBhcmFtZXRlcnMpCit7CisgICAgVU5VU0VEX1BBUkFNKGppdENvZGVXaXRoQXJpdHlDaGVj
ayk7CisgICAgaWYgKHJlc3VsdCAhPSBDb21waWxhdGlvblN1Y2Nlc3NmdWwpCisgICAgICAgIHJl
dHVybiByZXN1bHQ7CisgICAgCisjaWYgRU5BQkxFKEpJVCkKKyAgICBjb2RlQmxvY2stPnNldEpJ
VENvZGUoaml0Q29kZSwgaml0Q29kZVdpdGhBcml0eUNoZWNrKTsKKyNlbmRpZgorCisgICAgc2lu
ayA9IGNvZGVCbG9jazsKKyAgICAKKyAgICBpZiAobnVtUGFyYW1ldGVycykKKyAgICAgICAgKm51
bVBhcmFtZXRlcnMgPSBjb2RlQmxvY2stPm51bVBhcmFtZXRlcnMoKTsKKyAgICAKKyAgICBpZiAo
aml0Q29kZSkKKyAgICAgICAgY29kZUJsb2NrLT52bSgpLT5oZWFwLnJlcG9ydEV4dHJhTWVtb3J5
Q29zdChzaXplb2YoKmNvZGVCbG9jaykgKyBqaXRDb2RlLT5zaXplKCkpOworICAgIGVsc2UKKyAg
ICAgICAgY29kZUJsb2NrLT52bSgpLT5oZWFwLnJlcG9ydEV4dHJhTWVtb3J5Q29zdChzaXplb2Yo
KmNvZGVCbG9jaykpOworICAgIAorICAgIGlmIChzaW5rICE9IGNvZGVCbG9jaykgeworICAgICAg
ICAvLyBUaGlzIGNhbiBoYXBwZW4gaWYgd2UgR0MgYW5kIGRlY2lkZSB0aGF0IHRoZSBjb2RlIGlz
IGludmFsaWQuCisgICAgICAgIHJldHVybiBDb21waWxhdGlvbkludmFsaWRhdGVkOworICAgIH0K
KyAgICAKKyAgICByZXR1cm4gcmVzdWx0OworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBDb2RlQmxv
Y2tUeXBlPgoraW5saW5lIENvbXBpbGF0aW9uUmVzdWx0IHByZXBhcmVGb3JFeGVjdXRpb24oCisg
ICAgRXhlY1N0YXRlKiBleGVjLCBSZWZQdHI8Q29kZUJsb2NrVHlwZT4mIHNpbmssIENvZGVCbG9j
a1R5cGUqIGNvZGVCbG9jaywKKyAgICBSZWZQdHI8SklUQ29kZT4mIGppdENvZGUsIEpJVENvZGU6
OkpJVFR5cGUgaml0VHlwZSwgdW5zaWduZWQgYnl0ZWNvZGVJbmRleCkKK3sKKyAgICBDb21waWxh
dGlvblJlc3VsdCByZXN1bHQgPSBwcmVwYXJlRm9yRXhlY3V0aW9uSW1wbChleGVjLCBjb2RlQmxv
Y2ssIGppdENvZGUsIGppdFR5cGUsIGJ5dGVjb2RlSW5kZXgpOworICAgIHJldHVybiBpbnN0YWxs
T3B0aW1pemVkQ29kZShyZXN1bHQsIHNpbmssIGNvZGVCbG9jaywgaml0Q29kZSwgTWFjcm9Bc3Nl
bWJsZXJDb2RlUHRyKCksIDApOworfQorCitpbmxpbmUgQ29tcGlsYXRpb25SZXN1bHQgcHJlcGFy
ZUZ1bmN0aW9uRm9yRXhlY3V0aW9uKAorICAgIEV4ZWNTdGF0ZSogZXhlYywgUmVmUHRyPEZ1bmN0
aW9uQ29kZUJsb2NrPiYgc2luaywgRnVuY3Rpb25Db2RlQmxvY2sqIGNvZGVCbG9jaywKKyAgICBS
ZWZQdHI8SklUQ29kZT4mIGppdENvZGUsIE1hY3JvQXNzZW1ibGVyQ29kZVB0ciYgaml0Q29kZVdp
dGhBcml0eUNoZWNrLAorICAgIGludCYgbnVtUGFyYW1ldGVycywgSklUQ29kZTo6SklUVHlwZSBq
aXRUeXBlLCB1bnNpZ25lZCBieXRlY29kZUluZGV4LAorICAgIENvZGVTcGVjaWFsaXphdGlvbktp
bmQga2luZCkKK3sKKyAgICBDb21waWxhdGlvblJlc3VsdCByZXN1bHQgPSBwcmVwYXJlRnVuY3Rp
b25Gb3JFeGVjdXRpb25JbXBsKGV4ZWMsIGNvZGVCbG9jaywKKyAgICAgICAgaml0Q29kZSwgaml0
Q29kZVdpdGhBcml0eUNoZWNrLCBqaXRUeXBlLCBieXRlY29kZUluZGV4LCBraW5kKTsKKyAgICBy
ZXR1cm4gaW5zdGFsbE9wdGltaXplZENvZGUocmVzdWx0LCBzaW5rLCBjb2RlQmxvY2ssIGppdENv
ZGUsIGppdENvZGVXaXRoQXJpdHlDaGVjaywgJm51bVBhcmFtZXRlcnMpOworfQorCisjaWYgRU5B
QkxFKERGR19KSVQpCit0ZW1wbGF0ZTx0eXBlbmFtZSBDb2RlQmxvY2tUeXBlPgoraW5saW5lIENv
bXBpbGF0aW9uUmVzdWx0IHJlcGxhY2VXaXRoRGVmZXJyZWRPcHRpbWl6ZWRDb2RlKAorICAgIFBh
c3NSZWZQdHI8REZHOjpQbGFuPiBwYXNzZWRQbGFuLCBSZWZQdHI8Q29kZUJsb2NrVHlwZT4mIHNp
bmssIFJlZlB0cjxKSVRDb2RlPiYgaml0Q29kZSwKKyAgICBNYWNyb0Fzc2VtYmxlckNvZGVQdHIq
IGppdENvZGVXaXRoQXJpdHlDaGVjaywgaW50KiBudW1QYXJhbWV0ZXJzKQoreworICAgIFJlZlB0
cjxERkc6OlBsYW4+IHBsYW4gPSBwYXNzZWRQbGFuOworICAgIENvbXBpbGF0aW9uUmVzdWx0IHJl
c3VsdCA9IERGRzo6dHJ5RmluYWxpemVQbGFuKHBsYW4sIGppdENvZGUsIGppdENvZGVXaXRoQXJp
dHlDaGVjayk7CisgICAgaWYgKE9wdGlvbnM6OnZlcmJvc2VPU1IoKSkgeworICAgICAgICBkYXRh
TG9nKAorICAgICAgICAgICAgIkRlZmVycmVkIG9wdGltaXppbmcgY29tcGlsYXRpb24gIiwgKnBs
YW4tPmtleSgpLCAiIC0+ICIsICpwbGFuLT5jb2RlQmxvY2ssCisgICAgICAgICAgICAiIHJlc3Vs
dDogIiwgcmVzdWx0LCAiXG4iKTsKKyAgICB9CisgICAgaWYgKHJlc3VsdCA9PSBDb21waWxhdGlv
blN1Y2Nlc3NmdWwpCisgICAgICAgIHBsYW4tPmNvZGVCbG9jay0+YWx0ZXJuYXRpdmUoKS0+dW5s
aW5rSW5jb21pbmdDYWxscygpOworICAgIHJldHVybiBpbnN0YWxsT3B0aW1pemVkQ29kZSgKKyAg
ICAgICAgcmVzdWx0LCBzaW5rLCBzdGF0aWNfY2FzdDxDb2RlQmxvY2tUeXBlKj4ocGxhbi0+Y29k
ZUJsb2NrLmdldCgpKSwgaml0Q29kZSwKKyAgICAgICAgaml0Q29kZVdpdGhBcml0eUNoZWNrID8g
KmppdENvZGVXaXRoQXJpdHlDaGVjayA6IE1hY3JvQXNzZW1ibGVyQ29kZVB0cigpLAorICAgICAg
ICBudW1QYXJhbWV0ZXJzKTsKK30KKyNlbmRpZiAvLyBFTkFCTEUoREZHX0pJVCkKKworfSAvLyBu
YW1lc3BhY2UgSlNDCisKKyNlbmRpZiAvLyBFeGVjdXRpb25IYXJuZXNzX2gKKwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>