<?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>139236</bug_id>
          
          <creation_ts>2014-12-03 15:06:44 -0800</creation_ts>
          <short_desc>Removed the global parser arena</short_desc>
          <delta_ts>2014-12-03 15:23:25 -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>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Geoffrey Garen">ggaren</reporter>
          <assigned_to name="Geoffrey Garen">ggaren</assigned_to>
          <cc>barraclough</cc>
    
    <cc>commit-queue</cc>
    
    <cc>oliver</cc>
    
    <cc>sam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1052301</commentid>
    <comment_count>0</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2014-12-03 15:06:44 -0800</bug_when>
    <thetext>Removed the global parser arena</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1052304</commentid>
    <comment_count>1</comment_count>
      <attachid>242528</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2014-12-03 15:13:39 -0800</bug_when>
    <thetext>Created attachment 242528
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1052306</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-12-03 15:16:22 -0800</bug_when>
    <thetext>Attachment 242528 did not pass style-queue:


ERROR: Source/JavaScriptCore/parser/NodeConstructors.h:30:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
Total errors found: 1 in 10 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>1052308</commentid>
    <comment_count>3</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2014-12-03 15:23:25 -0800</bug_when>
    <thetext>Committed r176756: &lt;http://trac.webkit.org/changeset/176756&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>242528</attachid>
            <date>2014-12-03 15:13:39 -0800</date>
            <delta_ts>2014-12-03 15:21:39 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-139236-20141203151412.patch</filename>
            <type>text/plain</type>
            <size>87309</size>
            <attacher name="Geoffrey Garen">ggaren</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTc2NzU1KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEzOSBA
