<?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>54839</bug_id>
          
          <creation_ts>2011-02-20 17:25:37 -0800</creation_ts>
          <short_desc>Remove PrototypeFunction, NativeFunctionWrapper, and GlobalEvalFunction.</short_desc>
          <delta_ts>2011-02-20 21:20:13 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Gavin Barraclough">barraclough</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>buildbot</cc>
    
    <cc>ggaren</cc>
    
    <cc>oliver</cc>
    
    <cc>sam</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>354337</commentid>
    <comment_count>0</comment_count>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2011-02-20 17:25:37 -0800</bug_when>
    <thetext>Historically, Native functions used to be represented by PrototypeFunctions, however since introducing call optimizations to the JIT this has used JSFunctions for host calls too. At the point this change was made, the interpreter continued to use PrototypeFunctions, however since fallback from the JIT to interpreter was introduced the interpreter has had to be able to run using host functions represented using JSFunctions - leading to an unnecessary and redundant divergence in behaviour between  interpreter only builds, and situations where the JIT has fallen back to interpreting.

NativeFunctionWrapper only existed to select between PrototypeFunction and JSFunction for wrappers for host functions, and as such can also be removed.

GlobalEvalFunction is a redundant wrapper that happens to be derived from PrototypeFunction. It existed to hold a reference to the global object - but since all functions how derive from JSObjectWithGlobalObject, this no longer requires an additional class to provide this functionality.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>354339</commentid>
    <comment_count>1</comment_count>
      <attachid>83111</attachid>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2011-02-20 17:27:42 -0800</bug_when>
    <thetext>Created attachment 83111
The patch

Tested with JIT, interpreter, &amp; both.  No performance impact on the interpreter.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>354340</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-02-20 17:30:41 -0800</bug_when>
    <thetext>Attachment 83111 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/JavaScriptCore/Android.mk&apos;, u&apos;Sourc...&quot; exit_code: 1

Source/JavaScriptCore/runtime/JSGlobalData.h:205:  The parameter name &quot;function&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Total errors found: 1 in 28 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>354351</commentid>
    <comment_count>3</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2011-02-20 17:53:33 -0800</bug_when>
    <thetext>Attachment 83111 did not build on win:
Build output: http://queues.webkit.org/results/7937727</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>354358</commentid>
    <comment_count>4</comment_count>
      <attachid>83113</attachid>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2011-02-20 18:29:50 -0800</bug_when>
    <thetext>Created attachment 83113
The patch, (with WebCore diffs this time!)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>354359</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-02-20 18:32:04 -0800</bug_when>
    <thetext>Attachment 83113 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/JavaScriptCore/Android.mk&apos;, u&apos;Sourc...&quot; exit_code: 1

Source/JavaScriptCore/runtime/JSGlobalData.h:205:  The parameter name &quot;function&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Total errors found: 1 in 32 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>354368</commentid>
    <comment_count>6</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2011-02-20 18:54:19 -0800</bug_when>
    <thetext>Attachment 83113 did not build on win:
Build output: http://queues.webkit.org/results/7935812</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>354381</commentid>
    <comment_count>7</comment_count>
      <attachid>83113</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2011-02-20 19:46:56 -0800</bug_when>
    <thetext>Comment on attachment 83113
The patch, (with WebCore diffs this time!)

r=me, but fix the style bot complaint before you land.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>354406</commentid>
    <comment_count>8</comment_count>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2011-02-20 21:20:05 -0800</bug_when>
    <thetext>Fixed in r79177</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>83111</attachid>
            <date>2011-02-20 17:27:42 -0800</date>
            <delta_ts>2011-02-20 18:29:50 -0800</delta_ts>
            <desc>The patch</desc>
            <filename>54839.patch</filename>
            <type>text/plain</type>
            <size>101267</size>
            <attacher name="Gavin Barraclough">barraclough</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gNzkxNTgpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsODYgQEAK
KzIwMTEtMDItMjAgIEdhdmluIEJhcnJhY2xvdWdoICA8YmFycmFjbG91Z2hAYXBwbGUuY29tPgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01NDgzOQorICAgICAgICBSZW1vdmUgUHJv
dG90eXBlRnVuY3Rpb24sIE5hdGl2ZUZ1bmN0aW9uV3JhcHBlciwgYW5kIEdsb2JhbEV2YWxGdW5j
dGlvbi4KKworICAgICAgICBIaXN0b3JpY2FsbHksIE5hdGl2ZSBmdW5jdGlvbnMgdXNlZCB0byBi
ZSByZXByZXNlbnRlZCBieSBQcm90b3R5cGVGdW5jdGlvbnMsIGhvd2V2ZXIKKyAgICAgICAgc2lu
Y2UgaW50cm9kdWNpbmcgY2FsbCBvcHRpbWl6YXRpb25zIHRvIHRoZSBKSVQgdGhpcyBoYXMgdXNl
ZCBKU0Z1bmN0aW9ucyBmb3IgaG9zdAorICAgICAgICBjYWxscyB0b28uIEF0IHRoZSBwb2ludCB0
aGlzIGNoYW5nZSB3YXMgbWFkZSwgdGhlIGludGVycHJldGVyIGNvbnRpbnVlZCB0byB1c2UKKyAg
ICAgICAgUHJvdG90eXBlRnVuY3Rpb25zLCBob3dldmVyIHNpbmNlIGZhbGxiYWNrIGZyb20gdGhl
IEpJVCB0byBpbnRlcnByZXRlciB3YXMgaW50cm9kdWNlZAorICAgICAgICB0aGUgaW50ZXJwcmV0
ZXIgaGFzIGhhZCB0byBiZSBhYmxlIHRvIHJ1biB1c2luZyBob3N0IGZ1bmN0aW9ucyByZXByZXNl
bnRlZCB1c2luZworICAgICAgICBKU0Z1bmN0aW9ucyAtIGxlYWRpbmcgdG8gYW4gdW5uZWNlc3Nh
cnkgYW5kIHJlZHVuZGFudCBkaXZlcmdlbmNlIGluIGJlaGF2aW91ciBiZXR3ZWVuIAorICAgICAg
ICBpbnRlcnByZXRlciBvbmx5IGJ1aWxkcywgYW5kIHNpdHVhdGlvbnMgd2hlcmUgdGhlIEpJVCBo
YXMgZmFsbGVuIGJhY2sgdG8gaW50ZXJwcmV0aW5nLgorCisgICAgICAgIE5hdGl2ZUZ1bmN0aW9u
V3JhcHBlciBvbmx5IGV4aXN0ZWQgdG8gc2VsZWN0IGJldHdlZW4gUHJvdG90eXBlRnVuY3Rpb24g
YW5kIEpTRnVuY3Rpb24KKyAgICAgICAgZm9yIHdyYXBwZXJzIGZvciBob3N0IGZ1bmN0aW9ucywg
YW5kIGFzIHN1Y2ggY2FuIGFsc28gYmUgcmVtb3ZlZC4KKworICAgICAgICBHbG9iYWxFdmFsRnVu
Y3Rpb24gaXMgYSByZWR1bmRhbnQgd3JhcHBlciB0aGF0IGhhcHBlbnMgdG8gYmUgZGVyaXZlZCBm
cm9tCisgICAgICAgIFByb3RvdHlwZUZ1bmN0aW9uLiBJdCBleGlzdGVkIHRvIGhvbGQgYSByZWZl
cmVuY2UgdG8gdGhlIGdsb2JhbCBvYmplY3QgLSBidXQgc2luY2UgYWxsCisgICAgICAgIGZ1bmN0
aW9ucyBob3cgZGVyaXZlIGZyb20gSlNPYmplY3RXaXRoR2xvYmFsT2JqZWN0LCB0aGlzIG5vIGxv
bmdlciByZXF1aXJlcyBhbgorICAgICAgICBhZGRpdGlvbmFsIGNsYXNzIHRvIHByb3ZpZGUgdGhp
cyBmdW5jdGlvbmFsaXR5LgorCisgICAgICAgICogSmF2YVNjcmlwdENvcmUuSlNWQUxVRTMyXzY0
b25seS5leHA6CisgICAgICAgICogSmF2YVNjcmlwdENvcmUuSlNWQUxVRTY0b25seS5leHA6Cisg
ICAgICAgICogSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAg
ICAgICAgIFJlbW92ZWQgc3ltYm9scyAvIHJlZmVyZW5jZXMgdG8gZmlsZXMuCisKKyAgICAgICAg
KiBydW50aW1lL0dsb2JhbEV2YWxGdW5jdGlvbi5jcHA6IFJlbW92ZWQuCisgICAgICAgICogcnVu
dGltZS9HbG9iYWxFdmFsRnVuY3Rpb24uaDogUmVtb3ZlZC4KKyAgICAgICAgKiBydW50aW1lL05h
dGl2ZUZ1bmN0aW9uV3JhcHBlci5oOiBSZW1vdmVkLgorICAgICAgICAqIHJ1bnRpbWUvUHJvdG90
eXBlRnVuY3Rpb24uY3BwOiBSZW1vdmVkLgorICAgICAgICAqIHJ1bnRpbWUvUHJvdG90eXBlRnVu
Y3Rpb24uaDogUmVtb3ZlZC4KKyAgICAgICAgICAgIFJlbW92ZWQuCisKKyAgICAgICAgKiBydW50
aW1lL0V4ZWN1dGFibGUuY3BwOgorICAgICAgICAoSlNDOjpOYXRpdmVFeGVjdXRhYmxlOjp+TmF0
aXZlRXhlY3V0YWJsZSk6CisgICAgICAgICogcnVudGltZS9FeGVjdXRhYmxlLmg6CisgICAgICAg
IChKU0M6Ok5hdGl2ZUV4ZWN1dGFibGU6OmNyZWF0ZSk6CisgICAgICAgIChKU0M6Ok5hdGl2ZUV4
ZWN1dGFibGU6Ok5hdGl2ZUV4ZWN1dGFibGUpOgorICAgICAgICAoSlNDOjpKU0Z1bmN0aW9uOjpu
YXRpdmVGdW5jdGlvbik6CisgICAgICAgICogcnVudGltZS9KU0Z1bmN0aW9uLmNwcDoKKyAgICAg
ICAgKEpTQzo6Y2FsbEhvc3RGdW5jdGlvbkFzQ29uc3RydWN0b3IpOgorICAgICAgICAoSlNDOjpK
U0Z1bmN0aW9uOjpKU0Z1bmN0aW9uKToKKyAgICAgICAgKEpTQzo6SlNGdW5jdGlvbjo6Z2V0Q2Fs
bERhdGEpOgorICAgICAgICAqIHJ1bnRpbWUvSlNGdW5jdGlvbi5oOgorICAgICAgICAqIHJ1bnRp
bWUvSlNHbG9iYWxEYXRhLmNwcDoKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxEYXRhOjpnZXRIb3N0
RnVuY3Rpb24pOgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxEYXRhLmg6CisgICAgICAgIChK
U0M6OkpTR2xvYmFsRGF0YTo6Z2V0Q1RJU3R1Yik6CisgICAgICAgICAgICBBZGRlZCBpbnRlcnBy
ZXRlci1mcmllbmRseSBjb25zdHJ1Y3RvcnMgZm9yIE5hdGl2ZUV4ZWN1dGFibGVzLgorCisgICAg
ICAgICogYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcDoKKyAgICAgICAgKiBpbnRl
cnByZXRlci9JbnRlcnByZXRlci5jcHA6CisgICAgICAgICogaml0L0pJVFN0dWJzLmNwcDoKKyAg
ICAgICAgKiBqc2MuY3BwOgorICAgICAgICAqIHJ1bnRpbWUvQXJyYXlDb25zdHJ1Y3Rvci5jcHA6
CisgICAgICAgICogcnVudGltZS9Cb29sZWFuUHJvdG90eXBlLmNwcDoKKyAgICAgICAgKiBydW50
aW1lL0Jvb2xlYW5Qcm90b3R5cGUuaDoKKyAgICAgICAgKiBydW50aW1lL0NhbGxEYXRhLmg6Cisg
ICAgICAgICogcnVudGltZS9EYXRlQ29uc3RydWN0b3IuY3BwOgorICAgICAgICAqIHJ1bnRpbWUv
RGF0ZUNvbnN0cnVjdG9yLmg6CisgICAgICAgICogcnVudGltZS9FcnJvclByb3RvdHlwZS5jcHA6
CisgICAgICAgICogcnVudGltZS9FcnJvclByb3RvdHlwZS5oOgorICAgICAgICAqIHJ1bnRpbWUv
RnVuY3Rpb25Qcm90b3R5cGUuY3BwOgorICAgICAgICAqIHJ1bnRpbWUvRnVuY3Rpb25Qcm90b3R5
cGUuaDoKKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcDoKKyAgICAgICAgKiBy
dW50aW1lL0pTR2xvYmFsT2JqZWN0Lmg6CisgICAgICAgICogcnVudGltZS9KU0dsb2JhbE9iamVj
dEZ1bmN0aW9ucy5jcHA6CisgICAgICAgICogcnVudGltZS9Mb29rdXAuY3BwOgorICAgICAgICAq
IHJ1bnRpbWUvTnVtYmVyUHJvdG90eXBlLmNwcDoKKyAgICAgICAgKiBydW50aW1lL051bWJlclBy
b3RvdHlwZS5oOgorICAgICAgICAqIHJ1bnRpbWUvT2JqZWN0Q29uc3RydWN0b3IuY3BwOgorICAg
ICAgICAqIHJ1bnRpbWUvT2JqZWN0Q29uc3RydWN0b3IuaDoKKyAgICAgICAgKiBydW50aW1lL09i
amVjdFByb3RvdHlwZS5jcHA6CisgICAgICAgICogcnVudGltZS9PYmplY3RQcm90b3R5cGUuaDoK
KyAgICAgICAgKiBydW50aW1lL1JlZ0V4cFByb3RvdHlwZS5jcHA6CisgICAgICAgICogcnVudGlt
ZS9SZWdFeHBQcm90b3R5cGUuaDoKKyAgICAgICAgKiBydW50aW1lL1NtYWxsU3RyaW5ncy5oOgor
ICAgICAgICAqIHJ1bnRpbWUvU3RyaW5nQ29uc3RydWN0b3IuY3BwOgorICAgICAgICAqIHJ1bnRp
bWUvU3RyaW5nQ29uc3RydWN0b3IuaDoKKyAgICAgICAgICAgIFJlbW92ZWQgdXNlIG9mIHJlZHVu
ZGFudCBjbGFzc2VzLgorCiAyMDExLTAyLTE5ICBMYXN6bG8gR29tYm9zICA8bGFzemxvLjEuZ29t
Ym9zQG5va2lhLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkIGJ1aWxkIGZpeCBmb3IgU3ltYmlh
bi4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BbmRyb2lkLm1rCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BbmRyb2lkLm1rCShyZXZpc2lvbiA3OTE0MCkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9BbmRyb2lkLm1rCSh3b3JraW5nIGNvcHkpCkBAIC05NCw3ICs5
NCw2IEBAIExPQ0FMX1NSQ19GSUxFUyA6PSBcCiAJcnVudGltZS9GdW5jdGlvblByb3RvdHlwZS5j
cHAgXAogCXJ1bnRpbWUvR0NIYW5kbGUuY3BwIFwKIAlydW50aW1lL0dldHRlclNldHRlci5jcHAg
XAotCXJ1bnRpbWUvR2xvYmFsRXZhbEZ1bmN0aW9uLmNwcCBcCiAJcnVudGltZS9JZGVudGlmaWVy
LmNwcCBcCiAJcnVudGltZS9Jbml0aWFsaXplVGhyZWFkaW5nLmNwcCBcCiAJcnVudGltZS9JbnRl
cm5hbEZ1bmN0aW9uLmNwcCBcCkBAIC0xMzcsNyArMTM2LDYgQEAgTE9DQUxfU1JDX0ZJTEVTIDo9
IFwKIAlydW50aW1lL1Byb3BlcnR5RGVzY3JpcHRvci5jcHAgXAogCXJ1bnRpbWUvUHJvcGVydHlO
YW1lQXJyYXkuY3BwIFwKIAlydW50aW1lL1Byb3BlcnR5U2xvdC5jcHAgXAotCXJ1bnRpbWUvUHJv
dG90eXBlRnVuY3Rpb24uY3BwIFwKIAlydW50aW1lL1JlZ0V4cC5jcHAgXAogCXJ1bnRpbWUvUmVn
RXhwQ29uc3RydWN0b3IuY3BwIFwKIAlydW50aW1lL1JlZ0V4cE9iamVjdC5jcHAgXApJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0Cj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAkocmV2aXNpb24gNzkxNDApCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQJKHdvcmtpbmcgY29weSkKQEAgLTEwNCw3
ICsxMDQsNiBAQCBTRVQoSmF2YVNjcmlwdENvcmVfU09VUkNFUwogICAgIHJ1bnRpbWUvRnVuY3Rp
b25Qcm90b3R5cGUuY3BwCiAgICAgcnVudGltZS9HQ0FjdGl2aXR5Q2FsbGJhY2suY3BwCiAgICAg
cnVudGltZS9HZXR0ZXJTZXR0ZXIuY3BwCi0gICAgcnVudGltZS9HbG9iYWxFdmFsRnVuY3Rpb24u
Y3BwCiAgICAgcnVudGltZS9JZGVudGlmaWVyLmNwcAogICAgIHJ1bnRpbWUvSW5pdGlhbGl6ZVRo
cmVhZGluZy5jcHAKICAgICBydW50aW1lL0ludGVybmFsRnVuY3Rpb24uY3BwCkBAIC0xNDgsNyAr
MTQ3LDYgQEAgU0VUKEphdmFTY3JpcHRDb3JlX1NPVVJDRVMKICAgICBydW50aW1lL1Byb3BlcnR5
RGVzY3JpcHRvci5jcHAKICAgICBydW50aW1lL1Byb3BlcnR5TmFtZUFycmF5LmNwcAogICAgIHJ1
bnRpbWUvUHJvcGVydHlTbG90LmNwcAotICAgIHJ1bnRpbWUvUHJvdG90eXBlRnVuY3Rpb24uY3Bw
CiAgICAgcnVudGltZS9SZWdFeHAuY3BwCiAgICAgcnVudGltZS9SZWdFeHBDYWNoZS5jcHAKICAg
ICBydW50aW1lL1JlZ0V4cENvbnN0cnVjdG9yLmNwcApJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL0dOVW1ha2VmaWxlLmFtCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9H
TlVtYWtlZmlsZS5hbQkocmV2aXNpb24gNzkxNDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
R05VbWFrZWZpbGUuYW0JKHdvcmtpbmcgY29weSkKQEAgLTI3Nyw4ICsyNzcsNiBAQCBqYXZhc2Ny
aXB0Y29yZV9zb3VyY2VzICs9IFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HQ0Fj
dGl2aXR5Q2FsbGJhY2suaCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2V0dGVy
U2V0dGVyLmNwcCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2V0dGVyU2V0dGVy
LmggXAotCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dsb2JhbEV2YWxGdW5jdGlvbi5j
cHAgXAotCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dsb2JhbEV2YWxGdW5jdGlvbi5o
IFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JZGVudGlmaWVyLmNwcCBcCiAJU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSWRlbnRpZmllci5oIFwKIAlTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9Jbml0aWFsaXplVGhyZWFkaW5nLmNwcCBcCkBAIC0zNDksNyArMzQ3
LDYgQEAgamF2YXNjcmlwdGNvcmVfc291cmNlcyArPSBcCiAJU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvTmF0aXZlRXJyb3JDb25zdHJ1Y3Rvci5oIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9OYXRpdmVFcnJvclByb3RvdHlwZS5jcHAgXAogCVNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL05hdGl2ZUVycm9yUHJvdG90eXBlLmggXAotCVNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL05hdGl2ZUZ1bmN0aW9uV3JhcHBlci5oIFwKIAlTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9OdW1iZXJDb25zdHJ1Y3Rvci5jcHAgXAogCVNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL051bWJlckNvbnN0cnVjdG9yLmggXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL051bWJlck9iamVjdC5jcHAgXApAQCAtMzcxLDggKzM2OCw2IEBAIGphdmFzY3Jp
cHRjb3JlX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3Bl
cnR5U2xvdC5jcHAgXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3BlcnR5U2xv
dC5oIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm90ZWN0LmggXAotCVNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3RvdHlwZUZ1bmN0aW9uLmNwcCBcCi0JU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvdG90eXBlRnVuY3Rpb24uaCBcCiAJU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvUHV0UHJvcGVydHlTbG90LmggXAogCVNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1JlZ0V4cENhY2hlLmNwcCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvUmVnRXhwQ2FjaGUuaCBcCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2
YVNjcmlwdENvcmUuSlNWQUxVRTMyXzY0b25seS5leHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLkpTVkFMVUUzMl82NG9ubHkuZXhwCShyZXZpc2lv
biA3OTE0MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5KU1ZBTFVF
MzJfNjRvbmx5LmV4cAkod29ya2luZyBjb3B5KQpAQCAtMSwyICsxIEBACiBfX1pOM0pTQzEwSlNG
dW5jdGlvbkMxRVBOU185RXhlY1N0YXRlRVBOU18xNEpTR2xvYmFsT2JqZWN0RU4zV1RGMTdOb25O
dWxsUGFzc1JlZlB0cklOU185U3RydWN0dXJlRUVFaVJLTlNfMTBJZGVudGlmaWVyRVBGeFMyX0UK
LV9fWk4zSlNDMTdQcm90b3R5cGVGdW5jdGlvbkMxRVBOU185RXhlY1N0YXRlRVBOU18xNEpTR2xv
YmFsT2JqZWN0RU4zV1RGMTdOb25OdWxsUGFzc1JlZlB0cklOU185U3RydWN0dXJlRUVFaVJLTlNf
MTBJZGVudGlmaWVyRVBGeFMyX0UKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2Ny
aXB0Q29yZS5KU1ZBTFVFNjRvbmx5LmV4cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvSmF2YVNjcmlwdENvcmUuSlNWQUxVRTY0b25seS5leHAJKHJldmlzaW9uIDc5MTQwKQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLkpTVkFMVUU2NG9ubHkuZXhw
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDIgKzEgQEAKIF9fWk4zSlNDMTBKU0Z1bmN0aW9uQzFFUE5T
XzlFeGVjU3RhdGVFUE5TXzE0SlNHbG9iYWxPYmplY3RFTjNXVEYxN05vbk51bGxQYXNzUmVmUHRy
SU5TXzlTdHJ1Y3R1cmVFRUVpUktOU18xMElkZW50aWZpZXJFUEZQdlMyX0UKLV9fWk4zSlNDMTdQ
cm90b3R5cGVGdW5jdGlvbkMxRVBOU185RXhlY1N0YXRlRVBOU18xNEpTR2xvYmFsT2JqZWN0RU4z
V1RGMTdOb25OdWxsUGFzc1JlZlB0cklOU185U3RydWN0dXJlRUVFaVJLTlNfMTBJZGVudGlmaWVy
RVBGUHZTMl9FCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUuZ3lw
aQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUuZ3lw
aQkocmV2aXNpb24gNzkxNDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENv
cmUuZ3lwaQkod29ya2luZyBjb3B5KQpAQCAtMjE5LDggKzIxOSw2IEBACiAgICAgICAgICAgICAn
cnVudGltZS9HQ0FjdGl2aXR5Q2FsbGJhY2suaCcsCiAgICAgICAgICAgICAncnVudGltZS9HZXR0
ZXJTZXR0ZXIuY3BwJywKICAgICAgICAgICAgICdydW50aW1lL0dldHRlclNldHRlci5oJywKLSAg
ICAgICAgICAgICdydW50aW1lL0dsb2JhbEV2YWxGdW5jdGlvbi5jcHAnLAotICAgICAgICAgICAg
J3J1bnRpbWUvR2xvYmFsRXZhbEZ1bmN0aW9uLmgnLAogICAgICAgICAgICAgJ3J1bnRpbWUvSWRl
bnRpZmllci5jcHAnLAogICAgICAgICAgICAgJ3J1bnRpbWUvSWRlbnRpZmllci5oJywKICAgICAg
ICAgICAgICdydW50aW1lL0luaXRpYWxpemVUaHJlYWRpbmcuY3BwJywKQEAgLTI4OCw3ICsyODYs
NiBAQAogICAgICAgICAgICAgJ3J1bnRpbWUvTmF0aXZlRXJyb3JDb25zdHJ1Y3Rvci5oJywKICAg
ICAgICAgICAgICdydW50aW1lL05hdGl2ZUVycm9yUHJvdG90eXBlLmNwcCcsCiAgICAgICAgICAg
ICAncnVudGltZS9OYXRpdmVFcnJvclByb3RvdHlwZS5oJywKLSAgICAgICAgICAgICdydW50aW1l
L05hdGl2ZUZ1bmN0aW9uV3JhcHBlci5oJywKICAgICAgICAgICAgICdydW50aW1lL051bWJlckNv
bnN0cnVjdG9yLmNwcCcsCiAgICAgICAgICAgICAncnVudGltZS9OdW1iZXJDb25zdHJ1Y3Rvci5o
JywKICAgICAgICAgICAgICdydW50aW1lL051bWJlck9iamVjdC5jcHAnLApAQCAtMzA5LDggKzMw
Niw2IEBACiAgICAgICAgICAgICAncnVudGltZS9Qcm9wZXJ0eVNsb3QuY3BwJywKICAgICAgICAg
ICAgICdydW50aW1lL1Byb3BlcnR5U2xvdC5oJywKICAgICAgICAgICAgICdydW50aW1lL1Byb3Rl
Y3QuaCcsCi0gICAgICAgICAgICAncnVudGltZS9Qcm90b3R5cGVGdW5jdGlvbi5jcHAnLAotICAg
ICAgICAgICAgJ3J1bnRpbWUvUHJvdG90eXBlRnVuY3Rpb24uaCcsCiAgICAgICAgICAgICAncnVu
dGltZS9QdXRQcm9wZXJ0eVNsb3QuaCcsCiAgICAgICAgICAgICAncnVudGltZS9SZWdFeHAuY3Bw
JywKICAgICAgICAgICAgICdydW50aW1lL1JlZ0V4cC5oJywKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5wcm8KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL0phdmFTY3JpcHRDb3JlLnBybwkocmV2aXNpb24gNzkxNDApCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUucHJvCSh3b3JraW5nIGNvcHkpCkBAIC0xNDksNyAr
MTQ5LDYgQEAgU09VUkNFUyArPSBcCiAgICAgcnVudGltZS9GdW5jdGlvblByb3RvdHlwZS5jcHAg
XAogICAgIHJ1bnRpbWUvR0NBY3Rpdml0eUNhbGxiYWNrLmNwcCBcCiAgICAgcnVudGltZS9HZXR0
ZXJTZXR0ZXIuY3BwIFwKLSAgICBydW50aW1lL0dsb2JhbEV2YWxGdW5jdGlvbi5jcHAgXAogICAg
IHJ1bnRpbWUvSWRlbnRpZmllci5jcHAgXAogICAgIHJ1bnRpbWUvSW5pdGlhbGl6ZVRocmVhZGlu
Zy5jcHAgXAogICAgIHJ1bnRpbWUvSW50ZXJuYWxGdW5jdGlvbi5jcHAgXApAQCAtMTk1LDcgKzE5
NCw2IEBAIFNPVVJDRVMgKz0gXAogICAgIHJ1bnRpbWUvUHJvcGVydHlEZXNjcmlwdG9yLmNwcCBc
CiAgICAgcnVudGltZS9Qcm9wZXJ0eU5hbWVBcnJheS5jcHAgXAogICAgIHJ1bnRpbWUvUHJvcGVy
dHlTbG90LmNwcCBcCi0gICAgcnVudGltZS9Qcm90b3R5cGVGdW5jdGlvbi5jcHAgXAogICAgIHJ1
bnRpbWUvUmVnRXhwQ29uc3RydWN0b3IuY3BwIFwKICAgICBydW50aW1lL1JlZ0V4cC5jcHAgXAog
ICAgIHJ1bnRpbWUvUmVnRXhwT2JqZWN0LmNwcCBcCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvanNjLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNwcAko
cmV2aXNpb24gNzkxNDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMzEsNyArMzEsNiBAQAogI2luY2x1ZGUgIkpTRnVuY3Rpb24uaCIKICNpbmNs
dWRlICJKU0xvY2suaCIKICNpbmNsdWRlICJKU1N0cmluZy5oIgotI2luY2x1ZGUgIlByb3RvdHlw
ZUZ1bmN0aW9uLmgiCiAjaW5jbHVkZSAiU2FtcGxpbmdUb29sLmgiCiAjaW5jbHVkZSA8bWF0aC5o
PgogI2luY2x1ZGUgPHN0ZGlvLmg+CkBAIC0xNTEsMTkgKzE1MCwxOSBAQCBBU1NFUlRfQ0xBU1Nf
RklUU19JTl9DRUxMKEdsb2JhbE9iamVjdCk7CiBHbG9iYWxPYmplY3Q6Okdsb2JhbE9iamVjdChj
b25zdCBWZWN0b3I8VVN0cmluZz4mIGFyZ3VtZW50cykKICAgICA6IEpTR2xvYmFsT2JqZWN0KCkK
IHsKLSAgICBwdXREaXJlY3RGdW5jdGlvbihnbG9iYWxFeGVjKCksIG5ldyAoZ2xvYmFsRXhlYygp
KSBOYXRpdmVGdW5jdGlvbldyYXBwZXIoZ2xvYmFsRXhlYygpLCB0aGlzLCBwcm90b3R5cGVGdW5j
dGlvblN0cnVjdHVyZSgpLCAxLCBJZGVudGlmaWVyKGdsb2JhbEV4ZWMoKSwgImRlYnVnIiksIGZ1
bmN0aW9uRGVidWcpKTsKLSAgICBwdXREaXJlY3RGdW5jdGlvbihnbG9iYWxFeGVjKCksIG5ldyAo
Z2xvYmFsRXhlYygpKSBOYXRpdmVGdW5jdGlvbldyYXBwZXIoZ2xvYmFsRXhlYygpLCB0aGlzLCBw
cm90b3R5cGVGdW5jdGlvblN0cnVjdHVyZSgpLCAxLCBJZGVudGlmaWVyKGdsb2JhbEV4ZWMoKSwg
InByaW50IiksIGZ1bmN0aW9uUHJpbnQpKTsKLSAgICBwdXREaXJlY3RGdW5jdGlvbihnbG9iYWxF
eGVjKCksIG5ldyAoZ2xvYmFsRXhlYygpKSBOYXRpdmVGdW5jdGlvbldyYXBwZXIoZ2xvYmFsRXhl
YygpLCB0aGlzLCBwcm90b3R5cGVGdW5jdGlvblN0cnVjdHVyZSgpLCAwLCBJZGVudGlmaWVyKGds
b2JhbEV4ZWMoKSwgInF1aXQiKSwgZnVuY3Rpb25RdWl0KSk7Ci0gICAgcHV0RGlyZWN0RnVuY3Rp
b24oZ2xvYmFsRXhlYygpLCBuZXcgKGdsb2JhbEV4ZWMoKSkgTmF0aXZlRnVuY3Rpb25XcmFwcGVy
KGdsb2JhbEV4ZWMoKSwgdGhpcywgcHJvdG90eXBlRnVuY3Rpb25TdHJ1Y3R1cmUoKSwgMCwgSWRl
bnRpZmllcihnbG9iYWxFeGVjKCksICJnYyIpLCBmdW5jdGlvbkdDKSk7Ci0gICAgcHV0RGlyZWN0
RnVuY3Rpb24oZ2xvYmFsRXhlYygpLCBuZXcgKGdsb2JhbEV4ZWMoKSkgTmF0aXZlRnVuY3Rpb25X
cmFwcGVyKGdsb2JhbEV4ZWMoKSwgdGhpcywgcHJvdG90eXBlRnVuY3Rpb25TdHJ1Y3R1cmUoKSwg
MSwgSWRlbnRpZmllcihnbG9iYWxFeGVjKCksICJ2ZXJzaW9uIiksIGZ1bmN0aW9uVmVyc2lvbikp
OwotICAgIHB1dERpcmVjdEZ1bmN0aW9uKGdsb2JhbEV4ZWMoKSwgbmV3IChnbG9iYWxFeGVjKCkp
IE5hdGl2ZUZ1bmN0aW9uV3JhcHBlcihnbG9iYWxFeGVjKCksIHRoaXMsIHByb3RvdHlwZUZ1bmN0
aW9uU3RydWN0dXJlKCksIDEsIElkZW50aWZpZXIoZ2xvYmFsRXhlYygpLCAicnVuIiksIGZ1bmN0
aW9uUnVuKSk7Ci0gICAgcHV0RGlyZWN0RnVuY3Rpb24oZ2xvYmFsRXhlYygpLCBuZXcgKGdsb2Jh
bEV4ZWMoKSkgTmF0aXZlRnVuY3Rpb25XcmFwcGVyKGdsb2JhbEV4ZWMoKSwgdGhpcywgcHJvdG90
eXBlRnVuY3Rpb25TdHJ1Y3R1cmUoKSwgMSwgSWRlbnRpZmllcihnbG9iYWxFeGVjKCksICJsb2Fk
IiksIGZ1bmN0aW9uTG9hZCkpOwotICAgIHB1dERpcmVjdEZ1bmN0aW9uKGdsb2JhbEV4ZWMoKSwg
bmV3IChnbG9iYWxFeGVjKCkpIE5hdGl2ZUZ1bmN0aW9uV3JhcHBlcihnbG9iYWxFeGVjKCksIHRo
aXMsIHByb3RvdHlwZUZ1bmN0aW9uU3RydWN0dXJlKCksIDEsIElkZW50aWZpZXIoZ2xvYmFsRXhl
YygpLCAiY2hlY2tTeW50YXgiKSwgZnVuY3Rpb25DaGVja1N5bnRheCkpOwotICAgIHB1dERpcmVj
dEZ1bmN0aW9uKGdsb2JhbEV4ZWMoKSwgbmV3IChnbG9iYWxFeGVjKCkpIE5hdGl2ZUZ1bmN0aW9u
V3JhcHBlcihnbG9iYWxFeGVjKCksIHRoaXMsIHByb3RvdHlwZUZ1bmN0aW9uU3RydWN0dXJlKCks
IDAsIElkZW50aWZpZXIoZ2xvYmFsRXhlYygpLCAicmVhZGxpbmUiKSwgZnVuY3Rpb25SZWFkbGlu
ZSkpOworICAgIHB1dERpcmVjdEZ1bmN0aW9uKGdsb2JhbEV4ZWMoKSwgbmV3IChnbG9iYWxFeGVj
KCkpIEpTRnVuY3Rpb24oZ2xvYmFsRXhlYygpLCB0aGlzLCBmdW5jdGlvblN0cnVjdHVyZSgpLCAx
LCBJZGVudGlmaWVyKGdsb2JhbEV4ZWMoKSwgImRlYnVnIiksIGZ1bmN0aW9uRGVidWcpKTsKKyAg
ICBwdXREaXJlY3RGdW5jdGlvbihnbG9iYWxFeGVjKCksIG5ldyAoZ2xvYmFsRXhlYygpKSBKU0Z1
bmN0aW9uKGdsb2JhbEV4ZWMoKSwgdGhpcywgZnVuY3Rpb25TdHJ1Y3R1cmUoKSwgMSwgSWRlbnRp
ZmllcihnbG9iYWxFeGVjKCksICJwcmludCIpLCBmdW5jdGlvblByaW50KSk7CisgICAgcHV0RGly
ZWN0RnVuY3Rpb24oZ2xvYmFsRXhlYygpLCBuZXcgKGdsb2JhbEV4ZWMoKSkgSlNGdW5jdGlvbihn
bG9iYWxFeGVjKCksIHRoaXMsIGZ1bmN0aW9uU3RydWN0dXJlKCksIDAsIElkZW50aWZpZXIoZ2xv
YmFsRXhlYygpLCAicXVpdCIpLCBmdW5jdGlvblF1aXQpKTsKKyAgICBwdXREaXJlY3RGdW5jdGlv
bihnbG9iYWxFeGVjKCksIG5ldyAoZ2xvYmFsRXhlYygpKSBKU0Z1bmN0aW9uKGdsb2JhbEV4ZWMo
KSwgdGhpcywgZnVuY3Rpb25TdHJ1Y3R1cmUoKSwgMCwgSWRlbnRpZmllcihnbG9iYWxFeGVjKCks
ICJnYyIpLCBmdW5jdGlvbkdDKSk7CisgICAgcHV0RGlyZWN0RnVuY3Rpb24oZ2xvYmFsRXhlYygp
LCBuZXcgKGdsb2JhbEV4ZWMoKSkgSlNGdW5jdGlvbihnbG9iYWxFeGVjKCksIHRoaXMsIGZ1bmN0
aW9uU3RydWN0dXJlKCksIDEsIElkZW50aWZpZXIoZ2xvYmFsRXhlYygpLCAidmVyc2lvbiIpLCBm
dW5jdGlvblZlcnNpb24pKTsKKyAgICBwdXREaXJlY3RGdW5jdGlvbihnbG9iYWxFeGVjKCksIG5l
dyAoZ2xvYmFsRXhlYygpKSBKU0Z1bmN0aW9uKGdsb2JhbEV4ZWMoKSwgdGhpcywgZnVuY3Rpb25T
dHJ1Y3R1cmUoKSwgMSwgSWRlbnRpZmllcihnbG9iYWxFeGVjKCksICJydW4iKSwgZnVuY3Rpb25S
dW4pKTsKKyAgICBwdXREaXJlY3RGdW5jdGlvbihnbG9iYWxFeGVjKCksIG5ldyAoZ2xvYmFsRXhl
YygpKSBKU0Z1bmN0aW9uKGdsb2JhbEV4ZWMoKSwgdGhpcywgZnVuY3Rpb25TdHJ1Y3R1cmUoKSwg
MSwgSWRlbnRpZmllcihnbG9iYWxFeGVjKCksICJsb2FkIiksIGZ1bmN0aW9uTG9hZCkpOworICAg
IHB1dERpcmVjdEZ1bmN0aW9uKGdsb2JhbEV4ZWMoKSwgbmV3IChnbG9iYWxFeGVjKCkpIEpTRnVu
Y3Rpb24oZ2xvYmFsRXhlYygpLCB0aGlzLCBmdW5jdGlvblN0cnVjdHVyZSgpLCAxLCBJZGVudGlm
aWVyKGdsb2JhbEV4ZWMoKSwgImNoZWNrU3ludGF4IiksIGZ1bmN0aW9uQ2hlY2tTeW50YXgpKTsK
KyAgICBwdXREaXJlY3RGdW5jdGlvbihnbG9iYWxFeGVjKCksIG5ldyAoZ2xvYmFsRXhlYygpKSBK
U0Z1bmN0aW9uKGdsb2JhbEV4ZWMoKSwgdGhpcywgZnVuY3Rpb25TdHJ1Y3R1cmUoKSwgMCwgSWRl
bnRpZmllcihnbG9iYWxFeGVjKCksICJyZWFkbGluZSIpLCBmdW5jdGlvblJlYWRsaW5lKSk7CiAK
ICNpZiBFTkFCTEUoU0FNUExJTkdfRkxBR1MpCi0gICAgcHV0RGlyZWN0RnVuY3Rpb24oZ2xvYmFs
RXhlYygpLCBuZXcgKGdsb2JhbEV4ZWMoKSkgTmF0aXZlRnVuY3Rpb25XcmFwcGVyKGdsb2JhbEV4
ZWMoKSwgdGhpcywgcHJvdG90eXBlRnVuY3Rpb25TdHJ1Y3R1cmUoKSwgMSwgSWRlbnRpZmllcihn
bG9iYWxFeGVjKCksICJzZXRTYW1wbGluZ0ZsYWdzIiksIGZ1bmN0aW9uU2V0U2FtcGxpbmdGbGFn
cykpOwotICAgIHB1dERpcmVjdEZ1bmN0aW9uKGdsb2JhbEV4ZWMoKSwgbmV3IChnbG9iYWxFeGVj
KCkpIE5hdGl2ZUZ1bmN0aW9uV3JhcHBlcihnbG9iYWxFeGVjKCksIHRoaXMsIHByb3RvdHlwZUZ1
bmN0aW9uU3RydWN0dXJlKCksIDEsIElkZW50aWZpZXIoZ2xvYmFsRXhlYygpLCAiY2xlYXJTYW1w
bGluZ0ZsYWdzIiksIGZ1bmN0aW9uQ2xlYXJTYW1wbGluZ0ZsYWdzKSk7CisgICAgcHV0RGlyZWN0
RnVuY3Rpb24oZ2xvYmFsRXhlYygpLCBuZXcgKGdsb2JhbEV4ZWMoKSkgSlNGdW5jdGlvbihnbG9i
YWxFeGVjKCksIHRoaXMsIGZ1bmN0aW9uU3RydWN0dXJlKCksIDEsIElkZW50aWZpZXIoZ2xvYmFs
RXhlYygpLCAic2V0U2FtcGxpbmdGbGFncyIpLCBmdW5jdGlvblNldFNhbXBsaW5nRmxhZ3MpKTsK
KyAgICBwdXREaXJlY3RGdW5jdGlvbihnbG9iYWxFeGVjKCksIG5ldyAoZ2xvYmFsRXhlYygpKSBK
U0Z1bmN0aW9uKGdsb2JhbEV4ZWMoKSwgdGhpcywgZnVuY3Rpb25TdHJ1Y3R1cmUoKSwgMSwgSWRl
bnRpZmllcihnbG9iYWxFeGVjKCksICJjbGVhclNhbXBsaW5nRmxhZ3MiKSwgZnVuY3Rpb25DbGVh
clNhbXBsaW5nRmxhZ3MpKTsKICNlbmRpZgogCiAgICAgSlNPYmplY3QqIGFycmF5ID0gY29uc3Ry
dWN0RW1wdHlBcnJheShnbG9iYWxFeGVjKCkpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L0phdmFTY3JpcHRDb3JlLnZjcHJvai9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3By
b2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZj
cHJvai9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2oJKHJldmlzaW9uIDc5MTQw
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJvai9KYXZhU2Ny
aXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2oJKHdvcmtpbmcgY29weSkKQEAgLTc1OCwxNCAr
NzU4LDYgQEAKIAkJCQk+CiAJCQk8L0ZpbGU+CiAJCQk8RmlsZQotCQkJCVJlbGF0aXZlUGF0aD0i
Li5cLi5ccnVudGltZVxHbG9iYWxFdmFsRnVuY3Rpb24uY3BwIgotCQkJCT4KLQkJCTwvRmlsZT4K
LQkJCTxGaWxlCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxydW50aW1lXEdsb2JhbEV2YWxGdW5j
dGlvbi5oIgotCQkJCT4KLQkJCTwvRmlsZT4KLQkJCTxGaWxlCiAJCQkJUmVsYXRpdmVQYXRoPSIu
LlwuLlxydW50aW1lXElkZW50aWZpZXIuY3BwIgogCQkJCT4KIAkJCTwvRmlsZT4KQEAgLTEwNDIs
MTAgKzEwMzQsNiBAQAogCQkJCT4KIAkJCTwvRmlsZT4KIAkJCTxGaWxlCi0JCQkJUmVsYXRpdmVQ
YXRoPSIuLlwuLlxydW50aW1lXE5hdGl2ZUZ1bmN0aW9uV3JhcHBlci5oIgotCQkJCT4KLQkJCTwv
RmlsZT4KLQkJCTxGaWxlCiAJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxydW50aW1lXE51bWJlckNv
bnN0cnVjdG9yLmNwcCIKIAkJCQk+CiAJCQk8L0ZpbGU+CkBAIC0xMTMwLDE0ICsxMTE4LDYgQEAK
IAkJCQk+CiAJCQk8L0ZpbGU+CiAJCQk8RmlsZQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5ccnVu
dGltZVxQcm90b3R5cGVGdW5jdGlvbi5jcHAiCi0JCQkJPgotCQkJPC9GaWxlPgotCQkJPEZpbGUK
LQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXHJ1bnRpbWVcUHJvdG90eXBlRnVuY3Rpb24uaCIKLQkJ
CQk+Ci0JCQk8L0ZpbGU+Ci0JCQk8RmlsZQogCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5ccnVudGlt
ZVxSZWdFeHAuY3BwIgogCQkJCT4KIAkJCTwvRmlsZT4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCShyZXZpc2lvbiA3OTE0MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZh
U2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0x
MTUsNyArMTE1LDYgQEAKIAkJMTQ0NjlERTYxMDdFQzdFNzAwNjUwNDQ2IC8qIE9iamVjdFByb3Rv
dHlwZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBC
QzI2ODBDODBFMTZENEU5MDBBMDZFOTIgLyogT2JqZWN0UHJvdG90eXBlLmNwcCAqLzsgfTsKIAkJ
MTQ0NjlERTcxMDdFQzdFNzAwNjUwNDQ2IC8qIFByb3BlcnR5TmFtZUFycmF5LmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDY1NDAwQzBGMEE2OUJBRjIw
MDUwOTg4NyAvKiBQcm9wZXJ0eU5hbWVBcnJheS5jcHAgKi87IH07CiAJCTE0NDY5REU4MTA3RUM3
RTcwMDY1MDQ0NiAvKiBQcm9wZXJ0eVNsb3QuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNjU2MjFFNkIwODlFODU5NzAwNzYwRjM1IC8qIFByb3BlcnR5
U2xvdC5jcHAgKi87IH07Ci0JCTE0NDY5REU5MTA3RUM3RTcwMDY1MDQ0NiAvKiBQcm90b3R5cGVG
dW5jdGlvbi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBCQzI1N0RGMTBFMUY1Mzc0MDAxNkI2QzkgLyogUHJvdG90eXBlRnVuY3Rpb24uY3BwICovOyB9
OwogCQkxNDQ2OURFQTEwN0VDN0U3MDA2NTA0NDYgLyogU2NvcGVDaGFpbi5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5Mzc0RDNBODAzOEQ5RDc0MDA4
NjM1Q0UgLyogU2NvcGVDaGFpbi5jcHAgKi87IH07CiAJCTE0NDY5REVCMTA3RUM3RTcwMDY1MDQ0
NiAvKiBTdHJpbmdDb25zdHJ1Y3Rvci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBCQzE4QzNDMDBFMTZFRTMzMDBCMzQ0NjAgLyogU3RyaW5nQ29uc3Ry
dWN0b3IuY3BwICovOyB9OwogCQkxNDQ2OURFQzEwN0VDN0U3MDA2NTA0NDYgLyogU3RyaW5nT2Jq
ZWN0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJD
MThDM0MyMEUxNkVFMzMwMEIzNDQ2MCAvKiBTdHJpbmdPYmplY3QuY3BwICovOyB9OwpAQCAtMTQy
LDcgKzE0MSw2IEBACiAJCTE0N0YzOUNBMTA3RUMzNzYwMDQyN0E0OCAvKiBFcnJvclByb3RvdHlw
ZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzAy
RTkwNjBFMTgzOURCMDAwRjkyOTcgLyogRXJyb3JQcm90b3R5cGUuY3BwICovOyB9OwogCQkxNDdG
MzlDQjEwN0VDMzc2MDA0MjdBNDggLyogRnVuY3Rpb25Db25zdHJ1Y3Rvci5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzI2ODBDMDBFMTZENEU5MDBB
MDZFOTIgLyogRnVuY3Rpb25Db25zdHJ1Y3Rvci5jcHAgKi87IH07CiAJCTE0N0YzOUNDMTA3RUMz
NzYwMDQyN0E0OCAvKiBGdW5jdGlvblByb3RvdHlwZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNjkyQTg1QzAyNTU1OTdEMDFGRjYwRjcgLyogRnVu
Y3Rpb25Qcm90b3R5cGUuY3BwICovOyB9OwotCQkxNDdGMzlDRDEwN0VDMzc2MDA0MjdBNDggLyog
R2xvYmFsRXZhbEZ1bmN0aW9uLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEJDMjU3REVEMEUxRjUyRUQwMDE2QjZDOSAvKiBHbG9iYWxFdmFsRnVuY3Rp
b24uY3BwICovOyB9OwogCQkxNDdGMzlDRTEwN0VDMzc2MDA0MjdBNDggLyogSWRlbnRpZmllci5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5MzNBMzQ5
RDAzOEFFODBGMDA4NjM1Q0UgLyogSWRlbnRpZmllci5jcHAgKi87IH07CiAJCTE0N0YzOUNGMTA3
RUMzNzYwMDQyN0E0OCAvKiBJbnRlcm5hbEZ1bmN0aW9uLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDOUJCOTVCMEUxOTY4MDYwMERGODg1NSAvKiBJ
bnRlcm5hbEZ1bmN0aW9uLmNwcCAqLzsgfTsKIAkJMTQ3RjM5RDAxMDdFQzM3NjAwNDI3QTQ4IC8q
IEpTQXJyYXkuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gOTNBREZDRTYwQ0NCRDdBQzAwRDMwQjA4IC8qIEpTQXJyYXkuY3BwICovOyB9OwpAQCAtMzU1
LDcgKzM1Myw2IEBACiAJCUE3NTcwNkRFMTE4QTJCQ0YwMDU3Rjg4RiAvKiBKSVRBcml0aG1ldGlj
MzJfNjQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
QTc1NzA2REQxMThBMkJDRjAwNTdGODhGIC8qIEpJVEFyaXRobWV0aWMzMl82NC5jcHAgKi87IH07
CiAJCUE3NjZCNDRGMEVFOERDRDEwMDk1MThDQSAvKiBFeGVjdXRhYmxlQWxsb2NhdG9yLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBN0I0OERCNTBFRTc0
Q0ZDMDBEQ0JEQjYgLyogRXhlY3V0YWJsZUFsbG9jYXRvci5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUE3NkM1MTc2MTE4Mjc0OEQwMDcxNUIwNSAv
KiBKU0ludGVyZmFjZUpJVC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQTc2QzUxNzQxMTgyNzQ4RDAwNzE1QjA1IC8qIEpTSW50ZXJmYWNlSklULmggKi87
IH07Ci0JCUE3NkVFNjU5MEZBRTU5RDUwMDNGMDY5QSAvKiBOYXRpdmVGdW5jdGlvbldyYXBwZXIu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3NkVFNjU4
MEZBRTU5RDUwMDNGMDY5QSAvKiBOYXRpdmVGdW5jdGlvbldyYXBwZXIuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlBNzc5NTU5MDEwMUE3NEQ1MDAx
MTRFNTUgLyogTWFya1N0YWNrLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBBNzc5NTU4RjEwMUE3NEQ1MDAxMTRFNTUgLyogTWFya1N0YWNrLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQTc4M0EwRDExMUEz
NkRDQTAwNTYzRDIwIC8qIEpTT2JqZWN0V2l0aEdsb2JhbE9iamVjdC5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTc4M0EwRDAxMUEzNkRDQTAwNTYzRDIw
IC8qIEpTT2JqZWN0V2l0aEdsb2JhbE9iamVjdC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CiAJCUE3ODNBMkFCMTFBNUJFODQwMDU2M0QyMCAvKiBKU09i
amVjdFdpdGhHbG9iYWxPYmplY3QuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQTc4M0EyQUExMUE1QkU4NDAwNTYzRDIwIC8qIEpTT2JqZWN0V2l0aEds
b2JhbE9iamVjdC5jcHAgKi87IH07CkBAIC01MjYsOCArNTIzLDYgQEAKIAkJQkMxOEM1MkMwRTE2
RkNEMjAwQjM0NDYwIC8qIFJlZ0V4cE9iamVjdC5sdXQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDMThDNTJCMEUxNkZDRDIwMEIzNDQ2MCAvKiBSZWdF
eHBPYmplY3QubHV0LmggKi87IH07CiAJCUJDMThDNTJFMEUxNkZDRTEwMEIzNDQ2MCAvKiBMZXhl
ci5sdXQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJD
MThDNTJEMEUxNkZDRTEwMEIzNDQ2MCAvKiBMZXhlci5sdXQuaCAqLzsgfTsKIAkJQkMyNTdERTgw
RTFGNTFDNTAwMTZCNkM5IC8qIEFyZ3VtZW50cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQkMyNTdERTYwRTFGNTFDNTAwMTZCNkM5IC8qIEFyZ3VtZW50
cy5oICovOyB9OwotCQlCQzI1N0RGMDBFMUY1MkVEMDAxNkI2QzkgLyogR2xvYmFsRXZhbEZ1bmN0
aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzI1
N0RFRTBFMUY1MkVEMDAxNkI2QzkgLyogR2xvYmFsRXZhbEZ1bmN0aW9uLmggKi87IH07Ci0JCUJD
MjU3REY0MEUxRjUzNzQwMDE2QjZDOSAvKiBQcm90b3R5cGVGdW5jdGlvbi5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkMyNTdERjIwRTFGNTM3NDAwMTZC
NkM5IC8qIFByb3RvdHlwZUZ1bmN0aW9uLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKIAkJQkMzMDQ2MDcwRTFGNDk3RjAwMzIzMkNGIC8qIEVycm9yLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzMwNDYwNjBF
MUY0OTdGMDAzMjMyQ0YgLyogRXJyb3IuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwogCQlCQzMxMzU2NDBGMzAyRkEzMDAzREZEM0EgLyogRGVidWdnZXJB
Y3RpdmF0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBCQzMxMzU2MjBGMzAyRkEzMDAzREZEM0EgLyogRGVidWdnZXJBY3RpdmF0aW9uLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQkMzMTM1NjUwRjMw
MkZBMzAwM0RGRDNBIC8qIERlYnVnZ2VyQWN0aXZhdGlvbi5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzMxMzU2MzBGMzAyRkEzMDAzREZEM0EgLyog
RGVidWdnZXJBY3RpdmF0aW9uLmNwcCAqLzsgfTsKQEAgLTEwMDUsNyArMTAwMCw2IEBACiAJCUE3
NERFMUNCMTIwQjg2RDYwMEQ0MEQ1QiAvKiBBUk12N0Fzc2VtYmxlci5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBBUk12N0Fzc2VtYmxlci5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUE3NTcwNkREMTE4QTJCQ0YwMDU3Rjg4RiAvKiBKSVRBcml0aG1l
dGljMzJfNjQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSklUQXJp
dGhtZXRpYzMyXzY0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTc2QzUxNzQx
MTgyNzQ4RDAwNzE1QjA1IC8qIEpTSW50ZXJmYWNlSklULmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IEpTSW50ZXJmYWNlSklULmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
Ci0JCUE3NkVFNjU4MEZBRTU5RDUwMDNGMDY5QSAvKiBOYXRpdmVGdW5jdGlvbldyYXBwZXIuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTmF0aXZlRnVuY3Rpb25XcmFwcGVyLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE3Nzk1NThGMTAxQTc0RDUwMDExNEU1NSAv
KiBNYXJrU3RhY2suaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWFya1N0YWNr
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE3ODNBMEQwMTFBMzZEQ0EwMDU2M0Qy
MCAvKiBKU09iamVjdFdpdGhHbG9iYWxPYmplY3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gSlNPYmplY3RXaXRoR2xvYmFsT2JqZWN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUE3ODNBMkFBMTFBNUJFODQwMDU2M0QyMCAvKiBKU09iamVjdFdpdGhHbG9iYWxP
YmplY3QuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNPYmplY3RX
aXRoR2xvYmFsT2JqZWN0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTEwODIs
MTAgKzEwNzYsNiBAQAogCQlCQzIyQTM5QTBFMTZFMTQ4MDBBRjIxQzggLyogSlNWYXJpYWJsZU9i
amVjdC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU1ZhcmlhYmxl
T2JqZWN0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkMyNTdERTUwRTFGNTFD
NTAwMTZCNkM5IC8qIEFyZ3VtZW50cy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBBcmd1bWVudHMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQzI1
N0RFNjBFMUY1MUM1MDAxNkI2QzkgLyogQXJndW1lbnRzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IEFyZ3VtZW50cy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlC
QzI1N0RFRDBFMUY1MkVEMDAxNkI2QzkgLyogR2xvYmFsRXZhbEZ1bmN0aW9uLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEdsb2JhbEV2YWxGdW5jdGlvbi5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUJDMjU3REVFMEUxRjUyRUQwMDE2QjZDOSAvKiBH
bG9iYWxFdmFsRnVuY3Rpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR2xv
YmFsRXZhbEZ1bmN0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUJDMjU3REYx
MEUxRjUzNzQwMDE2QjZDOSAvKiBQcm90b3R5cGVGdW5jdGlvbi5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBQcm90b3R5cGVGdW5jdGlvbi5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07Ci0JCUJDMjU3REYyMEUxRjUzNzQwMDE2QjZDOSAvKiBQcm90b3R5cGVG
dW5jdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQcm90b3R5cGVGdW5j
dGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQzI2ODBDMDBFMTZENEU5MDBB
MDZFOTIgLyogRnVuY3Rpb25Db25zdHJ1Y3Rvci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBGdW5jdGlvbkNvbnN0cnVjdG9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJQkMyNjgwQzEwRTE2RDRFOTAwQTA2RTkyIC8qIEZ1bmN0aW9uQ29uc3RydWN0
b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRnVuY3Rpb25Db25zdHJ1Y3Rv
ci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQzI2ODBDMjBFMTZENEU5MDBBMDZF
OTIgLyogTnVtYmVyQ29uc3RydWN0b3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gTnVtYmVyQ29uc3RydWN0b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwpAQCAtMTcyOSw4ICsxNzE5LDYgQEAKIAkJCQlEREY3QUJEMzExRjYwRUQyMDAxMDhFMzYgLyog
R0NBY3Rpdml0eUNhbGxiYWNrQ0YuY3BwICovLAogCQkJCUJDMDJFOUI4MEUxODQ1NDUwMDBGOTI5
NyAvKiBHZXR0ZXJTZXR0ZXIuY3BwICovLAogCQkJCUJDMzM3QkRFMEUxQUYwQjgwMDc2OTE4QSAv
KiBHZXR0ZXJTZXR0ZXIuaCAqLywKLQkJCQlCQzI1N0RFRDBFMUY1MkVEMDAxNkI2QzkgLyogR2xv
YmFsRXZhbEZ1bmN0aW9uLmNwcCAqLywKLQkJCQlCQzI1N0RFRTBFMUY1MkVEMDAxNkI2QzkgLyog
R2xvYmFsRXZhbEZ1bmN0aW9uLmggKi8sCiAJCQkJMTQwQ0RFNkMxMkRFOTc3RTAwMTNDRkM1IC8q
IEhlYXAuY3BwICovLAogCQkJCTE0MENERTZEMTJERTk3N0UwMDEzQ0ZDNSAvKiBIZWFwLmggKi8s
CiAJCQkJOTMzQTM0OUQwMzhBRTgwRjAwODYzNUNFIC8qIElkZW50aWZpZXIuY3BwICovLApAQCAt
MTgwNyw3ICsxNzk1LDYgQEAKIAkJCQlCQzAyRTkwOTBFMTgzOURCMDAwRjkyOTcgLyogTmF0aXZl
RXJyb3JDb25zdHJ1Y3Rvci5oICovLAogCQkJCUJDMDJFOTBBMEUxODM5REIwMDBGOTI5NyAvKiBO
YXRpdmVFcnJvclByb3RvdHlwZS5jcHAgKi8sCiAJCQkJQkMwMkU5MEIwRTE4MzlEQjAwMEY5Mjk3
IC8qIE5hdGl2ZUVycm9yUHJvdG90eXBlLmggKi8sCi0JCQkJQTc2RUU2NTgwRkFFNTlENTAwM0Yw
NjlBIC8qIE5hdGl2ZUZ1bmN0aW9uV3JhcHBlci5oICovLAogCQkJCUJDMjY4MEMyMEUxNkQ0RTkw
MEEwNkU5MiAvKiBOdW1iZXJDb25zdHJ1Y3Rvci5jcHAgKi8sCiAJCQkJQkMyNjgwQzMwRTE2RDRF
OTAwQTA2RTkyIC8qIE51bWJlckNvbnN0cnVjdG9yLmggKi8sCiAJCQkJRjY5MkE4NzAwMjU1NTk3
RDAxRkY2MEY3IC8qIE51bWJlck9iamVjdC5jcHAgKi8sCkBAIC0xODI5LDggKzE4MTYsNiBAQAog
CQkJCTY1NjIxRTZCMDg5RTg1OTcwMDc2MEYzNSAvKiBQcm9wZXJ0eVNsb3QuY3BwICovLAogCQkJ
CTY1NjIxRTZDMDg5RTg1OTcwMDc2MEYzNSAvKiBQcm9wZXJ0eVNsb3QuaCAqLywKIAkJCQk2NUMw
MkZCQjA2Mzc0NjJBMDAzRTdFRTYgLyogUHJvdGVjdC5oICovLAotCQkJCUJDMjU3REYxMEUxRjUz
NzQwMDE2QjZDOSAvKiBQcm90b3R5cGVGdW5jdGlvbi5jcHAgKi8sCi0JCQkJQkMyNTdERjIwRTFG
NTM3NDAwMTZCNkM5IC8qIFByb3RvdHlwZUZ1bmN0aW9uLmggKi8sCiAJCQkJMTQ3Qjg0NjIwRTZE
RTZCMTAwNDc3NUE0IC8qIFB1dFByb3BlcnR5U2xvdC5oICovLAogCQkJCUY2OTJBODdEMDI1NTU5
N0QwMUZGNjBGNyAvKiBSZWdFeHAuY3BwICovLAogCQkJCUY2OTJBODdFMDI1NTU5N0QwMUZGNjBG
NyAvKiBSZWdFeHAuaCAqLywKQEAgLTIxNzcsNyArMjE2Miw2IEBACiAJCQkJQkMxOEM0MDUwRTE2
RjVDRDAwQjM0NDYwIC8qIEZ1bmN0aW9uUHJvdG90eXBlLmggaW4gSGVhZGVycyAqLywKIAkJCQlE
REY3QUJENDExRjYwRUQyMDAxMDhFMzYgLyogR0NBY3Rpdml0eUNhbGxiYWNrLmggaW4gSGVhZGVy
cyAqLywKIAkJCQlCQzE4QzQwNjBFMTZGNUNEMDBCMzQ0NjAgLyogR2V0UHRyLmggaW4gSGVhZGVy
cyAqLywKLQkJCQlCQzI1N0RGMDBFMUY1MkVEMDAxNkI2QzkgLyogR2xvYmFsRXZhbEZ1bmN0aW9u
LmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzE4QzQwODBFMTZGNUNEMDBCMzQ0NjAgLyogSGFzaENv
dW50ZWRTZXQuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMThDNDA5MEUxNkY1Q0QwMEIzNDQ2MCAv
KiBIYXNoRnVuY3Rpb25zLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzE4QzQwQTBFMTZGNUNEMDBC
MzQ0NjAgLyogSGFzaEl0ZXJhdG9ycy5oIGluIEhlYWRlcnMgKi8sCkBAIC0yMjc2LDcgKzIyNjAs
NiBAQAogCQkJCTg2QzU2OEUyMTFBMjEzRUUwMDA3RjdGMCAvKiBNSVBTQXNzZW1ibGVyLmggaW4g
SGVhZGVycyAqLywKIAkJCQlCQzAyRTkxMTBFMTgzOURCMDAwRjkyOTcgLyogTmF0aXZlRXJyb3JD
b25zdHJ1Y3Rvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMwMkU5MTMwRTE4MzlEQjAwMEY5Mjk3
IC8qIE5hdGl2ZUVycm9yUHJvdG90eXBlLmggaW4gSGVhZGVycyAqLywKLQkJCQlBNzZFRTY1OTBG
QUU1OUQ1MDAzRjA2OUEgLyogTmF0aXZlRnVuY3Rpb25XcmFwcGVyLmggaW4gSGVhZGVycyAqLywK
IAkJCQk3RUZGMDA2NDBFQzA1QTlBMDBBQTdDOTMgLyogTm9kZUluZm8uaCBpbiBIZWFkZXJzICov
LAogCQkJCUJDMThDNDNGMEUxNkY1Q0QwMEIzNDQ2MCAvKiBOb2Rlcy5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJQkMxOEM0NDAwRTE2RjVDRDAwQjM0NDYwIC8qIE5vbmNvcHlhYmxlLmggaW4gSGVhZGVy
cyAqLywKQEAgLTIzMjAsNyArMjMwMyw2IEBACiAJCQkJQkMxOEM0NTQwRTE2RjVDRDAwQjM0NDYw
IC8qIFByb3BlcnR5TmFtZUFycmF5LmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzE4QzQ1NTBFMTZG
NUNEMDBCMzQ0NjAgLyogUHJvcGVydHlTbG90LmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzE4QzQ1
NjBFMTZGNUNEMDBCMzQ0NjAgLyogUHJvdGVjdC5oIGluIEhlYWRlcnMgKi8sCi0JCQkJQkMyNTdE
RjQwRTFGNTM3NDAwMTZCNkM5IC8qIFByb3RvdHlwZUZ1bmN0aW9uLmggaW4gSGVhZGVycyAqLywK
IAkJCQkxNDdCODQ2MzBFNkRFNkIxMDA0Nzc1QTQgLyogUHV0UHJvcGVydHlTbG90LmggaW4gSGVh
ZGVycyAqLywKIAkJCQkwODhGQTVCQzBFRjc2RDQzMDA1NzhFNkYgLyogUmFuZG9tTnVtYmVyLmgg
aW4gSGVhZGVycyAqLywKIAkJCQkwOEUyNzlFOTBFRjgzQjEwMDA3REI1MjMgLyogUmFuZG9tTnVt
YmVyU2VlZC5oIGluIEhlYWRlcnMgKi8sCkBAIC0yNzUzLDcgKzI3MzUsNiBAQAogCQkJCTE0N0Yz
OUNDMTA3RUMzNzYwMDQyN0E0OCAvKiBGdW5jdGlvblByb3RvdHlwZS5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQlEREY3QUJENTExRjYwRUQyMDAxMDhFMzYgLyogR0NBY3Rpdml0eUNhbGxiYWNrQ0Yu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMTQyODA4NTUxMDdFQzBFNzAwMTNFN0IyIC8qIEdldHRl
clNldHRlci5jcHAgaW4gU291cmNlcyAqLywKLQkJCQkxNDdGMzlDRDEwN0VDMzc2MDA0MjdBNDgg
LyogR2xvYmFsRXZhbEZ1bmN0aW9uLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTY1REZDOTMzMDhF
QTE3M0EwMEY3MzAwQiAvKiBIYXNoVGFibGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMTQwQ0RF
NzAxMkRFOTdBMDAwMTNDRkM1IC8qIEhlYXAuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMTQ3RjM5
Q0UxMDdFQzM3NjAwNDI3QTQ4IC8qIElkZW50aWZpZXIuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0y
ODQ3LDcgKzI4MjgsNiBAQAogCQkJCUE3RkI2MEE0MTAzRjdEQzIwMDE3QTI4NiAvKiBQcm9wZXJ0
eURlc2NyaXB0b3IuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMTQ0NjlERTcxMDdFQzdFNzAwNjUw
NDQ2IC8qIFByb3BlcnR5TmFtZUFycmF5LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTE0NDY5REU4
MTA3RUM3RTcwMDY1MDQ0NiAvKiBQcm9wZXJ0eVNsb3QuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJ
MTQ0NjlERTkxMDdFQzdFNzAwNjUwNDQ2IC8qIFByb3RvdHlwZUZ1bmN0aW9uLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTA4OEZBNUJCMEVGNzZENDMwMDU3OEU2RiAvKiBSYW5kb21OdW1iZXIuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJOTA1QjAyQUUwRTI4NjQwRjAwNkRGODgyIC8qIFJlZkNvdW50
ZWRMZWFrQ291bnRlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxNDI4MDg0MTEwN0VDMDkzMDAx
M0U3QjIgLyogUmVnRXhwLmNwcCBpbiBTb3VyY2VzICovLApJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAJ
KHJldmlzaW9uIDc5MTQwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9C
eXRlY29kZUdlbmVyYXRvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMxLDcgKzMxLDYgQEAKICNp
bmNsdWRlICJCeXRlY29kZUdlbmVyYXRvci5oIgogCiAjaW5jbHVkZSAiQmF0Y2hlZFRyYW5zaXRp
b25PcHRpbWl6ZXIuaCIKLSNpbmNsdWRlICJQcm90b3R5cGVGdW5jdGlvbi5oIgogI2luY2x1ZGUg
IkpTRnVuY3Rpb24uaCIKICNpbmNsdWRlICJJbnRlcnByZXRlci5oIgogI2luY2x1ZGUgIlVTdHJp
bmcuaCIKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRl
ci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0lu
dGVycHJldGVyLmNwcAkocmV2aXNpb24gNzkxNDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00Miw3ICs0Miw2
IEBACiAjaW5jbHVkZSAiRXZhbENvZGVDYWNoZS5oIgogI2luY2x1ZGUgIkV4Y2VwdGlvbkhlbHBl
cnMuaCIKICNpbmNsdWRlICJHZXR0ZXJTZXR0ZXIuaCIKLSNpbmNsdWRlICJHbG9iYWxFdmFsRnVu
Y3Rpb24uaCIKICNpbmNsdWRlICJKU0FjdGl2YXRpb24uaCIKICNpbmNsdWRlICJKU0FycmF5Lmgi
CiAjaW5jbHVkZSAiSlNCeXRlQXJyYXkuaCIKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklUU3R1YnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklUU3R1YnMuY3BwCShyZXZpc2lvbiA3OTE0MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklUU3R1YnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MCw3ICs0MCw2IEBACiAjaW5jbHVk
ZSAiRGVidWdnZXIuaCIKICNpbmNsdWRlICJFeGNlcHRpb25IZWxwZXJzLmgiCiAjaW5jbHVkZSAi
R2V0dGVyU2V0dGVyLmgiCi0jaW5jbHVkZSAiR2xvYmFsRXZhbEZ1bmN0aW9uLmgiCiAjaW5jbHVk
ZSAiSklULmgiCiAjaW5jbHVkZSAiSlNBY3RpdmF0aW9uLmgiCiAjaW5jbHVkZSAiSlNBcnJheS5o
IgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlDb25zdHJ1Y3Rvci5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlDb25z
dHJ1Y3Rvci5jcHAJKHJldmlzaW9uIDc5MTQyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvQXJyYXlDb25zdHJ1Y3Rvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMwLDcgKzMwLDYg
QEAKICNpbmNsdWRlICJKU0FycmF5LmgiCiAjaW5jbHVkZSAiSlNGdW5jdGlvbi5oIgogI2luY2x1
ZGUgIkxvb2t1cC5oIgotI2luY2x1ZGUgIlByb3RvdHlwZUZ1bmN0aW9uLmgiCiAKIG5hbWVzcGFj
ZSBKU0MgewogCkBAIC0zOCw3ICszNyw3IEBAIEFTU0VSVF9DTEFTU19GSVRTX0lOX0NFTEwoQXJy
YXlDb25zdHJ1Y3QKICAgICAKIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGFy
cmF5Q29uc3RydWN0b3JJc0FycmF5KEV4ZWNTdGF0ZSopOwogCi1BcnJheUNvbnN0cnVjdG9yOjpB
cnJheUNvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgTm9uTnVsbFBhc3NSZWZQdHI8U3RydWN0dXJlPiBzdHJ1Y3R1cmUsIEFycmF5UHJvdG90
eXBlKiBhcnJheVByb3RvdHlwZSwgU3RydWN0dXJlKiBwcm90b3R5cGVGdW5jdGlvblN0cnVjdHVy
ZSkKK0FycmF5Q29uc3RydWN0b3I6OkFycmF5Q29uc3RydWN0b3IoRXhlY1N0YXRlKiBleGVjLCBK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBOb25OdWxsUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+
IHN0cnVjdHVyZSwgQXJyYXlQcm90b3R5cGUqIGFycmF5UHJvdG90eXBlLCBTdHJ1Y3R1cmUqIGZ1
bmN0aW9uU3RydWN0dXJlKQogICAgIDogSW50ZXJuYWxGdW5jdGlvbigmZXhlYy0+Z2xvYmFsRGF0
YSgpLCBnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSwgSWRlbnRpZmllcihleGVjLCBhcnJheVByb3Rv
dHlwZS0+Y2xhc3NJbmZvKCktPmNsYXNzTmFtZSkpCiB7CiAgICAgLy8gRUNNQSAxNS40LjMuMSBB
cnJheS5wcm90b3R5cGUKQEAgLTQ4LDcgKzQ3LDcgQEAgQXJyYXlDb25zdHJ1Y3Rvcjo6QXJyYXlD
b25zdHJ1Y3RvcihFeGVjUwogICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKGV4ZWMtPmds
b2JhbERhdGEoKSwgZXhlYy0+cHJvcGVydHlOYW1lcygpLmxlbmd0aCwganNOdW1iZXIoMSksIFJl
YWRPbmx5IHwgRG9udEVudW0gfCBEb250RGVsZXRlKTsKIAogICAgIC8vIEVTNQotICAgIHB1dERp
cmVjdEZ1bmN0aW9uV2l0aG91dFRyYW5zaXRpb24oZXhlYywgbmV3IChleGVjKSBOYXRpdmVGdW5j
dGlvbldyYXBwZXIoZXhlYywgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGVGdW5jdGlvblN0cnVjdHVy
ZSwgMSwgZXhlYy0+cHJvcGVydHlOYW1lcygpLmlzQXJyYXksIGFycmF5Q29uc3RydWN0b3JJc0Fy
cmF5KSwgRG9udEVudW0pOworICAgIHB1dERpcmVjdEZ1bmN0aW9uV2l0aG91dFRyYW5zaXRpb24o
ZXhlYywgbmV3IChleGVjKSBKU0Z1bmN0aW9uKGV4ZWMsIGdsb2JhbE9iamVjdCwgZnVuY3Rpb25T
dHJ1Y3R1cmUsIDEsIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5pc0FycmF5LCBhcnJheUNvbnN0cnVj
dG9ySXNBcnJheSksIERvbnRFbnVtKTsKIH0KIAogc3RhdGljIGlubGluZSBKU09iamVjdCogY29u
c3RydWN0QXJyYXlXaXRoU2l6ZVF1aXJrKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgQXJnTGlzdCYg
YXJncykKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Jvb2xlYW5Qcm90b3R5
cGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Jvb2xl
YW5Qcm90b3R5cGUuY3BwCShyZXZpc2lvbiA3OTE0MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0Jvb2xlYW5Qcm90b3R5cGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw3ICsy
Niw2IEBACiAjaW5jbHVkZSAiSlNGdW5jdGlvbi5oIgogI2luY2x1ZGUgIkpTU3RyaW5nLmgiCiAj
aW5jbHVkZSAiT2JqZWN0UHJvdG90eXBlLmgiCi0jaW5jbHVkZSAiUHJvdG90eXBlRnVuY3Rpb24u
aCIKIAogbmFtZXNwYWNlIEpTQyB7CiAKQEAgLTM4LDEzICszNywxMyBAQCBzdGF0aWMgRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBib29sCiAKIC8vIEVDTUEgMTUuNi40CiAKLUJvb2xlYW5Q
cm90b3R5cGU6OkJvb2xlYW5Qcm90b3R5cGUoRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBOb25OdWxsUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+IHN0cnVjdHVyZSwg
U3RydWN0dXJlKiBwcm90b3R5cGVGdW5jdGlvblN0cnVjdHVyZSkKK0Jvb2xlYW5Qcm90b3R5cGU6
OkJvb2xlYW5Qcm90b3R5cGUoRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBOb25OdWxsUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+IHN0cnVjdHVyZSwgU3RydWN0dXJl
KiBmdW5jdGlvblN0cnVjdHVyZSkKICAgICA6IEJvb2xlYW5PYmplY3QoZXhlYy0+Z2xvYmFsRGF0
YSgpLCBzdHJ1Y3R1cmUpCiB7CiAgICAgc2V0SW50ZXJuYWxWYWx1ZShleGVjLT5nbG9iYWxEYXRh
KCksIGpzQm9vbGVhbihmYWxzZSkpOwogCi0gICAgcHV0RGlyZWN0RnVuY3Rpb25XaXRob3V0VHJh
bnNpdGlvbihleGVjLCBuZXcgKGV4ZWMpIE5hdGl2ZUZ1bmN0aW9uV3JhcHBlcihleGVjLCBnbG9i
YWxPYmplY3QsIHByb3RvdHlwZUZ1bmN0aW9uU3RydWN0dXJlLCAwLCBleGVjLT5wcm9wZXJ0eU5h
bWVzKCkudG9TdHJpbmcsIGJvb2xlYW5Qcm90b0Z1bmNUb1N0cmluZyksIERvbnRFbnVtKTsKLSAg
ICBwdXREaXJlY3RGdW5jdGlvbldpdGhvdXRUcmFuc2l0aW9uKGV4ZWMsIG5ldyAoZXhlYykgTmF0
aXZlRnVuY3Rpb25XcmFwcGVyKGV4ZWMsIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlRnVuY3Rpb25T
dHJ1Y3R1cmUsIDAsIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS52YWx1ZU9mLCBib29sZWFuUHJvdG9G
dW5jVmFsdWVPZiksIERvbnRFbnVtKTsKKyAgICBwdXREaXJlY3RGdW5jdGlvbldpdGhvdXRUcmFu
c2l0aW9uKGV4ZWMsIG5ldyAoZXhlYykgSlNGdW5jdGlvbihleGVjLCBnbG9iYWxPYmplY3QsIGZ1
bmN0aW9uU3RydWN0dXJlLCAwLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkudG9TdHJpbmcsIGJvb2xl
YW5Qcm90b0Z1bmNUb1N0cmluZyksIERvbnRFbnVtKTsKKyAgICBwdXREaXJlY3RGdW5jdGlvbldp
dGhvdXRUcmFuc2l0aW9uKGV4ZWMsIG5ldyAoZXhlYykgSlNGdW5jdGlvbihleGVjLCBnbG9iYWxP
YmplY3QsIGZ1bmN0aW9uU3RydWN0dXJlLCAwLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkudmFsdWVP
ZiwgYm9vbGVhblByb3RvRnVuY1ZhbHVlT2YpLCBEb250RW51bSk7CiB9CiAKIApJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQm9vbGVhblByb3RvdHlwZS5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Jvb2xlYW5Qcm90b3R5cGUuaAkocmV2
aXNpb24gNzkxNDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Cb29sZWFuUHJv
dG90eXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTI3LDcgKzI3LDcgQEAgbmFtZXNwYWNlIEpTQyB7
CiAKICAgICBjbGFzcyBCb29sZWFuUHJvdG90eXBlIDogcHVibGljIEJvb2xlYW5PYmplY3Qgewog
ICAgIHB1YmxpYzoKLSAgICAgICAgQm9vbGVhblByb3RvdHlwZShFeGVjU3RhdGUqLCBKU0dsb2Jh
bE9iamVjdCosIE5vbk51bGxQYXNzUmVmUHRyPFN0cnVjdHVyZT4sIFN0cnVjdHVyZSogcHJvdG90
eXBlRnVuY3Rpb25TdHJ1Y3R1cmUpOworICAgICAgICBCb29sZWFuUHJvdG90eXBlKEV4ZWNTdGF0
ZSosIEpTR2xvYmFsT2JqZWN0KiwgTm9uTnVsbFBhc3NSZWZQdHI8U3RydWN0dXJlPiwgU3RydWN0
dXJlKiBmdW5jdGlvblN0cnVjdHVyZSk7CiAgICAgfTsKIAogfSAvLyBuYW1lc3BhY2UgSlNDCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DYWxsRGF0YS5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NhbGxEYXRhLmgJKHJldmlzaW9uIDc5
MTQwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2FsbERhdGEuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMzAsNyArMzAsNiBAQAogI2RlZmluZSBDYWxsRGF0YV9oCiAKICNpbmNsdWRl
ICJKU1ZhbHVlLmgiCi0jaW5jbHVkZSAiTmF0aXZlRnVuY3Rpb25XcmFwcGVyLmgiCiAKIG5hbWVz
cGFjZSBKU0MgewogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EYXRlQ29u
c3RydWN0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0RhdGVDb25zdHJ1Y3Rvci5jcHAJKHJldmlzaW9uIDc5MTQyKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvRGF0ZUNvbnN0cnVjdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzAs
NyArMzAsNiBAQAogI2luY2x1ZGUgIkpTU3RyaW5nLmgiCiAjaW5jbHVkZSAiSlNTdHJpbmdCdWls
ZGVyLmgiCiAjaW5jbHVkZSAiT2JqZWN0UHJvdG90eXBlLmgiCi0jaW5jbHVkZSAiUHJvdG90eXBl
RnVuY3Rpb24uaCIKICNpbmNsdWRlIDxtYXRoLmg+CiAjaW5jbHVkZSA8dGltZS5oPgogI2luY2x1
ZGUgPHd0Zi9EYXRlTWF0aC5oPgpAQCAtNTgsMTQgKzU3LDE0IEBAIHN0YXRpYyBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGUKIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGRhdGVOb3coRXhlY1N0YXRlKik7CiBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBkYXRlVVRDKEV4ZWNTdGF0ZSopOwogCi1EYXRlQ29uc3RydWN0b3I6OkRhdGVDb25zdHJ1
Y3RvcihFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIE5vbk51
bGxQYXNzUmVmUHRyPFN0cnVjdHVyZT4gc3RydWN0dXJlLCBTdHJ1Y3R1cmUqIHByb3RvdHlwZUZ1
bmN0aW9uU3RydWN0dXJlLCBEYXRlUHJvdG90eXBlKiBkYXRlUHJvdG90eXBlKQorRGF0ZUNvbnN0
cnVjdG9yOjpEYXRlQ29uc3RydWN0b3IoRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBOb25OdWxsUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+IHN0cnVjdHVyZSwgU3Ry
dWN0dXJlKiBmdW5jdGlvblN0cnVjdHVyZSwgRGF0ZVByb3RvdHlwZSogZGF0ZVByb3RvdHlwZSkK
ICAgICA6IEludGVybmFsRnVuY3Rpb24oJmV4ZWMtPmdsb2JhbERhdGEoKSwgZ2xvYmFsT2JqZWN0
LCBzdHJ1Y3R1cmUsIElkZW50aWZpZXIoZXhlYywgZGF0ZVByb3RvdHlwZS0+Y2xhc3NJbmZvKCkt
PmNsYXNzTmFtZSkpCiB7CiAgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24oZXhlYy0+Z2xv
YmFsRGF0YSgpLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkucHJvdG90eXBlLCBkYXRlUHJvdG90eXBl
LCBEb250RW51bSB8IERvbnREZWxldGUgfCBSZWFkT25seSk7CiAKLSAgICBwdXREaXJlY3RGdW5j
dGlvbldpdGhvdXRUcmFuc2l0aW9uKGV4ZWMsIG5ldyAoZXhlYykgTmF0aXZlRnVuY3Rpb25XcmFw
cGVyKGV4ZWMsIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlRnVuY3Rpb25TdHJ1Y3R1cmUsIDEsIGV4
ZWMtPnByb3BlcnR5TmFtZXMoKS5wYXJzZSwgZGF0ZVBhcnNlKSwgRG9udEVudW0pOwotICAgIHB1
dERpcmVjdEZ1bmN0aW9uV2l0aG91dFRyYW5zaXRpb24oZXhlYywgbmV3IChleGVjKSBOYXRpdmVG
dW5jdGlvbldyYXBwZXIoZXhlYywgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGVGdW5jdGlvblN0cnVj
dHVyZSwgNywgZXhlYy0+cHJvcGVydHlOYW1lcygpLlVUQywgZGF0ZVVUQyksIERvbnRFbnVtKTsK
LSAgICBwdXREaXJlY3RGdW5jdGlvbldpdGhvdXRUcmFuc2l0aW9uKGV4ZWMsIG5ldyAoZXhlYykg
TmF0aXZlRnVuY3Rpb25XcmFwcGVyKGV4ZWMsIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlRnVuY3Rp
b25TdHJ1Y3R1cmUsIDAsIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5ub3csIGRhdGVOb3cpLCBEb250
RW51bSk7CisgICAgcHV0RGlyZWN0RnVuY3Rpb25XaXRob3V0VHJhbnNpdGlvbihleGVjLCBuZXcg
KGV4ZWMpIEpTRnVuY3Rpb24oZXhlYywgZ2xvYmFsT2JqZWN0LCBmdW5jdGlvblN0cnVjdHVyZSwg
MSwgZXhlYy0+cHJvcGVydHlOYW1lcygpLnBhcnNlLCBkYXRlUGFyc2UpLCBEb250RW51bSk7Cisg
ICAgcHV0RGlyZWN0RnVuY3Rpb25XaXRob3V0VHJhbnNpdGlvbihleGVjLCBuZXcgKGV4ZWMpIEpT
RnVuY3Rpb24oZXhlYywgZ2xvYmFsT2JqZWN0LCBmdW5jdGlvblN0cnVjdHVyZSwgNywgZXhlYy0+
cHJvcGVydHlOYW1lcygpLlVUQywgZGF0ZVVUQyksIERvbnRFbnVtKTsKKyAgICBwdXREaXJlY3RG
dW5jdGlvbldpdGhvdXRUcmFuc2l0aW9uKGV4ZWMsIG5ldyAoZXhlYykgSlNGdW5jdGlvbihleGVj
LCBnbG9iYWxPYmplY3QsIGZ1bmN0aW9uU3RydWN0dXJlLCAwLCBleGVjLT5wcm9wZXJ0eU5hbWVz
KCkubm93LCBkYXRlTm93KSwgRG9udEVudW0pOwogCiAgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5z
aXRpb24oZXhlYy0+Z2xvYmFsRGF0YSgpLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkubGVuZ3RoLCBq
c051bWJlcig3KSwgUmVhZE9ubHkgfCBEb250RW51bSB8IERvbnREZWxldGUpOwogfQpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0ZUNvbnN0cnVjdG9yLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0ZUNvbnN0cnVjdG9yLmgJKHJl
dmlzaW9uIDc5MTQwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0ZUNvbnN0
cnVjdG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTI5LDcgKzI5LDcgQEAgbmFtZXNwYWNlIEpTQyB7
CiAKICAgICBjbGFzcyBEYXRlQ29uc3RydWN0b3IgOiBwdWJsaWMgSW50ZXJuYWxGdW5jdGlvbiB7
CiAgICAgcHVibGljOgotICAgICAgICBEYXRlQ29uc3RydWN0b3IoRXhlY1N0YXRlKiwgSlNHbG9i
YWxPYmplY3QqLCBOb25OdWxsUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+LCBTdHJ1Y3R1cmUqIHByb3Rv
dHlwZUZ1bmN0aW9uU3RydWN0dXJlLCBEYXRlUHJvdG90eXBlKik7CisgICAgICAgIERhdGVDb25z
dHJ1Y3RvcihFeGVjU3RhdGUqLCBKU0dsb2JhbE9iamVjdCosIE5vbk51bGxQYXNzUmVmUHRyPFN0
cnVjdHVyZT4sIFN0cnVjdHVyZSogZnVuY3Rpb25TdHJ1Y3R1cmUsIERhdGVQcm90b3R5cGUqKTsK
IAogICAgIHByaXZhdGU6CiAgICAgICAgIHZpcnR1YWwgQ29uc3RydWN0VHlwZSBnZXRDb25zdHJ1
Y3REYXRhKENvbnN0cnVjdERhdGEmKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0Vycm9yUHJvdG90eXBlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9FcnJvclByb3RvdHlwZS5jcHAJKHJldmlzaW9uIDc5MTQyKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3JQcm90b3R5cGUuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0yNSw3ICsyNSw2IEBACiAjaW5jbHVkZSAiSlNTdHJpbmcuaCIKICNpbmNsdWRlICJKU1N0
cmluZ0J1aWxkZXIuaCIKICNpbmNsdWRlICJPYmplY3RQcm90b3R5cGUuaCIKLSNpbmNsdWRlICJQ
cm90b3R5cGVGdW5jdGlvbi5oIgogI2luY2x1ZGUgIlN0cmluZ1JlY3Vyc2lvbkNoZWNrZXIuaCIK
ICNpbmNsdWRlICJVU3RyaW5nLmgiCiAKQEAgLTM2LDEzICszNSwxMyBAQCBBU1NFUlRfQ0xBU1Nf
RklUU19JTl9DRUxMKEVycm9yUHJvdG90eXBlCiBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBlcnJvclByb3RvRnVuY1RvU3RyaW5nKEV4ZWNTdGF0ZSopOwogCiAvLyBFQ01BIDE1
LjkuNAotRXJyb3JQcm90b3R5cGU6OkVycm9yUHJvdG90eXBlKEV4ZWNTdGF0ZSogZXhlYywgSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgTm9uTnVsbFBhc3NSZWZQdHI8U3RydWN0dXJlPiBz
dHJ1Y3R1cmUsIFN0cnVjdHVyZSogcHJvdG90eXBlRnVuY3Rpb25TdHJ1Y3R1cmUpCitFcnJvclBy
b3RvdHlwZTo6RXJyb3JQcm90b3R5cGUoRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBOb25OdWxsUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+IHN0cnVjdHVyZSwgU3Ry
dWN0dXJlKiBmdW5jdGlvblN0cnVjdHVyZSkKICAgICA6IEVycm9ySW5zdGFuY2UoJmV4ZWMtPmds
b2JhbERhdGEoKSwgc3RydWN0dXJlKQogewogICAgIC8vIFRoZSBjb25zdHJ1Y3RvciB3aWxsIGJl
IGFkZGVkIGxhdGVyIGluIEVycm9yQ29uc3RydWN0b3IncyBjb25zdHJ1Y3RvcgogCiAgICAgcHV0
RGlyZWN0V2l0aG91dFRyYW5zaXRpb24oZXhlYy0+Z2xvYmFsRGF0YSgpLCBleGVjLT5wcm9wZXJ0
eU5hbWVzKCkubmFtZSwganNOb250cml2aWFsU3RyaW5nKGV4ZWMsICJFcnJvciIpLCBEb250RW51
bSk7Ci0gICAgcHV0RGlyZWN0RnVuY3Rpb25XaXRob3V0VHJhbnNpdGlvbihleGVjLCBuZXcgKGV4
ZWMpIE5hdGl2ZUZ1bmN0aW9uV3JhcHBlcihleGVjLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZUZ1
bmN0aW9uU3RydWN0dXJlLCAwLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkudG9TdHJpbmcsIGVycm9y
UHJvdG9GdW5jVG9TdHJpbmcpLCBEb250RW51bSk7CisgICAgcHV0RGlyZWN0RnVuY3Rpb25XaXRo
b3V0VHJhbnNpdGlvbihleGVjLCBuZXcgKGV4ZWMpIEpTRnVuY3Rpb24oZXhlYywgZ2xvYmFsT2Jq
ZWN0LCBmdW5jdGlvblN0cnVjdHVyZSwgMCwgZXhlYy0+cHJvcGVydHlOYW1lcygpLnRvU3RyaW5n
LCBlcnJvclByb3RvRnVuY1RvU3RyaW5nKSwgRG9udEVudW0pOwogfQogCiBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGVycm9yUHJvdG9GdW5jVG9TdHJpbmcoRXhlY1N0YXRlKiBleGVjKQpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3JQcm90b3R5cGUuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvclByb3RvdHlwZS5o
CShyZXZpc2lvbiA3OTE0MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9y
UHJvdG90eXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTI5LDcgKzI5LDcgQEAgbmFtZXNwYWNlIEpT
QyB7CiAKICAgICBjbGFzcyBFcnJvclByb3RvdHlwZSA6IHB1YmxpYyBFcnJvckluc3RhbmNlIHsK
ICAgICBwdWJsaWM6Ci0gICAgICAgIEVycm9yUHJvdG90eXBlKEV4ZWNTdGF0ZSosIEpTR2xvYmFs
T2JqZWN0KiwgTm9uTnVsbFBhc3NSZWZQdHI8U3RydWN0dXJlPiwgU3RydWN0dXJlKiBwcm90b3R5
cGVGdW5jdGlvblN0cnVjdHVyZSk7CisgICAgICAgIEVycm9yUHJvdG90eXBlKEV4ZWNTdGF0ZSos
IEpTR2xvYmFsT2JqZWN0KiwgTm9uTnVsbFBhc3NSZWZQdHI8U3RydWN0dXJlPiwgU3RydWN0dXJl
KiBmdW5jdGlvblN0cnVjdHVyZSk7CiAgICAgfTsKIAogfSAvLyBuYW1lc3BhY2UgSlNDCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmNwcAkocmV2aXNp
b24gNzkxNDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMzUsMTEgKzM1LDkgQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAK
LSNpZiBFTkFCTEUoSklUKQogTmF0aXZlRXhlY3V0YWJsZTo6fk5hdGl2ZUV4ZWN1dGFibGUoKQog
ewogfQotI2VuZGlmCiAKIFZQdHJIYWNrRXhlY3V0YWJsZTo6flZQdHJIYWNrRXhlY3V0YWJsZSgp
CiB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5oCShy
ZXZpc2lvbiA3OTE0MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFi
bGUuaAkod29ya2luZyBjb3B5KQpAQCAtOTIsMjIgKzkyLDI5IEBAIG5hbWVzcGFjZSBKU0Mgewog
I2VuZGlmCiAgICAgfTsKIAotI2lmIEVOQUJMRShKSVQpCiAgICAgY2xhc3MgTmF0aXZlRXhlY3V0
YWJsZSA6IHB1YmxpYyBFeGVjdXRhYmxlQmFzZSB7CiAgICAgICAgIGZyaWVuZCBjbGFzcyBKSVQ7
CiAgICAgcHVibGljOgorI2lmIEVOQUJMRShKSVQpCiAgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRy
PE5hdGl2ZUV4ZWN1dGFibGU+IGNyZWF0ZShNYWNyb0Fzc2VtYmxlckNvZGVQdHIgY2FsbFRodW5r
LCBOYXRpdmVGdW5jdGlvbiBmdW5jdGlvbiwgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyIGNvbnN0cnVj
dFRodW5rLCBOYXRpdmVGdW5jdGlvbiBjb25zdHJ1Y3RvcikKICAgICAgICAgewogICAgICAgICAg
ICAgaWYgKCFjYWxsVGh1bmspCiAgICAgICAgICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBO
YXRpdmVFeGVjdXRhYmxlKEpJVENvZGUoKSwgZnVuY3Rpb24sIEpJVENvZGUoKSwgY29uc3RydWN0
b3IpKTsKICAgICAgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgTmF0aXZlRXhlY3V0YWJsZShK
SVRDb2RlOjpIb3N0RnVuY3Rpb24oY2FsbFRodW5rKSwgZnVuY3Rpb24sIEpJVENvZGU6Okhvc3RG
dW5jdGlvbihjb25zdHJ1Y3RUaHVuayksIGNvbnN0cnVjdG9yKSk7CiAgICAgICAgIH0KKyNlbHNl
CisgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPE5hdGl2ZUV4ZWN1dGFibGU+IGNyZWF0ZShOYXRp
dmVGdW5jdGlvbiBmdW5jdGlvbiwgTmF0aXZlRnVuY3Rpb24gY29uc3RydWN0b3IpCisgICAgICAg
IHsKKyAgICAgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgTmF0aXZlRXhlY3V0YWJsZShmdW5j
dGlvbiwgY29uc3RydWN0b3IpKTsKKyAgICAgICAgfQorI2VuZGlmCiAKICAgICAgICAgfk5hdGl2
ZUV4ZWN1dGFibGUoKTsKIAogICAgICAgICBOYXRpdmVGdW5jdGlvbiBmdW5jdGlvbigpIHsgcmV0
dXJuIG1fZnVuY3Rpb247IH0KIAogICAgIHByaXZhdGU6CisjaWYgRU5BQkxFKEpJVCkKICAgICAg
ICAgTmF0aXZlRXhlY3V0YWJsZShKSVRDb2RlIGNhbGxUaHVuaywgTmF0aXZlRnVuY3Rpb24gZnVu
Y3Rpb24sIEpJVENvZGUgY29uc3RydWN0VGh1bmssIE5hdGl2ZUZ1bmN0aW9uIGNvbnN0cnVjdG9y
KQogICAgICAgICAgICAgOiBFeGVjdXRhYmxlQmFzZShOVU1fUEFSQU1FVEVSU19JU19IT1NUKQog
ICAgICAgICAgICAgLCBtX2Z1bmN0aW9uKGZ1bmN0aW9uKQpAQCAtMTE4LDEzICsxMjUsMjAgQEAg
bmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICBtX2ppdENvZGVGb3JDYWxsV2l0aEFyaXR5Q2hl
Y2sgPSBjYWxsVGh1bmsuYWRkcmVzc0ZvckNhbGwoKTsKICAgICAgICAgICAgIG1faml0Q29kZUZv
ckNvbnN0cnVjdFdpdGhBcml0eUNoZWNrID0gY29uc3RydWN0VGh1bmsuYWRkcmVzc0ZvckNhbGwo
KTsKICAgICAgICAgfQorI2Vsc2UKKyAgICAgICAgTmF0aXZlRXhlY3V0YWJsZShOYXRpdmVGdW5j
dGlvbiBmdW5jdGlvbiwgTmF0aXZlRnVuY3Rpb24gY29uc3RydWN0b3IpCisgICAgICAgICAgICA6
IEV4ZWN1dGFibGVCYXNlKE5VTV9QQVJBTUVURVJTX0lTX0hPU1QpCisgICAgICAgICAgICAsIG1f
ZnVuY3Rpb24oZnVuY3Rpb24pCisgICAgICAgICAgICAsIG1fY29uc3RydWN0b3IoY29uc3RydWN0
b3IpCisgICAgICAgIHsKKyAgICAgICAgfQorI2VuZGlmCiAKICAgICAgICAgTmF0aXZlRnVuY3Rp
b24gbV9mdW5jdGlvbjsKICAgICAgICAgLy8gUHJvYmFibHkgc2hvdWxkIGJlIGEgTmF0aXZlQ29u
c3RydWN0b3IsIGJ1dCB0aGlzIHdpbGwgY3VycmVudGx5IHJlcXVpcmUgcmV3cml0aW5nIHRoZSBK
SVQKICAgICAgICAgLy8gdHJhbXBvbGluZS4gSXQgbWF5IGJlIGVhc2llciB0byBtYWtlIE5hdGl2
ZUZ1bmN0aW9uIGJlIHBhc3NlZCAndGhpcycgYXMgYSBwYXJ0IG9mIHRoZSBBcmdMaXN0LgogICAg
ICAgICBOYXRpdmVGdW5jdGlvbiBtX2NvbnN0cnVjdG9yOwogICAgIH07Ci0jZW5kaWYKIAogICAg
IGNsYXNzIFZQdHJIYWNrRXhlY3V0YWJsZSA6IHB1YmxpYyBFeGVjdXRhYmxlQmFzZSB7CiAgICAg
cHVibGljOgpAQCAtMzk4LDEzICs0MTIsMTEgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHJl
dHVybiBtX2V4ZWN1dGFibGUtPmlzSG9zdEZ1bmN0aW9uKCk7CiAgICAgfQogCi0jaWYgRU5BQkxF
KEpJVCkKICAgICBpbmxpbmUgTmF0aXZlRnVuY3Rpb24gSlNGdW5jdGlvbjo6bmF0aXZlRnVuY3Rp
b24oKQogICAgIHsKICAgICAgICAgQVNTRVJUKGlzSG9zdEZ1bmN0aW9uKCkpOwogICAgICAgICBy
ZXR1cm4gc3RhdGljX2Nhc3Q8TmF0aXZlRXhlY3V0YWJsZSo+KG1fZXhlY3V0YWJsZS5nZXQoKSkt
PmZ1bmN0aW9uKCk7CiAgICAgfQotI2VuZGlmCiB9CiAKICNlbmRpZgpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25Qcm90b3R5cGUuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uUHJvdG90eXBlLmNwcAkocmV2
aXNpb24gNzkxNDIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvblBy
b3RvdHlwZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI4LDcgKzI4LDYgQEAKICNpbmNsdWRlICJK
U1N0cmluZ0J1aWxkZXIuaCIKICNpbmNsdWRlICJJbnRlcnByZXRlci5oIgogI2luY2x1ZGUgIkxl
eGVyLmgiCi0jaW5jbHVkZSAiUHJvdG90eXBlRnVuY3Rpb24uaCIKIAogbmFtZXNwYWNlIEpTQyB7
CiAKQEAgLTQ0LDEyICs0MywxMiBAQCBGdW5jdGlvblByb3RvdHlwZTo6RnVuY3Rpb25Qcm90b3R5
cGUoRXhlCiAgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24oZXhlYy0+Z2xvYmFsRGF0YSgp
LCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkubGVuZ3RoLCBqc051bWJlcigwKSwgRG9udERlbGV0ZSB8
IFJlYWRPbmx5IHwgRG9udEVudW0pOwogfQogCi12b2lkIEZ1bmN0aW9uUHJvdG90eXBlOjphZGRG
dW5jdGlvblByb3BlcnRpZXMoRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBTdHJ1Y3R1cmUqIHByb3RvdHlwZUZ1bmN0aW9uU3RydWN0dXJlLCBOYXRpdmVGdW5j
dGlvbldyYXBwZXIqKiBjYWxsRnVuY3Rpb24sIE5hdGl2ZUZ1bmN0aW9uV3JhcHBlcioqIGFwcGx5
RnVuY3Rpb24pCit2b2lkIEZ1bmN0aW9uUHJvdG90eXBlOjphZGRGdW5jdGlvblByb3BlcnRpZXMo
RXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUq
IGZ1bmN0aW9uU3RydWN0dXJlLCBKU0Z1bmN0aW9uKiogY2FsbEZ1bmN0aW9uLCBKU0Z1bmN0aW9u
KiogYXBwbHlGdW5jdGlvbikKIHsKLSAgICBwdXREaXJlY3RGdW5jdGlvbldpdGhvdXRUcmFuc2l0
aW9uKGV4ZWMsIG5ldyAoZXhlYykgTmF0aXZlRnVuY3Rpb25XcmFwcGVyKGV4ZWMsIGdsb2JhbE9i
amVjdCwgcHJvdG90eXBlRnVuY3Rpb25TdHJ1Y3R1cmUsIDAsIGV4ZWMtPnByb3BlcnR5TmFtZXMo
KS50b1N0cmluZywgZnVuY3Rpb25Qcm90b0Z1bmNUb1N0cmluZyksIERvbnRFbnVtKTsKLSAgICAq
YXBwbHlGdW5jdGlvbiA9IG5ldyAoZXhlYykgTmF0aXZlRnVuY3Rpb25XcmFwcGVyKGV4ZWMsIGds
b2JhbE9iamVjdCwgcHJvdG90eXBlRnVuY3Rpb25TdHJ1Y3R1cmUsIDIsIGV4ZWMtPnByb3BlcnR5
TmFtZXMoKS5hcHBseSwgZnVuY3Rpb25Qcm90b0Z1bmNBcHBseSk7CisgICAgcHV0RGlyZWN0RnVu
Y3Rpb25XaXRob3V0VHJhbnNpdGlvbihleGVjLCBuZXcgKGV4ZWMpIEpTRnVuY3Rpb24oZXhlYywg
Z2xvYmFsT2JqZWN0LCBmdW5jdGlvblN0cnVjdHVyZSwgMCwgZXhlYy0+cHJvcGVydHlOYW1lcygp
LnRvU3RyaW5nLCBmdW5jdGlvblByb3RvRnVuY1RvU3RyaW5nKSwgRG9udEVudW0pOworICAgICph
cHBseUZ1bmN0aW9uID0gbmV3IChleGVjKSBKU0Z1bmN0aW9uKGV4ZWMsIGdsb2JhbE9iamVjdCwg
ZnVuY3Rpb25TdHJ1Y3R1cmUsIDIsIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5hcHBseSwgZnVuY3Rp
b25Qcm90b0Z1bmNBcHBseSk7CiAgICAgcHV0RGlyZWN0RnVuY3Rpb25XaXRob3V0VHJhbnNpdGlv
bihleGVjLCAqYXBwbHlGdW5jdGlvbiwgRG9udEVudW0pOwotICAgICpjYWxsRnVuY3Rpb24gPSBu
ZXcgKGV4ZWMpIE5hdGl2ZUZ1bmN0aW9uV3JhcHBlcihleGVjLCBnbG9iYWxPYmplY3QsIHByb3Rv
dHlwZUZ1bmN0aW9uU3RydWN0dXJlLCAxLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkuY2FsbCwgZnVu
Y3Rpb25Qcm90b0Z1bmNDYWxsKTsKKyAgICAqY2FsbEZ1bmN0aW9uID0gbmV3IChleGVjKSBKU0Z1
bmN0aW9uKGV4ZWMsIGdsb2JhbE9iamVjdCwgZnVuY3Rpb25TdHJ1Y3R1cmUsIDEsIGV4ZWMtPnBy
b3BlcnR5TmFtZXMoKS5jYWxsLCBmdW5jdGlvblByb3RvRnVuY0NhbGwpOwogICAgIHB1dERpcmVj
dEZ1bmN0aW9uV2l0aG91dFRyYW5zaXRpb24oZXhlYywgKmNhbGxGdW5jdGlvbiwgRG9udEVudW0p
OwogfQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvblByb3Rv
dHlwZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0
aW9uUHJvdG90eXBlLmgJKHJldmlzaW9uIDc5MTQwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvRnVuY3Rpb25Qcm90b3R5cGUuaAkod29ya2luZyBjb3B5KQpAQCAtMjUsMTIgKzI1
LDEwIEBACiAKIG5hbWVzcGFjZSBKU0MgewogCi0gICAgY2xhc3MgUHJvdG90eXBlRnVuY3Rpb247
Ci0KICAgICBjbGFzcyBGdW5jdGlvblByb3RvdHlwZSA6IHB1YmxpYyBJbnRlcm5hbEZ1bmN0aW9u
IHsKICAgICBwdWJsaWM6CiAgICAgICAgIEZ1bmN0aW9uUHJvdG90eXBlKEV4ZWNTdGF0ZSosIEpT
R2xvYmFsT2JqZWN0KiwgTm9uTnVsbFBhc3NSZWZQdHI8U3RydWN0dXJlPik7Ci0gICAgICAgIHZv
aWQgYWRkRnVuY3Rpb25Qcm9wZXJ0aWVzKEV4ZWNTdGF0ZSosIEpTR2xvYmFsT2JqZWN0KiwgU3Ry
dWN0dXJlKiBwcm90b3R5cGVGdW5jdGlvblN0cnVjdHVyZSwgTmF0aXZlRnVuY3Rpb25XcmFwcGVy
KiogY2FsbEZ1bmN0aW9uLCBOYXRpdmVGdW5jdGlvbldyYXBwZXIqKiBhcHBseUZ1bmN0aW9uKTsK
KyAgICAgICAgdm9pZCBhZGRGdW5jdGlvblByb3BlcnRpZXMoRXhlY1N0YXRlKiwgSlNHbG9iYWxP
YmplY3QqLCBTdHJ1Y3R1cmUqIGZ1bmN0aW9uU3RydWN0dXJlLCBKU0Z1bmN0aW9uKiogY2FsbEZ1
bmN0aW9uLCBKU0Z1bmN0aW9uKiogYXBwbHlGdW5jdGlvbik7CiAKICAgICAgICAgc3RhdGljIFBh
c3NSZWZQdHI8U3RydWN0dXJlPiBjcmVhdGVTdHJ1Y3R1cmUoSlNWYWx1ZSBwcm90bykKICAgICAg
ICAgewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2xvYmFsRXZhbEZ1bmN0
aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HbG9i
YWxFdmFsRnVuY3Rpb24uY3BwCShyZXZpc2lvbiA3OTE0MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0dsb2JhbEV2YWxGdW5jdGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEs
NDggKzAsMCBAQAotLyoKLSAqICBDb3B5cmlnaHQgKEMpIDE5OTktMjAwMiBIYXJyaSBQb3J0ZW4g
KHBvcnRlbkBrZGUub3JnKQotICogIENvcHlyaWdodCAoQykgMjAwMSBQZXRlciBLZWxseSAocG1r
QHBvc3QuY29tKQotICogIENvcHlyaWdodCAoQykgMjAwMywgMjAwNCwgMjAwNSwgMjAwNiwgMjAw
NywgMjAwOCwgMjAwOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKiAgQ29weXJp
Z2h0IChDKSAyMDA3IENhbWVyb24gWndhcmljaCAoY3d6d2FyaWNoQHV3YXRlcmxvby5jYSkKLSAq
ICBDb3B5cmlnaHQgKEMpIDIwMDcgTWFrcyBPcmxvdmljaAotICoKLSAqICBUaGlzIGxpYnJhcnkg
aXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0gKiAgbW9k
aWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMK
LSAqICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9u
OyBlaXRoZXIKLSAqICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlv
bikgYW55IGxhdGVyIHZlcnNpb24uCi0gKgotICogIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRl
ZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotICogIGJ1dCBXSVRIT1VUIEFO
WSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0gKiAgTUVS
Q0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRo
ZSBHTlUKLSAqICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWls
cy4KLSAqCi0gKiAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExp
YnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotICogIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5
OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCi0gKiAgdGhlIEZy
ZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBG
bG9vciwKLSAqICBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KLSAqCi0gKi8KLQotI2luY2x1
ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIkdsb2JhbEV2YWxGdW5jdGlvbi5oIgotCi0jaW5jbHVk
ZSAiSlNHbG9iYWxPYmplY3QuaCIKLSNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgotCi1uYW1l
c3BhY2UgSlNDIHsKLQotQVNTRVJUX0NMQVNTX0ZJVFNfSU5fQ0VMTChHbG9iYWxFdmFsRnVuY3Rp
b24pOwotCi1HbG9iYWxFdmFsRnVuY3Rpb246Okdsb2JhbEV2YWxGdW5jdGlvbihFeGVjU3RhdGUq
IGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIE5vbk51bGxQYXNzUmVmUHRyPFN0
cnVjdHVyZT4gc3RydWN0dXJlLCBpbnQgbGVuLCBjb25zdCBJZGVudGlmaWVyJiBuYW1lLCBOYXRp
dmVGdW5jdGlvbiBmdW5jdGlvbiwgSlNHbG9iYWxPYmplY3QqIGNhY2hlZEdsb2JhbE9iamVjdCkK
LSAgICA6IFByb3RvdHlwZUZ1bmN0aW9uKGV4ZWMsIGdsb2JhbE9iamVjdCwgc3RydWN0dXJlLCBs
ZW4sIG5hbWUsIGZ1bmN0aW9uKQotICAgICwgbV9jYWNoZWRHbG9iYWxPYmplY3QoZXhlYy0+Z2xv
YmFsRGF0YSgpLCB0aGlzLCBjYWNoZWRHbG9iYWxPYmplY3QpCi17Ci0gICAgQVNTRVJUX0FSRyhj
YWNoZWRHbG9iYWxPYmplY3QsIGNhY2hlZEdsb2JhbE9iamVjdCk7Ci19Ci0KLXZvaWQgR2xvYmFs
RXZhbEZ1bmN0aW9uOjptYXJrQ2hpbGRyZW4oTWFya1N0YWNrJiBtYXJrU3RhY2spCi17Ci0gICAg
UHJvdG90eXBlRnVuY3Rpb246Om1hcmtDaGlsZHJlbihtYXJrU3RhY2spOwotICAgIG1hcmtTdGFj
ay5hcHBlbmQoJm1fY2FjaGVkR2xvYmFsT2JqZWN0KTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgSlND
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HbG9iYWxFdmFsRnVuY3Rpb24u
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HbG9iYWxFdmFs
RnVuY3Rpb24uaAkocmV2aXNpb24gNzkxNDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9HbG9iYWxFdmFsRnVuY3Rpb24uaAkod29ya2luZyBjb3B5KQpAQCAtMSw1NCArMCwwIEBA
Ci0vKgotICogIENvcHlyaWdodCAoQykgMTk5OS0yMDAwIEhhcnJpIFBvcnRlbiAocG9ydGVuQGtk
ZS5vcmcpCi0gKiAgQ29weXJpZ2h0IChDKSAyMDAzLCAyMDA2LCAyMDA3LCAyMDA4LCAyMDA5IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqICBDb3B5cmlnaHQgKEMpIDIwMDcgQ2Ft
ZXJvbiBad2FyaWNoIChjd3p3YXJpY2hAdXdhdGVybG9vLmNhKQotICogIENvcHlyaWdodCAoQykg
MjAwNyBNYWtzIE9ybG92aWNoCi0gKgotICogIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJl
OyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSAqICBtb2RpZnkgaXQgdW5kZXIgdGhl
IHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwotICogIExpY2Vuc2UgYXMg
cHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgotICogIHZl
cnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVy
c2lvbi4KLSAqCi0gKiAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRo
YXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gKiAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRo
b3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSAqICBNRVJDSEFOVEFCSUxJVFkgb3Ig
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotICogIExpYnJh
cnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotICoKLSAqICBZb3Ug
c2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1
YmxpYyBMaWNlbnNlCi0gKiAgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBD
T1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KLSAqICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3Vu
ZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAotICogIEJvc3Rv
biwgTUEgMDIxMTAtMTMwMSwgVVNBLgotICoKLSAqLwotCi0jaWZuZGVmIEdsb2JhbEV2YWxGdW5j
dGlvbl9oCi0jZGVmaW5lIEdsb2JhbEV2YWxGdW5jdGlvbl9oCi0KLSNpbmNsdWRlICJQcm90b3R5
cGVGdW5jdGlvbi5oIgotCi1uYW1lc3BhY2UgSlNDIHsKLQotICAgIGNsYXNzIEpTR2xvYmFsT2Jq
ZWN0OwotCi0gICAgY2xhc3MgR2xvYmFsRXZhbEZ1bmN0aW9uIDogcHVibGljIFByb3RvdHlwZUZ1
bmN0aW9uIHsKLSAgICBwdWJsaWM6Ci0gICAgICAgIEdsb2JhbEV2YWxGdW5jdGlvbihFeGVjU3Rh
dGUqLCBKU0dsb2JhbE9iamVjdCosIE5vbk51bGxQYXNzUmVmUHRyPFN0cnVjdHVyZT4sIGludCBs
ZW4sIGNvbnN0IElkZW50aWZpZXImLCBOYXRpdmVGdW5jdGlvbiwgSlNHbG9iYWxPYmplY3QqIGV4
cGVjdGVkVGhpc09iamVjdCk7Ci0gICAgICAgIEpTR2xvYmFsT2JqZWN0KiBjYWNoZWRHbG9iYWxP
YmplY3QoKSBjb25zdCB7IHJldHVybiBtX2NhY2hlZEdsb2JhbE9iamVjdC5nZXQoKTsgfQotCi0g
ICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPFN0cnVjdHVyZT4gY3JlYXRlU3RydWN0dXJlKEpTVmFs
dWUgcHJvdG90eXBlKSAKLSAgICAgICAgeyAKLSAgICAgICAgICAgIHJldHVybiBTdHJ1Y3R1cmU6
OmNyZWF0ZShwcm90b3R5cGUsIFR5cGVJbmZvKE9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwg
QW5vbnltb3VzU2xvdENvdW50LCAmc19pbmZvKTsKLSAgICAgICAgfQotCi0gICAgcHJvdGVjdGVk
OgotICAgICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBJbXBsZW1l
bnRzSGFzSW5zdGFuY2UgfCBPdmVycmlkZXNNYXJrQ2hpbGRyZW4gfCBPdmVycmlkZXNHZXRQcm9w
ZXJ0eU5hbWVzIHwgUHJvdG90eXBlRnVuY3Rpb246OlN0cnVjdHVyZUZsYWdzOwotCi0gICAgcHJp
dmF0ZToKLSAgICAgICAgdmlydHVhbCB2b2lkIG1hcmtDaGlsZHJlbihNYXJrU3RhY2smKTsKLQot
ICAgICAgICBXcml0ZUJhcnJpZXI8SlNHbG9iYWxPYmplY3Q+IG1fY2FjaGVkR2xvYmFsT2JqZWN0
OwotICAgIH07Ci0KLX0gLy8gbmFtZXNwYWNlIEpTQwotCi0jZW5kaWYgLy8gR2xvYmFsRXZhbEZ1
bmN0aW9uX2gKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24u
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rp
b24uY3BwCShyZXZpc2lvbiA3OTE0MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTRnVuY3Rpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MiwxMiArNDIsMTAgQEAgdXNpbmcg
bmFtZXNwYWNlIFdURjsKIHVzaW5nIG5hbWVzcGFjZSBVbmljb2RlOwogCiBuYW1lc3BhY2UgSlND
IHsKLSNpZiBFTkFCTEUoSklUKQogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxsSG9z
dEZ1bmN0aW9uQXNDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIGV4ZWMpCiB7CiAgICAgcmV0dXJuIHRo
cm93Vk1FcnJvcihleGVjLCBjcmVhdGVOb3RBQ29uc3RydWN0b3JFcnJvcihleGVjLCBleGVjLT5j
YWxsZWUoKSkpOwogfQotI2VuZGlmCiAKIEFTU0VSVF9DTEFTU19GSVRTX0lOX0NFTEwoSlNGdW5j
dGlvbik7CiAKQEAgLTY1LDcgKzYzLDYgQEAgSlNGdW5jdGlvbjo6SlNGdW5jdGlvbihOb25OdWxs
UGFzc1JlZlB0cgogewogfQogCi0jaWYgRU5BQkxFKEpJVCkKIEpTRnVuY3Rpb246OkpTRnVuY3Rp
b24oRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBOb25OdWxs
UGFzc1JlZlB0cjxTdHJ1Y3R1cmU+IHN0cnVjdHVyZSwgaW50IGxlbmd0aCwgY29uc3QgSWRlbnRp
ZmllciYgbmFtZSwgUGFzc1JlZlB0cjxOYXRpdmVFeGVjdXRhYmxlPiB0aHVuaykKICAgICA6IEJh
c2UoZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUpCiAgICAgLCBtX2V4ZWN1dGFibGUodGh1bmspCkBA
IC03NCwyMyArNzEsMTQgQEAgSlNGdW5jdGlvbjo6SlNGdW5jdGlvbihFeGVjU3RhdGUqIGV4ZWMs
IAogICAgIHB1dERpcmVjdChleGVjLT5nbG9iYWxEYXRhKCksIGV4ZWMtPmdsb2JhbERhdGEoKS5w
cm9wZXJ0eU5hbWVzLT5uYW1lLCBqc1N0cmluZyhleGVjLCBuYW1lLmlzTnVsbCgpID8gIiIgOiBu
YW1lLnVzdHJpbmcoKSksIERvbnREZWxldGUgfCBSZWFkT25seSB8IERvbnRFbnVtKTsKICAgICBw
dXREaXJlY3QoZXhlYy0+Z2xvYmFsRGF0YSgpLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkubGVuZ3Ro
LCBqc051bWJlcihsZW5ndGgpLCBEb250RGVsZXRlIHwgUmVhZE9ubHkgfCBEb250RW51bSk7CiB9
Ci0jZW5kaWYKIAogSlNGdW5jdGlvbjo6SlNGdW5jdGlvbihFeGVjU3RhdGUqIGV4ZWMsIEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIE5vbk51bGxQYXNzUmVmUHRyPFN0cnVjdHVyZT4gc3Ry
dWN0dXJlLCBpbnQgbGVuZ3RoLCBjb25zdCBJZGVudGlmaWVyJiBuYW1lLCBOYXRpdmVGdW5jdGlv
biBmdW5jKQogICAgIDogQmFzZShnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSkKLSNpZiBFTkFCTEUo
SklUKQogICAgICwgbV9leGVjdXRhYmxlKGV4ZWMtPmdsb2JhbERhdGEoKS5nZXRIb3N0RnVuY3Rp
b24oZnVuYykpCi0jZW5kaWYKICAgICAsIG1fc2NvcGVDaGFpbihnbG9iYWxPYmplY3QtPmdsb2Jh
bFNjb3BlQ2hhaW4oKSkKIHsKICAgICBwdXREaXJlY3QoZXhlYy0+Z2xvYmFsRGF0YSgpLCBleGVj
LT5nbG9iYWxEYXRhKCkucHJvcGVydHlOYW1lcy0+bmFtZSwganNTdHJpbmcoZXhlYywgbmFtZS5p
c051bGwoKSA/ICIiIDogbmFtZS51c3RyaW5nKCkpLCBEb250RGVsZXRlIHwgUmVhZE9ubHkgfCBE
b250RW51bSk7Ci0jaWYgRU5BQkxFKEpJVCkKICAgICBwdXREaXJlY3QoZXhlYy0+Z2xvYmFsRGF0
YSgpLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkubGVuZ3RoLCBqc051bWJlcihsZW5ndGgpLCBEb250
RGVsZXRlIHwgUmVhZE9ubHkgfCBEb250RW51bSk7Ci0jZWxzZQotICAgIFVOVVNFRF9QQVJBTShs
ZW5ndGgpOwotICAgIFVOVVNFRF9QQVJBTShmdW5jKTsKLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsKLSNlbmRpZgogfQogCiBKU0Z1bmN0aW9uOjpKU0Z1bmN0aW9uKEV4ZWNTdGF0ZSogZXhlYywg
Tm9uTnVsbFBhc3NSZWZQdHI8RnVuY3Rpb25FeGVjdXRhYmxlPiBleGVjdXRhYmxlLCBTY29wZUNo
YWluTm9kZSogc2NvcGVDaGFpbk5vZGUpCkBAIC0xNjUsMTIgKzE1MywxMCBAQCB2b2lkIEpTRnVu
Y3Rpb246Om1hcmtDaGlsZHJlbihNYXJrU3RhY2smCiAKIENhbGxUeXBlIEpTRnVuY3Rpb246Omdl
dENhbGxEYXRhKENhbGxEYXRhJiBjYWxsRGF0YSkKIHsKLSNpZiBFTkFCTEUoSklUKQogICAgIGlm
IChpc0hvc3RGdW5jdGlvbigpKSB7CiAgICAgICAgIGNhbGxEYXRhLm5hdGl2ZS5mdW5jdGlvbiA9
IG5hdGl2ZUZ1bmN0aW9uKCk7CiAgICAgICAgIHJldHVybiBDYWxsVHlwZUhvc3Q7CiAgICAgfQot
I2VuZGlmCiAgICAgY2FsbERhdGEuanMuZnVuY3Rpb25FeGVjdXRhYmxlID0ganNFeGVjdXRhYmxl
KCk7CiAgICAgY2FsbERhdGEuanMuc2NvcGVDaGFpbiA9IHNjb3BlKCkubm9kZSgpOwogICAgIHJl
dHVybiBDYWxsVHlwZUpTOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNG
dW5jdGlvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
RnVuY3Rpb24uaAkocmV2aXNpb24gNzkxNDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0Z1bmN0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ1LDkgKzQ1LDcgQEAgbmFtZXNw
YWNlIEpTQyB7CiAKICAgICBwdWJsaWM6CiAgICAgICAgIEpTRnVuY3Rpb24oRXhlY1N0YXRlKiwg
SlNHbG9iYWxPYmplY3QqLCBOb25OdWxsUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+LCBpbnQgbGVuZ3Ro
LCBjb25zdCBJZGVudGlmaWVyJiwgTmF0aXZlRnVuY3Rpb24pOwotI2lmIEVOQUJMRShKSVQpCiAg
ICAgICAgIEpTRnVuY3Rpb24oRXhlY1N0YXRlKiwgSlNHbG9iYWxPYmplY3QqLCBOb25OdWxsUGFz
c1JlZlB0cjxTdHJ1Y3R1cmU+LCBpbnQgbGVuZ3RoLCBjb25zdCBJZGVudGlmaWVyJiwgUGFzc1Jl
ZlB0cjxOYXRpdmVFeGVjdXRhYmxlPik7Ci0jZW5kaWYKICAgICAgICAgSlNGdW5jdGlvbihFeGVj
U3RhdGUqLCBOb25OdWxsUGFzc1JlZlB0cjxGdW5jdGlvbkV4ZWN1dGFibGU+LCBTY29wZUNoYWlu
Tm9kZSopOwogICAgICAgICB2aXJ0dWFsIH5KU0Z1bmN0aW9uKCk7CiAKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsRGF0YS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxEYXRhLmNwcAkocmV2aXNpb24gNzkx
NDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbERhdGEuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0yODQsNiArMjg0LDExIEBAIFBhc3NSZWZQdHI8TmF0aXZlRXhlY3V0
YWJsZT4gSlNHbG9iYWxEYXQKIHsKICAgICByZXR1cm4gaml0U3R1YnMtPmhvc3RGdW5jdGlvblN0
dWIodGhpcywgZnVuY3Rpb24sIGdlbmVyYXRvcik7CiB9CisjZWxzZQorUGFzc1JlZlB0cjxOYXRp
dmVFeGVjdXRhYmxlPiBKU0dsb2JhbERhdGE6OmdldEhvc3RGdW5jdGlvbihOYXRpdmVGdW5jdGlv
biBmdW5jdGlvbikKK3sKKyAgICByZXR1cm4gTmF0aXZlRXhlY3V0YWJsZTo6Y3JlYXRlKGZ1bmN0
aW9uLCBjYWxsSG9zdEZ1bmN0aW9uQXNDb25zdHJ1Y3Rvcik7Cit9CiAjZW5kaWYKIAogSlNHbG9i
YWxEYXRhOjpDbGllbnREYXRhOjp+Q2xpZW50RGF0YSgpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0dsb2JhbERhdGEuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0dsb2JhbERhdGEuaAkocmV2aXNpb24gNzkxNDApCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbERhdGEuaAkod29ya2luZyBjb3B5KQpA
QCAtNjMsNiArNjMsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBjbGFzcyBKU0dsb2JhbE9iamVj
dDsKICAgICBjbGFzcyBKU09iamVjdDsKICAgICBjbGFzcyBMZXhlcjsKKyAgICBjbGFzcyBOYXRp
dmVFeGVjdXRhYmxlOwogICAgIGNsYXNzIFBhcnNlcjsKICAgICBjbGFzcyBSZWdFeHBDYWNoZTsK
ICAgICBjbGFzcyBTdHJpbmdpZmllcjsKQEAgLTE5OSw5ICsyMDAsMTAgQEAgbmFtZXNwYWNlIEpT
QyB7CiAgICAgICAgIHsKICAgICAgICAgICAgIHJldHVybiBqaXRTdHVicy0+Y3RpU3R1Yih0aGlz
LCBnZW5lcmF0b3IpOwogICAgICAgICB9Ci0gICAgICAgIFBhc3NSZWZQdHI8TmF0aXZlRXhlY3V0
YWJsZT4gZ2V0SG9zdEZ1bmN0aW9uKE5hdGl2ZUZ1bmN0aW9uIGZ1bmN0aW9uKTsKICAgICAgICAg
UGFzc1JlZlB0cjxOYXRpdmVFeGVjdXRhYmxlPiBnZXRIb3N0RnVuY3Rpb24oTmF0aXZlRnVuY3Rp
b24gZnVuY3Rpb24sIFRodW5rR2VuZXJhdG9yIGdlbmVyYXRvcik7CiAjZW5kaWYKKyAgICAgICAg
UGFzc1JlZlB0cjxOYXRpdmVFeGVjdXRhYmxlPiBnZXRIb3N0RnVuY3Rpb24oTmF0aXZlRnVuY3Rp
b24gZnVuY3Rpb24pOworCiAgICAgICAgIFRpbWVvdXRDaGVja2VyIHRpbWVvdXRDaGVja2VyOwog
ICAgICAgICBUZXJtaW5hdG9yIHRlcm1pbmF0b3I7CiAgICAgICAgIEhlYXAgaGVhcDsKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAJ
KHJldmlzaW9uIDc5MTQwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9i
YWxPYmplY3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00Niw3ICs0Niw2IEBACiAjaW5jbHVkZSAi
RXJyb3JQcm90b3R5cGUuaCIKICNpbmNsdWRlICJGdW5jdGlvbkNvbnN0cnVjdG9yLmgiCiAjaW5j
bHVkZSAiRnVuY3Rpb25Qcm90b3R5cGUuaCIKLSNpbmNsdWRlICJHbG9iYWxFdmFsRnVuY3Rpb24u
aCIKICNpbmNsdWRlICJKU0Z1bmN0aW9uLmgiCiAjaW5jbHVkZSAiSlNHbG9iYWxPYmplY3RGdW5j
dGlvbnMuaCIKICNpbmNsdWRlICJKU0xvY2suaCIKQEAgLTE4MiwxOSArMTgxLDE4IEBAIHZvaWQg
SlNHbG9iYWxPYmplY3Q6OnJlc2V0KEpTVmFsdWUgcHJvdG8KICAgICAvLyBQcm90b3R5cGVzCiAK
ICAgICBkKCktPmZ1bmN0aW9uUHJvdG90eXBlLnNldChleGVjLT5nbG9iYWxEYXRhKCksIHRoaXMs
IG5ldyAoZXhlYykgRnVuY3Rpb25Qcm90b3R5cGUoZXhlYywgdGhpcywgRnVuY3Rpb25Qcm90b3R5
cGU6OmNyZWF0ZVN0cnVjdHVyZShqc051bGwoKSkpKTsgLy8gVGhlIHJlYWwgcHJvdG90eXBlIHdp
bGwgYmUgc2V0IG9uY2UgT2JqZWN0UHJvdG90eXBlIGlzIGNyZWF0ZWQuCi0gICAgZCgpLT5wcm90
b3R5cGVGdW5jdGlvblN0cnVjdHVyZSA9IE5hdGl2ZUZ1bmN0aW9uV3JhcHBlcjo6Y3JlYXRlU3Ry
dWN0dXJlKGQoKS0+ZnVuY3Rpb25Qcm90b3R5cGUuZ2V0KCkpOworICAgIGQoKS0+ZnVuY3Rpb25T
dHJ1Y3R1cmUgPSBKU0Z1bmN0aW9uOjpjcmVhdGVTdHJ1Y3R1cmUoZCgpLT5mdW5jdGlvblByb3Rv
dHlwZS5nZXQoKSk7CiAgICAgZCgpLT5pbnRlcm5hbEZ1bmN0aW9uU3RydWN0dXJlID0gSW50ZXJu
YWxGdW5jdGlvbjo6Y3JlYXRlU3RydWN0dXJlKGQoKS0+ZnVuY3Rpb25Qcm90b3R5cGUuZ2V0KCkp
OwotICAgIE5hdGl2ZUZ1bmN0aW9uV3JhcHBlciogY2FsbEZ1bmN0aW9uID0gMDsKLSAgICBOYXRp
dmVGdW5jdGlvbldyYXBwZXIqIGFwcGx5RnVuY3Rpb24gPSAwOwotICAgIGQoKS0+ZnVuY3Rpb25Q
cm90b3R5cGUtPmFkZEZ1bmN0aW9uUHJvcGVydGllcyhleGVjLCB0aGlzLCBkKCktPnByb3RvdHlw
ZUZ1bmN0aW9uU3RydWN0dXJlLmdldCgpLCAmY2FsbEZ1bmN0aW9uLCAmYXBwbHlGdW5jdGlvbik7
CisgICAgSlNGdW5jdGlvbiogY2FsbEZ1bmN0aW9uID0gMDsKKyAgICBKU0Z1bmN0aW9uKiBhcHBs
eUZ1bmN0aW9uID0gMDsKKyAgICBkKCktPmZ1bmN0aW9uUHJvdG90eXBlLT5hZGRGdW5jdGlvblBy
b3BlcnRpZXMoZXhlYywgdGhpcywgZCgpLT5mdW5jdGlvblN0cnVjdHVyZS5nZXQoKSwgJmNhbGxG
dW5jdGlvbiwgJmFwcGx5RnVuY3Rpb24pOwogICAgIGQoKS0+Y2FsbEZ1bmN0aW9uLnNldChleGVj
LT5nbG9iYWxEYXRhKCksIHRoaXMsIGNhbGxGdW5jdGlvbik7CiAgICAgZCgpLT5hcHBseUZ1bmN0
aW9uLnNldChleGVjLT5nbG9iYWxEYXRhKCksIHRoaXMsIGFwcGx5RnVuY3Rpb24pOwotICAgIGQo
KS0+b2JqZWN0UHJvdG90eXBlLnNldChleGVjLT5nbG9iYWxEYXRhKCksIHRoaXMsIG5ldyAoZXhl
YykgT2JqZWN0UHJvdG90eXBlKGV4ZWMsIHRoaXMsIE9iamVjdFByb3RvdHlwZTo6Y3JlYXRlU3Ry
dWN0dXJlKGpzTnVsbCgpKSwgZCgpLT5wcm90b3R5cGVGdW5jdGlvblN0cnVjdHVyZS5nZXQoKSkp
OworICAgIGQoKS0+b2JqZWN0UHJvdG90eXBlLnNldChleGVjLT5nbG9iYWxEYXRhKCksIHRoaXMs
IG5ldyAoZXhlYykgT2JqZWN0UHJvdG90eXBlKGV4ZWMsIHRoaXMsIE9iamVjdFByb3RvdHlwZTo6
Y3JlYXRlU3RydWN0dXJlKGpzTnVsbCgpKSwgZCgpLT5mdW5jdGlvblN0cnVjdHVyZS5nZXQoKSkp
OwogICAgIGQoKS0+ZnVuY3Rpb25Qcm90b3R5cGUtPnN0cnVjdHVyZSgpLT5zZXRQcm90b3R5cGVX
aXRob3V0VHJhbnNpdGlvbihkKCktPm9iamVjdFByb3RvdHlwZS5nZXQoKSk7CiAKICAgICBkKCkt
PmVtcHR5T2JqZWN0U3RydWN0dXJlID0gZCgpLT5vYmplY3RQcm90b3R5cGUtPmluaGVyaXRvcklE
KCk7CiAKLSAgICBkKCktPmZ1bmN0aW9uU3RydWN0dXJlID0gSlNGdW5jdGlvbjo6Y3JlYXRlU3Ry
dWN0dXJlKGQoKS0+ZnVuY3Rpb25Qcm90b3R5cGUuZ2V0KCkpOwogICAgIGQoKS0+Y2FsbGJhY2tG
dW5jdGlvblN0cnVjdHVyZSA9IEpTQ2FsbGJhY2tGdW5jdGlvbjo6Y3JlYXRlU3RydWN0dXJlKGQo
KS0+ZnVuY3Rpb25Qcm90b3R5cGUuZ2V0KCkpOwogICAgIGQoKS0+YXJndW1lbnRzU3RydWN0dXJl
ID0gQXJndW1lbnRzOjpjcmVhdGVTdHJ1Y3R1cmUoZCgpLT5vYmplY3RQcm90b3R5cGUuZ2V0KCkp
OwogICAgIGQoKS0+Y2FsbGJhY2tDb25zdHJ1Y3RvclN0cnVjdHVyZSA9IEpTQ2FsbGJhY2tDb25z
dHJ1Y3Rvcjo6Y3JlYXRlU3RydWN0dXJlKGQoKS0+b2JqZWN0UHJvdG90eXBlLmdldCgpKTsKQEAg
LTIwNywzMiArMjA1LDMyIEBAIHZvaWQgSlNHbG9iYWxPYmplY3Q6OnJlc2V0KEpTVmFsdWUgcHJv
dG8KICAgICBkKCktPnN0cmluZ1Byb3RvdHlwZS5zZXQoZXhlYy0+Z2xvYmFsRGF0YSgpLCB0aGlz
LCBuZXcgKGV4ZWMpIFN0cmluZ1Byb3RvdHlwZShleGVjLCB0aGlzLCBTdHJpbmdQcm90b3R5cGU6
OmNyZWF0ZVN0cnVjdHVyZShkKCktPm9iamVjdFByb3RvdHlwZS5nZXQoKSkpKTsKICAgICBkKCkt
PnN0cmluZ09iamVjdFN0cnVjdHVyZSA9IFN0cmluZ09iamVjdDo6Y3JlYXRlU3RydWN0dXJlKGQo
KS0+c3RyaW5nUHJvdG90eXBlLmdldCgpKTsKIAotICAgIGQoKS0+Ym9vbGVhblByb3RvdHlwZS5z
ZXQoZXhlYy0+Z2xvYmFsRGF0YSgpLCB0aGlzLCBuZXcgKGV4ZWMpIEJvb2xlYW5Qcm90b3R5cGUo
ZXhlYywgdGhpcywgQm9vbGVhblByb3RvdHlwZTo6Y3JlYXRlU3RydWN0dXJlKGQoKS0+b2JqZWN0
UHJvdG90eXBlLmdldCgpKSwgZCgpLT5wcm90b3R5cGVGdW5jdGlvblN0cnVjdHVyZS5nZXQoKSkp
OworICAgIGQoKS0+Ym9vbGVhblByb3RvdHlwZS5zZXQoZXhlYy0+Z2xvYmFsRGF0YSgpLCB0aGlz
LCBuZXcgKGV4ZWMpIEJvb2xlYW5Qcm90b3R5cGUoZXhlYywgdGhpcywgQm9vbGVhblByb3RvdHlw
ZTo6Y3JlYXRlU3RydWN0dXJlKGQoKS0+b2JqZWN0UHJvdG90eXBlLmdldCgpKSwgZCgpLT5mdW5j
dGlvblN0cnVjdHVyZS5nZXQoKSkpOwogICAgIGQoKS0+Ym9vbGVhbk9iamVjdFN0cnVjdHVyZSA9
IEJvb2xlYW5PYmplY3Q6OmNyZWF0ZVN0cnVjdHVyZShkKCktPmJvb2xlYW5Qcm90b3R5cGUuZ2V0
KCkpOwogCi0gICAgZCgpLT5udW1iZXJQcm90b3R5cGUuc2V0KGV4ZWMtPmdsb2JhbERhdGEoKSwg
dGhpcywgbmV3IChleGVjKSBOdW1iZXJQcm90b3R5cGUoZXhlYywgdGhpcywgTnVtYmVyUHJvdG90
eXBlOjpjcmVhdGVTdHJ1Y3R1cmUoZCgpLT5vYmplY3RQcm90b3R5cGUuZ2V0KCkpLCBkKCktPnBy
b3RvdHlwZUZ1bmN0aW9uU3RydWN0dXJlLmdldCgpKSk7CisgICAgZCgpLT5udW1iZXJQcm90b3R5
cGUuc2V0KGV4ZWMtPmdsb2JhbERhdGEoKSwgdGhpcywgbmV3IChleGVjKSBOdW1iZXJQcm90b3R5
cGUoZXhlYywgdGhpcywgTnVtYmVyUHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUoZCgpLT5vYmpl
Y3RQcm90b3R5cGUuZ2V0KCkpLCBkKCktPmZ1bmN0aW9uU3RydWN0dXJlLmdldCgpKSk7CiAgICAg
ZCgpLT5udW1iZXJPYmplY3RTdHJ1Y3R1cmUgPSBOdW1iZXJPYmplY3Q6OmNyZWF0ZVN0cnVjdHVy
ZShkKCktPm51bWJlclByb3RvdHlwZS5nZXQoKSk7CiAKICAgICBkKCktPmRhdGVQcm90b3R5cGUu
c2V0KGV4ZWMtPmdsb2JhbERhdGEoKSwgdGhpcywgbmV3IChleGVjKSBEYXRlUHJvdG90eXBlKGV4
ZWMsIHRoaXMsIERhdGVQcm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZShkKCktPm9iamVjdFByb3Rv
dHlwZS5nZXQoKSkpKTsKICAgICBkKCktPmRhdGVTdHJ1Y3R1cmUgPSBEYXRlSW5zdGFuY2U6OmNy
ZWF0ZVN0cnVjdHVyZShkKCktPmRhdGVQcm90b3R5cGUuZ2V0KCkpOwogCi0gICAgZCgpLT5yZWdF
eHBQcm90b3R5cGUuc2V0KGV4ZWMtPmdsb2JhbERhdGEoKSwgdGhpcywgbmV3IChleGVjKSBSZWdF
eHBQcm90b3R5cGUoZXhlYywgdGhpcywgUmVnRXhwUHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUo
ZCgpLT5vYmplY3RQcm90b3R5cGUuZ2V0KCkpLCBkKCktPnByb3RvdHlwZUZ1bmN0aW9uU3RydWN0
dXJlLmdldCgpKSk7CisgICAgZCgpLT5yZWdFeHBQcm90b3R5cGUuc2V0KGV4ZWMtPmdsb2JhbERh
dGEoKSwgdGhpcywgbmV3IChleGVjKSBSZWdFeHBQcm90b3R5cGUoZXhlYywgdGhpcywgUmVnRXhw
UHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUoZCgpLT5vYmplY3RQcm90b3R5cGUuZ2V0KCkpLCBk
KCktPmZ1bmN0aW9uU3RydWN0dXJlLmdldCgpKSk7CiAgICAgZCgpLT5yZWdFeHBTdHJ1Y3R1cmUg
PSBSZWdFeHBPYmplY3Q6OmNyZWF0ZVN0cnVjdHVyZShkKCktPnJlZ0V4cFByb3RvdHlwZS5nZXQo
KSk7CiAKICAgICBkKCktPm1ldGhvZENhbGxEdW1teS5zZXQoZXhlYy0+Z2xvYmFsRGF0YSgpLCB0
aGlzLCBjb25zdHJ1Y3RFbXB0eU9iamVjdChleGVjKSk7CiAKLSAgICBFcnJvclByb3RvdHlwZSog
ZXJyb3JQcm90b3R5cGUgPSBuZXcgKGV4ZWMpIEVycm9yUHJvdG90eXBlKGV4ZWMsIHRoaXMsIEVy
cm9yUHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUoZCgpLT5vYmplY3RQcm90b3R5cGUuZ2V0KCkp
LCBkKCktPnByb3RvdHlwZUZ1bmN0aW9uU3RydWN0dXJlLmdldCgpKTsKKyAgICBFcnJvclByb3Rv
dHlwZSogZXJyb3JQcm90b3R5cGUgPSBuZXcgKGV4ZWMpIEVycm9yUHJvdG90eXBlKGV4ZWMsIHRo
aXMsIEVycm9yUHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUoZCgpLT5vYmplY3RQcm90b3R5cGUu
Z2V0KCkpLCBkKCktPmZ1bmN0aW9uU3RydWN0dXJlLmdldCgpKTsKICAgICBkKCktPmVycm9yU3Ry
dWN0dXJlID0gRXJyb3JJbnN0YW5jZTo6Y3JlYXRlU3RydWN0dXJlKGVycm9yUHJvdG90eXBlKTsK
IAogICAgIC8vIENvbnN0cnVjdG9ycwogCi0gICAgSlNDZWxsKiBvYmplY3RDb25zdHJ1Y3RvciA9
IG5ldyAoZXhlYykgT2JqZWN0Q29uc3RydWN0b3IoZXhlYywgdGhpcywgT2JqZWN0Q29uc3RydWN0
b3I6OmNyZWF0ZVN0cnVjdHVyZShkKCktPmZ1bmN0aW9uUHJvdG90eXBlLmdldCgpKSwgZCgpLT5v
YmplY3RQcm90b3R5cGUuZ2V0KCksIGQoKS0+cHJvdG90eXBlRnVuY3Rpb25TdHJ1Y3R1cmUuZ2V0
KCkpOworICAgIEpTQ2VsbCogb2JqZWN0Q29uc3RydWN0b3IgPSBuZXcgKGV4ZWMpIE9iamVjdENv
bnN0cnVjdG9yKGV4ZWMsIHRoaXMsIE9iamVjdENvbnN0cnVjdG9yOjpjcmVhdGVTdHJ1Y3R1cmUo
ZCgpLT5mdW5jdGlvblByb3RvdHlwZS5nZXQoKSksIGQoKS0+b2JqZWN0UHJvdG90eXBlLmdldCgp
LCBkKCktPmZ1bmN0aW9uU3RydWN0dXJlLmdldCgpKTsKICAgICBKU0NlbGwqIGZ1bmN0aW9uQ29u
c3RydWN0b3IgPSBuZXcgKGV4ZWMpIEZ1bmN0aW9uQ29uc3RydWN0b3IoZXhlYywgdGhpcywgRnVu
Y3Rpb25Db25zdHJ1Y3Rvcjo6Y3JlYXRlU3RydWN0dXJlKGQoKS0+ZnVuY3Rpb25Qcm90b3R5cGUu
Z2V0KCkpLCBkKCktPmZ1bmN0aW9uUHJvdG90eXBlLmdldCgpKTsKLSAgICBKU0NlbGwqIGFycmF5
Q29uc3RydWN0b3IgPSBuZXcgKGV4ZWMpIEFycmF5Q29uc3RydWN0b3IoZXhlYywgdGhpcywgQXJy
YXlDb25zdHJ1Y3Rvcjo6Y3JlYXRlU3RydWN0dXJlKGQoKS0+ZnVuY3Rpb25Qcm90b3R5cGUuZ2V0
KCkpLCBkKCktPmFycmF5UHJvdG90eXBlLmdldCgpLCBkKCktPnByb3RvdHlwZUZ1bmN0aW9uU3Ry
dWN0dXJlLmdldCgpKTsKLSAgICBKU0NlbGwqIHN0cmluZ0NvbnN0cnVjdG9yID0gbmV3IChleGVj
KSBTdHJpbmdDb25zdHJ1Y3RvcihleGVjLCB0aGlzLCBTdHJpbmdDb25zdHJ1Y3Rvcjo6Y3JlYXRl
U3RydWN0dXJlKGQoKS0+ZnVuY3Rpb25Qcm90b3R5cGUuZ2V0KCkpLCBkKCktPnByb3RvdHlwZUZ1
bmN0aW9uU3RydWN0dXJlLmdldCgpLCBkKCktPnN0cmluZ1Byb3RvdHlwZS5nZXQoKSk7CisgICAg
SlNDZWxsKiBhcnJheUNvbnN0cnVjdG9yID0gbmV3IChleGVjKSBBcnJheUNvbnN0cnVjdG9yKGV4
ZWMsIHRoaXMsIEFycmF5Q29uc3RydWN0b3I6OmNyZWF0ZVN0cnVjdHVyZShkKCktPmZ1bmN0aW9u
UHJvdG90eXBlLmdldCgpKSwgZCgpLT5hcnJheVByb3RvdHlwZS5nZXQoKSwgZCgpLT5mdW5jdGlv
blN0cnVjdHVyZS5nZXQoKSk7CisgICAgSlNDZWxsKiBzdHJpbmdDb25zdHJ1Y3RvciA9IG5ldyAo
ZXhlYykgU3RyaW5nQ29uc3RydWN0b3IoZXhlYywgdGhpcywgU3RyaW5nQ29uc3RydWN0b3I6OmNy
ZWF0ZVN0cnVjdHVyZShkKCktPmZ1bmN0aW9uUHJvdG90eXBlLmdldCgpKSwgZCgpLT5mdW5jdGlv
blN0cnVjdHVyZS5nZXQoKSwgZCgpLT5zdHJpbmdQcm90b3R5cGUuZ2V0KCkpOwogICAgIEpTQ2Vs
bCogYm9vbGVhbkNvbnN0cnVjdG9yID0gbmV3IChleGVjKSBCb29sZWFuQ29uc3RydWN0b3IoZXhl
YywgdGhpcywgQm9vbGVhbkNvbnN0cnVjdG9yOjpjcmVhdGVTdHJ1Y3R1cmUoZCgpLT5mdW5jdGlv
blByb3RvdHlwZS5nZXQoKSksIGQoKS0+Ym9vbGVhblByb3RvdHlwZS5nZXQoKSk7CiAgICAgSlND
ZWxsKiBudW1iZXJDb25zdHJ1Y3RvciA9IG5ldyAoZXhlYykgTnVtYmVyQ29uc3RydWN0b3IoZXhl
YywgdGhpcywgTnVtYmVyQ29uc3RydWN0b3I6OmNyZWF0ZVN0cnVjdHVyZShkKCktPmZ1bmN0aW9u
UHJvdG90eXBlLmdldCgpKSwgZCgpLT5udW1iZXJQcm90b3R5cGUuZ2V0KCkpOwotICAgIEpTQ2Vs
bCogZGF0ZUNvbnN0cnVjdG9yID0gbmV3IChleGVjKSBEYXRlQ29uc3RydWN0b3IoZXhlYywgdGhp
cywgRGF0ZUNvbnN0cnVjdG9yOjpjcmVhdGVTdHJ1Y3R1cmUoZCgpLT5mdW5jdGlvblByb3RvdHlw
ZS5nZXQoKSksIGQoKS0+cHJvdG90eXBlRnVuY3Rpb25TdHJ1Y3R1cmUuZ2V0KCksIGQoKS0+ZGF0
ZVByb3RvdHlwZS5nZXQoKSk7CisgICAgSlNDZWxsKiBkYXRlQ29uc3RydWN0b3IgPSBuZXcgKGV4
ZWMpIERhdGVDb25zdHJ1Y3RvcihleGVjLCB0aGlzLCBEYXRlQ29uc3RydWN0b3I6OmNyZWF0ZVN0
cnVjdHVyZShkKCktPmZ1bmN0aW9uUHJvdG90eXBlLmdldCgpKSwgZCgpLT5mdW5jdGlvblN0cnVj
dHVyZS5nZXQoKSwgZCgpLT5kYXRlUHJvdG90eXBlLmdldCgpKTsKIAogICAgIGQoKS0+cmVnRXhw
Q29uc3RydWN0b3Iuc2V0KGV4ZWMtPmdsb2JhbERhdGEoKSwgdGhpcywgbmV3IChleGVjKSBSZWdF
eHBDb25zdHJ1Y3RvcihleGVjLCB0aGlzLCBSZWdFeHBDb25zdHJ1Y3Rvcjo6Y3JlYXRlU3RydWN0
dXJlKGQoKS0+ZnVuY3Rpb25Qcm90b3R5cGUuZ2V0KCkpLCBkKCktPnJlZ0V4cFByb3RvdHlwZS5n
ZXQoKSkpOwogCkBAIC0yOTAsMjAgKzI4OCwyMCBAQCB2b2lkIEpTR2xvYmFsT2JqZWN0OjpyZXNl
dChKU1ZhbHVlIHByb3RvCiAKICAgICAvLyBTZXQgZ2xvYmFsIGZ1bmN0aW9ucy4KIAotICAgIGQo
KS0+ZXZhbEZ1bmN0aW9uLnNldChleGVjLT5nbG9iYWxEYXRhKCksIHRoaXMsIG5ldyAoZXhlYykg
R2xvYmFsRXZhbEZ1bmN0aW9uKGV4ZWMsIHRoaXMsIEdsb2JhbEV2YWxGdW5jdGlvbjo6Y3JlYXRl
U3RydWN0dXJlKGQoKS0+ZnVuY3Rpb25Qcm90b3R5cGUuZ2V0KCkpLCAxLCBleGVjLT5wcm9wZXJ0
eU5hbWVzKCkuZXZhbCwgZ2xvYmFsRnVuY0V2YWwsIHRoaXMpKTsKKyAgICBkKCktPmV2YWxGdW5j
dGlvbi5zZXQoZXhlYy0+Z2xvYmFsRGF0YSgpLCB0aGlzLCBuZXcgKGV4ZWMpIEpTRnVuY3Rpb24o
ZXhlYywgdGhpcywgZCgpLT5mdW5jdGlvblN0cnVjdHVyZS5nZXQoKSwgMSwgZXhlYy0+cHJvcGVy
dHlOYW1lcygpLmV2YWwsIGdsb2JhbEZ1bmNFdmFsKSk7CiAgICAgcHV0RGlyZWN0RnVuY3Rpb25X
aXRob3V0VHJhbnNpdGlvbihleGVjLCBkKCktPmV2YWxGdW5jdGlvbi5nZXQoKSwgRG9udEVudW0p
OwotICAgIHB1dERpcmVjdEZ1bmN0aW9uV2l0aG91dFRyYW5zaXRpb24oZXhlYywgbmV3IChleGVj
KSBOYXRpdmVGdW5jdGlvbldyYXBwZXIoZXhlYywgdGhpcywgZCgpLT5wcm90b3R5cGVGdW5jdGlv
blN0cnVjdHVyZS5nZXQoKSwgMiwgSWRlbnRpZmllcihleGVjLCAicGFyc2VJbnQiKSwgZ2xvYmFs
RnVuY1BhcnNlSW50KSwgRG9udEVudW0pOwotICAgIHB1dERpcmVjdEZ1bmN0aW9uV2l0aG91dFRy
YW5zaXRpb24oZXhlYywgbmV3IChleGVjKSBOYXRpdmVGdW5jdGlvbldyYXBwZXIoZXhlYywgdGhp
cywgZCgpLT5wcm90b3R5cGVGdW5jdGlvblN0cnVjdHVyZS5nZXQoKSwgMSwgSWRlbnRpZmllcihl
eGVjLCAicGFyc2VGbG9hdCIpLCBnbG9iYWxGdW5jUGFyc2VGbG9hdCksIERvbnRFbnVtKTsKLSAg
ICBwdXREaXJlY3RGdW5jdGlvbldpdGhvdXRUcmFuc2l0aW9uKGV4ZWMsIG5ldyAoZXhlYykgTmF0
aXZlRnVuY3Rpb25XcmFwcGVyKGV4ZWMsIHRoaXMsIGQoKS0+cHJvdG90eXBlRnVuY3Rpb25TdHJ1
Y3R1cmUuZ2V0KCksIDEsIElkZW50aWZpZXIoZXhlYywgImlzTmFOIiksIGdsb2JhbEZ1bmNJc05h
TiksIERvbnRFbnVtKTsKLSAgICBwdXREaXJlY3RGdW5jdGlvbldpdGhvdXRUcmFuc2l0aW9uKGV4
ZWMsIG5ldyAoZXhlYykgTmF0aXZlRnVuY3Rpb25XcmFwcGVyKGV4ZWMsIHRoaXMsIGQoKS0+cHJv
dG90eXBlRnVuY3Rpb25TdHJ1Y3R1cmUuZ2V0KCksIDEsIElkZW50aWZpZXIoZXhlYywgImlzRmlu
aXRlIiksIGdsb2JhbEZ1bmNJc0Zpbml0ZSksIERvbnRFbnVtKTsKLSAgICBwdXREaXJlY3RGdW5j
dGlvbldpdGhvdXRUcmFuc2l0aW9uKGV4ZWMsIG5ldyAoZXhlYykgTmF0aXZlRnVuY3Rpb25XcmFw
cGVyKGV4ZWMsIHRoaXMsIGQoKS0+cHJvdG90eXBlRnVuY3Rpb25TdHJ1Y3R1cmUuZ2V0KCksIDEs
IElkZW50aWZpZXIoZXhlYywgImVzY2FwZSIpLCBnbG9iYWxGdW5jRXNjYXBlKSwgRG9udEVudW0p
OwotICAgIHB1dERpcmVjdEZ1bmN0aW9uV2l0aG91dFRyYW5zaXRpb24oZXhlYywgbmV3IChleGVj
KSBOYXRpdmVGdW5jdGlvbldyYXBwZXIoZXhlYywgdGhpcywgZCgpLT5wcm90b3R5cGVGdW5jdGlv
blN0cnVjdHVyZS5nZXQoKSwgMSwgSWRlbnRpZmllcihleGVjLCAidW5lc2NhcGUiKSwgZ2xvYmFs
RnVuY1VuZXNjYXBlKSwgRG9udEVudW0pOwotICAgIHB1dERpcmVjdEZ1bmN0aW9uV2l0aG91dFRy
YW5zaXRpb24oZXhlYywgbmV3IChleGVjKSBOYXRpdmVGdW5jdGlvbldyYXBwZXIoZXhlYywgdGhp
cywgZCgpLT5wcm90b3R5cGVGdW5jdGlvblN0cnVjdHVyZS5nZXQoKSwgMSwgSWRlbnRpZmllcihl
eGVjLCAiZGVjb2RlVVJJIiksIGdsb2JhbEZ1bmNEZWNvZGVVUkkpLCBEb250RW51bSk7Ci0gICAg
cHV0RGlyZWN0RnVuY3Rpb25XaXRob3V0VHJhbnNpdGlvbihleGVjLCBuZXcgKGV4ZWMpIE5hdGl2
ZUZ1bmN0aW9uV3JhcHBlcihleGVjLCB0aGlzLCBkKCktPnByb3RvdHlwZUZ1bmN0aW9uU3RydWN0
dXJlLmdldCgpLCAxLCBJZGVudGlmaWVyKGV4ZWMsICJkZWNvZGVVUklDb21wb25lbnQiKSwgZ2xv
YmFsRnVuY0RlY29kZVVSSUNvbXBvbmVudCksIERvbnRFbnVtKTsKLSAgICBwdXREaXJlY3RGdW5j
dGlvbldpdGhvdXRUcmFuc2l0aW9uKGV4ZWMsIG5ldyAoZXhlYykgTmF0aXZlRnVuY3Rpb25XcmFw
cGVyKGV4ZWMsIHRoaXMsIGQoKS0+cHJvdG90eXBlRnVuY3Rpb25TdHJ1Y3R1cmUuZ2V0KCksIDEs
IElkZW50aWZpZXIoZXhlYywgImVuY29kZVVSSSIpLCBnbG9iYWxGdW5jRW5jb2RlVVJJKSwgRG9u
dEVudW0pOwotICAgIHB1dERpcmVjdEZ1bmN0aW9uV2l0aG91dFRyYW5zaXRpb24oZXhlYywgbmV3
IChleGVjKSBOYXRpdmVGdW5jdGlvbldyYXBwZXIoZXhlYywgdGhpcywgZCgpLT5wcm90b3R5cGVG
dW5jdGlvblN0cnVjdHVyZS5nZXQoKSwgMSwgSWRlbnRpZmllcihleGVjLCAiZW5jb2RlVVJJQ29t
cG9uZW50IiksIGdsb2JhbEZ1bmNFbmNvZGVVUklDb21wb25lbnQpLCBEb250RW51bSk7CisgICAg
cHV0RGlyZWN0RnVuY3Rpb25XaXRob3V0VHJhbnNpdGlvbihleGVjLCBuZXcgKGV4ZWMpIEpTRnVu
Y3Rpb24oZXhlYywgdGhpcywgZCgpLT5mdW5jdGlvblN0cnVjdHVyZS5nZXQoKSwgMiwgSWRlbnRp
ZmllcihleGVjLCAicGFyc2VJbnQiKSwgZ2xvYmFsRnVuY1BhcnNlSW50KSwgRG9udEVudW0pOwor
ICAgIHB1dERpcmVjdEZ1bmN0aW9uV2l0aG91dFRyYW5zaXRpb24oZXhlYywgbmV3IChleGVjKSBK
U0Z1bmN0aW9uKGV4ZWMsIHRoaXMsIGQoKS0+ZnVuY3Rpb25TdHJ1Y3R1cmUuZ2V0KCksIDEsIElk
ZW50aWZpZXIoZXhlYywgInBhcnNlRmxvYXQiKSwgZ2xvYmFsRnVuY1BhcnNlRmxvYXQpLCBEb250
RW51bSk7CisgICAgcHV0RGlyZWN0RnVuY3Rpb25XaXRob3V0VHJhbnNpdGlvbihleGVjLCBuZXcg
KGV4ZWMpIEpTRnVuY3Rpb24oZXhlYywgdGhpcywgZCgpLT5mdW5jdGlvblN0cnVjdHVyZS5nZXQo
KSwgMSwgSWRlbnRpZmllcihleGVjLCAiaXNOYU4iKSwgZ2xvYmFsRnVuY0lzTmFOKSwgRG9udEVu
dW0pOworICAgIHB1dERpcmVjdEZ1bmN0aW9uV2l0aG91dFRyYW5zaXRpb24oZXhlYywgbmV3IChl
eGVjKSBKU0Z1bmN0aW9uKGV4ZWMsIHRoaXMsIGQoKS0+ZnVuY3Rpb25TdHJ1Y3R1cmUuZ2V0KCks
IDEsIElkZW50aWZpZXIoZXhlYywgImlzRmluaXRlIiksIGdsb2JhbEZ1bmNJc0Zpbml0ZSksIERv
bnRFbnVtKTsKKyAgICBwdXREaXJlY3RGdW5jdGlvbldpdGhvdXRUcmFuc2l0aW9uKGV4ZWMsIG5l
dyAoZXhlYykgSlNGdW5jdGlvbihleGVjLCB0aGlzLCBkKCktPmZ1bmN0aW9uU3RydWN0dXJlLmdl
dCgpLCAxLCBJZGVudGlmaWVyKGV4ZWMsICJlc2NhcGUiKSwgZ2xvYmFsRnVuY0VzY2FwZSksIERv
bnRFbnVtKTsKKyAgICBwdXREaXJlY3RGdW5jdGlvbldpdGhvdXRUcmFuc2l0aW9uKGV4ZWMsIG5l
dyAoZXhlYykgSlNGdW5jdGlvbihleGVjLCB0aGlzLCBkKCktPmZ1bmN0aW9uU3RydWN0dXJlLmdl
dCgpLCAxLCBJZGVudGlmaWVyKGV4ZWMsICJ1bmVzY2FwZSIpLCBnbG9iYWxGdW5jVW5lc2NhcGUp
LCBEb250RW51bSk7CisgICAgcHV0RGlyZWN0RnVuY3Rpb25XaXRob3V0VHJhbnNpdGlvbihleGVj
LCBuZXcgKGV4ZWMpIEpTRnVuY3Rpb24oZXhlYywgdGhpcywgZCgpLT5mdW5jdGlvblN0cnVjdHVy
ZS5nZXQoKSwgMSwgSWRlbnRpZmllcihleGVjLCAiZGVjb2RlVVJJIiksIGdsb2JhbEZ1bmNEZWNv
ZGVVUkkpLCBEb250RW51bSk7CisgICAgcHV0RGlyZWN0RnVuY3Rpb25XaXRob3V0VHJhbnNpdGlv
bihleGVjLCBuZXcgKGV4ZWMpIEpTRnVuY3Rpb24oZXhlYywgdGhpcywgZCgpLT5mdW5jdGlvblN0
cnVjdHVyZS5nZXQoKSwgMSwgSWRlbnRpZmllcihleGVjLCAiZGVjb2RlVVJJQ29tcG9uZW50Iiks
IGdsb2JhbEZ1bmNEZWNvZGVVUklDb21wb25lbnQpLCBEb250RW51bSk7CisgICAgcHV0RGlyZWN0
RnVuY3Rpb25XaXRob3V0VHJhbnNpdGlvbihleGVjLCBuZXcgKGV4ZWMpIEpTRnVuY3Rpb24oZXhl
YywgdGhpcywgZCgpLT5mdW5jdGlvblN0cnVjdHVyZS5nZXQoKSwgMSwgSWRlbnRpZmllcihleGVj
LCAiZW5jb2RlVVJJIiksIGdsb2JhbEZ1bmNFbmNvZGVVUkkpLCBEb250RW51bSk7CisgICAgcHV0
RGlyZWN0RnVuY3Rpb25XaXRob3V0VHJhbnNpdGlvbihleGVjLCBuZXcgKGV4ZWMpIEpTRnVuY3Rp
b24oZXhlYywgdGhpcywgZCgpLT5mdW5jdGlvblN0cnVjdHVyZS5nZXQoKSwgMSwgSWRlbnRpZmll
cihleGVjLCAiZW5jb2RlVVJJQ29tcG9uZW50IiksIGdsb2JhbEZ1bmNFbmNvZGVVUklDb21wb25l
bnQpLCBEb250RW51bSk7CiAjaWZuZGVmIE5ERUJVRwotICAgIHB1dERpcmVjdEZ1bmN0aW9uV2l0
aG91dFRyYW5zaXRpb24oZXhlYywgbmV3IChleGVjKSBOYXRpdmVGdW5jdGlvbldyYXBwZXIoZXhl
YywgdGhpcywgZCgpLT5wcm90b3R5cGVGdW5jdGlvblN0cnVjdHVyZS5nZXQoKSwgMSwgSWRlbnRp
ZmllcihleGVjLCAianNjcHJpbnQiKSwgZ2xvYmFsRnVuY0pTQ1ByaW50KSwgRG9udEVudW0pOwor
ICAgIHB1dERpcmVjdEZ1bmN0aW9uV2l0aG91dFRyYW5zaXRpb24oZXhlYywgbmV3IChleGVjKSBK
U0Z1bmN0aW9uKGV4ZWMsIHRoaXMsIGQoKS0+ZnVuY3Rpb25TdHJ1Y3R1cmUuZ2V0KCksIDEsIElk
ZW50aWZpZXIoZXhlYywgImpzY3ByaW50IiksIGdsb2JhbEZ1bmNKU0NQcmludCksIERvbnRFbnVt
KTsKICNlbmRpZgogCiAgICAgcmVzZXRQcm90b3R5cGUocHJvdG90eXBlKTsKQEAgLTM2MCw3ICsz
NTgsNiBAQCB2b2lkIEpTR2xvYmFsT2JqZWN0OjptYXJrQ2hpbGRyZW4oTWFya1N0CiAgICAgbWFy
a0lmTmVlZGVkKG1hcmtTdGFjaywgZCgpLT5lcnJvclN0cnVjdHVyZSk7CiAgICAgbWFya0lmTmVl
ZGVkKG1hcmtTdGFjaywgZCgpLT5mdW5jdGlvblN0cnVjdHVyZSk7CiAgICAgbWFya0lmTmVlZGVk
KG1hcmtTdGFjaywgZCgpLT5udW1iZXJPYmplY3RTdHJ1Y3R1cmUpOwotICAgIG1hcmtJZk5lZWRl
ZChtYXJrU3RhY2ssIGQoKS0+cHJvdG90eXBlRnVuY3Rpb25TdHJ1Y3R1cmUpOwogICAgIG1hcmtJ
Zk5lZWRlZChtYXJrU3RhY2ssIGQoKS0+cmVnRXhwTWF0Y2hlc0FycmF5U3RydWN0dXJlKTsKICAg
ICBtYXJrSWZOZWVkZWQobWFya1N0YWNrLCBkKCktPnJlZ0V4cFN0cnVjdHVyZSk7CiAgICAgbWFy
a0lmTmVlZGVkKG1hcmtTdGFjaywgZCgpLT5zdHJpbmdPYmplY3RTdHJ1Y3R1cmUpOwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCShyZXZp
c2lvbiA3OTE0MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2Jq
ZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTI2LDcgKzI2LDYgQEAKICNpbmNsdWRlICJKU0dsb2Jh
bERhdGEuaCIKICNpbmNsdWRlICJKU1ZhcmlhYmxlT2JqZWN0LmgiCiAjaW5jbHVkZSAiSlNXZWFr
T2JqZWN0TWFwUmVmSW50ZXJuYWwuaCIKLSNpbmNsdWRlICJOYXRpdmVGdW5jdGlvbldyYXBwZXIu
aCIKICNpbmNsdWRlICJOdW1iZXJQcm90b3R5cGUuaCIKICNpbmNsdWRlICJTdHJpbmdQcm90b3R5
cGUuaCIKICNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgpAQCAtNDIsNyArNDEsNiBAQCBuYW1lc3Bh
Y2UgSlNDIHsKICAgICBjbGFzcyBFcnJvckNvbnN0cnVjdG9yOwogICAgIGNsYXNzIEZ1bmN0aW9u
UHJvdG90eXBlOwogICAgIGNsYXNzIEdsb2JhbENvZGVCbG9jazsKLSAgICBjbGFzcyBHbG9iYWxF
dmFsRnVuY3Rpb247CiAgICAgY2xhc3MgTmF0aXZlRXJyb3JDb25zdHJ1Y3RvcjsKICAgICBjbGFz
cyBQcm9ncmFtQ29kZUJsb2NrOwogICAgIGNsYXNzIFJlZ0V4cENvbnN0cnVjdG9yOwpAQCAtOTcs
OSArOTUsOSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgIFdyaXRlQmFycmllcjxOYXRp
dmVFcnJvckNvbnN0cnVjdG9yPiB0eXBlRXJyb3JDb25zdHJ1Y3RvcjsKICAgICAgICAgICAgIFdy
aXRlQmFycmllcjxOYXRpdmVFcnJvckNvbnN0cnVjdG9yPiBVUklFcnJvckNvbnN0cnVjdG9yOwog
Ci0gICAgICAgICAgICBXcml0ZUJhcnJpZXI8R2xvYmFsRXZhbEZ1bmN0aW9uPiBldmFsRnVuY3Rp
b247Ci0gICAgICAgICAgICBXcml0ZUJhcnJpZXI8TmF0aXZlRnVuY3Rpb25XcmFwcGVyPiBjYWxs
RnVuY3Rpb247Ci0gICAgICAgICAgICBXcml0ZUJhcnJpZXI8TmF0aXZlRnVuY3Rpb25XcmFwcGVy
PiBhcHBseUZ1bmN0aW9uOworICAgICAgICAgICAgV3JpdGVCYXJyaWVyPEpTRnVuY3Rpb24+IGV2
YWxGdW5jdGlvbjsKKyAgICAgICAgICAgIFdyaXRlQmFycmllcjxKU0Z1bmN0aW9uPiBjYWxsRnVu
Y3Rpb247CisgICAgICAgICAgICBXcml0ZUJhcnJpZXI8SlNGdW5jdGlvbj4gYXBwbHlGdW5jdGlv
bjsKIAogICAgICAgICAgICAgV3JpdGVCYXJyaWVyPE9iamVjdFByb3RvdHlwZT4gb2JqZWN0UHJv
dG90eXBlOwogICAgICAgICAgICAgV3JpdGVCYXJyaWVyPEZ1bmN0aW9uUHJvdG90eXBlPiBmdW5j
dGlvblByb3RvdHlwZTsKQEAgLTEyMyw3ICsxMjEsNiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAg
ICAgICAgIFJlZlB0cjxTdHJ1Y3R1cmU+IGVycm9yU3RydWN0dXJlOwogICAgICAgICAgICAgUmVm
UHRyPFN0cnVjdHVyZT4gZnVuY3Rpb25TdHJ1Y3R1cmU7CiAgICAgICAgICAgICBSZWZQdHI8U3Ry
dWN0dXJlPiBudW1iZXJPYmplY3RTdHJ1Y3R1cmU7Ci0gICAgICAgICAgICBSZWZQdHI8U3RydWN0
dXJlPiBwcm90b3R5cGVGdW5jdGlvblN0cnVjdHVyZTsKICAgICAgICAgICAgIFJlZlB0cjxTdHJ1
Y3R1cmU+IHJlZ0V4cE1hdGNoZXNBcnJheVN0cnVjdHVyZTsKICAgICAgICAgICAgIFJlZlB0cjxT
dHJ1Y3R1cmU+IHJlZ0V4cFN0cnVjdHVyZTsKICAgICAgICAgICAgIFJlZlB0cjxTdHJ1Y3R1cmU+
IHN0cmluZ09iamVjdFN0cnVjdHVyZTsKQEAgLTE5Myw3ICsxOTAsNyBAQCBuYW1lc3BhY2UgSlND
IHsKICAgICAgICAgTmF0aXZlRXJyb3JDb25zdHJ1Y3RvciogdHlwZUVycm9yQ29uc3RydWN0b3Io
KSBjb25zdCB7IHJldHVybiBkKCktPnR5cGVFcnJvckNvbnN0cnVjdG9yLmdldCgpOyB9CiAgICAg
ICAgIE5hdGl2ZUVycm9yQ29uc3RydWN0b3IqIFVSSUVycm9yQ29uc3RydWN0b3IoKSBjb25zdCB7
IHJldHVybiBkKCktPlVSSUVycm9yQ29uc3RydWN0b3IuZ2V0KCk7IH0KIAotICAgICAgICBHbG9i
YWxFdmFsRnVuY3Rpb24qIGV2YWxGdW5jdGlvbigpIGNvbnN0IHsgcmV0dXJuIGQoKS0+ZXZhbEZ1
bmN0aW9uLmdldCgpOyB9CisgICAgICAgIEpTRnVuY3Rpb24qIGV2YWxGdW5jdGlvbigpIGNvbnN0
IHsgcmV0dXJuIGQoKS0+ZXZhbEZ1bmN0aW9uLmdldCgpOyB9CiAKICAgICAgICAgT2JqZWN0UHJv
dG90eXBlKiBvYmplY3RQcm90b3R5cGUoKSBjb25zdCB7IHJldHVybiBkKCktPm9iamVjdFByb3Rv
dHlwZS5nZXQoKTsgfQogICAgICAgICBGdW5jdGlvblByb3RvdHlwZSogZnVuY3Rpb25Qcm90b3R5
cGUoKSBjb25zdCB7IHJldHVybiBkKCktPmZ1bmN0aW9uUHJvdG90eXBlLmdldCgpOyB9CkBAIC0y
MTcsNyArMjE0LDYgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIFN0cnVjdHVyZSogZXJyb3JT
dHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBkKCktPmVycm9yU3RydWN0dXJlLmdldCgpOyB9CiAg
ICAgICAgIFN0cnVjdHVyZSogZnVuY3Rpb25TdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBkKCkt
PmZ1bmN0aW9uU3RydWN0dXJlLmdldCgpOyB9CiAgICAgICAgIFN0cnVjdHVyZSogbnVtYmVyT2Jq
ZWN0U3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4gZCgpLT5udW1iZXJPYmplY3RTdHJ1Y3R1cmUu
Z2V0KCk7IH0KLSAgICAgICAgU3RydWN0dXJlKiBwcm90b3R5cGVGdW5jdGlvblN0cnVjdHVyZSgp
IGNvbnN0IHsgcmV0dXJuIGQoKS0+cHJvdG90eXBlRnVuY3Rpb25TdHJ1Y3R1cmUuZ2V0KCk7IH0K
ICAgICAgICAgU3RydWN0dXJlKiBpbnRlcm5hbEZ1bmN0aW9uU3RydWN0dXJlKCkgY29uc3QgeyBy
ZXR1cm4gZCgpLT5pbnRlcm5hbEZ1bmN0aW9uU3RydWN0dXJlLmdldCgpOyB9CiAgICAgICAgIFN0
cnVjdHVyZSogcmVnRXhwTWF0Y2hlc0FycmF5U3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4gZCgp
LT5yZWdFeHBNYXRjaGVzQXJyYXlTdHJ1Y3R1cmUuZ2V0KCk7IH0KICAgICAgICAgU3RydWN0dXJl
KiByZWdFeHBTdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBkKCktPnJlZ0V4cFN0cnVjdHVyZS5n
ZXQoKTsgfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmpl
Y3RGdW5jdGlvbnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTR2xvYmFsT2JqZWN0RnVuY3Rpb25zLmNwcAkocmV2aXNpb24gNzkxNDApCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdEZ1bmN0aW9ucy5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTI2LDcgKzI2LDYgQEAKICNpbmNsdWRlICJKU0dsb2JhbE9iamVjdEZ1
bmN0aW9ucy5oIgogCiAjaW5jbHVkZSAiQ2FsbEZyYW1lLmgiCi0jaW5jbHVkZSAiR2xvYmFsRXZh
bEZ1bmN0aW9uLmgiCiAjaW5jbHVkZSAiSW50ZXJwcmV0ZXIuaCIKICNpbmNsdWRlICJKU0dsb2Jh
bE9iamVjdC5oIgogI2luY2x1ZGUgIkpTU3RyaW5nLmgiCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9Mb29rdXAuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0xvb2t1cC5jcHAJKHJldmlzaW9uIDc5MTQyKQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvTG9va3VwLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjIsNyArMjIs
NiBAQAogCiAjaW5jbHVkZSAiRXhlY3V0YWJsZS5oIgogI2luY2x1ZGUgIkpTRnVuY3Rpb24uaCIK
LSNpbmNsdWRlICJQcm90b3R5cGVGdW5jdGlvbi5oIgogCiBuYW1lc3BhY2UgSlNDIHsKIApAQCAt
NzcsMTQgKzc2LDE0IEBAIHZvaWQgc2V0VXBTdGF0aWNGdW5jdGlvblNsb3QoRXhlY1N0YXRlKiAK
ICAgICBXcml0ZUJhcnJpZXJCYXNlPFVua25vd24+KiBsb2NhdGlvbiA9IHRoaXNPYmotPmdldERp
cmVjdExvY2F0aW9uKHByb3BlcnR5TmFtZSk7CiAKICAgICBpZiAoIWxvY2F0aW9uKSB7Ci0gICAg
ICAgIE5hdGl2ZUZ1bmN0aW9uV3JhcHBlciogZnVuY3Rpb247CisgICAgICAgIEpTRnVuY3Rpb24q
IGZ1bmN0aW9uOwogICAgICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gYXNHbG9i
YWxPYmplY3QodGhpc09iai0+Z2V0QW5vbnltb3VzVmFsdWUoMCkuYXNDZWxsKCkpOwogI2lmIEVO
QUJMRShKSVQpICYmIEVOQUJMRShKSVRfT1BUSU1JWkVfTkFUSVZFX0NBTEwpCiAgICAgICAgIGlm
IChlbnRyeS0+Z2VuZXJhdG9yKCkpCi0gICAgICAgICAgICBmdW5jdGlvbiA9IG5ldyAoZXhlYykg
TmF0aXZlRnVuY3Rpb25XcmFwcGVyKGV4ZWMsIGdsb2JhbE9iamVjdCwgZ2xvYmFsT2JqZWN0LT5w
cm90b3R5cGVGdW5jdGlvblN0cnVjdHVyZSgpLCBlbnRyeS0+ZnVuY3Rpb25MZW5ndGgoKSwgcHJv
cGVydHlOYW1lLCBleGVjLT5nbG9iYWxEYXRhKCkuZ2V0SG9zdEZ1bmN0aW9uKGVudHJ5LT5mdW5j
dGlvbigpLCBlbnRyeS0+Z2VuZXJhdG9yKCkpKTsKKyAgICAgICAgICAgIGZ1bmN0aW9uID0gbmV3
IChleGVjKSBKU0Z1bmN0aW9uKGV4ZWMsIGdsb2JhbE9iamVjdCwgZ2xvYmFsT2JqZWN0LT5mdW5j
dGlvblN0cnVjdHVyZSgpLCBlbnRyeS0+ZnVuY3Rpb25MZW5ndGgoKSwgcHJvcGVydHlOYW1lLCBl
eGVjLT5nbG9iYWxEYXRhKCkuZ2V0SG9zdEZ1bmN0aW9uKGVudHJ5LT5mdW5jdGlvbigpLCBlbnRy
eS0+Z2VuZXJhdG9yKCkpKTsKICAgICAgICAgZWxzZQogI2VuZGlmCi0gICAgICAgICAgICBmdW5j
dGlvbiA9IG5ldyAoZXhlYykgTmF0aXZlRnVuY3Rpb25XcmFwcGVyKGV4ZWMsIGdsb2JhbE9iamVj
dCwgZ2xvYmFsT2JqZWN0LT5wcm90b3R5cGVGdW5jdGlvblN0cnVjdHVyZSgpLCBlbnRyeS0+ZnVu
Y3Rpb25MZW5ndGgoKSwgcHJvcGVydHlOYW1lLCBlbnRyeS0+ZnVuY3Rpb24oKSk7CisgICAgICAg
ICAgICBmdW5jdGlvbiA9IG5ldyAoZXhlYykgSlNGdW5jdGlvbihleGVjLCBnbG9iYWxPYmplY3Qs
IGdsb2JhbE9iamVjdC0+ZnVuY3Rpb25TdHJ1Y3R1cmUoKSwgZW50cnktPmZ1bmN0aW9uTGVuZ3Ro
KCksIHByb3BlcnR5TmFtZSwgZW50cnktPmZ1bmN0aW9uKCkpOwogCiAgICAgICAgIHRoaXNPYmot
PnB1dERpcmVjdEZ1bmN0aW9uKGV4ZWMtPmdsb2JhbERhdGEoKSwgcHJvcGVydHlOYW1lLCBmdW5j
dGlvbiwgZW50cnktPmF0dHJpYnV0ZXMoKSk7CiAgICAgICAgIGxvY2F0aW9uID0gdGhpc09iai0+
Z2V0RGlyZWN0TG9jYXRpb24ocHJvcGVydHlOYW1lKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL05hdGl2ZUZ1bmN0aW9uV3JhcHBlci5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL05hdGl2ZUZ1bmN0aW9uV3JhcHBlci5oCShyZXZpc2lv
biA3OTE0MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL05hdGl2ZUZ1bmN0aW9u
V3JhcHBlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDM5ICswLDAgQEAKLS8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMDkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
LSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoK
LSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5E
IEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICog
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCi0gKi8KLQotI2lmbmRlZiBOYXRpdmVGdW5jdGlvbldy
YXBwZXJfaAotI2RlZmluZSBOYXRpdmVGdW5jdGlvbldyYXBwZXJfaAotCi1uYW1lc3BhY2UgSlND
IHsKLSNpZiBFTkFCTEUoSklUKSAmJiBFTkFCTEUoSklUX09QVElNSVpFX05BVElWRV9DQUxMKQot
ICAgIGNsYXNzIEpTRnVuY3Rpb247Ci0gICAgdHlwZWRlZiBKU0Z1bmN0aW9uIE5hdGl2ZUZ1bmN0
aW9uV3JhcHBlcjsKLSNlbHNlCi0gICAgY2xhc3MgUHJvdG90eXBlRnVuY3Rpb247Ci0gICAgdHlw
ZWRlZiBQcm90b3R5cGVGdW5jdGlvbiBOYXRpdmVGdW5jdGlvbldyYXBwZXI7Ci0jZW5kaWYKLX0K
LQotI2VuZGlmCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OdW1iZXJQcm90
b3R5cGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL051
bWJlclByb3RvdHlwZS5jcHAJKHJldmlzaW9uIDc5MTQyKQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvTnVtYmVyUHJvdG90eXBlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjYsNyAr
MjYsNiBAQAogI2luY2x1ZGUgIkpTRnVuY3Rpb24uaCIKICNpbmNsdWRlICJKU1N0cmluZy5oIgog
I2luY2x1ZGUgIk9wZXJhdGlvbnMuaCIKLSNpbmNsdWRlICJQcm90b3R5cGVGdW5jdGlvbi5oIgog
I2luY2x1ZGUgImR0b2EuaCIKICNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgogI2luY2x1ZGUg
PHd0Zi9EZWNpbWFsTnVtYmVyLmg+CkBAIC00NiwxOSArNDUsMTkgQEAgc3RhdGljIEVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgbnVtYgogCiAvLyBFQ01BIDE1LjcuNAogCi1OdW1iZXJQcm90
b3R5cGU6Ok51bWJlclByb3RvdHlwZShFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIE5vbk51bGxQYXNzUmVmUHRyPFN0cnVjdHVyZT4gc3RydWN0dXJlLCBTdHJ1
Y3R1cmUqIHByb3RvdHlwZUZ1bmN0aW9uU3RydWN0dXJlKQorTnVtYmVyUHJvdG90eXBlOjpOdW1i
ZXJQcm90b3R5cGUoRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBOb25OdWxsUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+IHN0cnVjdHVyZSwgU3RydWN0dXJlKiBmdW5j
dGlvblN0cnVjdHVyZSkKICAgICA6IE51bWJlck9iamVjdChleGVjLT5nbG9iYWxEYXRhKCksIHN0
cnVjdHVyZSkKIHsKICAgICBzZXRJbnRlcm5hbFZhbHVlKGV4ZWMtPmdsb2JhbERhdGEoKSwganNO
dW1iZXIoMCkpOwogCiAgICAgLy8gVGhlIGNvbnN0cnVjdG9yIHdpbGwgYmUgYWRkZWQgbGF0ZXIs
IGFmdGVyIE51bWJlckNvbnN0cnVjdG9yIGhhcyBiZWVuIGNvbnN0cnVjdGVkCiAKLSAgICBwdXRE
aXJlY3RGdW5jdGlvbldpdGhvdXRUcmFuc2l0aW9uKGV4ZWMsIG5ldyAoZXhlYykgTmF0aXZlRnVu
Y3Rpb25XcmFwcGVyKGV4ZWMsIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlRnVuY3Rpb25TdHJ1Y3R1
cmUsIDEsIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS50b1N0cmluZywgbnVtYmVyUHJvdG9GdW5jVG9T
dHJpbmcpLCBEb250RW51bSk7Ci0gICAgcHV0RGlyZWN0RnVuY3Rpb25XaXRob3V0VHJhbnNpdGlv
bihleGVjLCBuZXcgKGV4ZWMpIE5hdGl2ZUZ1bmN0aW9uV3JhcHBlcihleGVjLCBnbG9iYWxPYmpl
Y3QsIHByb3RvdHlwZUZ1bmN0aW9uU3RydWN0dXJlLCAwLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCku
dG9Mb2NhbGVTdHJpbmcsIG51bWJlclByb3RvRnVuY1RvTG9jYWxlU3RyaW5nKSwgRG9udEVudW0p
OwotICAgIHB1dERpcmVjdEZ1bmN0aW9uV2l0aG91dFRyYW5zaXRpb24oZXhlYywgbmV3IChleGVj
KSBOYXRpdmVGdW5jdGlvbldyYXBwZXIoZXhlYywgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGVGdW5j
dGlvblN0cnVjdHVyZSwgMCwgZXhlYy0+cHJvcGVydHlOYW1lcygpLnZhbHVlT2YsIG51bWJlclBy
b3RvRnVuY1ZhbHVlT2YpLCBEb250RW51bSk7Ci0gICAgcHV0RGlyZWN0RnVuY3Rpb25XaXRob3V0
VHJhbnNpdGlvbihleGVjLCBuZXcgKGV4ZWMpIE5hdGl2ZUZ1bmN0aW9uV3JhcHBlcihleGVjLCBn
bG9iYWxPYmplY3QsIHByb3RvdHlwZUZ1bmN0aW9uU3RydWN0dXJlLCAxLCBleGVjLT5wcm9wZXJ0
eU5hbWVzKCkudG9GaXhlZCwgbnVtYmVyUHJvdG9GdW5jVG9GaXhlZCksIERvbnRFbnVtKTsKLSAg
ICBwdXREaXJlY3RGdW5jdGlvbldpdGhvdXRUcmFuc2l0aW9uKGV4ZWMsIG5ldyAoZXhlYykgTmF0
aXZlRnVuY3Rpb25XcmFwcGVyKGV4ZWMsIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlRnVuY3Rpb25T
dHJ1Y3R1cmUsIDEsIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS50b0V4cG9uZW50aWFsLCBudW1iZXJQ
cm90b0Z1bmNUb0V4cG9uZW50aWFsKSwgRG9udEVudW0pOwotICAgIHB1dERpcmVjdEZ1bmN0aW9u
V2l0aG91dFRyYW5zaXRpb24oZXhlYywgbmV3IChleGVjKSBOYXRpdmVGdW5jdGlvbldyYXBwZXIo
ZXhlYywgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGVGdW5jdGlvblN0cnVjdHVyZSwgMSwgZXhlYy0+
cHJvcGVydHlOYW1lcygpLnRvUHJlY2lzaW9uLCBudW1iZXJQcm90b0Z1bmNUb1ByZWNpc2lvbiks
IERvbnRFbnVtKTsKKyAgICBwdXREaXJlY3RGdW5jdGlvbldpdGhvdXRUcmFuc2l0aW9uKGV4ZWMs
IG5ldyAoZXhlYykgSlNGdW5jdGlvbihleGVjLCBnbG9iYWxPYmplY3QsIGZ1bmN0aW9uU3RydWN0
dXJlLCAxLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkudG9TdHJpbmcsIG51bWJlclByb3RvRnVuY1Rv
U3RyaW5nKSwgRG9udEVudW0pOworICAgIHB1dERpcmVjdEZ1bmN0aW9uV2l0aG91dFRyYW5zaXRp
b24oZXhlYywgbmV3IChleGVjKSBKU0Z1bmN0aW9uKGV4ZWMsIGdsb2JhbE9iamVjdCwgZnVuY3Rp
b25TdHJ1Y3R1cmUsIDAsIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS50b0xvY2FsZVN0cmluZywgbnVt
YmVyUHJvdG9GdW5jVG9Mb2NhbGVTdHJpbmcpLCBEb250RW51bSk7CisgICAgcHV0RGlyZWN0RnVu
Y3Rpb25XaXRob3V0VHJhbnNpdGlvbihleGVjLCBuZXcgKGV4ZWMpIEpTRnVuY3Rpb24oZXhlYywg
Z2xvYmFsT2JqZWN0LCBmdW5jdGlvblN0cnVjdHVyZSwgMCwgZXhlYy0+cHJvcGVydHlOYW1lcygp
LnZhbHVlT2YsIG51bWJlclByb3RvRnVuY1ZhbHVlT2YpLCBEb250RW51bSk7CisgICAgcHV0RGly
ZWN0RnVuY3Rpb25XaXRob3V0VHJhbnNpdGlvbihleGVjLCBuZXcgKGV4ZWMpIEpTRnVuY3Rpb24o
ZXhlYywgZ2xvYmFsT2JqZWN0LCBmdW5jdGlvblN0cnVjdHVyZSwgMSwgZXhlYy0+cHJvcGVydHlO
YW1lcygpLnRvRml4ZWQsIG51bWJlclByb3RvRnVuY1RvRml4ZWQpLCBEb250RW51bSk7CisgICAg
cHV0RGlyZWN0RnVuY3Rpb25XaXRob3V0VHJhbnNpdGlvbihleGVjLCBuZXcgKGV4ZWMpIEpTRnVu
Y3Rpb24oZXhlYywgZ2xvYmFsT2JqZWN0LCBmdW5jdGlvblN0cnVjdHVyZSwgMSwgZXhlYy0+cHJv
cGVydHlOYW1lcygpLnRvRXhwb25lbnRpYWwsIG51bWJlclByb3RvRnVuY1RvRXhwb25lbnRpYWwp
LCBEb250RW51bSk7CisgICAgcHV0RGlyZWN0RnVuY3Rpb25XaXRob3V0VHJhbnNpdGlvbihleGVj
LCBuZXcgKGV4ZWMpIEpTRnVuY3Rpb24oZXhlYywgZ2xvYmFsT2JqZWN0LCBmdW5jdGlvblN0cnVj
dHVyZSwgMSwgZXhlYy0+cHJvcGVydHlOYW1lcygpLnRvUHJlY2lzaW9uLCBudW1iZXJQcm90b0Z1
bmNUb1ByZWNpc2lvbiksIERvbnRFbnVtKTsKIH0KIAogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tIEZ1bmN0aW9ucyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL051bWJlclByb3RvdHlwZS5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL051bWJlclByb3RvdHlwZS5oCShyZXZp
c2lvbiA3OTE0MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL051bWJlclByb3Rv
dHlwZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNyw3ICsyNyw3IEBAIG5hbWVzcGFjZSBKU0Mgewog
CiAgICAgY2xhc3MgTnVtYmVyUHJvdG90eXBlIDogcHVibGljIE51bWJlck9iamVjdCB7CiAgICAg
cHVibGljOgotICAgICAgICBOdW1iZXJQcm90b3R5cGUoRXhlY1N0YXRlKiwgSlNHbG9iYWxPYmpl
Y3QqLCBOb25OdWxsUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+LCBTdHJ1Y3R1cmUqIHByb3RvdHlwZUZ1
bmN0aW9uU3RydWN0dXJlKTsKKyAgICAgICAgTnVtYmVyUHJvdG90eXBlKEV4ZWNTdGF0ZSosIEpT
R2xvYmFsT2JqZWN0KiwgTm9uTnVsbFBhc3NSZWZQdHI8U3RydWN0dXJlPiwgU3RydWN0dXJlKiBm
dW5jdGlvblN0cnVjdHVyZSk7CiAgICAgfTsKIAogfSAvLyBuYW1lc3BhY2UgSlNDCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RDb25zdHJ1Y3Rvci5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0Q29uc3RydWN0b3Iu
Y3BwCShyZXZpc2lvbiA3OTE0MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09i
amVjdENvbnN0cnVjdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjksNyArMjksNiBAQAogI2lu
Y2x1ZGUgIk9iamVjdFByb3RvdHlwZS5oIgogI2luY2x1ZGUgIlByb3BlcnR5RGVzY3JpcHRvci5o
IgogI2luY2x1ZGUgIlByb3BlcnR5TmFtZUFycmF5LmgiCi0jaW5jbHVkZSAiUHJvdG90eXBlRnVu
Y3Rpb24uaCIKIAogbmFtZXNwYWNlIEpTQyB7CiAKQEAgLTQzLDcgKzQyLDcgQEAgc3RhdGljIEVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgb2JqZQogc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgb2JqZWN0Q29uc3RydWN0b3JEZWZpbmVQcm9wZXJ0aWVzKEV4ZWNTdGF0ZSop
Owogc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgb2JqZWN0Q29uc3RydWN0b3JD
cmVhdGUoRXhlY1N0YXRlKik7CiAKLU9iamVjdENvbnN0cnVjdG9yOjpPYmplY3RDb25zdHJ1Y3Rv
cihFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIE5vbk51bGxQ
YXNzUmVmUHRyPFN0cnVjdHVyZT4gc3RydWN0dXJlLCBPYmplY3RQcm90b3R5cGUqIG9iamVjdFBy
b3RvdHlwZSwgU3RydWN0dXJlKiBwcm90b3R5cGVGdW5jdGlvblN0cnVjdHVyZSkKK09iamVjdENv
bnN0cnVjdG9yOjpPYmplY3RDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIE5vbk51bGxQYXNzUmVmUHRyPFN0cnVjdHVyZT4gc3RydWN0dXJl
LCBPYmplY3RQcm90b3R5cGUqIG9iamVjdFByb3RvdHlwZSwgU3RydWN0dXJlKiBmdW5jdGlvblN0
cnVjdHVyZSkKICAgICA6IEludGVybmFsRnVuY3Rpb24oJmV4ZWMtPmdsb2JhbERhdGEoKSwgZ2xv
YmFsT2JqZWN0LCBzdHJ1Y3R1cmUsIElkZW50aWZpZXIoZXhlYywgIk9iamVjdCIpKQogewogICAg
IC8vIEVDTUEgMTUuMi4zLjEKQEAgLTUyLDEzICs1MSwxMyBAQCBPYmplY3RDb25zdHJ1Y3Rvcjo6
T2JqZWN0Q29uc3RydWN0b3IoRXhlCiAgICAgLy8gbm8uIG9mIGFyZ3VtZW50cyBmb3IgY29uc3Ry
dWN0b3IKICAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbihleGVjLT5nbG9iYWxEYXRhKCks
IGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5sZW5ndGgsIGpzTnVtYmVyKDEpLCBSZWFkT25seSB8IERv
bnRFbnVtIHwgRG9udERlbGV0ZSk7CiAgICAgCi0gICAgcHV0RGlyZWN0RnVuY3Rpb25XaXRob3V0
VHJhbnNpdGlvbihleGVjLCBuZXcgKGV4ZWMpIE5hdGl2ZUZ1bmN0aW9uV3JhcHBlcihleGVjLCBn
bG9iYWxPYmplY3QsIHByb3RvdHlwZUZ1bmN0aW9uU3RydWN0dXJlLCAxLCBleGVjLT5wcm9wZXJ0
eU5hbWVzKCkuZ2V0UHJvdG90eXBlT2YsIG9iamVjdENvbnN0cnVjdG9yR2V0UHJvdG90eXBlT2Yp
LCBEb250RW51bSk7Ci0gICAgcHV0RGlyZWN0RnVuY3Rpb25XaXRob3V0VHJhbnNpdGlvbihleGVj
LCBuZXcgKGV4ZWMpIE5hdGl2ZUZ1bmN0aW9uV3JhcHBlcihleGVjLCBnbG9iYWxPYmplY3QsIHBy
b3RvdHlwZUZ1bmN0aW9uU3RydWN0dXJlLCAyLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkuZ2V0T3du
UHJvcGVydHlEZXNjcmlwdG9yLCBvYmplY3RDb25zdHJ1Y3RvckdldE93blByb3BlcnR5RGVzY3Jp
cHRvciksIERvbnRFbnVtKTsKLSAgICBwdXREaXJlY3RGdW5jdGlvbldpdGhvdXRUcmFuc2l0aW9u
KGV4ZWMsIG5ldyAoZXhlYykgTmF0aXZlRnVuY3Rpb25XcmFwcGVyKGV4ZWMsIGdsb2JhbE9iamVj
dCwgcHJvdG90eXBlRnVuY3Rpb25TdHJ1Y3R1cmUsIDEsIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5n
ZXRPd25Qcm9wZXJ0eU5hbWVzLCBvYmplY3RDb25zdHJ1Y3RvckdldE93blByb3BlcnR5TmFtZXMp
LCBEb250RW51bSk7Ci0gICAgcHV0RGlyZWN0RnVuY3Rpb25XaXRob3V0VHJhbnNpdGlvbihleGVj
LCBuZXcgKGV4ZWMpIE5hdGl2ZUZ1bmN0aW9uV3JhcHBlcihleGVjLCBnbG9iYWxPYmplY3QsIHBy
b3RvdHlwZUZ1bmN0aW9uU3RydWN0dXJlLCAxLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkua2V5cywg
b2JqZWN0Q29uc3RydWN0b3JLZXlzKSwgRG9udEVudW0pOwotICAgIHB1dERpcmVjdEZ1bmN0aW9u
V2l0aG91dFRyYW5zaXRpb24oZXhlYywgbmV3IChleGVjKSBOYXRpdmVGdW5jdGlvbldyYXBwZXIo
ZXhlYywgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGVGdW5jdGlvblN0cnVjdHVyZSwgMywgZXhlYy0+
cHJvcGVydHlOYW1lcygpLmRlZmluZVByb3BlcnR5LCBvYmplY3RDb25zdHJ1Y3RvckRlZmluZVBy
b3BlcnR5KSwgRG9udEVudW0pOwotICAgIHB1dERpcmVjdEZ1bmN0aW9uV2l0aG91dFRyYW5zaXRp
b24oZXhlYywgbmV3IChleGVjKSBOYXRpdmVGdW5jdGlvbldyYXBwZXIoZXhlYywgZ2xvYmFsT2Jq
ZWN0LCBwcm90b3R5cGVGdW5jdGlvblN0cnVjdHVyZSwgMiwgZXhlYy0+cHJvcGVydHlOYW1lcygp
LmRlZmluZVByb3BlcnRpZXMsIG9iamVjdENvbnN0cnVjdG9yRGVmaW5lUHJvcGVydGllcyksIERv
bnRFbnVtKTsKLSAgICBwdXREaXJlY3RGdW5jdGlvbldpdGhvdXRUcmFuc2l0aW9uKGV4ZWMsIG5l
dyAoZXhlYykgTmF0aXZlRnVuY3Rpb25XcmFwcGVyKGV4ZWMsIGdsb2JhbE9iamVjdCwgcHJvdG90
eXBlRnVuY3Rpb25TdHJ1Y3R1cmUsIDIsIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5jcmVhdGUsIG9i
amVjdENvbnN0cnVjdG9yQ3JlYXRlKSwgRG9udEVudW0pOworICAgIHB1dERpcmVjdEZ1bmN0aW9u
V2l0aG91dFRyYW5zaXRpb24oZXhlYywgbmV3IChleGVjKSBKU0Z1bmN0aW9uKGV4ZWMsIGdsb2Jh
bE9iamVjdCwgZnVuY3Rpb25TdHJ1Y3R1cmUsIDEsIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5nZXRQ
cm90b3R5cGVPZiwgb2JqZWN0Q29uc3RydWN0b3JHZXRQcm90b3R5cGVPZiksIERvbnRFbnVtKTsK
KyAgICBwdXREaXJlY3RGdW5jdGlvbldpdGhvdXRUcmFuc2l0aW9uKGV4ZWMsIG5ldyAoZXhlYykg
SlNGdW5jdGlvbihleGVjLCBnbG9iYWxPYmplY3QsIGZ1bmN0aW9uU3RydWN0dXJlLCAyLCBleGVj
LT5wcm9wZXJ0eU5hbWVzKCkuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yLCBvYmplY3RDb25zdHJ1
Y3RvckdldE93blByb3BlcnR5RGVzY3JpcHRvciksIERvbnRFbnVtKTsKKyAgICBwdXREaXJlY3RG
dW5jdGlvbldpdGhvdXRUcmFuc2l0aW9uKGV4ZWMsIG5ldyAoZXhlYykgSlNGdW5jdGlvbihleGVj
LCBnbG9iYWxPYmplY3QsIGZ1bmN0aW9uU3RydWN0dXJlLCAxLCBleGVjLT5wcm9wZXJ0eU5hbWVz
KCkuZ2V0T3duUHJvcGVydHlOYW1lcywgb2JqZWN0Q29uc3RydWN0b3JHZXRPd25Qcm9wZXJ0eU5h
bWVzKSwgRG9udEVudW0pOworICAgIHB1dERpcmVjdEZ1bmN0aW9uV2l0aG91dFRyYW5zaXRpb24o
ZXhlYywgbmV3IChleGVjKSBKU0Z1bmN0aW9uKGV4ZWMsIGdsb2JhbE9iamVjdCwgZnVuY3Rpb25T
dHJ1Y3R1cmUsIDEsIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5rZXlzLCBvYmplY3RDb25zdHJ1Y3Rv
cktleXMpLCBEb250RW51bSk7CisgICAgcHV0RGlyZWN0RnVuY3Rpb25XaXRob3V0VHJhbnNpdGlv
bihleGVjLCBuZXcgKGV4ZWMpIEpTRnVuY3Rpb24oZXhlYywgZ2xvYmFsT2JqZWN0LCBmdW5jdGlv
blN0cnVjdHVyZSwgMywgZXhlYy0+cHJvcGVydHlOYW1lcygpLmRlZmluZVByb3BlcnR5LCBvYmpl
Y3RDb25zdHJ1Y3RvckRlZmluZVByb3BlcnR5KSwgRG9udEVudW0pOworICAgIHB1dERpcmVjdEZ1
bmN0aW9uV2l0aG91dFRyYW5zaXRpb24oZXhlYywgbmV3IChleGVjKSBKU0Z1bmN0aW9uKGV4ZWMs
IGdsb2JhbE9iamVjdCwgZnVuY3Rpb25TdHJ1Y3R1cmUsIDIsIGV4ZWMtPnByb3BlcnR5TmFtZXMo
KS5kZWZpbmVQcm9wZXJ0aWVzLCBvYmplY3RDb25zdHJ1Y3RvckRlZmluZVByb3BlcnRpZXMpLCBE
b250RW51bSk7CisgICAgcHV0RGlyZWN0RnVuY3Rpb25XaXRob3V0VHJhbnNpdGlvbihleGVjLCBu
ZXcgKGV4ZWMpIEpTRnVuY3Rpb24oZXhlYywgZ2xvYmFsT2JqZWN0LCBmdW5jdGlvblN0cnVjdHVy
ZSwgMiwgZXhlYy0+cHJvcGVydHlOYW1lcygpLmNyZWF0ZSwgb2JqZWN0Q29uc3RydWN0b3JDcmVh
dGUpLCBEb250RW51bSk7CiB9CiAKIC8vIEVDTUEgMTUuMi4yCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9PYmplY3RDb25zdHJ1Y3Rvci5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09iamVjdENvbnN0cnVjdG9yLmgJKHJldmlzaW9uIDc5
MTQwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0Q29uc3RydWN0b3Iu
aAkod29ya2luZyBjb3B5KQpAQCAtMjksNyArMjksNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAg
IGNsYXNzIE9iamVjdENvbnN0cnVjdG9yIDogcHVibGljIEludGVybmFsRnVuY3Rpb24gewogICAg
IHB1YmxpYzoKLSAgICAgICAgT2JqZWN0Q29uc3RydWN0b3IoRXhlY1N0YXRlKiwgSlNHbG9iYWxP
YmplY3QqLCBOb25OdWxsUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+LCBPYmplY3RQcm90b3R5cGUqLCBT
dHJ1Y3R1cmUqIHByb3RvdHlwZUZ1bmN0aW9uU3RydWN0dXJlKTsKKyAgICAgICAgT2JqZWN0Q29u
c3RydWN0b3IoRXhlY1N0YXRlKiwgSlNHbG9iYWxPYmplY3QqLCBOb25OdWxsUGFzc1JlZlB0cjxT
dHJ1Y3R1cmU+LCBPYmplY3RQcm90b3R5cGUqLCBTdHJ1Y3R1cmUqIGZ1bmN0aW9uU3RydWN0dXJl
KTsKIAogICAgIHByaXZhdGU6CiAgICAgICAgIHZpcnR1YWwgQ29uc3RydWN0VHlwZSBnZXRDb25z
dHJ1Y3REYXRhKENvbnN0cnVjdERhdGEmKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL09iamVjdFByb3RvdHlwZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvT2JqZWN0UHJvdG90eXBlLmNwcAkocmV2aXNpb24gNzkxNDIpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RQcm90b3R5cGUuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0yNSw3ICsyNSw2IEBACiAjaW5jbHVkZSAiSlNGdW5jdGlvbi5oIgogI2luY2x1
ZGUgIkpTU3RyaW5nLmgiCiAjaW5jbHVkZSAiSlNTdHJpbmdCdWlsZGVyLmgiCi0jaW5jbHVkZSAi
UHJvdG90eXBlRnVuY3Rpb24uaCIKIAogbmFtZXNwYWNlIEpTQyB7CiAKQEAgLTQxLDIyICs0MCwy
MiBAQCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmplCiBzdGF0aWMgRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RQcm90b0Z1bmNQcm9wZXJ0eUlzRW51bWVy
YWJsZShFeGVjU3RhdGUqKTsKIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9i
amVjdFByb3RvRnVuY1RvTG9jYWxlU3RyaW5nKEV4ZWNTdGF0ZSopOwogCi1PYmplY3RQcm90b3R5
cGU6Ok9iamVjdFByb3RvdHlwZShFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIE5vbk51bGxQYXNzUmVmUHRyPFN0cnVjdHVyZT4gc3R1Y3R1cmUsIFN0cnVjdHVy
ZSogcHJvdG90eXBlRnVuY3Rpb25TdHJ1Y3R1cmUpCitPYmplY3RQcm90b3R5cGU6Ok9iamVjdFBy
b3RvdHlwZShFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIE5v
bk51bGxQYXNzUmVmUHRyPFN0cnVjdHVyZT4gc3R1Y3R1cmUsIFN0cnVjdHVyZSogZnVuY3Rpb25T
dHJ1Y3R1cmUpCiAgICAgOiBKU05vbkZpbmFsT2JqZWN0KHN0dWN0dXJlKQogICAgICwgbV9oYXNO
b1Byb3BlcnRpZXNXaXRoVUludDMyTmFtZXModHJ1ZSkKIHsKLSAgICBwdXREaXJlY3RGdW5jdGlv
bldpdGhvdXRUcmFuc2l0aW9uKGV4ZWMsIG5ldyAoZXhlYykgTmF0aXZlRnVuY3Rpb25XcmFwcGVy
KGV4ZWMsIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlRnVuY3Rpb25TdHJ1Y3R1cmUsIDAsIGV4ZWMt
PnByb3BlcnR5TmFtZXMoKS50b1N0cmluZywgb2JqZWN0UHJvdG9GdW5jVG9TdHJpbmcpLCBEb250
RW51bSk7Ci0gICAgcHV0RGlyZWN0RnVuY3Rpb25XaXRob3V0VHJhbnNpdGlvbihleGVjLCBuZXcg
KGV4ZWMpIE5hdGl2ZUZ1bmN0aW9uV3JhcHBlcihleGVjLCBnbG9iYWxPYmplY3QsIHByb3RvdHlw
ZUZ1bmN0aW9uU3RydWN0dXJlLCAwLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkudG9Mb2NhbGVTdHJp
bmcsIG9iamVjdFByb3RvRnVuY1RvTG9jYWxlU3RyaW5nKSwgRG9udEVudW0pOwotICAgIHB1dERp
cmVjdEZ1bmN0aW9uV2l0aG91dFRyYW5zaXRpb24oZXhlYywgbmV3IChleGVjKSBOYXRpdmVGdW5j
dGlvbldyYXBwZXIoZXhlYywgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGVGdW5jdGlvblN0cnVjdHVy
ZSwgMCwgZXhlYy0+cHJvcGVydHlOYW1lcygpLnZhbHVlT2YsIG9iamVjdFByb3RvRnVuY1ZhbHVl
T2YpLCBEb250RW51bSk7Ci0gICAgcHV0RGlyZWN0RnVuY3Rpb25XaXRob3V0VHJhbnNpdGlvbihl
eGVjLCBuZXcgKGV4ZWMpIE5hdGl2ZUZ1bmN0aW9uV3JhcHBlcihleGVjLCBnbG9iYWxPYmplY3Qs
IHByb3RvdHlwZUZ1bmN0aW9uU3RydWN0dXJlLCAxLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkuaGFz
T3duUHJvcGVydHksIG9iamVjdFByb3RvRnVuY0hhc093blByb3BlcnR5KSwgRG9udEVudW0pOwot
ICAgIHB1dERpcmVjdEZ1bmN0aW9uV2l0aG91dFRyYW5zaXRpb24oZXhlYywgbmV3IChleGVjKSBO
YXRpdmVGdW5jdGlvbldyYXBwZXIoZXhlYywgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGVGdW5jdGlv
blN0cnVjdHVyZSwgMSwgZXhlYy0+cHJvcGVydHlOYW1lcygpLnByb3BlcnR5SXNFbnVtZXJhYmxl
LCBvYmplY3RQcm90b0Z1bmNQcm9wZXJ0eUlzRW51bWVyYWJsZSksIERvbnRFbnVtKTsKLSAgICBw
dXREaXJlY3RGdW5jdGlvbldpdGhvdXRUcmFuc2l0aW9uKGV4ZWMsIG5ldyAoZXhlYykgTmF0aXZl
RnVuY3Rpb25XcmFwcGVyKGV4ZWMsIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlRnVuY3Rpb25TdHJ1
Y3R1cmUsIDEsIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5pc1Byb3RvdHlwZU9mLCBvYmplY3RQcm90
b0Z1bmNJc1Byb3RvdHlwZU9mKSwgRG9udEVudW0pOworICAgIHB1dERpcmVjdEZ1bmN0aW9uV2l0
aG91dFRyYW5zaXRpb24oZXhlYywgbmV3IChleGVjKSBKU0Z1bmN0aW9uKGV4ZWMsIGdsb2JhbE9i
amVjdCwgZnVuY3Rpb25TdHJ1Y3R1cmUsIDAsIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS50b1N0cmlu
Zywgb2JqZWN0UHJvdG9GdW5jVG9TdHJpbmcpLCBEb250RW51bSk7CisgICAgcHV0RGlyZWN0RnVu
Y3Rpb25XaXRob3V0VHJhbnNpdGlvbihleGVjLCBuZXcgKGV4ZWMpIEpTRnVuY3Rpb24oZXhlYywg
Z2xvYmFsT2JqZWN0LCBmdW5jdGlvblN0cnVjdHVyZSwgMCwgZXhlYy0+cHJvcGVydHlOYW1lcygp
LnRvTG9jYWxlU3RyaW5nLCBvYmplY3RQcm90b0Z1bmNUb0xvY2FsZVN0cmluZyksIERvbnRFbnVt
KTsKKyAgICBwdXREaXJlY3RGdW5jdGlvbldpdGhvdXRUcmFuc2l0aW9uKGV4ZWMsIG5ldyAoZXhl
YykgSlNGdW5jdGlvbihleGVjLCBnbG9iYWxPYmplY3QsIGZ1bmN0aW9uU3RydWN0dXJlLCAwLCBl
eGVjLT5wcm9wZXJ0eU5hbWVzKCkudmFsdWVPZiwgb2JqZWN0UHJvdG9GdW5jVmFsdWVPZiksIERv
bnRFbnVtKTsKKyAgICBwdXREaXJlY3RGdW5jdGlvbldpdGhvdXRUcmFuc2l0aW9uKGV4ZWMsIG5l
dyAoZXhlYykgSlNGdW5jdGlvbihleGVjLCBnbG9iYWxPYmplY3QsIGZ1bmN0aW9uU3RydWN0dXJl
LCAxLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkuaGFzT3duUHJvcGVydHksIG9iamVjdFByb3RvRnVu
Y0hhc093blByb3BlcnR5KSwgRG9udEVudW0pOworICAgIHB1dERpcmVjdEZ1bmN0aW9uV2l0aG91
dFRyYW5zaXRpb24oZXhlYywgbmV3IChleGVjKSBKU0Z1bmN0aW9uKGV4ZWMsIGdsb2JhbE9iamVj
dCwgZnVuY3Rpb25TdHJ1Y3R1cmUsIDEsIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5wcm9wZXJ0eUlz
RW51bWVyYWJsZSwgb2JqZWN0UHJvdG9GdW5jUHJvcGVydHlJc0VudW1lcmFibGUpLCBEb250RW51
bSk7CisgICAgcHV0RGlyZWN0RnVuY3Rpb25XaXRob3V0VHJhbnNpdGlvbihleGVjLCBuZXcgKGV4
ZWMpIEpTRnVuY3Rpb24oZXhlYywgZ2xvYmFsT2JqZWN0LCBmdW5jdGlvblN0cnVjdHVyZSwgMSwg
ZXhlYy0+cHJvcGVydHlOYW1lcygpLmlzUHJvdG90eXBlT2YsIG9iamVjdFByb3RvRnVuY0lzUHJv
dG90eXBlT2YpLCBEb250RW51bSk7CiAKICAgICAvLyBNb3ppbGxhIGV4dGVuc2lvbnMKLSAgICBw
dXREaXJlY3RGdW5jdGlvbldpdGhvdXRUcmFuc2l0aW9uKGV4ZWMsIG5ldyAoZXhlYykgTmF0aXZl
RnVuY3Rpb25XcmFwcGVyKGV4ZWMsIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlRnVuY3Rpb25TdHJ1
Y3R1cmUsIDIsIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5fX2RlZmluZUdldHRlcl9fLCBvYmplY3RQ
cm90b0Z1bmNEZWZpbmVHZXR0ZXIpLCBEb250RW51bSk7Ci0gICAgcHV0RGlyZWN0RnVuY3Rpb25X
aXRob3V0VHJhbnNpdGlvbihleGVjLCBuZXcgKGV4ZWMpIE5hdGl2ZUZ1bmN0aW9uV3JhcHBlcihl
eGVjLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZUZ1bmN0aW9uU3RydWN0dXJlLCAyLCBleGVjLT5w
cm9wZXJ0eU5hbWVzKCkuX19kZWZpbmVTZXR0ZXJfXywgb2JqZWN0UHJvdG9GdW5jRGVmaW5lU2V0
dGVyKSwgRG9udEVudW0pOwotICAgIHB1dERpcmVjdEZ1bmN0aW9uV2l0aG91dFRyYW5zaXRpb24o
ZXhlYywgbmV3IChleGVjKSBOYXRpdmVGdW5jdGlvbldyYXBwZXIoZXhlYywgZ2xvYmFsT2JqZWN0
LCBwcm90b3R5cGVGdW5jdGlvblN0cnVjdHVyZSwgMSwgZXhlYy0+cHJvcGVydHlOYW1lcygpLl9f
bG9va3VwR2V0dGVyX18sIG9iamVjdFByb3RvRnVuY0xvb2t1cEdldHRlciksIERvbnRFbnVtKTsK
LSAgICBwdXREaXJlY3RGdW5jdGlvbldpdGhvdXRUcmFuc2l0aW9uKGV4ZWMsIG5ldyAoZXhlYykg
TmF0aXZlRnVuY3Rpb25XcmFwcGVyKGV4ZWMsIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlRnVuY3Rp
b25TdHJ1Y3R1cmUsIDEsIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5fX2xvb2t1cFNldHRlcl9fLCBv
YmplY3RQcm90b0Z1bmNMb29rdXBTZXR0ZXIpLCBEb250RW51bSk7CisgICAgcHV0RGlyZWN0RnVu
Y3Rpb25XaXRob3V0VHJhbnNpdGlvbihleGVjLCBuZXcgKGV4ZWMpIEpTRnVuY3Rpb24oZXhlYywg
Z2xvYmFsT2JqZWN0LCBmdW5jdGlvblN0cnVjdHVyZSwgMiwgZXhlYy0+cHJvcGVydHlOYW1lcygp
Ll9fZGVmaW5lR2V0dGVyX18sIG9iamVjdFByb3RvRnVuY0RlZmluZUdldHRlciksIERvbnRFbnVt
KTsKKyAgICBwdXREaXJlY3RGdW5jdGlvbldpdGhvdXRUcmFuc2l0aW9uKGV4ZWMsIG5ldyAoZXhl
YykgSlNGdW5jdGlvbihleGVjLCBnbG9iYWxPYmplY3QsIGZ1bmN0aW9uU3RydWN0dXJlLCAyLCBl
eGVjLT5wcm9wZXJ0eU5hbWVzKCkuX19kZWZpbmVTZXR0ZXJfXywgb2JqZWN0UHJvdG9GdW5jRGVm
aW5lU2V0dGVyKSwgRG9udEVudW0pOworICAgIHB1dERpcmVjdEZ1bmN0aW9uV2l0aG91dFRyYW5z
aXRpb24oZXhlYywgbmV3IChleGVjKSBKU0Z1bmN0aW9uKGV4ZWMsIGdsb2JhbE9iamVjdCwgZnVu
Y3Rpb25TdHJ1Y3R1cmUsIDEsIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5fX2xvb2t1cEdldHRlcl9f
LCBvYmplY3RQcm90b0Z1bmNMb29rdXBHZXR0ZXIpLCBEb250RW51bSk7CisgICAgcHV0RGlyZWN0
RnVuY3Rpb25XaXRob3V0VHJhbnNpdGlvbihleGVjLCBuZXcgKGV4ZWMpIEpTRnVuY3Rpb24oZXhl
YywgZ2xvYmFsT2JqZWN0LCBmdW5jdGlvblN0cnVjdHVyZSwgMSwgZXhlYy0+cHJvcGVydHlOYW1l
cygpLl9fbG9va3VwU2V0dGVyX18sIG9iamVjdFByb3RvRnVuY0xvb2t1cFNldHRlciksIERvbnRF
bnVtKTsKIH0KIAogdm9pZCBPYmplY3RQcm90b3R5cGU6OnB1dChFeGVjU3RhdGUqIGV4ZWMsIGNv
bnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgUHV0UHJvcGVydHlT
bG90JiBzbG90KQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0UHJv
dG90eXBlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2Jq
ZWN0UHJvdG90eXBlLmgJKHJldmlzaW9uIDc5MTQwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvT2JqZWN0UHJvdG90eXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTI3LDcgKzI3LDcg
QEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBPYmplY3RQcm90b3R5cGUgOiBwdWJsaWMg
SlNOb25GaW5hbE9iamVjdCB7CiAgICAgcHVibGljOgotICAgICAgICBPYmplY3RQcm90b3R5cGUo
RXhlY1N0YXRlKiwgSlNHbG9iYWxPYmplY3QqLCBOb25OdWxsUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+
LCBTdHJ1Y3R1cmUqIHByb3RvdHlwZUZ1bmN0aW9uU3RydWN0dXJlKTsKKyAgICAgICAgT2JqZWN0
UHJvdG90eXBlKEV4ZWNTdGF0ZSosIEpTR2xvYmFsT2JqZWN0KiwgTm9uTnVsbFBhc3NSZWZQdHI8
U3RydWN0dXJlPiwgU3RydWN0dXJlKiBmdW5jdGlvblN0cnVjdHVyZSk7CiAKICAgICBwcml2YXRl
OgogICAgICAgICB2aXJ0dWFsIHZvaWQgcHV0KEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXIm
LCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1Byb3RvdHlwZUZ1bmN0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9Qcm90b3R5cGVGdW5jdGlvbi5jcHAJKHJldmlzaW9uIDc5MTQw
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvdG90eXBlRnVuY3Rpb24uY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDU3ICswLDAgQEAKLS8qCi0gKiAgQ29weXJpZ2h0IChDKSAx
OTk5LTIwMDIgSGFycmkgUG9ydGVuIChwb3J0ZW5Aa2RlLm9yZykKLSAqICBDb3B5cmlnaHQgKEMp
IDIwMDEgUGV0ZXIgS2VsbHkgKHBta0Bwb3N0LmNvbSkKLSAqICBDb3B5cmlnaHQgKEMpIDIwMDMs
IDIwMDQsIDIwMDUsIDIwMDYsIDIwMDcsIDIwMDggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgotICogIENvcHlyaWdodCAoQykgMjAwNyBDYW1lcm9uIFp3YXJpY2ggKGN3endhcmljaEB1
d2F0ZXJsb28uY2EpCi0gKiAgQ29weXJpZ2h0IChDKSAyMDA3IE1ha3MgT3Jsb3ZpY2gKLSAqCi0g
KiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0
IGFuZC9vcgotICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5
IEdlbmVyYWwgUHVibGljCi0gKiAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29m
dHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCi0gKiAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBv
ciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotICoKLSAqICBUaGlzIGxpYnJh
cnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAq
ICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJy
YW50eSBvZgotICogIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIg
UFVSUE9TRS4gIFNlZSB0aGUgR05VCi0gKiAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl
IGZvciBtb3JlIGRldGFpbHMuCi0gKgotICogIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNv
cHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSAqICBhbG9uZyB3
aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0
ZSB0bwotICogIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGlu
IFN0cmVldCwgRmlmdGggRmxvb3IsCi0gKiAgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCi0g
KgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJQcm90b3R5cGVGdW5jdGlv
bi5oIgotCi0jaW5jbHVkZSAiSlNHbG9iYWxPYmplY3QuaCIKLSNpbmNsdWRlIDx3dGYvQXNzZXJ0
aW9ucy5oPgotCi1uYW1lc3BhY2UgSlNDIHsKLQotQVNTRVJUX0NMQVNTX0ZJVFNfSU5fQ0VMTChQ
cm90b3R5cGVGdW5jdGlvbik7Ci0KLVByb3RvdHlwZUZ1bmN0aW9uOjpQcm90b3R5cGVGdW5jdGlv
bihFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGludCBsZW5n
dGgsIGNvbnN0IElkZW50aWZpZXImIG5hbWUsIE5hdGl2ZUZ1bmN0aW9uIGZ1bmN0aW9uKQotICAg
IDogSW50ZXJuYWxGdW5jdGlvbigmZXhlYy0+Z2xvYmFsRGF0YSgpLCBnbG9iYWxPYmplY3QsIGV4
ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKS0+cHJvdG90eXBlRnVuY3Rpb25TdHJ1Y3R1cmUoKSwg
bmFtZSkKLSAgICAsIG1fZnVuY3Rpb24oZnVuY3Rpb24pCi17Ci0gICAgQVNTRVJUX0FSRyhmdW5j
dGlvbiwgZnVuY3Rpb24pOwotICAgIHB1dERpcmVjdChleGVjLT5nbG9iYWxEYXRhKCksIGV4ZWMt
PnByb3BlcnR5TmFtZXMoKS5sZW5ndGgsIGpzTnVtYmVyKGxlbmd0aCksIERvbnREZWxldGUgfCBS
ZWFkT25seSB8IERvbnRFbnVtKTsKLX0KLQotUHJvdG90eXBlRnVuY3Rpb246OlByb3RvdHlwZUZ1
bmN0aW9uKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgTm9u
TnVsbFBhc3NSZWZQdHI8U3RydWN0dXJlPiBwcm90b3R5cGVGdW5jdGlvblN0cnVjdHVyZSwgaW50
IGxlbmd0aCwgY29uc3QgSWRlbnRpZmllciYgbmFtZSwgTmF0aXZlRnVuY3Rpb24gZnVuY3Rpb24p
Ci0gICAgOiBJbnRlcm5hbEZ1bmN0aW9uKCZleGVjLT5nbG9iYWxEYXRhKCksIGdsb2JhbE9iamVj
dCwgcHJvdG90eXBlRnVuY3Rpb25TdHJ1Y3R1cmUsIG5hbWUpCi0gICAgLCBtX2Z1bmN0aW9uKGZ1
bmN0aW9uKQotewotICAgIEFTU0VSVF9BUkcoZnVuY3Rpb24sIGZ1bmN0aW9uKTsKLSAgICBwdXRE
aXJlY3QoZXhlYy0+Z2xvYmFsRGF0YSgpLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkubGVuZ3RoLCBq
c051bWJlcihsZW5ndGgpLCBEb250RGVsZXRlIHwgUmVhZE9ubHkgfCBEb250RW51bSk7Ci19Ci0g
ICAgCi1DYWxsVHlwZSBQcm90b3R5cGVGdW5jdGlvbjo6Z2V0Q2FsbERhdGEoQ2FsbERhdGEmIGNh
bGxEYXRhKQotewotICAgIGNhbGxEYXRhLm5hdGl2ZS5mdW5jdGlvbiA9IG1fZnVuY3Rpb247Ci0g
ICAgcmV0dXJuIENhbGxUeXBlSG9zdDsKLX0KLQotfSAvLyBuYW1lc3BhY2UgSlNDCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm90b3R5cGVGdW5jdGlvbi5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3RvdHlwZUZ1bmN0aW9uLmgJ
KHJldmlzaW9uIDc5MTQwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvdG90
eXBlRnVuY3Rpb24uaAkod29ya2luZyBjb3B5KQpAQCAtMSw0NSArMCwwIEBACi0vKgotICogIENv
cHlyaWdodCAoQykgMTk5OS0yMDAwIEhhcnJpIFBvcnRlbiAocG9ydGVuQGtkZS5vcmcpCi0gKiAg
Q29weXJpZ2h0IChDKSAyMDAzLCAyMDA2LCAyMDA3LCAyMDA4IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KLSAqICBDb3B5cmlnaHQgKEMpIDIwMDcgQ2FtZXJvbiBad2FyaWNoIChjd3p3
YXJpY2hAdXdhdGVybG9vLmNhKQotICogIENvcHlyaWdodCAoQykgMjAwNyBNYWtzIE9ybG92aWNo
Ci0gKgotICogIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJp
YnV0ZSBpdCBhbmQvb3IKLSAqICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUg
TGlicmFyeSBHZW5lcmFsIFB1YmxpYwotICogIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBG
cmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgotICogIHZlcnNpb24gMiBvZiB0aGUgTGlj
ZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSAqCi0gKiAgVGhp
cyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2Vm
dWwsCi0gKiAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxp
ZWQgd2FycmFudHkgb2YKLSAqICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotICogIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMg
TGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotICoKLSAqICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2
ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0gKiAg
YWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5v
dCwgd3JpdGUgdG8KLSAqICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBG
cmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAotICogIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwg
VVNBLgotICoKLSAqLwotCi0jaWZuZGVmIFByb3RvdHlwZUZ1bmN0aW9uX2gKLSNkZWZpbmUgUHJv
dG90eXBlRnVuY3Rpb25faAotCi0jaW5jbHVkZSAiSW50ZXJuYWxGdW5jdGlvbi5oIgotI2luY2x1
ZGUgIkNhbGxEYXRhLmgiCi0KLW5hbWVzcGFjZSBKU0MgewotCi0gICAgY2xhc3MgUHJvdG90eXBl
RnVuY3Rpb24gOiBwdWJsaWMgSW50ZXJuYWxGdW5jdGlvbiB7Ci0gICAgcHVibGljOgotICAgICAg
ICBQcm90b3R5cGVGdW5jdGlvbihFeGVjU3RhdGUqLCBKU0dsb2JhbE9iamVjdCosIGludCBsZW5n
dGgsIGNvbnN0IElkZW50aWZpZXImLCBOYXRpdmVGdW5jdGlvbik7Ci0gICAgICAgIFByb3RvdHlw
ZUZ1bmN0aW9uKEV4ZWNTdGF0ZSosIEpTR2xvYmFsT2JqZWN0KiwgTm9uTnVsbFBhc3NSZWZQdHI8
U3RydWN0dXJlPiwgaW50IGxlbmd0aCwgY29uc3QgSWRlbnRpZmllciYsIE5hdGl2ZUZ1bmN0aW9u
KTsKLQotICAgIHByaXZhdGU6Ci0gICAgICAgIHZpcnR1YWwgQ2FsbFR5cGUgZ2V0Q2FsbERhdGEo
Q2FsbERhdGEmKTsKLQotICAgICAgICBjb25zdCBOYXRpdmVGdW5jdGlvbiBtX2Z1bmN0aW9uOwot
ICAgIH07Ci0KLX0gLy8gbmFtZXNwYWNlIEpTQwotCi0jZW5kaWYgLy8gUHJvdG90eXBlRnVuY3Rp
b25faApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwUHJvdG90eXBl
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBQ
cm90b3R5cGUuY3BwCShyZXZpc2lvbiA3OTE0MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1JlZ0V4cFByb3RvdHlwZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMwLDcgKzMwLDYg
QEAKICNpbmNsdWRlICJKU1N0cmluZ0J1aWxkZXIuaCIKICNpbmNsdWRlICJKU1ZhbHVlLmgiCiAj
aW5jbHVkZSAiT2JqZWN0UHJvdG90eXBlLmgiCi0jaW5jbHVkZSAiUHJvdG90eXBlRnVuY3Rpb24u
aCIKICNpbmNsdWRlICJSZWdFeHBPYmplY3QuaCIKICNpbmNsdWRlICJSZWdFeHAuaCIKICNpbmNs
dWRlICJSZWdFeHBDYWNoZS5oIgpAQCAtNDgsMTMgKzQ3LDEzIEBAIHN0YXRpYyBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIHJlZ0UKIAogLy8gRUNNQSAxNS4xMC41CiAKLVJlZ0V4cFByb3Rv
dHlwZTo6UmVnRXhwUHJvdG90eXBlKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgTm9uTnVsbFBhc3NSZWZQdHI8U3RydWN0dXJlPiBzdHJ1Y3R1cmUsIFN0cnVj
dHVyZSogcHJvdG90eXBlRnVuY3Rpb25TdHJ1Y3R1cmUpCitSZWdFeHBQcm90b3R5cGU6OlJlZ0V4
cFByb3RvdHlwZShFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IE5vbk51bGxQYXNzUmVmUHRyPFN0cnVjdHVyZT4gc3RydWN0dXJlLCBTdHJ1Y3R1cmUqIGZ1bmN0
aW9uU3RydWN0dXJlKQogICAgIDogUmVnRXhwT2JqZWN0KGdsb2JhbE9iamVjdCwgc3RydWN0dXJl
LCBSZWdFeHA6OmNyZWF0ZSgmZXhlYy0+Z2xvYmFsRGF0YSgpLCAiIiwgIiIpKQogewotICAgIHB1
dERpcmVjdEZ1bmN0aW9uV2l0aG91dFRyYW5zaXRpb24oZXhlYywgbmV3IChleGVjKSBOYXRpdmVG
dW5jdGlvbldyYXBwZXIoZXhlYywgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGVGdW5jdGlvblN0cnVj
dHVyZSwgMCwgZXhlYy0+cHJvcGVydHlOYW1lcygpLmNvbXBpbGUsIHJlZ0V4cFByb3RvRnVuY0Nv
bXBpbGUpLCBEb250RW51bSk7Ci0gICAgcHV0RGlyZWN0RnVuY3Rpb25XaXRob3V0VHJhbnNpdGlv
bihleGVjLCBuZXcgKGV4ZWMpIE5hdGl2ZUZ1bmN0aW9uV3JhcHBlcihleGVjLCBnbG9iYWxPYmpl
Y3QsIHByb3RvdHlwZUZ1bmN0aW9uU3RydWN0dXJlLCAwLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCku
ZXhlYywgcmVnRXhwUHJvdG9GdW5jRXhlYyksIERvbnRFbnVtKTsKLSAgICBwdXREaXJlY3RGdW5j
dGlvbldpdGhvdXRUcmFuc2l0aW9uKGV4ZWMsIG5ldyAoZXhlYykgTmF0aXZlRnVuY3Rpb25XcmFw
cGVyKGV4ZWMsIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlRnVuY3Rpb25TdHJ1Y3R1cmUsIDAsIGV4
ZWMtPnByb3BlcnR5TmFtZXMoKS50ZXN0LCByZWdFeHBQcm90b0Z1bmNUZXN0KSwgRG9udEVudW0p
OwotICAgIHB1dERpcmVjdEZ1bmN0aW9uV2l0aG91dFRyYW5zaXRpb24oZXhlYywgbmV3IChleGVj
KSBOYXRpdmVGdW5jdGlvbldyYXBwZXIoZXhlYywgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGVGdW5j
dGlvblN0cnVjdHVyZSwgMCwgZXhlYy0+cHJvcGVydHlOYW1lcygpLnRvU3RyaW5nLCByZWdFeHBQ
cm90b0Z1bmNUb1N0cmluZyksIERvbnRFbnVtKTsKKyAgICBwdXREaXJlY3RGdW5jdGlvbldpdGhv
dXRUcmFuc2l0aW9uKGV4ZWMsIG5ldyAoZXhlYykgSlNGdW5jdGlvbihleGVjLCBnbG9iYWxPYmpl
Y3QsIGZ1bmN0aW9uU3RydWN0dXJlLCAwLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkuY29tcGlsZSwg
cmVnRXhwUHJvdG9GdW5jQ29tcGlsZSksIERvbnRFbnVtKTsKKyAgICBwdXREaXJlY3RGdW5jdGlv
bldpdGhvdXRUcmFuc2l0aW9uKGV4ZWMsIG5ldyAoZXhlYykgSlNGdW5jdGlvbihleGVjLCBnbG9i
YWxPYmplY3QsIGZ1bmN0aW9uU3RydWN0dXJlLCAwLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkuZXhl
YywgcmVnRXhwUHJvdG9GdW5jRXhlYyksIERvbnRFbnVtKTsKKyAgICBwdXREaXJlY3RGdW5jdGlv
bldpdGhvdXRUcmFuc2l0aW9uKGV4ZWMsIG5ldyAoZXhlYykgSlNGdW5jdGlvbihleGVjLCBnbG9i
YWxPYmplY3QsIGZ1bmN0aW9uU3RydWN0dXJlLCAwLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkudGVz
dCwgcmVnRXhwUHJvdG9GdW5jVGVzdCksIERvbnRFbnVtKTsKKyAgICBwdXREaXJlY3RGdW5jdGlv
bldpdGhvdXRUcmFuc2l0aW9uKGV4ZWMsIG5ldyAoZXhlYykgSlNGdW5jdGlvbihleGVjLCBnbG9i
YWxPYmplY3QsIGZ1bmN0aW9uU3RydWN0dXJlLCAwLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkudG9T
dHJpbmcsIHJlZ0V4cFByb3RvRnVuY1RvU3RyaW5nKSwgRG9udEVudW0pOwogfQogCiAvLyAtLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gRnVuY3Rpb25zIC0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwUHJvdG90
eXBlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhw
UHJvdG90eXBlLmgJKHJldmlzaW9uIDc5MTQwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvUmVnRXhwUHJvdG90eXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTI4LDcgKzI4LDcgQEAg
bmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBSZWdFeHBQcm90b3R5cGUgOiBwdWJsaWMgUmVn
RXhwT2JqZWN0IHsKICAgICBwdWJsaWM6Ci0gICAgICAgIFJlZ0V4cFByb3RvdHlwZShFeGVjU3Rh
dGUqLCBKU0dsb2JhbE9iamVjdCosIE5vbk51bGxQYXNzUmVmUHRyPFN0cnVjdHVyZT4sIFN0cnVj
dHVyZSogcHJvdG90eXBlRnVuY3Rpb25TdHJ1Y3R1cmUpOworICAgICAgICBSZWdFeHBQcm90b3R5
cGUoRXhlY1N0YXRlKiwgSlNHbG9iYWxPYmplY3QqLCBOb25OdWxsUGFzc1JlZlB0cjxTdHJ1Y3R1
cmU+LCBTdHJ1Y3R1cmUqIGZ1bmN0aW9uU3RydWN0dXJlKTsKICAgICB9OwogCiB9IC8vIG5hbWVz
cGFjZSBKU0MKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NtYWxsU3RyaW5n
cy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NtYWxsU3Ry
aW5ncy5oCShyZXZpc2lvbiA3OTE0MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1NtYWxsU3RyaW5ncy5oCSh3b3JraW5nIGNvcHkpCkBAIC02Myw5ICs2Myw5IEBAIG5hbWVzcGFj
ZSBKU0MgewogICAgICAgICB2b2lkIGNsZWFyKCk7CiAKICAgICAgICAgdW5zaWduZWQgY291bnQo
KSBjb25zdDsKLSNpZiBFTkFCTEUoSklUKQorCiAgICAgICAgIEpTQ2VsbCoqIHNpbmdsZUNoYXJh
Y3RlclN0cmluZ3MoKSB7IHJldHVybiBtX3NpbmdsZUNoYXJhY3RlclN0cmluZ3NbMF0uc2xvdCgp
OyB9Ci0jZW5kaWYKKwogICAgIHByaXZhdGU6CiAgICAgICAgIHZvaWQgY3JlYXRlRW1wdHlTdHJp
bmcoSlNHbG9iYWxEYXRhKik7CiAgICAgICAgIHZvaWQgY3JlYXRlU2luZ2xlQ2hhcmFjdGVyU3Ry
aW5nKEpTR2xvYmFsRGF0YSosIHVuc2lnbmVkIGNoYXIpOwpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvU3RyaW5nQ29uc3RydWN0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ0NvbnN0cnVjdG9yLmNwcAkocmV2aXNpb24g
NzkxNDIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdDb25zdHJ1Y3Rv
ci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI2LDcgKzI2LDYgQEAKICNpbmNsdWRlICJKU0Z1bmN0
aW9uLmgiCiAjaW5jbHVkZSAiSlNHbG9iYWxPYmplY3QuaCIKICNpbmNsdWRlICJTdHJpbmdQcm90
b3R5cGUuaCIKLSNpbmNsdWRlICJQcm90b3R5cGVGdW5jdGlvbi5oIgogCiBuYW1lc3BhY2UgSlND
IHsKIApAQCAtNDksNyArNDgsNyBAQCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBzdHJpCiAKIEFTU0VSVF9DTEFTU19GSVRTX0lOX0NFTEwoU3RyaW5nQ29uc3RydWN0b3IpOwog
Ci1TdHJpbmdDb25zdHJ1Y3Rvcjo6U3RyaW5nQ29uc3RydWN0b3IoRXhlY1N0YXRlKiBleGVjLCBK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBOb25OdWxsUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+
IHN0cnVjdHVyZSwgU3RydWN0dXJlKiBwcm90b3R5cGVGdW5jdGlvblN0cnVjdHVyZSwgU3RyaW5n
UHJvdG90eXBlKiBzdHJpbmdQcm90b3R5cGUpCitTdHJpbmdDb25zdHJ1Y3Rvcjo6U3RyaW5nQ29u
c3RydWN0b3IoRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBO
b25OdWxsUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+IHN0cnVjdHVyZSwgU3RydWN0dXJlKiBmdW5jdGlv
blN0cnVjdHVyZSwgU3RyaW5nUHJvdG90eXBlKiBzdHJpbmdQcm90b3R5cGUpCiAgICAgOiBJbnRl
cm5hbEZ1bmN0aW9uKCZleGVjLT5nbG9iYWxEYXRhKCksIGdsb2JhbE9iamVjdCwgc3RydWN0dXJl
LCBJZGVudGlmaWVyKGV4ZWMsIHN0cmluZ1Byb3RvdHlwZS0+Y2xhc3NJbmZvKCktPmNsYXNzTmFt
ZSkpCiB7CiAgICAgLy8gRUNNQSAxNS41LjMuMSBTdHJpbmcucHJvdG90eXBlCkBAIC01Nyw5ICs1
Niw5IEBAIFN0cmluZ0NvbnN0cnVjdG9yOjpTdHJpbmdDb25zdHJ1Y3RvcihFeGUKIAogICAgIC8v
IEVDTUEgMTUuNS4zLjIgZnJvbUNoYXJDb2RlKCkKICNpZiBFTkFCTEUoSklUKSAmJiBFTkFCTEUo
SklUX09QVElNSVpFX05BVElWRV9DQUxMKQotICAgIHB1dERpcmVjdEZ1bmN0aW9uV2l0aG91dFRy
YW5zaXRpb24oZXhlYywgbmV3IChleGVjKSBOYXRpdmVGdW5jdGlvbldyYXBwZXIoZXhlYywgZ2xv
YmFsT2JqZWN0LCBwcm90b3R5cGVGdW5jdGlvblN0cnVjdHVyZSwgMSwgZXhlYy0+cHJvcGVydHlO
YW1lcygpLmZyb21DaGFyQ29kZSwgZXhlYy0+Z2xvYmFsRGF0YSgpLmdldEhvc3RGdW5jdGlvbihz
dHJpbmdGcm9tQ2hhckNvZGUsIGZyb21DaGFyQ29kZVRodW5rR2VuZXJhdG9yKSksIERvbnRFbnVt
KTsKKyAgICBwdXREaXJlY3RGdW5jdGlvbldpdGhvdXRUcmFuc2l0aW9uKGV4ZWMsIG5ldyAoZXhl
YykgSlNGdW5jdGlvbihleGVjLCBnbG9iYWxPYmplY3QsIGZ1bmN0aW9uU3RydWN0dXJlLCAxLCBl
eGVjLT5wcm9wZXJ0eU5hbWVzKCkuZnJvbUNoYXJDb2RlLCBleGVjLT5nbG9iYWxEYXRhKCkuZ2V0
SG9zdEZ1bmN0aW9uKHN0cmluZ0Zyb21DaGFyQ29kZSwgZnJvbUNoYXJDb2RlVGh1bmtHZW5lcmF0
b3IpKSwgRG9udEVudW0pOwogI2Vsc2UKLSAgICBwdXREaXJlY3RGdW5jdGlvbldpdGhvdXRUcmFu
c2l0aW9uKGV4ZWMsIG5ldyAoZXhlYykgTmF0aXZlRnVuY3Rpb25XcmFwcGVyKGV4ZWMsIGdsb2Jh
bE9iamVjdCwgcHJvdG90eXBlRnVuY3Rpb25TdHJ1Y3R1cmUsIDEsIGV4ZWMtPnByb3BlcnR5TmFt
ZXMoKS5mcm9tQ2hhckNvZGUsIHN0cmluZ0Zyb21DaGFyQ29kZSksIERvbnRFbnVtKTsKKyAgICBw
dXREaXJlY3RGdW5jdGlvbldpdGhvdXRUcmFuc2l0aW9uKGV4ZWMsIG5ldyAoZXhlYykgSlNGdW5j
dGlvbihleGVjLCBnbG9iYWxPYmplY3QsIGZ1bmN0aW9uU3RydWN0dXJlLCAxLCBleGVjLT5wcm9w
ZXJ0eU5hbWVzKCkuZnJvbUNoYXJDb2RlLCBzdHJpbmdGcm9tQ2hhckNvZGUpLCBEb250RW51bSk7
CiAjZW5kaWYKICAgICAvLyBuby4gb2YgYXJndW1lbnRzIGZvciBjb25zdHJ1Y3RvcgogICAgIHB1
dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKGV4ZWMtPmdsb2JhbERhdGEoKSwgZXhlYy0+cHJvcGVy
dHlOYW1lcygpLmxlbmd0aCwganNOdW1iZXIoMSksIFJlYWRPbmx5IHwgRG9udEVudW0gfCBEb250
RGVsZXRlKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ0NvbnN0
cnVjdG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3Ry
aW5nQ29uc3RydWN0b3IuaAkocmV2aXNpb24gNzkxNDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9TdHJpbmdDb25zdHJ1Y3Rvci5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw3ICsy
OSw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3MgU3RyaW5nQ29uc3RydWN0b3IgOiBw
dWJsaWMgSW50ZXJuYWxGdW5jdGlvbiB7CiAgICAgcHVibGljOgotICAgICAgICBTdHJpbmdDb25z
dHJ1Y3RvcihFeGVjU3RhdGUqLCBKU0dsb2JhbE9iamVjdCosIE5vbk51bGxQYXNzUmVmUHRyPFN0
cnVjdHVyZT4sIFN0cnVjdHVyZSogcHJvdG90eXBlRnVuY3Rpb25TdHJ1Y3R1cmUsIFN0cmluZ1By
b3RvdHlwZSopOworICAgICAgICBTdHJpbmdDb25zdHJ1Y3RvcihFeGVjU3RhdGUqLCBKU0dsb2Jh
bE9iamVjdCosIE5vbk51bGxQYXNzUmVmUHRyPFN0cnVjdHVyZT4sIFN0cnVjdHVyZSogZnVuY3Rp
b25TdHJ1Y3R1cmUsIFN0cmluZ1Byb3RvdHlwZSopOwogCiAgICAgICAgIHZpcnR1YWwgQ29uc3Ry
dWN0VHlwZSBnZXRDb25zdHJ1Y3REYXRhKENvbnN0cnVjdERhdGEmKTsKICAgICAgICAgdmlydHVh
bCBDYWxsVHlwZSBnZXRDYWxsRGF0YShDYWxsRGF0YSYpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>83113</attachid>
            <date>2011-02-20 18:29:50 -0800</date>
            <delta_ts>2011-02-20 19:46:56 -0800</delta_ts>
            <desc>The patch, (with WebCore diffs this time!)</desc>
            <filename>54839.2.patch</filename>
            <type>text/plain</type>
            <size>106732</size>
            <attacher name="Gavin Barraclough">barraclough</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gNzkxNTkpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsODYgQEAK
KzIwMTEtMDItMjAgIEdhdmluIEJhcnJhY2xvdWdoICA8YmFycmFjbG91Z2hAYXBwbGUuY29tPgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01NDgzOQorICAgICAgICBSZW1vdmUgUHJv
dG90eXBlRnVuY3Rpb24sIE5hdGl2ZUZ1bmN0aW9uV3JhcHBlciwgYW5kIEdsb2JhbEV2YWxGdW5j
dGlvbi4KKworICAgICAgICBIaXN0b3JpY2FsbHksIE5hdGl2ZSBmdW5jdGlvbnMgdXNlZCB0byBi
ZSByZXByZXNlbnRlZCBieSBQcm90b3R5cGVGdW5jdGlvbnMsIGhvd2V2ZXIKKyAgICAgICAgc2lu
Y2UgaW50cm9kdWNpbmcgY2FsbCBvcHRpbWl6YXRpb25zIHRvIHRoZSBKSVQgdGhpcyBoYXMgdXNl
ZCBKU0Z1bmN0aW9ucyBmb3IgaG9zdAorICAgICAgICBjYWxscyB0b28uIEF0IHRoZSBwb2ludCB0
aGlzIGNoYW5nZSB3YXMgbWFkZSwgdGhlIGludGVycHJldGVyIGNvbnRpbnVlZCB0byB1c2UKKyAg
ICAgICAgUHJvdG90eXBlRnVuY3Rpb25zLCBob3dldmVyIHNpbmNlIGZhbGxiYWNrIGZyb20gdGhl
IEpJVCB0byBpbnRlcnByZXRlciB3YXMgaW50cm9kdWNlZAorICAgICAgICB0aGUgaW50ZXJwcmV0
ZXIgaGFzIGhhZCB0byBiZSBhYmxlIHRvIHJ1biB1c2luZyBob3N0IGZ1bmN0aW9ucyByZXByZXNl
bnRlZCB1c2luZworICAgICAgICBKU0Z1bmN0aW9ucyAtIGxlYWRpbmcgdG8gYW4gdW5uZWNlc3Nh
cnkgYW5kIHJlZHVuZGFudCBkaXZlcmdlbmNlIGluIGJlaGF2aW91ciBiZXR3ZWVuIAorICAgICAg
ICBpbnRlcnByZXRlciBvbmx5IGJ1aWxkcywgYW5kIHNpdHVhdGlvbnMgd2hlcmUgdGhlIEpJVCBo
YXMgZmFsbGVuIGJhY2sgdG8gaW50ZXJwcmV0aW5nLgorCisgICAgICAgIE5hdGl2ZUZ1bmN0aW9u
V3JhcHBlciBvbmx5IGV4aXN0ZWQgdG8gc2VsZWN0IGJldHdlZW4gUHJvdG90eXBlRnVuY3Rpb24g
YW5kIEpTRnVuY3Rpb24KKyAgICAgICAgZm9yIHdyYXBwZXJzIGZvciBob3N0IGZ1bmN0aW9ucywg
YW5kIGFzIHN1Y2ggY2FuIGFsc28gYmUgcmVtb3ZlZC4KKworICAgICAgICBHbG9iYWxFdmFsRnVu
Y3Rpb24gaXMgYSByZWR1bmRhbnQgd3JhcHBlciB0aGF0IGhhcHBlbnMgdG8gYmUgZGVyaXZlZCBm
cm9tCisgICAgICAgIFByb3RvdHlwZUZ1bmN0aW9uLiBJdCBleGlzdGVkIHRvIGhvbGQgYSByZWZl
cmVuY2UgdG8gdGhlIGdsb2JhbCBvYmplY3QgLSBidXQgc2luY2UgYWxsCisgICAgICAgIGZ1bmN0
aW9ucyBob3cgZGVyaXZlIGZyb20gSlNPYmplY3RXaXRoR2xvYmFsT2JqZWN0LCB0aGlzIG5vIGxv
bmdlciByZXF1aXJlcyBhbgorICAgICAgICBhZGRpdGlvbmFsIGNsYXNzIHRvIHByb3ZpZGUgdGhp
cyBmdW5jdGlvbmFsaXR5LgorCisgICAgICAgICogSmF2YVNjcmlwdENvcmUuSlNWQUxVRTMyXzY0
b25seS5leHA6CisgICAgICAgICogSmF2YVNjcmlwdENvcmUuSlNWQUxVRTY0b25seS5leHA6Cisg
ICAgICAgICogSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAg
ICAgICAgIFJlbW92ZWQgc3ltYm9scyAvIHJlZmVyZW5jZXMgdG8gZmlsZXMuCisKKyAgICAgICAg
KiBydW50aW1lL0dsb2JhbEV2YWxGdW5jdGlvbi5jcHA6IFJlbW92ZWQuCisgICAgICAgICogcnVu
dGltZS9HbG9iYWxFdmFsRnVuY3Rpb24uaDogUmVtb3ZlZC4KKyAgICAgICAgKiBydW50aW1lL05h
dGl2ZUZ1bmN0aW9uV3JhcHBlci5oOiBSZW1vdmVkLgorICAgICAgICAqIHJ1bnRpbWUvUHJvdG90
eXBlRnVuY3Rpb24uY3BwOiBSZW1vdmVkLgorICAgICAgICAqIHJ1bnRpbWUvUHJvdG90eXBlRnVu
Y3Rpb24uaDogUmVtb3ZlZC4KKyAgICAgICAgICAgIFJlbW92ZWQuCisKKyAgICAgICAgKiBydW50
aW1lL0V4ZWN1dGFibGUuY3BwOgorICAgICAgICAoSlNDOjpOYXRpdmVFeGVjdXRhYmxlOjp+TmF0
aXZlRXhlY3V0YWJsZSk6CisgICAgICAgICogcnVudGltZS9FeGVjdXRhYmxlLmg6CisgICAgICAg
IChKU0M6Ok5hdGl2ZUV4ZWN1dGFibGU6OmNyZWF0ZSk6CisgICAgICAgIChKU0M6Ok5hdGl2ZUV4
ZWN1dGFibGU6Ok5hdGl2ZUV4ZWN1dGFibGUpOgorICAgICAgICAoSlNDOjpKU0Z1bmN0aW9uOjpu
YXRpdmVGdW5jdGlvbik6CisgICAgICAgICogcnVudGltZS9KU0Z1bmN0aW9uLmNwcDoKKyAgICAg
ICAgKEpTQzo6Y2FsbEhvc3RGdW5jdGlvbkFzQ29uc3RydWN0b3IpOgorICAgICAgICAoSlNDOjpK
U0Z1bmN0aW9uOjpKU0Z1bmN0aW9uKToKKyAgICAgICAgKEpTQzo6SlNGdW5jdGlvbjo6Z2V0Q2Fs
bERhdGEpOgorICAgICAgICAqIHJ1bnRpbWUvSlNGdW5jdGlvbi5oOgorICAgICAgICAqIHJ1bnRp
bWUvSlNHbG9iYWxEYXRhLmNwcDoKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxEYXRhOjpnZXRIb3N0
RnVuY3Rpb24pOgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxEYXRhLmg6CisgICAgICAgIChK
U0M6OkpTR2xvYmFsRGF0YTo6Z2V0Q1RJU3R1Yik6CisgICAgICAgICAgICBBZGRlZCBpbnRlcnBy
ZXRlci1mcmllbmRseSBjb25zdHJ1Y3RvcnMgZm9yIE5hdGl2ZUV4ZWN1dGFibGVzLgorCisgICAg
ICAgICogYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcDoKKyAgICAgICAgKiBpbnRl
cnByZXRlci9JbnRlcnByZXRlci5jcHA6CisgICAgICAgICogaml0L0pJVFN0dWJzLmNwcDoKKyAg
ICAgICAgKiBqc2MuY3BwOgorICAgICAgICAqIHJ1bnRpbWUvQXJyYXlDb25zdHJ1Y3Rvci5jcHA6
CisgICAgICAgICogcnVudGltZS9Cb29sZWFuUHJvdG90eXBlLmNwcDoKKyAgICAgICAgKiBydW50
aW1lL0Jvb2xlYW5Qcm90b3R5cGUuaDoKKyAgICAgICAgKiBydW50aW1lL0NhbGxEYXRhLmg6Cisg
ICAgICAgICogcnVudGltZS9EYXRlQ29uc3RydWN0b3IuY3BwOgorICAgICAgICAqIHJ1bnRpbWUv
RGF0ZUNvbnN0cnVjdG9yLmg6CisgICAgICAgICogcnVudGltZS9FcnJvclByb3RvdHlwZS5jcHA6
CisgICAgICAgICogcnVudGltZS9FcnJvclByb3RvdHlwZS5oOgorICAgICAgICAqIHJ1bnRpbWUv
RnVuY3Rpb25Qcm90b3R5cGUuY3BwOgorICAgICAgICAqIHJ1bnRpbWUvRnVuY3Rpb25Qcm90b3R5
cGUuaDoKKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcDoKKyAgICAgICAgKiBy
dW50aW1lL0pTR2xvYmFsT2JqZWN0Lmg6CisgICAgICAgICogcnVudGltZS9KU0dsb2JhbE9iamVj
dEZ1bmN0aW9ucy5jcHA6CisgICAgICAgICogcnVudGltZS9Mb29rdXAuY3BwOgorICAgICAgICAq
IHJ1bnRpbWUvTnVtYmVyUHJvdG90eXBlLmNwcDoKKyAgICAgICAgKiBydW50aW1lL051bWJlclBy
b3RvdHlwZS5oOgorICAgICAgICAqIHJ1bnRpbWUvT2JqZWN0Q29uc3RydWN0b3IuY3BwOgorICAg
ICAgICAqIHJ1bnRpbWUvT2JqZWN0Q29uc3RydWN0b3IuaDoKKyAgICAgICAgKiBydW50aW1lL09i
amVjdFByb3RvdHlwZS5jcHA6CisgICAgICAgICogcnVudGltZS9PYmplY3RQcm90b3R5cGUuaDoK
KyAgICAgICAgKiBydW50aW1lL1JlZ0V4cFByb3RvdHlwZS5jcHA6CisgICAgICAgICogcnVudGlt
ZS9SZWdFeHBQcm90b3R5cGUuaDoKKyAgICAgICAgKiBydW50aW1lL1NtYWxsU3RyaW5ncy5oOgor
ICAgICAgICAqIHJ1bnRpbWUvU3RyaW5nQ29uc3RydWN0b3IuY3BwOgorICAgICAgICAqIHJ1bnRp
bWUvU3RyaW5nQ29uc3RydWN0b3IuaDoKKyAgICAgICAgICAgIFJlbW92ZWQgdXNlIG9mIHJlZHVu
ZGFudCBjbGFzc2VzLgorCiAyMDExLTAyLTE5ICBMYXN6bG8gR29tYm9zICA8bGFzemxvLjEuZ29t
Ym9zQG5va2lhLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkIGJ1aWxkIGZpeCBmb3IgU3ltYmlh
bi4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BbmRyb2lkLm1rCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BbmRyb2lkLm1rCShyZXZpc2lvbiA3OTE1OSkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9BbmRyb2lkLm1rCSh3b3JraW5nIGNvcHkpCkBAIC05NCw3ICs5
NCw2IEBAIExPQ0FMX1NSQ19GSUxFUyA6PSBcCiAJcnVudGltZS9GdW5jdGlvblByb3RvdHlwZS5j
cHAgXAogCXJ1bnRpbWUvR0NIYW5kbGUuY3BwIFwKIAlydW50aW1lL0dldHRlclNldHRlci5jcHAg
XAotCXJ1bnRpbWUvR2xvYmFsRXZhbEZ1bmN0aW9uLmNwcCBcCiAJcnVudGltZS9JZGVudGlmaWVy
LmNwcCBcCiAJcnVudGltZS9Jbml0aWFsaXplVGhyZWFkaW5nLmNwcCBcCiAJcnVudGltZS9JbnRl
cm5hbEZ1bmN0aW9uLmNwcCBcCkBAIC0xMzcsNyArMTM2LDYgQEAgTE9DQUxfU1JDX0ZJTEVTIDo9
IFwKIAlydW50aW1lL1Byb3BlcnR5RGVzY3JpcHRvci5jcHAgXAogCXJ1bnRpbWUvUHJvcGVydHlO
YW1lQXJyYXkuY3BwIFwKIAlydW50aW1lL1Byb3BlcnR5U2xvdC5jcHAgXAotCXJ1bnRpbWUvUHJv
dG90eXBlRnVuY3Rpb24uY3BwIFwKIAlydW50aW1lL1JlZ0V4cC5jcHAgXAogCXJ1bnRpbWUvUmVn
RXhwQ29uc3RydWN0b3IuY3BwIFwKIAlydW50aW1lL1JlZ0V4cE9iamVjdC5jcHAgXApJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0Cj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAkocmV2aXNpb24gNzkxNTkpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQJKHdvcmtpbmcgY29weSkKQEAgLTEwNCw3
ICsxMDQsNiBAQCBTRVQoSmF2YVNjcmlwdENvcmVfU09VUkNFUwogICAgIHJ1bnRpbWUvRnVuY3Rp
b25Qcm90b3R5cGUuY3BwCiAgICAgcnVudGltZS9HQ0FjdGl2aXR5Q2FsbGJhY2suY3BwCiAgICAg
cnVudGltZS9HZXR0ZXJTZXR0ZXIuY3BwCi0gICAgcnVudGltZS9HbG9iYWxFdmFsRnVuY3Rpb24u
Y3BwCiAgICAgcnVudGltZS9JZGVudGlmaWVyLmNwcAogICAgIHJ1bnRpbWUvSW5pdGlhbGl6ZVRo
cmVhZGluZy5jcHAKICAgICBydW50aW1lL0ludGVybmFsRnVuY3Rpb24uY3BwCkBAIC0xNDgsNyAr
MTQ3LDYgQEAgU0VUKEphdmFTY3JpcHRDb3JlX1NPVVJDRVMKICAgICBydW50aW1lL1Byb3BlcnR5
RGVzY3JpcHRvci5jcHAKICAgICBydW50aW1lL1Byb3BlcnR5TmFtZUFycmF5LmNwcAogICAgIHJ1
bnRpbWUvUHJvcGVydHlTbG90LmNwcAotICAgIHJ1bnRpbWUvUHJvdG90eXBlRnVuY3Rpb24uY3Bw
CiAgICAgcnVudGltZS9SZWdFeHAuY3BwCiAgICAgcnVudGltZS9SZWdFeHBDYWNoZS5jcHAKICAg
ICBydW50aW1lL1JlZ0V4cENvbnN0cnVjdG9yLmNwcApJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL0dOVW1ha2VmaWxlLmFtCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9H
TlVtYWtlZmlsZS5hbQkocmV2aXNpb24gNzkxNTkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
R05VbWFrZWZpbGUuYW0JKHdvcmtpbmcgY29weSkKQEAgLTI3Nyw4ICsyNzcsNiBAQCBqYXZhc2Ny
aXB0Y29yZV9zb3VyY2VzICs9IFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HQ0Fj
dGl2aXR5Q2FsbGJhY2suaCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2V0dGVy
U2V0dGVyLmNwcCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2V0dGVyU2V0dGVy
LmggXAotCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dsb2JhbEV2YWxGdW5jdGlvbi5j
cHAgXAotCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dsb2JhbEV2YWxGdW5jdGlvbi5o
IFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JZGVudGlmaWVyLmNwcCBcCiAJU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSWRlbnRpZmllci5oIFwKIAlTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9Jbml0aWFsaXplVGhyZWFkaW5nLmNwcCBcCkBAIC0zNDksNyArMzQ3
LDYgQEAgamF2YXNjcmlwdGNvcmVfc291cmNlcyArPSBcCiAJU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvTmF0aXZlRXJyb3JDb25zdHJ1Y3Rvci5oIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9OYXRpdmVFcnJvclByb3RvdHlwZS5jcHAgXAogCVNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL05hdGl2ZUVycm9yUHJvdG90eXBlLmggXAotCVNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL05hdGl2ZUZ1bmN0aW9uV3JhcHBlci5oIFwKIAlTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9OdW1iZXJDb25zdHJ1Y3Rvci5jcHAgXAogCVNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL051bWJlckNvbnN0cnVjdG9yLmggXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL051bWJlck9iamVjdC5jcHAgXApAQCAtMzcxLDggKzM2OCw2IEBAIGphdmFzY3Jp
cHRjb3JlX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3Bl
cnR5U2xvdC5jcHAgXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3BlcnR5U2xv
dC5oIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm90ZWN0LmggXAotCVNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3RvdHlwZUZ1bmN0aW9uLmNwcCBcCi0JU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvdG90eXBlRnVuY3Rpb24uaCBcCiAJU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvUHV0UHJvcGVydHlTbG90LmggXAogCVNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1JlZ0V4cENhY2hlLmNwcCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvUmVnRXhwQ2FjaGUuaCBcCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2
YVNjcmlwdENvcmUuSlNWQUxVRTMyXzY0b25seS5leHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLkpTVkFMVUUzMl82NG9ubHkuZXhwCShyZXZpc2lv
biA3OTE1OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5KU1ZBTFVF
MzJfNjRvbmx5LmV4cAkod29ya2luZyBjb3B5KQpAQCAtMSwyICsxIEBACiBfX1pOM0pTQzEwSlNG
dW5jdGlvbkMxRVBOU185RXhlY1N0YXRlRVBOU18xNEpTR2xvYmFsT2JqZWN0RU4zV1RGMTdOb25O
dWxsUGFzc1JlZlB0cklOU185U3RydWN0dXJlRUVFaVJLTlNfMTBJZGVudGlmaWVyRVBGeFMyX0UK
LV9fWk4zSlNDMTdQcm90b3R5cGVGdW5jdGlvbkMxRVBOU185RXhlY1N0YXRlRVBOU18xNEpTR2xv
YmFsT2JqZWN0RU4zV1RGMTdOb25OdWxsUGFzc1JlZlB0cklOU185U3RydWN0dXJlRUVFaVJLTlNf
MTBJZGVudGlmaWVyRVBGeFMyX0UKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2Ny
aXB0Q29yZS5KU1ZBTFVFNjRvbmx5LmV4cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvSmF2YVNjcmlwdENvcmUuSlNWQUxVRTY0b25seS5leHAJKHJldmlzaW9uIDc5MTU5KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLkpTVkFMVUU2NG9ubHkuZXhw
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDIgKzEgQEAKIF9fWk4zSlNDMTBKU0Z1bmN0aW9uQzFFUE5T
XzlFeGVjU3RhdGVFUE5TXzE0SlNHbG9iYWxPYmplY3RFTjNXVEYxN05vbk51bGxQYXNzUmVmUHRy
SU5TXzlTdHJ1Y3R1cmVFRUVpUktOU18xMElkZW50aWZpZXJFUEZQdlMyX0UKLV9fWk4zSlNDMTdQ
cm90b3R5cGVGdW5jdGlvbkMxRVBOU185RXhlY1N0YXRlRVBOU18xNEpTR2xvYmFsT2JqZWN0RU4z
V1RGMTdOb25OdWxsUGFzc1JlZlB0cklOU185U3RydWN0dXJlRUVFaVJLTlNfMTBJZGVudGlmaWVy
RVBGUHZTMl9FCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUuZ3lw
aQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUuZ3lw
aQkocmV2aXNpb24gNzkxNTkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENv
cmUuZ3lwaQkod29ya2luZyBjb3B5KQpAQCAtMjE5LDggKzIxOSw2IEBACiAgICAgICAgICAgICAn
cnVudGltZS9HQ0FjdGl2aXR5Q2FsbGJhY2suaCcsCiAgICAgICAgICAgICAncnVudGltZS9HZXR0
ZXJTZXR0ZXIuY3BwJywKICAgICAgICAgICAgICdydW50aW1lL0dldHRlclNldHRlci5oJywKLSAg
ICAgICAgICAgICdydW50aW1lL0dsb2JhbEV2YWxGdW5jdGlvbi5jcHAnLAotICAgICAgICAgICAg
J3J1bnRpbWUvR2xvYmFsRXZhbEZ1bmN0aW9uLmgnLAogICAgICAgICAgICAgJ3J1bnRpbWUvSWRl
bnRpZmllci5jcHAnLAogICAgICAgICAgICAgJ3J1bnRpbWUvSWRlbnRpZmllci5oJywKICAgICAg
ICAgICAgICdydW50aW1lL0luaXRpYWxpemVUaHJlYWRpbmcuY3BwJywKQEAgLTI4OCw3ICsyODYs
NiBAQAogICAgICAgICAgICAgJ3J1bnRpbWUvTmF0aXZlRXJyb3JDb25zdHJ1Y3Rvci5oJywKICAg
ICAgICAgICAgICdydW50aW1lL05hdGl2ZUVycm9yUHJvdG90eXBlLmNwcCcsCiAgICAgICAgICAg
ICAncnVudGltZS9OYXRpdmVFcnJvclByb3RvdHlwZS5oJywKLSAgICAgICAgICAgICdydW50aW1l
L05hdGl2ZUZ1bmN0aW9uV3JhcHBlci5oJywKICAgICAgICAgICAgICdydW50aW1lL051bWJlckNv
bnN0cnVjdG9yLmNwcCcsCiAgICAgICAgICAgICAncnVudGltZS9OdW1iZXJDb25zdHJ1Y3Rvci5o
JywKICAgICAgICAgICAgICdydW50aW1lL051bWJlck9iamVjdC5jcHAnLApAQCAtMzA5LDggKzMw
Niw2IEBACiAgICAgICAgICAgICAncnVudGltZS9Qcm9wZXJ0eVNsb3QuY3BwJywKICAgICAgICAg
ICAgICdydW50aW1lL1Byb3BlcnR5U2xvdC5oJywKICAgICAgICAgICAgICdydW50aW1lL1Byb3Rl
Y3QuaCcsCi0gICAgICAgICAgICAncnVudGltZS9Qcm90b3R5cGVGdW5jdGlvbi5jcHAnLAotICAg
ICAgICAgICAgJ3J1bnRpbWUvUHJvdG90eXBlRnVuY3Rpb24uaCcsCiAgICAgICAgICAgICAncnVu
dGltZS9QdXRQcm9wZXJ0eVNsb3QuaCcsCiAgICAgICAgICAgICAncnVudGltZS9SZWdFeHAuY3Bw
JywKICAgICAgICAgICAgICdydW50aW1lL1JlZ0V4cC5oJywKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5wcm8KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL0phdmFTY3JpcHRDb3JlLnBybwkocmV2aXNpb24gNzkxNTkpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUucHJvCSh3b3JraW5nIGNvcHkpCkBAIC0xNDksNyAr
MTQ5LDYgQEAgU09VUkNFUyArPSBcCiAgICAgcnVudGltZS9GdW5jdGlvblByb3RvdHlwZS5jcHAg
XAogICAgIHJ1bnRpbWUvR0NBY3Rpdml0eUNhbGxiYWNrLmNwcCBcCiAgICAgcnVudGltZS9HZXR0
ZXJTZXR0ZXIuY3BwIFwKLSAgICBydW50aW1lL0dsb2JhbEV2YWxGdW5jdGlvbi5jcHAgXAogICAg
IHJ1bnRpbWUvSWRlbnRpZmllci5jcHAgXAogICAgIHJ1bnRpbWUvSW5pdGlhbGl6ZVRocmVhZGlu
Zy5jcHAgXAogICAgIHJ1bnRpbWUvSW50ZXJuYWxGdW5jdGlvbi5jcHAgXApAQCAtMTk1LDcgKzE5
NCw2IEBAIFNPVVJDRVMgKz0gXAogICAgIHJ1bnRpbWUvUHJvcGVydHlEZXNjcmlwdG9yLmNwcCBc
CiAgICAgcnVudGltZS9Qcm9wZXJ0eU5hbWVBcnJheS5jcHAgXAogICAgIHJ1bnRpbWUvUHJvcGVy
dHlTbG90LmNwcCBcCi0gICAgcnVudGltZS9Qcm90b3R5cGVGdW5jdGlvbi5jcHAgXAogICAgIHJ1
bnRpbWUvUmVnRXhwQ29uc3RydWN0b3IuY3BwIFwKICAgICBydW50aW1lL1JlZ0V4cC5jcHAgXAog
ICAgIHJ1bnRpbWUvUmVnRXhwT2JqZWN0LmNwcCBcCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvanNjLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNwcAko
cmV2aXNpb24gNzkxNTkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMzEsNyArMzEsNiBAQAogI2luY2x1ZGUgIkpTRnVuY3Rpb24uaCIKICNpbmNs
dWRlICJKU0xvY2suaCIKICNpbmNsdWRlICJKU1N0cmluZy5oIgotI2luY2x1ZGUgIlByb3RvdHlw
ZUZ1bmN0aW9uLmgiCiAjaW5jbHVkZSAiU2FtcGxpbmdUb29sLmgiCiAjaW5jbHVkZSA8bWF0aC5o
PgogI2luY2x1ZGUgPHN0ZGlvLmg+CkBAIC0xNTEsMTkgKzE1MCwxOSBAQCBBU1NFUlRfQ0xBU1Nf
RklUU19JTl9DRUxMKEdsb2JhbE9iamVjdCk7CiBHbG9iYWxPYmplY3Q6Okdsb2JhbE9iamVjdChj
b25zdCBWZWN0b3I8VVN0cmluZz4mIGFyZ3VtZW50cykKICAgICA6IEpTR2xvYmFsT2JqZWN0KCkK
IHsKLSAgICBwdXREaXJlY3RGdW5jdGlvbihnbG9iYWxFeGVjKCksIG5ldyAoZ2xvYmFsRXhlYygp
KSBOYXRpdmVGdW5jdGlvbldyYXBwZXIoZ2xvYmFsRXhlYygpLCB0aGlzLCBwcm90b3R5cGVGdW5j
dGlvblN0cnVjdHVyZSgpLCAxLCBJZGVudGlmaWVyKGdsb2JhbEV4ZWMoKSwgImRlYnVnIiksIGZ1
bmN0aW9uRGVidWcpKTsKLSAgICBwdXREaXJlY3RGdW5jdGlvbihnbG9iYWxFeGVjKCksIG5ldyAo
Z2xvYmFsRXhlYygpKSBOYXRpdmVGdW5jdGlvbldyYXBwZXIoZ2xvYmFsRXhlYygpLCB0aGlzLCBw
cm90b3R5cGVGdW5jdGlvblN0cnVjdHVyZSgpLCAxLCBJZGVudGlmaWVyKGdsb2JhbEV4ZWMoKSwg
InByaW50IiksIGZ1bmN0aW9uUHJpbnQpKTsKLSAgICBwdXREaXJlY3RGdW5jdGlvbihnbG9iYWxF
eGVjKCksIG5ldyAoZ2xvYmFsRXhlYygpKSBOYXRpdmVGdW5jdGlvbldyYXBwZXIoZ2xvYmFsRXhl
YygpLCB0aGlzLCBwcm90b3R5cGVGdW5jdGlvblN0cnVjdHVyZSgpLCAwLCBJZGVudGlmaWVyKGds
b2JhbEV4ZWMoKSwgInF1aXQiKSwgZnVuY3Rpb25RdWl0KSk7Ci0gICAgcHV0RGlyZWN0RnVuY3Rp
b24oZ2xvYmFsRXhlYygpLCBuZXcgKGdsb2JhbEV4ZWMoKSkgTmF0aXZlRnVuY3Rpb25XcmFwcGVy
KGdsb2JhbEV4ZWMoKSwgdGhpcywgcHJvdG90eXBlRnVuY3Rpb25TdHJ1Y3R1cmUoKSwgMCwgSWRl
bnRpZmllcihnbG9iYWxFeGVjKCksICJnYyIpLCBmdW5jdGlvbkdDKSk7Ci0gICAgcHV0RGlyZWN0
RnVuY3Rpb24oZ2xvYmFsRXhlYygpLCBuZXcgKGdsb2JhbEV4ZWMoKSkgTmF0aXZlRnVuY3Rpb25X
cmFwcGVyKGdsb2JhbEV4ZWMoKSwgdGhpcywgcHJvdG90eXBlRnVuY3Rpb25TdHJ1Y3R1cmUoKSwg
MSwgSWRlbnRpZmllcihnbG9iYWxFeGVjKCksICJ2ZXJzaW9uIiksIGZ1bmN0aW9uVmVyc2lvbikp
OwotICAgIHB1dERpcmVjdEZ1bmN0aW9uKGdsb2JhbEV4ZWMoKSwgbmV3IChnbG9iYWxFeGVjKCkp
IE5hdGl2ZUZ1bmN0aW9uV3JhcHBlcihnbG9iYWxFeGVjKCksIHRoaXMsIHByb3RvdHlwZUZ1bmN0
aW9uU3RydWN0dXJlKCksIDEsIElkZW50aWZpZXIoZ2xvYmFsRXhlYygpLCAicnVuIiksIGZ1bmN0
aW9uUnVuKSk7Ci0gICAgcHV0RGlyZWN0RnVuY3Rpb24oZ2xvYmFsRXhlYygpLCBuZXcgKGdsb2Jh
bEV4ZWMoKSkgTmF0aXZlRnVuY3Rpb25XcmFwcGVyKGdsb2JhbEV4ZWMoKSwgdGhpcywgcHJvdG90
eXBlRnVuY3Rpb25TdHJ1Y3R1cmUoKSwgMSwgSWRlbnRpZmllcihnbG9iYWxFeGVjKCksICJsb2Fk
IiksIGZ1bmN0aW9uTG9hZCkpOwotICAgIHB1dERpcmVjdEZ1bmN0aW9uKGdsb2JhbEV4ZWMoKSwg
bmV3IChnbG9iYWxFeGVjKCkpIE5hdGl2ZUZ1bmN0aW9uV3JhcHBlcihnbG9iYWxFeGVjKCksIHRo
aXMsIHByb3RvdHlwZUZ1bmN0aW9uU3RydWN0dXJlKCksIDEsIElkZW50aWZpZXIoZ2xvYmFsRXhl
YygpLCAiY2hlY2tTeW50YXgiKSwgZnVuY3Rpb25DaGVja1N5bnRheCkpOwotICAgIHB1dERpcmVj
dEZ1bmN0aW9uKGdsb2JhbEV4ZWMoKSwgbmV3IChnbG9iYWxFeGVjKCkpIE5hdGl2ZUZ1bmN0aW9u
V3JhcHBlcihnbG9iYWxFeGVjKCksIHRoaXMsIHByb3RvdHlwZUZ1bmN0aW9uU3RydWN0dXJlKCks
IDAsIElkZW50aWZpZXIoZ2xvYmFsRXhlYygpLCAicmVhZGxpbmUiKSwgZnVuY3Rpb25SZWFkbGlu
ZSkpOworICAgIHB1dERpcmVjdEZ1bmN0aW9uKGdsb2JhbEV4ZWMoKSwgbmV3IChnbG9iYWxFeGVj
KCkpIEpTRnVuY3Rpb24oZ2xvYmFsRXhlYygpLCB0aGlzLCBmdW5jdGlvblN0cnVjdHVyZSgpLCAx
LCBJZGVudGlmaWVyKGdsb2JhbEV4ZWMoKSwgImRlYnVnIiksIGZ1bmN0aW9uRGVidWcpKTsKKyAg
ICBwdXREaXJlY3RGdW5jdGlvbihnbG9iYWxFeGVjKCksIG5ldyAoZ2xvYmFsRXhlYygpKSBKU0Z1
bmN0aW9uKGdsb2JhbEV4ZWMoKSwgdGhpcywgZnVuY3Rpb25TdHJ1Y3R1cmUoKSwgMSwgSWRlbnRp
ZmllcihnbG9iYWxFeGVjKCksICJwcmludCIpLCBmdW5jdGlvblByaW50KSk7CisgICAgcHV0RGly
ZWN0RnVuY3Rpb24oZ2xvYmFsRXhlYygpLCBuZXcgKGdsb2JhbEV4ZWMoKSkgSlNGdW5jdGlvbihn
bG9iYWxFeGVjKCksIHRoaXMsIGZ1bmN0aW9uU3RydWN0dXJlKCksIDAsIElkZW50aWZpZXIoZ2xv
YmFsRXhlYygpLCAicXVpdCIpLCBmdW5jdGlvblF1aXQpKTsKKyAgICBwdXREaXJlY3RGdW5jdGlv
bihnbG9iYWxFeGVjKCksIG5ldyAoZ2xvYmFsRXhlYygpKSBKU0Z1bmN0aW9uKGdsb2JhbEV4ZWMo
KSwgdGhpcywgZnVuY3Rpb25TdHJ1Y3R1cmUoKSwgMCwgSWRlbnRpZmllcihnbG9iYWxFeGVjKCks
ICJnYyIpLCBmdW5jdGlvbkdDKSk7CisgICAgcHV0RGlyZWN0RnVuY3Rpb24oZ2xvYmFsRXhlYygp
LCBuZXcgKGdsb2JhbEV4ZWMoKSkgSlNGdW5jdGlvbihnbG9iYWxFeGVjKCksIHRoaXMsIGZ1bmN0
aW9uU3RydWN0dXJlKCksIDEsIElkZW50aWZpZXIoZ2xvYmFsRXhlYygpLCAidmVyc2lvbiIpLCBm
dW5jdGlvblZlcnNpb24pKTsKKyAgICBwdXREaXJlY3RGdW5jdGlvbihnbG9iYWxFeGVjKCksIG5l
dyAoZ2xvYmFsRXhlYygpKSBKU0Z1bmN0aW9uKGdsb2JhbEV4ZWMoKSwgdGhpcywgZnVuY3Rpb25T
dHJ1Y3R1cmUoKSwgMSwgSWRlbnRpZmllcihnbG9iYWxFeGVjKCksICJydW4iKSwgZnVuY3Rpb25S
dW4pKTsKKyAgICBwdXREaXJlY3RGdW5jdGlvbihnbG9iYWxFeGVjKCksIG5ldyAoZ2xvYmFsRXhl
YygpKSBKU0Z1bmN0aW9uKGdsb2JhbEV4ZWMoKSwgdGhpcywgZnVuY3Rpb25TdHJ1Y3R1cmUoKSwg
MSwgSWRlbnRpZmllcihnbG9iYWxFeGVjKCksICJsb2FkIiksIGZ1bmN0aW9uTG9hZCkpOworICAg
IHB1dERpcmVjdEZ1bmN0aW9uKGdsb2JhbEV4ZWMoKSwgbmV3IChnbG9iYWxFeGVjKCkpIEpTRnVu
Y3Rpb24oZ2xvYmFsRXhlYygpLCB0aGlzLCBmdW5jdGlvblN0cnVjdHVyZSgpLCAxLCBJZGVudGlm
aWVyKGdsb2JhbEV4ZWMoKSwgImNoZWNrU3ludGF4IiksIGZ1bmN0aW9uQ2hlY2tTeW50YXgpKTsK
KyAgICBwdXREaXJlY3RGdW5jdGlvbihnbG9iYWxFeGVjKCksIG5ldyAoZ2xvYmFsRXhlYygpKSBK
U0Z1bmN0aW9uKGdsb2JhbEV4ZWMoKSwgdGhpcywgZnVuY3Rpb25TdHJ1Y3R1cmUoKSwgMCwgSWRl
bnRpZmllcihnbG9iYWxFeGVjKCksICJyZWFkbGluZSIpLCBmdW5jdGlvblJlYWRsaW5lKSk7CiAK
ICNpZiBFTkFCTEUoU0FNUExJTkdfRkxBR1MpCi0gICAgcHV0RGlyZWN0RnVuY3Rpb24oZ2xvYmFs
RXhlYygpLCBuZXcgKGdsb2JhbEV4ZWMoKSkgTmF0aXZlRnVuY3Rpb25XcmFwcGVyKGdsb2JhbEV4
ZWMoKSwgdGhpcywgcHJvdG90eXBlRnVuY3Rpb25TdHJ1Y3R1cmUoKSwgMSwgSWRlbnRpZmllcihn
bG9iYWxFeGVjKCksICJzZXRTYW1wbGluZ0ZsYWdzIiksIGZ1bmN0aW9uU2V0U2FtcGxpbmdGbGFn
cykpOwotICAgIHB1dERpcmVjdEZ1bmN0aW9uKGdsb2JhbEV4ZWMoKSwgbmV3IChnbG9iYWxFeGVj
KCkpIE5hdGl2ZUZ1bmN0aW9uV3JhcHBlcihnbG9iYWxFeGVjKCksIHRoaXMsIHByb3RvdHlwZUZ1
bmN0aW9uU3RydWN0dXJlKCksIDEsIElkZW50aWZpZXIoZ2xvYmFsRXhlYygpLCAiY2xlYXJTYW1w
bGluZ0ZsYWdzIiksIGZ1bmN0aW9uQ2xlYXJTYW1wbGluZ0ZsYWdzKSk7CisgICAgcHV0RGlyZWN0
RnVuY3Rpb24oZ2xvYmFsRXhlYygpLCBuZXcgKGdsb2JhbEV4ZWMoKSkgSlNGdW5jdGlvbihnbG9i
YWxFeGVjKCksIHRoaXMsIGZ1bmN0aW9uU3RydWN0dXJlKCksIDEsIElkZW50aWZpZXIoZ2xvYmFs
RXhlYygpLCAic2V0U2FtcGxpbmdGbGFncyIpLCBmdW5jdGlvblNldFNhbXBsaW5nRmxhZ3MpKTsK
KyAgICBwdXREaXJlY3RGdW5jdGlvbihnbG9iYWxFeGVjKCksIG5ldyAoZ2xvYmFsRXhlYygpKSBK
U0Z1bmN0aW9uKGdsb2JhbEV4ZWMoKSwgdGhpcywgZnVuY3Rpb25TdHJ1Y3R1cmUoKSwgMSwgSWRl
bnRpZmllcihnbG9iYWxFeGVjKCksICJjbGVhclNhbXBsaW5nRmxhZ3MiKSwgZnVuY3Rpb25DbGVh
clNhbXBsaW5nRmxhZ3MpKTsKICNlbmRpZgogCiAgICAgSlNPYmplY3QqIGFycmF5ID0gY29uc3Ry
dWN0RW1wdHlBcnJheShnbG9iYWxFeGVjKCkpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L0phdmFTY3JpcHRDb3JlLnZjcHJvai9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3By
b2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZj
cHJvai9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2oJKHJldmlzaW9uIDc5MTU5
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJvai9KYXZhU2Ny
aXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2oJKHdvcmtpbmcgY29weSkKQEAgLTc1OCwxNCAr
NzU4LDYgQEAKIAkJCQk+CiAJCQk8L0ZpbGU+CiAJCQk8RmlsZQotCQkJCVJlbGF0aXZlUGF0aD0i
Li5cLi5ccnVudGltZVxHbG9iYWxFdmFsRnVuY3Rpb24uY3BwIgotCQkJCT4KLQkJCTwvRmlsZT4K
LQkJCTxGaWxlCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxydW50aW1lXEdsb2JhbEV2YWxGdW5j
dGlvbi5oIgotCQkJCT4KLQkJCTwvRmlsZT4KLQkJCTxGaWxlCiAJCQkJUmVsYXRpdmVQYXRoPSIu
LlwuLlxydW50aW1lXElkZW50aWZpZXIuY3BwIgogCQkJCT4KIAkJCTwvRmlsZT4KQEAgLTEwNDIs
MTAgKzEwMzQsNiBAQAogCQkJCT4KIAkJCTwvRmlsZT4KIAkJCTxGaWxlCi0JCQkJUmVsYXRpdmVQ
YXRoPSIuLlwuLlxydW50aW1lXE5hdGl2ZUZ1bmN0aW9uV3JhcHBlci5oIgotCQkJCT4KLQkJCTwv
RmlsZT4KLQkJCTxGaWxlCiAJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxydW50aW1lXE51bWJlckNv
bnN0cnVjdG9yLmNwcCIKIAkJCQk+CiAJCQk8L0ZpbGU+CkBAIC0xMTMwLDE0ICsxMTE4LDYgQEAK
IAkJCQk+CiAJCQk8L0ZpbGU+CiAJCQk8RmlsZQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5ccnVu
dGltZVxQcm90b3R5cGVGdW5jdGlvbi5jcHAiCi0JCQkJPgotCQkJPC9GaWxlPgotCQkJPEZpbGUK
LQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXHJ1bnRpbWVcUHJvdG90eXBlRnVuY3Rpb24uaCIKLQkJ
CQk+Ci0JCQk8L0ZpbGU+Ci0JCQk8RmlsZQogCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5ccnVudGlt
ZVxSZWdFeHAuY3BwIgogCQkJCT4KIAkJCTwvRmlsZT4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCShyZXZpc2lvbiA3OTE1OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZh
U2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0x
MTUsNyArMTE1LDYgQEAKIAkJMTQ0NjlERTYxMDdFQzdFNzAwNjUwNDQ2IC8qIE9iamVjdFByb3Rv
dHlwZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBC
QzI2ODBDODBFMTZENEU5MDBBMDZFOTIgLyogT2JqZWN0UHJvdG90eXBlLmNwcCAqLzsgfTsKIAkJ
MTQ0NjlERTcxMDdFQzdFNzAwNjUwNDQ2IC8qIFByb3BlcnR5TmFtZUFycmF5LmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDY1NDAwQzBGMEE2OUJBRjIw
MDUwOTg4NyAvKiBQcm9wZXJ0eU5hbWVBcnJheS5jcHAgKi87IH07CiAJCTE0NDY5REU4MTA3RUM3
RTcwMDY1MDQ0NiAvKiBQcm9wZXJ0eVNsb3QuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNjU2MjFFNkIwODlFODU5NzAwNzYwRjM1IC8qIFByb3BlcnR5
U2xvdC5jcHAgKi87IH07Ci0JCTE0NDY5REU5MTA3RUM3RTcwMDY1MDQ0NiAvKiBQcm90b3R5cGVG
dW5jdGlvbi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBCQzI1N0RGMTBFMUY1Mzc0MDAxNkI2QzkgLyogUHJvdG90eXBlRnVuY3Rpb24uY3BwICovOyB9
OwogCQkxNDQ2OURFQTEwN0VDN0U3MDA2NTA0NDYgLyogU2NvcGVDaGFpbi5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5Mzc0RDNBODAzOEQ5RDc0MDA4
NjM1Q0UgLyogU2NvcGVDaGFpbi5jcHAgKi87IH07CiAJCTE0NDY5REVCMTA3RUM3RTcwMDY1MDQ0
NiAvKiBTdHJpbmdDb25zdHJ1Y3Rvci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBCQzE4QzNDMDBFMTZFRTMzMDBCMzQ0NjAgLyogU3RyaW5nQ29uc3Ry
dWN0b3IuY3BwICovOyB9OwogCQkxNDQ2OURFQzEwN0VDN0U3MDA2NTA0NDYgLyogU3RyaW5nT2Jq
ZWN0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJD
MThDM0MyMEUxNkVFMzMwMEIzNDQ2MCAvKiBTdHJpbmdPYmplY3QuY3BwICovOyB9OwpAQCAtMTQy
LDcgKzE0MSw2IEBACiAJCTE0N0YzOUNBMTA3RUMzNzYwMDQyN0E0OCAvKiBFcnJvclByb3RvdHlw
ZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzAy
RTkwNjBFMTgzOURCMDAwRjkyOTcgLyogRXJyb3JQcm90b3R5cGUuY3BwICovOyB9OwogCQkxNDdG
MzlDQjEwN0VDMzc2MDA0MjdBNDggLyogRnVuY3Rpb25Db25zdHJ1Y3Rvci5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzI2ODBDMDBFMTZENEU5MDBB
MDZFOTIgLyogRnVuY3Rpb25Db25zdHJ1Y3Rvci5jcHAgKi87IH07CiAJCTE0N0YzOUNDMTA3RUMz
NzYwMDQyN0E0OCAvKiBGdW5jdGlvblByb3RvdHlwZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNjkyQTg1QzAyNTU1OTdEMDFGRjYwRjcgLyogRnVu
Y3Rpb25Qcm90b3R5cGUuY3BwICovOyB9OwotCQkxNDdGMzlDRDEwN0VDMzc2MDA0MjdBNDggLyog
R2xvYmFsRXZhbEZ1bmN0aW9uLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEJDMjU3REVEMEUxRjUyRUQwMDE2QjZDOSAvKiBHbG9iYWxFdmFsRnVuY3Rp
b24uY3BwICovOyB9OwogCQkxNDdGMzlDRTEwN0VDMzc2MDA0MjdBNDggLyogSWRlbnRpZmllci5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5MzNBMzQ5
RDAzOEFFODBGMDA4NjM1Q0UgLyogSWRlbnRpZmllci5jcHAgKi87IH07CiAJCTE0N0YzOUNGMTA3
RUMzNzYwMDQyN0E0OCAvKiBJbnRlcm5hbEZ1bmN0aW9uLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDOUJCOTVCMEUxOTY4MDYwMERGODg1NSAvKiBJ
bnRlcm5hbEZ1bmN0aW9uLmNwcCAqLzsgfTsKIAkJMTQ3RjM5RDAxMDdFQzM3NjAwNDI3QTQ4IC8q
IEpTQXJyYXkuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gOTNBREZDRTYwQ0NCRDdBQzAwRDMwQjA4IC8qIEpTQXJyYXkuY3BwICovOyB9OwpAQCAtMzU1
LDcgKzM1Myw2IEBACiAJCUE3NTcwNkRFMTE4QTJCQ0YwMDU3Rjg4RiAvKiBKSVRBcml0aG1ldGlj
MzJfNjQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
QTc1NzA2REQxMThBMkJDRjAwNTdGODhGIC8qIEpJVEFyaXRobWV0aWMzMl82NC5jcHAgKi87IH07
CiAJCUE3NjZCNDRGMEVFOERDRDEwMDk1MThDQSAvKiBFeGVjdXRhYmxlQWxsb2NhdG9yLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBN0I0OERCNTBFRTc0
Q0ZDMDBEQ0JEQjYgLyogRXhlY3V0YWJsZUFsbG9jYXRvci5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUE3NkM1MTc2MTE4Mjc0OEQwMDcxNUIwNSAv
KiBKU0ludGVyZmFjZUpJVC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQTc2QzUxNzQxMTgyNzQ4RDAwNzE1QjA1IC8qIEpTSW50ZXJmYWNlSklULmggKi87
IH07Ci0JCUE3NkVFNjU5MEZBRTU5RDUwMDNGMDY5QSAvKiBOYXRpdmVGdW5jdGlvbldyYXBwZXIu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3NkVFNjU4
MEZBRTU5RDUwMDNGMDY5QSAvKiBOYXRpdmVGdW5jdGlvbldyYXBwZXIuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlBNzc5NTU5MDEwMUE3NEQ1MDAx
MTRFNTUgLyogTWFya1N0YWNrLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBBNzc5NTU4RjEwMUE3NEQ1MDAxMTRFNTUgLyogTWFya1N0YWNrLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQTc4M0EwRDExMUEz
NkRDQTAwNTYzRDIwIC8qIEpTT2JqZWN0V2l0aEdsb2JhbE9iamVjdC5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTc4M0EwRDAxMUEzNkRDQTAwNTYzRDIw
IC8qIEpTT2JqZWN0V2l0aEdsb2JhbE9iamVjdC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CiAJCUE3ODNBMkFCMTFBNUJFODQwMDU2M0QyMCAvKiBKU09i
amVjdFdpdGhHbG9iYWxPYmplY3QuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQTc4M0EyQUExMUE1QkU4NDAwNTYzRDIwIC8qIEpTT2JqZWN0V2l0aEds
b2JhbE9iamVjdC5jcHAgKi87IH07CkBAIC01MjYsOCArNTIzLDYgQEAKIAkJQkMxOEM1MkMwRTE2
RkNEMjAwQjM0NDYwIC8qIFJlZ0V4cE9iamVjdC5sdXQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDMThDNTJCMEUxNkZDRDIwMEIzNDQ2MCAvKiBSZWdF
eHBPYmplY3QubHV0LmggKi87IH07CiAJCUJDMThDNTJFMEUxNkZDRTEwMEIzNDQ2MCAvKiBMZXhl
ci5sdXQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJD
MThDNTJEMEUxNkZDRTEwMEIzNDQ2MCAvKiBMZXhlci5sdXQuaCAqLzsgfTsKIAkJQkMyNTdERTgw
RTFGNTFDNTAwMTZCNkM5IC8qIEFyZ3VtZW50cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQkMyNTdERTYwRTFGNTFDNTAwMTZCNkM5IC8qIEFyZ3VtZW50
cy5oICovOyB9OwotCQlCQzI1N0RGMDBFMUY1MkVEMDAxNkI2QzkgLyogR2xvYmFsRXZhbEZ1bmN0
aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzI1
N0RFRTBFMUY1MkVEMDAxNkI2QzkgLyogR2xvYmFsRXZhbEZ1bmN0aW9uLmggKi87IH07Ci0JCUJD
MjU3REY0MEUxRjUzNzQwMDE2QjZDOSAvKiBQcm90b3R5cGVGdW5jdGlvbi5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkMyNTdERjIwRTFGNTM3NDAwMTZC
NkM5IC8qIFByb3RvdHlwZUZ1bmN0aW9uLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKIAkJQkMzMDQ2MDcwRTFGNDk3RjAwMzIzMkNGIC8qIEVycm9yLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzMwNDYwNjBF
MUY0OTdGMDAzMjMyQ0YgLyogRXJyb3IuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwogCQlCQzMxMzU2NDBGMzAyRkEzMDAzREZEM0EgLyogRGVidWdnZXJB
Y3RpdmF0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBCQzMxMzU2MjBGMzAyRkEzMDAzREZEM0EgLyogRGVidWdnZXJBY3RpdmF0aW9uLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQkMzMTM1NjUwRjMw
MkZBMzAwM0RGRDNBIC8qIERlYnVnZ2VyQWN0aXZhdGlvbi5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzMxMzU2MzBGMzAyRkEzMDAzREZEM0EgLyog
RGVidWdnZXJBY3RpdmF0aW9uLmNwcCAqLzsgfTsKQEAgLTEwMDUsNyArMTAwMCw2IEBACiAJCUE3
NERFMUNCMTIwQjg2RDYwMEQ0MEQ1QiAvKiBBUk12N0Fzc2VtYmxlci5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBBUk12N0Fzc2VtYmxlci5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUE3NTcwNkREMTE4QTJCQ0YwMDU3Rjg4RiAvKiBKSVRBcml0aG1l
dGljMzJfNjQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSklUQXJp
dGhtZXRpYzMyXzY0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTc2QzUxNzQx
MTgyNzQ4RDAwNzE1QjA1IC8qIEpTSW50ZXJmYWNlSklULmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IEpTSW50ZXJmYWNlSklULmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
Ci0JCUE3NkVFNjU4MEZBRTU5RDUwMDNGMDY5QSAvKiBOYXRpdmVGdW5jdGlvbldyYXBwZXIuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTmF0aXZlRnVuY3Rpb25XcmFwcGVyLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE3Nzk1NThGMTAxQTc0RDUwMDExNEU1NSAv
KiBNYXJrU3RhY2suaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWFya1N0YWNr
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE3ODNBMEQwMTFBMzZEQ0EwMDU2M0Qy
MCAvKiBKU09iamVjdFdpdGhHbG9iYWxPYmplY3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gSlNPYmplY3RXaXRoR2xvYmFsT2JqZWN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUE3ODNBMkFBMTFBNUJFODQwMDU2M0QyMCAvKiBKU09iamVjdFdpdGhHbG9iYWxP
YmplY3QuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNPYmplY3RX
aXRoR2xvYmFsT2JqZWN0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTEwODIs
MTAgKzEwNzYsNiBAQAogCQlCQzIyQTM5QTBFMTZFMTQ4MDBBRjIxQzggLyogSlNWYXJpYWJsZU9i
amVjdC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU1ZhcmlhYmxl
T2JqZWN0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkMyNTdERTUwRTFGNTFD
NTAwMTZCNkM5IC8qIEFyZ3VtZW50cy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBBcmd1bWVudHMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQzI1
N0RFNjBFMUY1MUM1MDAxNkI2QzkgLyogQXJndW1lbnRzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IEFyZ3VtZW50cy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlC
QzI1N0RFRDBFMUY1MkVEMDAxNkI2QzkgLyogR2xvYmFsRXZhbEZ1bmN0aW9uLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEdsb2JhbEV2YWxGdW5jdGlvbi5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUJDMjU3REVFMEUxRjUyRUQwMDE2QjZDOSAvKiBH
bG9iYWxFdmFsRnVuY3Rpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR2xv
YmFsRXZhbEZ1bmN0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUJDMjU3REYx
MEUxRjUzNzQwMDE2QjZDOSAvKiBQcm90b3R5cGVGdW5jdGlvbi5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBQcm90b3R5cGVGdW5jdGlvbi5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07Ci0JCUJDMjU3REYyMEUxRjUzNzQwMDE2QjZDOSAvKiBQcm90b3R5cGVG
dW5jdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQcm90b3R5cGVGdW5j
dGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQzI2ODBDMDBFMTZENEU5MDBB
MDZFOTIgLyogRnVuY3Rpb25Db25zdHJ1Y3Rvci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBGdW5jdGlvbkNvbnN0cnVjdG9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJQkMyNjgwQzEwRTE2RDRFOTAwQTA2RTkyIC8qIEZ1bmN0aW9uQ29uc3RydWN0
b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRnVuY3Rpb25Db25zdHJ1Y3Rv
ci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQzI2ODBDMjBFMTZENEU5MDBBMDZF
OTIgLyogTnVtYmVyQ29uc3RydWN0b3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gTnVtYmVyQ29uc3RydWN0b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwpAQCAtMTcyOSw4ICsxNzE5LDYgQEAKIAkJCQlEREY3QUJEMzExRjYwRUQyMDAxMDhFMzYgLyog
R0NBY3Rpdml0eUNhbGxiYWNrQ0YuY3BwICovLAogCQkJCUJDMDJFOUI4MEUxODQ1NDUwMDBGOTI5
NyAvKiBHZXR0ZXJTZXR0ZXIuY3BwICovLAogCQkJCUJDMzM3QkRFMEUxQUYwQjgwMDc2OTE4QSAv
KiBHZXR0ZXJTZXR0ZXIuaCAqLywKLQkJCQlCQzI1N0RFRDBFMUY1MkVEMDAxNkI2QzkgLyogR2xv
YmFsRXZhbEZ1bmN0aW9uLmNwcCAqLywKLQkJCQlCQzI1N0RFRTBFMUY1MkVEMDAxNkI2QzkgLyog
R2xvYmFsRXZhbEZ1bmN0aW9uLmggKi8sCiAJCQkJMTQwQ0RFNkMxMkRFOTc3RTAwMTNDRkM1IC8q
IEhlYXAuY3BwICovLAogCQkJCTE0MENERTZEMTJERTk3N0UwMDEzQ0ZDNSAvKiBIZWFwLmggKi8s
CiAJCQkJOTMzQTM0OUQwMzhBRTgwRjAwODYzNUNFIC8qIElkZW50aWZpZXIuY3BwICovLApAQCAt
MTgwNyw3ICsxNzk1LDYgQEAKIAkJCQlCQzAyRTkwOTBFMTgzOURCMDAwRjkyOTcgLyogTmF0aXZl
RXJyb3JDb25zdHJ1Y3Rvci5oICovLAogCQkJCUJDMDJFOTBBMEUxODM5REIwMDBGOTI5NyAvKiBO
YXRpdmVFcnJvclByb3RvdHlwZS5jcHAgKi8sCiAJCQkJQkMwMkU5MEIwRTE4MzlEQjAwMEY5Mjk3
IC8qIE5hdGl2ZUVycm9yUHJvdG90eXBlLmggKi8sCi0JCQkJQTc2RUU2NTgwRkFFNTlENTAwM0Yw
NjlBIC8qIE5hdGl2ZUZ1bmN0aW9uV3JhcHBlci5oICovLAogCQkJCUJDMjY4MEMyMEUxNkQ0RTkw
MEEwNkU5MiAvKiBOdW1iZXJDb25zdHJ1Y3Rvci5jcHAgKi8sCiAJCQkJQkMyNjgwQzMwRTE2RDRF
OTAwQTA2RTkyIC8qIE51bWJlckNvbnN0cnVjdG9yLmggKi8sCiAJCQkJRjY5MkE4NzAwMjU1NTk3
RDAxRkY2MEY3IC8qIE51bWJlck9iamVjdC5jcHAgKi8sCkBAIC0xODI5LDggKzE4MTYsNiBAQAog
CQkJCTY1NjIxRTZCMDg5RTg1OTcwMDc2MEYzNSAvKiBQcm9wZXJ0eVNsb3QuY3BwICovLAogCQkJ
CTY1NjIxRTZDMDg5RTg1OTcwMDc2MEYzNSAvKiBQcm9wZXJ0eVNsb3QuaCAqLywKIAkJCQk2NUMw
MkZCQjA2Mzc0NjJBMDAzRTdFRTYgLyogUHJvdGVjdC5oICovLAotCQkJCUJDMjU3REYxMEUxRjUz
NzQwMDE2QjZDOSAvKiBQcm90b3R5cGVGdW5jdGlvbi5jcHAgKi8sCi0JCQkJQkMyNTdERjIwRTFG
NTM3NDAwMTZCNkM5IC8qIFByb3RvdHlwZUZ1bmN0aW9uLmggKi8sCiAJCQkJMTQ3Qjg0NjIwRTZE
RTZCMTAwNDc3NUE0IC8qIFB1dFByb3BlcnR5U2xvdC5oICovLAogCQkJCUY2OTJBODdEMDI1NTU5
N0QwMUZGNjBGNyAvKiBSZWdFeHAuY3BwICovLAogCQkJCUY2OTJBODdFMDI1NTU5N0QwMUZGNjBG
NyAvKiBSZWdFeHAuaCAqLywKQEAgLTIxNzcsNyArMjE2Miw2IEBACiAJCQkJQkMxOEM0MDUwRTE2
RjVDRDAwQjM0NDYwIC8qIEZ1bmN0aW9uUHJvdG90eXBlLmggaW4gSGVhZGVycyAqLywKIAkJCQlE
REY3QUJENDExRjYwRUQyMDAxMDhFMzYgLyogR0NBY3Rpdml0eUNhbGxiYWNrLmggaW4gSGVhZGVy
cyAqLywKIAkJCQlCQzE4QzQwNjBFMTZGNUNEMDBCMzQ0NjAgLyogR2V0UHRyLmggaW4gSGVhZGVy
cyAqLywKLQkJCQlCQzI1N0RGMDBFMUY1MkVEMDAxNkI2QzkgLyogR2xvYmFsRXZhbEZ1bmN0aW9u
LmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzE4QzQwODBFMTZGNUNEMDBCMzQ0NjAgLyogSGFzaENv
dW50ZWRTZXQuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMThDNDA5MEUxNkY1Q0QwMEIzNDQ2MCAv
KiBIYXNoRnVuY3Rpb25zLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzE4QzQwQTBFMTZGNUNEMDBC
MzQ0NjAgLyogSGFzaEl0ZXJhdG9ycy5oIGluIEhlYWRlcnMgKi8sCkBAIC0yMjc2LDcgKzIyNjAs
NiBAQAogCQkJCTg2QzU2OEUyMTFBMjEzRUUwMDA3RjdGMCAvKiBNSVBTQXNzZW1ibGVyLmggaW4g
SGVhZGVycyAqLywKIAkJCQlCQzAyRTkxMTBFMTgzOURCMDAwRjkyOTcgLyogTmF0aXZlRXJyb3JD
b25zdHJ1Y3Rvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMwMkU5MTMwRTE4MzlEQjAwMEY5Mjk3
IC8qIE5hdGl2ZUVycm9yUHJvdG90eXBlLmggaW4gSGVhZGVycyAqLywKLQkJCQlBNzZFRTY1OTBG
QUU1OUQ1MDAzRjA2OUEgLyogTmF0aXZlRnVuY3Rpb25XcmFwcGVyLmggaW4gSGVhZGVycyAqLywK
IAkJCQk3RUZGMDA2NDBFQzA1QTlBMDBBQTdDOTMgLyogTm9kZUluZm8uaCBpbiBIZWFkZXJzICov
LAogCQkJCUJDMThDNDNGMEUxNkY1Q0QwMEIzNDQ2MCAvKiBOb2Rlcy5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJQkMxOEM0NDAwRTE2RjVDRDAwQjM0NDYwIC8qIE5vbmNvcHlhYmxlLmggaW4gSGVhZGVy
cyAqLywKQEAgLTIzMjAsNyArMjMwMyw2IEBACiAJCQkJQkMxOEM0NTQwRTE2RjVDRDAwQjM0NDYw
IC8qIFByb3BlcnR5TmFtZUFycmF5LmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzE4QzQ1NTBFMTZG
NUNEMDBCMzQ0NjAgLyogUHJvcGVydHlTbG90LmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzE4QzQ1
NjBFMTZGNUNEMDBCMzQ0NjAgLyogUHJvdGVjdC5oIGluIEhlYWRlcnMgKi8sCi0JCQkJQkMyNTdE
RjQwRTFGNTM3NDAwMTZCNkM5IC8qIFByb3RvdHlwZUZ1bmN0aW9uLmggaW4gSGVhZGVycyAqLywK
IAkJCQkxNDdCODQ2MzBFNkRFNkIxMDA0Nzc1QTQgLyogUHV0UHJvcGVydHlTbG90LmggaW4gSGVh
ZGVycyAqLywKIAkJCQkwODhGQTVCQzBFRjc2RDQzMDA1NzhFNkYgLyogUmFuZG9tTnVtYmVyLmgg
aW4gSGVhZGVycyAqLywKIAkJCQkwOEUyNzlFOTBFRjgzQjEwMDA3REI1MjMgLyogUmFuZG9tTnVt
YmVyU2VlZC5oIGluIEhlYWRlcnMgKi8sCkBAIC0yNzUzLDcgKzI3MzUsNiBAQAogCQkJCTE0N0Yz
OUNDMTA3RUMzNzYwMDQyN0E0OCAvKiBGdW5jdGlvblByb3RvdHlwZS5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQlEREY3QUJENTExRjYwRUQyMDAxMDhFMzYgLyogR0NBY3Rpdml0eUNhbGxiYWNrQ0Yu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMTQyODA4NTUxMDdFQzBFNzAwMTNFN0IyIC8qIEdldHRl
clNldHRlci5jcHAgaW4gU291cmNlcyAqLywKLQkJCQkxNDdGMzlDRDEwN0VDMzc2MDA0MjdBNDgg
LyogR2xvYmFsRXZhbEZ1bmN0aW9uLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTY1REZDOTMzMDhF
QTE3M0EwMEY3MzAwQiAvKiBIYXNoVGFibGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMTQwQ0RF
NzAxMkRFOTdBMDAwMTNDRkM1IC8qIEhlYXAuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMTQ3RjM5
Q0UxMDdFQzM3NjAwNDI3QTQ4IC8qIElkZW50aWZpZXIuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0y
ODQ3LDcgKzI4MjgsNiBAQAogCQkJCUE3RkI2MEE0MTAzRjdEQzIwMDE3QTI4NiAvKiBQcm9wZXJ0
eURlc2NyaXB0b3IuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMTQ0NjlERTcxMDdFQzdFNzAwNjUw
NDQ2IC8qIFByb3BlcnR5TmFtZUFycmF5LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTE0NDY5REU4
MTA3RUM3RTcwMDY1MDQ0NiAvKiBQcm9wZXJ0eVNsb3QuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJ
MTQ0NjlERTkxMDdFQzdFNzAwNjUwNDQ2IC8qIFByb3RvdHlwZUZ1bmN0aW9uLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTA4OEZBNUJCMEVGNzZENDMwMDU3OEU2RiAvKiBSYW5kb21OdW1iZXIuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJOTA1QjAyQUUwRTI4NjQwRjAwNkRGODgyIC8qIFJlZkNvdW50
ZWRMZWFrQ291bnRlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxNDI4MDg0MTEwN0VDMDkzMDAx
M0U3QjIgLyogUmVnRXhwLmNwcCBpbiBTb3VyY2VzICovLApJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAJ
KHJldmlzaW9uIDc5MTU5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9C
eXRlY29kZUdlbmVyYXRvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMxLDcgKzMxLDYgQEAKICNp
bmNsdWRlICJCeXRlY29kZUdlbmVyYXRvci5oIgogCiAjaW5jbHVkZSAiQmF0Y2hlZFRyYW5zaXRp
b25PcHRpbWl6ZXIuaCIKLSNpbmNsdWRlICJQcm90b3R5cGVGdW5jdGlvbi5oIgogI2luY2x1ZGUg
IkpTRnVuY3Rpb24uaCIKICNpbmNsdWRlICJJbnRlcnByZXRlci5oIgogI2luY2x1ZGUgIlVTdHJp
bmcuaCIKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRl
ci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0lu
dGVycHJldGVyLmNwcAkocmV2aXNpb24gNzkxNTkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00Miw3ICs0Miw2
IEBACiAjaW5jbHVkZSAiRXZhbENvZGVDYWNoZS5oIgogI2luY2x1ZGUgIkV4Y2VwdGlvbkhlbHBl
cnMuaCIKICNpbmNsdWRlICJHZXR0ZXJTZXR0ZXIuaCIKLSNpbmNsdWRlICJHbG9iYWxFdmFsRnVu
Y3Rpb24uaCIKICNpbmNsdWRlICJKU0FjdGl2YXRpb24uaCIKICNpbmNsdWRlICJKU0FycmF5Lmgi
CiAjaW5jbHVkZSAiSlNCeXRlQXJyYXkuaCIKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklUU3R1YnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklUU3R1YnMuY3BwCShyZXZpc2lvbiA3OTE1OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklUU3R1YnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MCw3ICs0MCw2IEBACiAjaW5jbHVk
ZSAiRGVidWdnZXIuaCIKICNpbmNsdWRlICJFeGNlcHRpb25IZWxwZXJzLmgiCiAjaW5jbHVkZSAi
R2V0dGVyU2V0dGVyLmgiCi0jaW5jbHVkZSAiR2xvYmFsRXZhbEZ1bmN0aW9uLmgiCiAjaW5jbHVk
ZSAiSklULmgiCiAjaW5jbHVkZSAiSlNBY3RpdmF0aW9uLmgiCiAjaW5jbHVkZSAiSlNBcnJheS5o
IgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlDb25zdHJ1Y3Rvci5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlDb25z
dHJ1Y3Rvci5jcHAJKHJldmlzaW9uIDc5MTU5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvQXJyYXlDb25zdHJ1Y3Rvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMwLDcgKzMwLDYg
QEAKICNpbmNsdWRlICJKU0FycmF5LmgiCiAjaW5jbHVkZSAiSlNGdW5jdGlvbi5oIgogI2luY2x1
ZGUgIkxvb2t1cC5oIgotI2luY2x1ZGUgIlByb3RvdHlwZUZ1bmN0aW9uLmgiCiAKIG5hbWVzcGFj
ZSBKU0MgewogCkBAIC0zOCw3ICszNyw3IEBAIEFTU0VSVF9DTEFTU19GSVRTX0lOX0NFTEwoQXJy
YXlDb25zdHJ1Y3QKICAgICAKIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGFy
cmF5Q29uc3RydWN0b3JJc0FycmF5KEV4ZWNTdGF0ZSopOwogCi1BcnJheUNvbnN0cnVjdG9yOjpB
cnJheUNvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgTm9uTnVsbFBhc3NSZWZQdHI8U3RydWN0dXJlPiBzdHJ1Y3R1cmUsIEFycmF5UHJvdG90
eXBlKiBhcnJheVByb3RvdHlwZSwgU3RydWN0dXJlKiBwcm90b3R5cGVGdW5jdGlvblN0cnVjdHVy
ZSkKK0FycmF5Q29uc3RydWN0b3I6OkFycmF5Q29uc3RydWN0b3IoRXhlY1N0YXRlKiBleGVjLCBK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBOb25OdWxsUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+
IHN0cnVjdHVyZSwgQXJyYXlQcm90b3R5cGUqIGFycmF5UHJvdG90eXBlLCBTdHJ1Y3R1cmUqIGZ1
bmN0aW9uU3RydWN0dXJlKQogICAgIDogSW50ZXJuYWxGdW5jdGlvbigmZXhlYy0+Z2xvYmFsRGF0
YSgpLCBnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSwgSWRlbnRpZmllcihleGVjLCBhcnJheVByb3Rv
dHlwZS0+Y2xhc3NJbmZvKCktPmNsYXNzTmFtZSkpCiB7CiAgICAgLy8gRUNNQSAxNS40LjMuMSBB
cnJheS5wcm90b3R5cGUKQEAgLTQ4LDcgKzQ3LDcgQEAgQXJyYXlDb25zdHJ1Y3Rvcjo6QXJyYXlD
b25zdHJ1Y3RvcihFeGVjUwogICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKGV4ZWMtPmds
b2JhbERhdGEoKSwgZXhlYy0+cHJvcGVydHlOYW1lcygpLmxlbmd0aCwganNOdW1iZXIoMSksIFJl
YWRPbmx5IHwgRG9udEVudW0gfCBEb250RGVsZXRlKTsKIAogICAgIC8vIEVTNQotICAgIHB1dERp
cmVjdEZ1bmN0aW9uV2l0aG91dFRyYW5zaXRpb24oZXhlYywgbmV3IChleGVjKSBOYXRpdmVGdW5j
dGlvbldyYXBwZXIoZXhlYywgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGVGdW5jdGlvblN0cnVjdHVy
ZSwgMSwgZXhlYy0+cHJvcGVydHlOYW1lcygpLmlzQXJyYXksIGFycmF5Q29uc3RydWN0b3JJc0Fy
cmF5KSwgRG9udEVudW0pOworICAgIHB1dERpcmVjdEZ1bmN0aW9uV2l0aG91dFRyYW5zaXRpb24o
ZXhlYywgbmV3IChleGVjKSBKU0Z1bmN0aW9uKGV4ZWMsIGdsb2JhbE9iamVjdCwgZnVuY3Rpb25T
dHJ1Y3R1cmUsIDEsIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5pc0FycmF5LCBhcnJheUNvbnN0cnVj
dG9ySXNBcnJheSksIERvbnRFbnVtKTsKIH0KIAogc3RhdGljIGlubGluZSBKU09iamVjdCogY29u
c3RydWN0QXJyYXlXaXRoU2l6ZVF1aXJrKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgQXJnTGlzdCYg
YXJncykKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Jvb2xlYW5Qcm90b3R5
cGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Jvb2xl
YW5Qcm90b3R5cGUuY3BwCShyZXZpc2lvbiA3OTE1OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0Jvb2xlYW5Qcm90b3R5cGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw3ICsy
Niw2IEBACiAjaW5jbHVkZSAiSlNGdW5jdGlvbi5oIgogI2luY2x1ZGUgIkpTU3RyaW5nLmgiCiAj
aW5jbHVkZSAiT2JqZWN0UHJvdG90eXBlLmgiCi0jaW5jbHVkZSAiUHJvdG90eXBlRnVuY3Rpb24u
aCIKIAogbmFtZXNwYWNlIEpTQyB7CiAKQEAgLTM4LDEzICszNywxMyBAQCBzdGF0aWMgRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBib29sCiAKIC8vIEVDTUEgMTUuNi40CiAKLUJvb2xlYW5Q
cm90b3R5cGU6OkJvb2xlYW5Qcm90b3R5cGUoRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBOb25OdWxsUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+IHN0cnVjdHVyZSwg
U3RydWN0dXJlKiBwcm90b3R5cGVGdW5jdGlvblN0cnVjdHVyZSkKK0Jvb2xlYW5Qcm90b3R5cGU6
OkJvb2xlYW5Qcm90b3R5cGUoRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBOb25OdWxsUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+IHN0cnVjdHVyZSwgU3RydWN0dXJl
KiBmdW5jdGlvblN0cnVjdHVyZSkKICAgICA6IEJvb2xlYW5PYmplY3QoZXhlYy0+Z2xvYmFsRGF0
YSgpLCBzdHJ1Y3R1cmUpCiB7CiAgICAgc2V0SW50ZXJuYWxWYWx1ZShleGVjLT5nbG9iYWxEYXRh
KCksIGpzQm9vbGVhbihmYWxzZSkpOwogCi0gICAgcHV0RGlyZWN0RnVuY3Rpb25XaXRob3V0VHJh
bnNpdGlvbihleGVjLCBuZXcgKGV4ZWMpIE5hdGl2ZUZ1bmN0aW9uV3JhcHBlcihleGVjLCBnbG9i
YWxPYmplY3QsIHByb3RvdHlwZUZ1bmN0aW9uU3RydWN0dXJlLCAwLCBleGVjLT5wcm9wZXJ0eU5h
bWVzKCkudG9TdHJpbmcsIGJvb2xlYW5Qcm90b0Z1bmNUb1N0cmluZyksIERvbnRFbnVtKTsKLSAg
ICBwdXREaXJlY3RGdW5jdGlvbldpdGhvdXRUcmFuc2l0aW9uKGV4ZWMsIG5ldyAoZXhlYykgTmF0
aXZlRnVuY3Rpb25XcmFwcGVyKGV4ZWMsIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlRnVuY3Rpb25T
dHJ1Y3R1cmUsIDAsIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS52YWx1ZU9mLCBib29sZWFuUHJvdG9G
dW5jVmFsdWVPZiksIERvbnRFbnVtKTsKKyAgICBwdXREaXJlY3RGdW5jdGlvbldpdGhvdXRUcmFu
c2l0aW9uKGV4ZWMsIG5ldyAoZXhlYykgSlNGdW5jdGlvbihleGVjLCBnbG9iYWxPYmplY3QsIGZ1
bmN0aW9uU3RydWN0dXJlLCAwLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkudG9TdHJpbmcsIGJvb2xl
YW5Qcm90b0Z1bmNUb1N0cmluZyksIERvbnRFbnVtKTsKKyAgICBwdXREaXJlY3RGdW5jdGlvbldp
dGhvdXRUcmFuc2l0aW9uKGV4ZWMsIG5ldyAoZXhlYykgSlNGdW5jdGlvbihleGVjLCBnbG9iYWxP
YmplY3QsIGZ1bmN0aW9uU3RydWN0dXJlLCAwLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkudmFsdWVP
ZiwgYm9vbGVhblByb3RvRnVuY1ZhbHVlT2YpLCBEb250RW51bSk7CiB9CiAKIApJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQm9vbGVhblByb3RvdHlwZS5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Jvb2xlYW5Qcm90b3R5cGUuaAkocmV2
aXNpb24gNzkxNTkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Cb29sZWFuUHJv
dG90eXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTI3LDcgKzI3LDcgQEAgbmFtZXNwYWNlIEpTQyB7
CiAKICAgICBjbGFzcyBCb29sZWFuUHJvdG90eXBlIDogcHVibGljIEJvb2xlYW5PYmplY3Qgewog
ICAgIHB1YmxpYzoKLSAgICAgICAgQm9vbGVhblByb3RvdHlwZShFeGVjU3RhdGUqLCBKU0dsb2Jh
bE9iamVjdCosIE5vbk51bGxQYXNzUmVmUHRyPFN0cnVjdHVyZT4sIFN0cnVjdHVyZSogcHJvdG90
eXBlRnVuY3Rpb25TdHJ1Y3R1cmUpOworICAgICAgICBCb29sZWFuUHJvdG90eXBlKEV4ZWNTdGF0
ZSosIEpTR2xvYmFsT2JqZWN0KiwgTm9uTnVsbFBhc3NSZWZQdHI8U3RydWN0dXJlPiwgU3RydWN0
dXJlKiBmdW5jdGlvblN0cnVjdHVyZSk7CiAgICAgfTsKIAogfSAvLyBuYW1lc3BhY2UgSlNDCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DYWxsRGF0YS5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NhbGxEYXRhLmgJKHJldmlzaW9uIDc5
MTU5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2FsbERhdGEuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMzAsNyArMzAsNiBAQAogI2RlZmluZSBDYWxsRGF0YV9oCiAKICNpbmNsdWRl
ICJKU1ZhbHVlLmgiCi0jaW5jbHVkZSAiTmF0aXZlRnVuY3Rpb25XcmFwcGVyLmgiCiAKIG5hbWVz
cGFjZSBKU0MgewogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EYXRlQ29u
c3RydWN0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0RhdGVDb25zdHJ1Y3Rvci5jcHAJKHJldmlzaW9uIDc5MTU5KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvRGF0ZUNvbnN0cnVjdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzAs
NyArMzAsNiBAQAogI2luY2x1ZGUgIkpTU3RyaW5nLmgiCiAjaW5jbHVkZSAiSlNTdHJpbmdCdWls
ZGVyLmgiCiAjaW5jbHVkZSAiT2JqZWN0UHJvdG90eXBlLmgiCi0jaW5jbHVkZSAiUHJvdG90eXBl
RnVuY3Rpb24uaCIKICNpbmNsdWRlIDxtYXRoLmg+CiAjaW5jbHVkZSA8dGltZS5oPgogI2luY2x1
ZGUgPHd0Zi9EYXRlTWF0aC5oPgpAQCAtNTgsMTQgKzU3LDE0IEBAIHN0YXRpYyBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGUKIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGRhdGVOb3coRXhlY1N0YXRlKik7CiBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBkYXRlVVRDKEV4ZWNTdGF0ZSopOwogCi1EYXRlQ29uc3RydWN0b3I6OkRhdGVDb25zdHJ1
Y3RvcihFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIE5vbk51
bGxQYXNzUmVmUHRyPFN0cnVjdHVyZT4gc3RydWN0dXJlLCBTdHJ1Y3R1cmUqIHByb3RvdHlwZUZ1
bmN0aW9uU3RydWN0dXJlLCBEYXRlUHJvdG90eXBlKiBkYXRlUHJvdG90eXBlKQorRGF0ZUNvbnN0
cnVjdG9yOjpEYXRlQ29uc3RydWN0b3IoRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBOb25OdWxsUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+IHN0cnVjdHVyZSwgU3Ry
dWN0dXJlKiBmdW5jdGlvblN0cnVjdHVyZSwgRGF0ZVByb3RvdHlwZSogZGF0ZVByb3RvdHlwZSkK
ICAgICA6IEludGVybmFsRnVuY3Rpb24oJmV4ZWMtPmdsb2JhbERhdGEoKSwgZ2xvYmFsT2JqZWN0
LCBzdHJ1Y3R1cmUsIElkZW50aWZpZXIoZXhlYywgZGF0ZVByb3RvdHlwZS0+Y2xhc3NJbmZvKCkt
PmNsYXNzTmFtZSkpCiB7CiAgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24oZXhlYy0+Z2xv
YmFsRGF0YSgpLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkucHJvdG90eXBlLCBkYXRlUHJvdG90eXBl
LCBEb250RW51bSB8IERvbnREZWxldGUgfCBSZWFkT25seSk7CiAKLSAgICBwdXREaXJlY3RGdW5j
dGlvbldpdGhvdXRUcmFuc2l0aW9uKGV4ZWMsIG5ldyAoZXhlYykgTmF0aXZlRnVuY3Rpb25XcmFw
cGVyKGV4ZWMsIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlRnVuY3Rpb25TdHJ1Y3R1cmUsIDEsIGV4
ZWMtPnByb3BlcnR5TmFtZXMoKS5wYXJzZSwgZGF0ZVBhcnNlKSwgRG9udEVudW0pOwotICAgIHB1
dERpcmVjdEZ1bmN0aW9uV2l0aG91dFRyYW5zaXRpb24oZXhlYywgbmV3IChleGVjKSBOYXRpdmVG
dW5jdGlvbldyYXBwZXIoZXhlYywgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGVGdW5jdGlvblN0cnVj
dHVyZSwgNywgZXhlYy0+cHJvcGVydHlOYW1lcygpLlVUQywgZGF0ZVVUQyksIERvbnRFbnVtKTsK
LSAgICBwdXREaXJlY3RGdW5jdGlvbldpdGhvdXRUcmFuc2l0aW9uKGV4ZWMsIG5ldyAoZXhlYykg
TmF0aXZlRnVuY3Rpb25XcmFwcGVyKGV4ZWMsIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlRnVuY3Rp
b25TdHJ1Y3R1cmUsIDAsIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5ub3csIGRhdGVOb3cpLCBEb250
RW51bSk7CisgICAgcHV0RGlyZWN0RnVuY3Rpb25XaXRob3V0VHJhbnNpdGlvbihleGVjLCBuZXcg
KGV4ZWMpIEpTRnVuY3Rpb24oZXhlYywgZ2xvYmFsT2JqZWN0LCBmdW5jdGlvblN0cnVjdHVyZSwg
MSwgZXhlYy0+cHJvcGVydHlOYW1lcygpLnBhcnNlLCBkYXRlUGFyc2UpLCBEb250RW51bSk7Cisg
ICAgcHV0RGlyZWN0RnVuY3Rpb25XaXRob3V0VHJhbnNpdGlvbihleGVjLCBuZXcgKGV4ZWMpIEpT
RnVuY3Rpb24oZXhlYywgZ2xvYmFsT2JqZWN0LCBmdW5jdGlvblN0cnVjdHVyZSwgNywgZXhlYy0+
cHJvcGVydHlOYW1lcygpLlVUQywgZGF0ZVVUQyksIERvbnRFbnVtKTsKKyAgICBwdXREaXJlY3RG
dW5jdGlvbldpdGhvdXRUcmFuc2l0aW9uKGV4ZWMsIG5ldyAoZXhlYykgSlNGdW5jdGlvbihleGVj
LCBnbG9iYWxPYmplY3QsIGZ1bmN0aW9uU3RydWN0dXJlLCAwLCBleGVjLT5wcm9wZXJ0eU5hbWVz
KCkubm93LCBkYXRlTm93KSwgRG9udEVudW0pOwogCiAgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5z
aXRpb24oZXhlYy0+Z2xvYmFsRGF0YSgpLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkubGVuZ3RoLCBq
c051bWJlcig3KSwgUmVhZE9ubHkgfCBEb250RW51bSB8IERvbnREZWxldGUpOwogfQpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0ZUNvbnN0cnVjdG9yLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0ZUNvbnN0cnVjdG9yLmgJKHJl
dmlzaW9uIDc5MTU5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0ZUNvbnN0
cnVjdG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTI5LDcgKzI5LDcgQEAgbmFtZXNwYWNlIEpTQyB7
CiAKICAgICBjbGFzcyBEYXRlQ29uc3RydWN0b3IgOiBwdWJsaWMgSW50ZXJuYWxGdW5jdGlvbiB7
CiAgICAgcHVibGljOgotICAgICAgICBEYXRlQ29uc3RydWN0b3IoRXhlY1N0YXRlKiwgSlNHbG9i
YWxPYmplY3QqLCBOb25OdWxsUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+LCBTdHJ1Y3R1cmUqIHByb3Rv
dHlwZUZ1bmN0aW9uU3RydWN0dXJlLCBEYXRlUHJvdG90eXBlKik7CisgICAgICAgIERhdGVDb25z
dHJ1Y3RvcihFeGVjU3RhdGUqLCBKU0dsb2JhbE9iamVjdCosIE5vbk51bGxQYXNzUmVmUHRyPFN0
cnVjdHVyZT4sIFN0cnVjdHVyZSogZnVuY3Rpb25TdHJ1Y3R1cmUsIERhdGVQcm90b3R5cGUqKTsK
IAogICAgIHByaXZhdGU6CiAgICAgICAgIHZpcnR1YWwgQ29uc3RydWN0VHlwZSBnZXRDb25zdHJ1
Y3REYXRhKENvbnN0cnVjdERhdGEmKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0Vycm9yUHJvdG90eXBlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9FcnJvclByb3RvdHlwZS5jcHAJKHJldmlzaW9uIDc5MTU5KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3JQcm90b3R5cGUuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0yNSw3ICsyNSw2IEBACiAjaW5jbHVkZSAiSlNTdHJpbmcuaCIKICNpbmNsdWRlICJKU1N0
cmluZ0J1aWxkZXIuaCIKICNpbmNsdWRlICJPYmplY3RQcm90b3R5cGUuaCIKLSNpbmNsdWRlICJQ
cm90b3R5cGVGdW5jdGlvbi5oIgogI2luY2x1ZGUgIlN0cmluZ1JlY3Vyc2lvbkNoZWNrZXIuaCIK
ICNpbmNsdWRlICJVU3RyaW5nLmgiCiAKQEAgLTM2LDEzICszNSwxMyBAQCBBU1NFUlRfQ0xBU1Nf
RklUU19JTl9DRUxMKEVycm9yUHJvdG90eXBlCiBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBlcnJvclByb3RvRnVuY1RvU3RyaW5nKEV4ZWNTdGF0ZSopOwogCiAvLyBFQ01BIDE1
LjkuNAotRXJyb3JQcm90b3R5cGU6OkVycm9yUHJvdG90eXBlKEV4ZWNTdGF0ZSogZXhlYywgSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgTm9uTnVsbFBhc3NSZWZQdHI8U3RydWN0dXJlPiBz
dHJ1Y3R1cmUsIFN0cnVjdHVyZSogcHJvdG90eXBlRnVuY3Rpb25TdHJ1Y3R1cmUpCitFcnJvclBy
b3RvdHlwZTo6RXJyb3JQcm90b3R5cGUoRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBOb25OdWxsUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+IHN0cnVjdHVyZSwgU3Ry
dWN0dXJlKiBmdW5jdGlvblN0cnVjdHVyZSkKICAgICA6IEVycm9ySW5zdGFuY2UoJmV4ZWMtPmds
b2JhbERhdGEoKSwgc3RydWN0dXJlKQogewogICAgIC8vIFRoZSBjb25zdHJ1Y3RvciB3aWxsIGJl
IGFkZGVkIGxhdGVyIGluIEVycm9yQ29uc3RydWN0b3IncyBjb25zdHJ1Y3RvcgogCiAgICAgcHV0
RGlyZWN0V2l0aG91dFRyYW5zaXRpb24oZXhlYy0+Z2xvYmFsRGF0YSgpLCBleGVjLT5wcm9wZXJ0
eU5hbWVzKCkubmFtZSwganNOb250cml2aWFsU3RyaW5nKGV4ZWMsICJFcnJvciIpLCBEb250RW51
bSk7Ci0gICAgcHV0RGlyZWN0RnVuY3Rpb25XaXRob3V0VHJhbnNpdGlvbihleGVjLCBuZXcgKGV4
ZWMpIE5hdGl2ZUZ1bmN0aW9uV3JhcHBlcihleGVjLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZUZ1
bmN0aW9uU3RydWN0dXJlLCAwLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkudG9TdHJpbmcsIGVycm9y
UHJvdG9GdW5jVG9TdHJpbmcpLCBEb250RW51bSk7CisgICAgcHV0RGlyZWN0RnVuY3Rpb25XaXRo
b3V0VHJhbnNpdGlvbihleGVjLCBuZXcgKGV4ZWMpIEpTRnVuY3Rpb24oZXhlYywgZ2xvYmFsT2Jq
ZWN0LCBmdW5jdGlvblN0cnVjdHVyZSwgMCwgZXhlYy0+cHJvcGVydHlOYW1lcygpLnRvU3RyaW5n
LCBlcnJvclByb3RvRnVuY1RvU3RyaW5nKSwgRG9udEVudW0pOwogfQogCiBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGVycm9yUHJvdG9GdW5jVG9TdHJpbmcoRXhlY1N0YXRlKiBleGVjKQpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3JQcm90b3R5cGUuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvclByb3RvdHlwZS5o
CShyZXZpc2lvbiA3OTE1OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9y
UHJvdG90eXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTI5LDcgKzI5LDcgQEAgbmFtZXNwYWNlIEpT
QyB7CiAKICAgICBjbGFzcyBFcnJvclByb3RvdHlwZSA6IHB1YmxpYyBFcnJvckluc3RhbmNlIHsK
ICAgICBwdWJsaWM6Ci0gICAgICAgIEVycm9yUHJvdG90eXBlKEV4ZWNTdGF0ZSosIEpTR2xvYmFs
T2JqZWN0KiwgTm9uTnVsbFBhc3NSZWZQdHI8U3RydWN0dXJlPiwgU3RydWN0dXJlKiBwcm90b3R5
cGVGdW5jdGlvblN0cnVjdHVyZSk7CisgICAgICAgIEVycm9yUHJvdG90eXBlKEV4ZWNTdGF0ZSos
IEpTR2xvYmFsT2JqZWN0KiwgTm9uTnVsbFBhc3NSZWZQdHI8U3RydWN0dXJlPiwgU3RydWN0dXJl
KiBmdW5jdGlvblN0cnVjdHVyZSk7CiAgICAgfTsKIAogfSAvLyBuYW1lc3BhY2UgSlNDCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmNwcAkocmV2aXNp
b24gNzkxNTkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMzUsMTEgKzM1LDkgQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAK
LSNpZiBFTkFCTEUoSklUKQogTmF0aXZlRXhlY3V0YWJsZTo6fk5hdGl2ZUV4ZWN1dGFibGUoKQog
ewogfQotI2VuZGlmCiAKIFZQdHJIYWNrRXhlY3V0YWJsZTo6flZQdHJIYWNrRXhlY3V0YWJsZSgp
CiB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5oCShy
ZXZpc2lvbiA3OTE1OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFi
bGUuaAkod29ya2luZyBjb3B5KQpAQCAtOTIsMjIgKzkyLDI5IEBAIG5hbWVzcGFjZSBKU0Mgewog
I2VuZGlmCiAgICAgfTsKIAotI2lmIEVOQUJMRShKSVQpCiAgICAgY2xhc3MgTmF0aXZlRXhlY3V0
YWJsZSA6IHB1YmxpYyBFeGVjdXRhYmxlQmFzZSB7CiAgICAgICAgIGZyaWVuZCBjbGFzcyBKSVQ7
CiAgICAgcHVibGljOgorI2lmIEVOQUJMRShKSVQpCiAgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRy
PE5hdGl2ZUV4ZWN1dGFibGU+IGNyZWF0ZShNYWNyb0Fzc2VtYmxlckNvZGVQdHIgY2FsbFRodW5r
LCBOYXRpdmVGdW5jdGlvbiBmdW5jdGlvbiwgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyIGNvbnN0cnVj
dFRodW5rLCBOYXRpdmVGdW5jdGlvbiBjb25zdHJ1Y3RvcikKICAgICAgICAgewogICAgICAgICAg
ICAgaWYgKCFjYWxsVGh1bmspCiAgICAgICAgICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBO
YXRpdmVFeGVjdXRhYmxlKEpJVENvZGUoKSwgZnVuY3Rpb24sIEpJVENvZGUoKSwgY29uc3RydWN0
b3IpKTsKICAgICAgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgTmF0aXZlRXhlY3V0YWJsZShK
SVRDb2RlOjpIb3N0RnVuY3Rpb24oY2FsbFRodW5rKSwgZnVuY3Rpb24sIEpJVENvZGU6Okhvc3RG
dW5jdGlvbihjb25zdHJ1Y3RUaHVuayksIGNvbnN0cnVjdG9yKSk7CiAgICAgICAgIH0KKyNlbHNl
CisgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPE5hdGl2ZUV4ZWN1dGFibGU+IGNyZWF0ZShOYXRp
dmVGdW5jdGlvbiBmdW5jdGlvbiwgTmF0aXZlRnVuY3Rpb24gY29uc3RydWN0b3IpCisgICAgICAg
IHsKKyAgICAgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgTmF0aXZlRXhlY3V0YWJsZShmdW5j
dGlvbiwgY29uc3RydWN0b3IpKTsKKyAgICAgICAgfQorI2VuZGlmCiAKICAgICAgICAgfk5hdGl2
ZUV4ZWN1dGFibGUoKTsKIAogICAgICAgICBOYXRpdmVGdW5jdGlvbiBmdW5jdGlvbigpIHsgcmV0
dXJuIG1fZnVuY3Rpb247IH0KIAogICAgIHByaXZhdGU6CisjaWYgRU5BQkxFKEpJVCkKICAgICAg
ICAgTmF0aXZlRXhlY3V0YWJsZShKSVRDb2RlIGNhbGxUaHVuaywgTmF0aXZlRnVuY3Rpb24gZnVu
Y3Rpb24sIEpJVENvZGUgY29uc3RydWN0VGh1bmssIE5hdGl2ZUZ1bmN0aW9uIGNvbnN0cnVjdG9y
KQogICAgICAgICAgICAgOiBFeGVjdXRhYmxlQmFzZShOVU1fUEFSQU1FVEVSU19JU19IT1NUKQog
ICAgICAgICAgICAgLCBtX2Z1bmN0aW9uKGZ1bmN0aW9uKQpAQCAtMTE4LDEzICsxMjUsMjAgQEAg
bmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICBtX2ppdENvZGVGb3JDYWxsV2l0aEFyaXR5Q2hl
Y2sgPSBjYWxsVGh1bmsuYWRkcmVzc0ZvckNhbGwoKTsKICAgICAgICAgICAgIG1faml0Q29kZUZv
ckNvbnN0cnVjdFdpdGhBcml0eUNoZWNrID0gY29uc3RydWN0VGh1bmsuYWRkcmVzc0ZvckNhbGwo
KTsKICAgICAgICAgfQorI2Vsc2UKKyAgICAgICAgTmF0aXZlRXhlY3V0YWJsZShOYXRpdmVGdW5j
dGlvbiBmdW5jdGlvbiwgTmF0aXZlRnVuY3Rpb24gY29uc3RydWN0b3IpCisgICAgICAgICAgICA6
IEV4ZWN1dGFibGVCYXNlKE5VTV9QQVJBTUVURVJTX0lTX0hPU1QpCisgICAgICAgICAgICAsIG1f
ZnVuY3Rpb24oZnVuY3Rpb24pCisgICAgICAgICAgICAsIG1fY29uc3RydWN0b3IoY29uc3RydWN0
b3IpCisgICAgICAgIHsKKyAgICAgICAgfQorI2VuZGlmCiAKICAgICAgICAgTmF0aXZlRnVuY3Rp
b24gbV9mdW5jdGlvbjsKICAgICAgICAgLy8gUHJvYmFibHkgc2hvdWxkIGJlIGEgTmF0aXZlQ29u
c3RydWN0b3IsIGJ1dCB0aGlzIHdpbGwgY3VycmVudGx5IHJlcXVpcmUgcmV3cml0aW5nIHRoZSBK
SVQKICAgICAgICAgLy8gdHJhbXBvbGluZS4gSXQgbWF5IGJlIGVhc2llciB0byBtYWtlIE5hdGl2
ZUZ1bmN0aW9uIGJlIHBhc3NlZCAndGhpcycgYXMgYSBwYXJ0IG9mIHRoZSBBcmdMaXN0LgogICAg
ICAgICBOYXRpdmVGdW5jdGlvbiBtX2NvbnN0cnVjdG9yOwogICAgIH07Ci0jZW5kaWYKIAogICAg
IGNsYXNzIFZQdHJIYWNrRXhlY3V0YWJsZSA6IHB1YmxpYyBFeGVjdXRhYmxlQmFzZSB7CiAgICAg
cHVibGljOgpAQCAtMzk4LDEzICs0MTIsMTEgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHJl
dHVybiBtX2V4ZWN1dGFibGUtPmlzSG9zdEZ1bmN0aW9uKCk7CiAgICAgfQogCi0jaWYgRU5BQkxF
KEpJVCkKICAgICBpbmxpbmUgTmF0aXZlRnVuY3Rpb24gSlNGdW5jdGlvbjo6bmF0aXZlRnVuY3Rp
b24oKQogICAgIHsKICAgICAgICAgQVNTRVJUKGlzSG9zdEZ1bmN0aW9uKCkpOwogICAgICAgICBy
ZXR1cm4gc3RhdGljX2Nhc3Q8TmF0aXZlRXhlY3V0YWJsZSo+KG1fZXhlY3V0YWJsZS5nZXQoKSkt
PmZ1bmN0aW9uKCk7CiAgICAgfQotI2VuZGlmCiB9CiAKICNlbmRpZgpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25Qcm90b3R5cGUuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uUHJvdG90eXBlLmNwcAkocmV2
aXNpb24gNzkxNTkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvblBy
b3RvdHlwZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI4LDcgKzI4LDYgQEAKICNpbmNsdWRlICJK
U1N0cmluZ0J1aWxkZXIuaCIKICNpbmNsdWRlICJJbnRlcnByZXRlci5oIgogI2luY2x1ZGUgIkxl
eGVyLmgiCi0jaW5jbHVkZSAiUHJvdG90eXBlRnVuY3Rpb24uaCIKIAogbmFtZXNwYWNlIEpTQyB7
CiAKQEAgLTQ0LDEyICs0MywxMiBAQCBGdW5jdGlvblByb3RvdHlwZTo6RnVuY3Rpb25Qcm90b3R5
cGUoRXhlCiAgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24oZXhlYy0+Z2xvYmFsRGF0YSgp
LCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkubGVuZ3RoLCBqc051bWJlcigwKSwgRG9udERlbGV0ZSB8
IFJlYWRPbmx5IHwgRG9udEVudW0pOwogfQogCi12b2lkIEZ1bmN0aW9uUHJvdG90eXBlOjphZGRG
dW5jdGlvblByb3BlcnRpZXMoRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBTdHJ1Y3R1cmUqIHByb3RvdHlwZUZ1bmN0aW9uU3RydWN0dXJlLCBOYXRpdmVGdW5j
dGlvbldyYXBwZXIqKiBjYWxsRnVuY3Rpb24sIE5hdGl2ZUZ1bmN0aW9uV3JhcHBlcioqIGFwcGx5
RnVuY3Rpb24pCit2b2lkIEZ1bmN0aW9uUHJvdG90eXBlOjphZGRGdW5jdGlvblByb3BlcnRpZXMo
RXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUq
IGZ1bmN0aW9uU3RydWN0dXJlLCBKU0Z1bmN0aW9uKiogY2FsbEZ1bmN0aW9uLCBKU0Z1bmN0aW9u
KiogYXBwbHlGdW5jdGlvbikKIHsKLSAgICBwdXREaXJlY3RGdW5jdGlvbldpdGhvdXRUcmFuc2l0
aW9uKGV4ZWMsIG5ldyAoZXhlYykgTmF0aXZlRnVuY3Rpb25XcmFwcGVyKGV4ZWMsIGdsb2JhbE9i
amVjdCwgcHJvdG90eXBlRnVuY3Rpb25TdHJ1Y3R1cmUsIDAsIGV4ZWMtPnByb3BlcnR5TmFtZXMo
KS50b1N0cmluZywgZnVuY3Rpb25Qcm90b0Z1bmNUb1N0cmluZyksIERvbnRFbnVtKTsKLSAgICAq
YXBwbHlGdW5jdGlvbiA9IG5ldyAoZXhlYykgTmF0aXZlRnVuY3Rpb25XcmFwcGVyKGV4ZWMsIGds
b2JhbE9iamVjdCwgcHJvdG90eXBlRnVuY3Rpb25TdHJ1Y3R1cmUsIDIsIGV4ZWMtPnByb3BlcnR5
TmFtZXMoKS5hcHBseSwgZnVuY3Rpb25Qcm90b0Z1bmNBcHBseSk7CisgICAgcHV0RGlyZWN0RnVu
Y3Rpb25XaXRob3V0VHJhbnNpdGlvbihleGVjLCBuZXcgKGV4ZWMpIEpTRnVuY3Rpb24oZXhlYywg
Z2xvYmFsT2JqZWN0LCBmdW5jdGlvblN0cnVjdHVyZSwgMCwgZXhlYy0+cHJvcGVydHlOYW1lcygp
LnRvU3RyaW5nLCBmdW5jdGlvblByb3RvRnVuY1RvU3RyaW5nKSwgRG9udEVudW0pOworICAgICph
cHBseUZ1bmN0aW9uID0gbmV3IChleGVjKSBKU0Z1bmN0aW9uKGV4ZWMsIGdsb2JhbE9iamVjdCwg
ZnVuY3Rpb25TdHJ1Y3R1cmUsIDIsIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5hcHBseSwgZnVuY3Rp
b25Qcm90b0Z1bmNBcHBseSk7CiAgICAgcHV0RGlyZWN0RnVuY3Rpb25XaXRob3V0VHJhbnNpdGlv
bihleGVjLCAqYXBwbHlGdW5jdGlvbiwgRG9udEVudW0pOwotICAgICpjYWxsRnVuY3Rpb24gPSBu
ZXcgKGV4ZWMpIE5hdGl2ZUZ1bmN0aW9uV3JhcHBlcihleGVjLCBnbG9iYWxPYmplY3QsIHByb3Rv
dHlwZUZ1bmN0aW9uU3RydWN0dXJlLCAxLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkuY2FsbCwgZnVu
Y3Rpb25Qcm90b0Z1bmNDYWxsKTsKKyAgICAqY2FsbEZ1bmN0aW9uID0gbmV3IChleGVjKSBKU0Z1
bmN0aW9uKGV4ZWMsIGdsb2JhbE9iamVjdCwgZnVuY3Rpb25TdHJ1Y3R1cmUsIDEsIGV4ZWMtPnBy
b3BlcnR5TmFtZXMoKS5jYWxsLCBmdW5jdGlvblByb3RvRnVuY0NhbGwpOwogICAgIHB1dERpcmVj
dEZ1bmN0aW9uV2l0aG91dFRyYW5zaXRpb24oZXhlYywgKmNhbGxGdW5jdGlvbiwgRG9udEVudW0p
OwogfQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvblByb3Rv
dHlwZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0
aW9uUHJvdG90eXBlLmgJKHJldmlzaW9uIDc5MTU5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvRnVuY3Rpb25Qcm90b3R5cGUuaAkod29ya2luZyBjb3B5KQpAQCAtMjUsMTIgKzI1
LDEwIEBACiAKIG5hbWVzcGFjZSBKU0MgewogCi0gICAgY2xhc3MgUHJvdG90eXBlRnVuY3Rpb247
Ci0KICAgICBjbGFzcyBGdW5jdGlvblByb3RvdHlwZSA6IHB1YmxpYyBJbnRlcm5hbEZ1bmN0aW9u
IHsKICAgICBwdWJsaWM6CiAgICAgICAgIEZ1bmN0aW9uUHJvdG90eXBlKEV4ZWNTdGF0ZSosIEpT
R2xvYmFsT2JqZWN0KiwgTm9uTnVsbFBhc3NSZWZQdHI8U3RydWN0dXJlPik7Ci0gICAgICAgIHZv
aWQgYWRkRnVuY3Rpb25Qcm9wZXJ0aWVzKEV4ZWNTdGF0ZSosIEpTR2xvYmFsT2JqZWN0KiwgU3Ry
dWN0dXJlKiBwcm90b3R5cGVGdW5jdGlvblN0cnVjdHVyZSwgTmF0aXZlRnVuY3Rpb25XcmFwcGVy
KiogY2FsbEZ1bmN0aW9uLCBOYXRpdmVGdW5jdGlvbldyYXBwZXIqKiBhcHBseUZ1bmN0aW9uKTsK
KyAgICAgICAgdm9pZCBhZGRGdW5jdGlvblByb3BlcnRpZXMoRXhlY1N0YXRlKiwgSlNHbG9iYWxP
YmplY3QqLCBTdHJ1Y3R1cmUqIGZ1bmN0aW9uU3RydWN0dXJlLCBKU0Z1bmN0aW9uKiogY2FsbEZ1
bmN0aW9uLCBKU0Z1bmN0aW9uKiogYXBwbHlGdW5jdGlvbik7CiAKICAgICAgICAgc3RhdGljIFBh
c3NSZWZQdHI8U3RydWN0dXJlPiBjcmVhdGVTdHJ1Y3R1cmUoSlNWYWx1ZSBwcm90bykKICAgICAg
ICAgewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2xvYmFsRXZhbEZ1bmN0
aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HbG9i
YWxFdmFsRnVuY3Rpb24uY3BwCShyZXZpc2lvbiA3OTE1OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0dsb2JhbEV2YWxGdW5jdGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEs
NDggKzAsMCBAQAotLyoKLSAqICBDb3B5cmlnaHQgKEMpIDE5OTktMjAwMiBIYXJyaSBQb3J0ZW4g
KHBvcnRlbkBrZGUub3JnKQotICogIENvcHlyaWdodCAoQykgMjAwMSBQZXRlciBLZWxseSAocG1r
QHBvc3QuY29tKQotICogIENvcHlyaWdodCAoQykgMjAwMywgMjAwNCwgMjAwNSwgMjAwNiwgMjAw
NywgMjAwOCwgMjAwOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKiAgQ29weXJp
Z2h0IChDKSAyMDA3IENhbWVyb24gWndhcmljaCAoY3d6d2FyaWNoQHV3YXRlcmxvby5jYSkKLSAq
ICBDb3B5cmlnaHQgKEMpIDIwMDcgTWFrcyBPcmxvdmljaAotICoKLSAqICBUaGlzIGxpYnJhcnkg
aXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0gKiAgbW9k
aWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMK
LSAqICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9u
OyBlaXRoZXIKLSAqICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlv
bikgYW55IGxhdGVyIHZlcnNpb24uCi0gKgotICogIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRl
ZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotICogIGJ1dCBXSVRIT1VUIEFO
WSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0gKiAgTUVS
Q0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRo
ZSBHTlUKLSAqICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWls
cy4KLSAqCi0gKiAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExp
YnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotICogIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5
OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCi0gKiAgdGhlIEZy
ZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBG
bG9vciwKLSAqICBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KLSAqCi0gKi8KLQotI2luY2x1
ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIkdsb2JhbEV2YWxGdW5jdGlvbi5oIgotCi0jaW5jbHVk
ZSAiSlNHbG9iYWxPYmplY3QuaCIKLSNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgotCi1uYW1l
c3BhY2UgSlNDIHsKLQotQVNTRVJUX0NMQVNTX0ZJVFNfSU5fQ0VMTChHbG9iYWxFdmFsRnVuY3Rp
b24pOwotCi1HbG9iYWxFdmFsRnVuY3Rpb246Okdsb2JhbEV2YWxGdW5jdGlvbihFeGVjU3RhdGUq
IGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIE5vbk51bGxQYXNzUmVmUHRyPFN0
cnVjdHVyZT4gc3RydWN0dXJlLCBpbnQgbGVuLCBjb25zdCBJZGVudGlmaWVyJiBuYW1lLCBOYXRp
dmVGdW5jdGlvbiBmdW5jdGlvbiwgSlNHbG9iYWxPYmplY3QqIGNhY2hlZEdsb2JhbE9iamVjdCkK
LSAgICA6IFByb3RvdHlwZUZ1bmN0aW9uKGV4ZWMsIGdsb2JhbE9iamVjdCwgc3RydWN0dXJlLCBs
ZW4sIG5hbWUsIGZ1bmN0aW9uKQotICAgICwgbV9jYWNoZWRHbG9iYWxPYmplY3QoZXhlYy0+Z2xv
YmFsRGF0YSgpLCB0aGlzLCBjYWNoZWRHbG9iYWxPYmplY3QpCi17Ci0gICAgQVNTRVJUX0FSRyhj
YWNoZWRHbG9iYWxPYmplY3QsIGNhY2hlZEdsb2JhbE9iamVjdCk7Ci19Ci0KLXZvaWQgR2xvYmFs
RXZhbEZ1bmN0aW9uOjptYXJrQ2hpbGRyZW4oTWFya1N0YWNrJiBtYXJrU3RhY2spCi17Ci0gICAg
UHJvdG90eXBlRnVuY3Rpb246Om1hcmtDaGlsZHJlbihtYXJrU3RhY2spOwotICAgIG1hcmtTdGFj
ay5hcHBlbmQoJm1fY2FjaGVkR2xvYmFsT2JqZWN0KTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgSlND
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HbG9iYWxFdmFsRnVuY3Rpb24u
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HbG9iYWxFdmFs
RnVuY3Rpb24uaAkocmV2aXNpb24gNzkxNTkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9HbG9iYWxFdmFsRnVuY3Rpb24uaAkod29ya2luZyBjb3B5KQpAQCAtMSw1NCArMCwwIEBA
Ci0vKgotICogIENvcHlyaWdodCAoQykgMTk5OS0yMDAwIEhhcnJpIFBvcnRlbiAocG9ydGVuQGtk
ZS5vcmcpCi0gKiAgQ29weXJpZ2h0IChDKSAyMDAzLCAyMDA2LCAyMDA3LCAyMDA4LCAyMDA5IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqICBDb3B5cmlnaHQgKEMpIDIwMDcgQ2Ft
ZXJvbiBad2FyaWNoIChjd3p3YXJpY2hAdXdhdGVybG9vLmNhKQotICogIENvcHlyaWdodCAoQykg
MjAwNyBNYWtzIE9ybG92aWNoCi0gKgotICogIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJl
OyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSAqICBtb2RpZnkgaXQgdW5kZXIgdGhl
IHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwotICogIExpY2Vuc2UgYXMg
cHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgotICogIHZl
cnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVy
c2lvbi4KLSAqCi0gKiAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRo
YXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gKiAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRo
b3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSAqICBNRVJDSEFOVEFCSUxJVFkgb3Ig
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotICogIExpYnJh
cnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotICoKLSAqICBZb3Ug
c2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1
YmxpYyBMaWNlbnNlCi0gKiAgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBD
T1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KLSAqICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3Vu
ZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAotICogIEJvc3Rv
biwgTUEgMDIxMTAtMTMwMSwgVVNBLgotICoKLSAqLwotCi0jaWZuZGVmIEdsb2JhbEV2YWxGdW5j
dGlvbl9oCi0jZGVmaW5lIEdsb2JhbEV2YWxGdW5jdGlvbl9oCi0KLSNpbmNsdWRlICJQcm90b3R5
cGVGdW5jdGlvbi5oIgotCi1uYW1lc3BhY2UgSlNDIHsKLQotICAgIGNsYXNzIEpTR2xvYmFsT2Jq
ZWN0OwotCi0gICAgY2xhc3MgR2xvYmFsRXZhbEZ1bmN0aW9uIDogcHVibGljIFByb3RvdHlwZUZ1
bmN0aW9uIHsKLSAgICBwdWJsaWM6Ci0gICAgICAgIEdsb2JhbEV2YWxGdW5jdGlvbihFeGVjU3Rh
dGUqLCBKU0dsb2JhbE9iamVjdCosIE5vbk51bGxQYXNzUmVmUHRyPFN0cnVjdHVyZT4sIGludCBs
ZW4sIGNvbnN0IElkZW50aWZpZXImLCBOYXRpdmVGdW5jdGlvbiwgSlNHbG9iYWxPYmplY3QqIGV4
cGVjdGVkVGhpc09iamVjdCk7Ci0gICAgICAgIEpTR2xvYmFsT2JqZWN0KiBjYWNoZWRHbG9iYWxP
YmplY3QoKSBjb25zdCB7IHJldHVybiBtX2NhY2hlZEdsb2JhbE9iamVjdC5nZXQoKTsgfQotCi0g
ICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPFN0cnVjdHVyZT4gY3JlYXRlU3RydWN0dXJlKEpTVmFs
dWUgcHJvdG90eXBlKSAKLSAgICAgICAgeyAKLSAgICAgICAgICAgIHJldHVybiBTdHJ1Y3R1cmU6
OmNyZWF0ZShwcm90b3R5cGUsIFR5cGVJbmZvKE9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwg
QW5vbnltb3VzU2xvdENvdW50LCAmc19pbmZvKTsKLSAgICAgICAgfQotCi0gICAgcHJvdGVjdGVk
OgotICAgICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBJbXBsZW1l
bnRzSGFzSW5zdGFuY2UgfCBPdmVycmlkZXNNYXJrQ2hpbGRyZW4gfCBPdmVycmlkZXNHZXRQcm9w
ZXJ0eU5hbWVzIHwgUHJvdG90eXBlRnVuY3Rpb246OlN0cnVjdHVyZUZsYWdzOwotCi0gICAgcHJp
dmF0ZToKLSAgICAgICAgdmlydHVhbCB2b2lkIG1hcmtDaGlsZHJlbihNYXJrU3RhY2smKTsKLQot
ICAgICAgICBXcml0ZUJhcnJpZXI8SlNHbG9iYWxPYmplY3Q+IG1fY2FjaGVkR2xvYmFsT2JqZWN0
OwotICAgIH07Ci0KLX0gLy8gbmFtZXNwYWNlIEpTQwotCi0jZW5kaWYgLy8gR2xvYmFsRXZhbEZ1
bmN0aW9uX2gKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24u
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rp
b24uY3BwCShyZXZpc2lvbiA3OTE1OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTRnVuY3Rpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MiwxMiArNDIsMTAgQEAgdXNpbmcg
bmFtZXNwYWNlIFdURjsKIHVzaW5nIG5hbWVzcGFjZSBVbmljb2RlOwogCiBuYW1lc3BhY2UgSlND
IHsKLSNpZiBFTkFCTEUoSklUKQogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxsSG9z
dEZ1bmN0aW9uQXNDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIGV4ZWMpCiB7CiAgICAgcmV0dXJuIHRo
cm93Vk1FcnJvcihleGVjLCBjcmVhdGVOb3RBQ29uc3RydWN0b3JFcnJvcihleGVjLCBleGVjLT5j
YWxsZWUoKSkpOwogfQotI2VuZGlmCiAKIEFTU0VSVF9DTEFTU19GSVRTX0lOX0NFTEwoSlNGdW5j
dGlvbik7CiAKQEAgLTY1LDcgKzYzLDYgQEAgSlNGdW5jdGlvbjo6SlNGdW5jdGlvbihOb25OdWxs
UGFzc1JlZlB0cgogewogfQogCi0jaWYgRU5BQkxFKEpJVCkKIEpTRnVuY3Rpb246OkpTRnVuY3Rp
b24oRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBOb25OdWxs
UGFzc1JlZlB0cjxTdHJ1Y3R1cmU+IHN0cnVjdHVyZSwgaW50IGxlbmd0aCwgY29uc3QgSWRlbnRp
ZmllciYgbmFtZSwgUGFzc1JlZlB0cjxOYXRpdmVFeGVjdXRhYmxlPiB0aHVuaykKICAgICA6IEJh
c2UoZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUpCiAgICAgLCBtX2V4ZWN1dGFibGUodGh1bmspCkBA
IC03NCwyMyArNzEsMTQgQEAgSlNGdW5jdGlvbjo6SlNGdW5jdGlvbihFeGVjU3RhdGUqIGV4ZWMs
IAogICAgIHB1dERpcmVjdChleGVjLT5nbG9iYWxEYXRhKCksIGV4ZWMtPmdsb2JhbERhdGEoKS5w
cm9wZXJ0eU5hbWVzLT5uYW1lLCBqc1N0cmluZyhleGVjLCBuYW1lLmlzTnVsbCgpID8gIiIgOiBu
YW1lLnVzdHJpbmcoKSksIERvbnREZWxldGUgfCBSZWFkT25seSB8IERvbnRFbnVtKTsKICAgICBw
dXREaXJlY3QoZXhlYy0+Z2xvYmFsRGF0YSgpLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkubGVuZ3Ro
LCBqc051bWJlcihsZW5ndGgpLCBEb250RGVsZXRlIHwgUmVhZE9ubHkgfCBEb250RW51bSk7CiB9
Ci0jZW5kaWYKIAogSlNGdW5jdGlvbjo6SlNGdW5jdGlvbihFeGVjU3RhdGUqIGV4ZWMsIEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIE5vbk51bGxQYXNzUmVmUHRyPFN0cnVjdHVyZT4gc3Ry
dWN0dXJlLCBpbnQgbGVuZ3RoLCBjb25zdCBJZGVudGlmaWVyJiBuYW1lLCBOYXRpdmVGdW5jdGlv
biBmdW5jKQogICAgIDogQmFzZShnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSkKLSNpZiBFTkFCTEUo
SklUKQogICAgICwgbV9leGVjdXRhYmxlKGV4ZWMtPmdsb2JhbERhdGEoKS5nZXRIb3N0RnVuY3Rp
b24oZnVuYykpCi0jZW5kaWYKICAgICAsIG1fc2NvcGVDaGFpbihnbG9iYWxPYmplY3QtPmdsb2Jh
bFNjb3BlQ2hhaW4oKSkKIHsKICAgICBwdXREaXJlY3QoZXhlYy0+Z2xvYmFsRGF0YSgpLCBleGVj
LT5nbG9iYWxEYXRhKCkucHJvcGVydHlOYW1lcy0+bmFtZSwganNTdHJpbmcoZXhlYywgbmFtZS5p
c051bGwoKSA/ICIiIDogbmFtZS51c3RyaW5nKCkpLCBEb250RGVsZXRlIHwgUmVhZE9ubHkgfCBE
b250RW51bSk7Ci0jaWYgRU5BQkxFKEpJVCkKICAgICBwdXREaXJlY3QoZXhlYy0+Z2xvYmFsRGF0
YSgpLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkubGVuZ3RoLCBqc051bWJlcihsZW5ndGgpLCBEb250
RGVsZXRlIHwgUmVhZE9ubHkgfCBEb250RW51bSk7Ci0jZWxzZQotICAgIFVOVVNFRF9QQVJBTShs
ZW5ndGgpOwotICAgIFVOVVNFRF9QQVJBTShmdW5jKTsKLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsKLSNlbmRpZgogfQogCiBKU0Z1bmN0aW9uOjpKU0Z1bmN0aW9uKEV4ZWNTdGF0ZSogZXhlYywg
Tm9uTnVsbFBhc3NSZWZQdHI8RnVuY3Rpb25FeGVjdXRhYmxlPiBleGVjdXRhYmxlLCBTY29wZUNo
YWluTm9kZSogc2NvcGVDaGFpbk5vZGUpCkBAIC0xNjUsMTIgKzE1MywxMCBAQCB2b2lkIEpTRnVu
Y3Rpb246Om1hcmtDaGlsZHJlbihNYXJrU3RhY2smCiAKIENhbGxUeXBlIEpTRnVuY3Rpb246Omdl
dENhbGxEYXRhKENhbGxEYXRhJiBjYWxsRGF0YSkKIHsKLSNpZiBFTkFCTEUoSklUKQogICAgIGlm
IChpc0hvc3RGdW5jdGlvbigpKSB7CiAgICAgICAgIGNhbGxEYXRhLm5hdGl2ZS5mdW5jdGlvbiA9
IG5hdGl2ZUZ1bmN0aW9uKCk7CiAgICAgICAgIHJldHVybiBDYWxsVHlwZUhvc3Q7CiAgICAgfQot
I2VuZGlmCiAgICAgY2FsbERhdGEuanMuZnVuY3Rpb25FeGVjdXRhYmxlID0ganNFeGVjdXRhYmxl
KCk7CiAgICAgY2FsbERhdGEuanMuc2NvcGVDaGFpbiA9IHNjb3BlKCkubm9kZSgpOwogICAgIHJl
dHVybiBDYWxsVHlwZUpTOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNG
dW5jdGlvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
RnVuY3Rpb24uaAkocmV2aXNpb24gNzkxNTkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0Z1bmN0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ1LDkgKzQ1LDcgQEAgbmFtZXNw
YWNlIEpTQyB7CiAKICAgICBwdWJsaWM6CiAgICAgICAgIEpTRnVuY3Rpb24oRXhlY1N0YXRlKiwg
SlNHbG9iYWxPYmplY3QqLCBOb25OdWxsUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+LCBpbnQgbGVuZ3Ro
LCBjb25zdCBJZGVudGlmaWVyJiwgTmF0aXZlRnVuY3Rpb24pOwotI2lmIEVOQUJMRShKSVQpCiAg
ICAgICAgIEpTRnVuY3Rpb24oRXhlY1N0YXRlKiwgSlNHbG9iYWxPYmplY3QqLCBOb25OdWxsUGFz
c1JlZlB0cjxTdHJ1Y3R1cmU+LCBpbnQgbGVuZ3RoLCBjb25zdCBJZGVudGlmaWVyJiwgUGFzc1Jl
ZlB0cjxOYXRpdmVFeGVjdXRhYmxlPik7Ci0jZW5kaWYKICAgICAgICAgSlNGdW5jdGlvbihFeGVj
U3RhdGUqLCBOb25OdWxsUGFzc1JlZlB0cjxGdW5jdGlvbkV4ZWN1dGFibGU+LCBTY29wZUNoYWlu
Tm9kZSopOwogICAgICAgICB2aXJ0dWFsIH5KU0Z1bmN0aW9uKCk7CiAKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsRGF0YS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxEYXRhLmNwcAkocmV2aXNpb24gNzkx
NTkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbERhdGEuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0yODQsNiArMjg0LDExIEBAIFBhc3NSZWZQdHI8TmF0aXZlRXhlY3V0
YWJsZT4gSlNHbG9iYWxEYXQKIHsKICAgICByZXR1cm4gaml0U3R1YnMtPmhvc3RGdW5jdGlvblN0
dWIodGhpcywgZnVuY3Rpb24sIGdlbmVyYXRvcik7CiB9CisjZWxzZQorUGFzc1JlZlB0cjxOYXRp
dmVFeGVjdXRhYmxlPiBKU0dsb2JhbERhdGE6OmdldEhvc3RGdW5jdGlvbihOYXRpdmVGdW5jdGlv
biBmdW5jdGlvbikKK3sKKyAgICByZXR1cm4gTmF0aXZlRXhlY3V0YWJsZTo6Y3JlYXRlKGZ1bmN0
aW9uLCBjYWxsSG9zdEZ1bmN0aW9uQXNDb25zdHJ1Y3Rvcik7Cit9CiAjZW5kaWYKIAogSlNHbG9i
YWxEYXRhOjpDbGllbnREYXRhOjp+Q2xpZW50RGF0YSgpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0dsb2JhbERhdGEuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0dsb2JhbERhdGEuaAkocmV2aXNpb24gNzkxNTkpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbERhdGEuaAkod29ya2luZyBjb3B5KQpA
QCAtNjMsNiArNjMsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBjbGFzcyBKU0dsb2JhbE9iamVj
dDsKICAgICBjbGFzcyBKU09iamVjdDsKICAgICBjbGFzcyBMZXhlcjsKKyAgICBjbGFzcyBOYXRp
dmVFeGVjdXRhYmxlOwogICAgIGNsYXNzIFBhcnNlcjsKICAgICBjbGFzcyBSZWdFeHBDYWNoZTsK
ICAgICBjbGFzcyBTdHJpbmdpZmllcjsKQEAgLTE5OSw5ICsyMDAsMTAgQEAgbmFtZXNwYWNlIEpT
QyB7CiAgICAgICAgIHsKICAgICAgICAgICAgIHJldHVybiBqaXRTdHVicy0+Y3RpU3R1Yih0aGlz
LCBnZW5lcmF0b3IpOwogICAgICAgICB9Ci0gICAgICAgIFBhc3NSZWZQdHI8TmF0aXZlRXhlY3V0
YWJsZT4gZ2V0SG9zdEZ1bmN0aW9uKE5hdGl2ZUZ1bmN0aW9uIGZ1bmN0aW9uKTsKICAgICAgICAg
UGFzc1JlZlB0cjxOYXRpdmVFeGVjdXRhYmxlPiBnZXRIb3N0RnVuY3Rpb24oTmF0aXZlRnVuY3Rp
b24gZnVuY3Rpb24sIFRodW5rR2VuZXJhdG9yIGdlbmVyYXRvcik7CiAjZW5kaWYKKyAgICAgICAg
UGFzc1JlZlB0cjxOYXRpdmVFeGVjdXRhYmxlPiBnZXRIb3N0RnVuY3Rpb24oTmF0aXZlRnVuY3Rp
b24gZnVuY3Rpb24pOworCiAgICAgICAgIFRpbWVvdXRDaGVja2VyIHRpbWVvdXRDaGVja2VyOwog
ICAgICAgICBUZXJtaW5hdG9yIHRlcm1pbmF0b3I7CiAgICAgICAgIEhlYXAgaGVhcDsKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAJ
KHJldmlzaW9uIDc5MTU5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9i
YWxPYmplY3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00Niw3ICs0Niw2IEBACiAjaW5jbHVkZSAi
RXJyb3JQcm90b3R5cGUuaCIKICNpbmNsdWRlICJGdW5jdGlvbkNvbnN0cnVjdG9yLmgiCiAjaW5j
bHVkZSAiRnVuY3Rpb25Qcm90b3R5cGUuaCIKLSNpbmNsdWRlICJHbG9iYWxFdmFsRnVuY3Rpb24u
aCIKICNpbmNsdWRlICJKU0Z1bmN0aW9uLmgiCiAjaW5jbHVkZSAiSlNHbG9iYWxPYmplY3RGdW5j
dGlvbnMuaCIKICNpbmNsdWRlICJKU0xvY2suaCIKQEAgLTE4MiwxOSArMTgxLDE4IEBAIHZvaWQg
SlNHbG9iYWxPYmplY3Q6OnJlc2V0KEpTVmFsdWUgcHJvdG8KICAgICAvLyBQcm90b3R5cGVzCiAK
ICAgICBkKCktPmZ1bmN0aW9uUHJvdG90eXBlLnNldChleGVjLT5nbG9iYWxEYXRhKCksIHRoaXMs
IG5ldyAoZXhlYykgRnVuY3Rpb25Qcm90b3R5cGUoZXhlYywgdGhpcywgRnVuY3Rpb25Qcm90b3R5
cGU6OmNyZWF0ZVN0cnVjdHVyZShqc051bGwoKSkpKTsgLy8gVGhlIHJlYWwgcHJvdG90eXBlIHdp
bGwgYmUgc2V0IG9uY2UgT2JqZWN0UHJvdG90eXBlIGlzIGNyZWF0ZWQuCi0gICAgZCgpLT5wcm90
b3R5cGVGdW5jdGlvblN0cnVjdHVyZSA9IE5hdGl2ZUZ1bmN0aW9uV3JhcHBlcjo6Y3JlYXRlU3Ry
dWN0dXJlKGQoKS0+ZnVuY3Rpb25Qcm90b3R5cGUuZ2V0KCkpOworICAgIGQoKS0+ZnVuY3Rpb25T
dHJ1Y3R1cmUgPSBKU0Z1bmN0aW9uOjpjcmVhdGVTdHJ1Y3R1cmUoZCgpLT5mdW5jdGlvblByb3Rv
dHlwZS5nZXQoKSk7CiAgICAgZCgpLT5pbnRlcm5hbEZ1bmN0aW9uU3RydWN0dXJlID0gSW50ZXJu
YWxGdW5jdGlvbjo6Y3JlYXRlU3RydWN0dXJlKGQoKS0+ZnVuY3Rpb25Qcm90b3R5cGUuZ2V0KCkp
OwotICAgIE5hdGl2ZUZ1bmN0aW9uV3JhcHBlciogY2FsbEZ1bmN0aW9uID0gMDsKLSAgICBOYXRp
dmVGdW5jdGlvbldyYXBwZXIqIGFwcGx5RnVuY3Rpb24gPSAwOwotICAgIGQoKS0+ZnVuY3Rpb25Q
cm90b3R5cGUtPmFkZEZ1bmN0aW9uUHJvcGVydGllcyhleGVjLCB0aGlzLCBkKCktPnByb3RvdHlw
ZUZ1bmN0aW9uU3RydWN0dXJlLmdldCgpLCAmY2FsbEZ1bmN0aW9uLCAmYXBwbHlGdW5jdGlvbik7
CisgICAgSlNGdW5jdGlvbiogY2FsbEZ1bmN0aW9uID0gMDsKKyAgICBKU0Z1bmN0aW9uKiBhcHBs
eUZ1bmN0aW9uID0gMDsKKyAgICBkKCktPmZ1bmN0aW9uUHJvdG90eXBlLT5hZGRGdW5jdGlvblBy
b3BlcnRpZXMoZXhlYywgdGhpcywgZCgpLT5mdW5jdGlvblN0cnVjdHVyZS5nZXQoKSwgJmNhbGxG
dW5jdGlvbiwgJmFwcGx5RnVuY3Rpb24pOwogICAgIGQoKS0+Y2FsbEZ1bmN0aW9uLnNldChleGVj
LT5nbG9iYWxEYXRhKCksIHRoaXMsIGNhbGxGdW5jdGlvbik7CiAgICAgZCgpLT5hcHBseUZ1bmN0
aW9uLnNldChleGVjLT5nbG9iYWxEYXRhKCksIHRoaXMsIGFwcGx5RnVuY3Rpb24pOwotICAgIGQo
KS0+b2JqZWN0UHJvdG90eXBlLnNldChleGVjLT5nbG9iYWxEYXRhKCksIHRoaXMsIG5ldyAoZXhl
YykgT2JqZWN0UHJvdG90eXBlKGV4ZWMsIHRoaXMsIE9iamVjdFByb3RvdHlwZTo6Y3JlYXRlU3Ry
dWN0dXJlKGpzTnVsbCgpKSwgZCgpLT5wcm90b3R5cGVGdW5jdGlvblN0cnVjdHVyZS5nZXQoKSkp
OworICAgIGQoKS0+b2JqZWN0UHJvdG90eXBlLnNldChleGVjLT5nbG9iYWxEYXRhKCksIHRoaXMs
IG5ldyAoZXhlYykgT2JqZWN0UHJvdG90eXBlKGV4ZWMsIHRoaXMsIE9iamVjdFByb3RvdHlwZTo6
Y3JlYXRlU3RydWN0dXJlKGpzTnVsbCgpKSwgZCgpLT5mdW5jdGlvblN0cnVjdHVyZS5nZXQoKSkp
OwogICAgIGQoKS0+ZnVuY3Rpb25Qcm90b3R5cGUtPnN0cnVjdHVyZSgpLT5zZXRQcm90b3R5cGVX
aXRob3V0VHJhbnNpdGlvbihkKCktPm9iamVjdFByb3RvdHlwZS5nZXQoKSk7CiAKICAgICBkKCkt
PmVtcHR5T2JqZWN0U3RydWN0dXJlID0gZCgpLT5vYmplY3RQcm90b3R5cGUtPmluaGVyaXRvcklE
KCk7CiAKLSAgICBkKCktPmZ1bmN0aW9uU3RydWN0dXJlID0gSlNGdW5jdGlvbjo6Y3JlYXRlU3Ry
dWN0dXJlKGQoKS0+ZnVuY3Rpb25Qcm90b3R5cGUuZ2V0KCkpOwogICAgIGQoKS0+Y2FsbGJhY2tG
dW5jdGlvblN0cnVjdHVyZSA9IEpTQ2FsbGJhY2tGdW5jdGlvbjo6Y3JlYXRlU3RydWN0dXJlKGQo
KS0+ZnVuY3Rpb25Qcm90b3R5cGUuZ2V0KCkpOwogICAgIGQoKS0+YXJndW1lbnRzU3RydWN0dXJl
ID0gQXJndW1lbnRzOjpjcmVhdGVTdHJ1Y3R1cmUoZCgpLT5vYmplY3RQcm90b3R5cGUuZ2V0KCkp
OwogICAgIGQoKS0+Y2FsbGJhY2tDb25zdHJ1Y3RvclN0cnVjdHVyZSA9IEpTQ2FsbGJhY2tDb25z
dHJ1Y3Rvcjo6Y3JlYXRlU3RydWN0dXJlKGQoKS0+b2JqZWN0UHJvdG90eXBlLmdldCgpKTsKQEAg
LTIwNywzMiArMjA1LDMyIEBAIHZvaWQgSlNHbG9iYWxPYmplY3Q6OnJlc2V0KEpTVmFsdWUgcHJv
dG8KICAgICBkKCktPnN0cmluZ1Byb3RvdHlwZS5zZXQoZXhlYy0+Z2xvYmFsRGF0YSgpLCB0aGlz
LCBuZXcgKGV4ZWMpIFN0cmluZ1Byb3RvdHlwZShleGVjLCB0aGlzLCBTdHJpbmdQcm90b3R5cGU6
OmNyZWF0ZVN0cnVjdHVyZShkKCktPm9iamVjdFByb3RvdHlwZS5nZXQoKSkpKTsKICAgICBkKCkt
PnN0cmluZ09iamVjdFN0cnVjdHVyZSA9IFN0cmluZ09iamVjdDo6Y3JlYXRlU3RydWN0dXJlKGQo
KS0+c3RyaW5nUHJvdG90eXBlLmdldCgpKTsKIAotICAgIGQoKS0+Ym9vbGVhblByb3RvdHlwZS5z
ZXQoZXhlYy0+Z2xvYmFsRGF0YSgpLCB0aGlzLCBuZXcgKGV4ZWMpIEJvb2xlYW5Qcm90b3R5cGUo
ZXhlYywgdGhpcywgQm9vbGVhblByb3RvdHlwZTo6Y3JlYXRlU3RydWN0dXJlKGQoKS0+b2JqZWN0
UHJvdG90eXBlLmdldCgpKSwgZCgpLT5wcm90b3R5cGVGdW5jdGlvblN0cnVjdHVyZS5nZXQoKSkp
OworICAgIGQoKS0+Ym9vbGVhblByb3RvdHlwZS5zZXQoZXhlYy0+Z2xvYmFsRGF0YSgpLCB0aGlz
LCBuZXcgKGV4ZWMpIEJvb2xlYW5Qcm90b3R5cGUoZXhlYywgdGhpcywgQm9vbGVhblByb3RvdHlw
ZTo6Y3JlYXRlU3RydWN0dXJlKGQoKS0+b2JqZWN0UHJvdG90eXBlLmdldCgpKSwgZCgpLT5mdW5j
dGlvblN0cnVjdHVyZS5nZXQoKSkpOwogICAgIGQoKS0+Ym9vbGVhbk9iamVjdFN0cnVjdHVyZSA9
IEJvb2xlYW5PYmplY3Q6OmNyZWF0ZVN0cnVjdHVyZShkKCktPmJvb2xlYW5Qcm90b3R5cGUuZ2V0
KCkpOwogCi0gICAgZCgpLT5udW1iZXJQcm90b3R5cGUuc2V0KGV4ZWMtPmdsb2JhbERhdGEoKSwg
dGhpcywgbmV3IChleGVjKSBOdW1iZXJQcm90b3R5cGUoZXhlYywgdGhpcywgTnVtYmVyUHJvdG90
eXBlOjpjcmVhdGVTdHJ1Y3R1cmUoZCgpLT5vYmplY3RQcm90b3R5cGUuZ2V0KCkpLCBkKCktPnBy
b3RvdHlwZUZ1bmN0aW9uU3RydWN0dXJlLmdldCgpKSk7CisgICAgZCgpLT5udW1iZXJQcm90b3R5
cGUuc2V0KGV4ZWMtPmdsb2JhbERhdGEoKSwgdGhpcywgbmV3IChleGVjKSBOdW1iZXJQcm90b3R5
cGUoZXhlYywgdGhpcywgTnVtYmVyUHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUoZCgpLT5vYmpl
Y3RQcm90b3R5cGUuZ2V0KCkpLCBkKCktPmZ1bmN0aW9uU3RydWN0dXJlLmdldCgpKSk7CiAgICAg
ZCgpLT5udW1iZXJPYmplY3RTdHJ1Y3R1cmUgPSBOdW1iZXJPYmplY3Q6OmNyZWF0ZVN0cnVjdHVy
ZShkKCktPm51bWJlclByb3RvdHlwZS5nZXQoKSk7CiAKICAgICBkKCktPmRhdGVQcm90b3R5cGUu
c2V0KGV4ZWMtPmdsb2JhbERhdGEoKSwgdGhpcywgbmV3IChleGVjKSBEYXRlUHJvdG90eXBlKGV4
ZWMsIHRoaXMsIERhdGVQcm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZShkKCktPm9iamVjdFByb3Rv
dHlwZS5nZXQoKSkpKTsKICAgICBkKCktPmRhdGVTdHJ1Y3R1cmUgPSBEYXRlSW5zdGFuY2U6OmNy
ZWF0ZVN0cnVjdHVyZShkKCktPmRhdGVQcm90b3R5cGUuZ2V0KCkpOwogCi0gICAgZCgpLT5yZWdF
eHBQcm90b3R5cGUuc2V0KGV4ZWMtPmdsb2JhbERhdGEoKSwgdGhpcywgbmV3IChleGVjKSBSZWdF
eHBQcm90b3R5cGUoZXhlYywgdGhpcywgUmVnRXhwUHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUo
ZCgpLT5vYmplY3RQcm90b3R5cGUuZ2V0KCkpLCBkKCktPnByb3RvdHlwZUZ1bmN0aW9uU3RydWN0
dXJlLmdldCgpKSk7CisgICAgZCgpLT5yZWdFeHBQcm90b3R5cGUuc2V0KGV4ZWMtPmdsb2JhbERh
dGEoKSwgdGhpcywgbmV3IChleGVjKSBSZWdFeHBQcm90b3R5cGUoZXhlYywgdGhpcywgUmVnRXhw
UHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUoZCgpLT5vYmplY3RQcm90b3R5cGUuZ2V0KCkpLCBk
KCktPmZ1bmN0aW9uU3RydWN0dXJlLmdldCgpKSk7CiAgICAgZCgpLT5yZWdFeHBTdHJ1Y3R1cmUg
PSBSZWdFeHBPYmplY3Q6OmNyZWF0ZVN0cnVjdHVyZShkKCktPnJlZ0V4cFByb3RvdHlwZS5nZXQo
KSk7CiAKICAgICBkKCktPm1ldGhvZENhbGxEdW1teS5zZXQoZXhlYy0+Z2xvYmFsRGF0YSgpLCB0
aGlzLCBjb25zdHJ1Y3RFbXB0eU9iamVjdChleGVjKSk7CiAKLSAgICBFcnJvclByb3RvdHlwZSog
ZXJyb3JQcm90b3R5cGUgPSBuZXcgKGV4ZWMpIEVycm9yUHJvdG90eXBlKGV4ZWMsIHRoaXMsIEVy
cm9yUHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUoZCgpLT5vYmplY3RQcm90b3R5cGUuZ2V0KCkp
LCBkKCktPnByb3RvdHlwZUZ1bmN0aW9uU3RydWN0dXJlLmdldCgpKTsKKyAgICBFcnJvclByb3Rv
dHlwZSogZXJyb3JQcm90b3R5cGUgPSBuZXcgKGV4ZWMpIEVycm9yUHJvdG90eXBlKGV4ZWMsIHRo
aXMsIEVycm9yUHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUoZCgpLT5vYmplY3RQcm90b3R5cGUu
Z2V0KCkpLCBkKCktPmZ1bmN0aW9uU3RydWN0dXJlLmdldCgpKTsKICAgICBkKCktPmVycm9yU3Ry
dWN0dXJlID0gRXJyb3JJbnN0YW5jZTo6Y3JlYXRlU3RydWN0dXJlKGVycm9yUHJvdG90eXBlKTsK
IAogICAgIC8vIENvbnN0cnVjdG9ycwogCi0gICAgSlNDZWxsKiBvYmplY3RDb25zdHJ1Y3RvciA9
IG5ldyAoZXhlYykgT2JqZWN0Q29uc3RydWN0b3IoZXhlYywgdGhpcywgT2JqZWN0Q29uc3RydWN0
b3I6OmNyZWF0ZVN0cnVjdHVyZShkKCktPmZ1bmN0aW9uUHJvdG90eXBlLmdldCgpKSwgZCgpLT5v
YmplY3RQcm90b3R5cGUuZ2V0KCksIGQoKS0+cHJvdG90eXBlRnVuY3Rpb25TdHJ1Y3R1cmUuZ2V0
KCkpOworICAgIEpTQ2VsbCogb2JqZWN0Q29uc3RydWN0b3IgPSBuZXcgKGV4ZWMpIE9iamVjdENv
bnN0cnVjdG9yKGV4ZWMsIHRoaXMsIE9iamVjdENvbnN0cnVjdG9yOjpjcmVhdGVTdHJ1Y3R1cmUo
ZCgpLT5mdW5jdGlvblByb3RvdHlwZS5nZXQoKSksIGQoKS0+b2JqZWN0UHJvdG90eXBlLmdldCgp
LCBkKCktPmZ1bmN0aW9uU3RydWN0dXJlLmdldCgpKTsKICAgICBKU0NlbGwqIGZ1bmN0aW9uQ29u
c3RydWN0b3IgPSBuZXcgKGV4ZWMpIEZ1bmN0aW9uQ29uc3RydWN0b3IoZXhlYywgdGhpcywgRnVu
Y3Rpb25Db25zdHJ1Y3Rvcjo6Y3JlYXRlU3RydWN0dXJlKGQoKS0+ZnVuY3Rpb25Qcm90b3R5cGUu
Z2V0KCkpLCBkKCktPmZ1bmN0aW9uUHJvdG90eXBlLmdldCgpKTsKLSAgICBKU0NlbGwqIGFycmF5
Q29uc3RydWN0b3IgPSBuZXcgKGV4ZWMpIEFycmF5Q29uc3RydWN0b3IoZXhlYywgdGhpcywgQXJy
YXlDb25zdHJ1Y3Rvcjo6Y3JlYXRlU3RydWN0dXJlKGQoKS0+ZnVuY3Rpb25Qcm90b3R5cGUuZ2V0
KCkpLCBkKCktPmFycmF5UHJvdG90eXBlLmdldCgpLCBkKCktPnByb3RvdHlwZUZ1bmN0aW9uU3Ry
dWN0dXJlLmdldCgpKTsKLSAgICBKU0NlbGwqIHN0cmluZ0NvbnN0cnVjdG9yID0gbmV3IChleGVj
KSBTdHJpbmdDb25zdHJ1Y3RvcihleGVjLCB0aGlzLCBTdHJpbmdDb25zdHJ1Y3Rvcjo6Y3JlYXRl
U3RydWN0dXJlKGQoKS0+ZnVuY3Rpb25Qcm90b3R5cGUuZ2V0KCkpLCBkKCktPnByb3RvdHlwZUZ1
bmN0aW9uU3RydWN0dXJlLmdldCgpLCBkKCktPnN0cmluZ1Byb3RvdHlwZS5nZXQoKSk7CisgICAg
SlNDZWxsKiBhcnJheUNvbnN0cnVjdG9yID0gbmV3IChleGVjKSBBcnJheUNvbnN0cnVjdG9yKGV4
ZWMsIHRoaXMsIEFycmF5Q29uc3RydWN0b3I6OmNyZWF0ZVN0cnVjdHVyZShkKCktPmZ1bmN0aW9u
UHJvdG90eXBlLmdldCgpKSwgZCgpLT5hcnJheVByb3RvdHlwZS5nZXQoKSwgZCgpLT5mdW5jdGlv
blN0cnVjdHVyZS5nZXQoKSk7CisgICAgSlNDZWxsKiBzdHJpbmdDb25zdHJ1Y3RvciA9IG5ldyAo
ZXhlYykgU3RyaW5nQ29uc3RydWN0b3IoZXhlYywgdGhpcywgU3RyaW5nQ29uc3RydWN0b3I6OmNy
ZWF0ZVN0cnVjdHVyZShkKCktPmZ1bmN0aW9uUHJvdG90eXBlLmdldCgpKSwgZCgpLT5mdW5jdGlv
blN0cnVjdHVyZS5nZXQoKSwgZCgpLT5zdHJpbmdQcm90b3R5cGUuZ2V0KCkpOwogICAgIEpTQ2Vs
bCogYm9vbGVhbkNvbnN0cnVjdG9yID0gbmV3IChleGVjKSBCb29sZWFuQ29uc3RydWN0b3IoZXhl
YywgdGhpcywgQm9vbGVhbkNvbnN0cnVjdG9yOjpjcmVhdGVTdHJ1Y3R1cmUoZCgpLT5mdW5jdGlv
blByb3RvdHlwZS5nZXQoKSksIGQoKS0+Ym9vbGVhblByb3RvdHlwZS5nZXQoKSk7CiAgICAgSlND
ZWxsKiBudW1iZXJDb25zdHJ1Y3RvciA9IG5ldyAoZXhlYykgTnVtYmVyQ29uc3RydWN0b3IoZXhl
YywgdGhpcywgTnVtYmVyQ29uc3RydWN0b3I6OmNyZWF0ZVN0cnVjdHVyZShkKCktPmZ1bmN0aW9u
UHJvdG90eXBlLmdldCgpKSwgZCgpLT5udW1iZXJQcm90b3R5cGUuZ2V0KCkpOwotICAgIEpTQ2Vs
bCogZGF0ZUNvbnN0cnVjdG9yID0gbmV3IChleGVjKSBEYXRlQ29uc3RydWN0b3IoZXhlYywgdGhp
cywgRGF0ZUNvbnN0cnVjdG9yOjpjcmVhdGVTdHJ1Y3R1cmUoZCgpLT5mdW5jdGlvblByb3RvdHlw
ZS5nZXQoKSksIGQoKS0+cHJvdG90eXBlRnVuY3Rpb25TdHJ1Y3R1cmUuZ2V0KCksIGQoKS0+ZGF0
ZVByb3RvdHlwZS5nZXQoKSk7CisgICAgSlNDZWxsKiBkYXRlQ29uc3RydWN0b3IgPSBuZXcgKGV4
ZWMpIERhdGVDb25zdHJ1Y3RvcihleGVjLCB0aGlzLCBEYXRlQ29uc3RydWN0b3I6OmNyZWF0ZVN0
cnVjdHVyZShkKCktPmZ1bmN0aW9uUHJvdG90eXBlLmdldCgpKSwgZCgpLT5mdW5jdGlvblN0cnVj
dHVyZS5nZXQoKSwgZCgpLT5kYXRlUHJvdG90eXBlLmdldCgpKTsKIAogICAgIGQoKS0+cmVnRXhw
Q29uc3RydWN0b3Iuc2V0KGV4ZWMtPmdsb2JhbERhdGEoKSwgdGhpcywgbmV3IChleGVjKSBSZWdF
eHBDb25zdHJ1Y3RvcihleGVjLCB0aGlzLCBSZWdFeHBDb25zdHJ1Y3Rvcjo6Y3JlYXRlU3RydWN0
dXJlKGQoKS0+ZnVuY3Rpb25Qcm90b3R5cGUuZ2V0KCkpLCBkKCktPnJlZ0V4cFByb3RvdHlwZS5n
ZXQoKSkpOwogCkBAIC0yOTAsMjAgKzI4OCwyMCBAQCB2b2lkIEpTR2xvYmFsT2JqZWN0OjpyZXNl
dChKU1ZhbHVlIHByb3RvCiAKICAgICAvLyBTZXQgZ2xvYmFsIGZ1bmN0aW9ucy4KIAotICAgIGQo
KS0+ZXZhbEZ1bmN0aW9uLnNldChleGVjLT5nbG9iYWxEYXRhKCksIHRoaXMsIG5ldyAoZXhlYykg
R2xvYmFsRXZhbEZ1bmN0aW9uKGV4ZWMsIHRoaXMsIEdsb2JhbEV2YWxGdW5jdGlvbjo6Y3JlYXRl
U3RydWN0dXJlKGQoKS0+ZnVuY3Rpb25Qcm90b3R5cGUuZ2V0KCkpLCAxLCBleGVjLT5wcm9wZXJ0
eU5hbWVzKCkuZXZhbCwgZ2xvYmFsRnVuY0V2YWwsIHRoaXMpKTsKKyAgICBkKCktPmV2YWxGdW5j
dGlvbi5zZXQoZXhlYy0+Z2xvYmFsRGF0YSgpLCB0aGlzLCBuZXcgKGV4ZWMpIEpTRnVuY3Rpb24o
ZXhlYywgdGhpcywgZCgpLT5mdW5jdGlvblN0cnVjdHVyZS5nZXQoKSwgMSwgZXhlYy0+cHJvcGVy
dHlOYW1lcygpLmV2YWwsIGdsb2JhbEZ1bmNFdmFsKSk7CiAgICAgcHV0RGlyZWN0RnVuY3Rpb25X
aXRob3V0VHJhbnNpdGlvbihleGVjLCBkKCktPmV2YWxGdW5jdGlvbi5nZXQoKSwgRG9udEVudW0p
OwotICAgIHB1dERpcmVjdEZ1bmN0aW9uV2l0aG91dFRyYW5zaXRpb24oZXhlYywgbmV3IChleGVj
KSBOYXRpdmVGdW5jdGlvbldyYXBwZXIoZXhlYywgdGhpcywgZCgpLT5wcm90b3R5cGVGdW5jdGlv
blN0cnVjdHVyZS5nZXQoKSwgMiwgSWRlbnRpZmllcihleGVjLCAicGFyc2VJbnQiKSwgZ2xvYmFs
RnVuY1BhcnNlSW50KSwgRG9udEVudW0pOwotICAgIHB1dERpcmVjdEZ1bmN0aW9uV2l0aG91dFRy
YW5zaXRpb24oZXhlYywgbmV3IChleGVjKSBOYXRpdmVGdW5jdGlvbldyYXBwZXIoZXhlYywgdGhp
cywgZCgpLT5wcm90b3R5cGVGdW5jdGlvblN0cnVjdHVyZS5nZXQoKSwgMSwgSWRlbnRpZmllcihl
eGVjLCAicGFyc2VGbG9hdCIpLCBnbG9iYWxGdW5jUGFyc2VGbG9hdCksIERvbnRFbnVtKTsKLSAg
ICBwdXREaXJlY3RGdW5jdGlvbldpdGhvdXRUcmFuc2l0aW9uKGV4ZWMsIG5ldyAoZXhlYykgTmF0
aXZlRnVuY3Rpb25XcmFwcGVyKGV4ZWMsIHRoaXMsIGQoKS0+cHJvdG90eXBlRnVuY3Rpb25TdHJ1
Y3R1cmUuZ2V0KCksIDEsIElkZW50aWZpZXIoZXhlYywgImlzTmFOIiksIGdsb2JhbEZ1bmNJc05h
TiksIERvbnRFbnVtKTsKLSAgICBwdXREaXJlY3RGdW5jdGlvbldpdGhvdXRUcmFuc2l0aW9uKGV4
ZWMsIG5ldyAoZXhlYykgTmF0aXZlRnVuY3Rpb25XcmFwcGVyKGV4ZWMsIHRoaXMsIGQoKS0+cHJv
dG90eXBlRnVuY3Rpb25TdHJ1Y3R1cmUuZ2V0KCksIDEsIElkZW50aWZpZXIoZXhlYywgImlzRmlu
aXRlIiksIGdsb2JhbEZ1bmNJc0Zpbml0ZSksIERvbnRFbnVtKTsKLSAgICBwdXREaXJlY3RGdW5j
dGlvbldpdGhvdXRUcmFuc2l0aW9uKGV4ZWMsIG5ldyAoZXhlYykgTmF0aXZlRnVuY3Rpb25XcmFw
cGVyKGV4ZWMsIHRoaXMsIGQoKS0+cHJvdG90eXBlRnVuY3Rpb25TdHJ1Y3R1cmUuZ2V0KCksIDEs
IElkZW50aWZpZXIoZXhlYywgImVzY2FwZSIpLCBnbG9iYWxGdW5jRXNjYXBlKSwgRG9udEVudW0p
OwotICAgIHB1dERpcmVjdEZ1bmN0aW9uV2l0aG91dFRyYW5zaXRpb24oZXhlYywgbmV3IChleGVj
KSBOYXRpdmVGdW5jdGlvbldyYXBwZXIoZXhlYywgdGhpcywgZCgpLT5wcm90b3R5cGVGdW5jdGlv
blN0cnVjdHVyZS5nZXQoKSwgMSwgSWRlbnRpZmllcihleGVjLCAidW5lc2NhcGUiKSwgZ2xvYmFs
RnVuY1VuZXNjYXBlKSwgRG9udEVudW0pOwotICAgIHB1dERpcmVjdEZ1bmN0aW9uV2l0aG91dFRy
YW5zaXRpb24oZXhlYywgbmV3IChleGVjKSBOYXRpdmVGdW5jdGlvbldyYXBwZXIoZXhlYywgdGhp
cywgZCgpLT5wcm90b3R5cGVGdW5jdGlvblN0cnVjdHVyZS5nZXQoKSwgMSwgSWRlbnRpZmllcihl
eGVjLCAiZGVjb2RlVVJJIiksIGdsb2JhbEZ1bmNEZWNvZGVVUkkpLCBEb250RW51bSk7Ci0gICAg
cHV0RGlyZWN0RnVuY3Rpb25XaXRob3V0VHJhbnNpdGlvbihleGVjLCBuZXcgKGV4ZWMpIE5hdGl2
ZUZ1bmN0aW9uV3JhcHBlcihleGVjLCB0aGlzLCBkKCktPnByb3RvdHlwZUZ1bmN0aW9uU3RydWN0
dXJlLmdldCgpLCAxLCBJZGVudGlmaWVyKGV4ZWMsICJkZWNvZGVVUklDb21wb25lbnQiKSwgZ2xv
YmFsRnVuY0RlY29kZVVSSUNvbXBvbmVudCksIERvbnRFbnVtKTsKLSAgICBwdXREaXJlY3RGdW5j
dGlvbldpdGhvdXRUcmFuc2l0aW9uKGV4ZWMsIG5ldyAoZXhlYykgTmF0aXZlRnVuY3Rpb25XcmFw
cGVyKGV4ZWMsIHRoaXMsIGQoKS0+cHJvdG90eXBlRnVuY3Rpb25TdHJ1Y3R1cmUuZ2V0KCksIDEs
IElkZW50aWZpZXIoZXhlYywgImVuY29kZVVSSSIpLCBnbG9iYWxGdW5jRW5jb2RlVVJJKSwgRG9u
dEVudW0pOwotICAgIHB1dERpcmVjdEZ1bmN0aW9uV2l0aG91dFRyYW5zaXRpb24oZXhlYywgbmV3
IChleGVjKSBOYXRpdmVGdW5jdGlvbldyYXBwZXIoZXhlYywgdGhpcywgZCgpLT5wcm90b3R5cGVG
dW5jdGlvblN0cnVjdHVyZS5nZXQoKSwgMSwgSWRlbnRpZmllcihleGVjLCAiZW5jb2RlVVJJQ29t
cG9uZW50IiksIGdsb2JhbEZ1bmNFbmNvZGVVUklDb21wb25lbnQpLCBEb250RW51bSk7CisgICAg
cHV0RGlyZWN0RnVuY3Rpb25XaXRob3V0VHJhbnNpdGlvbihleGVjLCBuZXcgKGV4ZWMpIEpTRnVu
Y3Rpb24oZXhlYywgdGhpcywgZCgpLT5mdW5jdGlvblN0cnVjdHVyZS5nZXQoKSwgMiwgSWRlbnRp
ZmllcihleGVjLCAicGFyc2VJbnQiKSwgZ2xvYmFsRnVuY1BhcnNlSW50KSwgRG9udEVudW0pOwor
ICAgIHB1dERpcmVjdEZ1bmN0aW9uV2l0aG91dFRyYW5zaXRpb24oZXhlYywgbmV3IChleGVjKSBK
U0Z1bmN0aW9uKGV4ZWMsIHRoaXMsIGQoKS0+ZnVuY3Rpb25TdHJ1Y3R1cmUuZ2V0KCksIDEsIElk
ZW50aWZpZXIoZXhlYywgInBhcnNlRmxvYXQiKSwgZ2xvYmFsRnVuY1BhcnNlRmxvYXQpLCBEb250
RW51bSk7CisgICAgcHV0RGlyZWN0RnVuY3Rpb25XaXRob3V0VHJhbnNpdGlvbihleGVjLCBuZXcg
KGV4ZWMpIEpTRnVuY3Rpb24oZXhlYywgdGhpcywgZCgpLT5mdW5jdGlvblN0cnVjdHVyZS5nZXQo
KSwgMSwgSWRlbnRpZmllcihleGVjLCAiaXNOYU4iKSwgZ2xvYmFsRnVuY0lzTmFOKSwgRG9udEVu
dW0pOworICAgIHB1dERpcmVjdEZ1bmN0aW9uV2l0aG91dFRyYW5zaXRpb24oZXhlYywgbmV3IChl
eGVjKSBKU0Z1bmN0aW9uKGV4ZWMsIHRoaXMsIGQoKS0+ZnVuY3Rpb25TdHJ1Y3R1cmUuZ2V0KCks
IDEsIElkZW50aWZpZXIoZXhlYywgImlzRmluaXRlIiksIGdsb2JhbEZ1bmNJc0Zpbml0ZSksIERv
bnRFbnVtKTsKKyAgICBwdXREaXJlY3RGdW5jdGlvbldpdGhvdXRUcmFuc2l0aW9uKGV4ZWMsIG5l
dyAoZXhlYykgSlNGdW5jdGlvbihleGVjLCB0aGlzLCBkKCktPmZ1bmN0aW9uU3RydWN0dXJlLmdl
dCgpLCAxLCBJZGVudGlmaWVyKGV4ZWMsICJlc2NhcGUiKSwgZ2xvYmFsRnVuY0VzY2FwZSksIERv
bnRFbnVtKTsKKyAgICBwdXREaXJlY3RGdW5jdGlvbldpdGhvdXRUcmFuc2l0aW9uKGV4ZWMsIG5l
dyAoZXhlYykgSlNGdW5jdGlvbihleGVjLCB0aGlzLCBkKCktPmZ1bmN0aW9uU3RydWN0dXJlLmdl
dCgpLCAxLCBJZGVudGlmaWVyKGV4ZWMsICJ1bmVzY2FwZSIpLCBnbG9iYWxGdW5jVW5lc2NhcGUp
LCBEb250RW51bSk7CisgICAgcHV0RGlyZWN0RnVuY3Rpb25XaXRob3V0VHJhbnNpdGlvbihleGVj
LCBuZXcgKGV4ZWMpIEpTRnVuY3Rpb24oZXhlYywgdGhpcywgZCgpLT5mdW5jdGlvblN0cnVjdHVy
ZS5nZXQoKSwgMSwgSWRlbnRpZmllcihleGVjLCAiZGVjb2RlVVJJIiksIGdsb2JhbEZ1bmNEZWNv
ZGVVUkkpLCBEb250RW51bSk7CisgICAgcHV0RGlyZWN0RnVuY3Rpb25XaXRob3V0VHJhbnNpdGlv
bihleGVjLCBuZXcgKGV4ZWMpIEpTRnVuY3Rpb24oZXhlYywgdGhpcywgZCgpLT5mdW5jdGlvblN0
cnVjdHVyZS5nZXQoKSwgMSwgSWRlbnRpZmllcihleGVjLCAiZGVjb2RlVVJJQ29tcG9uZW50Iiks
IGdsb2JhbEZ1bmNEZWNvZGVVUklDb21wb25lbnQpLCBEb250RW51bSk7CisgICAgcHV0RGlyZWN0
RnVuY3Rpb25XaXRob3V0VHJhbnNpdGlvbihleGVjLCBuZXcgKGV4ZWMpIEpTRnVuY3Rpb24oZXhl
YywgdGhpcywgZCgpLT5mdW5jdGlvblN0cnVjdHVyZS5nZXQoKSwgMSwgSWRlbnRpZmllcihleGVj
LCAiZW5jb2RlVVJJIiksIGdsb2JhbEZ1bmNFbmNvZGVVUkkpLCBEb250RW51bSk7CisgICAgcHV0
RGlyZWN0RnVuY3Rpb25XaXRob3V0VHJhbnNpdGlvbihleGVjLCBuZXcgKGV4ZWMpIEpTRnVuY3Rp
b24oZXhlYywgdGhpcywgZCgpLT5mdW5jdGlvblN0cnVjdHVyZS5nZXQoKSwgMSwgSWRlbnRpZmll
cihleGVjLCAiZW5jb2RlVVJJQ29tcG9uZW50IiksIGdsb2JhbEZ1bmNFbmNvZGVVUklDb21wb25l
bnQpLCBEb250RW51bSk7CiAjaWZuZGVmIE5ERUJVRwotICAgIHB1dERpcmVjdEZ1bmN0aW9uV2l0
aG91dFRyYW5zaXRpb24oZXhlYywgbmV3IChleGVjKSBOYXRpdmVGdW5jdGlvbldyYXBwZXIoZXhl
YywgdGhpcywgZCgpLT5wcm90b3R5cGVGdW5jdGlvblN0cnVjdHVyZS5nZXQoKSwgMSwgSWRlbnRp
ZmllcihleGVjLCAianNjcHJpbnQiKSwgZ2xvYmFsRnVuY0pTQ1ByaW50KSwgRG9udEVudW0pOwor
ICAgIHB1dERpcmVjdEZ1bmN0aW9uV2l0aG91dFRyYW5zaXRpb24oZXhlYywgbmV3IChleGVjKSBK
U0Z1bmN0aW9uKGV4ZWMsIHRoaXMsIGQoKS0+ZnVuY3Rpb25TdHJ1Y3R1cmUuZ2V0KCksIDEsIElk
ZW50aWZpZXIoZXhlYywgImpzY3ByaW50IiksIGdsb2JhbEZ1bmNKU0NQcmludCksIERvbnRFbnVt
KTsKICNlbmRpZgogCiAgICAgcmVzZXRQcm90b3R5cGUocHJvdG90eXBlKTsKQEAgLTM2MCw3ICsz
NTgsNiBAQCB2b2lkIEpTR2xvYmFsT2JqZWN0OjptYXJrQ2hpbGRyZW4oTWFya1N0CiAgICAgbWFy
a0lmTmVlZGVkKG1hcmtTdGFjaywgZCgpLT5lcnJvclN0cnVjdHVyZSk7CiAgICAgbWFya0lmTmVl
ZGVkKG1hcmtTdGFjaywgZCgpLT5mdW5jdGlvblN0cnVjdHVyZSk7CiAgICAgbWFya0lmTmVlZGVk
KG1hcmtTdGFjaywgZCgpLT5udW1iZXJPYmplY3RTdHJ1Y3R1cmUpOwotICAgIG1hcmtJZk5lZWRl
ZChtYXJrU3RhY2ssIGQoKS0+cHJvdG90eXBlRnVuY3Rpb25TdHJ1Y3R1cmUpOwogICAgIG1hcmtJ
Zk5lZWRlZChtYXJrU3RhY2ssIGQoKS0+cmVnRXhwTWF0Y2hlc0FycmF5U3RydWN0dXJlKTsKICAg
ICBtYXJrSWZOZWVkZWQobWFya1N0YWNrLCBkKCktPnJlZ0V4cFN0cnVjdHVyZSk7CiAgICAgbWFy
a0lmTmVlZGVkKG1hcmtTdGFjaywgZCgpLT5zdHJpbmdPYmplY3RTdHJ1Y3R1cmUpOwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCShyZXZp
c2lvbiA3OTE1OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2Jq
ZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTI2LDcgKzI2LDYgQEAKICNpbmNsdWRlICJKU0dsb2Jh
bERhdGEuaCIKICNpbmNsdWRlICJKU1ZhcmlhYmxlT2JqZWN0LmgiCiAjaW5jbHVkZSAiSlNXZWFr
T2JqZWN0TWFwUmVmSW50ZXJuYWwuaCIKLSNpbmNsdWRlICJOYXRpdmVGdW5jdGlvbldyYXBwZXIu
aCIKICNpbmNsdWRlICJOdW1iZXJQcm90b3R5cGUuaCIKICNpbmNsdWRlICJTdHJpbmdQcm90b3R5
cGUuaCIKICNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgpAQCAtNDIsNyArNDEsNiBAQCBuYW1lc3Bh
Y2UgSlNDIHsKICAgICBjbGFzcyBFcnJvckNvbnN0cnVjdG9yOwogICAgIGNsYXNzIEZ1bmN0aW9u
UHJvdG90eXBlOwogICAgIGNsYXNzIEdsb2JhbENvZGVCbG9jazsKLSAgICBjbGFzcyBHbG9iYWxF
dmFsRnVuY3Rpb247CiAgICAgY2xhc3MgTmF0aXZlRXJyb3JDb25zdHJ1Y3RvcjsKICAgICBjbGFz
cyBQcm9ncmFtQ29kZUJsb2NrOwogICAgIGNsYXNzIFJlZ0V4cENvbnN0cnVjdG9yOwpAQCAtOTcs
OSArOTUsOSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgIFdyaXRlQmFycmllcjxOYXRp
dmVFcnJvckNvbnN0cnVjdG9yPiB0eXBlRXJyb3JDb25zdHJ1Y3RvcjsKICAgICAgICAgICAgIFdy
aXRlQmFycmllcjxOYXRpdmVFcnJvckNvbnN0cnVjdG9yPiBVUklFcnJvckNvbnN0cnVjdG9yOwog
Ci0gICAgICAgICAgICBXcml0ZUJhcnJpZXI8R2xvYmFsRXZhbEZ1bmN0aW9uPiBldmFsRnVuY3Rp
b247Ci0gICAgICAgICAgICBXcml0ZUJhcnJpZXI8TmF0aXZlRnVuY3Rpb25XcmFwcGVyPiBjYWxs
RnVuY3Rpb247Ci0gICAgICAgICAgICBXcml0ZUJhcnJpZXI8TmF0aXZlRnVuY3Rpb25XcmFwcGVy
PiBhcHBseUZ1bmN0aW9uOworICAgICAgICAgICAgV3JpdGVCYXJyaWVyPEpTRnVuY3Rpb24+IGV2
YWxGdW5jdGlvbjsKKyAgICAgICAgICAgIFdyaXRlQmFycmllcjxKU0Z1bmN0aW9uPiBjYWxsRnVu
Y3Rpb247CisgICAgICAgICAgICBXcml0ZUJhcnJpZXI8SlNGdW5jdGlvbj4gYXBwbHlGdW5jdGlv
bjsKIAogICAgICAgICAgICAgV3JpdGVCYXJyaWVyPE9iamVjdFByb3RvdHlwZT4gb2JqZWN0UHJv
dG90eXBlOwogICAgICAgICAgICAgV3JpdGVCYXJyaWVyPEZ1bmN0aW9uUHJvdG90eXBlPiBmdW5j
dGlvblByb3RvdHlwZTsKQEAgLTEyMyw3ICsxMjEsNiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAg
ICAgICAgIFJlZlB0cjxTdHJ1Y3R1cmU+IGVycm9yU3RydWN0dXJlOwogICAgICAgICAgICAgUmVm
UHRyPFN0cnVjdHVyZT4gZnVuY3Rpb25TdHJ1Y3R1cmU7CiAgICAgICAgICAgICBSZWZQdHI8U3Ry
dWN0dXJlPiBudW1iZXJPYmplY3RTdHJ1Y3R1cmU7Ci0gICAgICAgICAgICBSZWZQdHI8U3RydWN0
dXJlPiBwcm90b3R5cGVGdW5jdGlvblN0cnVjdHVyZTsKICAgICAgICAgICAgIFJlZlB0cjxTdHJ1
Y3R1cmU+IHJlZ0V4cE1hdGNoZXNBcnJheVN0cnVjdHVyZTsKICAgICAgICAgICAgIFJlZlB0cjxT
dHJ1Y3R1cmU+IHJlZ0V4cFN0cnVjdHVyZTsKICAgICAgICAgICAgIFJlZlB0cjxTdHJ1Y3R1cmU+
IHN0cmluZ09iamVjdFN0cnVjdHVyZTsKQEAgLTE5Myw3ICsxOTAsNyBAQCBuYW1lc3BhY2UgSlND
IHsKICAgICAgICAgTmF0aXZlRXJyb3JDb25zdHJ1Y3RvciogdHlwZUVycm9yQ29uc3RydWN0b3Io
KSBjb25zdCB7IHJldHVybiBkKCktPnR5cGVFcnJvckNvbnN0cnVjdG9yLmdldCgpOyB9CiAgICAg
ICAgIE5hdGl2ZUVycm9yQ29uc3RydWN0b3IqIFVSSUVycm9yQ29uc3RydWN0b3IoKSBjb25zdCB7
IHJldHVybiBkKCktPlVSSUVycm9yQ29uc3RydWN0b3IuZ2V0KCk7IH0KIAotICAgICAgICBHbG9i
YWxFdmFsRnVuY3Rpb24qIGV2YWxGdW5jdGlvbigpIGNvbnN0IHsgcmV0dXJuIGQoKS0+ZXZhbEZ1
bmN0aW9uLmdldCgpOyB9CisgICAgICAgIEpTRnVuY3Rpb24qIGV2YWxGdW5jdGlvbigpIGNvbnN0
IHsgcmV0dXJuIGQoKS0+ZXZhbEZ1bmN0aW9uLmdldCgpOyB9CiAKICAgICAgICAgT2JqZWN0UHJv
dG90eXBlKiBvYmplY3RQcm90b3R5cGUoKSBjb25zdCB7IHJldHVybiBkKCktPm9iamVjdFByb3Rv
dHlwZS5nZXQoKTsgfQogICAgICAgICBGdW5jdGlvblByb3RvdHlwZSogZnVuY3Rpb25Qcm90b3R5
cGUoKSBjb25zdCB7IHJldHVybiBkKCktPmZ1bmN0aW9uUHJvdG90eXBlLmdldCgpOyB9CkBAIC0y
MTcsNyArMjE0LDYgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIFN0cnVjdHVyZSogZXJyb3JT
dHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBkKCktPmVycm9yU3RydWN0dXJlLmdldCgpOyB9CiAg
ICAgICAgIFN0cnVjdHVyZSogZnVuY3Rpb25TdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBkKCkt
PmZ1bmN0aW9uU3RydWN0dXJlLmdldCgpOyB9CiAgICAgICAgIFN0cnVjdHVyZSogbnVtYmVyT2Jq
ZWN0U3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4gZCgpLT5udW1iZXJPYmplY3RTdHJ1Y3R1cmUu
Z2V0KCk7IH0KLSAgICAgICAgU3RydWN0dXJlKiBwcm90b3R5cGVGdW5jdGlvblN0cnVjdHVyZSgp
IGNvbnN0IHsgcmV0dXJuIGQoKS0+cHJvdG90eXBlRnVuY3Rpb25TdHJ1Y3R1cmUuZ2V0KCk7IH0K
ICAgICAgICAgU3RydWN0dXJlKiBpbnRlcm5hbEZ1bmN0aW9uU3RydWN0dXJlKCkgY29uc3QgeyBy
ZXR1cm4gZCgpLT5pbnRlcm5hbEZ1bmN0aW9uU3RydWN0dXJlLmdldCgpOyB9CiAgICAgICAgIFN0
cnVjdHVyZSogcmVnRXhwTWF0Y2hlc0FycmF5U3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4gZCgp
LT5yZWdFeHBNYXRjaGVzQXJyYXlTdHJ1Y3R1cmUuZ2V0KCk7IH0KICAgICAgICAgU3RydWN0dXJl
KiByZWdFeHBTdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBkKCktPnJlZ0V4cFN0cnVjdHVyZS5n
ZXQoKTsgfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmpl
Y3RGdW5jdGlvbnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTR2xvYmFsT2JqZWN0RnVuY3Rpb25zLmNwcAkocmV2aXNpb24gNzkxNTkpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdEZ1bmN0aW9ucy5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTI2LDcgKzI2LDYgQEAKICNpbmNsdWRlICJKU0dsb2JhbE9iamVjdEZ1
bmN0aW9ucy5oIgogCiAjaW5jbHVkZSAiQ2FsbEZyYW1lLmgiCi0jaW5jbHVkZSAiR2xvYmFsRXZh
bEZ1bmN0aW9uLmgiCiAjaW5jbHVkZSAiSW50ZXJwcmV0ZXIuaCIKICNpbmNsdWRlICJKU0dsb2Jh
bE9iamVjdC5oIgogI2luY2x1ZGUgIkpTU3RyaW5nLmgiCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9Mb29rdXAuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0xvb2t1cC5jcHAJKHJldmlzaW9uIDc5MTU5KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvTG9va3VwLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjIsNyArMjIs
NiBAQAogCiAjaW5jbHVkZSAiRXhlY3V0YWJsZS5oIgogI2luY2x1ZGUgIkpTRnVuY3Rpb24uaCIK
LSNpbmNsdWRlICJQcm90b3R5cGVGdW5jdGlvbi5oIgogCiBuYW1lc3BhY2UgSlNDIHsKIApAQCAt
NzcsMTQgKzc2LDE0IEBAIHZvaWQgc2V0VXBTdGF0aWNGdW5jdGlvblNsb3QoRXhlY1N0YXRlKiAK
ICAgICBXcml0ZUJhcnJpZXJCYXNlPFVua25vd24+KiBsb2NhdGlvbiA9IHRoaXNPYmotPmdldERp
cmVjdExvY2F0aW9uKHByb3BlcnR5TmFtZSk7CiAKICAgICBpZiAoIWxvY2F0aW9uKSB7Ci0gICAg
ICAgIE5hdGl2ZUZ1bmN0aW9uV3JhcHBlciogZnVuY3Rpb247CisgICAgICAgIEpTRnVuY3Rpb24q
IGZ1bmN0aW9uOwogICAgICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gYXNHbG9i
YWxPYmplY3QodGhpc09iai0+Z2V0QW5vbnltb3VzVmFsdWUoMCkuYXNDZWxsKCkpOwogI2lmIEVO
QUJMRShKSVQpICYmIEVOQUJMRShKSVRfT1BUSU1JWkVfTkFUSVZFX0NBTEwpCiAgICAgICAgIGlm
IChlbnRyeS0+Z2VuZXJhdG9yKCkpCi0gICAgICAgICAgICBmdW5jdGlvbiA9IG5ldyAoZXhlYykg
TmF0aXZlRnVuY3Rpb25XcmFwcGVyKGV4ZWMsIGdsb2JhbE9iamVjdCwgZ2xvYmFsT2JqZWN0LT5w
cm90b3R5cGVGdW5jdGlvblN0cnVjdHVyZSgpLCBlbnRyeS0+ZnVuY3Rpb25MZW5ndGgoKSwgcHJv
cGVydHlOYW1lLCBleGVjLT5nbG9iYWxEYXRhKCkuZ2V0SG9zdEZ1bmN0aW9uKGVudHJ5LT5mdW5j
dGlvbigpLCBlbnRyeS0+Z2VuZXJhdG9yKCkpKTsKKyAgICAgICAgICAgIGZ1bmN0aW9uID0gbmV3
IChleGVjKSBKU0Z1bmN0aW9uKGV4ZWMsIGdsb2JhbE9iamVjdCwgZ2xvYmFsT2JqZWN0LT5mdW5j
dGlvblN0cnVjdHVyZSgpLCBlbnRyeS0+ZnVuY3Rpb25MZW5ndGgoKSwgcHJvcGVydHlOYW1lLCBl
eGVjLT5nbG9iYWxEYXRhKCkuZ2V0SG9zdEZ1bmN0aW9uKGVudHJ5LT5mdW5jdGlvbigpLCBlbnRy
eS0+Z2VuZXJhdG9yKCkpKTsKICAgICAgICAgZWxzZQogI2VuZGlmCi0gICAgICAgICAgICBmdW5j
dGlvbiA9IG5ldyAoZXhlYykgTmF0aXZlRnVuY3Rpb25XcmFwcGVyKGV4ZWMsIGdsb2JhbE9iamVj
dCwgZ2xvYmFsT2JqZWN0LT5wcm90b3R5cGVGdW5jdGlvblN0cnVjdHVyZSgpLCBlbnRyeS0+ZnVu
Y3Rpb25MZW5ndGgoKSwgcHJvcGVydHlOYW1lLCBlbnRyeS0+ZnVuY3Rpb24oKSk7CisgICAgICAg
ICAgICBmdW5jdGlvbiA9IG5ldyAoZXhlYykgSlNGdW5jdGlvbihleGVjLCBnbG9iYWxPYmplY3Qs
IGdsb2JhbE9iamVjdC0+ZnVuY3Rpb25TdHJ1Y3R1cmUoKSwgZW50cnktPmZ1bmN0aW9uTGVuZ3Ro
KCksIHByb3BlcnR5TmFtZSwgZW50cnktPmZ1bmN0aW9uKCkpOwogCiAgICAgICAgIHRoaXNPYmot
PnB1dERpcmVjdEZ1bmN0aW9uKGV4ZWMtPmdsb2JhbERhdGEoKSwgcHJvcGVydHlOYW1lLCBmdW5j
dGlvbiwgZW50cnktPmF0dHJpYnV0ZXMoKSk7CiAgICAgICAgIGxvY2F0aW9uID0gdGhpc09iai0+
Z2V0RGlyZWN0TG9jYXRpb24ocHJvcGVydHlOYW1lKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL05hdGl2ZUZ1bmN0aW9uV3JhcHBlci5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL05hdGl2ZUZ1bmN0aW9uV3JhcHBlci5oCShyZXZpc2lv
biA3OTE1OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL05hdGl2ZUZ1bmN0aW9u
V3JhcHBlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDM5ICswLDAgQEAKLS8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMDkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
LSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoK
LSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5E
IEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICog
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCi0gKi8KLQotI2lmbmRlZiBOYXRpdmVGdW5jdGlvbldy
YXBwZXJfaAotI2RlZmluZSBOYXRpdmVGdW5jdGlvbldyYXBwZXJfaAotCi1uYW1lc3BhY2UgSlND
IHsKLSNpZiBFTkFCTEUoSklUKSAmJiBFTkFCTEUoSklUX09QVElNSVpFX05BVElWRV9DQUxMKQot
ICAgIGNsYXNzIEpTRnVuY3Rpb247Ci0gICAgdHlwZWRlZiBKU0Z1bmN0aW9uIE5hdGl2ZUZ1bmN0
aW9uV3JhcHBlcjsKLSNlbHNlCi0gICAgY2xhc3MgUHJvdG90eXBlRnVuY3Rpb247Ci0gICAgdHlw
ZWRlZiBQcm90b3R5cGVGdW5jdGlvbiBOYXRpdmVGdW5jdGlvbldyYXBwZXI7Ci0jZW5kaWYKLX0K
LQotI2VuZGlmCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OdW1iZXJQcm90
b3R5cGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL051
bWJlclByb3RvdHlwZS5jcHAJKHJldmlzaW9uIDc5MTU5KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvTnVtYmVyUHJvdG90eXBlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjYsNyAr
MjYsNiBAQAogI2luY2x1ZGUgIkpTRnVuY3Rpb24uaCIKICNpbmNsdWRlICJKU1N0cmluZy5oIgog
I2luY2x1ZGUgIk9wZXJhdGlvbnMuaCIKLSNpbmNsdWRlICJQcm90b3R5cGVGdW5jdGlvbi5oIgog
I2luY2x1ZGUgImR0b2EuaCIKICNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgogI2luY2x1ZGUg
PHd0Zi9EZWNpbWFsTnVtYmVyLmg+CkBAIC00NiwxOSArNDUsMTkgQEAgc3RhdGljIEVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgbnVtYgogCiAvLyBFQ01BIDE1LjcuNAogCi1OdW1iZXJQcm90
b3R5cGU6Ok51bWJlclByb3RvdHlwZShFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIE5vbk51bGxQYXNzUmVmUHRyPFN0cnVjdHVyZT4gc3RydWN0dXJlLCBTdHJ1
Y3R1cmUqIHByb3RvdHlwZUZ1bmN0aW9uU3RydWN0dXJlKQorTnVtYmVyUHJvdG90eXBlOjpOdW1i
ZXJQcm90b3R5cGUoRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBOb25OdWxsUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+IHN0cnVjdHVyZSwgU3RydWN0dXJlKiBmdW5j
dGlvblN0cnVjdHVyZSkKICAgICA6IE51bWJlck9iamVjdChleGVjLT5nbG9iYWxEYXRhKCksIHN0
cnVjdHVyZSkKIHsKICAgICBzZXRJbnRlcm5hbFZhbHVlKGV4ZWMtPmdsb2JhbERhdGEoKSwganNO
dW1iZXIoMCkpOwogCiAgICAgLy8gVGhlIGNvbnN0cnVjdG9yIHdpbGwgYmUgYWRkZWQgbGF0ZXIs
IGFmdGVyIE51bWJlckNvbnN0cnVjdG9yIGhhcyBiZWVuIGNvbnN0cnVjdGVkCiAKLSAgICBwdXRE
aXJlY3RGdW5jdGlvbldpdGhvdXRUcmFuc2l0aW9uKGV4ZWMsIG5ldyAoZXhlYykgTmF0aXZlRnVu
Y3Rpb25XcmFwcGVyKGV4ZWMsIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlRnVuY3Rpb25TdHJ1Y3R1
cmUsIDEsIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS50b1N0cmluZywgbnVtYmVyUHJvdG9GdW5jVG9T
dHJpbmcpLCBEb250RW51bSk7Ci0gICAgcHV0RGlyZWN0RnVuY3Rpb25XaXRob3V0VHJhbnNpdGlv
bihleGVjLCBuZXcgKGV4ZWMpIE5hdGl2ZUZ1bmN0aW9uV3JhcHBlcihleGVjLCBnbG9iYWxPYmpl
Y3QsIHByb3RvdHlwZUZ1bmN0aW9uU3RydWN0dXJlLCAwLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCku
dG9Mb2NhbGVTdHJpbmcsIG51bWJlclByb3RvRnVuY1RvTG9jYWxlU3RyaW5nKSwgRG9udEVudW0p
OwotICAgIHB1dERpcmVjdEZ1bmN0aW9uV2l0aG91dFRyYW5zaXRpb24oZXhlYywgbmV3IChleGVj
KSBOYXRpdmVGdW5jdGlvbldyYXBwZXIoZXhlYywgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGVGdW5j
dGlvblN0cnVjdHVyZSwgMCwgZXhlYy0+cHJvcGVydHlOYW1lcygpLnZhbHVlT2YsIG51bWJlclBy
b3RvRnVuY1ZhbHVlT2YpLCBEb250RW51bSk7Ci0gICAgcHV0RGlyZWN0RnVuY3Rpb25XaXRob3V0
VHJhbnNpdGlvbihleGVjLCBuZXcgKGV4ZWMpIE5hdGl2ZUZ1bmN0aW9uV3JhcHBlcihleGVjLCBn
bG9iYWxPYmplY3QsIHByb3RvdHlwZUZ1bmN0aW9uU3RydWN0dXJlLCAxLCBleGVjLT5wcm9wZXJ0
eU5hbWVzKCkudG9GaXhlZCwgbnVtYmVyUHJvdG9GdW5jVG9GaXhlZCksIERvbnRFbnVtKTsKLSAg
ICBwdXREaXJlY3RGdW5jdGlvbldpdGhvdXRUcmFuc2l0aW9uKGV4ZWMsIG5ldyAoZXhlYykgTmF0
aXZlRnVuY3Rpb25XcmFwcGVyKGV4ZWMsIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlRnVuY3Rpb25T
dHJ1Y3R1cmUsIDEsIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS50b0V4cG9uZW50aWFsLCBudW1iZXJQ
cm90b0Z1bmNUb0V4cG9uZW50aWFsKSwgRG9udEVudW0pOwotICAgIHB1dERpcmVjdEZ1bmN0aW9u
V2l0aG91dFRyYW5zaXRpb24oZXhlYywgbmV3IChleGVjKSBOYXRpdmVGdW5jdGlvbldyYXBwZXIo
ZXhlYywgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGVGdW5jdGlvblN0cnVjdHVyZSwgMSwgZXhlYy0+
cHJvcGVydHlOYW1lcygpLnRvUHJlY2lzaW9uLCBudW1iZXJQcm90b0Z1bmNUb1ByZWNpc2lvbiks
IERvbnRFbnVtKTsKKyAgICBwdXREaXJlY3RGdW5jdGlvbldpdGhvdXRUcmFuc2l0aW9uKGV4ZWMs
IG5ldyAoZXhlYykgSlNGdW5jdGlvbihleGVjLCBnbG9iYWxPYmplY3QsIGZ1bmN0aW9uU3RydWN0
dXJlLCAxLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkudG9TdHJpbmcsIG51bWJlclByb3RvRnVuY1Rv
U3RyaW5nKSwgRG9udEVudW0pOworICAgIHB1dERpcmVjdEZ1bmN0aW9uV2l0aG91dFRyYW5zaXRp
b24oZXhlYywgbmV3IChleGVjKSBKU0Z1bmN0aW9uKGV4ZWMsIGdsb2JhbE9iamVjdCwgZnVuY3Rp
b25TdHJ1Y3R1cmUsIDAsIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS50b0xvY2FsZVN0cmluZywgbnVt
YmVyUHJvdG9GdW5jVG9Mb2NhbGVTdHJpbmcpLCBEb250RW51bSk7CisgICAgcHV0RGlyZWN0RnVu
Y3Rpb25XaXRob3V0VHJhbnNpdGlvbihleGVjLCBuZXcgKGV4ZWMpIEpTRnVuY3Rpb24oZXhlYywg
Z2xvYmFsT2JqZWN0LCBmdW5jdGlvblN0cnVjdHVyZSwgMCwgZXhlYy0+cHJvcGVydHlOYW1lcygp
LnZhbHVlT2YsIG51bWJlclByb3RvRnVuY1ZhbHVlT2YpLCBEb250RW51bSk7CisgICAgcHV0RGly
ZWN0RnVuY3Rpb25XaXRob3V0VHJhbnNpdGlvbihleGVjLCBuZXcgKGV4ZWMpIEpTRnVuY3Rpb24o
ZXhlYywgZ2xvYmFsT2JqZWN0LCBmdW5jdGlvblN0cnVjdHVyZSwgMSwgZXhlYy0+cHJvcGVydHlO
YW1lcygpLnRvRml4ZWQsIG51bWJlclByb3RvRnVuY1RvRml4ZWQpLCBEb250RW51bSk7CisgICAg
cHV0RGlyZWN0RnVuY3Rpb25XaXRob3V0VHJhbnNpdGlvbihleGVjLCBuZXcgKGV4ZWMpIEpTRnVu
Y3Rpb24oZXhlYywgZ2xvYmFsT2JqZWN0LCBmdW5jdGlvblN0cnVjdHVyZSwgMSwgZXhlYy0+cHJv
cGVydHlOYW1lcygpLnRvRXhwb25lbnRpYWwsIG51bWJlclByb3RvRnVuY1RvRXhwb25lbnRpYWwp
LCBEb250RW51bSk7CisgICAgcHV0RGlyZWN0RnVuY3Rpb25XaXRob3V0VHJhbnNpdGlvbihleGVj
LCBuZXcgKGV4ZWMpIEpTRnVuY3Rpb24oZXhlYywgZ2xvYmFsT2JqZWN0LCBmdW5jdGlvblN0cnVj
dHVyZSwgMSwgZXhlYy0+cHJvcGVydHlOYW1lcygpLnRvUHJlY2lzaW9uLCBudW1iZXJQcm90b0Z1
bmNUb1ByZWNpc2lvbiksIERvbnRFbnVtKTsKIH0KIAogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tIEZ1bmN0aW9ucyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL051bWJlclByb3RvdHlwZS5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL051bWJlclByb3RvdHlwZS5oCShyZXZp
c2lvbiA3OTE1OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL051bWJlclByb3Rv
dHlwZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNyw3ICsyNyw3IEBAIG5hbWVzcGFjZSBKU0Mgewog
CiAgICAgY2xhc3MgTnVtYmVyUHJvdG90eXBlIDogcHVibGljIE51bWJlck9iamVjdCB7CiAgICAg
cHVibGljOgotICAgICAgICBOdW1iZXJQcm90b3R5cGUoRXhlY1N0YXRlKiwgSlNHbG9iYWxPYmpl
Y3QqLCBOb25OdWxsUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+LCBTdHJ1Y3R1cmUqIHByb3RvdHlwZUZ1
bmN0aW9uU3RydWN0dXJlKTsKKyAgICAgICAgTnVtYmVyUHJvdG90eXBlKEV4ZWNTdGF0ZSosIEpT
R2xvYmFsT2JqZWN0KiwgTm9uTnVsbFBhc3NSZWZQdHI8U3RydWN0dXJlPiwgU3RydWN0dXJlKiBm
dW5jdGlvblN0cnVjdHVyZSk7CiAgICAgfTsKIAogfSAvLyBuYW1lc3BhY2UgSlNDCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RDb25zdHJ1Y3Rvci5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0Q29uc3RydWN0b3Iu
Y3BwCShyZXZpc2lvbiA3OTE1OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09i
amVjdENvbnN0cnVjdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjksNyArMjksNiBAQAogI2lu
Y2x1ZGUgIk9iamVjdFByb3RvdHlwZS5oIgogI2luY2x1ZGUgIlByb3BlcnR5RGVzY3JpcHRvci5o
IgogI2luY2x1ZGUgIlByb3BlcnR5TmFtZUFycmF5LmgiCi0jaW5jbHVkZSAiUHJvdG90eXBlRnVu
Y3Rpb24uaCIKIAogbmFtZXNwYWNlIEpTQyB7CiAKQEAgLTQzLDcgKzQyLDcgQEAgc3RhdGljIEVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgb2JqZQogc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgb2JqZWN0Q29uc3RydWN0b3JEZWZpbmVQcm9wZXJ0aWVzKEV4ZWNTdGF0ZSop
Owogc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgb2JqZWN0Q29uc3RydWN0b3JD
cmVhdGUoRXhlY1N0YXRlKik7CiAKLU9iamVjdENvbnN0cnVjdG9yOjpPYmplY3RDb25zdHJ1Y3Rv
cihFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIE5vbk51bGxQ
YXNzUmVmUHRyPFN0cnVjdHVyZT4gc3RydWN0dXJlLCBPYmplY3RQcm90b3R5cGUqIG9iamVjdFBy
b3RvdHlwZSwgU3RydWN0dXJlKiBwcm90b3R5cGVGdW5jdGlvblN0cnVjdHVyZSkKK09iamVjdENv
bnN0cnVjdG9yOjpPYmplY3RDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIE5vbk51bGxQYXNzUmVmUHRyPFN0cnVjdHVyZT4gc3RydWN0dXJl
LCBPYmplY3RQcm90b3R5cGUqIG9iamVjdFByb3RvdHlwZSwgU3RydWN0dXJlKiBmdW5jdGlvblN0
cnVjdHVyZSkKICAgICA6IEludGVybmFsRnVuY3Rpb24oJmV4ZWMtPmdsb2JhbERhdGEoKSwgZ2xv
YmFsT2JqZWN0LCBzdHJ1Y3R1cmUsIElkZW50aWZpZXIoZXhlYywgIk9iamVjdCIpKQogewogICAg
IC8vIEVDTUEgMTUuMi4zLjEKQEAgLTUyLDEzICs1MSwxMyBAQCBPYmplY3RDb25zdHJ1Y3Rvcjo6
T2JqZWN0Q29uc3RydWN0b3IoRXhlCiAgICAgLy8gbm8uIG9mIGFyZ3VtZW50cyBmb3IgY29uc3Ry
dWN0b3IKICAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbihleGVjLT5nbG9iYWxEYXRhKCks
IGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5sZW5ndGgsIGpzTnVtYmVyKDEpLCBSZWFkT25seSB8IERv
bnRFbnVtIHwgRG9udERlbGV0ZSk7CiAgICAgCi0gICAgcHV0RGlyZWN0RnVuY3Rpb25XaXRob3V0
VHJhbnNpdGlvbihleGVjLCBuZXcgKGV4ZWMpIE5hdGl2ZUZ1bmN0aW9uV3JhcHBlcihleGVjLCBn
bG9iYWxPYmplY3QsIHByb3RvdHlwZUZ1bmN0aW9uU3RydWN0dXJlLCAxLCBleGVjLT5wcm9wZXJ0
eU5hbWVzKCkuZ2V0UHJvdG90eXBlT2YsIG9iamVjdENvbnN0cnVjdG9yR2V0UHJvdG90eXBlT2Yp
LCBEb250RW51bSk7Ci0gICAgcHV0RGlyZWN0RnVuY3Rpb25XaXRob3V0VHJhbnNpdGlvbihleGVj
LCBuZXcgKGV4ZWMpIE5hdGl2ZUZ1bmN0aW9uV3JhcHBlcihleGVjLCBnbG9iYWxPYmplY3QsIHBy
b3RvdHlwZUZ1bmN0aW9uU3RydWN0dXJlLCAyLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkuZ2V0T3du
UHJvcGVydHlEZXNjcmlwdG9yLCBvYmplY3RDb25zdHJ1Y3RvckdldE93blByb3BlcnR5RGVzY3Jp
cHRvciksIERvbnRFbnVtKTsKLSAgICBwdXREaXJlY3RGdW5jdGlvbldpdGhvdXRUcmFuc2l0aW9u
KGV4ZWMsIG5ldyAoZXhlYykgTmF0aXZlRnVuY3Rpb25XcmFwcGVyKGV4ZWMsIGdsb2JhbE9iamVj
dCwgcHJvdG90eXBlRnVuY3Rpb25TdHJ1Y3R1cmUsIDEsIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5n
ZXRPd25Qcm9wZXJ0eU5hbWVzLCBvYmplY3RDb25zdHJ1Y3RvckdldE93blByb3BlcnR5TmFtZXMp
LCBEb250RW51bSk7Ci0gICAgcHV0RGlyZWN0RnVuY3Rpb25XaXRob3V0VHJhbnNpdGlvbihleGVj
LCBuZXcgKGV4ZWMpIE5hdGl2ZUZ1bmN0aW9uV3JhcHBlcihleGVjLCBnbG9iYWxPYmplY3QsIHBy
b3RvdHlwZUZ1bmN0aW9uU3RydWN0dXJlLCAxLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkua2V5cywg
b2JqZWN0Q29uc3RydWN0b3JLZXlzKSwgRG9udEVudW0pOwotICAgIHB1dERpcmVjdEZ1bmN0aW9u
V2l0aG91dFRyYW5zaXRpb24oZXhlYywgbmV3IChleGVjKSBOYXRpdmVGdW5jdGlvbldyYXBwZXIo
ZXhlYywgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGVGdW5jdGlvblN0cnVjdHVyZSwgMywgZXhlYy0+
cHJvcGVydHlOYW1lcygpLmRlZmluZVByb3BlcnR5LCBvYmplY3RDb25zdHJ1Y3RvckRlZmluZVBy
b3BlcnR5KSwgRG9udEVudW0pOwotICAgIHB1dERpcmVjdEZ1bmN0aW9uV2l0aG91dFRyYW5zaXRp
b24oZXhlYywgbmV3IChleGVjKSBOYXRpdmVGdW5jdGlvbldyYXBwZXIoZXhlYywgZ2xvYmFsT2Jq
ZWN0LCBwcm90b3R5cGVGdW5jdGlvblN0cnVjdHVyZSwgMiwgZXhlYy0+cHJvcGVydHlOYW1lcygp
LmRlZmluZVByb3BlcnRpZXMsIG9iamVjdENvbnN0cnVjdG9yRGVmaW5lUHJvcGVydGllcyksIERv
bnRFbnVtKTsKLSAgICBwdXREaXJlY3RGdW5jdGlvbldpdGhvdXRUcmFuc2l0aW9uKGV4ZWMsIG5l
dyAoZXhlYykgTmF0aXZlRnVuY3Rpb25XcmFwcGVyKGV4ZWMsIGdsb2JhbE9iamVjdCwgcHJvdG90
eXBlRnVuY3Rpb25TdHJ1Y3R1cmUsIDIsIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5jcmVhdGUsIG9i
amVjdENvbnN0cnVjdG9yQ3JlYXRlKSwgRG9udEVudW0pOworICAgIHB1dERpcmVjdEZ1bmN0aW9u
V2l0aG91dFRyYW5zaXRpb24oZXhlYywgbmV3IChleGVjKSBKU0Z1bmN0aW9uKGV4ZWMsIGdsb2Jh
bE9iamVjdCwgZnVuY3Rpb25TdHJ1Y3R1cmUsIDEsIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5nZXRQ
cm90b3R5cGVPZiwgb2JqZWN0Q29uc3RydWN0b3JHZXRQcm90b3R5cGVPZiksIERvbnRFbnVtKTsK
KyAgICBwdXREaXJlY3RGdW5jdGlvbldpdGhvdXRUcmFuc2l0aW9uKGV4ZWMsIG5ldyAoZXhlYykg
SlNGdW5jdGlvbihleGVjLCBnbG9iYWxPYmplY3QsIGZ1bmN0aW9uU3RydWN0dXJlLCAyLCBleGVj
LT5wcm9wZXJ0eU5hbWVzKCkuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yLCBvYmplY3RDb25zdHJ1
Y3RvckdldE93blByb3BlcnR5RGVzY3JpcHRvciksIERvbnRFbnVtKTsKKyAgICBwdXREaXJlY3RG
dW5jdGlvbldpdGhvdXRUcmFuc2l0aW9uKGV4ZWMsIG5ldyAoZXhlYykgSlNGdW5jdGlvbihleGVj
LCBnbG9iYWxPYmplY3QsIGZ1bmN0aW9uU3RydWN0dXJlLCAxLCBleGVjLT5wcm9wZXJ0eU5hbWVz
KCkuZ2V0T3duUHJvcGVydHlOYW1lcywgb2JqZWN0Q29uc3RydWN0b3JHZXRPd25Qcm9wZXJ0eU5h
bWVzKSwgRG9udEVudW0pOworICAgIHB1dERpcmVjdEZ1bmN0aW9uV2l0aG91dFRyYW5zaXRpb24o
ZXhlYywgbmV3IChleGVjKSBKU0Z1bmN0aW9uKGV4ZWMsIGdsb2JhbE9iamVjdCwgZnVuY3Rpb25T
dHJ1Y3R1cmUsIDEsIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5rZXlzLCBvYmplY3RDb25zdHJ1Y3Rv
cktleXMpLCBEb250RW51bSk7CisgICAgcHV0RGlyZWN0RnVuY3Rpb25XaXRob3V0VHJhbnNpdGlv
bihleGVjLCBuZXcgKGV4ZWMpIEpTRnVuY3Rpb24oZXhlYywgZ2xvYmFsT2JqZWN0LCBmdW5jdGlv
blN0cnVjdHVyZSwgMywgZXhlYy0+cHJvcGVydHlOYW1lcygpLmRlZmluZVByb3BlcnR5LCBvYmpl
Y3RDb25zdHJ1Y3RvckRlZmluZVByb3BlcnR5KSwgRG9udEVudW0pOworICAgIHB1dERpcmVjdEZ1
bmN0aW9uV2l0aG91dFRyYW5zaXRpb24oZXhlYywgbmV3IChleGVjKSBKU0Z1bmN0aW9uKGV4ZWMs
IGdsb2JhbE9iamVjdCwgZnVuY3Rpb25TdHJ1Y3R1cmUsIDIsIGV4ZWMtPnByb3BlcnR5TmFtZXMo
KS5kZWZpbmVQcm9wZXJ0aWVzLCBvYmplY3RDb25zdHJ1Y3RvckRlZmluZVByb3BlcnRpZXMpLCBE
b250RW51bSk7CisgICAgcHV0RGlyZWN0RnVuY3Rpb25XaXRob3V0VHJhbnNpdGlvbihleGVjLCBu
ZXcgKGV4ZWMpIEpTRnVuY3Rpb24oZXhlYywgZ2xvYmFsT2JqZWN0LCBmdW5jdGlvblN0cnVjdHVy
ZSwgMiwgZXhlYy0+cHJvcGVydHlOYW1lcygpLmNyZWF0ZSwgb2JqZWN0Q29uc3RydWN0b3JDcmVh
dGUpLCBEb250RW51bSk7CiB9CiAKIC8vIEVDTUEgMTUuMi4yCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9PYmplY3RDb25zdHJ1Y3Rvci5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09iamVjdENvbnN0cnVjdG9yLmgJKHJldmlzaW9uIDc5
MTU5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0Q29uc3RydWN0b3Iu
aAkod29ya2luZyBjb3B5KQpAQCAtMjksNyArMjksNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAg
IGNsYXNzIE9iamVjdENvbnN0cnVjdG9yIDogcHVibGljIEludGVybmFsRnVuY3Rpb24gewogICAg
IHB1YmxpYzoKLSAgICAgICAgT2JqZWN0Q29uc3RydWN0b3IoRXhlY1N0YXRlKiwgSlNHbG9iYWxP
YmplY3QqLCBOb25OdWxsUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+LCBPYmplY3RQcm90b3R5cGUqLCBT
dHJ1Y3R1cmUqIHByb3RvdHlwZUZ1bmN0aW9uU3RydWN0dXJlKTsKKyAgICAgICAgT2JqZWN0Q29u
c3RydWN0b3IoRXhlY1N0YXRlKiwgSlNHbG9iYWxPYmplY3QqLCBOb25OdWxsUGFzc1JlZlB0cjxT
dHJ1Y3R1cmU+LCBPYmplY3RQcm90b3R5cGUqLCBTdHJ1Y3R1cmUqIGZ1bmN0aW9uU3RydWN0dXJl
KTsKIAogICAgIHByaXZhdGU6CiAgICAgICAgIHZpcnR1YWwgQ29uc3RydWN0VHlwZSBnZXRDb25z
dHJ1Y3REYXRhKENvbnN0cnVjdERhdGEmKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL09iamVjdFByb3RvdHlwZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvT2JqZWN0UHJvdG90eXBlLmNwcAkocmV2aXNpb24gNzkxNTkpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RQcm90b3R5cGUuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0yNSw3ICsyNSw2IEBACiAjaW5jbHVkZSAiSlNGdW5jdGlvbi5oIgogI2luY2x1
ZGUgIkpTU3RyaW5nLmgiCiAjaW5jbHVkZSAiSlNTdHJpbmdCdWlsZGVyLmgiCi0jaW5jbHVkZSAi
UHJvdG90eXBlRnVuY3Rpb24uaCIKIAogbmFtZXNwYWNlIEpTQyB7CiAKQEAgLTQxLDIyICs0MCwy
MiBAQCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmplCiBzdGF0aWMgRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RQcm90b0Z1bmNQcm9wZXJ0eUlzRW51bWVy
YWJsZShFeGVjU3RhdGUqKTsKIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9i
amVjdFByb3RvRnVuY1RvTG9jYWxlU3RyaW5nKEV4ZWNTdGF0ZSopOwogCi1PYmplY3RQcm90b3R5
cGU6Ok9iamVjdFByb3RvdHlwZShFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIE5vbk51bGxQYXNzUmVmUHRyPFN0cnVjdHVyZT4gc3R1Y3R1cmUsIFN0cnVjdHVy
ZSogcHJvdG90eXBlRnVuY3Rpb25TdHJ1Y3R1cmUpCitPYmplY3RQcm90b3R5cGU6Ok9iamVjdFBy
b3RvdHlwZShFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIE5v
bk51bGxQYXNzUmVmUHRyPFN0cnVjdHVyZT4gc3R1Y3R1cmUsIFN0cnVjdHVyZSogZnVuY3Rpb25T
dHJ1Y3R1cmUpCiAgICAgOiBKU05vbkZpbmFsT2JqZWN0KHN0dWN0dXJlKQogICAgICwgbV9oYXNO
b1Byb3BlcnRpZXNXaXRoVUludDMyTmFtZXModHJ1ZSkKIHsKLSAgICBwdXREaXJlY3RGdW5jdGlv
bldpdGhvdXRUcmFuc2l0aW9uKGV4ZWMsIG5ldyAoZXhlYykgTmF0aXZlRnVuY3Rpb25XcmFwcGVy
KGV4ZWMsIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlRnVuY3Rpb25TdHJ1Y3R1cmUsIDAsIGV4ZWMt
PnByb3BlcnR5TmFtZXMoKS50b1N0cmluZywgb2JqZWN0UHJvdG9GdW5jVG9TdHJpbmcpLCBEb250
RW51bSk7Ci0gICAgcHV0RGlyZWN0RnVuY3Rpb25XaXRob3V0VHJhbnNpdGlvbihleGVjLCBuZXcg
KGV4ZWMpIE5hdGl2ZUZ1bmN0aW9uV3JhcHBlcihleGVjLCBnbG9iYWxPYmplY3QsIHByb3RvdHlw
ZUZ1bmN0aW9uU3RydWN0dXJlLCAwLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkudG9Mb2NhbGVTdHJp
bmcsIG9iamVjdFByb3RvRnVuY1RvTG9jYWxlU3RyaW5nKSwgRG9udEVudW0pOwotICAgIHB1dERp
cmVjdEZ1bmN0aW9uV2l0aG91dFRyYW5zaXRpb24oZXhlYywgbmV3IChleGVjKSBOYXRpdmVGdW5j
dGlvbldyYXBwZXIoZXhlYywgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGVGdW5jdGlvblN0cnVjdHVy
ZSwgMCwgZXhlYy0+cHJvcGVydHlOYW1lcygpLnZhbHVlT2YsIG9iamVjdFByb3RvRnVuY1ZhbHVl
T2YpLCBEb250RW51bSk7Ci0gICAgcHV0RGlyZWN0RnVuY3Rpb25XaXRob3V0VHJhbnNpdGlvbihl
eGVjLCBuZXcgKGV4ZWMpIE5hdGl2ZUZ1bmN0aW9uV3JhcHBlcihleGVjLCBnbG9iYWxPYmplY3Qs
IHByb3RvdHlwZUZ1bmN0aW9uU3RydWN0dXJlLCAxLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkuaGFz
T3duUHJvcGVydHksIG9iamVjdFByb3RvRnVuY0hhc093blByb3BlcnR5KSwgRG9udEVudW0pOwot
ICAgIHB1dERpcmVjdEZ1bmN0aW9uV2l0aG91dFRyYW5zaXRpb24oZXhlYywgbmV3IChleGVjKSBO
YXRpdmVGdW5jdGlvbldyYXBwZXIoZXhlYywgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGVGdW5jdGlv
blN0cnVjdHVyZSwgMSwgZXhlYy0+cHJvcGVydHlOYW1lcygpLnByb3BlcnR5SXNFbnVtZXJhYmxl
LCBvYmplY3RQcm90b0Z1bmNQcm9wZXJ0eUlzRW51bWVyYWJsZSksIERvbnRFbnVtKTsKLSAgICBw
dXREaXJlY3RGdW5jdGlvbldpdGhvdXRUcmFuc2l0aW9uKGV4ZWMsIG5ldyAoZXhlYykgTmF0aXZl
RnVuY3Rpb25XcmFwcGVyKGV4ZWMsIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlRnVuY3Rpb25TdHJ1
Y3R1cmUsIDEsIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5pc1Byb3RvdHlwZU9mLCBvYmplY3RQcm90
b0Z1bmNJc1Byb3RvdHlwZU9mKSwgRG9udEVudW0pOworICAgIHB1dERpcmVjdEZ1bmN0aW9uV2l0
aG91dFRyYW5zaXRpb24oZXhlYywgbmV3IChleGVjKSBKU0Z1bmN0aW9uKGV4ZWMsIGdsb2JhbE9i
amVjdCwgZnVuY3Rpb25TdHJ1Y3R1cmUsIDAsIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS50b1N0cmlu
Zywgb2JqZWN0UHJvdG9GdW5jVG9TdHJpbmcpLCBEb250RW51bSk7CisgICAgcHV0RGlyZWN0RnVu
Y3Rpb25XaXRob3V0VHJhbnNpdGlvbihleGVjLCBuZXcgKGV4ZWMpIEpTRnVuY3Rpb24oZXhlYywg
Z2xvYmFsT2JqZWN0LCBmdW5jdGlvblN0cnVjdHVyZSwgMCwgZXhlYy0+cHJvcGVydHlOYW1lcygp
LnRvTG9jYWxlU3RyaW5nLCBvYmplY3RQcm90b0Z1bmNUb0xvY2FsZVN0cmluZyksIERvbnRFbnVt
KTsKKyAgICBwdXREaXJlY3RGdW5jdGlvbldpdGhvdXRUcmFuc2l0aW9uKGV4ZWMsIG5ldyAoZXhl
YykgSlNGdW5jdGlvbihleGVjLCBnbG9iYWxPYmplY3QsIGZ1bmN0aW9uU3RydWN0dXJlLCAwLCBl
eGVjLT5wcm9wZXJ0eU5hbWVzKCkudmFsdWVPZiwgb2JqZWN0UHJvdG9GdW5jVmFsdWVPZiksIERv
bnRFbnVtKTsKKyAgICBwdXREaXJlY3RGdW5jdGlvbldpdGhvdXRUcmFuc2l0aW9uKGV4ZWMsIG5l
dyAoZXhlYykgSlNGdW5jdGlvbihleGVjLCBnbG9iYWxPYmplY3QsIGZ1bmN0aW9uU3RydWN0dXJl
LCAxLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkuaGFzT3duUHJvcGVydHksIG9iamVjdFByb3RvRnVu
Y0hhc093blByb3BlcnR5KSwgRG9udEVudW0pOworICAgIHB1dERpcmVjdEZ1bmN0aW9uV2l0aG91
dFRyYW5zaXRpb24oZXhlYywgbmV3IChleGVjKSBKU0Z1bmN0aW9uKGV4ZWMsIGdsb2JhbE9iamVj
dCwgZnVuY3Rpb25TdHJ1Y3R1cmUsIDEsIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5wcm9wZXJ0eUlz
RW51bWVyYWJsZSwgb2JqZWN0UHJvdG9GdW5jUHJvcGVydHlJc0VudW1lcmFibGUpLCBEb250RW51
bSk7CisgICAgcHV0RGlyZWN0RnVuY3Rpb25XaXRob3V0VHJhbnNpdGlvbihleGVjLCBuZXcgKGV4
ZWMpIEpTRnVuY3Rpb24oZXhlYywgZ2xvYmFsT2JqZWN0LCBmdW5jdGlvblN0cnVjdHVyZSwgMSwg
ZXhlYy0+cHJvcGVydHlOYW1lcygpLmlzUHJvdG90eXBlT2YsIG9iamVjdFByb3RvRnVuY0lzUHJv
dG90eXBlT2YpLCBEb250RW51bSk7CiAKICAgICAvLyBNb3ppbGxhIGV4dGVuc2lvbnMKLSAgICBw
dXREaXJlY3RGdW5jdGlvbldpdGhvdXRUcmFuc2l0aW9uKGV4ZWMsIG5ldyAoZXhlYykgTmF0aXZl
RnVuY3Rpb25XcmFwcGVyKGV4ZWMsIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlRnVuY3Rpb25TdHJ1
Y3R1cmUsIDIsIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5fX2RlZmluZUdldHRlcl9fLCBvYmplY3RQ
cm90b0Z1bmNEZWZpbmVHZXR0ZXIpLCBEb250RW51bSk7Ci0gICAgcHV0RGlyZWN0RnVuY3Rpb25X
aXRob3V0VHJhbnNpdGlvbihleGVjLCBuZXcgKGV4ZWMpIE5hdGl2ZUZ1bmN0aW9uV3JhcHBlcihl
eGVjLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZUZ1bmN0aW9uU3RydWN0dXJlLCAyLCBleGVjLT5w
cm9wZXJ0eU5hbWVzKCkuX19kZWZpbmVTZXR0ZXJfXywgb2JqZWN0UHJvdG9GdW5jRGVmaW5lU2V0
dGVyKSwgRG9udEVudW0pOwotICAgIHB1dERpcmVjdEZ1bmN0aW9uV2l0aG91dFRyYW5zaXRpb24o
ZXhlYywgbmV3IChleGVjKSBOYXRpdmVGdW5jdGlvbldyYXBwZXIoZXhlYywgZ2xvYmFsT2JqZWN0
LCBwcm90b3R5cGVGdW5jdGlvblN0cnVjdHVyZSwgMSwgZXhlYy0+cHJvcGVydHlOYW1lcygpLl9f
bG9va3VwR2V0dGVyX18sIG9iamVjdFByb3RvRnVuY0xvb2t1cEdldHRlciksIERvbnRFbnVtKTsK
LSAgICBwdXREaXJlY3RGdW5jdGlvbldpdGhvdXRUcmFuc2l0aW9uKGV4ZWMsIG5ldyAoZXhlYykg
TmF0aXZlRnVuY3Rpb25XcmFwcGVyKGV4ZWMsIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlRnVuY3Rp
b25TdHJ1Y3R1cmUsIDEsIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5fX2xvb2t1cFNldHRlcl9fLCBv
YmplY3RQcm90b0Z1bmNMb29rdXBTZXR0ZXIpLCBEb250RW51bSk7CisgICAgcHV0RGlyZWN0RnVu
Y3Rpb25XaXRob3V0VHJhbnNpdGlvbihleGVjLCBuZXcgKGV4ZWMpIEpTRnVuY3Rpb24oZXhlYywg
Z2xvYmFsT2JqZWN0LCBmdW5jdGlvblN0cnVjdHVyZSwgMiwgZXhlYy0+cHJvcGVydHlOYW1lcygp
Ll9fZGVmaW5lR2V0dGVyX18sIG9iamVjdFByb3RvRnVuY0RlZmluZUdldHRlciksIERvbnRFbnVt
KTsKKyAgICBwdXREaXJlY3RGdW5jdGlvbldpdGhvdXRUcmFuc2l0aW9uKGV4ZWMsIG5ldyAoZXhl
YykgSlNGdW5jdGlvbihleGVjLCBnbG9iYWxPYmplY3QsIGZ1bmN0aW9uU3RydWN0dXJlLCAyLCBl
eGVjLT5wcm9wZXJ0eU5hbWVzKCkuX19kZWZpbmVTZXR0ZXJfXywgb2JqZWN0UHJvdG9GdW5jRGVm
aW5lU2V0dGVyKSwgRG9udEVudW0pOworICAgIHB1dERpcmVjdEZ1bmN0aW9uV2l0aG91dFRyYW5z
aXRpb24oZXhlYywgbmV3IChleGVjKSBKU0Z1bmN0aW9uKGV4ZWMsIGdsb2JhbE9iamVjdCwgZnVu
Y3Rpb25TdHJ1Y3R1cmUsIDEsIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5fX2xvb2t1cEdldHRlcl9f
LCBvYmplY3RQcm90b0Z1bmNMb29rdXBHZXR0ZXIpLCBEb250RW51bSk7CisgICAgcHV0RGlyZWN0
RnVuY3Rpb25XaXRob3V0VHJhbnNpdGlvbihleGVjLCBuZXcgKGV4ZWMpIEpTRnVuY3Rpb24oZXhl
YywgZ2xvYmFsT2JqZWN0LCBmdW5jdGlvblN0cnVjdHVyZSwgMSwgZXhlYy0+cHJvcGVydHlOYW1l
cygpLl9fbG9va3VwU2V0dGVyX18sIG9iamVjdFByb3RvRnVuY0xvb2t1cFNldHRlciksIERvbnRF
bnVtKTsKIH0KIAogdm9pZCBPYmplY3RQcm90b3R5cGU6OnB1dChFeGVjU3RhdGUqIGV4ZWMsIGNv
bnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgUHV0UHJvcGVydHlT
bG90JiBzbG90KQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0UHJv
dG90eXBlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2Jq
ZWN0UHJvdG90eXBlLmgJKHJldmlzaW9uIDc5MTU5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvT2JqZWN0UHJvdG90eXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTI3LDcgKzI3LDcg
QEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBPYmplY3RQcm90b3R5cGUgOiBwdWJsaWMg
SlNOb25GaW5hbE9iamVjdCB7CiAgICAgcHVibGljOgotICAgICAgICBPYmplY3RQcm90b3R5cGUo
RXhlY1N0YXRlKiwgSlNHbG9iYWxPYmplY3QqLCBOb25OdWxsUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+
LCBTdHJ1Y3R1cmUqIHByb3RvdHlwZUZ1bmN0aW9uU3RydWN0dXJlKTsKKyAgICAgICAgT2JqZWN0
UHJvdG90eXBlKEV4ZWNTdGF0ZSosIEpTR2xvYmFsT2JqZWN0KiwgTm9uTnVsbFBhc3NSZWZQdHI8
U3RydWN0dXJlPiwgU3RydWN0dXJlKiBmdW5jdGlvblN0cnVjdHVyZSk7CiAKICAgICBwcml2YXRl
OgogICAgICAgICB2aXJ0dWFsIHZvaWQgcHV0KEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXIm
LCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1Byb3RvdHlwZUZ1bmN0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9Qcm90b3R5cGVGdW5jdGlvbi5jcHAJKHJldmlzaW9uIDc5MTU5
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvdG90eXBlRnVuY3Rpb24uY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDU3ICswLDAgQEAKLS8qCi0gKiAgQ29weXJpZ2h0IChDKSAx
OTk5LTIwMDIgSGFycmkgUG9ydGVuIChwb3J0ZW5Aa2RlLm9yZykKLSAqICBDb3B5cmlnaHQgKEMp
IDIwMDEgUGV0ZXIgS2VsbHkgKHBta0Bwb3N0LmNvbSkKLSAqICBDb3B5cmlnaHQgKEMpIDIwMDMs
IDIwMDQsIDIwMDUsIDIwMDYsIDIwMDcsIDIwMDggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgotICogIENvcHlyaWdodCAoQykgMjAwNyBDYW1lcm9uIFp3YXJpY2ggKGN3endhcmljaEB1
d2F0ZXJsb28uY2EpCi0gKiAgQ29weXJpZ2h0IChDKSAyMDA3IE1ha3MgT3Jsb3ZpY2gKLSAqCi0g
KiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0
IGFuZC9vcgotICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5
IEdlbmVyYWwgUHVibGljCi0gKiAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29m
dHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCi0gKiAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBv
ciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotICoKLSAqICBUaGlzIGxpYnJh
cnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAq
ICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJy
YW50eSBvZgotICogIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIg
UFVSUE9TRS4gIFNlZSB0aGUgR05VCi0gKiAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl
IGZvciBtb3JlIGRldGFpbHMuCi0gKgotICogIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNv
cHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSAqICBhbG9uZyB3
aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0
ZSB0bwotICogIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGlu
IFN0cmVldCwgRmlmdGggRmxvb3IsCi0gKiAgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCi0g
KgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJQcm90b3R5cGVGdW5jdGlv
bi5oIgotCi0jaW5jbHVkZSAiSlNHbG9iYWxPYmplY3QuaCIKLSNpbmNsdWRlIDx3dGYvQXNzZXJ0
aW9ucy5oPgotCi1uYW1lc3BhY2UgSlNDIHsKLQotQVNTRVJUX0NMQVNTX0ZJVFNfSU5fQ0VMTChQ
cm90b3R5cGVGdW5jdGlvbik7Ci0KLVByb3RvdHlwZUZ1bmN0aW9uOjpQcm90b3R5cGVGdW5jdGlv
bihFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGludCBsZW5n
dGgsIGNvbnN0IElkZW50aWZpZXImIG5hbWUsIE5hdGl2ZUZ1bmN0aW9uIGZ1bmN0aW9uKQotICAg
IDogSW50ZXJuYWxGdW5jdGlvbigmZXhlYy0+Z2xvYmFsRGF0YSgpLCBnbG9iYWxPYmplY3QsIGV4
ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKS0+cHJvdG90eXBlRnVuY3Rpb25TdHJ1Y3R1cmUoKSwg
bmFtZSkKLSAgICAsIG1fZnVuY3Rpb24oZnVuY3Rpb24pCi17Ci0gICAgQVNTRVJUX0FSRyhmdW5j
dGlvbiwgZnVuY3Rpb24pOwotICAgIHB1dERpcmVjdChleGVjLT5nbG9iYWxEYXRhKCksIGV4ZWMt
PnByb3BlcnR5TmFtZXMoKS5sZW5ndGgsIGpzTnVtYmVyKGxlbmd0aCksIERvbnREZWxldGUgfCBS
ZWFkT25seSB8IERvbnRFbnVtKTsKLX0KLQotUHJvdG90eXBlRnVuY3Rpb246OlByb3RvdHlwZUZ1
bmN0aW9uKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgTm9u
TnVsbFBhc3NSZWZQdHI8U3RydWN0dXJlPiBwcm90b3R5cGVGdW5jdGlvblN0cnVjdHVyZSwgaW50
IGxlbmd0aCwgY29uc3QgSWRlbnRpZmllciYgbmFtZSwgTmF0aXZlRnVuY3Rpb24gZnVuY3Rpb24p
Ci0gICAgOiBJbnRlcm5hbEZ1bmN0aW9uKCZleGVjLT5nbG9iYWxEYXRhKCksIGdsb2JhbE9iamVj
dCwgcHJvdG90eXBlRnVuY3Rpb25TdHJ1Y3R1cmUsIG5hbWUpCi0gICAgLCBtX2Z1bmN0aW9uKGZ1
bmN0aW9uKQotewotICAgIEFTU0VSVF9BUkcoZnVuY3Rpb24sIGZ1bmN0aW9uKTsKLSAgICBwdXRE
aXJlY3QoZXhlYy0+Z2xvYmFsRGF0YSgpLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkubGVuZ3RoLCBq
c051bWJlcihsZW5ndGgpLCBEb250RGVsZXRlIHwgUmVhZE9ubHkgfCBEb250RW51bSk7Ci19Ci0g
ICAgCi1DYWxsVHlwZSBQcm90b3R5cGVGdW5jdGlvbjo6Z2V0Q2FsbERhdGEoQ2FsbERhdGEmIGNh
bGxEYXRhKQotewotICAgIGNhbGxEYXRhLm5hdGl2ZS5mdW5jdGlvbiA9IG1fZnVuY3Rpb247Ci0g
ICAgcmV0dXJuIENhbGxUeXBlSG9zdDsKLX0KLQotfSAvLyBuYW1lc3BhY2UgSlNDCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm90b3R5cGVGdW5jdGlvbi5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3RvdHlwZUZ1bmN0aW9uLmgJ
KHJldmlzaW9uIDc5MTU5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvdG90
eXBlRnVuY3Rpb24uaAkod29ya2luZyBjb3B5KQpAQCAtMSw0NSArMCwwIEBACi0vKgotICogIENv
cHlyaWdodCAoQykgMTk5OS0yMDAwIEhhcnJpIFBvcnRlbiAocG9ydGVuQGtkZS5vcmcpCi0gKiAg
Q29weXJpZ2h0IChDKSAyMDAzLCAyMDA2LCAyMDA3LCAyMDA4IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KLSAqICBDb3B5cmlnaHQgKEMpIDIwMDcgQ2FtZXJvbiBad2FyaWNoIChjd3p3
YXJpY2hAdXdhdGVybG9vLmNhKQotICogIENvcHlyaWdodCAoQykgMjAwNyBNYWtzIE9ybG92aWNo
Ci0gKgotICogIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJp
YnV0ZSBpdCBhbmQvb3IKLSAqICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUg
TGlicmFyeSBHZW5lcmFsIFB1YmxpYwotICogIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBG
cmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgotICogIHZlcnNpb24gMiBvZiB0aGUgTGlj
ZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSAqCi0gKiAgVGhp
cyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2Vm
dWwsCi0gKiAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxp
ZWQgd2FycmFudHkgb2YKLSAqICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotICogIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMg
TGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotICoKLSAqICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2
ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0gKiAg
YWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5v
dCwgd3JpdGUgdG8KLSAqICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBG
cmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAotICogIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwg
VVNBLgotICoKLSAqLwotCi0jaWZuZGVmIFByb3RvdHlwZUZ1bmN0aW9uX2gKLSNkZWZpbmUgUHJv
dG90eXBlRnVuY3Rpb25faAotCi0jaW5jbHVkZSAiSW50ZXJuYWxGdW5jdGlvbi5oIgotI2luY2x1
ZGUgIkNhbGxEYXRhLmgiCi0KLW5hbWVzcGFjZSBKU0MgewotCi0gICAgY2xhc3MgUHJvdG90eXBl
RnVuY3Rpb24gOiBwdWJsaWMgSW50ZXJuYWxGdW5jdGlvbiB7Ci0gICAgcHVibGljOgotICAgICAg
ICBQcm90b3R5cGVGdW5jdGlvbihFeGVjU3RhdGUqLCBKU0dsb2JhbE9iamVjdCosIGludCBsZW5n
dGgsIGNvbnN0IElkZW50aWZpZXImLCBOYXRpdmVGdW5jdGlvbik7Ci0gICAgICAgIFByb3RvdHlw
ZUZ1bmN0aW9uKEV4ZWNTdGF0ZSosIEpTR2xvYmFsT2JqZWN0KiwgTm9uTnVsbFBhc3NSZWZQdHI8
U3RydWN0dXJlPiwgaW50IGxlbmd0aCwgY29uc3QgSWRlbnRpZmllciYsIE5hdGl2ZUZ1bmN0aW9u
KTsKLQotICAgIHByaXZhdGU6Ci0gICAgICAgIHZpcnR1YWwgQ2FsbFR5cGUgZ2V0Q2FsbERhdGEo
Q2FsbERhdGEmKTsKLQotICAgICAgICBjb25zdCBOYXRpdmVGdW5jdGlvbiBtX2Z1bmN0aW9uOwot
ICAgIH07Ci0KLX0gLy8gbmFtZXNwYWNlIEpTQwotCi0jZW5kaWYgLy8gUHJvdG90eXBlRnVuY3Rp
b25faApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwUHJvdG90eXBl
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBQ
cm90b3R5cGUuY3BwCShyZXZpc2lvbiA3OTE1OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1JlZ0V4cFByb3RvdHlwZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMwLDcgKzMwLDYg
QEAKICNpbmNsdWRlICJKU1N0cmluZ0J1aWxkZXIuaCIKICNpbmNsdWRlICJKU1ZhbHVlLmgiCiAj
aW5jbHVkZSAiT2JqZWN0UHJvdG90eXBlLmgiCi0jaW5jbHVkZSAiUHJvdG90eXBlRnVuY3Rpb24u
aCIKICNpbmNsdWRlICJSZWdFeHBPYmplY3QuaCIKICNpbmNsdWRlICJSZWdFeHAuaCIKICNpbmNs
dWRlICJSZWdFeHBDYWNoZS5oIgpAQCAtNDgsMTMgKzQ3LDEzIEBAIHN0YXRpYyBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIHJlZ0UKIAogLy8gRUNNQSAxNS4xMC41CiAKLVJlZ0V4cFByb3Rv
dHlwZTo6UmVnRXhwUHJvdG90eXBlKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgTm9uTnVsbFBhc3NSZWZQdHI8U3RydWN0dXJlPiBzdHJ1Y3R1cmUsIFN0cnVj
dHVyZSogcHJvdG90eXBlRnVuY3Rpb25TdHJ1Y3R1cmUpCitSZWdFeHBQcm90b3R5cGU6OlJlZ0V4
cFByb3RvdHlwZShFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IE5vbk51bGxQYXNzUmVmUHRyPFN0cnVjdHVyZT4gc3RydWN0dXJlLCBTdHJ1Y3R1cmUqIGZ1bmN0
aW9uU3RydWN0dXJlKQogICAgIDogUmVnRXhwT2JqZWN0KGdsb2JhbE9iamVjdCwgc3RydWN0dXJl
LCBSZWdFeHA6OmNyZWF0ZSgmZXhlYy0+Z2xvYmFsRGF0YSgpLCAiIiwgIiIpKQogewotICAgIHB1
dERpcmVjdEZ1bmN0aW9uV2l0aG91dFRyYW5zaXRpb24oZXhlYywgbmV3IChleGVjKSBOYXRpdmVG
dW5jdGlvbldyYXBwZXIoZXhlYywgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGVGdW5jdGlvblN0cnVj
dHVyZSwgMCwgZXhlYy0+cHJvcGVydHlOYW1lcygpLmNvbXBpbGUsIHJlZ0V4cFByb3RvRnVuY0Nv
bXBpbGUpLCBEb250RW51bSk7Ci0gICAgcHV0RGlyZWN0RnVuY3Rpb25XaXRob3V0VHJhbnNpdGlv
bihleGVjLCBuZXcgKGV4ZWMpIE5hdGl2ZUZ1bmN0aW9uV3JhcHBlcihleGVjLCBnbG9iYWxPYmpl
Y3QsIHByb3RvdHlwZUZ1bmN0aW9uU3RydWN0dXJlLCAwLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCku
ZXhlYywgcmVnRXhwUHJvdG9GdW5jRXhlYyksIERvbnRFbnVtKTsKLSAgICBwdXREaXJlY3RGdW5j
dGlvbldpdGhvdXRUcmFuc2l0aW9uKGV4ZWMsIG5ldyAoZXhlYykgTmF0aXZlRnVuY3Rpb25XcmFw
cGVyKGV4ZWMsIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlRnVuY3Rpb25TdHJ1Y3R1cmUsIDAsIGV4
ZWMtPnByb3BlcnR5TmFtZXMoKS50ZXN0LCByZWdFeHBQcm90b0Z1bmNUZXN0KSwgRG9udEVudW0p
OwotICAgIHB1dERpcmVjdEZ1bmN0aW9uV2l0aG91dFRyYW5zaXRpb24oZXhlYywgbmV3IChleGVj
KSBOYXRpdmVGdW5jdGlvbldyYXBwZXIoZXhlYywgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGVGdW5j
dGlvblN0cnVjdHVyZSwgMCwgZXhlYy0+cHJvcGVydHlOYW1lcygpLnRvU3RyaW5nLCByZWdFeHBQ
cm90b0Z1bmNUb1N0cmluZyksIERvbnRFbnVtKTsKKyAgICBwdXREaXJlY3RGdW5jdGlvbldpdGhv
dXRUcmFuc2l0aW9uKGV4ZWMsIG5ldyAoZXhlYykgSlNGdW5jdGlvbihleGVjLCBnbG9iYWxPYmpl
Y3QsIGZ1bmN0aW9uU3RydWN0dXJlLCAwLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkuY29tcGlsZSwg
cmVnRXhwUHJvdG9GdW5jQ29tcGlsZSksIERvbnRFbnVtKTsKKyAgICBwdXREaXJlY3RGdW5jdGlv
bldpdGhvdXRUcmFuc2l0aW9uKGV4ZWMsIG5ldyAoZXhlYykgSlNGdW5jdGlvbihleGVjLCBnbG9i
YWxPYmplY3QsIGZ1bmN0aW9uU3RydWN0dXJlLCAwLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkuZXhl
YywgcmVnRXhwUHJvdG9GdW5jRXhlYyksIERvbnRFbnVtKTsKKyAgICBwdXREaXJlY3RGdW5jdGlv
bldpdGhvdXRUcmFuc2l0aW9uKGV4ZWMsIG5ldyAoZXhlYykgSlNGdW5jdGlvbihleGVjLCBnbG9i
YWxPYmplY3QsIGZ1bmN0aW9uU3RydWN0dXJlLCAwLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkudGVz
dCwgcmVnRXhwUHJvdG9GdW5jVGVzdCksIERvbnRFbnVtKTsKKyAgICBwdXREaXJlY3RGdW5jdGlv
bldpdGhvdXRUcmFuc2l0aW9uKGV4ZWMsIG5ldyAoZXhlYykgSlNGdW5jdGlvbihleGVjLCBnbG9i
YWxPYmplY3QsIGZ1bmN0aW9uU3RydWN0dXJlLCAwLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkudG9T
dHJpbmcsIHJlZ0V4cFByb3RvRnVuY1RvU3RyaW5nKSwgRG9udEVudW0pOwogfQogCiAvLyAtLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gRnVuY3Rpb25zIC0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwUHJvdG90
eXBlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhw
UHJvdG90eXBlLmgJKHJldmlzaW9uIDc5MTU5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvUmVnRXhwUHJvdG90eXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTI4LDcgKzI4LDcgQEAg
bmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBSZWdFeHBQcm90b3R5cGUgOiBwdWJsaWMgUmVn
RXhwT2JqZWN0IHsKICAgICBwdWJsaWM6Ci0gICAgICAgIFJlZ0V4cFByb3RvdHlwZShFeGVjU3Rh
dGUqLCBKU0dsb2JhbE9iamVjdCosIE5vbk51bGxQYXNzUmVmUHRyPFN0cnVjdHVyZT4sIFN0cnVj
dHVyZSogcHJvdG90eXBlRnVuY3Rpb25TdHJ1Y3R1cmUpOworICAgICAgICBSZWdFeHBQcm90b3R5
cGUoRXhlY1N0YXRlKiwgSlNHbG9iYWxPYmplY3QqLCBOb25OdWxsUGFzc1JlZlB0cjxTdHJ1Y3R1
cmU+LCBTdHJ1Y3R1cmUqIGZ1bmN0aW9uU3RydWN0dXJlKTsKICAgICB9OwogCiB9IC8vIG5hbWVz
cGFjZSBKU0MKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NtYWxsU3RyaW5n
cy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NtYWxsU3Ry
aW5ncy5oCShyZXZpc2lvbiA3OTE1OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1NtYWxsU3RyaW5ncy5oCSh3b3JraW5nIGNvcHkpCkBAIC02Myw5ICs2Myw5IEBAIG5hbWVzcGFj
ZSBKU0MgewogICAgICAgICB2b2lkIGNsZWFyKCk7CiAKICAgICAgICAgdW5zaWduZWQgY291bnQo
KSBjb25zdDsKLSNpZiBFTkFCTEUoSklUKQorCiAgICAgICAgIEpTQ2VsbCoqIHNpbmdsZUNoYXJh
Y3RlclN0cmluZ3MoKSB7IHJldHVybiBtX3NpbmdsZUNoYXJhY3RlclN0cmluZ3NbMF0uc2xvdCgp
OyB9Ci0jZW5kaWYKKwogICAgIHByaXZhdGU6CiAgICAgICAgIHZvaWQgY3JlYXRlRW1wdHlTdHJp
bmcoSlNHbG9iYWxEYXRhKik7CiAgICAgICAgIHZvaWQgY3JlYXRlU2luZ2xlQ2hhcmFjdGVyU3Ry
aW5nKEpTR2xvYmFsRGF0YSosIHVuc2lnbmVkIGNoYXIpOwpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvU3RyaW5nQ29uc3RydWN0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ0NvbnN0cnVjdG9yLmNwcAkocmV2aXNpb24g
NzkxNTkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdDb25zdHJ1Y3Rv
ci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI2LDcgKzI2LDYgQEAKICNpbmNsdWRlICJKU0Z1bmN0
aW9uLmgiCiAjaW5jbHVkZSAiSlNHbG9iYWxPYmplY3QuaCIKICNpbmNsdWRlICJTdHJpbmdQcm90
b3R5cGUuaCIKLSNpbmNsdWRlICJQcm90b3R5cGVGdW5jdGlvbi5oIgogCiBuYW1lc3BhY2UgSlND
IHsKIApAQCAtNDksNyArNDgsNyBAQCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBzdHJpCiAKIEFTU0VSVF9DTEFTU19GSVRTX0lOX0NFTEwoU3RyaW5nQ29uc3RydWN0b3IpOwog
Ci1TdHJpbmdDb25zdHJ1Y3Rvcjo6U3RyaW5nQ29uc3RydWN0b3IoRXhlY1N0YXRlKiBleGVjLCBK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBOb25OdWxsUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+
IHN0cnVjdHVyZSwgU3RydWN0dXJlKiBwcm90b3R5cGVGdW5jdGlvblN0cnVjdHVyZSwgU3RyaW5n
UHJvdG90eXBlKiBzdHJpbmdQcm90b3R5cGUpCitTdHJpbmdDb25zdHJ1Y3Rvcjo6U3RyaW5nQ29u
c3RydWN0b3IoRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBO
b25OdWxsUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+IHN0cnVjdHVyZSwgU3RydWN0dXJlKiBmdW5jdGlv
blN0cnVjdHVyZSwgU3RyaW5nUHJvdG90eXBlKiBzdHJpbmdQcm90b3R5cGUpCiAgICAgOiBJbnRl
cm5hbEZ1bmN0aW9uKCZleGVjLT5nbG9iYWxEYXRhKCksIGdsb2JhbE9iamVjdCwgc3RydWN0dXJl
LCBJZGVudGlmaWVyKGV4ZWMsIHN0cmluZ1Byb3RvdHlwZS0+Y2xhc3NJbmZvKCktPmNsYXNzTmFt
ZSkpCiB7CiAgICAgLy8gRUNNQSAxNS41LjMuMSBTdHJpbmcucHJvdG90eXBlCkBAIC01Nyw5ICs1
Niw5IEBAIFN0cmluZ0NvbnN0cnVjdG9yOjpTdHJpbmdDb25zdHJ1Y3RvcihFeGUKIAogICAgIC8v
IEVDTUEgMTUuNS4zLjIgZnJvbUNoYXJDb2RlKCkKICNpZiBFTkFCTEUoSklUKSAmJiBFTkFCTEUo
SklUX09QVElNSVpFX05BVElWRV9DQUxMKQotICAgIHB1dERpcmVjdEZ1bmN0aW9uV2l0aG91dFRy
YW5zaXRpb24oZXhlYywgbmV3IChleGVjKSBOYXRpdmVGdW5jdGlvbldyYXBwZXIoZXhlYywgZ2xv
YmFsT2JqZWN0LCBwcm90b3R5cGVGdW5jdGlvblN0cnVjdHVyZSwgMSwgZXhlYy0+cHJvcGVydHlO
YW1lcygpLmZyb21DaGFyQ29kZSwgZXhlYy0+Z2xvYmFsRGF0YSgpLmdldEhvc3RGdW5jdGlvbihz
dHJpbmdGcm9tQ2hhckNvZGUsIGZyb21DaGFyQ29kZVRodW5rR2VuZXJhdG9yKSksIERvbnRFbnVt
KTsKKyAgICBwdXREaXJlY3RGdW5jdGlvbldpdGhvdXRUcmFuc2l0aW9uKGV4ZWMsIG5ldyAoZXhl
YykgSlNGdW5jdGlvbihleGVjLCBnbG9iYWxPYmplY3QsIGZ1bmN0aW9uU3RydWN0dXJlLCAxLCBl
eGVjLT5wcm9wZXJ0eU5hbWVzKCkuZnJvbUNoYXJDb2RlLCBleGVjLT5nbG9iYWxEYXRhKCkuZ2V0
SG9zdEZ1bmN0aW9uKHN0cmluZ0Zyb21DaGFyQ29kZSwgZnJvbUNoYXJDb2RlVGh1bmtHZW5lcmF0
b3IpKSwgRG9udEVudW0pOwogI2Vsc2UKLSAgICBwdXREaXJlY3RGdW5jdGlvbldpdGhvdXRUcmFu
c2l0aW9uKGV4ZWMsIG5ldyAoZXhlYykgTmF0aXZlRnVuY3Rpb25XcmFwcGVyKGV4ZWMsIGdsb2Jh
bE9iamVjdCwgcHJvdG90eXBlRnVuY3Rpb25TdHJ1Y3R1cmUsIDEsIGV4ZWMtPnByb3BlcnR5TmFt
ZXMoKS5mcm9tQ2hhckNvZGUsIHN0cmluZ0Zyb21DaGFyQ29kZSksIERvbnRFbnVtKTsKKyAgICBw
dXREaXJlY3RGdW5jdGlvbldpdGhvdXRUcmFuc2l0aW9uKGV4ZWMsIG5ldyAoZXhlYykgSlNGdW5j
dGlvbihleGVjLCBnbG9iYWxPYmplY3QsIGZ1bmN0aW9uU3RydWN0dXJlLCAxLCBleGVjLT5wcm9w
ZXJ0eU5hbWVzKCkuZnJvbUNoYXJDb2RlLCBzdHJpbmdGcm9tQ2hhckNvZGUpLCBEb250RW51bSk7
CiAjZW5kaWYKICAgICAvLyBuby4gb2YgYXJndW1lbnRzIGZvciBjb25zdHJ1Y3RvcgogICAgIHB1
dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKGV4ZWMtPmdsb2JhbERhdGEoKSwgZXhlYy0+cHJvcGVy
dHlOYW1lcygpLmxlbmd0aCwganNOdW1iZXIoMSksIFJlYWRPbmx5IHwgRG9udEVudW0gfCBEb250
RGVsZXRlKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ0NvbnN0
cnVjdG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3Ry
aW5nQ29uc3RydWN0b3IuaAkocmV2aXNpb24gNzkxNTkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9TdHJpbmdDb25zdHJ1Y3Rvci5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw3ICsy
OSw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3MgU3RyaW5nQ29uc3RydWN0b3IgOiBw
dWJsaWMgSW50ZXJuYWxGdW5jdGlvbiB7CiAgICAgcHVibGljOgotICAgICAgICBTdHJpbmdDb25z
dHJ1Y3RvcihFeGVjU3RhdGUqLCBKU0dsb2JhbE9iamVjdCosIE5vbk51bGxQYXNzUmVmUHRyPFN0
cnVjdHVyZT4sIFN0cnVjdHVyZSogcHJvdG90eXBlRnVuY3Rpb25TdHJ1Y3R1cmUsIFN0cmluZ1By
b3RvdHlwZSopOworICAgICAgICBTdHJpbmdDb25zdHJ1Y3RvcihFeGVjU3RhdGUqLCBKU0dsb2Jh
bE9iamVjdCosIE5vbk51bGxQYXNzUmVmUHRyPFN0cnVjdHVyZT4sIFN0cnVjdHVyZSogZnVuY3Rp
b25TdHJ1Y3R1cmUsIFN0cmluZ1Byb3RvdHlwZSopOwogCiAgICAgICAgIHZpcnR1YWwgQ29uc3Ry
dWN0VHlwZSBnZXRDb25zdHJ1Y3REYXRhKENvbnN0cnVjdERhdGEmKTsKICAgICAgICAgdmlydHVh
bCBDYWxsVHlwZSBnZXRDYWxsRGF0YShDYWxsRGF0YSYpOwpJbmRleDogU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNET01CaW5kaW5nLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcuY3BwCShyZXZpc2lvbiA3OTE1OSkKKysrIFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTcwOCw3ICs3MDgsNyBAQCBib29sIHByb2Nlc3NpbmdVc2VyR2VzdHVyZSgpCiAKIEpTVmFsdWUg
b2JqZWN0VG9TdHJpbmdGdW5jdGlvbkdldHRlcihFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUsIGNv
bnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSkKIHsKLSAgICByZXR1cm4gbmV3IChleGVjKSBO
YXRpdmVGdW5jdGlvbldyYXBwZXIoZXhlYywgZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLCBl
eGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCktPnByb3RvdHlwZUZ1bmN0aW9uU3RydWN0dXJlKCks
IDAsIHByb3BlcnR5TmFtZSwgb2JqZWN0UHJvdG9GdW5jVG9TdHJpbmcpOworICAgIHJldHVybiBu
ZXcgKGV4ZWMpIEpTRnVuY3Rpb24oZXhlYywgZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLCBl
eGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCktPmZ1bmN0aW9uU3RydWN0dXJlKCksIDAsIHByb3Bl
cnR5TmFtZSwgb2JqZWN0UHJvdG9GdW5jVG9TdHJpbmcpOwogfQogCiBTdHJ1Y3R1cmUqIGdldENh
Y2hlZERPTVN0cnVjdHVyZShKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBjb25zdCBD
bGFzc0luZm8qIGNsYXNzSW5mbykKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
RE9NV2luZG93Q3VzdG9tLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0RPTVdpbmRvd0N1c3RvbS5jcHAJKHJldmlzaW9uIDc5MTU5KQorKysgU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dDdXN0b20uY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0xMDYsNyArMTA2LDcgQEAgdm9pZCBKU0RPTVdpbmRvdzo6bWFya0NoaWxkcmVuKE1hcmtTdGFj
awogdGVtcGxhdGU8TmF0aXZlRnVuY3Rpb24gbmF0aXZlRnVuY3Rpb24sIGludCBsZW5ndGg+CiBK
U1ZhbHVlIG5vbkNhY2hpbmdTdGF0aWNGdW5jdGlvbkdldHRlcihFeGVjU3RhdGUqIGV4ZWMsIEpT
VmFsdWUsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSkKIHsKLSAgICByZXR1cm4gbmV3
IChleGVjKSBOYXRpdmVGdW5jdGlvbldyYXBwZXIoZXhlYywgZXhlYy0+bGV4aWNhbEdsb2JhbE9i
amVjdCgpLCBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCktPnByb3RvdHlwZUZ1bmN0aW9uU3Ry
dWN0dXJlKCksIGxlbmd0aCwgcHJvcGVydHlOYW1lLCBuYXRpdmVGdW5jdGlvbik7CisgICAgcmV0
dXJuIG5ldyAoZXhlYykgSlNGdW5jdGlvbihleGVjLCBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0
KCksIGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKS0+ZnVuY3Rpb25TdHJ1Y3R1cmUoKSwgbGVu
Z3RoLCBwcm9wZXJ0eU5hbWUsIG5hdGl2ZUZ1bmN0aW9uKTsKIH0KIAogc3RhdGljIEpTVmFsdWUg
Y2hpbGRGcmFtZUdldHRlcihFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgc2xvdEJhc2UsIGNvbnN0
IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTSGlzdG9yeUN1c3RvbS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNIaXN0b3J5Q3VzdG9tLmNwcAkocmV2aXNpb24gNzkxNTkpCisrKyBTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hpc3RvcnlDdXN0b20uY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC00MCwxNyArNDAsMTcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdGF0aWMgSlNWYWx1ZSBu
b25DYWNoaW5nU3RhdGljQmFja0Z1bmN0aW9uR2V0dGVyKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1
ZSwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lKQogewotICAgIHJldHVybiBuZXcgKGV4
ZWMpIE5hdGl2ZUZ1bmN0aW9uV3JhcHBlcihleGVjLCBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0
KCksIGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKS0+cHJvdG90eXBlRnVuY3Rpb25TdHJ1Y3R1
cmUoKSwgMCwgcHJvcGVydHlOYW1lLCBqc0hpc3RvcnlQcm90b3R5cGVGdW5jdGlvbkJhY2spOwor
ICAgIHJldHVybiBuZXcgKGV4ZWMpIEpTRnVuY3Rpb24oZXhlYywgZXhlYy0+bGV4aWNhbEdsb2Jh
bE9iamVjdCgpLCBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCktPmZ1bmN0aW9uU3RydWN0dXJl
KCksIDAsIHByb3BlcnR5TmFtZSwganNIaXN0b3J5UHJvdG90eXBlRnVuY3Rpb25CYWNrKTsKIH0K
IAogc3RhdGljIEpTVmFsdWUgbm9uQ2FjaGluZ1N0YXRpY0ZvcndhcmRGdW5jdGlvbkdldHRlcihF
eGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSkK
IHsKLSAgICByZXR1cm4gbmV3IChleGVjKSBOYXRpdmVGdW5jdGlvbldyYXBwZXIoZXhlYywgZXhl
Yy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLCBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCktPnBy
b3RvdHlwZUZ1bmN0aW9uU3RydWN0dXJlKCksIDAsIHByb3BlcnR5TmFtZSwganNIaXN0b3J5UHJv
dG90eXBlRnVuY3Rpb25Gb3J3YXJkKTsKKyAgICByZXR1cm4gbmV3IChleGVjKSBKU0Z1bmN0aW9u
KGV4ZWMsIGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSwgZXhlYy0+bGV4aWNhbEdsb2JhbE9i
amVjdCgpLT5mdW5jdGlvblN0cnVjdHVyZSgpLCAwLCBwcm9wZXJ0eU5hbWUsIGpzSGlzdG9yeVBy
b3RvdHlwZUZ1bmN0aW9uRm9yd2FyZCk7CiB9CiAKIHN0YXRpYyBKU1ZhbHVlIG5vbkNhY2hpbmdT
dGF0aWNHb0Z1bmN0aW9uR2V0dGVyKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSwgY29uc3QgSWRl
bnRpZmllciYgcHJvcGVydHlOYW1lKQogewotICAgIHJldHVybiBuZXcgKGV4ZWMpIE5hdGl2ZUZ1
bmN0aW9uV3JhcHBlcihleGVjLCBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCksIGV4ZWMtPmxl
eGljYWxHbG9iYWxPYmplY3QoKS0+cHJvdG90eXBlRnVuY3Rpb25TdHJ1Y3R1cmUoKSwgMSwgcHJv
cGVydHlOYW1lLCBqc0hpc3RvcnlQcm90b3R5cGVGdW5jdGlvbkdvKTsKKyAgICByZXR1cm4gbmV3
IChleGVjKSBKU0Z1bmN0aW9uKGV4ZWMsIGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSwgZXhl
Yy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLT5mdW5jdGlvblN0cnVjdHVyZSgpLCAxLCBwcm9wZXJ0
eU5hbWUsIGpzSGlzdG9yeVByb3RvdHlwZUZ1bmN0aW9uR28pOwogfQogCiBib29sIEpTSGlzdG9y
eTo6Z2V0T3duUHJvcGVydHlTbG90RGVsZWdhdGUoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVu
dGlmaWVyJiBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdCkKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTTG9jYXRpb25DdXN0b20uY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTG9jYXRpb25DdXN0b20uY3BwCShyZXZpc2lvbiA3
OTE1OSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTG9jYXRpb25DdXN0b20uY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0zMywxNyArMzMsMTcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
CiBzdGF0aWMgSlNWYWx1ZSBub25DYWNoaW5nU3RhdGljUmVwbGFjZUZ1bmN0aW9uR2V0dGVyKEV4
ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lKQog
ewotICAgIHJldHVybiBuZXcgKGV4ZWMpIE5hdGl2ZUZ1bmN0aW9uV3JhcHBlcihleGVjLCBleGVj
LT5sZXhpY2FsR2xvYmFsT2JqZWN0KCksIGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKS0+cHJv
dG90eXBlRnVuY3Rpb25TdHJ1Y3R1cmUoKSwgMSwgcHJvcGVydHlOYW1lLCBqc0xvY2F0aW9uUHJv
dG90eXBlRnVuY3Rpb25SZXBsYWNlKTsKKyAgICByZXR1cm4gbmV3IChleGVjKSBKU0Z1bmN0aW9u
KGV4ZWMsIGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSwgZXhlYy0+bGV4aWNhbEdsb2JhbE9i
amVjdCgpLT5mdW5jdGlvblN0cnVjdHVyZSgpLCAxLCBwcm9wZXJ0eU5hbWUsIGpzTG9jYXRpb25Q
cm90b3R5cGVGdW5jdGlvblJlcGxhY2UpOwogfQogCiBzdGF0aWMgSlNWYWx1ZSBub25DYWNoaW5n
U3RhdGljUmVsb2FkRnVuY3Rpb25HZXR0ZXIoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlLCBjb25z
dCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUpCiB7Ci0gICAgcmV0dXJuIG5ldyAoZXhlYykgTmF0
aXZlRnVuY3Rpb25XcmFwcGVyKGV4ZWMsIGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSwgZXhl
Yy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLT5wcm90b3R5cGVGdW5jdGlvblN0cnVjdHVyZSgpLCAw
LCBwcm9wZXJ0eU5hbWUsIGpzTG9jYXRpb25Qcm90b3R5cGVGdW5jdGlvblJlbG9hZCk7CisgICAg
cmV0dXJuIG5ldyAoZXhlYykgSlNGdW5jdGlvbihleGVjLCBleGVjLT5sZXhpY2FsR2xvYmFsT2Jq
ZWN0KCksIGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKS0+ZnVuY3Rpb25TdHJ1Y3R1cmUoKSwg
MCwgcHJvcGVydHlOYW1lLCBqc0xvY2F0aW9uUHJvdG90eXBlRnVuY3Rpb25SZWxvYWQpOwogfQog
CiBzdGF0aWMgSlNWYWx1ZSBub25DYWNoaW5nU3RhdGljQXNzaWduRnVuY3Rpb25HZXR0ZXIoRXhl
Y1N0YXRlKiBleGVjLCBKU1ZhbHVlLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUpCiB7
Ci0gICAgcmV0dXJuIG5ldyAoZXhlYykgTmF0aXZlRnVuY3Rpb25XcmFwcGVyKGV4ZWMsIGV4ZWMt
PmxleGljYWxHbG9iYWxPYmplY3QoKSwgZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLT5wcm90
b3R5cGVGdW5jdGlvblN0cnVjdHVyZSgpLCAxLCBwcm9wZXJ0eU5hbWUsIGpzTG9jYXRpb25Qcm90
b3R5cGVGdW5jdGlvbkFzc2lnbik7CisgICAgcmV0dXJuIG5ldyAoZXhlYykgSlNGdW5jdGlvbihl
eGVjLCBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCksIGV4ZWMtPmxleGljYWxHbG9iYWxPYmpl
Y3QoKS0+ZnVuY3Rpb25TdHJ1Y3R1cmUoKSwgMSwgcHJvcGVydHlOYW1lLCBqc0xvY2F0aW9uUHJv
dG90eXBlRnVuY3Rpb25Bc3NpZ24pOwogfQogCiBib29sIEpTTG9jYXRpb246OmdldE93blByb3Bl
cnR5U2xvdERlbGVnYXRlKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVy
dHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpCg==
</data>
<flag name="review"
          id="74867"
          type_id="1"
          status="+"
          setter="oliver"
    />
          </attachment>
      

    </bug>

</bugzilla>