QAorMjAxNC0xMi0wMyAgR2VvZmZyZXkgR2FyZW4gIDxnZ2FyZW5AYXBwbGUuY29tPgorCisgICAg
ICAgIFJlbW92ZWQgdGhlIGdsb2JhbCBwYXJzZXIgYXJlbmEKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzOTIzNgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFNpbXBsaWZpZXMgcGFyc2VyIGxpZmV0aW1lIGxv
Z2ljLgorCisgICAgICAgIFRoZXJlJ3Mgbm8gbmVlZCB0byBrZWVwIGEgZ2xvYmFsIGFyZW5hLiBX
ZSBjYW4gY3JlYXRlIGEgbmV3IGFyZW5hCisgICAgICAgIGVhY2ggdGltZSB3ZSBwYXJzZS4KKwor
ICAgICAgICAqIGJ5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oOiBHbG9iYWwgcmVwbGFj
ZSB0byBwYXNzIGFyb3VuZCBhCisgICAgICAgIFBhcnNlckFyZW5hIGluc3RlYWQgb2YgVk0qLCBz
aW5jZSB0aGUgVk0gbm8gbG9uZ2VyIG93bnMgdGhlIGFyZW5hLgorICAgICAgICAoSlNDOjpCeXRl
Y29kZUdlbmVyYXRvcjo6cGFyc2VyQXJlbmEpOgorCisgICAgICAgICogYnl0ZWNvbXBpbGVyL05v
ZGVzQ29kZWdlbi5jcHA6IERpdHRvLgorICAgICAgICAoSlNDOjpBcnJheU5vZGU6OnRvQXJndW1l
bnRMaXN0KToKKyAgICAgICAgKEpTQzo6QXBwbHlGdW5jdGlvbkNhbGxEb3ROb2RlOjplbWl0Qnl0
ZWNvZGUpOgorICAgICAgICAqIHBhcnNlci9BU1RCdWlsZGVyLmg6IERpdHRvLgorICAgICAgICAo
SlNDOjpBU1RCdWlsZGVyOjpBU1RCdWlsZGVyKToKKyAgICAgICAgKEpTQzo6QVNUQnVpbGRlcjo6
Y3JlYXRlU291cmNlRWxlbWVudHMpOgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjpjcmVhdGVD
b21tYUV4cHIpOgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjpjcmVhdGVMb2dpY2FsTm90KToK
KyAgICAgICAgKEpTQzo6QVNUQnVpbGRlcjo6Y3JlYXRlVW5hcnlQbHVzKToKKyAgICAgICAgKEpT
Qzo6QVNUQnVpbGRlcjo6Y3JlYXRlVm9pZCk6CisgICAgICAgIChKU0M6OkFTVEJ1aWxkZXI6OnRo
aXNFeHByKToKKyAgICAgICAgKEpTQzo6QVNUQnVpbGRlcjo6Y3JlYXRlUmVzb2x2ZSk6CisgICAg
ICAgIChKU0M6OkFTVEJ1aWxkZXI6OmNyZWF0ZU9iamVjdExpdGVyYWwpOgorICAgICAgICAoSlND
OjpBU1RCdWlsZGVyOjpjcmVhdGVBcnJheSk6CisgICAgICAgIChKU0M6OkFTVEJ1aWxkZXI6OmNy
ZWF0ZU51bWJlckV4cHIpOgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjpjcmVhdGVTdHJpbmcp
OgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjpjcmVhdGVCb29sZWFuKToKKyAgICAgICAgKEpT
Qzo6QVNUQnVpbGRlcjo6Y3JlYXRlTnVsbCk6CisgICAgICAgIChKU0M6OkFTVEJ1aWxkZXI6OmNy
ZWF0ZUJyYWNrZXRBY2Nlc3MpOgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjpjcmVhdGVEb3RB
Y2Nlc3MpOgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjpjcmVhdGVTcHJlYWRFeHByZXNzaW9u
KToKKyAgICAgICAgKEpTQzo6QVNUQnVpbGRlcjo6Y3JlYXRlUmVnRXhwKToKKyAgICAgICAgKEpT
Qzo6QVNUQnVpbGRlcjo6Y3JlYXRlTmV3RXhwcik6CisgICAgICAgIChKU0M6OkFTVEJ1aWxkZXI6
OmNyZWF0ZUNvbmRpdGlvbmFsRXhwcik6CisgICAgICAgIChKU0M6OkFTVEJ1aWxkZXI6OmNyZWF0
ZUFzc2lnblJlc29sdmUpOgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjpjcmVhdGVGdW5jdGlv
bkV4cHIpOgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjpjcmVhdGVGdW5jdGlvbkJvZHkpOgor
ICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjpjcmVhdGVHZXR0ZXJPclNldHRlclByb3BlcnR5KToK
KyAgICAgICAgKEpTQzo6QVNUQnVpbGRlcjo6Y3JlYXRlQXJndW1lbnRzKToKKyAgICAgICAgKEpT
Qzo6QVNUQnVpbGRlcjo6Y3JlYXRlQXJndW1lbnRzTGlzdCk6CisgICAgICAgIChKU0M6OkFTVEJ1
aWxkZXI6OmNyZWF0ZVByb3BlcnR5KToKKyAgICAgICAgKEpTQzo6QVNUQnVpbGRlcjo6Y3JlYXRl
UHJvcGVydHlMaXN0KToKKyAgICAgICAgKEpTQzo6QVNUQnVpbGRlcjo6Y3JlYXRlRWxlbWVudExp
c3QpOgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjpjcmVhdGVGb3JtYWxQYXJhbWV0ZXJMaXN0
KToKKyAgICAgICAgKEpTQzo6QVNUQnVpbGRlcjo6Y3JlYXRlQ2xhdXNlKToKKyAgICAgICAgKEpT
Qzo6QVNUQnVpbGRlcjo6Y3JlYXRlQ2xhdXNlTGlzdCk6CisgICAgICAgIChKU0M6OkFTVEJ1aWxk
ZXI6OmNyZWF0ZUZ1bmNEZWNsU3RhdGVtZW50KToKKyAgICAgICAgKEpTQzo6QVNUQnVpbGRlcjo6
Y3JlYXRlQmxvY2tTdGF0ZW1lbnQpOgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjpjcmVhdGVF
eHByU3RhdGVtZW50KToKKyAgICAgICAgKEpTQzo6QVNUQnVpbGRlcjo6Y3JlYXRlSWZTdGF0ZW1l
bnQpOgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjpjcmVhdGVGb3JMb29wKToKKyAgICAgICAg
KEpTQzo6QVNUQnVpbGRlcjo6Y3JlYXRlRm9ySW5Mb29wKToKKyAgICAgICAgKEpTQzo6QVNUQnVp
bGRlcjo6Y3JlYXRlRm9yT2ZMb29wKToKKyAgICAgICAgKEpTQzo6QVNUQnVpbGRlcjo6Y3JlYXRl
RW1wdHlTdGF0ZW1lbnQpOgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjpjcmVhdGVWYXJTdGF0
ZW1lbnQpOgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjpjcmVhdGVFbXB0eVZhckV4cHJlc3Np
b24pOgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjpjcmVhdGVSZXR1cm5TdGF0ZW1lbnQpOgor
ICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjpjcmVhdGVCcmVha1N0YXRlbWVudCk6CisgICAgICAg
IChKU0M6OkFTVEJ1aWxkZXI6OmNyZWF0ZUNvbnRpbnVlU3RhdGVtZW50KToKKyAgICAgICAgKEpT
Qzo6QVNUQnVpbGRlcjo6Y3JlYXRlVHJ5U3RhdGVtZW50KToKKyAgICAgICAgKEpTQzo6QVNUQnVp
bGRlcjo6Y3JlYXRlU3dpdGNoU3RhdGVtZW50KToKKyAgICAgICAgKEpTQzo6QVNUQnVpbGRlcjo6
Y3JlYXRlV2hpbGVTdGF0ZW1lbnQpOgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjpjcmVhdGVE
b1doaWxlU3RhdGVtZW50KToKKyAgICAgICAgKEpTQzo6QVNUQnVpbGRlcjo6Y3JlYXRlTGFiZWxT
dGF0ZW1lbnQpOgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjpjcmVhdGVXaXRoU3RhdGVtZW50
KToKKyAgICAgICAgKEpTQzo6QVNUQnVpbGRlcjo6Y3JlYXRlVGhyb3dTdGF0ZW1lbnQpOgorICAg
ICAgICAoSlNDOjpBU1RCdWlsZGVyOjpjcmVhdGVEZWJ1Z2dlcik6CisgICAgICAgIChKU0M6OkFT
VEJ1aWxkZXI6OmNyZWF0ZUNvbnN0U3RhdGVtZW50KToKKyAgICAgICAgKEpTQzo6QVNUQnVpbGRl
cjo6YXBwZW5kQ29uc3REZWNsKToKKyAgICAgICAgKEpTQzo6QVNUQnVpbGRlcjo6Y29tYmluZUNv
bW1hTm9kZXMpOgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjpjcmVhdGVEZWNvbnN0cnVjdGlu
Z0Fzc2lnbm1lbnQpOgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjpTY29wZTo6U2NvcGUpOgor
ICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjpjcmVhdGVOdW1iZXIpOgorICAgICAgICAoSlNDOjpB
U1RCdWlsZGVyOjptYWtlVHlwZU9mTm9kZSk6CisgICAgICAgIChKU0M6OkFTVEJ1aWxkZXI6Om1h
a2VEZWxldGVOb2RlKToKKyAgICAgICAgKEpTQzo6QVNUQnVpbGRlcjo6bWFrZU5lZ2F0ZU5vZGUp
OgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjptYWtlQml0d2lzZU5vdE5vZGUpOgorICAgICAg
ICAoSlNDOjpBU1RCdWlsZGVyOjptYWtlTXVsdE5vZGUpOgorICAgICAgICAoSlNDOjpBU1RCdWls
ZGVyOjptYWtlRGl2Tm9kZSk6CisgICAgICAgIChKU0M6OkFTVEJ1aWxkZXI6Om1ha2VNb2ROb2Rl
KToKKyAgICAgICAgKEpTQzo6QVNUQnVpbGRlcjo6bWFrZUFkZE5vZGUpOgorICAgICAgICAoSlND
OjpBU1RCdWlsZGVyOjptYWtlU3ViTm9kZSk6CisgICAgICAgIChKU0M6OkFTVEJ1aWxkZXI6Om1h
a2VMZWZ0U2hpZnROb2RlKToKKyAgICAgICAgKEpTQzo6QVNUQnVpbGRlcjo6bWFrZVJpZ2h0U2hp
ZnROb2RlKToKKyAgICAgICAgKEpTQzo6QVNUQnVpbGRlcjo6bWFrZVVSaWdodFNoaWZ0Tm9kZSk6
CisgICAgICAgIChKU0M6OkFTVEJ1aWxkZXI6Om1ha2VCaXRPck5vZGUpOgorICAgICAgICAoSlND
OjpBU1RCdWlsZGVyOjptYWtlQml0QW5kTm9kZSk6CisgICAgICAgIChKU0M6OkFTVEJ1aWxkZXI6
Om1ha2VCaXRYT3JOb2RlKToKKyAgICAgICAgKEpTQzo6QVNUQnVpbGRlcjo6bWFrZUZ1bmN0aW9u
Q2FsbE5vZGUpOgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjptYWtlQmluYXJ5Tm9kZSk6Cisg
ICAgICAgIChKU0M6OkFTVEJ1aWxkZXI6Om1ha2VBc3NpZ25Ob2RlKToKKyAgICAgICAgKEpTQzo6
QVNUQnVpbGRlcjo6bWFrZVByZWZpeE5vZGUpOgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjpt
YWtlUG9zdGZpeE5vZGUpOgorCisgICAgICAgICogcGFyc2VyL05vZGVDb25zdHJ1Y3RvcnMuaDog
RGl0dG8uCisgICAgICAgIChKU0M6OlBhcnNlckFyZW5hRnJlZWFibGU6Om9wZXJhdG9yIG5ldyk6
CisgICAgICAgIChKU0M6OlBhcnNlckFyZW5hRGVsZXRhYmxlOjpvcGVyYXRvciBuZXcpOgorICAg
ICAgICAoSlNDOjpQYXJzZXJBcmVuYVJlZkNvdW50ZWQ6OlBhcnNlckFyZW5hUmVmQ291bnRlZCk6
CisKKyAgICAgICAgKiBwYXJzZXIvTm9kZXMuY3BwOiBEaXR0by4KKyAgICAgICAgKEpTQzo6U2Nv
cGVOb2RlOjpTY29wZU5vZGUpOgorICAgICAgICAoSlNDOjpQcm9ncmFtTm9kZTo6UHJvZ3JhbU5v
ZGUpOgorICAgICAgICAoSlNDOjpQcm9ncmFtTm9kZTo6Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6
RXZhbE5vZGU6OkV2YWxOb2RlKToKKyAgICAgICAgKEpTQzo6RXZhbE5vZGU6OmNyZWF0ZSk6Cisg
ICAgICAgIChKU0M6OkZ1bmN0aW9uQm9keU5vZGU6OkZ1bmN0aW9uQm9keU5vZGUpOgorICAgICAg
ICAoSlNDOjpGdW5jdGlvbkJvZHlOb2RlOjpjcmVhdGUpOgorCisgICAgICAgICogcGFyc2VyL05v
ZGVzLmg6IERpdHRvLgorICAgICAgICAoSlNDOjpTY29wZU5vZGU6OnBhcnNlckFyZW5hKToKKwor
ICAgICAgICAqIHBhcnNlci9QYXJzZXIuY3BwOgorICAgICAgICAoSlNDOjpQYXJzZXI8TGV4ZXJU
eXBlPjo6UGFyc2VyKToKKyAgICAgICAgKEpTQzo6UGFyc2VyPExleGVyVHlwZT46OnBhcnNlSW5u
ZXIpOgorICAgICAgICAoSlNDOjpQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VQcm9wZXJ0eSk6IFRo
ZSBwYXJzZXIgbm93IG93bnMgaXRzIG93bgorICAgICAgICBhcmVuYSwgYW5kIHRyYW5zZmVycyBv
d25lcnNoaXAgb2YgaXRzIGNvbnRlbnRzIHdoZW4gaW52b2tpbmcgdGhlIFNjb3BlTm9kZQorICAg
ICAgICBjb25zdHJ1Y3Rvci4KKworICAgICAgICAqIHBhcnNlci9QYXJzZXIuaDoKKyAgICAgICAg
KEpTQzo6UGFyc2VyPExleGVyVHlwZT46OnBhcnNlKTogTm8gbmVlZCB0byBleHBsaWNpdGx5IHJl
c2V0IHRoZSBhcmVuYSwKKyAgICAgICAgc2luY2UgaXRzIGxpZmV0aW1lIGlzIHRpZWQgdG8gdGhl
IHBhcnNlcnMgbGlmZXRpbWUgbm93LgorCisgICAgICAgICogcGFyc2VyL1N5bnRheENoZWNrZXIu
aDoKKyAgICAgICAgKEpTQzo6U3ludGF4Q2hlY2tlcjo6Y3JlYXRlUHJvcGVydHkpOgorICAgICAg
ICAoSlNDOjpTeW50YXhDaGVja2VyOjpjcmVhdGVHZXR0ZXJPclNldHRlclByb3BlcnR5KToKKwor
ICAgICAgICAqIHJ1bnRpbWUvVk0uY3BwOgorICAgICAgICAoSlNDOjpWTTo6Vk0pOgorICAgICAg
ICAqIHJ1bnRpbWUvVk0uaDogVGhlIHBvaW50IG9mIHRoZSBwYXRjaDogbm8gbW9yZSBnbG9iYWwu
CisKIDIwMTQtMTItMDMgIEdlb2ZmcmV5IEdhcmVuICA8Z2dhcmVuQGFwcGxlLmNvbT4KIAogICAg
ICAgICBUaGUgcGFyc2VyIHNob3VsZCBhbGxvY2F0ZSBhbGwgcGllY2VzIG9mIHRoZSBBU1QKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3Iu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVj
b2RlR2VuZXJhdG9yLmgJKHJldmlzaW9uIDE3Njc1NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaAkod29ya2luZyBjb3B5KQpAQCAtMjY2
LDYgKzI2Niw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB+Qnl0ZWNvZGVHZW5lcmF0b3Io
KTsKICAgICAgICAgCiAgICAgICAgIFZNKiB2bSgpIGNvbnN0IHsgcmV0dXJuIG1fdm07IH0KKyAg
ICAgICAgUGFyc2VyQXJlbmEmIHBhcnNlckFyZW5hKCkgY29uc3QgeyByZXR1cm4gbV9zY29wZU5v
ZGUtPnBhcnNlckFyZW5hKCk7IH0KICAgICAgICAgY29uc3QgQ29tbW9uSWRlbnRpZmllcnMmIHBy
b3BlcnR5TmFtZXMoKSBjb25zdCB7IHJldHVybiAqbV92bS0+cHJvcGVydHlOYW1lczsgfQogCiAg
ICAgICAgIGJvb2wgaXNDb25zdHJ1Y3RvcigpIHsgcmV0dXJuIG1fY29kZUJsb2NrLT5pc0NvbnN0
cnVjdG9yKCk7IH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9k
ZXNDb2RlZ2VuLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
bXBpbGVyL05vZGVzQ29kZWdlbi5jcHAJKHJldmlzaW9uIDE3Njc1NCkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMjUwLDcgKzI1MCw3IEBAIGJvb2wgQXJyYXlOb2RlOjppc1NpbXBsZUFycmF5KCkgY29uc3QK
ICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotQXJndW1lbnRMaXN0Tm9kZSogQXJyYXlOb2RlOjp0b0Fy
Z3VtZW50TGlzdChWTSogdm0sIGludCBsaW5lTnVtYmVyLCBpbnQgc3RhcnRQb3NpdGlvbikgY29u
c3QKK0FyZ3VtZW50TGlzdE5vZGUqIEFycmF5Tm9kZTo6dG9Bcmd1bWVudExpc3QoUGFyc2VyQXJl
bmEmIHBhcnNlckFyZW5hLCBpbnQgbGluZU51bWJlciwgaW50IHN0YXJ0UG9zaXRpb24pIGNvbnN0
CiB7CiAgICAgQVNTRVJUKCFtX2VsaXNpb24gJiYgIW1fb3B0aW9uYWwpOwogICAgIEVsZW1lbnRO
b2RlKiBwdHIgPSBtX2VsZW1lbnQ7CkBAIC0yNTksMTIgKzI1OSwxMiBAQCBBcmd1bWVudExpc3RO
b2RlKiBBcnJheU5vZGU6OnRvQXJndW1lbnRMCiAgICAgSlNUb2tlbkxvY2F0aW9uIGxvY2F0aW9u
OwogICAgIGxvY2F0aW9uLmxpbmUgPSBsaW5lTnVtYmVyOwogICAgIGxvY2F0aW9uLnN0YXJ0T2Zm
c2V0ID0gc3RhcnRQb3NpdGlvbjsKLSAgICBBcmd1bWVudExpc3ROb2RlKiBoZWFkID0gbmV3ICh2
bSkgQXJndW1lbnRMaXN0Tm9kZShsb2NhdGlvbiwgcHRyLT52YWx1ZSgpKTsKKyAgICBBcmd1bWVu
dExpc3ROb2RlKiBoZWFkID0gbmV3IChwYXJzZXJBcmVuYSkgQXJndW1lbnRMaXN0Tm9kZShsb2Nh
dGlvbiwgcHRyLT52YWx1ZSgpKTsKICAgICBBcmd1bWVudExpc3ROb2RlKiB0YWlsID0gaGVhZDsK
ICAgICBwdHIgPSBwdHItPm5leHQoKTsKICAgICBmb3IgKDsgcHRyOyBwdHIgPSBwdHItPm5leHQo
KSkgewogICAgICAgICBBU1NFUlQoIXB0ci0+ZWxpc2lvbigpKTsKLSAgICAgICAgdGFpbCA9IG5l
dyAodm0pIEFyZ3VtZW50TGlzdE5vZGUobG9jYXRpb24sIHRhaWwsIHB0ci0+dmFsdWUoKSk7Cisg
ICAgICAgIHRhaWwgPSBuZXcgKHBhcnNlckFyZW5hKSBBcmd1bWVudExpc3ROb2RlKGxvY2F0aW9u
LCB0YWlsLCBwdHItPnZhbHVlKCkpOwogICAgIH0KICAgICByZXR1cm4gaGVhZDsKIH0KQEAgLTcy
OSw3ICs3MjksNyBAQCBSZWdpc3RlcklEKiBBcHBseUZ1bmN0aW9uQ2FsbERvdE5vZGU6OmVtCiAg
ICAgICAgICAgICB9IGVsc2UgaWYgKG1fYXJncy0+bV9saXN0Tm9kZS0+bV9uZXh0KSB7CiAgICAg
ICAgICAgICAgICAgQVNTRVJUKG1fYXJncy0+bV9saXN0Tm9kZS0+bV9uZXh0LT5tX2V4cHItPmlz
U2ltcGxlQXJyYXkoKSk7CiAgICAgICAgICAgICAgICAgQVNTRVJUKCFtX2FyZ3MtPm1fbGlzdE5v
ZGUtPm1fbmV4dC0+bV9uZXh0KTsKLSAgICAgICAgICAgICAgICBtX2FyZ3MtPm1fbGlzdE5vZGUg
PSBzdGF0aWNfY2FzdDxBcnJheU5vZGUqPihtX2FyZ3MtPm1fbGlzdE5vZGUtPm1fbmV4dC0+bV9l
eHByKS0+dG9Bcmd1bWVudExpc3QoZ2VuZXJhdG9yLnZtKCksIDAsIDApOworICAgICAgICAgICAg
ICAgIG1fYXJncy0+bV9saXN0Tm9kZSA9IHN0YXRpY19jYXN0PEFycmF5Tm9kZSo+KG1fYXJncy0+
bV9saXN0Tm9kZS0+bV9uZXh0LT5tX2V4cHIpLT50b0FyZ3VtZW50TGlzdChnZW5lcmF0b3IucGFy
c2VyQXJlbmEoKSwgMCwgMCk7CiAgICAgICAgICAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHJl
YWxGdW5jdGlvbiA9IGdlbmVyYXRvci5lbWl0TW92ZShnZW5lcmF0b3IudGVtcERlc3RpbmF0aW9u
KGRzdCksIGJhc2UuZ2V0KCkpOwogICAgICAgICAgICAgICAgIENhbGxBcmd1bWVudHMgY2FsbEFy
Z3VtZW50cyhnZW5lcmF0b3IsIG1fYXJncyk7CiAgICAgICAgICAgICAgICAgZ2VuZXJhdG9yLmVt
aXROb2RlKGNhbGxBcmd1bWVudHMudGhpc1JlZ2lzdGVyKCksIG9sZExpc3QtPm1fZXhwcik7Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0FTVEJ1aWxkZXIuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0FTVEJ1aWxkZXIuaAkocmV2aXNpb24g
MTc2NzU0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9BU1RCdWlsZGVyLmgJKHdv
cmtpbmcgY29weSkKQEAgLTc2LDEwICs3NiwxMSBAQCBjbGFzcyBBU1RCdWlsZGVyIHsKICAgICAg
ICAgT3BlcmF0b3IgbV9vcDsKICAgICB9OwogcHVibGljOgotICAgIEFTVEJ1aWxkZXIoVk0qIHZt
LCBTb3VyY2VDb2RlKiBzb3VyY2VDb2RlKQorICAgIEFTVEJ1aWxkZXIoVk0qIHZtLCBQYXJzZXJB
cmVuYSYgcGFyc2VyQXJlbmEsIFNvdXJjZUNvZGUqIHNvdXJjZUNvZGUpCiAgICAgICAgIDogbV92
bSh2bSkKKyAgICAgICAgLCBtX3BhcnNlckFyZW5hKHBhcnNlckFyZW5hKQogICAgICAgICAsIG1f
c291cmNlQ29kZShzb3VyY2VDb2RlKQotICAgICAgICAsIG1fc2NvcGUodm0pCisgICAgICAgICwg
bV9zY29wZShtX3BhcnNlckFyZW5hKQogICAgICAgICAsIG1fZXZhbENvdW50KDApCiAgICAgewog
ICAgIH0KQEAgLTEyMiw3ICsxMjMsNyBAQCBwdWJsaWM6CiAgICAgRXhwcmVzc2lvbk5vZGUqIG1h
a2VCaW5hcnlOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIGludCB0b2tlbiwgc3RkOjpwYWly
PEV4cHJlc3Npb25Ob2RlKiwgQmluYXJ5T3BJbmZvPiwgc3RkOjpwYWlyPEV4cHJlc3Npb25Ob2Rl
KiwgQmluYXJ5T3BJbmZvPik7CiAgICAgRXhwcmVzc2lvbk5vZGUqIG1ha2VGdW5jdGlvbkNhbGxO
b2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEV4cHJlc3Npb25Ob2RlKiBmdW5jLCBBcmd1bWVu
dHNOb2RlKiBhcmdzLCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3RTdGFydCwgY29uc3QgSlNU
ZXh0UG9zaXRpb24mIGRpdm90LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3RFbmQpOwogCi0g
ICAgSlNDOjpTb3VyY2VFbGVtZW50cyogY3JlYXRlU291cmNlRWxlbWVudHMoKSB7IHJldHVybiBu
ZXcgKG1fdm0pIEpTQzo6U291cmNlRWxlbWVudHMoKTsgfQorICAgIEpTQzo6U291cmNlRWxlbWVu
dHMqIGNyZWF0ZVNvdXJjZUVsZW1lbnRzKCkgeyByZXR1cm4gbmV3IChtX3BhcnNlckFyZW5hKSBK
U0M6OlNvdXJjZUVsZW1lbnRzKCk7IH0KIAogICAgIFBhcnNlckFyZW5hRGF0YTxEZWNsYXJhdGlv
blN0YWNrczo6VmFyU3RhY2s+KiB2YXJEZWNsYXJhdGlvbnMoKSB7IHJldHVybiBtX3Njb3BlLm1f
dmFyRGVjbGFyYXRpb25zOyB9CiAgICAgUGFyc2VyQXJlbmFEYXRhPERlY2xhcmF0aW9uU3RhY2tz
OjpGdW5jdGlvblN0YWNrPiogZnVuY0RlY2xhcmF0aW9ucygpIHsgcmV0dXJuIG1fc2NvcGUubV9m
dW5jRGVjbGFyYXRpb25zOyB9CkBAIC0xMzEsNyArMTMyLDcgQEAgcHVibGljOgogCiAgICAgdm9p
ZCBhcHBlbmRUb0NvbW1hKENvbW1hTm9kZSogY29tbWFOb2RlLCBFeHByZXNzaW9uTm9kZSogZXhw
cikgeyBjb21tYU5vZGUtPmFwcGVuZChleHByKTsgfQogCi0gICAgQ29tbWFOb2RlKiBjcmVhdGVD
b21tYUV4cHIoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgRXhwcmVzc2lvbk5vZGUq
IGxocywgRXhwcmVzc2lvbk5vZGUqIHJocykgeyByZXR1cm4gbmV3IChtX3ZtKSBDb21tYU5vZGUo
bG9jYXRpb24sIGxocywgcmhzKTsgfQorICAgIENvbW1hTm9kZSogY3JlYXRlQ29tbWFFeHByKGNv
bnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIEV4cHJlc3Npb25Ob2RlKiBsaHMsIEV4cHJl
c3Npb25Ob2RlKiByaHMpIHsgcmV0dXJuIG5ldyAobV9wYXJzZXJBcmVuYSkgQ29tbWFOb2RlKGxv
Y2F0aW9uLCBsaHMsIHJocyk7IH0KIAogICAgIEV4cHJlc3Npb25Ob2RlKiBtYWtlQXNzaWduTm9k
ZShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBFeHByZXNzaW9uTm9kZSogbGVmdCwgT3BlcmF0b3Is
IEV4cHJlc3Npb25Ob2RlKiByaWdodCwgYm9vbCBsZWZ0SGFzQXNzaWdubWVudHMsIGJvb2wgcmln
aHRIYXNBc3NpZ25tZW50cywgY29uc3QgSlNUZXh0UG9zaXRpb24mIHN0YXJ0LCBjb25zdCBKU1Rl
eHRQb3NpdGlvbiYgZGl2b3QsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBlbmQpOwogICAgIEV4cHJl
c3Npb25Ob2RlKiBtYWtlUHJlZml4Tm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBFeHByZXNz
aW9uTm9kZSosIE9wZXJhdG9yLCBjb25zdCBKU1RleHRQb3NpdGlvbiYgc3RhcnQsIGNvbnN0IEpT
VGV4dFBvc2l0aW9uJiBkaXZvdCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGVuZCk7CkBAIC0xNTcs
ODMgKzE1OCw4MyBAQCBwdWJsaWM6CiAgICAgICAgIGlmIChleHByLT5pc051bWJlcigpKQogICAg
ICAgICAgICAgcmV0dXJuIGNyZWF0ZUJvb2xlYW4obG9jYXRpb24sIGlzWmVyb09yVW5vcmRlcmVk
KHN0YXRpY19jYXN0PE51bWJlck5vZGUqPihleHByKS0+dmFsdWUoKSkpOwogCi0gICAgICAgIHJl
dHVybiBuZXcgKG1fdm0pIExvZ2ljYWxOb3ROb2RlKGxvY2F0aW9uLCBleHByKTsKKyAgICAgICAg
cmV0dXJuIG5ldyAobV9wYXJzZXJBcmVuYSkgTG9naWNhbE5vdE5vZGUobG9jYXRpb24sIGV4cHIp
OwogICAgIH0KLSAgICBFeHByZXNzaW9uTm9kZSogY3JlYXRlVW5hcnlQbHVzKGNvbnN0IEpTVG9r
ZW5Mb2NhdGlvbiYgbG9jYXRpb24sIEV4cHJlc3Npb25Ob2RlKiBleHByKSB7IHJldHVybiBuZXcg
KG1fdm0pIFVuYXJ5UGx1c05vZGUobG9jYXRpb24sIGV4cHIpOyB9CisgICAgRXhwcmVzc2lvbk5v
ZGUqIGNyZWF0ZVVuYXJ5UGx1cyhjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBFeHBy
ZXNzaW9uTm9kZSogZXhwcikgeyByZXR1cm4gbmV3IChtX3BhcnNlckFyZW5hKSBVbmFyeVBsdXNO
b2RlKGxvY2F0aW9uLCBleHByKTsgfQogICAgIEV4cHJlc3Npb25Ob2RlKiBjcmVhdGVWb2lkKGNv
bnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIEV4cHJlc3Npb25Ob2RlKiBleHByKQogICAg
IHsKICAgICAgICAgaW5jQ29uc3RhbnRzKCk7Ci0gICAgICAgIHJldHVybiBuZXcgKG1fdm0pIFZv
aWROb2RlKGxvY2F0aW9uLCBleHByKTsKKyAgICAgICAgcmV0dXJuIG5ldyAobV9wYXJzZXJBcmVu
YSkgVm9pZE5vZGUobG9jYXRpb24sIGV4cHIpOwogICAgIH0KICAgICBFeHByZXNzaW9uTm9kZSog
dGhpc0V4cHIoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbikKICAgICB7CiAgICAgICAg
IHVzZXNUaGlzKCk7Ci0gICAgICAgIHJldHVybiBuZXcgKG1fdm0pIFRoaXNOb2RlKGxvY2F0aW9u
KTsKKyAgICAgICAgcmV0dXJuIG5ldyAobV9wYXJzZXJBcmVuYSkgVGhpc05vZGUobG9jYXRpb24p
OwogICAgIH0KICAgICBFeHByZXNzaW9uTm9kZSogY3JlYXRlUmVzb2x2ZShjb25zdCBKU1Rva2Vu
TG9jYXRpb24mIGxvY2F0aW9uLCBjb25zdCBJZGVudGlmaWVyKiBpZGVudCwgY29uc3QgSlNUZXh0
UG9zaXRpb24mIHN0YXJ0KQogICAgIHsKICAgICAgICAgaWYgKG1fdm0tPnByb3BlcnR5TmFtZXMt
PmFyZ3VtZW50cyA9PSAqaWRlbnQpCiAgICAgICAgICAgICB1c2VzQXJndW1lbnRzKCk7Ci0gICAg
ICAgIHJldHVybiBuZXcgKG1fdm0pIFJlc29sdmVOb2RlKGxvY2F0aW9uLCAqaWRlbnQsIHN0YXJ0
KTsKKyAgICAgICAgcmV0dXJuIG5ldyAobV9wYXJzZXJBcmVuYSkgUmVzb2x2ZU5vZGUobG9jYXRp
b24sICppZGVudCwgc3RhcnQpOwogICAgIH0KLSAgICBFeHByZXNzaW9uTm9kZSogY3JlYXRlT2Jq
ZWN0TGl0ZXJhbChjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uKSB7IHJldHVybiBuZXcg
KG1fdm0pIE9iamVjdExpdGVyYWxOb2RlKGxvY2F0aW9uKTsgfQotICAgIEV4cHJlc3Npb25Ob2Rl
KiBjcmVhdGVPYmplY3RMaXRlcmFsKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIFBy
b3BlcnR5TGlzdE5vZGUqIHByb3BlcnRpZXMpIHsgcmV0dXJuIG5ldyAobV92bSkgT2JqZWN0TGl0
ZXJhbE5vZGUobG9jYXRpb24sIHByb3BlcnRpZXMpOyB9CisgICAgRXhwcmVzc2lvbk5vZGUqIGNy
ZWF0ZU9iamVjdExpdGVyYWwoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbikgeyByZXR1
cm4gbmV3IChtX3BhcnNlckFyZW5hKSBPYmplY3RMaXRlcmFsTm9kZShsb2NhdGlvbik7IH0KKyAg
ICBFeHByZXNzaW9uTm9kZSogY3JlYXRlT2JqZWN0TGl0ZXJhbChjb25zdCBKU1Rva2VuTG9jYXRp
b24mIGxvY2F0aW9uLCBQcm9wZXJ0eUxpc3ROb2RlKiBwcm9wZXJ0aWVzKSB7IHJldHVybiBuZXcg
KG1fcGFyc2VyQXJlbmEpIE9iamVjdExpdGVyYWxOb2RlKGxvY2F0aW9uLCBwcm9wZXJ0aWVzKTsg
fQogCiAgICAgRXhwcmVzc2lvbk5vZGUqIGNyZWF0ZUFycmF5KGNvbnN0IEpTVG9rZW5Mb2NhdGlv
biYgbG9jYXRpb24sIGludCBlbGlzaW9ucykKICAgICB7CiAgICAgICAgIGlmIChlbGlzaW9ucykK
ICAgICAgICAgICAgIGluY0NvbnN0YW50cygpOwotICAgICAgICByZXR1cm4gbmV3IChtX3ZtKSBB
cnJheU5vZGUobG9jYXRpb24sIGVsaXNpb25zKTsKKyAgICAgICAgcmV0dXJuIG5ldyAobV9wYXJz
ZXJBcmVuYSkgQXJyYXlOb2RlKGxvY2F0aW9uLCBlbGlzaW9ucyk7CiAgICAgfQogCi0gICAgRXhw
cmVzc2lvbk5vZGUqIGNyZWF0ZUFycmF5KGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24s
IEVsZW1lbnROb2RlKiBlbGVtcykgeyByZXR1cm4gbmV3IChtX3ZtKSBBcnJheU5vZGUobG9jYXRp
b24sIGVsZW1zKTsgfQorICAgIEV4cHJlc3Npb25Ob2RlKiBjcmVhdGVBcnJheShjb25zdCBKU1Rv
a2VuTG9jYXRpb24mIGxvY2F0aW9uLCBFbGVtZW50Tm9kZSogZWxlbXMpIHsgcmV0dXJuIG5ldyAo
bV9wYXJzZXJBcmVuYSkgQXJyYXlOb2RlKGxvY2F0aW9uLCBlbGVtcyk7IH0KICAgICBFeHByZXNz
aW9uTm9kZSogY3JlYXRlQXJyYXkoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgaW50
IGVsaXNpb25zLCBFbGVtZW50Tm9kZSogZWxlbXMpCiAgICAgewogICAgICAgICBpZiAoZWxpc2lv
bnMpCiAgICAgICAgICAgICBpbmNDb25zdGFudHMoKTsKLSAgICAgICAgcmV0dXJuIG5ldyAobV92
bSkgQXJyYXlOb2RlKGxvY2F0aW9uLCBlbGlzaW9ucywgZWxlbXMpOworICAgICAgICByZXR1cm4g
bmV3IChtX3BhcnNlckFyZW5hKSBBcnJheU5vZGUobG9jYXRpb24sIGVsaXNpb25zLCBlbGVtcyk7
CiAgICAgfQogICAgIEV4cHJlc3Npb25Ob2RlKiBjcmVhdGVOdW1iZXJFeHByKGNvbnN0IEpTVG9r
ZW5Mb2NhdGlvbiYgbG9jYXRpb24sIGRvdWJsZSBkKQogICAgIHsKICAgICAgICAgaW5jQ29uc3Rh
bnRzKCk7Ci0gICAgICAgIHJldHVybiBuZXcgKG1fdm0pIE51bWJlck5vZGUobG9jYXRpb24sIGQp
OworICAgICAgICByZXR1cm4gbmV3IChtX3BhcnNlckFyZW5hKSBOdW1iZXJOb2RlKGxvY2F0aW9u
LCBkKTsKICAgICB9CiAKICAgICBFeHByZXNzaW9uTm9kZSogY3JlYXRlU3RyaW5nKGNvbnN0IEpT
VG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIGNvbnN0IElkZW50aWZpZXIqIHN0cmluZykKICAgICB7
CiAgICAgICAgIGluY0NvbnN0YW50cygpOwotICAgICAgICByZXR1cm4gbmV3IChtX3ZtKSBTdHJp
bmdOb2RlKGxvY2F0aW9uLCAqc3RyaW5nKTsKKyAgICAgICAgcmV0dXJuIG5ldyAobV9wYXJzZXJB
cmVuYSkgU3RyaW5nTm9kZShsb2NhdGlvbiwgKnN0cmluZyk7CiAgICAgfQogCiAgICAgRXhwcmVz
c2lvbk5vZGUqIGNyZWF0ZUJvb2xlYW4oY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwg
Ym9vbCBiKQogICAgIHsKICAgICAgICAgaW5jQ29uc3RhbnRzKCk7Ci0gICAgICAgIHJldHVybiBu
ZXcgKG1fdm0pIEJvb2xlYW5Ob2RlKGxvY2F0aW9uLCBiKTsKKyAgICAgICAgcmV0dXJuIG5ldyAo
bV9wYXJzZXJBcmVuYSkgQm9vbGVhbk5vZGUobG9jYXRpb24sIGIpOwogICAgIH0KIAogICAgIEV4
cHJlc3Npb25Ob2RlKiBjcmVhdGVOdWxsKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24p
CiAgICAgewogICAgICAgICBpbmNDb25zdGFudHMoKTsKLSAgICAgICAgcmV0dXJuIG5ldyAobV92
bSkgTnVsbE5vZGUobG9jYXRpb24pOworICAgICAgICByZXR1cm4gbmV3IChtX3BhcnNlckFyZW5h
KSBOdWxsTm9kZShsb2NhdGlvbik7CiAgICAgfQogCiAgICAgRXhwcmVzc2lvbk5vZGUqIGNyZWF0
ZUJyYWNrZXRBY2Nlc3MoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgRXhwcmVzc2lv
bk5vZGUqIGJhc2UsIEV4cHJlc3Npb25Ob2RlKiBwcm9wZXJ0eSwgYm9vbCBwcm9wZXJ0eUhhc0Fz
c2lnbm1lbnRzLCBjb25zdCBKU1RleHRQb3NpdGlvbiYgc3RhcnQsIGNvbnN0IEpTVGV4dFBvc2l0
aW9uJiBkaXZvdCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGVuZCkKICAgICB7Ci0gICAgICAgIEJy
YWNrZXRBY2Nlc3Nvck5vZGUqIG5vZGUgPSBuZXcgKG1fdm0pIEJyYWNrZXRBY2Nlc3Nvck5vZGUo
bG9jYXRpb24sIGJhc2UsIHByb3BlcnR5LCBwcm9wZXJ0eUhhc0Fzc2lnbm1lbnRzKTsKKyAgICAg
ICAgQnJhY2tldEFjY2Vzc29yTm9kZSogbm9kZSA9IG5ldyAobV9wYXJzZXJBcmVuYSkgQnJhY2tl
dEFjY2Vzc29yTm9kZShsb2NhdGlvbiwgYmFzZSwgcHJvcGVydHksIHByb3BlcnR5SGFzQXNzaWdu
bWVudHMpOwogICAgICAgICBzZXRFeGNlcHRpb25Mb2NhdGlvbihub2RlLCBzdGFydCwgZGl2b3Qs
IGVuZCk7CiAgICAgICAgIHJldHVybiBub2RlOwogICAgIH0KIAogICAgIEV4cHJlc3Npb25Ob2Rl
KiBjcmVhdGVEb3RBY2Nlc3MoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgRXhwcmVz
c2lvbk5vZGUqIGJhc2UsIGNvbnN0IElkZW50aWZpZXIqIHByb3BlcnR5LCBjb25zdCBKU1RleHRQ
b3NpdGlvbiYgc3RhcnQsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdCwgY29uc3QgSlNUZXh0
UG9zaXRpb24mIGVuZCkKICAgICB7Ci0gICAgICAgIERvdEFjY2Vzc29yTm9kZSogbm9kZSA9IG5l
dyAobV92bSkgRG90QWNjZXNzb3JOb2RlKGxvY2F0aW9uLCBiYXNlLCAqcHJvcGVydHkpOworICAg
ICAgICBEb3RBY2Nlc3Nvck5vZGUqIG5vZGUgPSBuZXcgKG1fcGFyc2VyQXJlbmEpIERvdEFjY2Vz
c29yTm9kZShsb2NhdGlvbiwgYmFzZSwgKnByb3BlcnR5KTsKICAgICAgICAgc2V0RXhjZXB0aW9u
TG9jYXRpb24obm9kZSwgc3RhcnQsIGRpdm90LCBlbmQpOwogICAgICAgICByZXR1cm4gbm9kZTsK
ICAgICB9CiAKICAgICBFeHByZXNzaW9uTm9kZSogY3JlYXRlU3ByZWFkRXhwcmVzc2lvbihjb25z
dCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBFeHByZXNzaW9uTm9kZSogZXhwcmVzc2lvbiwg
Y29uc3QgSlNUZXh0UG9zaXRpb24mIHN0YXJ0LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3Qs
IGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBlbmQpCiAgICAgewotICAgICAgICBhdXRvIG5vZGUgPSBu
ZXcgKG1fdm0pIFNwcmVhZEV4cHJlc3Npb25Ob2RlKGxvY2F0aW9uLCBleHByZXNzaW9uKTsKKyAg
ICAgICAgYXV0byBub2RlID0gbmV3IChtX3BhcnNlckFyZW5hKSBTcHJlYWRFeHByZXNzaW9uTm9k
ZShsb2NhdGlvbiwgZXhwcmVzc2lvbik7CiAgICAgICAgIHNldEV4Y2VwdGlvbkxvY2F0aW9uKG5v
ZGUsIHN0YXJ0LCBkaXZvdCwgZW5kKTsKICAgICAgICAgcmV0dXJuIG5vZGU7CiAgICAgfQpAQCAt
MjQyLDcgKzI0Myw3IEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIGlmIChZYXJyOjpjaGVja1N5
bnRheChwYXR0ZXJuLnN0cmluZygpKSkKICAgICAgICAgICAgIHJldHVybiAwOwotICAgICAgICBS
ZWdFeHBOb2RlKiBub2RlID0gbmV3IChtX3ZtKSBSZWdFeHBOb2RlKGxvY2F0aW9uLCBwYXR0ZXJu
LCBmbGFncyk7CisgICAgICAgIFJlZ0V4cE5vZGUqIG5vZGUgPSBuZXcgKG1fcGFyc2VyQXJlbmEp
IFJlZ0V4cE5vZGUobG9jYXRpb24sIHBhdHRlcm4sIGZsYWdzKTsKICAgICAgICAgaW50IHNpemUg
PSBwYXR0ZXJuLmxlbmd0aCgpICsgMjsgLy8gKyAyIGZvciB0aGUgdHdvIC8ncwogICAgICAgICBK
U1RleHRQb3NpdGlvbiBlbmQgPSBzdGFydCArIHNpemU7CiAgICAgICAgIHNldEV4Y2VwdGlvbkxv
Y2F0aW9uKG5vZGUsIHN0YXJ0LCBlbmQsIGVuZCk7CkBAIC0yNTEsNDIgKzI1Miw0MiBAQCBwdWJs
aWM6CiAKICAgICBFeHByZXNzaW9uTm9kZSogY3JlYXRlTmV3RXhwcihjb25zdCBKU1Rva2VuTG9j
YXRpb24mIGxvY2F0aW9uLCBFeHByZXNzaW9uTm9kZSogZXhwciwgQXJndW1lbnRzTm9kZSogYXJn
dW1lbnRzLCBjb25zdCBKU1RleHRQb3NpdGlvbiYgc3RhcnQsIGNvbnN0IEpTVGV4dFBvc2l0aW9u
JiBkaXZvdCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGVuZCkKICAgICB7Ci0gICAgICAgIE5ld0V4
cHJOb2RlKiBub2RlID0gbmV3IChtX3ZtKSBOZXdFeHByTm9kZShsb2NhdGlvbiwgZXhwciwgYXJn
dW1lbnRzKTsKKyAgICAgICAgTmV3RXhwck5vZGUqIG5vZGUgPSBuZXcgKG1fcGFyc2VyQXJlbmEp
IE5ld0V4cHJOb2RlKGxvY2F0aW9uLCBleHByLCBhcmd1bWVudHMpOwogICAgICAgICBzZXRFeGNl
cHRpb25Mb2NhdGlvbihub2RlLCBzdGFydCwgZGl2b3QsIGVuZCk7CiAgICAgICAgIHJldHVybiBu
b2RlOwogICAgIH0KIAogICAgIEV4cHJlc3Npb25Ob2RlKiBjcmVhdGVOZXdFeHByKGNvbnN0IEpT
VG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIEV4cHJlc3Npb25Ob2RlKiBleHByLCBjb25zdCBKU1Rl
eHRQb3NpdGlvbiYgc3RhcnQsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBlbmQpCiAgICAgewotICAg
ICAgICBOZXdFeHByTm9kZSogbm9kZSA9IG5ldyAobV92bSkgTmV3RXhwck5vZGUobG9jYXRpb24s
IGV4cHIpOworICAgICAgICBOZXdFeHByTm9kZSogbm9kZSA9IG5ldyAobV9wYXJzZXJBcmVuYSkg
TmV3RXhwck5vZGUobG9jYXRpb24sIGV4cHIpOwogICAgICAgICBzZXRFeGNlcHRpb25Mb2NhdGlv
bihub2RlLCBzdGFydCwgZW5kLCBlbmQpOwogICAgICAgICByZXR1cm4gbm9kZTsKICAgICB9CiAK
ICAgICBFeHByZXNzaW9uTm9kZSogY3JlYXRlQ29uZGl0aW9uYWxFeHByKGNvbnN0IEpTVG9rZW5M
b2NhdGlvbiYgbG9jYXRpb24sIEV4cHJlc3Npb25Ob2RlKiBjb25kaXRpb24sIEV4cHJlc3Npb25O
b2RlKiBsaHMsIEV4cHJlc3Npb25Ob2RlKiByaHMpCiAgICAgewotICAgICAgICByZXR1cm4gbmV3
IChtX3ZtKSBDb25kaXRpb25hbE5vZGUobG9jYXRpb24sIGNvbmRpdGlvbiwgbGhzLCByaHMpOwor
ICAgICAgICByZXR1cm4gbmV3IChtX3BhcnNlckFyZW5hKSBDb25kaXRpb25hbE5vZGUobG9jYXRp
b24sIGNvbmRpdGlvbiwgbGhzLCByaHMpOwogICAgIH0KIAogICAgIEV4cHJlc3Npb25Ob2RlKiBj
cmVhdGVBc3NpZ25SZXNvbHZlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIGNvbnN0
IElkZW50aWZpZXImIGlkZW50LCBFeHByZXNzaW9uTm9kZSogcmhzLCBjb25zdCBKU1RleHRQb3Np
dGlvbiYgc3RhcnQsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdCwgY29uc3QgSlNUZXh0UG9z
aXRpb24mIGVuZCkKICAgICB7CiAgICAgICAgIGlmIChyaHMtPmlzRnVuY0V4cHJOb2RlKCkpCiAg
ICAgICAgICAgICBzdGF0aWNfY2FzdDxGdW5jRXhwck5vZGUqPihyaHMpLT5ib2R5KCktPnNldElu
ZmVycmVkTmFtZShpZGVudCk7Ci0gICAgICAgIEFzc2lnblJlc29sdmVOb2RlKiBub2RlID0gbmV3
IChtX3ZtKSBBc3NpZ25SZXNvbHZlTm9kZShsb2NhdGlvbiwgaWRlbnQsIHJocyk7CisgICAgICAg
IEFzc2lnblJlc29sdmVOb2RlKiBub2RlID0gbmV3IChtX3BhcnNlckFyZW5hKSBBc3NpZ25SZXNv
bHZlTm9kZShsb2NhdGlvbiwgaWRlbnQsIHJocyk7CiAgICAgICAgIHNldEV4Y2VwdGlvbkxvY2F0
aW9uKG5vZGUsIHN0YXJ0LCBkaXZvdCwgZW5kKTsKICAgICAgICAgcmV0dXJuIG5vZGU7CiAgICAg
fQogCiAgICAgRXhwcmVzc2lvbk5vZGUqIGNyZWF0ZUZ1bmN0aW9uRXhwcihjb25zdCBKU1Rva2Vu
TG9jYXRpb24mIGxvY2F0aW9uLCBjb25zdCBJZGVudGlmaWVyKiBuYW1lLCBGdW5jdGlvbkJvZHlO
b2RlKiBib2R5LCBQYXJhbWV0ZXJOb2RlKiBwYXJhbWV0ZXJzLCB1bnNpZ25lZCBvcGVuQnJhY2VP
ZmZzZXQsIHVuc2lnbmVkIGNsb3NlQnJhY2VPZmZzZXQsIGludCBib2R5U3RhcnRMaW5lLCBpbnQg
Ym9keUVuZExpbmUsIHVuc2lnbmVkIHN0YXJ0Q29sdW1uKQogICAgIHsKLSAgICAgICAgRnVuY0V4
cHJOb2RlKiByZXN1bHQgPSBuZXcgKG1fdm0pIEZ1bmNFeHByTm9kZShsb2NhdGlvbiwgKm5hbWUs
IGJvZHksIG1fc291cmNlQ29kZS0+c3ViRXhwcmVzc2lvbihvcGVuQnJhY2VPZmZzZXQsIGNsb3Nl
QnJhY2VPZmZzZXQsIGJvZHlTdGFydExpbmUsIHN0YXJ0Q29sdW1uKSwgcGFyYW1ldGVycyk7Cisg
ICAgICAgIEZ1bmNFeHByTm9kZSogcmVzdWx0ID0gbmV3IChtX3BhcnNlckFyZW5hKSBGdW5jRXhw
ck5vZGUobG9jYXRpb24sICpuYW1lLCBib2R5LCBtX3NvdXJjZUNvZGUtPnN1YkV4cHJlc3Npb24o
b3BlbkJyYWNlT2Zmc2V0LCBjbG9zZUJyYWNlT2Zmc2V0LCBib2R5U3RhcnRMaW5lLCBzdGFydENv
bHVtbiksIHBhcmFtZXRlcnMpOwogICAgICAgICBib2R5LT5zZXRMb2MoYm9keVN0YXJ0TGluZSwg
Ym9keUVuZExpbmUsIGxvY2F0aW9uLnN0YXJ0T2Zmc2V0LCBsb2NhdGlvbi5saW5lU3RhcnRPZmZz
ZXQpOwogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KIAogICAgIEZ1bmN0aW9uQm9keU5v
ZGUqIGNyZWF0ZUZ1bmN0aW9uQm9keShjb25zdCBKU1Rva2VuTG9jYXRpb24mIHN0YXJ0TG9jYXRp
b24sIGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgZW5kTG9jYXRpb24sIHVuc2lnbmVkIHN0YXJ0Q29s
dW1uLCB1bnNpZ25lZCBlbmRDb2x1bW4sIGJvb2wgaW5TdHJpY3RDb250ZXh0KQogICAgIHsKLSAg
ICAgICAgcmV0dXJuIEZ1bmN0aW9uQm9keU5vZGU6OmNyZWF0ZShtX3ZtLCBzdGFydExvY2F0aW9u
LCBlbmRMb2NhdGlvbiwgc3RhcnRDb2x1bW4sIGVuZENvbHVtbiwgaW5TdHJpY3RDb250ZXh0KTsK
KyAgICAgICAgcmV0dXJuIEZ1bmN0aW9uQm9keU5vZGU6OmNyZWF0ZShtX3BhcnNlckFyZW5hLCBz
dGFydExvY2F0aW9uLCBlbmRMb2NhdGlvbiwgc3RhcnRDb2x1bW4sIGVuZENvbHVtbiwgaW5TdHJp
Y3RDb250ZXh0KTsKICAgICB9CiAKICAgICB2b2lkIHNldEZ1bmN0aW9uTmFtZVN0YXJ0KEZ1bmN0
aW9uQm9keU5vZGUqIGJvZHksIGludCBmdW5jdGlvbk5hbWVTdGFydCkKQEAgLTI5OSw0OSArMzAw
LDQ5IEBAIHB1YmxpYzoKICAgICAgICAgQVNTRVJUKG5hbWUpOwogICAgICAgICBib2R5LT5zZXRM
b2MoYm9keVN0YXJ0TGluZSwgYm9keUVuZExpbmUsIGxvY2F0aW9uLnN0YXJ0T2Zmc2V0LCBsb2Nh
dGlvbi5saW5lU3RhcnRPZmZzZXQpOwogICAgICAgICBib2R5LT5zZXRJbmZlcnJlZE5hbWUoKm5h
bWUpOwotICAgICAgICByZXR1cm4gbmV3IChtX3ZtKSBQcm9wZXJ0eU5vZGUoKm5hbWUsIG5ldyAo
bV92bSkgRnVuY0V4cHJOb2RlKGxvY2F0aW9uLCBtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5udWxsSWRl
bnRpZmllciwgYm9keSwgbV9zb3VyY2VDb2RlLT5zdWJFeHByZXNzaW9uKG9wZW5CcmFjZU9mZnNl
dCwgY2xvc2VCcmFjZU9mZnNldCwgYm9keVN0YXJ0TGluZSwgYm9keVN0YXJ0Q29sdW1uKSwgcGFy
YW1zKSwgdHlwZSk7CisgICAgICAgIHJldHVybiBuZXcgKG1fcGFyc2VyQXJlbmEpIFByb3BlcnR5
Tm9kZSgqbmFtZSwgbmV3IChtX3BhcnNlckFyZW5hKSBGdW5jRXhwck5vZGUobG9jYXRpb24sIG1f
dm0tPnByb3BlcnR5TmFtZXMtPm51bGxJZGVudGlmaWVyLCBib2R5LCBtX3NvdXJjZUNvZGUtPnN1
YkV4cHJlc3Npb24ob3BlbkJyYWNlT2Zmc2V0LCBjbG9zZUJyYWNlT2Zmc2V0LCBib2R5U3RhcnRM
aW5lLCBib2R5U3RhcnRDb2x1bW4pLCBwYXJhbXMpLCB0eXBlKTsKICAgICB9CiAgICAgCi0gICAg
TkVWRVJfSU5MSU5FIFByb3BlcnR5Tm9kZSogY3JlYXRlR2V0dGVyT3JTZXR0ZXJQcm9wZXJ0eShW
TSosIGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIFByb3BlcnR5Tm9kZTo6VHlwZSB0
eXBlLCBib29sLCBkb3VibGUgbmFtZSwgUGFyYW1ldGVyTm9kZSogcGFyYW1zLCBGdW5jdGlvbkJv
ZHlOb2RlKiBib2R5LCB1bnNpZ25lZCBvcGVuQnJhY2VPZmZzZXQsIHVuc2lnbmVkIGNsb3NlQnJh
Y2VPZmZzZXQsIGludCBib2R5U3RhcnRMaW5lLCBpbnQgYm9keUVuZExpbmUsIHVuc2lnbmVkIGJv
ZHlTdGFydENvbHVtbikKKyAgICBORVZFUl9JTkxJTkUgUHJvcGVydHlOb2RlKiBjcmVhdGVHZXR0
ZXJPclNldHRlclByb3BlcnR5KFZNKiB2bSwgUGFyc2VyQXJlbmEmIHBhcnNlckFyZW5hLCBjb25z
dCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBQcm9wZXJ0eU5vZGU6OlR5cGUgdHlwZSwgYm9v
bCwgZG91YmxlIG5hbWUsIFBhcmFtZXRlck5vZGUqIHBhcmFtcywgRnVuY3Rpb25Cb2R5Tm9kZSog
Ym9keSwgdW5zaWduZWQgb3BlbkJyYWNlT2Zmc2V0LCB1bnNpZ25lZCBjbG9zZUJyYWNlT2Zmc2V0
LCBpbnQgYm9keVN0YXJ0TGluZSwgaW50IGJvZHlFbmRMaW5lLCB1bnNpZ25lZCBib2R5U3RhcnRD
b2x1bW4pCiAgICAgewogICAgICAgICBib2R5LT5zZXRMb2MoYm9keVN0YXJ0TGluZSwgYm9keUVu
ZExpbmUsIGxvY2F0aW9uLnN0YXJ0T2Zmc2V0LCBsb2NhdGlvbi5saW5lU3RhcnRPZmZzZXQpOwot
ICAgICAgICByZXR1cm4gbmV3IChtX3ZtKSBQcm9wZXJ0eU5vZGUobV92bS0+cGFyc2VyQXJlbmEt
PmlkZW50aWZpZXJBcmVuYSgpLm1ha2VOdW1lcmljSWRlbnRpZmllcihtX3ZtLCBuYW1lKSwgbmV3
IChtX3ZtKSBGdW5jRXhwck5vZGUobG9jYXRpb24sIG1fdm0tPnByb3BlcnR5TmFtZXMtPm51bGxJ
ZGVudGlmaWVyLCBib2R5LCBtX3NvdXJjZUNvZGUtPnN1YkV4cHJlc3Npb24ob3BlbkJyYWNlT2Zm
c2V0LCBjbG9zZUJyYWNlT2Zmc2V0LCBib2R5U3RhcnRMaW5lLCBib2R5U3RhcnRDb2x1bW4pLCBw
YXJhbXMpLCB0eXBlKTsKKyAgICAgICAgcmV0dXJuIG5ldyAobV9wYXJzZXJBcmVuYSkgUHJvcGVy
dHlOb2RlKHBhcnNlckFyZW5hLmlkZW50aWZpZXJBcmVuYSgpLm1ha2VOdW1lcmljSWRlbnRpZmll
cih2bSwgbmFtZSksIG5ldyAobV9wYXJzZXJBcmVuYSkgRnVuY0V4cHJOb2RlKGxvY2F0aW9uLCB2
bS0+cHJvcGVydHlOYW1lcy0+bnVsbElkZW50aWZpZXIsIGJvZHksIG1fc291cmNlQ29kZS0+c3Vi
RXhwcmVzc2lvbihvcGVuQnJhY2VPZmZzZXQsIGNsb3NlQnJhY2VPZmZzZXQsIGJvZHlTdGFydExp
bmUsIGJvZHlTdGFydENvbHVtbiksIHBhcmFtcyksIHR5cGUpOwogICAgIH0KIAotICAgIEFyZ3Vt
ZW50c05vZGUqIGNyZWF0ZUFyZ3VtZW50cygpIHsgcmV0dXJuIG5ldyAobV92bSkgQXJndW1lbnRz
Tm9kZSgpOyB9Ci0gICAgQXJndW1lbnRzTm9kZSogY3JlYXRlQXJndW1lbnRzKEFyZ3VtZW50TGlz
dE5vZGUqIGFyZ3MpIHsgcmV0dXJuIG5ldyAobV92bSkgQXJndW1lbnRzTm9kZShhcmdzKTsgfQot
ICAgIEFyZ3VtZW50TGlzdE5vZGUqIGNyZWF0ZUFyZ3VtZW50c0xpc3QoY29uc3QgSlNUb2tlbkxv
Y2F0aW9uJiBsb2NhdGlvbiwgRXhwcmVzc2lvbk5vZGUqIGFyZykgeyByZXR1cm4gbmV3IChtX3Zt
KSBBcmd1bWVudExpc3ROb2RlKGxvY2F0aW9uLCBhcmcpOyB9Ci0gICAgQXJndW1lbnRMaXN0Tm9k
ZSogY3JlYXRlQXJndW1lbnRzTGlzdChjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBB
cmd1bWVudExpc3ROb2RlKiBhcmdzLCBFeHByZXNzaW9uTm9kZSogYXJnKSB7IHJldHVybiBuZXcg
KG1fdm0pIEFyZ3VtZW50TGlzdE5vZGUobG9jYXRpb24sIGFyZ3MsIGFyZyk7IH0KKyAgICBBcmd1
bWVudHNOb2RlKiBjcmVhdGVBcmd1bWVudHMoKSB7IHJldHVybiBuZXcgKG1fcGFyc2VyQXJlbmEp
IEFyZ3VtZW50c05vZGUoKTsgfQorICAgIEFyZ3VtZW50c05vZGUqIGNyZWF0ZUFyZ3VtZW50cyhB
cmd1bWVudExpc3ROb2RlKiBhcmdzKSB7IHJldHVybiBuZXcgKG1fcGFyc2VyQXJlbmEpIEFyZ3Vt
ZW50c05vZGUoYXJncyk7IH0KKyAgICBBcmd1bWVudExpc3ROb2RlKiBjcmVhdGVBcmd1bWVudHNM
aXN0KGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIEV4cHJlc3Npb25Ob2RlKiBhcmcp
IHsgcmV0dXJuIG5ldyAobV9wYXJzZXJBcmVuYSkgQXJndW1lbnRMaXN0Tm9kZShsb2NhdGlvbiwg
YXJnKTsgfQorICAgIEFyZ3VtZW50TGlzdE5vZGUqIGNyZWF0ZUFyZ3VtZW50c0xpc3QoY29uc3Qg
SlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgQXJndW1lbnRMaXN0Tm9kZSogYXJncywgRXhwcmVz
c2lvbk5vZGUqIGFyZykgeyByZXR1cm4gbmV3IChtX3BhcnNlckFyZW5hKSBBcmd1bWVudExpc3RO
b2RlKGxvY2F0aW9uLCBhcmdzLCBhcmcpOyB9CiAKICAgICBQcm9wZXJ0eU5vZGUqIGNyZWF0ZVBy
b3BlcnR5KGNvbnN0IElkZW50aWZpZXIqIHByb3BlcnR5TmFtZSwgRXhwcmVzc2lvbk5vZGUqIG5v
ZGUsIFByb3BlcnR5Tm9kZTo6VHlwZSB0eXBlLCBib29sKQogICAgIHsKICAgICAgICAgaWYgKG5v
ZGUtPmlzRnVuY0V4cHJOb2RlKCkpCiAgICAgICAgICAgICBzdGF0aWNfY2FzdDxGdW5jRXhwck5v
ZGUqPihub2RlKS0+Ym9keSgpLT5zZXRJbmZlcnJlZE5hbWUoKnByb3BlcnR5TmFtZSk7Ci0gICAg
ICAgIHJldHVybiBuZXcgKG1fdm0pIFByb3BlcnR5Tm9kZSgqcHJvcGVydHlOYW1lLCBub2RlLCB0
eXBlKTsKKyAgICAgICAgcmV0dXJuIG5ldyAobV9wYXJzZXJBcmVuYSkgUHJvcGVydHlOb2RlKCpw
cm9wZXJ0eU5hbWUsIG5vZGUsIHR5cGUpOwogICAgIH0KLSAgICBQcm9wZXJ0eU5vZGUqIGNyZWF0
ZVByb3BlcnR5KFZNKiwgZG91YmxlIHByb3BlcnR5TmFtZSwgRXhwcmVzc2lvbk5vZGUqIG5vZGUs
IFByb3BlcnR5Tm9kZTo6VHlwZSB0eXBlLCBib29sKQorICAgIFByb3BlcnR5Tm9kZSogY3JlYXRl
UHJvcGVydHkoVk0qIHZtLCBQYXJzZXJBcmVuYSYgcGFyc2VyQXJlbmEsIGRvdWJsZSBwcm9wZXJ0
eU5hbWUsIEV4cHJlc3Npb25Ob2RlKiBub2RlLCBQcm9wZXJ0eU5vZGU6OlR5cGUgdHlwZSwgYm9v
bCkKICAgICB7Ci0gICAgICAgIHJldHVybiBuZXcgKG1fdm0pIFByb3BlcnR5Tm9kZShtX3ZtLT5w
YXJzZXJBcmVuYS0+aWRlbnRpZmllckFyZW5hKCkubWFrZU51bWVyaWNJZGVudGlmaWVyKG1fdm0s
IHByb3BlcnR5TmFtZSksIG5vZGUsIHR5cGUpOworICAgICAgICByZXR1cm4gbmV3IChtX3BhcnNl
ckFyZW5hKSBQcm9wZXJ0eU5vZGUocGFyc2VyQXJlbmEuaWRlbnRpZmllckFyZW5hKCkubWFrZU51
bWVyaWNJZGVudGlmaWVyKHZtLCBwcm9wZXJ0eU5hbWUpLCBub2RlLCB0eXBlKTsKICAgICB9Ci0g
ICAgUHJvcGVydHlOb2RlKiBjcmVhdGVQcm9wZXJ0eShFeHByZXNzaW9uTm9kZSogcHJvcGVydHlO
YW1lLCBFeHByZXNzaW9uTm9kZSogbm9kZSwgUHJvcGVydHlOb2RlOjpUeXBlIHR5cGUsIGJvb2wp
IHsgcmV0dXJuIG5ldyAobV92bSkgUHJvcGVydHlOb2RlKHByb3BlcnR5TmFtZSwgbm9kZSwgdHlw
ZSk7IH0KLSAgICBQcm9wZXJ0eUxpc3ROb2RlKiBjcmVhdGVQcm9wZXJ0eUxpc3QoY29uc3QgSlNU
b2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgUHJvcGVydHlOb2RlKiBwcm9wZXJ0eSkgeyByZXR1cm4g
bmV3IChtX3ZtKSBQcm9wZXJ0eUxpc3ROb2RlKGxvY2F0aW9uLCBwcm9wZXJ0eSk7IH0KLSAgICBQ
cm9wZXJ0eUxpc3ROb2RlKiBjcmVhdGVQcm9wZXJ0eUxpc3QoY29uc3QgSlNUb2tlbkxvY2F0aW9u
JiBsb2NhdGlvbiwgUHJvcGVydHlOb2RlKiBwcm9wZXJ0eSwgUHJvcGVydHlMaXN0Tm9kZSogdGFp
bCkgeyByZXR1cm4gbmV3IChtX3ZtKSBQcm9wZXJ0eUxpc3ROb2RlKGxvY2F0aW9uLCBwcm9wZXJ0
eSwgdGFpbCk7IH0KKyAgICBQcm9wZXJ0eU5vZGUqIGNyZWF0ZVByb3BlcnR5KEV4cHJlc3Npb25O
b2RlKiBwcm9wZXJ0eU5hbWUsIEV4cHJlc3Npb25Ob2RlKiBub2RlLCBQcm9wZXJ0eU5vZGU6OlR5
cGUgdHlwZSwgYm9vbCkgeyByZXR1cm4gbmV3IChtX3BhcnNlckFyZW5hKSBQcm9wZXJ0eU5vZGUo
cHJvcGVydHlOYW1lLCBub2RlLCB0eXBlKTsgfQorICAgIFByb3BlcnR5TGlzdE5vZGUqIGNyZWF0
ZVByb3BlcnR5TGlzdChjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBQcm9wZXJ0eU5v
ZGUqIHByb3BlcnR5KSB7IHJldHVybiBuZXcgKG1fcGFyc2VyQXJlbmEpIFByb3BlcnR5TGlzdE5v
ZGUobG9jYXRpb24sIHByb3BlcnR5KTsgfQorICAgIFByb3BlcnR5TGlzdE5vZGUqIGNyZWF0ZVBy
b3BlcnR5TGlzdChjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBQcm9wZXJ0eU5vZGUq
IHByb3BlcnR5LCBQcm9wZXJ0eUxpc3ROb2RlKiB0YWlsKSB7IHJldHVybiBuZXcgKG1fcGFyc2Vy
QXJlbmEpIFByb3BlcnR5TGlzdE5vZGUobG9jYXRpb24sIHByb3BlcnR5LCB0YWlsKTsgfQogCi0g
ICAgRWxlbWVudE5vZGUqIGNyZWF0ZUVsZW1lbnRMaXN0KGludCBlbGlzaW9ucywgRXhwcmVzc2lv
bk5vZGUqIGV4cHIpIHsgcmV0dXJuIG5ldyAobV92bSkgRWxlbWVudE5vZGUoZWxpc2lvbnMsIGV4
cHIpOyB9Ci0gICAgRWxlbWVudE5vZGUqIGNyZWF0ZUVsZW1lbnRMaXN0KEVsZW1lbnROb2RlKiBl
bGVtcywgaW50IGVsaXNpb25zLCBFeHByZXNzaW9uTm9kZSogZXhwcikgeyByZXR1cm4gbmV3ICht
X3ZtKSBFbGVtZW50Tm9kZShlbGVtcywgZWxpc2lvbnMsIGV4cHIpOyB9CisgICAgRWxlbWVudE5v
ZGUqIGNyZWF0ZUVsZW1lbnRMaXN0KGludCBlbGlzaW9ucywgRXhwcmVzc2lvbk5vZGUqIGV4cHIp
IHsgcmV0dXJuIG5ldyAobV9wYXJzZXJBcmVuYSkgRWxlbWVudE5vZGUoZWxpc2lvbnMsIGV4cHIp
OyB9CisgICAgRWxlbWVudE5vZGUqIGNyZWF0ZUVsZW1lbnRMaXN0KEVsZW1lbnROb2RlKiBlbGVt
cywgaW50IGVsaXNpb25zLCBFeHByZXNzaW9uTm9kZSogZXhwcikgeyByZXR1cm4gbmV3IChtX3Bh
cnNlckFyZW5hKSBFbGVtZW50Tm9kZShlbGVtcywgZWxpc2lvbnMsIGV4cHIpOyB9CiAKLSAgICBQ
YXJhbWV0ZXJOb2RlKiBjcmVhdGVGb3JtYWxQYXJhbWV0ZXJMaXN0KERlY29uc3RydWN0aW9uUGF0
dGVybiBwYXR0ZXJuKSB7IHJldHVybiBuZXcgKG1fdm0pIFBhcmFtZXRlck5vZGUocGF0dGVybik7
IH0KLSAgICBQYXJhbWV0ZXJOb2RlKiBjcmVhdGVGb3JtYWxQYXJhbWV0ZXJMaXN0KFBhcmFtZXRl
ck5vZGUqIGxpc3QsIERlY29uc3RydWN0aW9uUGF0dGVybiBwYXR0ZXJuKSB7IHJldHVybiBuZXcg
KG1fdm0pIFBhcmFtZXRlck5vZGUobGlzdCwgcGF0dGVybik7IH0KKyAgICBQYXJhbWV0ZXJOb2Rl
KiBjcmVhdGVGb3JtYWxQYXJhbWV0ZXJMaXN0KERlY29uc3RydWN0aW9uUGF0dGVybiBwYXR0ZXJu
KSB7IHJldHVybiBuZXcgKG1fcGFyc2VyQXJlbmEpIFBhcmFtZXRlck5vZGUocGF0dGVybik7IH0K
KyAgICBQYXJhbWV0ZXJOb2RlKiBjcmVhdGVGb3JtYWxQYXJhbWV0ZXJMaXN0KFBhcmFtZXRlck5v
ZGUqIGxpc3QsIERlY29uc3RydWN0aW9uUGF0dGVybiBwYXR0ZXJuKSB7IHJldHVybiBuZXcgKG1f
cGFyc2VyQXJlbmEpIFBhcmFtZXRlck5vZGUobGlzdCwgcGF0dGVybik7IH0KIAotICAgIENhc2VD
bGF1c2VOb2RlKiBjcmVhdGVDbGF1c2UoRXhwcmVzc2lvbk5vZGUqIGV4cHIsIEpTQzo6U291cmNl
RWxlbWVudHMqIHN0YXRlbWVudHMpIHsgcmV0dXJuIG5ldyAobV92bSkgQ2FzZUNsYXVzZU5vZGUo
ZXhwciwgc3RhdGVtZW50cyk7IH0KLSAgICBDbGF1c2VMaXN0Tm9kZSogY3JlYXRlQ2xhdXNlTGlz
dChDYXNlQ2xhdXNlTm9kZSogY2xhdXNlKSB7IHJldHVybiBuZXcgKG1fdm0pIENsYXVzZUxpc3RO
b2RlKGNsYXVzZSk7IH0KLSAgICBDbGF1c2VMaXN0Tm9kZSogY3JlYXRlQ2xhdXNlTGlzdChDbGF1
c2VMaXN0Tm9kZSogdGFpbCwgQ2FzZUNsYXVzZU5vZGUqIGNsYXVzZSkgeyByZXR1cm4gbmV3ICht
X3ZtKSBDbGF1c2VMaXN0Tm9kZSh0YWlsLCBjbGF1c2UpOyB9CisgICAgQ2FzZUNsYXVzZU5vZGUq
IGNyZWF0ZUNsYXVzZShFeHByZXNzaW9uTm9kZSogZXhwciwgSlNDOjpTb3VyY2VFbGVtZW50cyog
c3RhdGVtZW50cykgeyByZXR1cm4gbmV3IChtX3BhcnNlckFyZW5hKSBDYXNlQ2xhdXNlTm9kZShl
eHByLCBzdGF0ZW1lbnRzKTsgfQorICAgIENsYXVzZUxpc3ROb2RlKiBjcmVhdGVDbGF1c2VMaXN0
KENhc2VDbGF1c2VOb2RlKiBjbGF1c2UpIHsgcmV0dXJuIG5ldyAobV9wYXJzZXJBcmVuYSkgQ2xh
dXNlTGlzdE5vZGUoY2xhdXNlKTsgfQorICAgIENsYXVzZUxpc3ROb2RlKiBjcmVhdGVDbGF1c2VM
aXN0KENsYXVzZUxpc3ROb2RlKiB0YWlsLCBDYXNlQ2xhdXNlTm9kZSogY2xhdXNlKSB7IHJldHVy
biBuZXcgKG1fcGFyc2VyQXJlbmEpIENsYXVzZUxpc3ROb2RlKHRhaWwsIGNsYXVzZSk7IH0KIAog
ICAgIHZvaWQgc2V0VXNlc0FyZ3VtZW50cyhGdW5jdGlvbkJvZHlOb2RlKiBub2RlKSB7IG5vZGUt
PnNldFVzZXNBcmd1bWVudHMoKTsgfQogCiAgICAgU3RhdGVtZW50Tm9kZSogY3JlYXRlRnVuY0Rl
Y2xTdGF0ZW1lbnQoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgY29uc3QgSWRlbnRp
ZmllciogbmFtZSwgRnVuY3Rpb25Cb2R5Tm9kZSogYm9keSwgUGFyYW1ldGVyTm9kZSogcGFyYW1l
dGVycywgdW5zaWduZWQgb3BlbkJyYWNlT2Zmc2V0LCB1bnNpZ25lZCBjbG9zZUJyYWNlT2Zmc2V0
LCBpbnQgYm9keVN0YXJ0TGluZSwgaW50IGJvZHlFbmRMaW5lLCB1bnNpZ25lZCBib2R5U3RhcnRD
b2x1bW4pCiAgICAgewotICAgICAgICBGdW5jRGVjbE5vZGUqIGRlY2wgPSBuZXcgKG1fdm0pIEZ1
bmNEZWNsTm9kZShsb2NhdGlvbiwgKm5hbWUsIGJvZHksIG1fc291cmNlQ29kZS0+c3ViRXhwcmVz
c2lvbihvcGVuQnJhY2VPZmZzZXQsIGNsb3NlQnJhY2VPZmZzZXQsIGJvZHlTdGFydExpbmUsIGJv
ZHlTdGFydENvbHVtbiksIHBhcmFtZXRlcnMpOworICAgICAgICBGdW5jRGVjbE5vZGUqIGRlY2wg
PSBuZXcgKG1fcGFyc2VyQXJlbmEpIEZ1bmNEZWNsTm9kZShsb2NhdGlvbiwgKm5hbWUsIGJvZHks
IG1fc291cmNlQ29kZS0+c3ViRXhwcmVzc2lvbihvcGVuQnJhY2VPZmZzZXQsIGNsb3NlQnJhY2VP
ZmZzZXQsIGJvZHlTdGFydExpbmUsIGJvZHlTdGFydENvbHVtbiksIHBhcmFtZXRlcnMpOwogICAg
ICAgICBpZiAoKm5hbWUgPT0gbV92bS0+cHJvcGVydHlOYW1lcy0+YXJndW1lbnRzKQogICAgICAg
ICAgICAgdXNlc0FyZ3VtZW50cygpOwogICAgICAgICBtX3Njb3BlLm1fZnVuY0RlY2xhcmF0aW9u
cy0+ZGF0YS5hcHBlbmQoZGVjbC0+Ym9keSgpKTsKQEAgLTM1MSwzNSArMzUyLDM1IEBAIHB1Ymxp
YzoKIAogICAgIFN0YXRlbWVudE5vZGUqIGNyZWF0ZUJsb2NrU3RhdGVtZW50KGNvbnN0IEpTVG9r
ZW5Mb2NhdGlvbiYgbG9jYXRpb24sIEpTQzo6U291cmNlRWxlbWVudHMqIGVsZW1lbnRzLCBpbnQg
c3RhcnRMaW5lLCBpbnQgZW5kTGluZSkKICAgICB7Ci0gICAgICAgIEJsb2NrTm9kZSogYmxvY2sg
PSBuZXcgKG1fdm0pIEJsb2NrTm9kZShsb2NhdGlvbiwgZWxlbWVudHMpOworICAgICAgICBCbG9j
a05vZGUqIGJsb2NrID0gbmV3IChtX3BhcnNlckFyZW5hKSBCbG9ja05vZGUobG9jYXRpb24sIGVs
ZW1lbnRzKTsKICAgICAgICAgYmxvY2stPnNldExvYyhzdGFydExpbmUsIGVuZExpbmUsIGxvY2F0
aW9uLnN0YXJ0T2Zmc2V0LCBsb2NhdGlvbi5saW5lU3RhcnRPZmZzZXQpOwogICAgICAgICByZXR1
cm4gYmxvY2s7CiAgICAgfQogCiAgICAgU3RhdGVtZW50Tm9kZSogY3JlYXRlRXhwclN0YXRlbWVu
dChjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBFeHByZXNzaW9uTm9kZSogZXhwciwg
Y29uc3QgSlNUZXh0UG9zaXRpb24mIHN0YXJ0LCBpbnQgZW5kKQogICAgIHsKLSAgICAgICAgRXhw
clN0YXRlbWVudE5vZGUqIHJlc3VsdCA9IG5ldyAobV92bSkgRXhwclN0YXRlbWVudE5vZGUobG9j
YXRpb24sIGV4cHIpOworICAgICAgICBFeHByU3RhdGVtZW50Tm9kZSogcmVzdWx0ID0gbmV3ICht
X3BhcnNlckFyZW5hKSBFeHByU3RhdGVtZW50Tm9kZShsb2NhdGlvbiwgZXhwcik7CiAgICAgICAg
IHJlc3VsdC0+c2V0TG9jKHN0YXJ0LmxpbmUsIGVuZCwgc3RhcnQub2Zmc2V0LCBzdGFydC5saW5l
U3RhcnRPZmZzZXQpOwogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KIAogICAgIFN0YXRl
bWVudE5vZGUqIGNyZWF0ZUlmU3RhdGVtZW50KGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRp
b24sIEV4cHJlc3Npb25Ob2RlKiBjb25kaXRpb24sIFN0YXRlbWVudE5vZGUqIHRydWVCbG9jaywg
U3RhdGVtZW50Tm9kZSogZmFsc2VCbG9jaywgaW50IHN0YXJ0LCBpbnQgZW5kKQogICAgIHsKLSAg
ICAgICAgSWZFbHNlTm9kZSogcmVzdWx0ID0gbmV3IChtX3ZtKSBJZkVsc2VOb2RlKGxvY2F0aW9u
LCBjb25kaXRpb24sIHRydWVCbG9jaywgZmFsc2VCbG9jayk7CisgICAgICAgIElmRWxzZU5vZGUq
IHJlc3VsdCA9IG5ldyAobV9wYXJzZXJBcmVuYSkgSWZFbHNlTm9kZShsb2NhdGlvbiwgY29uZGl0
aW9uLCB0cnVlQmxvY2ssIGZhbHNlQmxvY2spOwogICAgICAgICByZXN1bHQtPnNldExvYyhzdGFy
dCwgZW5kLCBsb2NhdGlvbi5zdGFydE9mZnNldCwgbG9jYXRpb24ubGluZVN0YXJ0T2Zmc2V0KTsK
ICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CiAKICAgICBTdGF0ZW1lbnROb2RlKiBjcmVh
dGVGb3JMb29wKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIEV4cHJlc3Npb25Ob2Rl
KiBpbml0aWFsaXplciwgRXhwcmVzc2lvbk5vZGUqIGNvbmRpdGlvbiwgRXhwcmVzc2lvbk5vZGUq
IGl0ZXIsIFN0YXRlbWVudE5vZGUqIHN0YXRlbWVudHMsIGludCBzdGFydCwgaW50IGVuZCkKICAg
ICB7Ci0gICAgICAgIEZvck5vZGUqIHJlc3VsdCA9IG5ldyAobV92bSkgRm9yTm9kZShsb2NhdGlv
biwgaW5pdGlhbGl6ZXIsIGNvbmRpdGlvbiwgaXRlciwgc3RhdGVtZW50cyk7CisgICAgICAgIEZv
ck5vZGUqIHJlc3VsdCA9IG5ldyAobV9wYXJzZXJBcmVuYSkgRm9yTm9kZShsb2NhdGlvbiwgaW5p
dGlhbGl6ZXIsIGNvbmRpdGlvbiwgaXRlciwgc3RhdGVtZW50cyk7CiAgICAgICAgIHJlc3VsdC0+
c2V0TG9jKHN0YXJ0LCBlbmQsIGxvY2F0aW9uLnN0YXJ0T2Zmc2V0LCBsb2NhdGlvbi5saW5lU3Rh
cnRPZmZzZXQpOwogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KIAogICAgIFN0YXRlbWVu
dE5vZGUqIGNyZWF0ZUZvckluTG9vcChjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBF
eHByZXNzaW9uTm9kZSogbGhzLCBFeHByZXNzaW9uTm9kZSogaXRlciwgU3RhdGVtZW50Tm9kZSog
c3RhdGVtZW50cywgY29uc3QgSlNUZXh0UG9zaXRpb24mIGVTdGFydCwgY29uc3QgSlNUZXh0UG9z
aXRpb24mIGVEaXZvdCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGVFbmQsIGludCBzdGFydCwgaW50
IGVuZCkKICAgICB7Ci0gICAgICAgIEZvckluTm9kZSogcmVzdWx0ID0gbmV3IChtX3ZtKSBGb3JJ
bk5vZGUobG9jYXRpb24sIGxocywgaXRlciwgc3RhdGVtZW50cyk7CisgICAgICAgIEZvckluTm9k
ZSogcmVzdWx0ID0gbmV3IChtX3BhcnNlckFyZW5hKSBGb3JJbk5vZGUobG9jYXRpb24sIGxocywg
aXRlciwgc3RhdGVtZW50cyk7CiAgICAgICAgIHJlc3VsdC0+c2V0TG9jKHN0YXJ0LCBlbmQsIGxv
Y2F0aW9uLnN0YXJ0T2Zmc2V0LCBsb2NhdGlvbi5saW5lU3RhcnRPZmZzZXQpOwogICAgICAgICBz
ZXRFeGNlcHRpb25Mb2NhdGlvbihyZXN1bHQsIGVTdGFydCwgZURpdm90LCBlRW5kKTsKICAgICAg
ICAgcmV0dXJuIHJlc3VsdDsKQEAgLTM4NywxMyArMzg4LDEzIEBAIHB1YmxpYzoKICAgICAKICAg
ICBTdGF0ZW1lbnROb2RlKiBjcmVhdGVGb3JJbkxvb3AoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBs
b2NhdGlvbiwgUGFzc1JlZlB0cjxEZWNvbnN0cnVjdGlvblBhdHRlcm5Ob2RlPiBwYXR0ZXJuLCBF
eHByZXNzaW9uTm9kZSogaXRlciwgU3RhdGVtZW50Tm9kZSogc3RhdGVtZW50cywgY29uc3QgSlNU
ZXh0UG9zaXRpb24mIGVTdGFydCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGVEaXZvdCwgY29uc3Qg
SlNUZXh0UG9zaXRpb24mIGVFbmQsIGludCBzdGFydCwgaW50IGVuZCkKICAgICB7Ci0gICAgICAg
IGF1dG8gbGV4cHIgPSBuZXcgKG1fdm0pIERlY29uc3RydWN0aW5nQXNzaWdubWVudE5vZGUobG9j
YXRpb24sIHBhdHRlcm4uZ2V0KCksIDApOworICAgICAgICBhdXRvIGxleHByID0gbmV3IChtX3Bh
cnNlckFyZW5hKSBEZWNvbnN0cnVjdGluZ0Fzc2lnbm1lbnROb2RlKGxvY2F0aW9uLCBwYXR0ZXJu
LmdldCgpLCAwKTsKICAgICAgICAgcmV0dXJuIGNyZWF0ZUZvckluTG9vcChsb2NhdGlvbiwgbGV4
cHIsIGl0ZXIsIHN0YXRlbWVudHMsIGVTdGFydCwgZURpdm90LCBlRW5kLCBzdGFydCwgZW5kKTsK
ICAgICB9CiAgICAgCiAgICAgU3RhdGVtZW50Tm9kZSogY3JlYXRlRm9yT2ZMb29wKGNvbnN0IEpT
VG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIEV4cHJlc3Npb25Ob2RlKiBsaHMsIEV4cHJlc3Npb25O
b2RlKiBpdGVyLCBTdGF0ZW1lbnROb2RlKiBzdGF0ZW1lbnRzLCBjb25zdCBKU1RleHRQb3NpdGlv
biYgZVN0YXJ0LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZURpdm90LCBjb25zdCBKU1RleHRQb3Np
dGlvbiYgZUVuZCwgaW50IHN0YXJ0LCBpbnQgZW5kKQogICAgIHsKLSAgICAgICAgRm9yT2ZOb2Rl
KiByZXN1bHQgPSBuZXcgKG1fdm0pIEZvck9mTm9kZShsb2NhdGlvbiwgbGhzLCBpdGVyLCBzdGF0
ZW1lbnRzKTsKKyAgICAgICAgRm9yT2ZOb2RlKiByZXN1bHQgPSBuZXcgKG1fcGFyc2VyQXJlbmEp
IEZvck9mTm9kZShsb2NhdGlvbiwgbGhzLCBpdGVyLCBzdGF0ZW1lbnRzKTsKICAgICAgICAgcmVz
dWx0LT5zZXRMb2Moc3RhcnQsIGVuZCwgbG9jYXRpb24uc3RhcnRPZmZzZXQsIGxvY2F0aW9uLmxp
bmVTdGFydE9mZnNldCk7CiAgICAgICAgIHNldEV4Y2VwdGlvbkxvY2F0aW9uKHJlc3VsdCwgZVN0
YXJ0LCBlRGl2b3QsIGVFbmQpOwogICAgICAgICByZXR1cm4gcmVzdWx0OwpAQCAtNDAxLDcgKzQw
Miw3IEBAIHB1YmxpYzoKICAgICAKICAgICBTdGF0ZW1lbnROb2RlKiBjcmVhdGVGb3JPZkxvb3Ao
Y29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgUGFzc1JlZlB0cjxEZWNvbnN0cnVjdGlv
blBhdHRlcm5Ob2RlPiBwYXR0ZXJuLCBFeHByZXNzaW9uTm9kZSogaXRlciwgU3RhdGVtZW50Tm9k
ZSogc3RhdGVtZW50cywgY29uc3QgSlNUZXh0UG9zaXRpb24mIGVTdGFydCwgY29uc3QgSlNUZXh0
UG9zaXRpb24mIGVEaXZvdCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGVFbmQsIGludCBzdGFydCwg
aW50IGVuZCkKICAgICB7Ci0gICAgICAgIGF1dG8gbGV4cHIgPSBuZXcgKG1fdm0pIERlY29uc3Ry
dWN0aW5nQXNzaWdubWVudE5vZGUobG9jYXRpb24sIHBhdHRlcm4uZ2V0KCksIDApOworICAgICAg
ICBhdXRvIGxleHByID0gbmV3IChtX3BhcnNlckFyZW5hKSBEZWNvbnN0cnVjdGluZ0Fzc2lnbm1l
bnROb2RlKGxvY2F0aW9uLCBwYXR0ZXJuLmdldCgpLCAwKTsKICAgICAgICAgcmV0dXJuIGNyZWF0
ZUZvck9mTG9vcChsb2NhdGlvbiwgbGV4cHIsIGl0ZXIsIHN0YXRlbWVudHMsIGVTdGFydCwgZURp
dm90LCBlRW5kLCBzdGFydCwgZW5kKTsKICAgICB9CiAKQEAgLTQxMCwyNCArNDExLDI0IEBAIHB1
YmxpYzoKICAgICAgICAgcmV0dXJuIHBhdHRlcm4tPmlzQmluZGluZ05vZGUoKTsKICAgICB9CiAK
LSAgICBTdGF0ZW1lbnROb2RlKiBjcmVhdGVFbXB0eVN0YXRlbWVudChjb25zdCBKU1Rva2VuTG9j
YXRpb24mIGxvY2F0aW9uKSB7IHJldHVybiBuZXcgKG1fdm0pIEVtcHR5U3RhdGVtZW50Tm9kZShs
b2NhdGlvbik7IH0KKyAgICBTdGF0ZW1lbnROb2RlKiBjcmVhdGVFbXB0eVN0YXRlbWVudChjb25z
dCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uKSB7IHJldHVybiBuZXcgKG1fcGFyc2VyQXJlbmEp
IEVtcHR5U3RhdGVtZW50Tm9kZShsb2NhdGlvbik7IH0KIAogICAgIFN0YXRlbWVudE5vZGUqIGNy
ZWF0ZVZhclN0YXRlbWVudChjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBFeHByZXNz
aW9uTm9kZSogZXhwciwgaW50IHN0YXJ0LCBpbnQgZW5kKQogICAgIHsKICAgICAgICAgU3RhdGVt
ZW50Tm9kZSogcmVzdWx0OwotICAgICAgICByZXN1bHQgPSBuZXcgKG1fdm0pIFZhclN0YXRlbWVu
dE5vZGUobG9jYXRpb24sIGV4cHIpOworICAgICAgICByZXN1bHQgPSBuZXcgKG1fcGFyc2VyQXJl
bmEpIFZhclN0YXRlbWVudE5vZGUobG9jYXRpb24sIGV4cHIpOwogICAgICAgICByZXN1bHQtPnNl
dExvYyhzdGFydCwgZW5kLCBsb2NhdGlvbi5zdGFydE9mZnNldCwgbG9jYXRpb24ubGluZVN0YXJ0
T2Zmc2V0KTsKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CiAKICAgICBFeHByZXNzaW9u
Tm9kZSogY3JlYXRlRW1wdHlWYXJFeHByZXNzaW9uKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9j
YXRpb24sIGNvbnN0IElkZW50aWZpZXImIGlkZW50aWZpZXIpCiAgICAgewotICAgICAgICByZXR1
cm4gbmV3IChtX3ZtKSBFbXB0eVZhckV4cHJlc3Npb24obG9jYXRpb24sIGlkZW50aWZpZXIpOwor
ICAgICAgICByZXR1cm4gbmV3IChtX3BhcnNlckFyZW5hKSBFbXB0eVZhckV4cHJlc3Npb24obG9j
YXRpb24sIGlkZW50aWZpZXIpOwogICAgIH0KIAogICAgIFN0YXRlbWVudE5vZGUqIGNyZWF0ZVJl
dHVyblN0YXRlbWVudChjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBFeHByZXNzaW9u
Tm9kZSogZXhwcmVzc2lvbiwgY29uc3QgSlNUZXh0UG9zaXRpb24mIHN0YXJ0LCBjb25zdCBKU1Rl
eHRQb3NpdGlvbiYgZW5kKQogICAgIHsKLSAgICAgICAgUmV0dXJuTm9kZSogcmVzdWx0ID0gbmV3
IChtX3ZtKSBSZXR1cm5Ob2RlKGxvY2F0aW9uLCBleHByZXNzaW9uKTsKKyAgICAgICAgUmV0dXJu
Tm9kZSogcmVzdWx0ID0gbmV3IChtX3BhcnNlckFyZW5hKSBSZXR1cm5Ob2RlKGxvY2F0aW9uLCBl
eHByZXNzaW9uKTsKICAgICAgICAgc2V0RXhjZXB0aW9uTG9jYXRpb24ocmVzdWx0LCBzdGFydCwg
ZW5kLCBlbmQpOwogICAgICAgICByZXN1bHQtPnNldExvYyhzdGFydC5saW5lLCBlbmQubGluZSwg
c3RhcnQub2Zmc2V0LCBzdGFydC5saW5lU3RhcnRPZmZzZXQpOwogICAgICAgICByZXR1cm4gcmVz
dWx0OwpAQCAtNDM1LDcgKzQzNiw3IEBAIHB1YmxpYzoKIAogICAgIFN0YXRlbWVudE5vZGUqIGNy
ZWF0ZUJyZWFrU3RhdGVtZW50KGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIGNvbnN0
IElkZW50aWZpZXIqIGlkZW50LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgc3RhcnQsIGNvbnN0IEpT
VGV4dFBvc2l0aW9uJiBlbmQpCiAgICAgewotICAgICAgICBCcmVha05vZGUqIHJlc3VsdCA9IG5l
dyAobV92bSkgQnJlYWtOb2RlKGxvY2F0aW9uLCAqaWRlbnQpOworICAgICAgICBCcmVha05vZGUq
IHJlc3VsdCA9IG5ldyAobV9wYXJzZXJBcmVuYSkgQnJlYWtOb2RlKGxvY2F0aW9uLCAqaWRlbnQp
OwogICAgICAgICBzZXRFeGNlcHRpb25Mb2NhdGlvbihyZXN1bHQsIHN0YXJ0LCBlbmQsIGVuZCk7
CiAgICAgICAgIHJlc3VsdC0+c2V0TG9jKHN0YXJ0LmxpbmUsIGVuZC5saW5lLCBzdGFydC5vZmZz
ZXQsIHN0YXJ0LmxpbmVTdGFydE9mZnNldCk7CiAgICAgICAgIHJldHVybiByZXN1bHQ7CkBAIC00
NDMsNyArNDQ0LDcgQEAgcHVibGljOgogCiAgICAgU3RhdGVtZW50Tm9kZSogY3JlYXRlQ29udGlu
dWVTdGF0ZW1lbnQoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgY29uc3QgSWRlbnRp
ZmllciogaWRlbnQsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBzdGFydCwgY29uc3QgSlNUZXh0UG9z
aXRpb24mIGVuZCkKICAgICB7Ci0gICAgICAgIENvbnRpbnVlTm9kZSogcmVzdWx0ID0gbmV3ICht
X3ZtKSBDb250aW51ZU5vZGUobG9jYXRpb24sICppZGVudCk7CisgICAgICAgIENvbnRpbnVlTm9k
ZSogcmVzdWx0ID0gbmV3IChtX3BhcnNlckFyZW5hKSBDb250aW51ZU5vZGUobG9jYXRpb24sICpp
ZGVudCk7CiAgICAgICAgIHNldEV4Y2VwdGlvbkxvY2F0aW9uKHJlc3VsdCwgc3RhcnQsIGVuZCwg
ZW5kKTsKICAgICAgICAgcmVzdWx0LT5zZXRMb2Moc3RhcnQubGluZSwgZW5kLmxpbmUsIHN0YXJ0
Lm9mZnNldCwgc3RhcnQubGluZVN0YXJ0T2Zmc2V0KTsKICAgICAgICAgcmV0dXJuIHJlc3VsdDsK
QEAgLTQ1MSw3ICs0NTIsNyBAQCBwdWJsaWM6CiAKICAgICBTdGF0ZW1lbnROb2RlKiBjcmVhdGVU
cnlTdGF0ZW1lbnQoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgU3RhdGVtZW50Tm9k
ZSogdHJ5QmxvY2ssIGNvbnN0IElkZW50aWZpZXIqIGlkZW50LCBTdGF0ZW1lbnROb2RlKiBjYXRj
aEJsb2NrLCBTdGF0ZW1lbnROb2RlKiBmaW5hbGx5QmxvY2ssIGludCBzdGFydExpbmUsIGludCBl
bmRMaW5lKQogICAgIHsKLSAgICAgICAgVHJ5Tm9kZSogcmVzdWx0ID0gbmV3IChtX3ZtKSBUcnlO
b2RlKGxvY2F0aW9uLCB0cnlCbG9jaywgKmlkZW50LCBjYXRjaEJsb2NrLCBmaW5hbGx5QmxvY2sp
OworICAgICAgICBUcnlOb2RlKiByZXN1bHQgPSBuZXcgKG1fcGFyc2VyQXJlbmEpIFRyeU5vZGUo
bG9jYXRpb24sIHRyeUJsb2NrLCAqaWRlbnQsIGNhdGNoQmxvY2ssIGZpbmFsbHlCbG9jayk7CiAg
ICAgICAgIGlmIChjYXRjaEJsb2NrKQogICAgICAgICAgICAgdXNlc0NhdGNoKCk7CiAgICAgICAg
IHJlc3VsdC0+c2V0TG9jKHN0YXJ0TGluZSwgZW5kTGluZSwgbG9jYXRpb24uc3RhcnRPZmZzZXQs
IGxvY2F0aW9uLmxpbmVTdGFydE9mZnNldCk7CkBAIC00NjAsMjkgKzQ2MSwyOSBAQCBwdWJsaWM6
CiAKICAgICBTdGF0ZW1lbnROb2RlKiBjcmVhdGVTd2l0Y2hTdGF0ZW1lbnQoY29uc3QgSlNUb2tl
bkxvY2F0aW9uJiBsb2NhdGlvbiwgRXhwcmVzc2lvbk5vZGUqIGV4cHIsIENsYXVzZUxpc3ROb2Rl
KiBmaXJzdENsYXVzZXMsIENhc2VDbGF1c2VOb2RlKiBkZWZhdWx0Q2xhdXNlLCBDbGF1c2VMaXN0
Tm9kZSogc2Vjb25kQ2xhdXNlcywgaW50IHN0YXJ0TGluZSwgaW50IGVuZExpbmUpCiAgICAgewot
ICAgICAgICBDYXNlQmxvY2tOb2RlKiBjYXNlcyA9IG5ldyAobV92bSkgQ2FzZUJsb2NrTm9kZShm
aXJzdENsYXVzZXMsIGRlZmF1bHRDbGF1c2UsIHNlY29uZENsYXVzZXMpOwotICAgICAgICBTd2l0
Y2hOb2RlKiByZXN1bHQgPSBuZXcgKG1fdm0pIFN3aXRjaE5vZGUobG9jYXRpb24sIGV4cHIsIGNh
c2VzKTsKKyAgICAgICAgQ2FzZUJsb2NrTm9kZSogY2FzZXMgPSBuZXcgKG1fcGFyc2VyQXJlbmEp
IENhc2VCbG9ja05vZGUoZmlyc3RDbGF1c2VzLCBkZWZhdWx0Q2xhdXNlLCBzZWNvbmRDbGF1c2Vz
KTsKKyAgICAgICAgU3dpdGNoTm9kZSogcmVzdWx0ID0gbmV3IChtX3BhcnNlckFyZW5hKSBTd2l0
Y2hOb2RlKGxvY2F0aW9uLCBleHByLCBjYXNlcyk7CiAgICAgICAgIHJlc3VsdC0+c2V0TG9jKHN0
YXJ0TGluZSwgZW5kTGluZSwgbG9jYXRpb24uc3RhcnRPZmZzZXQsIGxvY2F0aW9uLmxpbmVTdGFy
dE9mZnNldCk7CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQogCiAgICAgU3RhdGVtZW50
Tm9kZSogY3JlYXRlV2hpbGVTdGF0ZW1lbnQoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlv
biwgRXhwcmVzc2lvbk5vZGUqIGV4cHIsIFN0YXRlbWVudE5vZGUqIHN0YXRlbWVudCwgaW50IHN0
YXJ0TGluZSwgaW50IGVuZExpbmUpCiAgICAgewotICAgICAgICBXaGlsZU5vZGUqIHJlc3VsdCA9
IG5ldyAobV92bSkgV2hpbGVOb2RlKGxvY2F0aW9uLCBleHByLCBzdGF0ZW1lbnQpOworICAgICAg
ICBXaGlsZU5vZGUqIHJlc3VsdCA9IG5ldyAobV9wYXJzZXJBcmVuYSkgV2hpbGVOb2RlKGxvY2F0
aW9uLCBleHByLCBzdGF0ZW1lbnQpOwogICAgICAgICByZXN1bHQtPnNldExvYyhzdGFydExpbmUs
IGVuZExpbmUsIGxvY2F0aW9uLnN0YXJ0T2Zmc2V0LCBsb2NhdGlvbi5saW5lU3RhcnRPZmZzZXQp
OwogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KIAogICAgIFN0YXRlbWVudE5vZGUqIGNy
ZWF0ZURvV2hpbGVTdGF0ZW1lbnQoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgU3Rh
dGVtZW50Tm9kZSogc3RhdGVtZW50LCBFeHByZXNzaW9uTm9kZSogZXhwciwgaW50IHN0YXJ0TGlu
ZSwgaW50IGVuZExpbmUpCiAgICAgewotICAgICAgICBEb1doaWxlTm9kZSogcmVzdWx0ID0gbmV3
IChtX3ZtKSBEb1doaWxlTm9kZShsb2NhdGlvbiwgc3RhdGVtZW50LCBleHByKTsKKyAgICAgICAg
RG9XaGlsZU5vZGUqIHJlc3VsdCA9IG5ldyAobV9wYXJzZXJBcmVuYSkgRG9XaGlsZU5vZGUobG9j
YXRpb24sIHN0YXRlbWVudCwgZXhwcik7CiAgICAgICAgIHJlc3VsdC0+c2V0TG9jKHN0YXJ0TGlu
ZSwgZW5kTGluZSwgbG9jYXRpb24uc3RhcnRPZmZzZXQsIGxvY2F0aW9uLmxpbmVTdGFydE9mZnNl
dCk7CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQogCiAgICAgU3RhdGVtZW50Tm9kZSog
Y3JlYXRlTGFiZWxTdGF0ZW1lbnQoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgY29u
c3QgSWRlbnRpZmllciogaWRlbnQsIFN0YXRlbWVudE5vZGUqIHN0YXRlbWVudCwgY29uc3QgSlNU
ZXh0UG9zaXRpb24mIHN0YXJ0LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZW5kKQogICAgIHsKLSAg
ICAgICAgTGFiZWxOb2RlKiByZXN1bHQgPSBuZXcgKG1fdm0pIExhYmVsTm9kZShsb2NhdGlvbiwg
KmlkZW50LCBzdGF0ZW1lbnQpOworICAgICAgICBMYWJlbE5vZGUqIHJlc3VsdCA9IG5ldyAobV9w
YXJzZXJBcmVuYSkgTGFiZWxOb2RlKGxvY2F0aW9uLCAqaWRlbnQsIHN0YXRlbWVudCk7CiAgICAg
ICAgIHNldEV4Y2VwdGlvbkxvY2F0aW9uKHJlc3VsdCwgc3RhcnQsIGVuZCwgZW5kKTsKICAgICAg
ICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CkBAIC00OTAsMTQgKzQ5MSwxNCBAQCBwdWJsaWM6CiAg
ICAgU3RhdGVtZW50Tm9kZSogY3JlYXRlV2l0aFN0YXRlbWVudChjb25zdCBKU1Rva2VuTG9jYXRp
b24mIGxvY2F0aW9uLCBFeHByZXNzaW9uTm9kZSogZXhwciwgU3RhdGVtZW50Tm9kZSogc3RhdGVt
ZW50LCB1bnNpZ25lZCBzdGFydCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGVuZCwgdW5zaWduZWQg
c3RhcnRMaW5lLCB1bnNpZ25lZCBlbmRMaW5lKQogICAgIHsKICAgICAgICAgdXNlc1dpdGgoKTsK
LSAgICAgICAgV2l0aE5vZGUqIHJlc3VsdCA9IG5ldyAobV92bSkgV2l0aE5vZGUobG9jYXRpb24s
IGV4cHIsIHN0YXRlbWVudCwgZW5kLCBlbmQgLSBzdGFydCk7CisgICAgICAgIFdpdGhOb2RlKiBy
ZXN1bHQgPSBuZXcgKG1fcGFyc2VyQXJlbmEpIFdpdGhOb2RlKGxvY2F0aW9uLCBleHByLCBzdGF0
ZW1lbnQsIGVuZCwgZW5kIC0gc3RhcnQpOwogICAgICAgICByZXN1bHQtPnNldExvYyhzdGFydExp
bmUsIGVuZExpbmUsIGxvY2F0aW9uLnN0YXJ0T2Zmc2V0LCBsb2NhdGlvbi5saW5lU3RhcnRPZmZz
ZXQpOwogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0gICAgCiAgICAgCiAgICAgU3RhdGVt
ZW50Tm9kZSogY3JlYXRlVGhyb3dTdGF0ZW1lbnQoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2Nh
dGlvbiwgRXhwcmVzc2lvbk5vZGUqIGV4cHIsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBzdGFydCwg
Y29uc3QgSlNUZXh0UG9zaXRpb24mIGVuZCkKICAgICB7Ci0gICAgICAgIFRocm93Tm9kZSogcmVz
dWx0ID0gbmV3IChtX3ZtKSBUaHJvd05vZGUobG9jYXRpb24sIGV4cHIpOworICAgICAgICBUaHJv
d05vZGUqIHJlc3VsdCA9IG5ldyAobV9wYXJzZXJBcmVuYSkgVGhyb3dOb2RlKGxvY2F0aW9uLCBl
eHByKTsKICAgICAgICAgcmVzdWx0LT5zZXRMb2Moc3RhcnQubGluZSwgZW5kLmxpbmUsIHN0YXJ0
Lm9mZnNldCwgc3RhcnQubGluZVN0YXJ0T2Zmc2V0KTsKICAgICAgICAgc2V0RXhjZXB0aW9uTG9j
YXRpb24ocmVzdWx0LCBzdGFydCwgZW5kLCBlbmQpOwogICAgICAgICByZXR1cm4gcmVzdWx0OwpA
QCAtNTA1LDIxICs1MDYsMjEgQEAgcHVibGljOgogICAgIAogICAgIFN0YXRlbWVudE5vZGUqIGNy
ZWF0ZURlYnVnZ2VyKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIGludCBzdGFydExp
bmUsIGludCBlbmRMaW5lKQogICAgIHsKLSAgICAgICAgRGVidWdnZXJTdGF0ZW1lbnROb2RlKiBy
ZXN1bHQgPSBuZXcgKG1fdm0pIERlYnVnZ2VyU3RhdGVtZW50Tm9kZShsb2NhdGlvbik7CisgICAg
ICAgIERlYnVnZ2VyU3RhdGVtZW50Tm9kZSogcmVzdWx0ID0gbmV3IChtX3BhcnNlckFyZW5hKSBE
ZWJ1Z2dlclN0YXRlbWVudE5vZGUobG9jYXRpb24pOwogICAgICAgICByZXN1bHQtPnNldExvYyhz
dGFydExpbmUsIGVuZExpbmUsIGxvY2F0aW9uLnN0YXJ0T2Zmc2V0LCBsb2NhdGlvbi5saW5lU3Rh
cnRPZmZzZXQpOwogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KICAgICAKICAgICBTdGF0
ZW1lbnROb2RlKiBjcmVhdGVDb25zdFN0YXRlbWVudChjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxv
Y2F0aW9uLCBDb25zdERlY2xOb2RlKiBkZWNscywgaW50IHN0YXJ0TGluZSwgaW50IGVuZExpbmUp
CiAgICAgewotICAgICAgICBDb25zdFN0YXRlbWVudE5vZGUqIHJlc3VsdCA9IG5ldyAobV92bSkg
Q29uc3RTdGF0ZW1lbnROb2RlKGxvY2F0aW9uLCBkZWNscyk7CisgICAgICAgIENvbnN0U3RhdGVt
ZW50Tm9kZSogcmVzdWx0ID0gbmV3IChtX3BhcnNlckFyZW5hKSBDb25zdFN0YXRlbWVudE5vZGUo
bG9jYXRpb24sIGRlY2xzKTsKICAgICAgICAgcmVzdWx0LT5zZXRMb2Moc3RhcnRMaW5lLCBlbmRM
aW5lLCBsb2NhdGlvbi5zdGFydE9mZnNldCwgbG9jYXRpb24ubGluZVN0YXJ0T2Zmc2V0KTsKICAg
ICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CiAKICAgICBDb25zdERlY2xOb2RlKiBhcHBlbmRD
b25zdERlY2woY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgQ29uc3REZWNsTm9kZSog
dGFpbCwgY29uc3QgSWRlbnRpZmllciogbmFtZSwgRXhwcmVzc2lvbk5vZGUqIGluaXRpYWxpemVy
KQogICAgIHsKLSAgICAgICAgQ29uc3REZWNsTm9kZSogcmVzdWx0ID0gbmV3IChtX3ZtKSBDb25z
dERlY2xOb2RlKGxvY2F0aW9uLCAqbmFtZSwgaW5pdGlhbGl6ZXIpOworICAgICAgICBDb25zdERl
Y2xOb2RlKiByZXN1bHQgPSBuZXcgKG1fcGFyc2VyQXJlbmEpIENvbnN0RGVjbE5vZGUobG9jYXRp
b24sICpuYW1lLCBpbml0aWFsaXplcik7CiAgICAgICAgIGlmICh0YWlsKQogICAgICAgICAgICAg
dGFpbC0+bV9uZXh0ID0gcmVzdWx0OwogICAgICAgICByZXR1cm4gcmVzdWx0OwpAQCAtNTQ2LDcg
KzU0Nyw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgIHN0YXRpY19jYXN0PENvbW1hTm9kZSo+KGxp
c3QpLT5hcHBlbmQoaW5pdCk7CiAgICAgICAgICAgICByZXR1cm4gbGlzdDsKICAgICAgICAgfQot
ICAgICAgICByZXR1cm4gbmV3IChtX3ZtKSBDb21tYU5vZGUobG9jYXRpb24sIGxpc3QsIGluaXQp
OworICAgICAgICByZXR1cm4gbmV3IChtX3BhcnNlckFyZW5hKSBDb21tYU5vZGUobG9jYXRpb24s
IGxpc3QsIGluaXQpOwogICAgIH0KIAogICAgIGludCBldmFsQ291bnQoKSBjb25zdCB7IHJldHVy
biBtX2V2YWxDb3VudDsgfQpAQCAtNjM3LDcgKzYzOCw3IEBAIHB1YmxpYzoKIAogICAgIEV4cHJl
c3Npb25Ob2RlKiBjcmVhdGVEZWNvbnN0cnVjdGluZ0Fzc2lnbm1lbnQoY29uc3QgSlNUb2tlbkxv
Y2F0aW9uJiBsb2NhdGlvbiwgUGFzc1JlZlB0cjxEZWNvbnN0cnVjdGlvblBhdHRlcm5Ob2RlPiBw
YXR0ZXJuLCBFeHByZXNzaW9uTm9kZSogaW5pdGlhbGl6ZXIpCiAgICAgewotICAgICAgICByZXR1
cm4gbmV3IChtX3ZtKSBEZWNvbnN0cnVjdGluZ0Fzc2lnbm1lbnROb2RlKGxvY2F0aW9uLCBwYXR0
ZXJuLmdldCgpLCBpbml0aWFsaXplcik7CisgICAgICAgIHJldHVybiBuZXcgKG1fcGFyc2VyQXJl
bmEpIERlY29uc3RydWN0aW5nQXNzaWdubWVudE5vZGUobG9jYXRpb24sIHBhdHRlcm4uZ2V0KCks
IGluaXRpYWxpemVyKTsKICAgICB9CiAgICAgCiAgICAgQXJyYXlQYXR0ZXJuIGNyZWF0ZUFycmF5
UGF0dGVybihjb25zdCBKU1Rva2VuTG9jYXRpb24mKQpAQCAtNjc3LDkgKzY3OCw5IEBAIHB1Ymxp
YzoKICAgICAKIHByaXZhdGU6CiAgICAgc3RydWN0IFNjb3BlIHsKLSAgICAgICAgU2NvcGUoVk0q
IHZtKQotICAgICAgICAgICAgOiBtX3ZhckRlY2xhcmF0aW9ucyhuZXcgKHZtKSBQYXJzZXJBcmVu
YURhdGE8RGVjbGFyYXRpb25TdGFja3M6OlZhclN0YWNrPikKLSAgICAgICAgICAgICwgbV9mdW5j
RGVjbGFyYXRpb25zKG5ldyAodm0pIFBhcnNlckFyZW5hRGF0YTxEZWNsYXJhdGlvblN0YWNrczo6
RnVuY3Rpb25TdGFjaz4pCisgICAgICAgIFNjb3BlKFBhcnNlckFyZW5hJiBwYXJzZXJBcmVuYSkK
KyAgICAgICAgICAgIDogbV92YXJEZWNsYXJhdGlvbnMobmV3IChwYXJzZXJBcmVuYSkgUGFyc2Vy
QXJlbmFEYXRhPERlY2xhcmF0aW9uU3RhY2tzOjpWYXJTdGFjaz4pCisgICAgICAgICAgICAsIG1f
ZnVuY0RlY2xhcmF0aW9ucyhuZXcgKHBhcnNlckFyZW5hKSBQYXJzZXJBcmVuYURhdGE8RGVjbGFy
YXRpb25TdGFja3M6OkZ1bmN0aW9uU3RhY2s+KQogICAgICAgICAgICAgLCBtX2ZlYXR1cmVzKDAp
CiAgICAgICAgICAgICAsIG1fbnVtQ29uc3RhbnRzKDApCiAgICAgICAgIHsKQEAgLTcwOCwxMCAr
NzA5LDExIEBAIHByaXZhdGU6CiAgICAgfQogICAgIEV4cHJlc3Npb25Ob2RlKiBjcmVhdGVOdW1i
ZXIoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgZG91YmxlIGQpCiAgICAgewotICAg
ICAgICByZXR1cm4gbmV3IChtX3ZtKSBOdW1iZXJOb2RlKGxvY2F0aW9uLCBkKTsKKyAgICAgICAg
cmV0dXJuIG5ldyAobV9wYXJzZXJBcmVuYSkgTnVtYmVyTm9kZShsb2NhdGlvbiwgZCk7CiAgICAg
fQogICAgIAogICAgIFZNKiBtX3ZtOworICAgIFBhcnNlckFyZW5hJiBtX3BhcnNlckFyZW5hOwog
ICAgIFNvdXJjZUNvZGUqIG1fc291cmNlQ29kZTsKICAgICBTY29wZSBtX3Njb3BlOwogICAgIFZl
Y3RvcjxCaW5hcnlPcGVyYW5kLCAxMCwgVW5zYWZlVmVjdG9yT3ZlcmZsb3c+IG1fYmluYXJ5T3Bl
cmFuZFN0YWNrOwpAQCAtNzI1LDI2ICs3MjcsMjYgQEAgRXhwcmVzc2lvbk5vZGUqIEFTVEJ1aWxk
ZXI6Om1ha2VUeXBlT2ZObwogewogICAgIGlmIChleHByLT5pc1Jlc29sdmVOb2RlKCkpIHsKICAg
ICAgICAgUmVzb2x2ZU5vZGUqIHJlc29sdmUgPSBzdGF0aWNfY2FzdDxSZXNvbHZlTm9kZSo+KGV4
cHIpOwotICAgICAgICByZXR1cm4gbmV3IChtX3ZtKSBUeXBlT2ZSZXNvbHZlTm9kZShsb2NhdGlv
biwgcmVzb2x2ZS0+aWRlbnRpZmllcigpKTsKKyAgICAgICAgcmV0dXJuIG5ldyAobV9wYXJzZXJB
cmVuYSkgVHlwZU9mUmVzb2x2ZU5vZGUobG9jYXRpb24sIHJlc29sdmUtPmlkZW50aWZpZXIoKSk7
CiAgICAgfQotICAgIHJldHVybiBuZXcgKG1fdm0pIFR5cGVPZlZhbHVlTm9kZShsb2NhdGlvbiwg
ZXhwcik7CisgICAgcmV0dXJuIG5ldyAobV9wYXJzZXJBcmVuYSkgVHlwZU9mVmFsdWVOb2RlKGxv
Y2F0aW9uLCBleHByKTsKIH0KIAogRXhwcmVzc2lvbk5vZGUqIEFTVEJ1aWxkZXI6Om1ha2VEZWxl
dGVOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIEV4cHJlc3Npb25Ob2RlKiBl
eHByLCBjb25zdCBKU1RleHRQb3NpdGlvbiYgc3RhcnQsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBk
aXZvdCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGVuZCkKIHsKICAgICBpZiAoIWV4cHItPmlzTG9j
YXRpb24oKSkKLSAgICAgICAgcmV0dXJuIG5ldyAobV92bSkgRGVsZXRlVmFsdWVOb2RlKGxvY2F0
aW9uLCBleHByKTsKKyAgICAgICAgcmV0dXJuIG5ldyAobV9wYXJzZXJBcmVuYSkgRGVsZXRlVmFs
dWVOb2RlKGxvY2F0aW9uLCBleHByKTsKICAgICBpZiAoZXhwci0+aXNSZXNvbHZlTm9kZSgpKSB7
CiAgICAgICAgIFJlc29sdmVOb2RlKiByZXNvbHZlID0gc3RhdGljX2Nhc3Q8UmVzb2x2ZU5vZGUq
PihleHByKTsKLSAgICAgICAgcmV0dXJuIG5ldyAobV92bSkgRGVsZXRlUmVzb2x2ZU5vZGUobG9j
YXRpb24sIHJlc29sdmUtPmlkZW50aWZpZXIoKSwgZGl2b3QsIHN0YXJ0LCBlbmQpOworICAgICAg
ICByZXR1cm4gbmV3IChtX3BhcnNlckFyZW5hKSBEZWxldGVSZXNvbHZlTm9kZShsb2NhdGlvbiwg
cmVzb2x2ZS0+aWRlbnRpZmllcigpLCBkaXZvdCwgc3RhcnQsIGVuZCk7CiAgICAgfQogICAgIGlm
IChleHByLT5pc0JyYWNrZXRBY2Nlc3Nvck5vZGUoKSkgewogICAgICAgICBCcmFja2V0QWNjZXNz
b3JOb2RlKiBicmFja2V0ID0gc3RhdGljX2Nhc3Q8QnJhY2tldEFjY2Vzc29yTm9kZSo+KGV4cHIp
OwotICAgICAgICByZXR1cm4gbmV3IChtX3ZtKSBEZWxldGVCcmFja2V0Tm9kZShsb2NhdGlvbiwg
YnJhY2tldC0+YmFzZSgpLCBicmFja2V0LT5zdWJzY3JpcHQoKSwgZGl2b3QsIHN0YXJ0LCBlbmQp
OworICAgICAgICByZXR1cm4gbmV3IChtX3BhcnNlckFyZW5hKSBEZWxldGVCcmFja2V0Tm9kZShs
b2NhdGlvbiwgYnJhY2tldC0+YmFzZSgpLCBicmFja2V0LT5zdWJzY3JpcHQoKSwgZGl2b3QsIHN0
YXJ0LCBlbmQpOwogICAgIH0KICAgICBBU1NFUlQoZXhwci0+aXNEb3RBY2Nlc3Nvck5vZGUoKSk7
CiAgICAgRG90QWNjZXNzb3JOb2RlKiBkb3QgPSBzdGF0aWNfY2FzdDxEb3RBY2Nlc3Nvck5vZGUq
PihleHByKTsKLSAgICByZXR1cm4gbmV3IChtX3ZtKSBEZWxldGVEb3ROb2RlKGxvY2F0aW9uLCBk
b3QtPmJhc2UoKSwgZG90LT5pZGVudGlmaWVyKCksIGRpdm90LCBzdGFydCwgZW5kKTsKKyAgICBy
ZXR1cm4gbmV3IChtX3BhcnNlckFyZW5hKSBEZWxldGVEb3ROb2RlKGxvY2F0aW9uLCBkb3QtPmJh
c2UoKSwgZG90LT5pZGVudGlmaWVyKCksIGRpdm90LCBzdGFydCwgZW5kKTsKIH0KIAogRXhwcmVz
c2lvbk5vZGUqIEFTVEJ1aWxkZXI6Om1ha2VOZWdhdGVOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlv
biYgbG9jYXRpb24sIEV4cHJlc3Npb25Ob2RlKiBuKQpAQCAtNzU1LDE0ICs3NTcsMTQgQEAgRXhw
cmVzc2lvbk5vZGUqIEFTVEJ1aWxkZXI6Om1ha2VOZWdhdGVObwogICAgICAgICByZXR1cm4gbnVt
YmVyTm9kZTsKICAgICB9CiAKLSAgICByZXR1cm4gbmV3IChtX3ZtKSBOZWdhdGVOb2RlKGxvY2F0
aW9uLCBuKTsKKyAgICByZXR1cm4gbmV3IChtX3BhcnNlckFyZW5hKSBOZWdhdGVOb2RlKGxvY2F0
aW9uLCBuKTsKIH0KIAogRXhwcmVzc2lvbk5vZGUqIEFTVEJ1aWxkZXI6Om1ha2VCaXR3aXNlTm90
Tm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBFeHByZXNzaW9uTm9kZSogZXhw
cikKIHsKICAgICBpZiAoZXhwci0+aXNOdW1iZXIoKSkKICAgICAgICAgcmV0dXJuIGNyZWF0ZU51
bWJlcihsb2NhdGlvbiwgfnRvSW50MzIoc3RhdGljX2Nhc3Q8TnVtYmVyTm9kZSo+KGV4cHIpLT52
YWx1ZSgpKSk7Ci0gICAgcmV0dXJuIG5ldyAobV92bSkgQml0d2lzZU5vdE5vZGUobG9jYXRpb24s
IGV4cHIpOworICAgIHJldHVybiBuZXcgKG1fcGFyc2VyQXJlbmEpIEJpdHdpc2VOb3ROb2RlKGxv
Y2F0aW9uLCBleHByKTsKIH0KIAogRXhwcmVzc2lvbk5vZGUqIEFTVEJ1aWxkZXI6Om1ha2VNdWx0
Tm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBFeHByZXNzaW9uTm9kZSogZXhw
cjEsIEV4cHJlc3Npb25Ob2RlKiBleHByMiwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzKQpAQCAt
Nzc0LDEyICs3NzYsMTIgQEAgRXhwcmVzc2lvbk5vZGUqIEFTVEJ1aWxkZXI6Om1ha2VNdWx0Tm9k
ZQogICAgICAgICByZXR1cm4gY3JlYXRlTnVtYmVyKGxvY2F0aW9uLCBzdGF0aWNfY2FzdDxOdW1i
ZXJOb2RlKj4oZXhwcjEpLT52YWx1ZSgpICogc3RhdGljX2Nhc3Q8TnVtYmVyTm9kZSo+KGV4cHIy
KS0+dmFsdWUoKSk7CiAKICAgICBpZiAoZXhwcjEtPmlzTnVtYmVyKCkgJiYgc3RhdGljX2Nhc3Q8
TnVtYmVyTm9kZSo+KGV4cHIxKS0+dmFsdWUoKSA9PSAxKQotICAgICAgICByZXR1cm4gbmV3ICht
X3ZtKSBVbmFyeVBsdXNOb2RlKGxvY2F0aW9uLCBleHByMik7CisgICAgICAgIHJldHVybiBuZXcg
KG1fcGFyc2VyQXJlbmEpIFVuYXJ5UGx1c05vZGUobG9jYXRpb24sIGV4cHIyKTsKIAogICAgIGlm
IChleHByMi0+aXNOdW1iZXIoKSAmJiBzdGF0aWNfY2FzdDxOdW1iZXJOb2RlKj4oZXhwcjIpLT52
YWx1ZSgpID09IDEpCi0gICAgICAgIHJldHVybiBuZXcgKG1fdm0pIFVuYXJ5UGx1c05vZGUobG9j
YXRpb24sIGV4cHIxKTsKKyAgICAgICAgcmV0dXJuIG5ldyAobV9wYXJzZXJBcmVuYSkgVW5hcnlQ
bHVzTm9kZShsb2NhdGlvbiwgZXhwcjEpOwogCi0gICAgcmV0dXJuIG5ldyAobV92bSkgTXVsdE5v
ZGUobG9jYXRpb24sIGV4cHIxLCBleHByMiwgcmlnaHRIYXNBc3NpZ25tZW50cyk7CisgICAgcmV0
dXJuIG5ldyAobV9wYXJzZXJBcmVuYSkgTXVsdE5vZGUobG9jYXRpb24sIGV4cHIxLCBleHByMiwg
cmlnaHRIYXNBc3NpZ25tZW50cyk7CiB9CiAKIEV4cHJlc3Npb25Ob2RlKiBBU1RCdWlsZGVyOjpt
YWtlRGl2Tm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBFeHByZXNzaW9uTm9k
ZSogZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBleHByMiwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRz
KQpAQCAtNzg5LDcgKzc5MSw3IEBAIEV4cHJlc3Npb25Ob2RlKiBBU1RCdWlsZGVyOjptYWtlRGl2
Tm9kZSgKIAogICAgIGlmIChleHByMS0+aXNOdW1iZXIoKSAmJiBleHByMi0+aXNOdW1iZXIoKSkK
ICAgICAgICAgcmV0dXJuIGNyZWF0ZU51bWJlcihsb2NhdGlvbiwgc3RhdGljX2Nhc3Q8TnVtYmVy
Tm9kZSo+KGV4cHIxKS0+dmFsdWUoKSAvIHN0YXRpY19jYXN0PE51bWJlck5vZGUqPihleHByMikt
PnZhbHVlKCkpOwotICAgIHJldHVybiBuZXcgKG1fdm0pIERpdk5vZGUobG9jYXRpb24sIGV4cHIx
LCBleHByMiwgcmlnaHRIYXNBc3NpZ25tZW50cyk7CisgICAgcmV0dXJuIG5ldyAobV9wYXJzZXJB
cmVuYSkgRGl2Tm9kZShsb2NhdGlvbiwgZXhwcjEsIGV4cHIyLCByaWdodEhhc0Fzc2lnbm1lbnRz
KTsKIH0KIAogRXhwcmVzc2lvbk5vZGUqIEFTVEJ1aWxkZXI6Om1ha2VNb2ROb2RlKGNvbnN0IEpT
VG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIEV4cHJlc3Npb25Ob2RlKiBleHByMSwgRXhwcmVzc2lv
bk5vZGUqIGV4cHIyLCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMpCkBAIC03OTksMTQgKzgwMSwx
NCBAQCBFeHByZXNzaW9uTm9kZSogQVNUQnVpbGRlcjo6bWFrZU1vZE5vZGUoCiAgICAgCiAgICAg
aWYgKGV4cHIxLT5pc051bWJlcigpICYmIGV4cHIyLT5pc051bWJlcigpKQogICAgICAgICByZXR1
cm4gY3JlYXRlTnVtYmVyKGxvY2F0aW9uLCBmbW9kKHN0YXRpY19jYXN0PE51bWJlck5vZGUqPihl
eHByMSktPnZhbHVlKCksIHN0YXRpY19jYXN0PE51bWJlck5vZGUqPihleHByMiktPnZhbHVlKCkp
KTsKLSAgICByZXR1cm4gbmV3IChtX3ZtKSBNb2ROb2RlKGxvY2F0aW9uLCBleHByMSwgZXhwcjIs
IHJpZ2h0SGFzQXNzaWdubWVudHMpOworICAgIHJldHVybiBuZXcgKG1fcGFyc2VyQXJlbmEpIE1v
ZE5vZGUobG9jYXRpb24sIGV4cHIxLCBleHByMiwgcmlnaHRIYXNBc3NpZ25tZW50cyk7CiB9CiAK
IEV4cHJlc3Npb25Ob2RlKiBBU1RCdWlsZGVyOjptYWtlQWRkTm9kZShjb25zdCBKU1Rva2VuTG9j
YXRpb24mIGxvY2F0aW9uLCBFeHByZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBl
eHByMiwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzKQogewogICAgIGlmIChleHByMS0+aXNOdW1i
ZXIoKSAmJiBleHByMi0+aXNOdW1iZXIoKSkKICAgICAgICAgcmV0dXJuIGNyZWF0ZU51bWJlcihs
b2NhdGlvbiwgc3RhdGljX2Nhc3Q8TnVtYmVyTm9kZSo+KGV4cHIxKS0+dmFsdWUoKSArIHN0YXRp
Y19jYXN0PE51bWJlck5vZGUqPihleHByMiktPnZhbHVlKCkpOwotICAgIHJldHVybiBuZXcgKG1f
dm0pIEFkZE5vZGUobG9jYXRpb24sIGV4cHIxLCBleHByMiwgcmlnaHRIYXNBc3NpZ25tZW50cyk7
CisgICAgcmV0dXJuIG5ldyAobV9wYXJzZXJBcmVuYSkgQWRkTm9kZShsb2NhdGlvbiwgZXhwcjEs
IGV4cHIyLCByaWdodEhhc0Fzc2lnbm1lbnRzKTsKIH0KIAogRXhwcmVzc2lvbk5vZGUqIEFTVEJ1
aWxkZXI6Om1ha2VTdWJOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIEV4cHJl
c3Npb25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIyLCBib29sIHJpZ2h0SGFzQXNz
aWdubWVudHMpCkBAIC04MTYsNjggKzgxOCw2OCBAQCBFeHByZXNzaW9uTm9kZSogQVNUQnVpbGRl
cjo6bWFrZVN1Yk5vZGUoCiAKICAgICBpZiAoZXhwcjEtPmlzTnVtYmVyKCkgJiYgZXhwcjItPmlz
TnVtYmVyKCkpCiAgICAgICAgIHJldHVybiBjcmVhdGVOdW1iZXIobG9jYXRpb24sIHN0YXRpY19j
YXN0PE51bWJlck5vZGUqPihleHByMSktPnZhbHVlKCkgLSBzdGF0aWNfY2FzdDxOdW1iZXJOb2Rl
Kj4oZXhwcjIpLT52YWx1ZSgpKTsKLSAgICByZXR1cm4gbmV3IChtX3ZtKSBTdWJOb2RlKGxvY2F0
aW9uLCBleHByMSwgZXhwcjIsIHJpZ2h0SGFzQXNzaWdubWVudHMpOworICAgIHJldHVybiBuZXcg
KG1fcGFyc2VyQXJlbmEpIFN1Yk5vZGUobG9jYXRpb24sIGV4cHIxLCBleHByMiwgcmlnaHRIYXNB
c3NpZ25tZW50cyk7CiB9CiAKIEV4cHJlc3Npb25Ob2RlKiBBU1RCdWlsZGVyOjptYWtlTGVmdFNo
aWZ0Tm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBFeHByZXNzaW9uTm9kZSog
ZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBleHByMiwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzKQog
ewogICAgIGlmIChleHByMS0+aXNOdW1iZXIoKSAmJiBleHByMi0+aXNOdW1iZXIoKSkKICAgICAg
ICAgcmV0dXJuIGNyZWF0ZU51bWJlcihsb2NhdGlvbiwgdG9JbnQzMihzdGF0aWNfY2FzdDxOdW1i
ZXJOb2RlKj4oZXhwcjEpLT52YWx1ZSgpKSA8PCAodG9VSW50MzIoc3RhdGljX2Nhc3Q8TnVtYmVy
Tm9kZSo+KGV4cHIyKS0+dmFsdWUoKSkgJiAweDFmKSk7Ci0gICAgcmV0dXJuIG5ldyAobV92bSkg
TGVmdFNoaWZ0Tm9kZShsb2NhdGlvbiwgZXhwcjEsIGV4cHIyLCByaWdodEhhc0Fzc2lnbm1lbnRz
KTsKKyAgICByZXR1cm4gbmV3IChtX3BhcnNlckFyZW5hKSBMZWZ0U2hpZnROb2RlKGxvY2F0aW9u
LCBleHByMSwgZXhwcjIsIHJpZ2h0SGFzQXNzaWdubWVudHMpOwogfQogCiBFeHByZXNzaW9uTm9k
ZSogQVNUQnVpbGRlcjo6bWFrZVJpZ2h0U2hpZnROb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYg
bG9jYXRpb24sIEV4cHJlc3Npb25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIyLCBi
b29sIHJpZ2h0SGFzQXNzaWdubWVudHMpCiB7CiAgICAgaWYgKGV4cHIxLT5pc051bWJlcigpICYm
IGV4cHIyLT5pc051bWJlcigpKQogICAgICAgICByZXR1cm4gY3JlYXRlTnVtYmVyKGxvY2F0aW9u
LCB0b0ludDMyKHN0YXRpY19jYXN0PE51bWJlck5vZGUqPihleHByMSktPnZhbHVlKCkpID4+ICh0
b1VJbnQzMihzdGF0aWNfY2FzdDxOdW1iZXJOb2RlKj4oZXhwcjIpLT52YWx1ZSgpKSAmIDB4MWYp
KTsKLSAgICByZXR1cm4gbmV3IChtX3ZtKSBSaWdodFNoaWZ0Tm9kZShsb2NhdGlvbiwgZXhwcjEs
IGV4cHIyLCByaWdodEhhc0Fzc2lnbm1lbnRzKTsKKyAgICByZXR1cm4gbmV3IChtX3BhcnNlckFy
ZW5hKSBSaWdodFNoaWZ0Tm9kZShsb2NhdGlvbiwgZXhwcjEsIGV4cHIyLCByaWdodEhhc0Fzc2ln
bm1lbnRzKTsKIH0KIAogRXhwcmVzc2lvbk5vZGUqIEFTVEJ1aWxkZXI6Om1ha2VVUmlnaHRTaGlm
dE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgRXhwcmVzc2lvbk5vZGUqIGV4
cHIxLCBFeHByZXNzaW9uTm9kZSogZXhwcjIsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cykKIHsK
ICAgICBpZiAoZXhwcjEtPmlzTnVtYmVyKCkgJiYgZXhwcjItPmlzTnVtYmVyKCkpCiAgICAgICAg
IHJldHVybiBjcmVhdGVOdW1iZXIobG9jYXRpb24sIHRvVUludDMyKHN0YXRpY19jYXN0PE51bWJl
ck5vZGUqPihleHByMSktPnZhbHVlKCkpID4+ICh0b1VJbnQzMihzdGF0aWNfY2FzdDxOdW1iZXJO
b2RlKj4oZXhwcjIpLT52YWx1ZSgpKSAmIDB4MWYpKTsKLSAgICByZXR1cm4gbmV3IChtX3ZtKSBV
bnNpZ25lZFJpZ2h0U2hpZnROb2RlKGxvY2F0aW9uLCBleHByMSwgZXhwcjIsIHJpZ2h0SGFzQXNz
aWdubWVudHMpOworICAgIHJldHVybiBuZXcgKG1fcGFyc2VyQXJlbmEpIFVuc2lnbmVkUmlnaHRT
aGlmdE5vZGUobG9jYXRpb24sIGV4cHIxLCBleHByMiwgcmlnaHRIYXNBc3NpZ25tZW50cyk7CiB9
CiAKIEV4cHJlc3Npb25Ob2RlKiBBU1RCdWlsZGVyOjptYWtlQml0T3JOb2RlKGNvbnN0IEpTVG9r
ZW5Mb2NhdGlvbiYgbG9jYXRpb24sIEV4cHJlc3Npb25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5v
ZGUqIGV4cHIyLCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMpCiB7CiAgICAgaWYgKGV4cHIxLT5p
c051bWJlcigpICYmIGV4cHIyLT5pc051bWJlcigpKQogICAgICAgICByZXR1cm4gY3JlYXRlTnVt
YmVyKGxvY2F0aW9uLCB0b0ludDMyKHN0YXRpY19jYXN0PE51bWJlck5vZGUqPihleHByMSktPnZh
bHVlKCkpIHwgdG9JbnQzMihzdGF0aWNfY2FzdDxOdW1iZXJOb2RlKj4oZXhwcjIpLT52YWx1ZSgp
KSk7Ci0gICAgcmV0dXJuIG5ldyAobV92bSkgQml0T3JOb2RlKGxvY2F0aW9uLCBleHByMSwgZXhw
cjIsIHJpZ2h0SGFzQXNzaWdubWVudHMpOworICAgIHJldHVybiBuZXcgKG1fcGFyc2VyQXJlbmEp
IEJpdE9yTm9kZShsb2NhdGlvbiwgZXhwcjEsIGV4cHIyLCByaWdodEhhc0Fzc2lnbm1lbnRzKTsK
IH0KIAogRXhwcmVzc2lvbk5vZGUqIEFTVEJ1aWxkZXI6Om1ha2VCaXRBbmROb2RlKGNvbnN0IEpT
VG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIEV4cHJlc3Npb25Ob2RlKiBleHByMSwgRXhwcmVzc2lv
bk5vZGUqIGV4cHIyLCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMpCiB7CiAgICAgaWYgKGV4cHIx
LT5pc051bWJlcigpICYmIGV4cHIyLT5pc051bWJlcigpKQogICAgICAgICByZXR1cm4gY3JlYXRl
TnVtYmVyKGxvY2F0aW9uLCB0b0ludDMyKHN0YXRpY19jYXN0PE51bWJlck5vZGUqPihleHByMSkt
PnZhbHVlKCkpICYgdG9JbnQzMihzdGF0aWNfY2FzdDxOdW1iZXJOb2RlKj4oZXhwcjIpLT52YWx1
ZSgpKSk7Ci0gICAgcmV0dXJuIG5ldyAobV92bSkgQml0QW5kTm9kZShsb2NhdGlvbiwgZXhwcjEs
IGV4cHIyLCByaWdodEhhc0Fzc2lnbm1lbnRzKTsKKyAgICByZXR1cm4gbmV3IChtX3BhcnNlckFy
ZW5hKSBCaXRBbmROb2RlKGxvY2F0aW9uLCBleHByMSwgZXhwcjIsIHJpZ2h0SGFzQXNzaWdubWVu
dHMpOwogfQogCiBFeHByZXNzaW9uTm9kZSogQVNUQnVpbGRlcjo6bWFrZUJpdFhPck5vZGUoY29u
c3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgRXhwcmVzc2lvbk5vZGUqIGV4cHIxLCBFeHBy
ZXNzaW9uTm9kZSogZXhwcjIsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cykKIHsKICAgICBpZiAo
ZXhwcjEtPmlzTnVtYmVyKCkgJiYgZXhwcjItPmlzTnVtYmVyKCkpCiAgICAgICAgIHJldHVybiBj
cmVhdGVOdW1iZXIobG9jYXRpb24sIHRvSW50MzIoc3RhdGljX2Nhc3Q8TnVtYmVyTm9kZSo+KGV4
cHIxKS0+dmFsdWUoKSkgXiB0b0ludDMyKHN0YXRpY19jYXN0PE51bWJlck5vZGUqPihleHByMikt
PnZhbHVlKCkpKTsKLSAgICByZXR1cm4gbmV3IChtX3ZtKSBCaXRYT3JOb2RlKGxvY2F0aW9uLCBl
eHByMSwgZXhwcjIsIHJpZ2h0SGFzQXNzaWdubWVudHMpOworICAgIHJldHVybiBuZXcgKG1fcGFy
c2VyQXJlbmEpIEJpdFhPck5vZGUobG9jYXRpb24sIGV4cHIxLCBleHByMiwgcmlnaHRIYXNBc3Np
Z25tZW50cyk7CiB9CiAKIEV4cHJlc3Npb25Ob2RlKiBBU1RCdWlsZGVyOjptYWtlRnVuY3Rpb25D
YWxsTm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBFeHByZXNzaW9uTm9kZSog
ZnVuYywgQXJndW1lbnRzTm9kZSogYXJncywgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90U3Rh
cnQsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRp
dm90RW5kKQogewogICAgIEFTU0VSVChkaXZvdC5vZmZzZXQgPj0gZGl2b3QubGluZVN0YXJ0T2Zm
c2V0KTsKICAgICBpZiAoIWZ1bmMtPmlzTG9jYXRpb24oKSkKLSAgICAgICAgcmV0dXJuIG5ldyAo
bV92bSkgRnVuY3Rpb25DYWxsVmFsdWVOb2RlKGxvY2F0aW9uLCBmdW5jLCBhcmdzLCBkaXZvdCwg
ZGl2b3RTdGFydCwgZGl2b3RFbmQpOworICAgICAgICByZXR1cm4gbmV3IChtX3BhcnNlckFyZW5h
KSBGdW5jdGlvbkNhbGxWYWx1ZU5vZGUobG9jYXRpb24sIGZ1bmMsIGFyZ3MsIGRpdm90LCBkaXZv
dFN0YXJ0LCBkaXZvdEVuZCk7CiAgICAgaWYgKGZ1bmMtPmlzUmVzb2x2ZU5vZGUoKSkgewogICAg
ICAgICBSZXNvbHZlTm9kZSogcmVzb2x2ZSA9IHN0YXRpY19jYXN0PFJlc29sdmVOb2RlKj4oZnVu
Yyk7CiAgICAgICAgIGNvbnN0IElkZW50aWZpZXImIGlkZW50aWZpZXIgPSByZXNvbHZlLT5pZGVu
dGlmaWVyKCk7CiAgICAgICAgIGlmIChpZGVudGlmaWVyID09IG1fdm0tPnByb3BlcnR5TmFtZXMt
PmV2YWwpIHsKICAgICAgICAgICAgIHVzZXNFdmFsKCk7Ci0gICAgICAgICAgICByZXR1cm4gbmV3
IChtX3ZtKSBFdmFsRnVuY3Rpb25DYWxsTm9kZShsb2NhdGlvbiwgYXJncywgZGl2b3QsIGRpdm90
U3RhcnQsIGRpdm90RW5kKTsKKyAgICAgICAgICAgIHJldHVybiBuZXcgKG1fcGFyc2VyQXJlbmEp
IEV2YWxGdW5jdGlvbkNhbGxOb2RlKGxvY2F0aW9uLCBhcmdzLCBkaXZvdCwgZGl2b3RTdGFydCwg
ZGl2b3RFbmQpOwogICAgICAgICB9Ci0gICAgICAgIHJldHVybiBuZXcgKG1fdm0pIEZ1bmN0aW9u
Q2FsbFJlc29sdmVOb2RlKGxvY2F0aW9uLCBpZGVudGlmaWVyLCBhcmdzLCBkaXZvdCwgZGl2b3RT
dGFydCwgZGl2b3RFbmQpOworICAgICAgICByZXR1cm4gbmV3IChtX3BhcnNlckFyZW5hKSBGdW5j
dGlvbkNhbGxSZXNvbHZlTm9kZShsb2NhdGlvbiwgaWRlbnRpZmllciwgYXJncywgZGl2b3QsIGRp
dm90U3RhcnQsIGRpdm90RW5kKTsKICAgICB9CiAgICAgaWYgKGZ1bmMtPmlzQnJhY2tldEFjY2Vz
c29yTm9kZSgpKSB7CiAgICAgICAgIEJyYWNrZXRBY2Nlc3Nvck5vZGUqIGJyYWNrZXQgPSBzdGF0
aWNfY2FzdDxCcmFja2V0QWNjZXNzb3JOb2RlKj4oZnVuYyk7Ci0gICAgICAgIEZ1bmN0aW9uQ2Fs
bEJyYWNrZXROb2RlKiBub2RlID0gbmV3IChtX3ZtKSBGdW5jdGlvbkNhbGxCcmFja2V0Tm9kZShs
b2NhdGlvbiwgYnJhY2tldC0+YmFzZSgpLCBicmFja2V0LT5zdWJzY3JpcHQoKSwgYXJncywgZGl2
b3QsIGRpdm90U3RhcnQsIGRpdm90RW5kKTsKKyAgICAgICAgRnVuY3Rpb25DYWxsQnJhY2tldE5v
ZGUqIG5vZGUgPSBuZXcgKG1fcGFyc2VyQXJlbmEpIEZ1bmN0aW9uQ2FsbEJyYWNrZXROb2RlKGxv
Y2F0aW9uLCBicmFja2V0LT5iYXNlKCksIGJyYWNrZXQtPnN1YnNjcmlwdCgpLCBhcmdzLCBkaXZv
dCwgZGl2b3RTdGFydCwgZGl2b3RFbmQpOwogICAgICAgICBub2RlLT5zZXRTdWJleHByZXNzaW9u
SW5mbyhicmFja2V0LT5kaXZvdCgpLCBicmFja2V0LT5kaXZvdEVuZCgpLm9mZnNldCk7CiAgICAg
ICAgIHJldHVybiBub2RlOwogICAgIH0KQEAgLTg4NSwxMSArODg3LDExIEBAIEV4cHJlc3Npb25O
b2RlKiBBU1RCdWlsZGVyOjptYWtlRnVuY3Rpb24KICAgICBEb3RBY2Nlc3Nvck5vZGUqIGRvdCA9
IHN0YXRpY19jYXN0PERvdEFjY2Vzc29yTm9kZSo+KGZ1bmMpOwogICAgIEZ1bmN0aW9uQ2FsbERv
dE5vZGUqIG5vZGU7CiAgICAgaWYgKGRvdC0+aWRlbnRpZmllcigpID09IG1fdm0tPnByb3BlcnR5
TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmNhbGxQdWJsaWNOYW1lKCkgfHwgZG90LT5pZGVudGlmaWVy
KCkgPT0gbV92bS0+cHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuY2FsbFByaXZhdGVOYW1l
KCkpCi0gICAgICAgIG5vZGUgPSBuZXcgKG1fdm0pIENhbGxGdW5jdGlvbkNhbGxEb3ROb2RlKGxv
Y2F0aW9uLCBkb3QtPmJhc2UoKSwgZG90LT5pZGVudGlmaWVyKCksIGFyZ3MsIGRpdm90LCBkaXZv
dFN0YXJ0LCBkaXZvdEVuZCk7CisgICAgICAgIG5vZGUgPSBuZXcgKG1fcGFyc2VyQXJlbmEpIENh
bGxGdW5jdGlvbkNhbGxEb3ROb2RlKGxvY2F0aW9uLCBkb3QtPmJhc2UoKSwgZG90LT5pZGVudGlm
aWVyKCksIGFyZ3MsIGRpdm90LCBkaXZvdFN0YXJ0LCBkaXZvdEVuZCk7CiAgICAgZWxzZSBpZiAo
ZG90LT5pZGVudGlmaWVyKCkgPT0gbV92bS0+cHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCku
YXBwbHlQdWJsaWNOYW1lKCkgfHwgZG90LT5pZGVudGlmaWVyKCkgPT0gbV92bS0+cHJvcGVydHlO
YW1lcy0+YnVpbHRpbk5hbWVzKCkuYXBwbHlQcml2YXRlTmFtZSgpKQotICAgICAgICBub2RlID0g
bmV3IChtX3ZtKSBBcHBseUZ1bmN0aW9uQ2FsbERvdE5vZGUobG9jYXRpb24sIGRvdC0+YmFzZSgp
LCBkb3QtPmlkZW50aWZpZXIoKSwgYXJncywgZGl2b3QsIGRpdm90U3RhcnQsIGRpdm90RW5kKTsK
KyAgICAgICAgbm9kZSA9IG5ldyAobV9wYXJzZXJBcmVuYSkgQXBwbHlGdW5jdGlvbkNhbGxEb3RO
b2RlKGxvY2F0aW9uLCBkb3QtPmJhc2UoKSwgZG90LT5pZGVudGlmaWVyKCksIGFyZ3MsIGRpdm90
LCBkaXZvdFN0YXJ0LCBkaXZvdEVuZCk7CiAgICAgZWxzZQotICAgICAgICBub2RlID0gbmV3ICht
X3ZtKSBGdW5jdGlvbkNhbGxEb3ROb2RlKGxvY2F0aW9uLCBkb3QtPmJhc2UoKSwgZG90LT5pZGVu
dGlmaWVyKCksIGFyZ3MsIGRpdm90LCBkaXZvdFN0YXJ0LCBkaXZvdEVuZCk7CisgICAgICAgIG5v
ZGUgPSBuZXcgKG1fcGFyc2VyQXJlbmEpIEZ1bmN0aW9uQ2FsbERvdE5vZGUobG9jYXRpb24sIGRv
dC0+YmFzZSgpLCBkb3QtPmlkZW50aWZpZXIoKSwgYXJncywgZGl2b3QsIGRpdm90U3RhcnQsIGRp
dm90RW5kKTsKICAgICBub2RlLT5zZXRTdWJleHByZXNzaW9uSW5mbyhkb3QtPmRpdm90KCksIGRv
dC0+ZGl2b3RFbmQoKS5vZmZzZXQpOwogICAgIHJldHVybiBub2RlOwogfQpAQCAtODk4LDEwICs5
MDAsMTAgQEAgRXhwcmVzc2lvbk5vZGUqIEFTVEJ1aWxkZXI6Om1ha2VCaW5hcnlObwogewogICAg
IHN3aXRjaCAodG9rZW4pIHsKICAgICBjYXNlIE9SOgotICAgICAgICByZXR1cm4gbmV3IChtX3Zt
KSBMb2dpY2FsT3BOb2RlKGxvY2F0aW9uLCBsaHMuZmlyc3QsIHJocy5maXJzdCwgT3BMb2dpY2Fs
T3IpOworICAgICAgICByZXR1cm4gbmV3IChtX3BhcnNlckFyZW5hKSBMb2dpY2FsT3BOb2RlKGxv
Y2F0aW9uLCBsaHMuZmlyc3QsIHJocy5maXJzdCwgT3BMb2dpY2FsT3IpOwogCiAgICAgY2FzZSBB
TkQ6Ci0gICAgICAgIHJldHVybiBuZXcgKG1fdm0pIExvZ2ljYWxPcE5vZGUobG9jYXRpb24sIGxo
cy5maXJzdCwgcmhzLmZpcnN0LCBPcExvZ2ljYWxBbmQpOworICAgICAgICByZXR1cm4gbmV3ICht
X3BhcnNlckFyZW5hKSBMb2dpY2FsT3BOb2RlKGxvY2F0aW9uLCBsaHMuZmlyc3QsIHJocy5maXJz
dCwgT3BMb2dpY2FsQW5kKTsKIAogICAgIGNhc2UgQklUT1I6CiAgICAgICAgIHJldHVybiBtYWtl
Qml0T3JOb2RlKGxvY2F0aW9uLCBsaHMuZmlyc3QsIHJocy5maXJzdCwgcmhzLnNlY29uZC5oYXNB
c3NpZ25tZW50KTsKQEAgLTkxMywzNyArOTE1LDM3IEBAIEV4cHJlc3Npb25Ob2RlKiBBU1RCdWls
ZGVyOjptYWtlQmluYXJ5Tm8KICAgICAgICAgcmV0dXJuIG1ha2VCaXRBbmROb2RlKGxvY2F0aW9u
LCBsaHMuZmlyc3QsIHJocy5maXJzdCwgcmhzLnNlY29uZC5oYXNBc3NpZ25tZW50KTsKIAogICAg
IGNhc2UgRVFFUToKLSAgICAgICAgcmV0dXJuIG5ldyAobV92bSkgRXF1YWxOb2RlKGxvY2F0aW9u
LCBsaHMuZmlyc3QsIHJocy5maXJzdCwgcmhzLnNlY29uZC5oYXNBc3NpZ25tZW50KTsKKyAgICAg
ICAgcmV0dXJuIG5ldyAobV9wYXJzZXJBcmVuYSkgRXF1YWxOb2RlKGxvY2F0aW9uLCBsaHMuZmly
c3QsIHJocy5maXJzdCwgcmhzLnNlY29uZC5oYXNBc3NpZ25tZW50KTsKIAogICAgIGNhc2UgTkU6
Ci0gICAgICAgIHJldHVybiBuZXcgKG1fdm0pIE5vdEVxdWFsTm9kZShsb2NhdGlvbiwgbGhzLmZp
cnN0LCByaHMuZmlyc3QsIHJocy5zZWNvbmQuaGFzQXNzaWdubWVudCk7CisgICAgICAgIHJldHVy
biBuZXcgKG1fcGFyc2VyQXJlbmEpIE5vdEVxdWFsTm9kZShsb2NhdGlvbiwgbGhzLmZpcnN0LCBy
aHMuZmlyc3QsIHJocy5zZWNvbmQuaGFzQXNzaWdubWVudCk7CiAKICAgICBjYXNlIFNUUkVROgot
ICAgICAgICByZXR1cm4gbmV3IChtX3ZtKSBTdHJpY3RFcXVhbE5vZGUobG9jYXRpb24sIGxocy5m
aXJzdCwgcmhzLmZpcnN0LCByaHMuc2Vjb25kLmhhc0Fzc2lnbm1lbnQpOworICAgICAgICByZXR1
cm4gbmV3IChtX3BhcnNlckFyZW5hKSBTdHJpY3RFcXVhbE5vZGUobG9jYXRpb24sIGxocy5maXJz
dCwgcmhzLmZpcnN0LCByaHMuc2Vjb25kLmhhc0Fzc2lnbm1lbnQpOwogCiAgICAgY2FzZSBTVFJO
RVE6Ci0gICAgICAgIHJldHVybiBuZXcgKG1fdm0pIE5vdFN0cmljdEVxdWFsTm9kZShsb2NhdGlv
biwgbGhzLmZpcnN0LCByaHMuZmlyc3QsIHJocy5zZWNvbmQuaGFzQXNzaWdubWVudCk7CisgICAg
ICAgIHJldHVybiBuZXcgKG1fcGFyc2VyQXJlbmEpIE5vdFN0cmljdEVxdWFsTm9kZShsb2NhdGlv
biwgbGhzLmZpcnN0LCByaHMuZmlyc3QsIHJocy5zZWNvbmQuaGFzQXNzaWdubWVudCk7CiAKICAg
ICBjYXNlIExUOgotICAgICAgICByZXR1cm4gbmV3IChtX3ZtKSBMZXNzTm9kZShsb2NhdGlvbiwg
bGhzLmZpcnN0LCByaHMuZmlyc3QsIHJocy5zZWNvbmQuaGFzQXNzaWdubWVudCk7CisgICAgICAg
IHJldHVybiBuZXcgKG1fcGFyc2VyQXJlbmEpIExlc3NOb2RlKGxvY2F0aW9uLCBsaHMuZmlyc3Qs
IHJocy5maXJzdCwgcmhzLnNlY29uZC5oYXNBc3NpZ25tZW50KTsKIAogICAgIGNhc2UgR1Q6Ci0g
ICAgICAgIHJldHVybiBuZXcgKG1fdm0pIEdyZWF0ZXJOb2RlKGxvY2F0aW9uLCBsaHMuZmlyc3Qs
IHJocy5maXJzdCwgcmhzLnNlY29uZC5oYXNBc3NpZ25tZW50KTsKKyAgICAgICAgcmV0dXJuIG5l
dyAobV9wYXJzZXJBcmVuYSkgR3JlYXRlck5vZGUobG9jYXRpb24sIGxocy5maXJzdCwgcmhzLmZp
cnN0LCByaHMuc2Vjb25kLmhhc0Fzc2lnbm1lbnQpOwogCiAgICAgY2FzZSBMRToKLSAgICAgICAg
cmV0dXJuIG5ldyAobV92bSkgTGVzc0VxTm9kZShsb2NhdGlvbiwgbGhzLmZpcnN0LCByaHMuZmly
c3QsIHJocy5zZWNvbmQuaGFzQXNzaWdubWVudCk7CisgICAgICAgIHJldHVybiBuZXcgKG1fcGFy
c2VyQXJlbmEpIExlc3NFcU5vZGUobG9jYXRpb24sIGxocy5maXJzdCwgcmhzLmZpcnN0LCByaHMu
c2Vjb25kLmhhc0Fzc2lnbm1lbnQpOwogCiAgICAgY2FzZSBHRToKLSAgICAgICAgcmV0dXJuIG5l
dyAobV92bSkgR3JlYXRlckVxTm9kZShsb2NhdGlvbiwgbGhzLmZpcnN0LCByaHMuZmlyc3QsIHJo
cy5zZWNvbmQuaGFzQXNzaWdubWVudCk7CisgICAgICAgIHJldHVybiBuZXcgKG1fcGFyc2VyQXJl
bmEpIEdyZWF0ZXJFcU5vZGUobG9jYXRpb24sIGxocy5maXJzdCwgcmhzLmZpcnN0LCByaHMuc2Vj
b25kLmhhc0Fzc2lnbm1lbnQpOwogCiAgICAgY2FzZSBJTlNUQU5DRU9GOiB7Ci0gICAgICAgIElu
c3RhbmNlT2ZOb2RlKiBub2RlID0gbmV3IChtX3ZtKSBJbnN0YW5jZU9mTm9kZShsb2NhdGlvbiwg
bGhzLmZpcnN0LCByaHMuZmlyc3QsIHJocy5zZWNvbmQuaGFzQXNzaWdubWVudCk7CisgICAgICAg
IEluc3RhbmNlT2ZOb2RlKiBub2RlID0gbmV3IChtX3BhcnNlckFyZW5hKSBJbnN0YW5jZU9mTm9k
ZShsb2NhdGlvbiwgbGhzLmZpcnN0LCByaHMuZmlyc3QsIHJocy5zZWNvbmQuaGFzQXNzaWdubWVu
dCk7CiAgICAgICAgIHNldEV4Y2VwdGlvbkxvY2F0aW9uKG5vZGUsIGxocy5zZWNvbmQuc3RhcnQs
IHJocy5zZWNvbmQuc3RhcnQsIHJocy5zZWNvbmQuZW5kKTsKICAgICAgICAgcmV0dXJuIG5vZGU7
CiAgICAgfQogCiAgICAgY2FzZSBJTlRPS0VOOiB7Ci0gICAgICAgIEluTm9kZSogbm9kZSA9IG5l
dyAobV92bSkgSW5Ob2RlKGxvY2F0aW9uLCBsaHMuZmlyc3QsIHJocy5maXJzdCwgcmhzLnNlY29u
ZC5oYXNBc3NpZ25tZW50KTsKKyAgICAgICAgSW5Ob2RlKiBub2RlID0gbmV3IChtX3BhcnNlckFy
ZW5hKSBJbk5vZGUobG9jYXRpb24sIGxocy5maXJzdCwgcmhzLmZpcnN0LCByaHMuc2Vjb25kLmhh
c0Fzc2lnbm1lbnQpOwogICAgICAgICBzZXRFeGNlcHRpb25Mb2NhdGlvbihub2RlLCBsaHMuc2Vj
b25kLnN0YXJ0LCByaHMuc2Vjb25kLnN0YXJ0LCByaHMuc2Vjb25kLmVuZCk7CiAgICAgICAgIHJl
dHVybiBub2RlOwogICAgIH0KQEAgLTk3OSwyNCArOTgxLDI0IEBAIEV4cHJlc3Npb25Ob2RlKiBB
U1RCdWlsZGVyOjptYWtlQmluYXJ5Tm8KIEV4cHJlc3Npb25Ob2RlKiBBU1RCdWlsZGVyOjptYWtl
QXNzaWduTm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBFeHByZXNzaW9uTm9k
ZSogbG9jLCBPcGVyYXRvciBvcCwgRXhwcmVzc2lvbk5vZGUqIGV4cHIsIGJvb2wgbG9jSGFzQXNz
aWdubWVudHMsIGJvb2wgZXhwckhhc0Fzc2lnbm1lbnRzLCBjb25zdCBKU1RleHRQb3NpdGlvbiYg
c3RhcnQsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdCwgY29uc3QgSlNUZXh0UG9zaXRpb24m
IGVuZCkKIHsKICAgICBpZiAoIWxvYy0+aXNMb2NhdGlvbigpKQotICAgICAgICByZXR1cm4gbmV3
IChtX3ZtKSBBc3NpZ25FcnJvck5vZGUobG9jYXRpb24sIGRpdm90LCBzdGFydCwgZW5kKTsKKyAg
ICAgICAgcmV0dXJuIG5ldyAobV9wYXJzZXJBcmVuYSkgQXNzaWduRXJyb3JOb2RlKGxvY2F0aW9u
LCBkaXZvdCwgc3RhcnQsIGVuZCk7CiAKICAgICBpZiAobG9jLT5pc1Jlc29sdmVOb2RlKCkpIHsK
ICAgICAgICAgUmVzb2x2ZU5vZGUqIHJlc29sdmUgPSBzdGF0aWNfY2FzdDxSZXNvbHZlTm9kZSo+
KGxvYyk7CiAgICAgICAgIGlmIChvcCA9PSBPcEVxdWFsKSB7CiAgICAgICAgICAgICBpZiAoZXhw
ci0+aXNGdW5jRXhwck5vZGUoKSkKICAgICAgICAgICAgICAgICBzdGF0aWNfY2FzdDxGdW5jRXhw
ck5vZGUqPihleHByKS0+Ym9keSgpLT5zZXRJbmZlcnJlZE5hbWUocmVzb2x2ZS0+aWRlbnRpZmll
cigpKTsKLSAgICAgICAgICAgIEFzc2lnblJlc29sdmVOb2RlKiBub2RlID0gbmV3IChtX3ZtKSBB
c3NpZ25SZXNvbHZlTm9kZShsb2NhdGlvbiwgcmVzb2x2ZS0+aWRlbnRpZmllcigpLCBleHByKTsK
KyAgICAgICAgICAgIEFzc2lnblJlc29sdmVOb2RlKiBub2RlID0gbmV3IChtX3BhcnNlckFyZW5h
KSBBc3NpZ25SZXNvbHZlTm9kZShsb2NhdGlvbiwgcmVzb2x2ZS0+aWRlbnRpZmllcigpLCBleHBy
KTsKICAgICAgICAgICAgIHNldEV4Y2VwdGlvbkxvY2F0aW9uKG5vZGUsIHN0YXJ0LCBkaXZvdCwg
ZW5kKTsKICAgICAgICAgICAgIHJldHVybiBub2RlOwogICAgICAgICB9Ci0gICAgICAgIHJldHVy
biBuZXcgKG1fdm0pIFJlYWRNb2RpZnlSZXNvbHZlTm9kZShsb2NhdGlvbiwgcmVzb2x2ZS0+aWRl
bnRpZmllcigpLCBvcCwgZXhwciwgZXhwckhhc0Fzc2lnbm1lbnRzLCBkaXZvdCwgc3RhcnQsIGVu
ZCk7CisgICAgICAgIHJldHVybiBuZXcgKG1fcGFyc2VyQXJlbmEpIFJlYWRNb2RpZnlSZXNvbHZl
Tm9kZShsb2NhdGlvbiwgcmVzb2x2ZS0+aWRlbnRpZmllcigpLCBvcCwgZXhwciwgZXhwckhhc0Fz
c2lnbm1lbnRzLCBkaXZvdCwgc3RhcnQsIGVuZCk7CiAgICAgfQogICAgIGlmIChsb2MtPmlzQnJh
Y2tldEFjY2Vzc29yTm9kZSgpKSB7CiAgICAgICAgIEJyYWNrZXRBY2Nlc3Nvck5vZGUqIGJyYWNr
ZXQgPSBzdGF0aWNfY2FzdDxCcmFja2V0QWNjZXNzb3JOb2RlKj4obG9jKTsKICAgICAgICAgaWYg
KG9wID09IE9wRXF1YWwpCi0gICAgICAgICAgICByZXR1cm4gbmV3IChtX3ZtKSBBc3NpZ25CcmFj
a2V0Tm9kZShsb2NhdGlvbiwgYnJhY2tldC0+YmFzZSgpLCBicmFja2V0LT5zdWJzY3JpcHQoKSwg
ZXhwciwgbG9jSGFzQXNzaWdubWVudHMsIGV4cHJIYXNBc3NpZ25tZW50cywgYnJhY2tldC0+ZGl2
b3QoKSwgc3RhcnQsIGVuZCk7Ci0gICAgICAgIFJlYWRNb2RpZnlCcmFja2V0Tm9kZSogbm9kZSA9
IG5ldyAobV92bSkgUmVhZE1vZGlmeUJyYWNrZXROb2RlKGxvY2F0aW9uLCBicmFja2V0LT5iYXNl
KCksIGJyYWNrZXQtPnN1YnNjcmlwdCgpLCBvcCwgZXhwciwgbG9jSGFzQXNzaWdubWVudHMsIGV4
cHJIYXNBc3NpZ25tZW50cywgZGl2b3QsIHN0YXJ0LCBlbmQpOworICAgICAgICAgICAgcmV0dXJu
IG5ldyAobV9wYXJzZXJBcmVuYSkgQXNzaWduQnJhY2tldE5vZGUobG9jYXRpb24sIGJyYWNrZXQt
PmJhc2UoKSwgYnJhY2tldC0+c3Vic2NyaXB0KCksIGV4cHIsIGxvY0hhc0Fzc2lnbm1lbnRzLCBl
eHBySGFzQXNzaWdubWVudHMsIGJyYWNrZXQtPmRpdm90KCksIHN0YXJ0LCBlbmQpOworICAgICAg
ICBSZWFkTW9kaWZ5QnJhY2tldE5vZGUqIG5vZGUgPSBuZXcgKG1fcGFyc2VyQXJlbmEpIFJlYWRN
b2RpZnlCcmFja2V0Tm9kZShsb2NhdGlvbiwgYnJhY2tldC0+YmFzZSgpLCBicmFja2V0LT5zdWJz
Y3JpcHQoKSwgb3AsIGV4cHIsIGxvY0hhc0Fzc2lnbm1lbnRzLCBleHBySGFzQXNzaWdubWVudHMs
IGRpdm90LCBzdGFydCwgZW5kKTsKICAgICAgICAgbm9kZS0+c2V0U3ViZXhwcmVzc2lvbkluZm8o
YnJhY2tldC0+ZGl2b3QoKSwgYnJhY2tldC0+ZGl2b3RFbmQoKS5vZmZzZXQpOwogICAgICAgICBy
ZXR1cm4gbm9kZTsKICAgICB9CkBAIC0xMDA1LDIyICsxMDA3LDIyIEBAIEV4cHJlc3Npb25Ob2Rl
KiBBU1RCdWlsZGVyOjptYWtlQXNzaWduTm8KICAgICBpZiAob3AgPT0gT3BFcXVhbCkgewogICAg
ICAgICBpZiAoZXhwci0+aXNGdW5jRXhwck5vZGUoKSkKICAgICAgICAgICAgIHN0YXRpY19jYXN0
PEZ1bmNFeHByTm9kZSo+KGV4cHIpLT5ib2R5KCktPnNldEluZmVycmVkTmFtZShkb3QtPmlkZW50
aWZpZXIoKSk7Ci0gICAgICAgIHJldHVybiBuZXcgKG1fdm0pIEFzc2lnbkRvdE5vZGUobG9jYXRp
b24sIGRvdC0+YmFzZSgpLCBkb3QtPmlkZW50aWZpZXIoKSwgZXhwciwgZXhwckhhc0Fzc2lnbm1l
bnRzLCBkb3QtPmRpdm90KCksIHN0YXJ0LCBlbmQpOworICAgICAgICByZXR1cm4gbmV3IChtX3Bh
cnNlckFyZW5hKSBBc3NpZ25Eb3ROb2RlKGxvY2F0aW9uLCBkb3QtPmJhc2UoKSwgZG90LT5pZGVu
dGlmaWVyKCksIGV4cHIsIGV4cHJIYXNBc3NpZ25tZW50cywgZG90LT5kaXZvdCgpLCBzdGFydCwg
ZW5kKTsKICAgICB9CiAKLSAgICBSZWFkTW9kaWZ5RG90Tm9kZSogbm9kZSA9IG5ldyAobV92bSkg
UmVhZE1vZGlmeURvdE5vZGUobG9jYXRpb24sIGRvdC0+YmFzZSgpLCBkb3QtPmlkZW50aWZpZXIo
KSwgb3AsIGV4cHIsIGV4cHJIYXNBc3NpZ25tZW50cywgZGl2b3QsIHN0YXJ0LCBlbmQpOworICAg
IFJlYWRNb2RpZnlEb3ROb2RlKiBub2RlID0gbmV3IChtX3BhcnNlckFyZW5hKSBSZWFkTW9kaWZ5
RG90Tm9kZShsb2NhdGlvbiwgZG90LT5iYXNlKCksIGRvdC0+aWRlbnRpZmllcigpLCBvcCwgZXhw
ciwgZXhwckhhc0Fzc2lnbm1lbnRzLCBkaXZvdCwgc3RhcnQsIGVuZCk7CiAgICAgbm9kZS0+c2V0
U3ViZXhwcmVzc2lvbkluZm8oZG90LT5kaXZvdCgpLCBkb3QtPmRpdm90RW5kKCkub2Zmc2V0KTsK
ICAgICByZXR1cm4gbm9kZTsKIH0KIAogRXhwcmVzc2lvbk5vZGUqIEFTVEJ1aWxkZXI6Om1ha2VQ
cmVmaXhOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIEV4cHJlc3Npb25Ob2Rl
KiBleHByLCBPcGVyYXRvciBvcCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIHN0YXJ0LCBjb25zdCBK
U1RleHRQb3NpdGlvbiYgZGl2b3QsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBlbmQpCiB7Ci0gICAg
cmV0dXJuIG5ldyAobV92bSkgUHJlZml4Tm9kZShsb2NhdGlvbiwgZXhwciwgb3AsIGRpdm90LCBz
dGFydCwgZW5kKTsKKyAgICByZXR1cm4gbmV3IChtX3BhcnNlckFyZW5hKSBQcmVmaXhOb2RlKGxv
Y2F0aW9uLCBleHByLCBvcCwgZGl2b3QsIHN0YXJ0LCBlbmQpOwogfQogCiBFeHByZXNzaW9uTm9k
ZSogQVNUQnVpbGRlcjo6bWFrZVBvc3RmaXhOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9j
YXRpb24sIEV4cHJlc3Npb25Ob2RlKiBleHByLCBPcGVyYXRvciBvcCwgY29uc3QgSlNUZXh0UG9z
aXRpb24mIHN0YXJ0LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3QsIGNvbnN0IEpTVGV4dFBv
c2l0aW9uJiBlbmQpCiB7Ci0gICAgcmV0dXJuIG5ldyAobV92bSkgUG9zdGZpeE5vZGUobG9jYXRp
b24sIGV4cHIsIG9wLCBkaXZvdCwgc3RhcnQsIGVuZCk7CisgICAgcmV0dXJuIG5ldyAobV9wYXJz
ZXJBcmVuYSkgUG9zdGZpeE5vZGUobG9jYXRpb24sIGV4cHIsIG9wLCBkaXZvdCwgc3RhcnQsIGVu
ZCk7CiB9CiAKIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZUNvbnN0
cnVjdG9ycy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9k
ZUNvbnN0cnVjdG9ycy5oCShyZXZpc2lvbiAxNzY3NTQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcGFyc2VyL05vZGVDb25zdHJ1Y3RvcnMuaAkod29ya2luZyBjb3B5KQpAQCAtMjcsMTkgKzI3
LDE5IEBACiAKIG5hbWVzcGFjZSBKU0MgewogCi0gICAgaW5saW5lIHZvaWQqIFBhcnNlckFyZW5h
RnJlZWFibGU6Om9wZXJhdG9yIG5ldyhzaXplX3Qgc2l6ZSwgVk0qIHZtKQorICAgIGlubGluZSB2
b2lkKiBQYXJzZXJBcmVuYUZyZWVhYmxlOjpvcGVyYXRvciBuZXcoc2l6ZV90IHNpemUsIFBhcnNl
ckFyZW5hJiBwYXJzZXJBcmVuYSkKICAgICB7Ci0gICAgICAgIHJldHVybiB2bS0+cGFyc2VyQXJl
bmEtPmFsbG9jYXRlRnJlZWFibGUoc2l6ZSk7CisgICAgICAgIHJldHVybiBwYXJzZXJBcmVuYS5h
bGxvY2F0ZUZyZWVhYmxlKHNpemUpOwogICAgIH0KIAotICAgIGlubGluZSB2b2lkKiBQYXJzZXJB
cmVuYURlbGV0YWJsZTo6b3BlcmF0b3IgbmV3KHNpemVfdCBzaXplLCBWTSogdm0pCisgICAgaW5s
aW5lIHZvaWQqIFBhcnNlckFyZW5hRGVsZXRhYmxlOjpvcGVyYXRvciBuZXcoc2l6ZV90IHNpemUs
IFBhcnNlckFyZW5hJiBwYXJzZXJBcmVuYSkKICAgICB7Ci0gICAgICAgIHJldHVybiB2bS0+cGFy
c2VyQXJlbmEtPmFsbG9jYXRlRGVsZXRhYmxlKHNpemUpOworICAgICAgICByZXR1cm4gcGFyc2Vy
QXJlbmEuYWxsb2NhdGVEZWxldGFibGUoc2l6ZSk7CiAgICAgfQogCi0gICAgaW5saW5lIFBhcnNl
ckFyZW5hUmVmQ291bnRlZDo6UGFyc2VyQXJlbmFSZWZDb3VudGVkKFZNKiB2bSkKKyAgICBpbmxp
bmUgUGFyc2VyQXJlbmFSZWZDb3VudGVkOjpQYXJzZXJBcmVuYVJlZkNvdW50ZWQoUGFyc2VyQXJl
bmEmIHBhcnNlckFyZW5hKQogICAgIHsKLSAgICAgICAgdm0tPnBhcnNlckFyZW5hLT5kZXJlZldp
dGhBcmVuYShhZG9wdFJlZih0aGlzKSk7CisgICAgICAgIHBhcnNlckFyZW5hLmRlcmVmV2l0aEFy
ZW5hKGFkb3B0UmVmKHRoaXMpKTsKICAgICB9CiAKICAgICBpbmxpbmUgTm9kZTo6Tm9kZShjb25z
dCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L3BhcnNlci9Ob2Rlcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3Bh
cnNlci9Ob2Rlcy5jcHAJKHJldmlzaW9uIDE3Njc1NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9wYXJzZXIvTm9kZXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03Niw5ICs3Niw5IEBAIFN0YXRl
bWVudE5vZGUqIFNvdXJjZUVsZW1lbnRzOjpzaW5nbGVTdGEKIAogLy8gLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tIFNjb3BlTm9kZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQog
Ci1TY29wZU5vZGU6OlNjb3BlTm9kZShWTSogdm0sIGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgc3Rh
cnRMb2NhdGlvbiwgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBlbmRMb2NhdGlvbiwgYm9vbCBpblN0
cmljdENvbnRleHQpCitTY29wZU5vZGU6OlNjb3BlTm9kZShQYXJzZXJBcmVuYSYgcGFyc2VyQXJl
bmEsIGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgc3RhcnRMb2NhdGlvbiwgY29uc3QgSlNUb2tlbkxv
Y2F0aW9uJiBlbmRMb2NhdGlvbiwgYm9vbCBpblN0cmljdENvbnRleHQpCiAgICAgOiBTdGF0ZW1l
bnROb2RlKGVuZExvY2F0aW9uKQotICAgICwgUGFyc2VyQXJlbmFSZWZDb3VudGVkKHZtKQorICAg
ICwgUGFyc2VyQXJlbmFSZWZDb3VudGVkKHBhcnNlckFyZW5hKQogICAgICwgbV9zdGFydExpbmVO
dW1iZXIoc3RhcnRMb2NhdGlvbi5saW5lKQogICAgICwgbV9zdGFydFN0YXJ0T2Zmc2V0KHN0YXJ0
TG9jYXRpb24uc3RhcnRPZmZzZXQpCiAgICAgLCBtX3N0YXJ0TGluZVN0YXJ0T2Zmc2V0KHN0YXJ0
TG9jYXRpb24ubGluZVN0YXJ0T2Zmc2V0KQpAQCAtODgsOSArODgsOSBAQCBTY29wZU5vZGU6OlNj
b3BlTm9kZShWTSogdm0sIGNvbnN0IEpTVG9rCiB7CiB9CiAKLVNjb3BlTm9kZTo6U2NvcGVOb2Rl
KFZNKiB2bSwgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBzdGFydExvY2F0aW9uLCBjb25zdCBKU1Rv
a2VuTG9jYXRpb24mIGVuZExvY2F0aW9uLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIFNvdXJj
ZUVsZW1lbnRzKiBjaGlsZHJlbiwgVmFyU3RhY2sqIHZhclN0YWNrLCBGdW5jdGlvblN0YWNrKiBm
dW5jU3RhY2ssIElkZW50aWZpZXJTZXQmIGNhcHR1cmVkVmFyaWFibGVzLCBDb2RlRmVhdHVyZXMg
ZmVhdHVyZXMsIGludCBudW1Db25zdGFudHMpCitTY29wZU5vZGU6OlNjb3BlTm9kZShQYXJzZXJB
cmVuYSYgcGFyc2VyQXJlbmEsIGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgc3RhcnRMb2NhdGlvbiwg
Y29uc3QgSlNUb2tlbkxvY2F0aW9uJiBlbmRMb2NhdGlvbiwgY29uc3QgU291cmNlQ29kZSYgc291
cmNlLCBTb3VyY2VFbGVtZW50cyogY2hpbGRyZW4sIFZhclN0YWNrKiB2YXJTdGFjaywgRnVuY3Rp
b25TdGFjayogZnVuY1N0YWNrLCBJZGVudGlmaWVyU2V0JiBjYXB0dXJlZFZhcmlhYmxlcywgQ29k
ZUZlYXR1cmVzIGZlYXR1cmVzLCBpbnQgbnVtQ29uc3RhbnRzKQogICAgIDogU3RhdGVtZW50Tm9k
ZShlbmRMb2NhdGlvbikKLSAgICAsIFBhcnNlckFyZW5hUmVmQ291bnRlZCh2bSkKKyAgICAsIFBh
cnNlckFyZW5hUmVmQ291bnRlZChwYXJzZXJBcmVuYSkKICAgICAsIG1fc3RhcnRMaW5lTnVtYmVy
KHN0YXJ0TG9jYXRpb24ubGluZSkKICAgICAsIG1fc3RhcnRTdGFydE9mZnNldChzdGFydExvY2F0
aW9uLnN0YXJ0T2Zmc2V0KQogICAgICwgbV9zdGFydExpbmVTdGFydE9mZnNldChzdGFydExvY2F0
aW9uLmxpbmVTdGFydE9mZnNldCkKQEAgLTk5LDcgKzk5LDcgQEAgU2NvcGVOb2RlOjpTY29wZU5v
ZGUoVk0qIHZtLCBjb25zdCBKU1RvawogICAgICwgbV9udW1Db25zdGFudHMobnVtQ29uc3RhbnRz
KQogICAgICwgbV9zdGF0ZW1lbnRzKGNoaWxkcmVuKQogewotICAgIG1fYXJlbmEuc3dhcCgqdm0t
PnBhcnNlckFyZW5hKTsKKyAgICBtX2FyZW5hLnN3YXAocGFyc2VyQXJlbmEpOwogICAgIGlmICh2
YXJTdGFjaykKICAgICAgICAgbV92YXJTdGFjay5zd2FwKCp2YXJTdGFjayk7CiAgICAgaWYgKGZ1
bmNTdGFjaykKQEAgLTExNCwxNiArMTE0LDE2IEBAIFN0YXRlbWVudE5vZGUqIFNjb3BlTm9kZTo6
c2luZ2xlU3RhdGVtZW4KIAogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIFByb2dy
YW1Ob2RlIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKLWlubGluZSBQcm9ncmFtTm9k
ZTo6UHJvZ3JhbU5vZGUoVk0qIHZtLCBjb25zdCBKU1Rva2VuTG9jYXRpb24mIHN0YXJ0TG9jYXRp
b24sIGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgZW5kTG9jYXRpb24sIHVuc2lnbmVkIHN0YXJ0Q29s
dW1uLCB1bnNpZ25lZCBlbmRDb2x1bW4sIFNvdXJjZUVsZW1lbnRzKiBjaGlsZHJlbiwgVmFyU3Rh
Y2sqIHZhclN0YWNrLCBGdW5jdGlvblN0YWNrKiBmdW5jU3RhY2ssIElkZW50aWZpZXJTZXQmIGNh
cHR1cmVkVmFyaWFibGVzLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIENvZGVGZWF0dXJlcyBm
ZWF0dXJlcywgaW50IG51bUNvbnN0YW50cykKLSAgICA6IFNjb3BlTm9kZSh2bSwgc3RhcnRMb2Nh
dGlvbiwgZW5kTG9jYXRpb24sIHNvdXJjZSwgY2hpbGRyZW4sIHZhclN0YWNrLCBmdW5jU3RhY2ss
IGNhcHR1cmVkVmFyaWFibGVzLCBmZWF0dXJlcywgbnVtQ29uc3RhbnRzKQoraW5saW5lIFByb2dy
YW1Ob2RlOjpQcm9ncmFtTm9kZShQYXJzZXJBcmVuYSYgcGFyc2VyQXJlbmEsIGNvbnN0IEpTVG9r
ZW5Mb2NhdGlvbiYgc3RhcnRMb2NhdGlvbiwgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBlbmRMb2Nh
dGlvbiwgdW5zaWduZWQgc3RhcnRDb2x1bW4sIHVuc2lnbmVkIGVuZENvbHVtbiwgU291cmNlRWxl
bWVudHMqIGNoaWxkcmVuLCBWYXJTdGFjayogdmFyU3RhY2ssIEZ1bmN0aW9uU3RhY2sqIGZ1bmNT
dGFjaywgSWRlbnRpZmllclNldCYgY2FwdHVyZWRWYXJpYWJsZXMsIGNvbnN0IFNvdXJjZUNvZGUm
IHNvdXJjZSwgQ29kZUZlYXR1cmVzIGZlYXR1cmVzLCBpbnQgbnVtQ29uc3RhbnRzKQorICAgIDog
U2NvcGVOb2RlKHBhcnNlckFyZW5hLCBzdGFydExvY2F0aW9uLCBlbmRMb2NhdGlvbiwgc291cmNl
LCBjaGlsZHJlbiwgdmFyU3RhY2ssIGZ1bmNTdGFjaywgY2FwdHVyZWRWYXJpYWJsZXMsIGZlYXR1
cmVzLCBudW1Db25zdGFudHMpCiAgICAgLCBtX3N0YXJ0Q29sdW1uKHN0YXJ0Q29sdW1uKQogICAg
ICwgbV9lbmRDb2x1bW4oZW5kQ29sdW1uKQogewogfQogCi1QYXNzUmVmUHRyPFByb2dyYW1Ob2Rl
PiBQcm9ncmFtTm9kZTo6Y3JlYXRlKFZNKiB2bSwgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBzdGFy
dExvY2F0aW9uLCBjb25zdCBKU1Rva2VuTG9jYXRpb24mIGVuZExvY2F0aW9uLCB1bnNpZ25lZCBz
dGFydENvbHVtbiwgdW5zaWduZWQgZW5kQ29sdW1uLCBTb3VyY2VFbGVtZW50cyogY2hpbGRyZW4s
IFZhclN0YWNrKiB2YXJTdGFjaywgRnVuY3Rpb25TdGFjayogZnVuY1N0YWNrLCBJZGVudGlmaWVy
U2V0JiBjYXB0dXJlZFZhcmlhYmxlcywgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBDb2RlRmVh
dHVyZXMgZmVhdHVyZXMsIGludCBudW1Db25zdGFudHMpCitQYXNzUmVmUHRyPFByb2dyYW1Ob2Rl
PiBQcm9ncmFtTm9kZTo6Y3JlYXRlKFBhcnNlckFyZW5hJiBwYXJzZXJBcmVuYSwgY29uc3QgSlNU
b2tlbkxvY2F0aW9uJiBzdGFydExvY2F0aW9uLCBjb25zdCBKU1Rva2VuTG9jYXRpb24mIGVuZExv
Y2F0aW9uLCB1bnNpZ25lZCBzdGFydENvbHVtbiwgdW5zaWduZWQgZW5kQ29sdW1uLCBTb3VyY2VF
bGVtZW50cyogY2hpbGRyZW4sIFZhclN0YWNrKiB2YXJTdGFjaywgRnVuY3Rpb25TdGFjayogZnVu
Y1N0YWNrLCBJZGVudGlmaWVyU2V0JiBjYXB0dXJlZFZhcmlhYmxlcywgY29uc3QgU291cmNlQ29k
ZSYgc291cmNlLCBDb2RlRmVhdHVyZXMgZmVhdHVyZXMsIGludCBudW1Db25zdGFudHMpCiB7Ci0g
ICAgUmVmUHRyPFByb2dyYW1Ob2RlPiBub2RlID0gbmV3IFByb2dyYW1Ob2RlKHZtLCBzdGFydExv
Y2F0aW9uLCBlbmRMb2NhdGlvbiwgc3RhcnRDb2x1bW4sIGVuZENvbHVtbiwgY2hpbGRyZW4sIHZh
clN0YWNrLCBmdW5jU3RhY2ssICBjYXB0dXJlZFZhcmlhYmxlcywgc291cmNlLCBmZWF0dXJlcywg
bnVtQ29uc3RhbnRzKTsKKyAgICBSZWZQdHI8UHJvZ3JhbU5vZGU+IG5vZGUgPSBuZXcgUHJvZ3Jh
bU5vZGUocGFyc2VyQXJlbmEsIHN0YXJ0TG9jYXRpb24sIGVuZExvY2F0aW9uLCBzdGFydENvbHVt
biwgZW5kQ29sdW1uLCBjaGlsZHJlbiwgdmFyU3RhY2ssIGZ1bmNTdGFjaywgIGNhcHR1cmVkVmFy
aWFibGVzLCBzb3VyY2UsIGZlYXR1cmVzLCBudW1Db25zdGFudHMpOwogCiAgICAgQVNTRVJUKG5v
ZGUtPm1fYXJlbmEubGFzdCgpID09IG5vZGUpOwogICAgIG5vZGUtPm1fYXJlbmEucmVtb3ZlTGFz
dCgpOwpAQCAtMTQwLDE1ICsxNDAsMTUgQEAgdm9pZCBQcm9ncmFtTm9kZTo6c2V0Q2xvc2VkVmFy
aWFibGVzKFZlYwogCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gRXZhbE5vZGUg
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotaW5saW5lIEV2YWxOb2RlOjpFdmFsTm9k
ZShWTSogdm0sIGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgc3RhcnRMb2NhdGlvbiwgY29uc3QgSlNU
b2tlbkxvY2F0aW9uJiBlbmRMb2NhdGlvbiwgdW5zaWduZWQgZW5kQ29sdW1uLCBTb3VyY2VFbGVt
ZW50cyogY2hpbGRyZW4sIFZhclN0YWNrKiB2YXJTdGFjaywgRnVuY3Rpb25TdGFjayogZnVuY1N0
YWNrLCBJZGVudGlmaWVyU2V0JiBjYXB0dXJlZFZhcmlhYmxlcywgY29uc3QgU291cmNlQ29kZSYg
c291cmNlLCBDb2RlRmVhdHVyZXMgZmVhdHVyZXMsIGludCBudW1Db25zdGFudHMpCi0gICAgOiBT
Y29wZU5vZGUodm0sIHN0YXJ0TG9jYXRpb24sIGVuZExvY2F0aW9uLCBzb3VyY2UsIGNoaWxkcmVu
LCB2YXJTdGFjaywgZnVuY1N0YWNrLCBjYXB0dXJlZFZhcmlhYmxlcywgZmVhdHVyZXMsIG51bUNv
bnN0YW50cykKK2lubGluZSBFdmFsTm9kZTo6RXZhbE5vZGUoUGFyc2VyQXJlbmEmIHBhcnNlckFy
ZW5hLCBjb25zdCBKU1Rva2VuTG9jYXRpb24mIHN0YXJ0TG9jYXRpb24sIGNvbnN0IEpTVG9rZW5M
b2NhdGlvbiYgZW5kTG9jYXRpb24sIHVuc2lnbmVkIGVuZENvbHVtbiwgU291cmNlRWxlbWVudHMq
IGNoaWxkcmVuLCBWYXJTdGFjayogdmFyU3RhY2ssIEZ1bmN0aW9uU3RhY2sqIGZ1bmNTdGFjaywg
SWRlbnRpZmllclNldCYgY2FwdHVyZWRWYXJpYWJsZXMsIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJj
ZSwgQ29kZUZlYXR1cmVzIGZlYXR1cmVzLCBpbnQgbnVtQ29uc3RhbnRzKQorICAgIDogU2NvcGVO
b2RlKHBhcnNlckFyZW5hLCBzdGFydExvY2F0aW9uLCBlbmRMb2NhdGlvbiwgc291cmNlLCBjaGls
ZHJlbiwgdmFyU3RhY2ssIGZ1bmNTdGFjaywgY2FwdHVyZWRWYXJpYWJsZXMsIGZlYXR1cmVzLCBu
dW1Db25zdGFudHMpCiAgICAgLCBtX2VuZENvbHVtbihlbmRDb2x1bW4pCiB7CiB9CiAKLVBhc3NS
ZWZQdHI8RXZhbE5vZGU+IEV2YWxOb2RlOjpjcmVhdGUoVk0qIHZtLCBjb25zdCBKU1Rva2VuTG9j
YXRpb24mIHN0YXJ0TG9jYXRpb24sIGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgZW5kTG9jYXRpb24s
IHVuc2lnbmVkLCB1bnNpZ25lZCBlbmRDb2x1bW4sIFNvdXJjZUVsZW1lbnRzKiBjaGlsZHJlbiwg
VmFyU3RhY2sqIHZhclN0YWNrLCBGdW5jdGlvblN0YWNrKiBmdW5jU3RhY2ssIElkZW50aWZpZXJT
ZXQmIGNhcHR1cmVkVmFyaWFibGVzLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIENvZGVGZWF0
dXJlcyBmZWF0dXJlcywgaW50IG51bUNvbnN0YW50cykKK1Bhc3NSZWZQdHI8RXZhbE5vZGU+IEV2
YWxOb2RlOjpjcmVhdGUoUGFyc2VyQXJlbmEmIHBhcnNlckFyZW5hLCBjb25zdCBKU1Rva2VuTG9j
YXRpb24mIHN0YXJ0TG9jYXRpb24sIGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgZW5kTG9jYXRpb24s
IHVuc2lnbmVkLCB1bnNpZ25lZCBlbmRDb2x1bW4sIFNvdXJjZUVsZW1lbnRzKiBjaGlsZHJlbiwg
VmFyU3RhY2sqIHZhclN0YWNrLCBGdW5jdGlvblN0YWNrKiBmdW5jU3RhY2ssIElkZW50aWZpZXJT
ZXQmIGNhcHR1cmVkVmFyaWFibGVzLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIENvZGVGZWF0
dXJlcyBmZWF0dXJlcywgaW50IG51bUNvbnN0YW50cykKIHsKLSAgICBSZWZQdHI8RXZhbE5vZGU+
IG5vZGUgPSBuZXcgRXZhbE5vZGUodm0sIHN0YXJ0TG9jYXRpb24sIGVuZExvY2F0aW9uLCBlbmRD
b2x1bW4sIGNoaWxkcmVuLCB2YXJTdGFjaywgZnVuY1N0YWNrLCBjYXB0dXJlZFZhcmlhYmxlcywg
c291cmNlLCBmZWF0dXJlcywgbnVtQ29uc3RhbnRzKTsKKyAgICBSZWZQdHI8RXZhbE5vZGU+IG5v
ZGUgPSBuZXcgRXZhbE5vZGUocGFyc2VyQXJlbmEsIHN0YXJ0TG9jYXRpb24sIGVuZExvY2F0aW9u
LCBlbmRDb2x1bW4sIGNoaWxkcmVuLCB2YXJTdGFjaywgZnVuY1N0YWNrLCBjYXB0dXJlZFZhcmlh
Ymxlcywgc291cmNlLCBmZWF0dXJlcywgbnVtQ29uc3RhbnRzKTsKIAogICAgIEFTU0VSVChub2Rl
LT5tX2FyZW5hLmxhc3QoKSA9PSBub2RlKTsKICAgICBub2RlLT5tX2FyZW5hLnJlbW92ZUxhc3Qo
KTsKQEAgLTE4NywxNSArMTg3LDE1IEBAIEZ1bmN0aW9uUGFyYW1ldGVyczo6fkZ1bmN0aW9uUGFy
YW1ldGVycygKICAgICAgICAgcGF0dGVybnMoKVtpXS0+ZGVyZWYoKTsKIH0KIAotaW5saW5lIEZ1
bmN0aW9uQm9keU5vZGU6OkZ1bmN0aW9uQm9keU5vZGUoVk0qIHZtLCBjb25zdCBKU1Rva2VuTG9j
YXRpb24mIHN0YXJ0TG9jYXRpb24sIGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgZW5kTG9jYXRpb24s
IHVuc2lnbmVkIHN0YXJ0Q29sdW1uLCB1bnNpZ25lZCBlbmRDb2x1bW4sIGJvb2wgaW5TdHJpY3RD
b250ZXh0KQotICAgIDogU2NvcGVOb2RlKHZtLCBzdGFydExvY2F0aW9uLCBlbmRMb2NhdGlvbiwg
aW5TdHJpY3RDb250ZXh0KQoraW5saW5lIEZ1bmN0aW9uQm9keU5vZGU6OkZ1bmN0aW9uQm9keU5v
ZGUoUGFyc2VyQXJlbmEmIHBhcnNlckFyZW5hLCBjb25zdCBKU1Rva2VuTG9jYXRpb24mIHN0YXJ0
TG9jYXRpb24sIGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgZW5kTG9jYXRpb24sIHVuc2lnbmVkIHN0
YXJ0Q29sdW1uLCB1bnNpZ25lZCBlbmRDb2x1bW4sIGJvb2wgaW5TdHJpY3RDb250ZXh0KQorICAg
IDogU2NvcGVOb2RlKHBhcnNlckFyZW5hLCBzdGFydExvY2F0aW9uLCBlbmRMb2NhdGlvbiwgaW5T
dHJpY3RDb250ZXh0KQogICAgICwgbV9zdGFydENvbHVtbihzdGFydENvbHVtbikKICAgICAsIG1f
ZW5kQ29sdW1uKGVuZENvbHVtbikKIHsKIH0KIAotaW5saW5lIEZ1bmN0aW9uQm9keU5vZGU6OkZ1
bmN0aW9uQm9keU5vZGUoVk0qIHZtLCBjb25zdCBKU1Rva2VuTG9jYXRpb24mIHN0YXJ0TG9jYXRp
b24sIGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgZW5kTG9jYXRpb24sIHVuc2lnbmVkIHN0YXJ0Q29s
dW1uLCB1bnNpZ25lZCBlbmRDb2x1bW4sIFNvdXJjZUVsZW1lbnRzKiBjaGlsZHJlbiwgVmFyU3Rh
Y2sqIHZhclN0YWNrLCBGdW5jdGlvblN0YWNrKiBmdW5jU3RhY2ssIElkZW50aWZpZXJTZXQmIGNh
cHR1cmVkVmFyaWFibGVzLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2VDb2RlLCBDb2RlRmVhdHVy
ZXMgZmVhdHVyZXMsIGludCBudW1Db25zdGFudHMpCi0gICAgOiBTY29wZU5vZGUodm0sIHN0YXJ0
TG9jYXRpb24sIGVuZExvY2F0aW9uLCBzb3VyY2VDb2RlLCBjaGlsZHJlbiwgdmFyU3RhY2ssIGZ1
bmNTdGFjaywgY2FwdHVyZWRWYXJpYWJsZXMsIGZlYXR1cmVzLCBudW1Db25zdGFudHMpCitpbmxp
bmUgRnVuY3Rpb25Cb2R5Tm9kZTo6RnVuY3Rpb25Cb2R5Tm9kZShQYXJzZXJBcmVuYSYgcGFyc2Vy
QXJlbmEsIGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgc3RhcnRMb2NhdGlvbiwgY29uc3QgSlNUb2tl
bkxvY2F0aW9uJiBlbmRMb2NhdGlvbiwgdW5zaWduZWQgc3RhcnRDb2x1bW4sIHVuc2lnbmVkIGVu
ZENvbHVtbiwgU291cmNlRWxlbWVudHMqIGNoaWxkcmVuLCBWYXJTdGFjayogdmFyU3RhY2ssIEZ1
bmN0aW9uU3RhY2sqIGZ1bmNTdGFjaywgSWRlbnRpZmllclNldCYgY2FwdHVyZWRWYXJpYWJsZXMs
IGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZUNvZGUsIENvZGVGZWF0dXJlcyBmZWF0dXJlcywgaW50
IG51bUNvbnN0YW50cykKKyAgICA6IFNjb3BlTm9kZShwYXJzZXJBcmVuYSwgc3RhcnRMb2NhdGlv
biwgZW5kTG9jYXRpb24sIHNvdXJjZUNvZGUsIGNoaWxkcmVuLCB2YXJTdGFjaywgZnVuY1N0YWNr
LCBjYXB0dXJlZFZhcmlhYmxlcywgZmVhdHVyZXMsIG51bUNvbnN0YW50cykKICAgICAsIG1fc3Rh
cnRDb2x1bW4oc3RhcnRDb2x1bW4pCiAgICAgLCBtX2VuZENvbHVtbihlbmRDb2x1bW4pCiB7CkBA
IC0yMTUsMTQgKzIxNSwxNCBAQCB2b2lkIEZ1bmN0aW9uQm9keU5vZGU6OmZpbmlzaFBhcnNpbmco
UGFzCiAgICAgbV9mdW5jdGlvbk1vZGUgPSBmdW5jdGlvbk1vZGU7CiB9CiAKLUZ1bmN0aW9uQm9k
eU5vZGUqIEZ1bmN0aW9uQm9keU5vZGU6OmNyZWF0ZShWTSogdm0sIGNvbnN0IEpTVG9rZW5Mb2Nh
dGlvbiYgc3RhcnRMb2NhdGlvbiwgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBlbmRMb2NhdGlvbiwg
dW5zaWduZWQgc3RhcnRDb2x1bW4sIHVuc2lnbmVkIGVuZENvbHVtbiwgYm9vbCBpblN0cmljdENv
bnRleHQpCitGdW5jdGlvbkJvZHlOb2RlKiBGdW5jdGlvbkJvZHlOb2RlOjpjcmVhdGUoUGFyc2Vy
QXJlbmEmIHBhcnNlckFyZW5hLCBjb25zdCBKU1Rva2VuTG9jYXRpb24mIHN0YXJ0TG9jYXRpb24s
IGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgZW5kTG9jYXRpb24sIHVuc2lnbmVkIHN0YXJ0Q29sdW1u
LCB1bnNpZ25lZCBlbmRDb2x1bW4sIGJvb2wgaW5TdHJpY3RDb250ZXh0KQogewotICAgIHJldHVy
biBuZXcgRnVuY3Rpb25Cb2R5Tm9kZSh2bSwgc3RhcnRMb2NhdGlvbiwgZW5kTG9jYXRpb24sIHN0
YXJ0Q29sdW1uLCBlbmRDb2x1bW4sIGluU3RyaWN0Q29udGV4dCk7CisgICAgcmV0dXJuIG5ldyBG
dW5jdGlvbkJvZHlOb2RlKHBhcnNlckFyZW5hLCBzdGFydExvY2F0aW9uLCBlbmRMb2NhdGlvbiwg
c3RhcnRDb2x1bW4sIGVuZENvbHVtbiwgaW5TdHJpY3RDb250ZXh0KTsKIH0KIAotUGFzc1JlZlB0
cjxGdW5jdGlvbkJvZHlOb2RlPiBGdW5jdGlvbkJvZHlOb2RlOjpjcmVhdGUoVk0qIHZtLCBjb25z
dCBKU1Rva2VuTG9jYXRpb24mIHN0YXJ0TG9jYXRpb24sIGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYg
ZW5kTG9jYXRpb24sIHVuc2lnbmVkIHN0YXJ0Q29sdW1uLCB1bnNpZ25lZCBlbmRDb2x1bW4sIFNv
dXJjZUVsZW1lbnRzKiBjaGlsZHJlbiwgVmFyU3RhY2sqIHZhclN0YWNrLCBGdW5jdGlvblN0YWNr
KiBmdW5jU3RhY2ssIElkZW50aWZpZXJTZXQmIGNhcHR1cmVkVmFyaWFibGVzLCBjb25zdCBTb3Vy
Y2VDb2RlJiBzb3VyY2VDb2RlLCBDb2RlRmVhdHVyZXMgZmVhdHVyZXMsIGludCBudW1Db25zdGFu
dHMpCitQYXNzUmVmUHRyPEZ1bmN0aW9uQm9keU5vZGU+IEZ1bmN0aW9uQm9keU5vZGU6OmNyZWF0
ZShQYXJzZXJBcmVuYSYgcGFyc2VyQXJlbmEsIGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgc3RhcnRM
b2NhdGlvbiwgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBlbmRMb2NhdGlvbiwgdW5zaWduZWQgc3Rh
cnRDb2x1bW4sIHVuc2lnbmVkIGVuZENvbHVtbiwgU291cmNlRWxlbWVudHMqIGNoaWxkcmVuLCBW
YXJTdGFjayogdmFyU3RhY2ssIEZ1bmN0aW9uU3RhY2sqIGZ1bmNTdGFjaywgSWRlbnRpZmllclNl
dCYgY2FwdHVyZWRWYXJpYWJsZXMsIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZUNvZGUsIENvZGVG
ZWF0dXJlcyBmZWF0dXJlcywgaW50IG51bUNvbnN0YW50cykKIHsKLSAgICBSZWZQdHI8RnVuY3Rp
b25Cb2R5Tm9kZT4gbm9kZSA9IG5ldyBGdW5jdGlvbkJvZHlOb2RlKHZtLCBzdGFydExvY2F0aW9u
LCBlbmRMb2NhdGlvbiwgc3RhcnRDb2x1bW4sIGVuZENvbHVtbiAsIGNoaWxkcmVuLCB2YXJTdGFj
aywgZnVuY1N0YWNrLCBjYXB0dXJlZFZhcmlhYmxlcywgc291cmNlQ29kZSwgZmVhdHVyZXMsIG51
bUNvbnN0YW50cyk7CisgICAgUmVmUHRyPEZ1bmN0aW9uQm9keU5vZGU+IG5vZGUgPSBuZXcgRnVu
Y3Rpb25Cb2R5Tm9kZShwYXJzZXJBcmVuYSwgc3RhcnRMb2NhdGlvbiwgZW5kTG9jYXRpb24sIHN0
YXJ0Q29sdW1uLCBlbmRDb2x1bW4gLCBjaGlsZHJlbiwgdmFyU3RhY2ssIGZ1bmNTdGFjaywgY2Fw
dHVyZWRWYXJpYWJsZXMsIHNvdXJjZUNvZGUsIGZlYXR1cmVzLCBudW1Db25zdGFudHMpOwogCiAg
ICAgQVNTRVJUKG5vZGUtPm1fYXJlbmEubGFzdCgpID09IG5vZGUpOwogICAgIG5vZGUtPm1fYXJl
bmEucmVtb3ZlTGFzdCgpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rl
cy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuaAko
cmV2aXNpb24gMTc2NzU0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5o
CSh3b3JraW5nIGNvcHkpCkBAIC05NCw3ICs5NCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIHB1
YmxpYzoKICAgICAgICAgLy8gUGFyc2VyQXJlbmFGcmVlYWJsZSBvYmplY3RzIGFyZSBhcmUgZnJl
ZWQgd2hlbiB0aGUgYXJlbmEgaXMgZGVsZXRlZC4KICAgICAgICAgLy8gRGVzdHJ1Y3RvcnMgYXJl
IG5vdCBjYWxsZWQuIENsaWVudHMgbXVzdCBub3QgY2FsbCBkZWxldGUgb24gc3VjaCBvYmplY3Rz
LgotICAgICAgICB2b2lkKiBvcGVyYXRvciBuZXcoc2l6ZV90LCBWTSopOworICAgICAgICB2b2lk
KiBvcGVyYXRvciBuZXcoc2l6ZV90LCBQYXJzZXJBcmVuYSYpOwogICAgIH07CiAKICAgICBjbGFz
cyBQYXJzZXJBcmVuYURlbGV0YWJsZSB7CkBAIC0xMDMsNyArMTAzLDcgQEAgbmFtZXNwYWNlIEpT
QyB7CiAKICAgICAgICAgLy8gUGFyc2VyQXJlbmFEZWxldGFibGUgb2JqZWN0cyBhcmUgZGVsZXRl
ZCB3aGVuIHRoZSBhcmVuYSBpcyBkZWxldGVkLgogICAgICAgICAvLyBDbGllbnRzIG11c3Qgbm90
IGNhbGwgZGVsZXRlIGRpcmVjdGx5IG9uIHN1Y2ggb2JqZWN0cy4KLSAgICAgICAgdm9pZCogb3Bl
cmF0b3IgbmV3KHNpemVfdCwgVk0qKTsKKyAgICAgICAgdm9pZCogb3BlcmF0b3IgbmV3KHNpemVf
dCwgUGFyc2VyQXJlbmEmKTsKICAgICB9OwogCiAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CkBA
IC0xMTQsNyArMTE0LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgY2xhc3MgUGFyc2VyQXJlbmFS
ZWZDb3VudGVkIDogcHVibGljIFJlZkNvdW50ZWQ8UGFyc2VyQXJlbmFSZWZDb3VudGVkPiB7CiAg
ICAgICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogICAgIHByb3RlY3RlZDoKLSAgICAgICAg
UGFyc2VyQXJlbmFSZWZDb3VudGVkKFZNKik7CisgICAgICAgIFBhcnNlckFyZW5hUmVmQ291bnRl
ZChQYXJzZXJBcmVuYSYpOwogCiAgICAgcHVibGljOgogICAgICAgICB2aXJ0dWFsIH5QYXJzZXJB
cmVuYVJlZkNvdW50ZWQoKQpAQCAtNDY2LDcgKzQ2Niw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAg
ICAgICBBcnJheU5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgRWxlbWVudE5vZGUqKTsKICAg
ICAgICAgQXJyYXlOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIGludCBlbGlzaW9uLCBFbGVt
ZW50Tm9kZSopOwogCi0gICAgICAgIEFyZ3VtZW50TGlzdE5vZGUqIHRvQXJndW1lbnRMaXN0KFZN
KiwgaW50LCBpbnQpIGNvbnN0OworICAgICAgICBBcmd1bWVudExpc3ROb2RlKiB0b0FyZ3VtZW50
TGlzdChQYXJzZXJBcmVuYSYsIGludCwgaW50KSBjb25zdDsKIAogICAgICAgICBFbGVtZW50Tm9k
ZSogZWxlbWVudHMoKSBjb25zdCB7IEFTU0VSVChpc1NpbXBsZUFycmF5KCkpOyByZXR1cm4gbV9l
bGVtZW50OyB9CiAgICAgcHJpdmF0ZToKQEAgLTE0MDksOCArMTQwOSw4IEBAIG5hbWVzcGFjZSBK
U0MgewogICAgICAgICB0eXBlZGVmIERlY2xhcmF0aW9uU3RhY2tzOjpWYXJTdGFjayBWYXJTdGFj
azsKICAgICAgICAgdHlwZWRlZiBEZWNsYXJhdGlvblN0YWNrczo6RnVuY3Rpb25TdGFjayBGdW5j
dGlvblN0YWNrOwogCi0gICAgICAgIFNjb3BlTm9kZShWTSosIGNvbnN0IEpTVG9rZW5Mb2NhdGlv
biYgc3RhcnQsIGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgZW5kLCBib29sIGluU3RyaWN0Q29udGV4
dCk7Ci0gICAgICAgIFNjb3BlTm9kZShWTSosIGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgc3RhcnQs
IGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgZW5kLCBjb25zdCBTb3VyY2VDb2RlJiwgU291cmNlRWxl
bWVudHMqLCBWYXJTdGFjayosIEZ1bmN0aW9uU3RhY2sqLCBJZGVudGlmaWVyU2V0JiwgQ29kZUZl
YXR1cmVzLCBpbnQgbnVtQ29uc3RhbnRzKTsKKyAgICAgICAgU2NvcGVOb2RlKFBhcnNlckFyZW5h
JiwgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBzdGFydCwgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBl
bmQsIGJvb2wgaW5TdHJpY3RDb250ZXh0KTsKKyAgICAgICAgU2NvcGVOb2RlKFBhcnNlckFyZW5h
JiwgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBzdGFydCwgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBl
bmQsIGNvbnN0IFNvdXJjZUNvZGUmLCBTb3VyY2VFbGVtZW50cyosIFZhclN0YWNrKiwgRnVuY3Rp
b25TdGFjayosIElkZW50aWZpZXJTZXQmLCBDb2RlRmVhdHVyZXMsIGludCBudW1Db25zdGFudHMp
OwogCiAgICAgICAgIHVzaW5nIFBhcnNlckFyZW5hUmVmQ291bnRlZDo6b3BlcmF0b3IgbmV3Owog
CkBAIC0xNDIzLDYgKzE0MjMsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgIG1fY2Fw
dHVyZWRWYXJpYWJsZXMuY2xlYXIoKTsKICAgICAgICAgfQogCisgICAgICAgIFBhcnNlckFyZW5h
JiBwYXJzZXJBcmVuYSgpIHsgcmV0dXJuIG1fYXJlbmE7IH0KICAgICAgICAgY29uc3QgU291cmNl
Q29kZSYgc291cmNlKCkgY29uc3QgeyByZXR1cm4gbV9zb3VyY2U7IH0KICAgICAgICAgY29uc3Qg
U3RyaW5nJiBzb3VyY2VVUkwoKSBjb25zdCB7IHJldHVybiBtX3NvdXJjZS5wcm92aWRlcigpLT51
cmwoKTsgfQogICAgICAgICBpbnRwdHJfdCBzb3VyY2VJRCgpIGNvbnN0IHsgcmV0dXJuIG1fc291
cmNlLnByb3ZpZGVySUQoKTsgfQpAQCAtMTQ4NSw3ICsxNDg2LDcgQEAgbmFtZXNwYWNlIEpTQyB7
CiAgICAgY2xhc3MgUHJvZ3JhbU5vZGUgOiBwdWJsaWMgU2NvcGVOb2RlIHsKICAgICBwdWJsaWM6
CiAgICAgICAgIHN0YXRpYyBjb25zdCBib29sIGlzRnVuY3Rpb25Ob2RlID0gZmFsc2U7Ci0gICAg
ICAgIHN0YXRpYyBQYXNzUmVmUHRyPFByb2dyYW1Ob2RlPiBjcmVhdGUoVk0qLCBjb25zdCBKU1Rv
a2VuTG9jYXRpb24mIHN0YXJ0LCBjb25zdCBKU1Rva2VuTG9jYXRpb24mIGVuZCwgdW5zaWduZWQg
c3RhcnRDb2x1bW4sIHVuc2lnbmVkIGVuZENvbHVtbiwgU291cmNlRWxlbWVudHMqLCBWYXJTdGFj
ayosIEZ1bmN0aW9uU3RhY2sqLCBJZGVudGlmaWVyU2V0JiwgY29uc3QgU291cmNlQ29kZSYsIENv
ZGVGZWF0dXJlcywgaW50IG51bUNvbnN0YW50cyk7CisgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRy
PFByb2dyYW1Ob2RlPiBjcmVhdGUoUGFyc2VyQXJlbmEmLCBjb25zdCBKU1Rva2VuTG9jYXRpb24m
IHN0YXJ0LCBjb25zdCBKU1Rva2VuTG9jYXRpb24mIGVuZCwgdW5zaWduZWQgc3RhcnRDb2x1bW4s
IHVuc2lnbmVkIGVuZENvbHVtbiwgU291cmNlRWxlbWVudHMqLCBWYXJTdGFjayosIEZ1bmN0aW9u
U3RhY2sqLCBJZGVudGlmaWVyU2V0JiwgY29uc3QgU291cmNlQ29kZSYsIENvZGVGZWF0dXJlcywg
aW50IG51bUNvbnN0YW50cyk7CiAKICAgICAgICAgdW5zaWduZWQgc3RhcnRDb2x1bW4oKSBjb25z
dCB7IHJldHVybiBtX3N0YXJ0Q29sdW1uOyB9CiAgICAgICAgIHVuc2lnbmVkIGVuZENvbHVtbigp
IGNvbnN0IHsgcmV0dXJuIG1fZW5kQ29sdW1uOyB9CkBAIC0xNDk1LDcgKzE0OTYsNyBAQCBuYW1l
c3BhY2UgSlNDIHsKICAgICAgICAgdm9pZCBzZXRDbG9zZWRWYXJpYWJsZXMoVmVjdG9yPFJlZlB0
cjxTdHJpbmdJbXBsPj4mJik7CiAgICAgICAgIGNvbnN0IFZlY3RvcjxSZWZQdHI8U3RyaW5nSW1w
bD4+JiBjbG9zZWRWYXJpYWJsZXMoKSBjb25zdCB7IHJldHVybiBtX2Nsb3NlZFZhcmlhYmxlczsg
fQogICAgIHByaXZhdGU6Ci0gICAgICAgIFByb2dyYW1Ob2RlKFZNKiwgY29uc3QgSlNUb2tlbkxv
Y2F0aW9uJiBzdGFydCwgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBlbmQsIHVuc2lnbmVkIHN0YXJ0
Q29sdW1uLCB1bnNpZ25lZCBlbmRDb2x1bW4sIFNvdXJjZUVsZW1lbnRzKiwgVmFyU3RhY2sqLCBG
dW5jdGlvblN0YWNrKiwgSWRlbnRpZmllclNldCYsIGNvbnN0IFNvdXJjZUNvZGUmLCBDb2RlRmVh
dHVyZXMsIGludCBudW1Db25zdGFudHMpOworICAgICAgICBQcm9ncmFtTm9kZShQYXJzZXJBcmVu
YSYsIGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgc3RhcnQsIGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYg
ZW5kLCB1bnNpZ25lZCBzdGFydENvbHVtbiwgdW5zaWduZWQgZW5kQ29sdW1uLCBTb3VyY2VFbGVt
ZW50cyosIFZhclN0YWNrKiwgRnVuY3Rpb25TdGFjayosIElkZW50aWZpZXJTZXQmLCBjb25zdCBT
b3VyY2VDb2RlJiwgQ29kZUZlYXR1cmVzLCBpbnQgbnVtQ29uc3RhbnRzKTsKIAogICAgICAgICB2
aXJ0dWFsIHZvaWQgZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCog
PSAwKSBvdmVycmlkZTsKICAgICAgICAgVmVjdG9yPFJlZlB0cjxTdHJpbmdJbXBsPj4gbV9jbG9z
ZWRWYXJpYWJsZXM7CkBAIC0xNTA2LDcgKzE1MDcsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBj
bGFzcyBFdmFsTm9kZSA6IHB1YmxpYyBTY29wZU5vZGUgewogICAgIHB1YmxpYzoKICAgICAgICAg
c3RhdGljIGNvbnN0IGJvb2wgaXNGdW5jdGlvbk5vZGUgPSBmYWxzZTsKLSAgICAgICAgc3RhdGlj
IFBhc3NSZWZQdHI8RXZhbE5vZGU+IGNyZWF0ZShWTSosIGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYg
c3RhcnQsIGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgZW5kLCB1bnNpZ25lZCwgdW5zaWduZWQgZW5k
Q29sdW1uLCBTb3VyY2VFbGVtZW50cyosIFZhclN0YWNrKiwgRnVuY3Rpb25TdGFjayosIElkZW50
aWZpZXJTZXQmLCBjb25zdCBTb3VyY2VDb2RlJiwgQ29kZUZlYXR1cmVzLCBpbnQgbnVtQ29uc3Rh
bnRzKTsKKyAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8RXZhbE5vZGU+IGNyZWF0ZShQYXJzZXJB
cmVuYSYsIGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgc3RhcnQsIGNvbnN0IEpTVG9rZW5Mb2NhdGlv
biYgZW5kLCB1bnNpZ25lZCwgdW5zaWduZWQgZW5kQ29sdW1uLCBTb3VyY2VFbGVtZW50cyosIFZh
clN0YWNrKiwgRnVuY3Rpb25TdGFjayosIElkZW50aWZpZXJTZXQmLCBjb25zdCBTb3VyY2VDb2Rl
JiwgQ29kZUZlYXR1cmVzLCBpbnQgbnVtQ29uc3RhbnRzKTsKIAogICAgICAgICBBTFdBWVNfSU5M
SU5FIHVuc2lnbmVkIHN0YXJ0Q29sdW1uKCkgY29uc3QgeyByZXR1cm4gMDsgfQogICAgICAgICB1
bnNpZ25lZCBlbmRDb2x1bW4oKSBjb25zdCB7IHJldHVybiBtX2VuZENvbHVtbjsgfQpAQCAtMTUx
NCw3ICsxNTE1LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHN0YXRpYyBjb25zdCBib29s
IHNjb3BlSXNGdW5jdGlvbiA9IGZhbHNlOwogCiAgICAgcHJpdmF0ZToKLSAgICAgICAgRXZhbE5v
ZGUoVk0qLCBjb25zdCBKU1Rva2VuTG9jYXRpb24mIHN0YXJ0LCBjb25zdCBKU1Rva2VuTG9jYXRp
b24mIGVuZCwgdW5zaWduZWQgZW5kQ29sdW1uLCBTb3VyY2VFbGVtZW50cyosIFZhclN0YWNrKiwg
RnVuY3Rpb25TdGFjayosIElkZW50aWZpZXJTZXQmLCBjb25zdCBTb3VyY2VDb2RlJiwgQ29kZUZl
YXR1cmVzLCBpbnQgbnVtQ29uc3RhbnRzKTsKKyAgICAgICAgRXZhbE5vZGUoUGFyc2VyQXJlbmEm
LCBjb25zdCBKU1Rva2VuTG9jYXRpb24mIHN0YXJ0LCBjb25zdCBKU1Rva2VuTG9jYXRpb24mIGVu
ZCwgdW5zaWduZWQgZW5kQ29sdW1uLCBTb3VyY2VFbGVtZW50cyosIFZhclN0YWNrKiwgRnVuY3Rp
b25TdGFjayosIElkZW50aWZpZXJTZXQmLCBjb25zdCBTb3VyY2VDb2RlJiwgQ29kZUZlYXR1cmVz
LCBpbnQgbnVtQ29uc3RhbnRzKTsKIAogICAgICAgICB2aXJ0dWFsIHZvaWQgZW1pdEJ5dGVjb2Rl
KEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKSBvdmVycmlkZTsKIApAQCAtMTU0
Myw4ICsxNTQ0LDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgY2xhc3MgRnVuY3Rpb25Cb2R5Tm9k
ZSA6IHB1YmxpYyBTY29wZU5vZGUgewogICAgIHB1YmxpYzoKICAgICAgICAgc3RhdGljIGNvbnN0
IGJvb2wgaXNGdW5jdGlvbk5vZGUgPSB0cnVlOwotICAgICAgICBzdGF0aWMgRnVuY3Rpb25Cb2R5
Tm9kZSogY3JlYXRlKFZNKiwgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBzdGFydCwgY29uc3QgSlNU
b2tlbkxvY2F0aW9uJiBlbmQsIHVuc2lnbmVkIHN0YXJ0Q29sdW1uLCB1bnNpZ25lZCBlbmRDb2x1
bW4sIGJvb2wgaXNTdHJpY3RNb2RlKTsKLSAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8RnVuY3Rp
b25Cb2R5Tm9kZT4gY3JlYXRlKFZNKiwgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBzdGFydCwgY29u
c3QgSlNUb2tlbkxvY2F0aW9uJiBlbmQsIHVuc2lnbmVkIHN0YXJ0Q29sdW1uLCB1bnNpZ25lZCBl
bmRDb2x1bW4sIFNvdXJjZUVsZW1lbnRzKiwgVmFyU3RhY2sqLCBGdW5jdGlvblN0YWNrKiwgSWRl
bnRpZmllclNldCYsIGNvbnN0IFNvdXJjZUNvZGUmLCBDb2RlRmVhdHVyZXMsIGludCBudW1Db25z
dGFudHMpOworICAgICAgICBzdGF0aWMgRnVuY3Rpb25Cb2R5Tm9kZSogY3JlYXRlKFBhcnNlckFy
ZW5hJiwgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBzdGFydCwgY29uc3QgSlNUb2tlbkxvY2F0aW9u
JiBlbmQsIHVuc2lnbmVkIHN0YXJ0Q29sdW1uLCB1bnNpZ25lZCBlbmRDb2x1bW4sIGJvb2wgaXNT
dHJpY3RNb2RlKTsKKyAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8RnVuY3Rpb25Cb2R5Tm9kZT4g
Y3JlYXRlKFBhcnNlckFyZW5hJiwgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBzdGFydCwgY29uc3Qg
SlNUb2tlbkxvY2F0aW9uJiBlbmQsIHVuc2lnbmVkIHN0YXJ0Q29sdW1uLCB1bnNpZ25lZCBlbmRD
b2x1bW4sIFNvdXJjZUVsZW1lbnRzKiwgVmFyU3RhY2sqLCBGdW5jdGlvblN0YWNrKiwgSWRlbnRp
ZmllclNldCYsIGNvbnN0IFNvdXJjZUNvZGUmLCBDb2RlRmVhdHVyZXMsIGludCBudW1Db25zdGFu
dHMpOwogCiAgICAgICAgIEZ1bmN0aW9uUGFyYW1ldGVycyogcGFyYW1ldGVycygpIGNvbnN0IHsg
cmV0dXJuIG1fcGFyYW1ldGVycy5nZXQoKTsgfQogICAgICAgICBzaXplX3QgcGFyYW1ldGVyQ291
bnQoKSBjb25zdCB7IHJldHVybiBtX3BhcmFtZXRlcnMtPnNpemUoKTsgfQpAQCAtMTU3MSw4ICsx
NTcyLDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHN0YXRpYyBjb25zdCBib29sIHNjb3Bl
SXNGdW5jdGlvbiA9IHRydWU7CiAKICAgICBwcml2YXRlOgotICAgICAgICBGdW5jdGlvbkJvZHlO
b2RlKFZNKiwgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBzdGFydCwgY29uc3QgSlNUb2tlbkxvY2F0
aW9uJiBlbmQsIHVuc2lnbmVkIHN0YXJ0Q29sdW1uLCB1bnNpZ25lZCBlbmRDb2x1bW4sIGJvb2wg
aW5TdHJpY3RDb250ZXh0KTsKLSAgICAgICAgRnVuY3Rpb25Cb2R5Tm9kZShWTSosIGNvbnN0IEpT
VG9rZW5Mb2NhdGlvbiYgc3RhcnQsIGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgZW5kLCB1bnNpZ25l
ZCBzdGFydENvbHVtbiwgdW5zaWduZWQgZW5kQ29sdW1uLCBTb3VyY2VFbGVtZW50cyosIFZhclN0
YWNrKiwgRnVuY3Rpb25TdGFjayosIElkZW50aWZpZXJTZXQmLCBjb25zdCBTb3VyY2VDb2RlJiwg
Q29kZUZlYXR1cmVzLCBpbnQgbnVtQ29uc3RhbnRzKTsKKyAgICAgICAgRnVuY3Rpb25Cb2R5Tm9k
ZShQYXJzZXJBcmVuYSYsIGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgc3RhcnQsIGNvbnN0IEpTVG9r
ZW5Mb2NhdGlvbiYgZW5kLCB1bnNpZ25lZCBzdGFydENvbHVtbiwgdW5zaWduZWQgZW5kQ29sdW1u
LCBib29sIGluU3RyaWN0Q29udGV4dCk7CisgICAgICAgIEZ1bmN0aW9uQm9keU5vZGUoUGFyc2Vy
QXJlbmEmLCBjb25zdCBKU1Rva2VuTG9jYXRpb24mIHN0YXJ0LCBjb25zdCBKU1Rva2VuTG9jYXRp
b24mIGVuZCwgdW5zaWduZWQgc3RhcnRDb2x1bW4sIHVuc2lnbmVkIGVuZENvbHVtbiwgU291cmNl
RWxlbWVudHMqLCBWYXJTdGFjayosIEZ1bmN0aW9uU3RhY2sqLCBJZGVudGlmaWVyU2V0JiwgY29u
c3QgU291cmNlQ29kZSYsIENvZGVGZWF0dXJlcywgaW50IG51bUNvbnN0YW50cyk7CiAKICAgICAg
ICAgSWRlbnRpZmllciBtX2lkZW50OwogICAgICAgICBJZGVudGlmaWVyIG1faW5mZXJyZWROYW1l
OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmNwcAkocmV2aXNpb24g
MTc2NzU0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yMDgsOCArMjA4LDcgQEAgUGFyc2VyPExleGVyVHlwZT46OlBhcnNlcihW
TSogdm0sIGNvbnN0IAogICAgICwgbV9wYXJzaW5nQnVpbHRpbihzdHJpY3RuZXNzID09IEpTUGFy
c2VCdWlsdGluKQogewogICAgIG1fbGV4ZXIgPSBhZG9wdFB0cihuZXcgTGV4ZXJUeXBlKHZtLCBz
dHJpY3RuZXNzKSk7Ci0gICAgbV9hcmVuYSA9IG1fdm0tPnBhcnNlckFyZW5hLmdldCgpOwotICAg
IG1fbGV4ZXItPnNldENvZGUoc291cmNlLCBtX2FyZW5hKTsKKyAgICBtX2xleGVyLT5zZXRDb2Rl
KHNvdXJjZSwgJm1fcGFyc2VyQXJlbmEpOwogICAgIG1fdG9rZW4ubV9sb2NhdGlvbi5saW5lID0g
c291cmNlLmZpcnN0TGluZSgpOwogICAgIG1fdG9rZW4ubV9sb2NhdGlvbi5zdGFydE9mZnNldCA9
IHNvdXJjZS5zdGFydE9mZnNldCgpOwogICAgIG1fdG9rZW4ubV9sb2NhdGlvbi5lbmRPZmZzZXQg
PSBzb3VyY2Uuc3RhcnRPZmZzZXQoKTsKQEAgLTI1Nyw3ICsyNTYsNyBAQCBTdHJpbmcgUGFyc2Vy
PExleGVyVHlwZT46OnBhcnNlSW5uZXIoKQogewogICAgIFN0cmluZyBwYXJzZUVycm9yID0gU3Ry
aW5nKCk7CiAgICAgCi0gICAgQVNUQnVpbGRlciBjb250ZXh0KGNvbnN0X2Nhc3Q8Vk0qPihtX3Zt
KSwgY29uc3RfY2FzdDxTb3VyY2VDb2RlKj4obV9zb3VyY2UpKTsKKyAgICBBU1RCdWlsZGVyIGNv
bnRleHQoY29uc3RfY2FzdDxWTSo+KG1fdm0pLCBtX3BhcnNlckFyZW5hLCBjb25zdF9jYXN0PFNv
dXJjZUNvZGUqPihtX3NvdXJjZSkpOwogICAgIGlmIChtX2xleGVyLT5pc1JlcGFyc2luZygpKQog
ICAgICAgICBtX3N0YXRlbWVudERlcHRoLS07CiAgICAgU2NvcGVSZWYgc2NvcGUgPSBjdXJyZW50
U2NvcGUoKTsKQEAgLTE4MDYsNyArMTgwNSw3IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRl
cj4gVHJlZVByb3BlcnQKICAgICAgICAgfQogICAgICAgICBpZiAoc3RyaW5nUHJvcGVydHlOYW1l
KQogICAgICAgICAgICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlR2V0dGVyT3JTZXR0ZXJQcm9wZXJ0
eShsb2NhdGlvbiwgdHlwZSwgY29tcGxldGUsIHN0cmluZ1Byb3BlcnR5TmFtZSwgcGFyYW1ldGVy
cywgYm9keSwgb3BlbkJyYWNlT2Zmc2V0LCBjbG9zZUJyYWNlT2Zmc2V0LCBib2R5U3RhcnRMaW5l
LCBtX2xhc3RUb2tlbkVuZFBvc2l0aW9uLmxpbmUsIGJvZHlTdGFydENvbHVtbik7Ci0gICAgICAg
IHJldHVybiBjb250ZXh0LmNyZWF0ZUdldHRlck9yU2V0dGVyUHJvcGVydHkoY29uc3RfY2FzdDxW
TSo+KG1fdm0pLCBsb2NhdGlvbiwgdHlwZSwgY29tcGxldGUsIG51bWVyaWNQcm9wZXJ0eU5hbWUs
IHBhcmFtZXRlcnMsIGJvZHksIG9wZW5CcmFjZU9mZnNldCwgY2xvc2VCcmFjZU9mZnNldCwgYm9k
eVN0YXJ0TGluZSwgbV9sYXN0VG9rZW5FbmRQb3NpdGlvbi5saW5lLCBib2R5U3RhcnRDb2x1bW4p
OworICAgICAgICByZXR1cm4gY29udGV4dC5jcmVhdGVHZXR0ZXJPclNldHRlclByb3BlcnR5KGNv
bnN0X2Nhc3Q8Vk0qPihtX3ZtKSwgbV9wYXJzZXJBcmVuYSwgbG9jYXRpb24sIHR5cGUsIGNvbXBs
ZXRlLCBudW1lcmljUHJvcGVydHlOYW1lLCBwYXJhbWV0ZXJzLCBib2R5LCBvcGVuQnJhY2VPZmZz
ZXQsIGNsb3NlQnJhY2VPZmZzZXQsIGJvZHlTdGFydExpbmUsIG1fbGFzdFRva2VuRW5kUG9zaXRp
b24ubGluZSwgYm9keVN0YXJ0Q29sdW1uKTsKICAgICB9CiAgICAgY2FzZSBOVU1CRVI6IHsKICAg
ICAgICAgZG91YmxlIHByb3BlcnR5TmFtZSA9IG1fdG9rZW4ubV9kYXRhLmRvdWJsZVZhbHVlOwpA
QCAtMTgxNSw3ICsxODE0LDcgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlUHJv
cGVydAogICAgICAgICBUcmVlRXhwcmVzc2lvbiBub2RlID0gcGFyc2VBc3NpZ25tZW50RXhwcmVz
c2lvbihjb250ZXh0KTsKICAgICAgICAgZmFpbElmRmFsc2Uobm9kZSwgIkNhbm5vdCBwYXJzZSBl
eHByZXNzaW9uIGZvciBwcm9wZXJ0eSBkZWNsYXJhdGlvbiIpOwogICAgICAgICBjb250ZXh0LnNl
dEVuZE9mZnNldChub2RlLCBtX2xleGVyLT5jdXJyZW50T2Zmc2V0KCkpOwotICAgICAgICByZXR1
cm4gY29udGV4dC5jcmVhdGVQcm9wZXJ0eShjb25zdF9jYXN0PFZNKj4obV92bSksIHByb3BlcnR5
TmFtZSwgbm9kZSwgUHJvcGVydHlOb2RlOjpDb25zdGFudCwgY29tcGxldGUpOworICAgICAgICBy
ZXR1cm4gY29udGV4dC5jcmVhdGVQcm9wZXJ0eShjb25zdF9jYXN0PFZNKj4obV92bSksIG1fcGFy
c2VyQXJlbmEsIHByb3BlcnR5TmFtZSwgbm9kZSwgUHJvcGVydHlOb2RlOjpDb25zdGFudCwgY29t
cGxldGUpOwogICAgIH0KICAgICBjYXNlIE9QRU5CUkFDS0VUOiB7CiAgICAgICAgIG5leHQoKTsK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuaAkocmV2aXNpb24gMTc2NzU0
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuaAkod29ya2luZyBjb3B5
KQpAQCAtODE1LDcgKzgxNSw3IEBAIHByaXZhdGU6CiAKICAgICBWTSogbV92bTsKICAgICBjb25z
dCBTb3VyY2VDb2RlKiBtX3NvdXJjZTsKLSAgICBQYXJzZXJBcmVuYSogbV9hcmVuYTsKKyAgICBQ
YXJzZXJBcmVuYSBtX3BhcnNlckFyZW5hOwogICAgIE93blB0cjxMZXhlclR5cGU+IG1fbGV4ZXI7
CiAgICAgCiAgICAgYm9vbCBtX2hhc1N0YWNrT3ZlcmZsb3c7CkBAIC04OTksNyArODk5LDcgQEAg
UGFzc1JlZlB0cjxQYXJzZWROb2RlPiBQYXJzZXI8TGV4ZXJUeXBlPgogICAgICAgICBlbmRMb2Nh
dGlvbi5saW5lU3RhcnRPZmZzZXQgPSBtX2xleGVyLT5jdXJyZW50TGluZVN0YXJ0T2Zmc2V0KCk7
CiAgICAgICAgIGVuZExvY2F0aW9uLnN0YXJ0T2Zmc2V0ID0gbV9sZXhlci0+Y3VycmVudE9mZnNl
dCgpOwogICAgICAgICB1bnNpZ25lZCBlbmRDb2x1bW4gPSBlbmRMb2NhdGlvbi5zdGFydE9mZnNl
dCAtIGVuZExvY2F0aW9uLmxpbmVTdGFydE9mZnNldDsKLSAgICAgICAgcmVzdWx0ID0gUGFyc2Vk
Tm9kZTo6Y3JlYXRlKG1fdm0sCisgICAgICAgIHJlc3VsdCA9IFBhcnNlZE5vZGU6OmNyZWF0ZSht
X3BhcnNlckFyZW5hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRM
b2NhdGlvbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZExvY2F0aW9u
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRDb2x1bW4sCkBAIC05
MzYsOCArOTM2LDYgQEAgUGFzc1JlZlB0cjxQYXJzZWROb2RlPiBQYXJzZXI8TGV4ZXJUeXBlPgog
ICAgICAgICB9CiAgICAgfQogCi0gICAgbV9hcmVuYS0+cmVzZXQoKTsKLQogICAgIHJldHVybiBy
ZXN1bHQucmVsZWFzZSgpOwogfQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2Vy
L1N5bnRheENoZWNrZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFy
c2VyL1N5bnRheENoZWNrZXIuaAkocmV2aXNpb24gMTc2NzU0KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL3BhcnNlci9TeW50YXhDaGVja2VyLmgJKHdvcmtpbmcgY29weSkKQEAgLTE3NCwxMSAr
MTc0LDExIEBAIHB1YmxpYzoKICAgICAgICAgQVNTRVJUKG5hbWUpOwogICAgICAgICByZXR1cm4g
UHJvcGVydHkobmFtZSwgdHlwZSk7CiAgICAgfQotICAgIFByb3BlcnR5IGNyZWF0ZVByb3BlcnR5
KFZNKiB2bSwgZG91YmxlIG5hbWUsIGludCwgUHJvcGVydHlOb2RlOjpUeXBlIHR5cGUsIGJvb2wg
Y29tcGxldGUpCisgICAgUHJvcGVydHkgY3JlYXRlUHJvcGVydHkoVk0qIHZtLCBQYXJzZXJBcmVu
YSYgcGFyc2VyQXJlbmEsIGRvdWJsZSBuYW1lLCBpbnQsIFByb3BlcnR5Tm9kZTo6VHlwZSB0eXBl
LCBib29sIGNvbXBsZXRlKQogICAgIHsKICAgICAgICAgaWYgKCFjb21wbGV0ZSkKICAgICAgICAg
ICAgIHJldHVybiBQcm9wZXJ0eSh0eXBlKTsKLSAgICAgICAgcmV0dXJuIFByb3BlcnR5KCZ2bS0+
cGFyc2VyQXJlbmEtPmlkZW50aWZpZXJBcmVuYSgpLm1ha2VOdW1lcmljSWRlbnRpZmllcih2bSwg
bmFtZSksIHR5cGUpOworICAgICAgICByZXR1cm4gUHJvcGVydHkoJnBhcnNlckFyZW5hLmlkZW50
aWZpZXJBcmVuYSgpLm1ha2VOdW1lcmljSWRlbnRpZmllcih2bSwgbmFtZSksIHR5cGUpOwogICAg
IH0KICAgICBQcm9wZXJ0eSBjcmVhdGVQcm9wZXJ0eShpbnQsIGludCwgUHJvcGVydHlOb2RlOjpU
eXBlIHR5cGUsIGJvb2wpCiAgICAgewpAQCAtMjI2LDExICsyMjYsMTEgQEAgcHVibGljOgogICAg
ICAgICAgICAgcmV0dXJuIFByb3BlcnR5KHR5cGUpOwogICAgICAgICByZXR1cm4gUHJvcGVydHko
bmFtZSwgdHlwZSk7CiAgICAgfQotICAgIFByb3BlcnR5IGNyZWF0ZUdldHRlck9yU2V0dGVyUHJv
cGVydHkoVk0qIHZtLCBjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBQcm9wZXJ0eU5vZGU6OlR5cGUg
dHlwZSwgYm9vbCBzdHJpY3QsIGRvdWJsZSBuYW1lLCBpbnQsIGludCwgaW50LCBpbnQsIGludCwg
aW50LCBpbnQpCisgICAgUHJvcGVydHkgY3JlYXRlR2V0dGVyT3JTZXR0ZXJQcm9wZXJ0eShWTSog
dm0sIFBhcnNlckFyZW5hJiBwYXJzZXJBcmVuYSwgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgUHJv
cGVydHlOb2RlOjpUeXBlIHR5cGUsIGJvb2wgc3RyaWN0LCBkb3VibGUgbmFtZSwgaW50LCBpbnQs
IGludCwgaW50LCBpbnQsIGludCwgaW50KQogICAgIHsKICAgICAgICAgaWYgKCFzdHJpY3QpCiAg
ICAgICAgICAgICByZXR1cm4gUHJvcGVydHkodHlwZSk7Ci0gICAgICAgIHJldHVybiBQcm9wZXJ0
eSgmdm0tPnBhcnNlckFyZW5hLT5pZGVudGlmaWVyQXJlbmEoKS5tYWtlTnVtZXJpY0lkZW50aWZp
ZXIodm0sIG5hbWUpLCB0eXBlKTsKKyAgICAgICAgcmV0dXJuIFByb3BlcnR5KCZwYXJzZXJBcmVu
YS5pZGVudGlmaWVyQXJlbmEoKS5tYWtlTnVtZXJpY0lkZW50aWZpZXIodm0sIG5hbWUpLCB0eXBl
KTsKICAgICB9CiAKICAgICB2b2lkIGFwcGVuZFN0YXRlbWVudChpbnQsIGludCkgeyB9CkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCShyZXZpc2lvbiAxNzY3NTQpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTcw
LDcgKzcwLDYgQEAKICNpbmNsdWRlICJNYXBEYXRhLmgiCiAjaW5jbHVkZSAiTm9kZXMuaCIKICNp
bmNsdWRlICJQYXJzZXIuaCIKLSNpbmNsdWRlICJQYXJzZXJBcmVuYS5oIgogI2luY2x1ZGUgIlBy
b2ZpbGVyRGF0YWJhc2UuaCIKICNpbmNsdWRlICJQcm9wZXJ0eU1hcEhhc2hUYWJsZS5oIgogI2lu
Y2x1ZGUgIlJlZ0V4cENhY2hlLmgiCkBAIC0xNTQsNyArMTUzLDYgQEAgVk06OlZNKFZNVHlwZSB2
bVR5cGUsIEhlYXBUeXBlIGhlYXBUeXBlKQogICAgICwgbV9hdG9taWNTdHJpbmdUYWJsZSh2bVR5
cGUgPT0gRGVmYXVsdCA/IHd0ZlRocmVhZERhdGEoKS5hdG9taWNTdHJpbmdUYWJsZSgpIDogbmV3
IEF0b21pY1N0cmluZ1RhYmxlKQogICAgICwgcHJvcGVydHlOYW1lcyhudWxscHRyKQogICAgICwg
ZW1wdHlMaXN0KG5ldyBNYXJrZWRBcmd1bWVudEJ1ZmZlcikKLSAgICAsIHBhcnNlckFyZW5hKGFk
b3B0UHRyKG5ldyBQYXJzZXJBcmVuYSkpCiAgICAgLCBrZXl3b3JkcyhhZG9wdFB0cihuZXcgS2V5
d29yZHMoKnRoaXMpKSkKICAgICAsIGludGVycHJldGVyKDApCiAgICAgLCBqc0FycmF5Q2xhc3NJ
bmZvKEpTQXJyYXk6OmluZm8oKSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1ZNLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaAko
cmV2aXNpb24gMTc2NzU0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaAko
d29ya2luZyBjb3B5KQpAQCAtODcsNyArODcsNiBAQCBjbGFzcyBLZXl3b3JkczsKIGNsYXNzIExM
SW50T2Zmc2V0c0V4dHJhY3RvcjsKIGNsYXNzIExlZ2FjeVByb2ZpbGVyOwogY2xhc3MgTmF0aXZl
RXhlY3V0YWJsZTsKLWNsYXNzIFBhcnNlckFyZW5hOwogY2xhc3MgUmVnRXhwQ2FjaGU7CiBjbGFz
cyBTY3JpcHRFeGVjdXRhYmxlOwogY2xhc3MgU291cmNlUHJvdmlkZXI7CkBAIC0zMjUsNyArMzI0
LDYgQEAgcHVibGljOgogCiAgICAgUHJvdG90eXBlTWFwIHByb3RvdHlwZU1hcDsKIAotICAgIE93
blB0cjxQYXJzZXJBcmVuYT4gcGFyc2VyQXJlbmE7CiAgICAgdHlwZWRlZiBIYXNoTWFwPFJlZlB0
cjxTb3VyY2VQcm92aWRlcj4sIFJlZlB0cjxTb3VyY2VQcm92aWRlckNhY2hlPj4gU291cmNlUHJv
dmlkZXJDYWNoZU1hcDsKICAgICBTb3VyY2VQcm92aWRlckNhY2hlTWFwIHNvdXJjZVByb3ZpZGVy
Q2FjaGVNYXA7CiAgICAgT3duUHRyPEtleXdvcmRzPiBrZXl3b3JkczsK
</data>
<flag name="review"
          id="267402"
          type_id="1"
          status="+"
          setter="sam"
    />
          </attachment>
      

    </bug>

</bugzilla>