<?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>129227</bug_id>
          
          <creation_ts>2014-02-22 21:04:32 -0800</creation_ts>
          <short_desc>REGRESSION (r164507): Crash beneath JSGlobalObjectInspectorController::reportAPIException at facebook.com, twitter.com, youtube.com</short_desc>
          <delta_ts>2014-02-27 12:41:17 -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>Web Inspector</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>http://twitter.com</bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar, Regression</keywords>
          <priority>P1</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter>mitz</reporter>
          <assigned_to>mitz</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>ddkilzer</cc>
    
    <cc>graouts</cc>
    
    <cc>joepeck</cc>
    
    <cc>mkwst</cc>
    
    <cc>phiw2</cc>
    
    <cc>timothy</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>983666</commentid>
    <comment_count>0</comment_count>
    <who name="">mitz</who>
    <bug_when>2014-02-22 21:04:32 -0800</bug_when>
    <thetext>&lt;rdar://problem/16142324&gt;

Navigating to the URL causes the Web Content process to crash with a backtrace like this:

0   com.apple.JavaScriptCore      	0x00000001064d75ce WTFCrash + 62
1   com.apple.JavaScriptCore      	0x0000000106195fae JSC::ErrorHandlingScope::ErrorHandlingScope(JSC::VM&amp;) + 62
2   com.apple.JavaScriptCore      	0x000000010639d5c6 Inspector::JSGlobalObjectInspectorController::reportAPIException(JSC::ExecState*, JSC::JSValue) + 70
3   com.apple.JavaScriptCore      	0x000000010636eb6b JSValueToObject + 331
4   com.apple.Safari.framework    	0x00007fff9264aa21 controlObject(objc_object*, double, NSString*) + 207

This was caused by &lt;http://trac.webkit.org/r164507&gt;, the fix for bug 128776.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>983667</commentid>
    <comment_count>1</comment_count>
      <attachid>224992</attachid>
    <who name="">mitz</who>
    <bug_when>2014-02-22 21:07:09 -0800</bug_when>
    <thetext>Created attachment 224992
Revert r164507</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>983670</commentid>
    <comment_count>2</comment_count>
    <who name="">mitz</who>
    <bug_when>2014-02-22 21:39:03 -0800</bug_when>
    <thetext>Committed &lt;http://trac.webkit.org/r164554&gt;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>983671</commentid>
    <comment_count>3</comment_count>
    <who name="Philippe Wittenbergh">phiw2</who>
    <bug_when>2014-02-22 21:59:34 -0800</bug_when>
    <thetext>Is bug 129221 the same issue ?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>983672</commentid>
    <comment_count>4</comment_count>
    <who name="">mitz</who>
    <bug_when>2014-02-22 22:10:52 -0800</bug_when>
    <thetext>(In reply to comment #3)
&gt; Is bug 129221 the same issue ?

Yes. Sorry I didn’t see that one!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>983675</commentid>
    <comment_count>5</comment_count>
    <who name="Philippe Wittenbergh">phiw2</who>
    <bug_when>2014-02-22 22:18:58 -0800</bug_when>
    <thetext>*** Bug 129221 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>983727</commentid>
    <comment_count>6</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2014-02-23 10:53:33 -0800</bug_when>
    <thetext>I see. I kept the ErrorHandlingScope from the original code, but I guess I&apos;m not exactly why it is needed. Thanks for rolling out.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>983728</commentid>
    <comment_count>7</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2014-02-23 10:54:00 -0800</bug_when>
    <thetext>Correction: I&apos;m not exactly sure* why it is needed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>985312</commentid>
    <comment_count>8</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2014-02-27 12:41:17 -0800</bug_when>
    <thetext>The original patch landed again in &lt;http://trac.webkit.org/changeset/164824&gt;. I could not reproduce the problem after the recent JSC fixes for this. I was unable to reproduce the same reportAPIException calls you guys saw, but I did produce a different one and we handled that fine. Please let me know if you are seeing crashes again after r 164824!</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>224992</attachid>
            <date>2014-02-22 21:07:09 -0800</date>
            <delta_ts>2014-02-22 21:36:54 -0800</delta_ts>
            <desc>Revert r164507</desc>
            <filename>bug-129227-20140222210727.patch</filename>
            <type>text/plain</type>
            <size>62081</size>
            <attacher>mitz</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTY0NTUzKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDU5IEBA
CisyMDE0LTAyLTIyICBEYW4gQmVybnN0ZWluICA8bWl0ekBhcHBsZS5jb20+CisKKyAgICAgICAg
UkVHUkVTU0lPTiAocjE2NDUwNyk6IENyYXNoIGJlbmVhdGggSlNHbG9iYWxPYmplY3RJbnNwZWN0
b3JDb250cm9sbGVyOjpyZXBvcnRBUElFeGNlcHRpb24gYXQgZmFjZWJvb2suY29tLCB0d2l0dGVy
LmNvbSwgeW91dHViZS5jb20KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTEyOTIyNworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIFJldmVydGVkIHIxNjQ1MDcuCisKKyAgICAgICAgKiBBUEkvSlNCYXNlLmNwcDoK
KyAgICAgICAgKEpTRXZhbHVhdGVTY3JpcHQpOgorICAgICAgICAoSlNDaGVja1NjcmlwdFN5bnRh
eCk6CisgICAgICAgICogQVBJL0pTT2JqZWN0UmVmLmNwcDoKKyAgICAgICAgKEpTT2JqZWN0TWFr
ZUZ1bmN0aW9uKToKKyAgICAgICAgKEpTT2JqZWN0TWFrZUFycmF5KToKKyAgICAgICAgKEpTT2Jq
ZWN0TWFrZURhdGUpOgorICAgICAgICAoSlNPYmplY3RNYWtlRXJyb3IpOgorICAgICAgICAoSlNP
YmplY3RNYWtlUmVnRXhwKToKKyAgICAgICAgKEpTT2JqZWN0R2V0UHJvcGVydHkpOgorICAgICAg
ICAoSlNPYmplY3RTZXRQcm9wZXJ0eSk6CisgICAgICAgIChKU09iamVjdEdldFByb3BlcnR5QXRJ
bmRleCk6CisgICAgICAgIChKU09iamVjdFNldFByb3BlcnR5QXRJbmRleCk6CisgICAgICAgIChK
U09iamVjdERlbGV0ZVByb3BlcnR5KToKKyAgICAgICAgKEpTT2JqZWN0Q2FsbEFzRnVuY3Rpb24p
OgorICAgICAgICAoSlNPYmplY3RDYWxsQXNDb25zdHJ1Y3Rvcik6CisgICAgICAgICogQVBJL0pT
VmFsdWUubW06CisgICAgICAgICh2YWx1ZVRvQXJyYXkpOgorICAgICAgICAodmFsdWVUb0RpY3Rp
b25hcnkpOgorICAgICAgICAqIEFQSS9KU1ZhbHVlUmVmLmNwcDoKKyAgICAgICAgKEpTVmFsdWVJ
c0VxdWFsKToKKyAgICAgICAgKEpTVmFsdWVJc0luc3RhbmNlT2ZDb25zdHJ1Y3Rvcik6CisgICAg
ICAgIChKU1ZhbHVlQ3JlYXRlSlNPTlN0cmluZyk6CisgICAgICAgIChKU1ZhbHVlVG9OdW1iZXIp
OgorICAgICAgICAoSlNWYWx1ZVRvU3RyaW5nQ29weSk6CisgICAgICAgIChKU1ZhbHVlVG9PYmpl
Y3QpOgorICAgICAgICAqIGluc3BlY3Rvci9Db25zb2xlTWVzc2FnZS5jcHA6CisgICAgICAgIChJ
bnNwZWN0b3I6OkNvbnNvbGVNZXNzYWdlOjpDb25zb2xlTWVzc2FnZSk6CisgICAgICAgIChJbnNw
ZWN0b3I6OkNvbnNvbGVNZXNzYWdlOjphdXRvZ2VuZXJhdGVNZXRhZGF0YSk6CisgICAgICAgICog
aW5zcGVjdG9yL0NvbnNvbGVNZXNzYWdlLmg6CisgICAgICAgICogaW5zcGVjdG9yL0pTR2xvYmFs
T2JqZWN0SW5zcGVjdG9yQ29udHJvbGxlci5jcHA6CisgICAgICAgIChJbnNwZWN0b3I6OkpTR2xv
YmFsT2JqZWN0SW5zcGVjdG9yQ29udHJvbGxlcjo6SlNHbG9iYWxPYmplY3RJbnNwZWN0b3JDb250
cm9sbGVyKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSlNHbG9iYWxPYmplY3RJbnNwZWN0b3JDb250
cm9sbGVyLmg6CisgICAgICAgICogaW5zcGVjdG9yL1NjcmlwdENhbGxTdGFjay5jcHA6CisgICAg
ICAgICogaW5zcGVjdG9yL1NjcmlwdENhbGxTdGFjay5oOgorICAgICAgICAqIGluc3BlY3Rvci9T
Y3JpcHRDYWxsU3RhY2tGYWN0b3J5LmNwcDoKKyAgICAgICAgKEluc3BlY3Rvcjo6Y3JlYXRlU2Ny
aXB0Q2FsbFN0YWNrKToKKyAgICAgICAgKEluc3BlY3Rvcjo6Y3JlYXRlU2NyaXB0Q2FsbFN0YWNr
Rm9yQ29uc29sZSk6CisgICAgICAgIChJbnNwZWN0b3I6OmNyZWF0ZVNjcmlwdENhbGxTdGFja0Zy
b21FeGNlcHRpb24pOgorICAgICAgICAqIGluc3BlY3Rvci9TY3JpcHRDYWxsU3RhY2tGYWN0b3J5
Lmg6CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JDb25zb2xlQWdlbnQuY3Bw
OgorICAgICAgICAoSW5zcGVjdG9yOjpJbnNwZWN0b3JDb25zb2xlQWdlbnQ6OmVuYWJsZSk6Cisg
ICAgICAgIChJbnNwZWN0b3I6Okluc3BlY3RvckNvbnNvbGVBZ2VudDo6YWRkTWVzc2FnZVRvQ29u
c29sZSk6CisgICAgICAgIChJbnNwZWN0b3I6Okluc3BlY3RvckNvbnNvbGVBZ2VudDo6Y291bnQp
OgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSlNHbG9iYWxPYmplY3REZWJ1Z2dlckFnZW50
LmNwcDoKKyAgICAgICAgKEluc3BlY3Rvcjo6SlNHbG9iYWxPYmplY3REZWJ1Z2dlckFnZW50Ojpi
cmVha3BvaW50QWN0aW9uTG9nKToKKwogMjAxNC0wMi0yMiAgSm9zZXBoIFBlY29yYXJvICA8cGVj
b3Jhcm9AYXBwbGUuY29tPgogCiAgICAgICAgIFJlbW92ZSBzb21lIHVucmVhY2hhYmxlIGNvZGUg
KC1XdW5yZWFjaGFibGUtY29kZSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNC
YXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQmFzZS5j
cHAJKHJldmlzaW9uIDE2NDU1MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNCYXNl
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDAsMTAgKzQwLDYgQEAKICNpbmNsdWRlICJTb3VyY2VD
b2RlLmgiCiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nSGFzaC5oPgogCi0jaWYgRU5BQkxFKFJF
TU9URV9JTlNQRUNUT1IpCi0jaW5jbHVkZSAiSlNHbG9iYWxPYmplY3RJbnNwZWN0b3JDb250cm9s
bGVyLmgiCi0jZW5kaWYKLQogdXNpbmcgbmFtZXNwYWNlIEpTQzsKIAogSlNWYWx1ZVJlZiBKU0V2
YWx1YXRlU2NyaXB0KEpTQ29udGV4dFJlZiBjdHgsIEpTU3RyaW5nUmVmIHNjcmlwdCwgSlNPYmpl
Y3RSZWYgdGhpc09iamVjdCwgSlNTdHJpbmdSZWYgc291cmNlVVJMLCBpbnQgc3RhcnRpbmdMaW5l
TnVtYmVyLCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pCkBAIC02OSwxNCArNjUsNiBAQCBKU1ZhbHVl
UmVmIEpTRXZhbHVhdGVTY3JpcHQoSlNDb250ZXh0UmVmCiAgICAgaWYgKGV2YWx1YXRpb25FeGNl
cHRpb24pIHsKICAgICAgICAgaWYgKGV4Y2VwdGlvbikKICAgICAgICAgICAgICpleGNlcHRpb24g
PSB0b1JlZihleGVjLCBldmFsdWF0aW9uRXhjZXB0aW9uKTsKLSNpZiBFTkFCTEUoUkVNT1RFX0lO
U1BFQ1RPUikKLSAgICAgICAgLy8gRklYTUU6IElmIHdlIGhhdmUgYSBkZWJ1Z2dlciBhdHRhY2hl
ZCB3ZSBjb3VsZCBsZWFybiBhYm91dCBQYXJzZUVycm9yIGV4Y2VwdGlvbnMgdGhyb3VnaAotICAg
ICAgICAvLyBTY3JpcHREZWJ1Z1NlcnZlcjo6c291cmNlUGFyc2VkIGFuZCB0aGlzIHBhdGggY291
bGQgcHJvZHVjZSBhIGR1cGxpY2F0ZSB3YXJuaW5nLiBUaGUKLSAgICAgICAgLy8gRGVidWdnZXIg
cGF0aCBpcyBjdXJyZW50bHkgaWdub3JlZCBieSBpbnNwZWN0b3IuCi0gICAgICAgIC8vIE5PVEU6
IElmIHdlIGRvbid0IGhhdmUgYSBkZWJ1Z2dlciwgdGhpcyBTb3VyY2VDb2RlIHdpbGwgYmUgZm9y
ZXZlciBsb3N0IHRvIHRoZSBpbnNwZWN0b3IuCi0gICAgICAgIC8vIFdlIGNvdWxkIHN0YXNoIGl0
IGluIHRoZSBpbnNwZWN0b3IgaW4gY2FzZSBhbiBpbnNwZWN0b3IgaXMgZXZlciBvcGVuZWQuCi0g
ICAgICAgIGdsb2JhbE9iamVjdC0+aW5zcGVjdG9yQ29udHJvbGxlcigpLnJlcG9ydEFQSUV4Y2Vw
dGlvbihleGVjLCBldmFsdWF0aW9uRXhjZXB0aW9uKTsKLSNlbmRpZgogICAgICAgICByZXR1cm4g
MDsKICAgICB9CiAKQEAgLTEwNiw5ICs5NCw2IEBAIGJvb2wgSlNDaGVja1NjcmlwdFN5bnRheChK
U0NvbnRleHRSZWYgY3QKICAgICBpZiAoIWlzVmFsaWRTeW50YXgpIHsKICAgICAgICAgaWYgKGV4
Y2VwdGlvbikKICAgICAgICAgICAgICpleGNlcHRpb24gPSB0b1JlZihleGVjLCBzeW50YXhFeGNl
cHRpb24pOwotI2lmIEVOQUJMRShSRU1PVEVfSU5TUEVDVE9SKQotICAgICAgICBleGVjLT52bUVu
dHJ5R2xvYmFsT2JqZWN0KCktPmluc3BlY3RvckNvbnRyb2xsZXIoKS5yZXBvcnRBUElFeGNlcHRp
b24oZXhlYywgc3ludGF4RXhjZXB0aW9uKTsKLSNlbmRpZgogICAgICAgICByZXR1cm4gZmFsc2U7
CiAgICAgfQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTT2JqZWN0UmVmLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTT2JqZWN0UmVmLmNw
cAkocmV2aXNpb24gMTY0NTUzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU09iamVj
dFJlZi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU1LDEwICs1NSw2IEBACiAjaW5jbHVkZSAiUHJv
cGVydHlOYW1lQXJyYXkuaCIKICNpbmNsdWRlICJSZWdFeHBDb25zdHJ1Y3Rvci5oIgogCi0jaWYg
RU5BQkxFKFJFTU9URV9JTlNQRUNUT1IpCi0jaW5jbHVkZSAiSlNHbG9iYWxPYmplY3RJbnNwZWN0
b3JDb250cm9sbGVyLmgiCi0jZW5kaWYKLQogdXNpbmcgbmFtZXNwYWNlIEpTQzsKIAogSlNDbGFz
c1JlZiBKU0NsYXNzQ3JlYXRlKGNvbnN0IEpTQ2xhc3NEZWZpbml0aW9uKiBkZWZpbml0aW9uKQpA
QCAtMTQ5LDEzICsxNDUsOSBAQCBKU09iamVjdFJlZiBKU09iamVjdE1ha2VGdW5jdGlvbihKU0Nv
bnRlCiAKICAgICBKU09iamVjdCogcmVzdWx0ID0gY29uc3RydWN0RnVuY3Rpb24oZXhlYywgZXhl
Yy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLCBhcmdzLCBuYW1lSUQsIHNvdXJjZVVSTC0+c3RyaW5n
KCksIFRleHRQb3NpdGlvbihPcmRpbmFsTnVtYmVyOjpmcm9tT25lQmFzZWRJbnQoc3RhcnRpbmdM
aW5lTnVtYmVyKSwgT3JkaW5hbE51bWJlcjo6Zmlyc3QoKSkpOwogICAgIGlmIChleGVjLT5oYWRF
eGNlcHRpb24oKSkgewotICAgICAgICBKU1ZhbHVlIGV4Y2VwdGlvblZhbHVlID0gZXhlYy0+ZXhj
ZXB0aW9uKCk7CiAgICAgICAgIGlmIChleGNlcHRpb24pCi0gICAgICAgICAgICAqZXhjZXB0aW9u
ID0gdG9SZWYoZXhlYywgZXhjZXB0aW9uVmFsdWUpOworICAgICAgICAgICAgKmV4Y2VwdGlvbiA9
IHRvUmVmKGV4ZWMsIGV4ZWMtPmV4Y2VwdGlvbigpKTsKICAgICAgICAgZXhlYy0+Y2xlYXJFeGNl
cHRpb24oKTsKLSNpZiBFTkFCTEUoUkVNT1RFX0lOU1BFQ1RPUikKLSAgICAgICAgZXhlYy0+dm1F
bnRyeUdsb2JhbE9iamVjdCgpLT5pbnNwZWN0b3JDb250cm9sbGVyKCkucmVwb3J0QVBJRXhjZXB0
aW9uKGV4ZWMsIGV4Y2VwdGlvblZhbHVlKTsKLSNlbmRpZgogICAgICAgICByZXN1bHQgPSAwOwog
ICAgIH0KICAgICByZXR1cm4gdG9SZWYocmVzdWx0KTsKQEAgLTE4MSwxMyArMTczLDkgQEAgSlNP
YmplY3RSZWYgSlNPYmplY3RNYWtlQXJyYXkoSlNDb250ZXh0UgogICAgICAgICByZXN1bHQgPSBj
b25zdHJ1Y3RFbXB0eUFycmF5KGV4ZWMsIDApOwogCiAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlv
bigpKSB7Ci0gICAgICAgIEpTVmFsdWUgZXhjZXB0aW9uVmFsdWUgPSBleGVjLT5leGNlcHRpb24o
KTsKICAgICAgICAgaWYgKGV4Y2VwdGlvbikKLSAgICAgICAgICAgICpleGNlcHRpb24gPSB0b1Jl
ZihleGVjLCBleGNlcHRpb25WYWx1ZSk7CisgICAgICAgICAgICAqZXhjZXB0aW9uID0gdG9SZWYo
ZXhlYywgZXhlYy0+ZXhjZXB0aW9uKCkpOwogICAgICAgICBleGVjLT5jbGVhckV4Y2VwdGlvbigp
OwotI2lmIEVOQUJMRShSRU1PVEVfSU5TUEVDVE9SKQotICAgICAgICBleGVjLT52bUVudHJ5R2xv
YmFsT2JqZWN0KCktPmluc3BlY3RvckNvbnRyb2xsZXIoKS5yZXBvcnRBUElFeGNlcHRpb24oZXhl
YywgZXhjZXB0aW9uVmFsdWUpOwotI2VuZGlmCiAgICAgICAgIHJlc3VsdCA9IDA7CiAgICAgfQog
CkBAIC0yMDksMTMgKzE5Nyw5IEBAIEpTT2JqZWN0UmVmIEpTT2JqZWN0TWFrZURhdGUoSlNDb250
ZXh0UmUKIAogICAgIEpTT2JqZWN0KiByZXN1bHQgPSBjb25zdHJ1Y3REYXRlKGV4ZWMsIGV4ZWMt
PmxleGljYWxHbG9iYWxPYmplY3QoKSwgYXJnTGlzdCk7CiAgICAgaWYgKGV4ZWMtPmhhZEV4Y2Vw
dGlvbigpKSB7Ci0gICAgICAgIEpTVmFsdWUgZXhjZXB0aW9uVmFsdWUgPSBleGVjLT5leGNlcHRp
b24oKTsKICAgICAgICAgaWYgKGV4Y2VwdGlvbikKLSAgICAgICAgICAgICpleGNlcHRpb24gPSB0
b1JlZihleGVjLCBleGNlcHRpb25WYWx1ZSk7CisgICAgICAgICAgICAqZXhjZXB0aW9uID0gdG9S
ZWYoZXhlYywgZXhlYy0+ZXhjZXB0aW9uKCkpOwogICAgICAgICBleGVjLT5jbGVhckV4Y2VwdGlv
bigpOwotI2lmIEVOQUJMRShSRU1PVEVfSU5TUEVDVE9SKQotICAgICAgICBleGVjLT52bUVudHJ5
R2xvYmFsT2JqZWN0KCktPmluc3BlY3RvckNvbnRyb2xsZXIoKS5yZXBvcnRBUElFeGNlcHRpb24o
ZXhlYywgZXhjZXB0aW9uVmFsdWUpOwotI2VuZGlmCiAgICAgICAgIHJlc3VsdCA9IDA7CiAgICAg
fQogCkBAIC0yMzYsMTMgKzIyMCw5IEBAIEpTT2JqZWN0UmVmIEpTT2JqZWN0TWFrZUVycm9yKEpT
Q29udGV4dFIKICAgICBKU09iamVjdCogcmVzdWx0ID0gRXJyb3JJbnN0YW5jZTo6Y3JlYXRlKGV4
ZWMsIGVycm9yU3RydWN0dXJlLCBtZXNzYWdlKTsKIAogICAgIGlmIChleGVjLT5oYWRFeGNlcHRp
b24oKSkgewotICAgICAgICBKU1ZhbHVlIGV4Y2VwdGlvblZhbHVlID0gZXhlYy0+ZXhjZXB0aW9u
KCk7CiAgICAgICAgIGlmIChleGNlcHRpb24pCi0gICAgICAgICAgICAqZXhjZXB0aW9uID0gdG9S
ZWYoZXhlYywgZXhjZXB0aW9uVmFsdWUpOworICAgICAgICAgICAgKmV4Y2VwdGlvbiA9IHRvUmVm
KGV4ZWMsIGV4ZWMtPmV4Y2VwdGlvbigpKTsKICAgICAgICAgZXhlYy0+Y2xlYXJFeGNlcHRpb24o
KTsKLSNpZiBFTkFCTEUoUkVNT1RFX0lOU1BFQ1RPUikKLSAgICAgICAgZXhlYy0+dm1FbnRyeUds
b2JhbE9iamVjdCgpLT5pbnNwZWN0b3JDb250cm9sbGVyKCkucmVwb3J0QVBJRXhjZXB0aW9uKGV4
ZWMsIGV4Y2VwdGlvblZhbHVlKTsKLSNlbmRpZgogICAgICAgICByZXN1bHQgPSAwOwogICAgIH0K
IApAQCAtMjY0LDEzICsyNDQsOSBAQCBKU09iamVjdFJlZiBKU09iamVjdE1ha2VSZWdFeHAoSlND
b250ZXh0CiAKICAgICBKU09iamVjdCogcmVzdWx0ID0gY29uc3RydWN0UmVnRXhwKGV4ZWMsIGV4
ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSwgIGFyZ0xpc3QpOwogICAgIGlmIChleGVjLT5oYWRF
eGNlcHRpb24oKSkgewotICAgICAgICBKU1ZhbHVlIGV4Y2VwdGlvblZhbHVlID0gZXhlYy0+ZXhj
ZXB0aW9uKCk7CiAgICAgICAgIGlmIChleGNlcHRpb24pCi0gICAgICAgICAgICAqZXhjZXB0aW9u
ID0gdG9SZWYoZXhlYywgZXhjZXB0aW9uVmFsdWUpOworICAgICAgICAgICAgKmV4Y2VwdGlvbiA9
IHRvUmVmKGV4ZWMsIGV4ZWMtPmV4Y2VwdGlvbigpKTsKICAgICAgICAgZXhlYy0+Y2xlYXJFeGNl
cHRpb24oKTsKLSNpZiBFTkFCTEUoUkVNT1RFX0lOU1BFQ1RPUikKLSAgICAgICAgZXhlYy0+dm1F
bnRyeUdsb2JhbE9iamVjdCgpLT5pbnNwZWN0b3JDb250cm9sbGVyKCkucmVwb3J0QVBJRXhjZXB0
aW9uKGV4ZWMsIGV4Y2VwdGlvblZhbHVlKTsKLSNlbmRpZgogICAgICAgICByZXN1bHQgPSAwOwog
ICAgIH0KICAgICAKQEAgLTMzMiwxMyArMzA4LDkgQEAgSlNWYWx1ZVJlZiBKU09iamVjdEdldFBy
b3BlcnR5KEpTQ29udGV4dAogCiAgICAgSlNWYWx1ZSBqc1ZhbHVlID0ganNPYmplY3QtPmdldChl
eGVjLCBwcm9wZXJ0eU5hbWUtPmlkZW50aWZpZXIoJmV4ZWMtPnZtKCkpKTsKICAgICBpZiAoZXhl
Yy0+aGFkRXhjZXB0aW9uKCkpIHsKLSAgICAgICAgSlNWYWx1ZSBleGNlcHRpb25WYWx1ZSA9IGV4
ZWMtPmV4Y2VwdGlvbigpOwogICAgICAgICBpZiAoZXhjZXB0aW9uKQotICAgICAgICAgICAgKmV4
Y2VwdGlvbiA9IHRvUmVmKGV4ZWMsIGV4Y2VwdGlvblZhbHVlKTsKKyAgICAgICAgICAgICpleGNl
cHRpb24gPSB0b1JlZihleGVjLCBleGVjLT5leGNlcHRpb24oKSk7CiAgICAgICAgIGV4ZWMtPmNs
ZWFyRXhjZXB0aW9uKCk7Ci0jaWYgRU5BQkxFKFJFTU9URV9JTlNQRUNUT1IpCi0gICAgICAgIGV4
ZWMtPnZtRW50cnlHbG9iYWxPYmplY3QoKS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLnJlcG9ydEFQ
SUV4Y2VwdGlvbihleGVjLCBleGNlcHRpb25WYWx1ZSk7Ci0jZW5kaWYKICAgICB9CiAgICAgcmV0
dXJuIHRvUmVmKGV4ZWMsIGpzVmFsdWUpOwogfQpAQCAtMzY1LDEzICszMzcsOSBAQCB2b2lkIEpT
T2JqZWN0U2V0UHJvcGVydHkoSlNDb250ZXh0UmVmIGN0CiAgICAgfQogCiAgICAgaWYgKGV4ZWMt
PmhhZEV4Y2VwdGlvbigpKSB7Ci0gICAgICAgIEpTVmFsdWUgZXhjZXB0aW9uVmFsdWUgPSBleGVj
LT5leGNlcHRpb24oKTsKICAgICAgICAgaWYgKGV4Y2VwdGlvbikKLSAgICAgICAgICAgICpleGNl
cHRpb24gPSB0b1JlZihleGVjLCBleGNlcHRpb25WYWx1ZSk7CisgICAgICAgICAgICAqZXhjZXB0
aW9uID0gdG9SZWYoZXhlYywgZXhlYy0+ZXhjZXB0aW9uKCkpOwogICAgICAgICBleGVjLT5jbGVh
ckV4Y2VwdGlvbigpOwotI2lmIEVOQUJMRShSRU1PVEVfSU5TUEVDVE9SKQotICAgICAgICBleGVj
LT52bUVudHJ5R2xvYmFsT2JqZWN0KCktPmluc3BlY3RvckNvbnRyb2xsZXIoKS5yZXBvcnRBUElF
eGNlcHRpb24oZXhlYywgZXhjZXB0aW9uVmFsdWUpOwotI2VuZGlmCiAgICAgfQogfQogCkBAIC0z
ODgsMTMgKzM1Niw5IEBAIEpTVmFsdWVSZWYgSlNPYmplY3RHZXRQcm9wZXJ0eUF0SW5kZXgoSlMK
IAogICAgIEpTVmFsdWUganNWYWx1ZSA9IGpzT2JqZWN0LT5nZXQoZXhlYywgcHJvcGVydHlJbmRl
eCk7CiAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKSB7Ci0gICAgICAgIEpTVmFsdWUgZXhj
ZXB0aW9uVmFsdWUgPSBleGVjLT5leGNlcHRpb24oKTsKICAgICAgICAgaWYgKGV4Y2VwdGlvbikK
LSAgICAgICAgICAgICpleGNlcHRpb24gPSB0b1JlZihleGVjLCBleGNlcHRpb25WYWx1ZSk7Cisg
ICAgICAgICAgICAqZXhjZXB0aW9uID0gdG9SZWYoZXhlYywgZXhlYy0+ZXhjZXB0aW9uKCkpOwog
ICAgICAgICBleGVjLT5jbGVhckV4Y2VwdGlvbigpOwotI2lmIEVOQUJMRShSRU1PVEVfSU5TUEVD
VE9SKQotICAgICAgICBleGVjLT52bUVudHJ5R2xvYmFsT2JqZWN0KCktPmluc3BlY3RvckNvbnRy
b2xsZXIoKS5yZXBvcnRBUElFeGNlcHRpb24oZXhlYywgZXhjZXB0aW9uVmFsdWUpOwotI2VuZGlm
CiAgICAgfQogICAgIHJldHVybiB0b1JlZihleGVjLCBqc1ZhbHVlKTsKIH0KQEAgLTQxNCwxMyAr
Mzc4LDkgQEAgdm9pZCBKU09iamVjdFNldFByb3BlcnR5QXRJbmRleChKU0NvbnRleAogICAgIAog
ICAgIGpzT2JqZWN0LT5tZXRob2RUYWJsZSgpLT5wdXRCeUluZGV4KGpzT2JqZWN0LCBleGVjLCBw
cm9wZXJ0eUluZGV4LCBqc1ZhbHVlLCBmYWxzZSk7CiAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlv
bigpKSB7Ci0gICAgICAgIEpTVmFsdWUgZXhjZXB0aW9uVmFsdWUgPSBleGVjLT5leGNlcHRpb24o
KTsKICAgICAgICAgaWYgKGV4Y2VwdGlvbikKLSAgICAgICAgICAgICpleGNlcHRpb24gPSB0b1Jl
ZihleGVjLCBleGNlcHRpb25WYWx1ZSk7CisgICAgICAgICAgICAqZXhjZXB0aW9uID0gdG9SZWYo
ZXhlYywgZXhlYy0+ZXhjZXB0aW9uKCkpOwogICAgICAgICBleGVjLT5jbGVhckV4Y2VwdGlvbigp
OwotI2lmIEVOQUJMRShSRU1PVEVfSU5TUEVDVE9SKQotICAgICAgICBleGVjLT52bUVudHJ5R2xv
YmFsT2JqZWN0KCktPmluc3BlY3RvckNvbnRyb2xsZXIoKS5yZXBvcnRBUElFeGNlcHRpb24oZXhl
YywgZXhjZXB0aW9uVmFsdWUpOwotI2VuZGlmCiAgICAgfQogfQogCkBAIC00MzcsMTMgKzM5Nyw5
IEBAIGJvb2wgSlNPYmplY3REZWxldGVQcm9wZXJ0eShKU0NvbnRleHRSZWYKIAogICAgIGJvb2wg
cmVzdWx0ID0ganNPYmplY3QtPm1ldGhvZFRhYmxlKCktPmRlbGV0ZVByb3BlcnR5KGpzT2JqZWN0
LCBleGVjLCBwcm9wZXJ0eU5hbWUtPmlkZW50aWZpZXIoJmV4ZWMtPnZtKCkpKTsKICAgICBpZiAo
ZXhlYy0+aGFkRXhjZXB0aW9uKCkpIHsKLSAgICAgICAgSlNWYWx1ZSBleGNlcHRpb25WYWx1ZSA9
IGV4ZWMtPmV4Y2VwdGlvbigpOwogICAgICAgICBpZiAoZXhjZXB0aW9uKQotICAgICAgICAgICAg
KmV4Y2VwdGlvbiA9IHRvUmVmKGV4ZWMsIGV4Y2VwdGlvblZhbHVlKTsKKyAgICAgICAgICAgICpl
eGNlcHRpb24gPSB0b1JlZihleGVjLCBleGVjLT5leGNlcHRpb24oKSk7CiAgICAgICAgIGV4ZWMt
PmNsZWFyRXhjZXB0aW9uKCk7Ci0jaWYgRU5BQkxFKFJFTU9URV9JTlNQRUNUT1IpCi0gICAgICAg
IGV4ZWMtPnZtRW50cnlHbG9iYWxPYmplY3QoKS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLnJlcG9y
dEFQSUV4Y2VwdGlvbihleGVjLCBleGNlcHRpb25WYWx1ZSk7Ci0jZW5kaWYKICAgICB9CiAgICAg
cmV0dXJuIHJlc3VsdDsKIH0KQEAgLTU4NSwxMyArNTQxLDkgQEAgSlNWYWx1ZVJlZiBKU09iamVj
dENhbGxBc0Z1bmN0aW9uKEpTQ29udAogCiAgICAgSlNWYWx1ZVJlZiByZXN1bHQgPSB0b1JlZihl
eGVjLCBjYWxsKGV4ZWMsIGpzT2JqZWN0LCBjYWxsVHlwZSwgY2FsbERhdGEsIGpzVGhpc09iamVj
dCwgYXJnTGlzdCkpOwogICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkgewotICAgICAgICBK
U1ZhbHVlIGV4Y2VwdGlvblZhbHVlID0gZXhlYy0+ZXhjZXB0aW9uKCk7CiAgICAgICAgIGlmIChl
eGNlcHRpb24pCi0gICAgICAgICAgICAqZXhjZXB0aW9uID0gdG9SZWYoZXhlYywgZXhjZXB0aW9u
VmFsdWUpOworICAgICAgICAgICAgKmV4Y2VwdGlvbiA9IHRvUmVmKGV4ZWMsIGV4ZWMtPmV4Y2Vw
dGlvbigpKTsKICAgICAgICAgZXhlYy0+Y2xlYXJFeGNlcHRpb24oKTsKLSNpZiBFTkFCTEUoUkVN
T1RFX0lOU1BFQ1RPUikKLSAgICAgICAgZXhlYy0+dm1FbnRyeUdsb2JhbE9iamVjdCgpLT5pbnNw
ZWN0b3JDb250cm9sbGVyKCkucmVwb3J0QVBJRXhjZXB0aW9uKGV4ZWMsIGV4Y2VwdGlvblZhbHVl
KTsKLSNlbmRpZgogICAgICAgICByZXN1bHQgPSAwOwogICAgIH0KICAgICByZXR1cm4gcmVzdWx0
OwpAQCAtNjI2LDEzICs1NzgsOSBAQCBKU09iamVjdFJlZiBKU09iamVjdENhbGxBc0NvbnN0cnVj
dG9yKEpTCiAgICAgICAgIGFyZ0xpc3QuYXBwZW5kKHRvSlMoZXhlYywgYXJndW1lbnRzW2ldKSk7
CiAgICAgSlNPYmplY3RSZWYgcmVzdWx0ID0gdG9SZWYoY29uc3RydWN0KGV4ZWMsIGpzT2JqZWN0
LCBjb25zdHJ1Y3RUeXBlLCBjb25zdHJ1Y3REYXRhLCBhcmdMaXN0KSk7CiAgICAgaWYgKGV4ZWMt
PmhhZEV4Y2VwdGlvbigpKSB7Ci0gICAgICAgIEpTVmFsdWUgZXhjZXB0aW9uVmFsdWUgPSBleGVj
LT5leGNlcHRpb24oKTsKICAgICAgICAgaWYgKGV4Y2VwdGlvbikKLSAgICAgICAgICAgICpleGNl
cHRpb24gPSB0b1JlZihleGVjLCBleGNlcHRpb25WYWx1ZSk7CisgICAgICAgICAgICAqZXhjZXB0
aW9uID0gdG9SZWYoZXhlYywgZXhlYy0+ZXhjZXB0aW9uKCkpOwogICAgICAgICBleGVjLT5jbGVh
ckV4Y2VwdGlvbigpOwotI2lmIEVOQUJMRShSRU1PVEVfSU5TUEVDVE9SKQotICAgICAgICBleGVj
LT52bUVudHJ5R2xvYmFsT2JqZWN0KCktPmluc3BlY3RvckNvbnRyb2xsZXIoKS5yZXBvcnRBUElF
eGNlcHRpb24oZXhlYywgZXhjZXB0aW9uVmFsdWUpOwotI2VuZGlmCiAgICAgICAgIHJlc3VsdCA9
IDA7CiAgICAgfQogICAgIHJldHVybiByZXN1bHQ7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvQVBJL0pTVmFsdWUubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0FQ
SS9KU1ZhbHVlLm1tCShyZXZpc2lvbiAxNjQ1NTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
QVBJL0pTVmFsdWUubW0JKHdvcmtpbmcgY29weSkKQEAgLTIwLDcgKzIwLDcgQEAKICAqIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkKICAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAogICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4gCiAgKi8KIAogI2luY2x1ZGUgImNvbmZpZy5oIgpAQCAtNDcsMTIgKzQ3LDYgQEAKICNp
bXBvcnQgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogI2ltcG9ydCA8d3RmL3RleHQvU3RyaW5nSGFz
aC5oPgogCi0jaWYgRU5BQkxFKFJFTU9URV9JTlNQRUNUT1IpCi0jaW1wb3J0ICJDYWxsRnJhbWUu
aCIKLSNpbXBvcnQgIkpTR2xvYmFsT2JqZWN0LmgiCi0jaW1wb3J0ICJKU0dsb2JhbE9iamVjdElu
c3BlY3RvckNvbnRyb2xsZXIuaCIKLSNlbmRpZgotCiAjaWYgSlNDX09CSkNfQVBJX0VOQUJMRUQK
IAogTlNTdHJpbmcgKiBjb25zdCBKU1Byb3BlcnR5RGVzY3JpcHRvcldyaXRhYmxlS2V5ID0gQCJ3
cml0YWJsZSI7CkBAIC02MzUsMTQgKzYyOSw2IEBAIEpTQ29udGFpbmVyQ29udmVydG9yOjpUYXNr
IEpTQ29udGFpbmVyQ28KICAgICByZXR1cm4gbGFzdDsKIH0KIAotI2lmIEVOQUJMRShSRU1PVEVf
SU5TUEVDVE9SKQotc3RhdGljIHZvaWQgcmVwb3J0RXhjZXB0aW9uVG9JbnNwZWN0b3IoSlNHbG9i
YWxDb250ZXh0UmVmIGNvbnRleHQsIEpTQzo6SlNWYWx1ZSBleGNlcHRpb24pCi17Ci0gICAgSlND
OjpFeGVjU3RhdGUqIGV4ZWMgPSB0b0pTKGNvbnRleHQpOwotICAgIGV4ZWMtPnZtRW50cnlHbG9i
YWxPYmplY3QoKS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLnJlcG9ydEFQSUV4Y2VwdGlvbihleGVj
LCBleGNlcHRpb24pOwotfQotI2VuZGlmCi0KIHN0YXRpYyBKU0NvbnRhaW5lckNvbnZlcnRvcjo6
VGFzayB2YWx1ZVRvT2JqZWN0V2l0aG91dENvcHkoSlNHbG9iYWxDb250ZXh0UmVmIGNvbnRleHQs
IEpTVmFsdWVSZWYgdmFsdWUpCiB7CiAgICAgaWYgKCFKU1ZhbHVlSXNPYmplY3QoY29udGV4dCwg
dmFsdWUpKSB7CkBAIC03OTUsMTMgKzc4MSw4IEBAIGlkIHZhbHVlVG9BcnJheShKU0dsb2JhbENv
bnRleHRSZWYgY29udGUKICAgICAgICAgcmV0dXJuIGNvbnRhaW5lclZhbHVlVG9PYmplY3QoY29u
dGV4dCwgKEpTQ29udGFpbmVyQ29udmVydG9yOjpUYXNrKXsgdmFsdWUsIFtOU011dGFibGVBcnJh
eSBhcnJheV0sIENvbnRhaW5lckFycmF5fSk7CiAKICAgICBKU0M6OkFQSUVudHJ5U2hpbSBzaGlt
KHRvSlMoY29udGV4dCkpOwotICAgIGlmICghKEpTVmFsdWVJc051bGwoY29udGV4dCwgdmFsdWUp
IHx8IEpTVmFsdWVJc1VuZGVmaW5lZChjb250ZXh0LCB2YWx1ZSkpKSB7Ci0gICAgICAgIEpTQzo6
SlNPYmplY3QqIGV4Y2VwdGlvbk9iamVjdCA9IEpTQzo6Y3JlYXRlVHlwZUVycm9yKHRvSlMoY29u
dGV4dCksIEFTQ0lJTGl0ZXJhbCgiQ2Fubm90IGNvbnZlcnQgcHJpbWl0aXZlIHRvIE5TQXJyYXki
KSk7Ci0gICAgICAgICpleGNlcHRpb24gPSB0b1JlZihleGNlcHRpb25PYmplY3QpOwotI2lmIEVO
QUJMRShSRU1PVEVfSU5TUEVDVE9SKQotICAgICAgICByZXBvcnRFeGNlcHRpb25Ub0luc3BlY3Rv
cihjb250ZXh0LCBleGNlcHRpb25PYmplY3QpOwotI2VuZGlmCi0gICAgfQorICAgIGlmICghKEpT
VmFsdWVJc051bGwoY29udGV4dCwgdmFsdWUpIHx8IEpTVmFsdWVJc1VuZGVmaW5lZChjb250ZXh0
LCB2YWx1ZSkpKQorICAgICAgICAqZXhjZXB0aW9uID0gdG9SZWYoSlNDOjpjcmVhdGVUeXBlRXJy
b3IodG9KUyhjb250ZXh0KSwgQVNDSUlMaXRlcmFsKCJDYW5ub3QgY29udmVydCBwcmltaXRpdmUg
dG8gTlNBcnJheSIpKSk7CiAgICAgcmV0dXJuIG5pbDsKIH0KIApAQCAtODE3LDEzICs3OTgsOCBA
QCBpZCB2YWx1ZVRvRGljdGlvbmFyeShKU0dsb2JhbENvbnRleHRSZWYgCiAgICAgICAgIHJldHVy
biBjb250YWluZXJWYWx1ZVRvT2JqZWN0KGNvbnRleHQsIChKU0NvbnRhaW5lckNvbnZlcnRvcjo6
VGFzayl7IHZhbHVlLCBbTlNNdXRhYmxlRGljdGlvbmFyeSBkaWN0aW9uYXJ5XSwgQ29udGFpbmVy
RGljdGlvbmFyeX0pOwogCiAgICAgSlNDOjpBUElFbnRyeVNoaW0gc2hpbSh0b0pTKGNvbnRleHQp
KTsKLSAgICBpZiAoIShKU1ZhbHVlSXNOdWxsKGNvbnRleHQsIHZhbHVlKSB8fCBKU1ZhbHVlSXNV
bmRlZmluZWQoY29udGV4dCwgdmFsdWUpKSkgewotICAgICAgICBKU0M6OkpTT2JqZWN0KiBleGNl
cHRpb25PYmplY3QgPSBKU0M6OmNyZWF0ZVR5cGVFcnJvcih0b0pTKGNvbnRleHQpLCBBU0NJSUxp
dGVyYWwoIkNhbm5vdCBjb252ZXJ0IHByaW1pdGl2ZSB0byBOU0RpY3Rpb25hcnkiKSk7Ci0gICAg
ICAgICpleGNlcHRpb24gPSB0b1JlZihleGNlcHRpb25PYmplY3QpOwotI2lmIEVOQUJMRShSRU1P
VEVfSU5TUEVDVE9SKQotICAgICAgICByZXBvcnRFeGNlcHRpb25Ub0luc3BlY3Rvcihjb250ZXh0
LCBleGNlcHRpb25PYmplY3QpOwotI2VuZGlmCi0gICAgfQorICAgIGlmICghKEpTVmFsdWVJc051
bGwoY29udGV4dCwgdmFsdWUpIHx8IEpTVmFsdWVJc1VuZGVmaW5lZChjb250ZXh0LCB2YWx1ZSkp
KQorICAgICAgICAqZXhjZXB0aW9uID0gdG9SZWYoSlNDOjpjcmVhdGVUeXBlRXJyb3IodG9KUyhj
b250ZXh0KSwgQVNDSUlMaXRlcmFsKCJDYW5ub3QgY29udmVydCBwcmltaXRpdmUgdG8gTlNEaWN0
aW9uYXJ5IikpKTsKICAgICByZXR1cm4gbmlsOwogfQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvQVBJL0pTVmFsdWVSZWYuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9BUEkvSlNWYWx1ZVJlZi5jcHAJKHJldmlzaW9uIDE2NDU1MykKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9BUEkvSlNWYWx1ZVJlZi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIwLDcgKzIw
LDcgQEAKICAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkKICAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAogICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4gCiAgKi8KIAogI2luY2x1ZGUgImNvbmZpZy5oIgpAQCAtNDgs
MTAgKzQ4LDYgQEAKICNpbmNsdWRlIDxtYWNoLW8vZHlsZC5oPgogI2VuZGlmCiAKLSNpZiBFTkFC
TEUoUkVNT1RFX0lOU1BFQ1RPUikKLSNpbmNsdWRlICJKU0dsb2JhbE9iamVjdEluc3BlY3RvckNv
bnRyb2xsZXIuaCIKLSNlbmRpZgotCiB1c2luZyBuYW1lc3BhY2UgSlNDOwogCiAjaWYgUExBVEZP
Uk0oTUFDKQpAQCAtMjA2LDEzICsyMDIsOSBAQCBib29sIEpTVmFsdWVJc0VxdWFsKEpTQ29udGV4
dFJlZiBjdHgsIEpTCiAKICAgICBib29sIHJlc3VsdCA9IEpTVmFsdWU6OmVxdWFsKGV4ZWMsIGpz
QSwganNCKTsgLy8gZmFsc2UgaWYgYW4gZXhjZXB0aW9uIGlzIHRocm93bgogICAgIGlmIChleGVj
LT5oYWRFeGNlcHRpb24oKSkgewotICAgICAgICBKU1ZhbHVlIGV4Y2VwdGlvblZhbHVlID0gZXhl
Yy0+ZXhjZXB0aW9uKCk7CiAgICAgICAgIGlmIChleGNlcHRpb24pCi0gICAgICAgICAgICAqZXhj
ZXB0aW9uID0gdG9SZWYoZXhlYywgZXhjZXB0aW9uVmFsdWUpOworICAgICAgICAgICAgKmV4Y2Vw
dGlvbiA9IHRvUmVmKGV4ZWMsIGV4ZWMtPmV4Y2VwdGlvbigpKTsKICAgICAgICAgZXhlYy0+Y2xl
YXJFeGNlcHRpb24oKTsKLSNpZiBFTkFCTEUoUkVNT1RFX0lOU1BFQ1RPUikKLSAgICAgICAgZXhl
Yy0+dm1FbnRyeUdsb2JhbE9iamVjdCgpLT5pbnNwZWN0b3JDb250cm9sbGVyKCkucmVwb3J0QVBJ
RXhjZXB0aW9uKGV4ZWMsIGV4Y2VwdGlvblZhbHVlKTsKLSNlbmRpZgogICAgIH0KICAgICByZXR1
cm4gcmVzdWx0OwogfQpAQCAtMjQ4LDEzICsyNDAsOSBAQCBib29sIEpTVmFsdWVJc0luc3RhbmNl
T2ZDb25zdHJ1Y3RvcihKU0NvCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBib29sIHJlc3Vs
dCA9IGpzQ29uc3RydWN0b3ItPmhhc0luc3RhbmNlKGV4ZWMsIGpzVmFsdWUpOyAvLyBmYWxzZSBp
ZiBhbiBleGNlcHRpb24gaXMgdGhyb3duCiAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKSB7
Ci0gICAgICAgIEpTVmFsdWUgZXhjZXB0aW9uVmFsdWUgPSBleGVjLT5leGNlcHRpb24oKTsKICAg
ICAgICAgaWYgKGV4Y2VwdGlvbikKLSAgICAgICAgICAgICpleGNlcHRpb24gPSB0b1JlZihleGVj
LCBleGNlcHRpb25WYWx1ZSk7CisgICAgICAgICAgICAqZXhjZXB0aW9uID0gdG9SZWYoZXhlYywg
ZXhlYy0+ZXhjZXB0aW9uKCkpOwogICAgICAgICBleGVjLT5jbGVhckV4Y2VwdGlvbigpOwotI2lm
IEVOQUJMRShSRU1PVEVfSU5TUEVDVE9SKQotICAgICAgICBleGVjLT52bUVudHJ5R2xvYmFsT2Jq
ZWN0KCktPmluc3BlY3RvckNvbnRyb2xsZXIoKS5yZXBvcnRBUElFeGNlcHRpb24oZXhlYywgZXhj
ZXB0aW9uVmFsdWUpOwotI2VuZGlmCiAgICAgfQogICAgIHJldHVybiByZXN1bHQ7CiB9CkBAIC0z
NTYsMTMgKzM0NCw5IEBAIEpTU3RyaW5nUmVmIEpTVmFsdWVDcmVhdGVKU09OU3RyaW5nKEpTQ28K
ICAgICBpZiAoZXhjZXB0aW9uKQogICAgICAgICAqZXhjZXB0aW9uID0gMDsKICAgICBpZiAoZXhl
Yy0+aGFkRXhjZXB0aW9uKCkpIHsKLSAgICAgICAgSlNWYWx1ZSBleGNlcHRpb25WYWx1ZSA9IGV4
ZWMtPmV4Y2VwdGlvbigpOwogICAgICAgICBpZiAoZXhjZXB0aW9uKQotICAgICAgICAgICAgKmV4
Y2VwdGlvbiA9IHRvUmVmKGV4ZWMsIGV4Y2VwdGlvblZhbHVlKTsKKyAgICAgICAgICAgICpleGNl
cHRpb24gPSB0b1JlZihleGVjLCBleGVjLT5leGNlcHRpb24oKSk7CiAgICAgICAgIGV4ZWMtPmNs
ZWFyRXhjZXB0aW9uKCk7Ci0jaWYgRU5BQkxFKFJFTU9URV9JTlNQRUNUT1IpCi0gICAgICAgIGV4
ZWMtPnZtRW50cnlHbG9iYWxPYmplY3QoKS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLnJlcG9ydEFQ
SUV4Y2VwdGlvbihleGVjLCBleGNlcHRpb25WYWx1ZSk7Ci0jZW5kaWYKICAgICAgICAgcmV0dXJu
IDA7CiAgICAgfQogICAgIHJldHVybiBPcGFxdWVKU1N0cmluZzo6Y3JlYXRlKHJlc3VsdCkubGVh
a1JlZigpOwpAQCAtMzk0LDEzICszNzgsOSBAQCBkb3VibGUgSlNWYWx1ZVRvTnVtYmVyKEpTQ29u
dGV4dFJlZiBjdHgsCiAKICAgICBkb3VibGUgbnVtYmVyID0ganNWYWx1ZS50b051bWJlcihleGVj
KTsKICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpIHsKLSAgICAgICAgSlNWYWx1ZSBleGNl
cHRpb25WYWx1ZSA9IGV4ZWMtPmV4Y2VwdGlvbigpOwogICAgICAgICBpZiAoZXhjZXB0aW9uKQot
ICAgICAgICAgICAgKmV4Y2VwdGlvbiA9IHRvUmVmKGV4ZWMsIGV4Y2VwdGlvblZhbHVlKTsKKyAg
ICAgICAgICAgICpleGNlcHRpb24gPSB0b1JlZihleGVjLCBleGVjLT5leGNlcHRpb24oKSk7CiAg
ICAgICAgIGV4ZWMtPmNsZWFyRXhjZXB0aW9uKCk7Ci0jaWYgRU5BQkxFKFJFTU9URV9JTlNQRUNU
T1IpCi0gICAgICAgIGV4ZWMtPnZtRW50cnlHbG9iYWxPYmplY3QoKS0+aW5zcGVjdG9yQ29udHJv
bGxlcigpLnJlcG9ydEFQSUV4Y2VwdGlvbihleGVjLCBleGNlcHRpb25WYWx1ZSk7Ci0jZW5kaWYK
ICAgICAgICAgbnVtYmVyID0gUU5hTjsKICAgICB9CiAgICAgcmV0dXJuIG51bWJlcjsKQEAgLTQx
OSwxMyArMzk5LDkgQEAgSlNTdHJpbmdSZWYgSlNWYWx1ZVRvU3RyaW5nQ29weShKU0NvbnRleAog
ICAgIAogICAgIFJlZlB0cjxPcGFxdWVKU1N0cmluZz4gc3RyaW5nUmVmKE9wYXF1ZUpTU3RyaW5n
OjpjcmVhdGUoanNWYWx1ZS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYykpKTsKICAgICBpZiAo
ZXhlYy0+aGFkRXhjZXB0aW9uKCkpIHsKLSAgICAgICAgSlNWYWx1ZSBleGNlcHRpb25WYWx1ZSA9
IGV4ZWMtPmV4Y2VwdGlvbigpOwogICAgICAgICBpZiAoZXhjZXB0aW9uKQotICAgICAgICAgICAg
KmV4Y2VwdGlvbiA9IHRvUmVmKGV4ZWMsIGV4Y2VwdGlvblZhbHVlKTsKKyAgICAgICAgICAgICpl
eGNlcHRpb24gPSB0b1JlZihleGVjLCBleGVjLT5leGNlcHRpb24oKSk7CiAgICAgICAgIGV4ZWMt
PmNsZWFyRXhjZXB0aW9uKCk7Ci0jaWYgRU5BQkxFKFJFTU9URV9JTlNQRUNUT1IpCi0gICAgICAg
IGV4ZWMtPnZtRW50cnlHbG9iYWxPYmplY3QoKS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLnJlcG9y
dEFQSUV4Y2VwdGlvbihleGVjLCBleGNlcHRpb25WYWx1ZSk7Ci0jZW5kaWYKICAgICAgICAgc3Ry
aW5nUmVmLmNsZWFyKCk7CiAgICAgfQogICAgIHJldHVybiBzdHJpbmdSZWYucmVsZWFzZSgpLmxl
YWtSZWYoKTsKQEAgLTQ0NCwxNyArNDIwLDEzIEBAIEpTT2JqZWN0UmVmIEpTVmFsdWVUb09iamVj
dChKU0NvbnRleHRSZWYKICAgICAKICAgICBKU09iamVjdFJlZiBvYmplY3RSZWYgPSB0b1JlZihq
c1ZhbHVlLnRvT2JqZWN0KGV4ZWMpKTsKICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpIHsK
LSAgICAgICAgSlNWYWx1ZSBleGNlcHRpb25WYWx1ZSA9IGV4ZWMtPmV4Y2VwdGlvbigpOwogICAg
ICAgICBpZiAoZXhjZXB0aW9uKQotICAgICAgICAgICAgKmV4Y2VwdGlvbiA9IHRvUmVmKGV4ZWMs
IGV4Y2VwdGlvblZhbHVlKTsKKyAgICAgICAgICAgICpleGNlcHRpb24gPSB0b1JlZihleGVjLCBl
eGVjLT5leGNlcHRpb24oKSk7CiAgICAgICAgIGV4ZWMtPmNsZWFyRXhjZXB0aW9uKCk7Ci0jaWYg
RU5BQkxFKFJFTU9URV9JTlNQRUNUT1IpCi0gICAgICAgIGV4ZWMtPnZtRW50cnlHbG9iYWxPYmpl
Y3QoKS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLnJlcG9ydEFQSUV4Y2VwdGlvbihleGVjLCBleGNl
cHRpb25WYWx1ZSk7Ci0jZW5kaWYKICAgICAgICAgb2JqZWN0UmVmID0gMDsKICAgICB9CiAgICAg
cmV0dXJuIG9iamVjdFJlZjsKLX0KK30gICAgCiAKIHZvaWQgSlNWYWx1ZVByb3RlY3QoSlNDb250
ZXh0UmVmIGN0eCwgSlNWYWx1ZVJlZiB2YWx1ZSkKIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnNwZWN0b3IvQ29uc29sZU1lc3NhZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvQ29uc29sZU1lc3NhZ2UuY3BwCShyZXZpc2lvbiAxNjQ1
NTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0NvbnNvbGVNZXNzYWdlLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNDUsNyArNDUsNyBAQAogCiBuYW1lc3BhY2UgSW5zcGVjdG9y
IHsKIAotQ29uc29sZU1lc3NhZ2U6OkNvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2Ugc291cmNl
LCBNZXNzYWdlVHlwZSB0eXBlLCBNZXNzYWdlTGV2ZWwgbGV2ZWwsIGNvbnN0IFN0cmluZyYgbWVz
c2FnZSwgdW5zaWduZWQgbG9uZyByZXF1ZXN0SWRlbnRpZmllcikKK0NvbnNvbGVNZXNzYWdlOjpD
b25zb2xlTWVzc2FnZShib29sIGNhbkdlbmVyYXRlQ2FsbFN0YWNrLCBNZXNzYWdlU291cmNlIHNv
dXJjZSwgTWVzc2FnZVR5cGUgdHlwZSwgTWVzc2FnZUxldmVsIGxldmVsLCBjb25zdCBTdHJpbmcm
IG1lc3NhZ2UsIHVuc2lnbmVkIGxvbmcgcmVxdWVzdElkZW50aWZpZXIpCiAgICAgOiBtX3NvdXJj
ZShzb3VyY2UpCiAgICAgLCBtX3R5cGUodHlwZSkKICAgICAsIG1fbGV2ZWwobGV2ZWwpCkBAIC01
Niw5ICs1NiwxMCBAQCBDb25zb2xlTWVzc2FnZTo6Q29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvCiAg
ICAgLCBtX3JlcGVhdENvdW50KDEpCiAgICAgLCBtX3JlcXVlc3RJZChJZGVudGlmaWVyc0ZhY3Rv
cnk6OnJlcXVlc3RJZChyZXF1ZXN0SWRlbnRpZmllcikpCiB7CisgICAgYXV0b2dlbmVyYXRlTWV0
YWRhdGEoY2FuR2VuZXJhdGVDYWxsU3RhY2spOwogfQogCi1Db25zb2xlTWVzc2FnZTo6Q29uc29s
ZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZSBzb3VyY2UsIE1lc3NhZ2VUeXBlIHR5cGUsIE1lc3NhZ2VM
ZXZlbCBsZXZlbCwgY29uc3QgU3RyaW5nJiBtZXNzYWdlLCBjb25zdCBTdHJpbmcmIHVybCwgdW5z
aWduZWQgbGluZSwgdW5zaWduZWQgY29sdW1uLCBKU0M6OkV4ZWNTdGF0ZSogc3RhdGUsIHVuc2ln
bmVkIGxvbmcgcmVxdWVzdElkZW50aWZpZXIpCitDb25zb2xlTWVzc2FnZTo6Q29uc29sZU1lc3Nh
Z2UoYm9vbCBjYW5HZW5lcmF0ZUNhbGxTdGFjaywgTWVzc2FnZVNvdXJjZSBzb3VyY2UsIE1lc3Nh
Z2VUeXBlIHR5cGUsIE1lc3NhZ2VMZXZlbCBsZXZlbCwgY29uc3QgU3RyaW5nJiBtZXNzYWdlLCBj
b25zdCBTdHJpbmcmIHVybCwgdW5zaWduZWQgbGluZSwgdW5zaWduZWQgY29sdW1uLCBKU0M6OkV4
ZWNTdGF0ZSogc3RhdGUsIHVuc2lnbmVkIGxvbmcgcmVxdWVzdElkZW50aWZpZXIpCiAgICAgOiBt
X3NvdXJjZShzb3VyY2UpCiAgICAgLCBtX3R5cGUodHlwZSkKICAgICAsIG1fbGV2ZWwobGV2ZWwp
CkBAIC02OSwzMSArNzAsMzAgQEAgQ29uc29sZU1lc3NhZ2U6OkNvbnNvbGVNZXNzYWdlKE1lc3Nh
Z2VTbwogICAgICwgbV9yZXBlYXRDb3VudCgxKQogICAgICwgbV9yZXF1ZXN0SWQoSWRlbnRpZmll
cnNGYWN0b3J5OjpyZXF1ZXN0SWQocmVxdWVzdElkZW50aWZpZXIpKQogewotICAgIGF1dG9nZW5l
cmF0ZU1ldGFkYXRhKHN0YXRlKTsKKyAgICBhdXRvZ2VuZXJhdGVNZXRhZGF0YShjYW5HZW5lcmF0
ZUNhbGxTdGFjaywgc3RhdGUpOwogfQogCi1Db25zb2xlTWVzc2FnZTo6Q29uc29sZU1lc3NhZ2Uo
TWVzc2FnZVNvdXJjZSBzb3VyY2UsIE1lc3NhZ2VUeXBlIHR5cGUsIE1lc3NhZ2VMZXZlbCBsZXZl
bCwgY29uc3QgU3RyaW5nJiBtZXNzYWdlLCBQYXNzUmVmUHRyPFNjcmlwdENhbGxTdGFjaz4gY2Fs
bFN0YWNrLCB1bnNpZ25lZCBsb25nIHJlcXVlc3RJZGVudGlmaWVyKQorQ29uc29sZU1lc3NhZ2U6
OkNvbnNvbGVNZXNzYWdlKGJvb2wsIE1lc3NhZ2VTb3VyY2Ugc291cmNlLCBNZXNzYWdlVHlwZSB0
eXBlLCBNZXNzYWdlTGV2ZWwgbGV2ZWwsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgUGFzc1JlZlB0
cjxTY3JpcHRDYWxsU3RhY2s+IGNhbGxTdGFjaywgdW5zaWduZWQgbG9uZyByZXF1ZXN0SWRlbnRp
ZmllcikKICAgICA6IG1fc291cmNlKHNvdXJjZSkKICAgICAsIG1fdHlwZSh0eXBlKQogICAgICwg
bV9sZXZlbChsZXZlbCkKICAgICAsIG1fbWVzc2FnZShtZXNzYWdlKQotICAgICwgbV91cmwoKQor
ICAgICwgbV9hcmd1bWVudHMobnVsbHB0cikKICAgICAsIG1fbGluZSgwKQogICAgICwgbV9jb2x1
bW4oMCkKICAgICAsIG1fcmVwZWF0Q291bnQoMSkKICAgICAsIG1fcmVxdWVzdElkKElkZW50aWZp
ZXJzRmFjdG9yeTo6cmVxdWVzdElkKHJlcXVlc3RJZGVudGlmaWVyKSkKIHsKLSAgICBtX2NhbGxT
dGFjayA9IGNhbGxTdGFjazsKLQotICAgIGNvbnN0IFNjcmlwdENhbGxGcmFtZSogZnJhbWUgPSBt
X2NhbGxTdGFjayA/IG1fY2FsbFN0YWNrLT5maXJzdE5vbk5hdGl2ZUNhbGxGcmFtZSgpIDogbnVs
bHB0cjsKLSAgICBpZiAoZnJhbWUpIHsKLSAgICAgICAgbV91cmwgPSBmcmFtZS0+c291cmNlVVJM
KCk7Ci0gICAgICAgIG1fbGluZSA9IGZyYW1lLT5saW5lTnVtYmVyKCk7Ci0gICAgICAgIG1fY29s
dW1uID0gZnJhbWUtPmNvbHVtbk51bWJlcigpOworICAgIGlmIChjYWxsU3RhY2sgJiYgY2FsbFN0
YWNrLT5zaXplKCkpIHsKKyAgICAgICAgY29uc3QgU2NyaXB0Q2FsbEZyYW1lJiBmcmFtZSA9IGNh
bGxTdGFjay0+YXQoMCk7CisgICAgICAgIG1fdXJsID0gZnJhbWUuc291cmNlVVJMKCk7CisgICAg
ICAgIG1fbGluZSA9IGZyYW1lLmxpbmVOdW1iZXIoKTsKKyAgICAgICAgbV9jb2x1bW4gPSBmcmFt
ZS5jb2x1bW5OdW1iZXIoKTsKICAgICB9CisgICAgbV9jYWxsU3RhY2sgPSBjYWxsU3RhY2s7CiB9
CiAKLUNvbnNvbGVNZXNzYWdlOjpDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlIHNvdXJjZSwg
TWVzc2FnZVR5cGUgdHlwZSwgTWVzc2FnZUxldmVsIGxldmVsLCBjb25zdCBTdHJpbmcmIG1lc3Nh
Z2UsIFBhc3NSZWZQdHI8U2NyaXB0QXJndW1lbnRzPiBhcmd1bWVudHMsIEpTQzo6RXhlY1N0YXRl
KiBzdGF0ZSwgdW5zaWduZWQgbG9uZyByZXF1ZXN0SWRlbnRpZmllcikKK0NvbnNvbGVNZXNzYWdl
OjpDb25zb2xlTWVzc2FnZShib29sIGNhbkdlbmVyYXRlQ2FsbFN0YWNrLCBNZXNzYWdlU291cmNl
IHNvdXJjZSwgTWVzc2FnZVR5cGUgdHlwZSwgTWVzc2FnZUxldmVsIGxldmVsLCBjb25zdCBTdHJp
bmcmIG1lc3NhZ2UsIFBhc3NSZWZQdHI8U2NyaXB0QXJndW1lbnRzPiBhcmd1bWVudHMsIEpTQzo6
RXhlY1N0YXRlKiBzdGF0ZSwgdW5zaWduZWQgbG9uZyByZXF1ZXN0SWRlbnRpZmllcikKICAgICA6
IG1fc291cmNlKHNvdXJjZSkKICAgICAsIG1fdHlwZSh0eXBlKQogICAgICwgbV9sZXZlbChsZXZl
bCkKQEAgLTEwNSwzMCArMTA1LDM1IEBAIENvbnNvbGVNZXNzYWdlOjpDb25zb2xlTWVzc2FnZShN
ZXNzYWdlU28KICAgICAsIG1fcmVwZWF0Q291bnQoMSkKICAgICAsIG1fcmVxdWVzdElkKElkZW50
aWZpZXJzRmFjdG9yeTo6cmVxdWVzdElkKHJlcXVlc3RJZGVudGlmaWVyKSkKIHsKLSAgICBhdXRv
Z2VuZXJhdGVNZXRhZGF0YShzdGF0ZSk7CisgICAgYXV0b2dlbmVyYXRlTWV0YWRhdGEoY2FuR2Vu
ZXJhdGVDYWxsU3RhY2ssIHN0YXRlKTsKIH0KIAogQ29uc29sZU1lc3NhZ2U6On5Db25zb2xlTWVz
c2FnZSgpCiB7CiB9CiAKLXZvaWQgQ29uc29sZU1lc3NhZ2U6OmF1dG9nZW5lcmF0ZU1ldGFkYXRh
KEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSkKKy8vIEZJWE1FOiBSZW1vdmUgdGhlIGdlbmVyYXRlIHdp
dGhvdXQgRXhlY1N0YXRlIHBhdGguIFRoZSBjYWxsZXIgc2hvdWxkIGFsd2F5cyBwcm92aWRlIGFu
IEV4ZWNTdGF0ZS4KK3ZvaWQgQ29uc29sZU1lc3NhZ2U6OmF1dG9nZW5lcmF0ZU1ldGFkYXRhKGJv
b2wgLypjYW5HZW5lcmF0ZUNhbGxTdGFjayovLCBKU0M6OkV4ZWNTdGF0ZSogc3RhdGUpCiB7Ci0g
ICAgaWYgKCFzdGF0ZSkKLSAgICAgICAgcmV0dXJuOwotCiAgICAgaWYgKG1fdHlwZSA9PSBNZXNz
YWdlVHlwZTo6RW5kR3JvdXApCiAgICAgICAgIHJldHVybjsKIAotICAgIC8vIEZJWE1FOiBTaG91
bGQgdGhpcyByZWFsbHkgYmUgdXNpbmcgImZvciBjb25zb2xlIiBpbiB0aGUgZ2VuZXJpYyBDb25z
b2xlTWVzc2FnZSBhdXRvZ2VuZXJhdGlvbj8gVGhpcyBjYW4gc2tpcCB0aGUgZmlyc3QgZnJhbWUu
Ci0gICAgbV9jYWxsU3RhY2sgPSBjcmVhdGVTY3JpcHRDYWxsU3RhY2tGb3JDb25zb2xlKHN0YXRl
LCBTY3JpcHRDYWxsU3RhY2s6Om1heENhbGxTdGFja1NpemVUb0NhcHR1cmUpOworICAgIGlmIChz
dGF0ZSkKKyAgICAgICAgbV9jYWxsU3RhY2sgPSBjcmVhdGVTY3JpcHRDYWxsU3RhY2tGb3JDb25z
b2xlKHN0YXRlKTsKKyAgICAvLyBlbHNlIGlmIChjYW5HZW5lcmF0ZUNhbGxTdGFjaykKKyAgICAv
LyAgICAgbV9jYWxsU3RhY2sgPSBjcmVhdGVTY3JpcHRDYWxsU3RhY2soU2NyaXB0Q2FsbFN0YWNr
OjptYXhDYWxsU3RhY2tTaXplVG9DYXB0dXJlLCB0cnVlKTsKKyAgICBlbHNlCisgICAgICAgIHJl
dHVybjsKIAotICAgIGlmIChjb25zdCBTY3JpcHRDYWxsRnJhbWUqIGZyYW1lID0gbV9jYWxsU3Rh
Y2stPmZpcnN0Tm9uTmF0aXZlQ2FsbEZyYW1lKCkpIHsKLSAgICAgICAgbV91cmwgPSBmcmFtZS0+
c291cmNlVVJMKCk7Ci0gICAgICAgIG1fbGluZSA9IGZyYW1lLT5saW5lTnVtYmVyKCk7Ci0gICAg
ICAgIG1fY29sdW1uID0gZnJhbWUtPmNvbHVtbk51bWJlcigpOworICAgIGlmIChtX2NhbGxTdGFj
ayAmJiBtX2NhbGxTdGFjay0+c2l6ZSgpKSB7CisgICAgICAgIGNvbnN0IFNjcmlwdENhbGxGcmFt
ZSYgZnJhbWUgPSBtX2NhbGxTdGFjay0+YXQoMCk7CisgICAgICAgIG1fdXJsID0gZnJhbWUuc291
cmNlVVJMKCk7CisgICAgICAgIG1fbGluZSA9IGZyYW1lLmxpbmVOdW1iZXIoKTsKKyAgICAgICAg
bV9jb2x1bW4gPSBmcmFtZS5jb2x1bW5OdW1iZXIoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0K
KworICAgIG1fY2FsbFN0YWNrLmNsZWFyKCk7CiB9CiAKIHN0YXRpYyBJbnNwZWN0b3I6OlR5cGVC
dWlsZGVyOjpDb25zb2xlOjpDb25zb2xlTWVzc2FnZTo6U291cmNlOjpFbnVtIG1lc3NhZ2VTb3Vy
Y2VWYWx1ZShNZXNzYWdlU291cmNlIHNvdXJjZSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9pbnNwZWN0b3IvQ29uc29sZU1lc3NhZ2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW5zcGVjdG9yL0NvbnNvbGVNZXNzYWdlLmgJKHJldmlzaW9uIDE2NDU1MykKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvQ29uc29sZU1lc3NhZ2UuaAkod29ya2lu
ZyBjb3B5KQpAQCAtNTEsMTAgKzUxLDEwIEBAIGNsYXNzIEpTX0VYUE9SVF9QUklWQVRFIENvbnNv
bGVNZXNzYWdlIHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShDb25zb2xlTWVzc2FnZSk7CiAg
ICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAgQ29uc29sZU1lc3NhZ2Uo
TWVzc2FnZVNvdXJjZSwgTWVzc2FnZVR5cGUsIE1lc3NhZ2VMZXZlbCwgY29uc3QgU3RyaW5nJiBt
ZXNzYWdlLCB1bnNpZ25lZCBsb25nIHJlcXVlc3RJZGVudGlmaWVyID0gMCk7Ci0gICAgQ29uc29s
ZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZSwgTWVzc2FnZVR5cGUsIE1lc3NhZ2VMZXZlbCwgY29uc3Qg
U3RyaW5nJiBtZXNzYWdlLCBjb25zdCBTdHJpbmcmIHVybCwgdW5zaWduZWQgbGluZSwgdW5zaWdu
ZWQgY29sdW1uLCBKU0M6OkV4ZWNTdGF0ZSogPSBudWxscHRyLCB1bnNpZ25lZCBsb25nIHJlcXVl
c3RJZGVudGlmaWVyID0gMCk7Ci0gICAgQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZSwgTWVz
c2FnZVR5cGUsIE1lc3NhZ2VMZXZlbCwgY29uc3QgU3RyaW5nJiBtZXNzYWdlLCBQYXNzUmVmUHRy
PFNjcmlwdENhbGxTdGFjaz4sIHVuc2lnbmVkIGxvbmcgcmVxdWVzdElkZW50aWZpZXIgPSAwKTsK
LSAgICBDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlLCBNZXNzYWdlVHlwZSwgTWVzc2FnZUxl
dmVsLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIFBhc3NSZWZQdHI8U2NyaXB0QXJndW1lbnRzPiwg
SlNDOjpFeGVjU3RhdGUqLCB1bnNpZ25lZCBsb25nIHJlcXVlc3RJZGVudGlmaWVyID0gMCk7Cisg
ICAgQ29uc29sZU1lc3NhZ2UoYm9vbCBjYW5HZW5lcmF0ZUNhbGxTdGFjaywgTWVzc2FnZVNvdXJj
ZSwgTWVzc2FnZVR5cGUsIE1lc3NhZ2VMZXZlbCwgY29uc3QgU3RyaW5nJiBtZXNzYWdlLCB1bnNp
Z25lZCBsb25nIHJlcXVlc3RJZGVudGlmaWVyID0gMCk7CisgICAgQ29uc29sZU1lc3NhZ2UoYm9v
bCBjYW5HZW5lcmF0ZUNhbGxTdGFjaywgTWVzc2FnZVNvdXJjZSwgTWVzc2FnZVR5cGUsIE1lc3Nh
Z2VMZXZlbCwgY29uc3QgU3RyaW5nJiBtZXNzYWdlLCBjb25zdCBTdHJpbmcmIHVybCwgdW5zaWdu
ZWQgbGluZSwgdW5zaWduZWQgY29sdW1uLCBKU0M6OkV4ZWNTdGF0ZSogPSBudWxscHRyLCB1bnNp
Z25lZCBsb25nIHJlcXVlc3RJZGVudGlmaWVyID0gMCk7CisgICAgQ29uc29sZU1lc3NhZ2UoYm9v
bCBjYW5HZW5lcmF0ZUNhbGxTdGFjaywgTWVzc2FnZVNvdXJjZSwgTWVzc2FnZVR5cGUsIE1lc3Nh
Z2VMZXZlbCwgY29uc3QgU3RyaW5nJiBtZXNzYWdlLCBQYXNzUmVmUHRyPFNjcmlwdENhbGxTdGFj
az4sIHVuc2lnbmVkIGxvbmcgcmVxdWVzdElkZW50aWZpZXIgPSAwKTsKKyAgICBDb25zb2xlTWVz
c2FnZShib29sIGNhbkdlbmVyYXRlQ2FsbFN0YWNrLCBNZXNzYWdlU291cmNlLCBNZXNzYWdlVHlw
ZSwgTWVzc2FnZUxldmVsLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIFBhc3NSZWZQdHI8U2NyaXB0
QXJndW1lbnRzPiwgSlNDOjpFeGVjU3RhdGUqLCB1bnNpZ25lZCBsb25nIHJlcXVlc3RJZGVudGlm
aWVyID0gMCk7CiAgICAgfkNvbnNvbGVNZXNzYWdlKCk7CiAKICAgICB2b2lkIGFkZFRvRnJvbnRl
bmQoSW5zcGVjdG9yQ29uc29sZUZyb250ZW5kRGlzcGF0Y2hlciosIEluamVjdGVkU2NyaXB0TWFu
YWdlciosIGJvb2wgZ2VuZXJhdGVQcmV2aWV3KTsKQEAgLTc0LDcgKzc0LDcgQEAgcHVibGljOgog
ICAgIHZvaWQgY2xlYXIoKTsKIAogcHJpdmF0ZToKLSAgICB2b2lkIGF1dG9nZW5lcmF0ZU1ldGFk
YXRhKEpTQzo6RXhlY1N0YXRlKiA9IG51bGxwdHIpOworICAgIHZvaWQgYXV0b2dlbmVyYXRlTWV0
YWRhdGEoYm9vbCBjYW5HZW5lcmF0ZUNhbGxTdGFjaywgSlNDOjpFeGVjU3RhdGUqID0gbnVsbHB0
cik7CiAKICAgICBNZXNzYWdlU291cmNlIG1fc291cmNlOwogICAgIE1lc3NhZ2VUeXBlIG1fdHlw
ZTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSlNHbG9iYWxPYmplY3RJ
bnNwZWN0b3JDb250cm9sbGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaW5zcGVjdG9yL0pTR2xvYmFsT2JqZWN0SW5zcGVjdG9yQ29udHJvbGxlci5jcHAJKHJldmlz
aW9uIDE2NDU1MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSlNHbG9iYWxP
YmplY3RJbnNwZWN0b3JDb250cm9sbGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjksNyArMjks
NiBAQAogI2lmIEVOQUJMRShJTlNQRUNUT1IpCiAKICNpbmNsdWRlICJDb21wbGV0aW9uLmgiCi0j
aW5jbHVkZSAiRXJyb3JIYW5kbGluZ1Njb3BlLmgiCiAjaW5jbHVkZSAiSW5qZWN0ZWRTY3JpcHRI
b3N0LmgiCiAjaW5jbHVkZSAiSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmgiCiAjaW5jbHVkZSAiSW5z
cGVjdG9yQWdlbnQuaCIKQEAgLTM5LDExICszOCw2IEBACiAjaW5jbHVkZSAiSlNHbG9iYWxPYmpl
Y3RDb25zb2xlQWdlbnQuaCIKICNpbmNsdWRlICJKU0dsb2JhbE9iamVjdERlYnVnZ2VyQWdlbnQu
aCIKICNpbmNsdWRlICJKU0dsb2JhbE9iamVjdFJ1bnRpbWVBZ2VudC5oIgotI2luY2x1ZGUgIlNj
cmlwdENhbGxTdGFjay5oIgotI2luY2x1ZGUgIlNjcmlwdENhbGxTdGFja0ZhY3RvcnkuaCIKLSNp
bmNsdWRlIDxjeHhhYmkuaD4KLSNpbmNsdWRlIDxkbGZjbi5oPgotI2luY2x1ZGUgPGV4ZWNpbmZv
Lmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBKU0M7CiAKQEAgLTU4LDggKzUyLDYgQEAgSlNHbG9iYWxP
YmplY3RJbnNwZWN0b3JDb250cm9sbGVyOjpKU0dsbwogICAgIGF1dG8gY29uc29sZUFnZW50ID0g
c3RkOjptYWtlX3VuaXF1ZTxKU0dsb2JhbE9iamVjdENvbnNvbGVBZ2VudD4obV9pbmplY3RlZFNj
cmlwdE1hbmFnZXIuZ2V0KCkpOwogICAgIGF1dG8gZGVidWdnZXJBZ2VudCA9IHN0ZDo6bWFrZV91
bmlxdWU8SlNHbG9iYWxPYmplY3REZWJ1Z2dlckFnZW50PihtX2luamVjdGVkU2NyaXB0TWFuYWdl
ci5nZXQoKSwgbV9nbG9iYWxPYmplY3QsIGNvbnNvbGVBZ2VudC5nZXQoKSk7CiAKLSAgICBtX2Nv
bnNvbGVBZ2VudCA9IGNvbnNvbGVBZ2VudC5nZXQoKTsKLQogICAgIHJ1bnRpbWVBZ2VudC0+c2V0
U2NyaXB0RGVidWdTZXJ2ZXIoJmRlYnVnZ2VyQWdlbnQtPnNjcmlwdERlYnVnU2VydmVyKCkpOwog
CiAgICAgbV9hZ2VudHMuYXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9yQWdlbnQ+KCkp
OwpAQCAtMTA5LDUxICsxMDEsNiBAQCB2b2lkIEpTR2xvYmFsT2JqZWN0SW5zcGVjdG9yQ29udHJv
bGxlcjo6CiAgICAgICAgIG1faW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXItPmRpc3BhdGNoKG1l
c3NhZ2UpOwogfQogCi12b2lkIEpTR2xvYmFsT2JqZWN0SW5zcGVjdG9yQ29udHJvbGxlcjo6YXBw
ZW5kQVBJQmFja3RyYWNlKFNjcmlwdENhbGxTdGFjayogY2FsbFN0YWNrKQotewotICAgIHN0YXRp
YyBjb25zdCBpbnQgZnJhbWVzVG9TaG93ID0gMzE7Ci0gICAgc3RhdGljIGNvbnN0IGludCBmcmFt
ZXNUb1NraXAgPSAzOyAvLyBXVEZHZXRCYWNrdHJhY2UsIGFwcGVuZEFQSUJhY2t0cmFjZSwgcmVw
b3J0QVBJRXhjZXB0aW9uLgotCi0gICAgdm9pZCogc2FtcGxlc1tmcmFtZXNUb1Nob3cgKyBmcmFt
ZXNUb1NraXBdOwotICAgIGludCBmcmFtZXMgPSBmcmFtZXNUb1Nob3cgKyBmcmFtZXNUb1NraXA7
Ci0gICAgV1RGR2V0QmFja3RyYWNlKHNhbXBsZXMsICZmcmFtZXMpOwotCi0gICAgdm9pZCoqIHN0
YWNrID0gc2FtcGxlcyArIGZyYW1lc1RvU2tpcDsKLSAgICBpbnQgc2l6ZSA9IGZyYW1lcyAtIGZy
YW1lc1RvU2tpcDsKLSAgICBmb3IgKGludCBpID0gMDsgaSA8IHNpemU7ICsraSkgewotICAgICAg
ICBjb25zdCBjaGFyKiBtYW5nbGVkTmFtZSA9IG51bGxwdHI7Ci0gICAgICAgIGNoYXIqIGN4YURl
bWFuZ2xlZCA9IG51bGxwdHI7Ci0gICAgICAgIERsX2luZm8gaW5mbzsKLSAgICAgICAgaWYgKGRs
YWRkcihzdGFja1tpXSwgJmluZm8pICYmIGluZm8uZGxpX3NuYW1lKQotICAgICAgICAgICAgbWFu
Z2xlZE5hbWUgPSBpbmZvLmRsaV9zbmFtZTsKLSAgICAgICAgaWYgKG1hbmdsZWROYW1lKQotICAg
ICAgICAgICAgY3hhRGVtYW5nbGVkID0gYWJpOjpfX2N4YV9kZW1hbmdsZShtYW5nbGVkTmFtZSwg
bnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0cik7Ci0gICAgICAgIGlmIChtYW5nbGVkTmFtZSB8fCBj
eGFEZW1hbmdsZWQpCi0gICAgICAgICAgICBjYWxsU3RhY2stPmFwcGVuZChTY3JpcHRDYWxsRnJh
bWUoY3hhRGVtYW5nbGVkID8gY3hhRGVtYW5nbGVkIDogbWFuZ2xlZE5hbWUsIEFTQ0lJTGl0ZXJh
bCgiW25hdGl2ZSBjb2RlXSIpLCAwLCAwKSk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIGNh
bGxTdGFjay0+YXBwZW5kKFNjcmlwdENhbGxGcmFtZShBU0NJSUxpdGVyYWwoIj8iKSwgQVNDSUlM
aXRlcmFsKCJbbmF0aXZlIGNvZGVdIiksIDAsIDApKTsKLSAgICAgICAgZnJlZShjeGFEZW1hbmds
ZWQpOwotICAgIH0KLX0KLQotdm9pZCBKU0dsb2JhbE9iamVjdEluc3BlY3RvckNvbnRyb2xsZXI6
OnJlcG9ydEFQSUV4Y2VwdGlvbihFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgZXhjZXB0aW9uKQot
ewotICAgIGlmIChpc1Rlcm1pbmF0ZWRFeGVjdXRpb25FeGNlcHRpb24oZXhjZXB0aW9uKSkKLSAg
ICAgICAgcmV0dXJuOwotCi0gICAgRXJyb3JIYW5kbGluZ1Njb3BlIGVycm9yU2NvcGUoZXhlYy0+
dm0oKSk7Ci0KLSAgICBSZWZQdHI8U2NyaXB0Q2FsbFN0YWNrPiBjYWxsU3RhY2sgPSBjcmVhdGVT
Y3JpcHRDYWxsU3RhY2tGcm9tRXhjZXB0aW9uKGV4ZWMsIGV4Y2VwdGlvbiwgU2NyaXB0Q2FsbFN0
YWNrOjptYXhDYWxsU3RhY2tTaXplVG9DYXB0dXJlKTsKLSAgICBhcHBlbmRBUElCYWNrdHJhY2Uo
Y2FsbFN0YWNrLmdldCgpKTsKLQotICAgIC8vIEZJWE1FOiA8aHR0cDovL3dlYmtpdC5vcmcvYi8x
MTUwODc+IFdlYiBJbnNwZWN0b3I6IFNob3VsZCBub3QgZXZhbHVhdGUgSmF2YVNjcmlwdCBoYW5k
bGluZyBleGNlcHRpb25zCi0gICAgLy8gSWYgdGhpcyBpcyBhIGN1c3RvbSBleGNlcHRpb24gb2Jq
ZWN0LCBjYWxsIHRvU3RyaW5nIG9uIGl0IHRvIHRyeSBhbmQgZ2V0IGEgbmljZSBzdHJpbmcgcmVw
cmVzZW50YXRpb24gZm9yIHRoZSBleGNlcHRpb24uCi0gICAgU3RyaW5nIGVycm9yTWVzc2FnZSA9
IGV4Y2VwdGlvbi50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYyk7Ci0gICAgZXhlYy0+Y2xlYXJF
eGNlcHRpb24oKTsKLQotICAgIG1fY29uc29sZUFnZW50LT5hZGRNZXNzYWdlVG9Db25zb2xlKE1l
c3NhZ2VTb3VyY2U6OkpTLCBNZXNzYWdlVHlwZTo6TG9nLCBNZXNzYWdlTGV2ZWw6OkVycm9yLCBl
cnJvck1lc3NhZ2UsIGNhbGxTdGFjayk7Ci19Ci0KIEluc3BlY3RvckZ1bmN0aW9uQ2FsbEhhbmRs
ZXIgSlNHbG9iYWxPYmplY3RJbnNwZWN0b3JDb250cm9sbGVyOjpmdW5jdGlvbkNhbGxIYW5kbGVy
KCkgY29uc3QKIHsKICAgICByZXR1cm4gSlNDOjpjYWxsOwpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2luc3BlY3Rvci9KU0dsb2JhbE9iamVjdEluc3BlY3RvckNvbnRyb2xsZXIuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0pTR2xvYmFsT2JqZWN0
SW5zcGVjdG9yQ29udHJvbGxlci5oCShyZXZpc2lvbiAxNjQ1NTMpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW5zcGVjdG9yL0pTR2xvYmFsT2JqZWN0SW5zcGVjdG9yQ29udHJvbGxlci5oCSh3
b3JraW5nIGNvcHkpCkBAIC0zNywxNiArMzcsMTMgQEAKIG5hbWVzcGFjZSBKU0MgewogY2xhc3Mg
RXhlY1N0YXRlOwogY2xhc3MgSlNHbG9iYWxPYmplY3Q7Ci1jbGFzcyBKU1ZhbHVlOwogfQogCiBu
YW1lc3BhY2UgSW5zcGVjdG9yIHsKIAogY2xhc3MgSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyOwogY2xh
c3MgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI7Ci1jbGFzcyBJbnNwZWN0b3JDb25zb2xlQWdl
bnQ7CiBjbGFzcyBJbnNwZWN0b3JGcm9udGVuZENoYW5uZWw7Ci1jbGFzcyBTY3JpcHRDYWxsU3Rh
Y2s7CiAKIGNsYXNzIEpTR2xvYmFsT2JqZWN0SW5zcGVjdG9yQ29udHJvbGxlciBmaW5hbCA6IHB1
YmxpYyBJbnNwZWN0b3JFbnZpcm9ubWVudCB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoSlNH
bG9iYWxPYmplY3RJbnNwZWN0b3JDb250cm9sbGVyKTsKQEAgLTYxLDggKzU4LDYgQEAgcHVibGlj
OgogCiAgICAgdm9pZCBnbG9iYWxPYmplY3REZXN0cm95ZWQoKTsKIAotICAgIHZvaWQgcmVwb3J0
QVBJRXhjZXB0aW9uKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpKU1ZhbHVlIGV4Y2VwdGlvbik7Ci0K
ICAgICB2aXJ0dWFsIGJvb2wgZGV2ZWxvcGVyRXh0cmFzRW5hYmxlZCgpIGNvbnN0IG92ZXJyaWRl
IHsgcmV0dXJuIHRydWU7IH0KICAgICB2aXJ0dWFsIGJvb2wgY2FuQWNjZXNzSW5zcGVjdGVkU2Ny
aXB0U3RhdGUoSlNDOjpFeGVjU3RhdGUqKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9
CiAgICAgdmlydHVhbCBJbnNwZWN0b3JGdW5jdGlvbkNhbGxIYW5kbGVyIGZ1bmN0aW9uQ2FsbEhh
bmRsZXIoKSBjb25zdCBvdmVycmlkZTsKQEAgLTcxLDExICs2Niw4IEBAIHB1YmxpYzoKICAgICB2
aXJ0dWFsIHZvaWQgZGlkQ2FsbEluamVjdGVkU2NyaXB0RnVuY3Rpb24oSlNDOjpFeGVjU3RhdGUq
KSBvdmVycmlkZSB7IH0KIAogcHJpdmF0ZToKLSAgICB2b2lkIGFwcGVuZEFQSUJhY2t0cmFjZShT
Y3JpcHRDYWxsU3RhY2sqIGNhbGxTdGFjayk7Ci0KICAgICBKU0M6OkpTR2xvYmFsT2JqZWN0JiBt
X2dsb2JhbE9iamVjdDsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8SW5qZWN0ZWRTY3JpcHRNYW5hZ2Vy
PiBtX2luamVjdGVkU2NyaXB0TWFuYWdlcjsKLSAgICBJbnNwZWN0b3JDb25zb2xlQWdlbnQqIG1f
Y29uc29sZUFnZW50OwogICAgIEluc3BlY3RvckFnZW50UmVnaXN0cnkgbV9hZ2VudHM7CiAgICAg
SW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiBtX2luc3BlY3RvckZyb250ZW5kQ2hhbm5lbDsKICAg
ICBSZWZQdHI8SW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI+IG1faW5zcGVjdG9yQmFja2VuZERp
c3BhdGNoZXI7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL1NjcmlwdENh
bGxTdGFjay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rv
ci9TY3JpcHRDYWxsU3RhY2suY3BwCShyZXZpc2lvbiAxNjQ1NTMpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW5zcGVjdG9yL1NjcmlwdENhbGxTdGFjay5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTM2LDIwICszNiwxMSBAQAogCiBuYW1lc3BhY2UgSW5zcGVjdG9yIHsKIAotUGFzc1JlZlB0cjxT
Y3JpcHRDYWxsU3RhY2s+IFNjcmlwdENhbGxTdGFjazo6Y3JlYXRlKCkKLXsKLSAgICByZXR1cm4g
YWRvcHRSZWYobmV3IFNjcmlwdENhbGxTdGFjayk7Ci19Ci0KIFBhc3NSZWZQdHI8U2NyaXB0Q2Fs
bFN0YWNrPiBTY3JpcHRDYWxsU3RhY2s6OmNyZWF0ZShWZWN0b3I8U2NyaXB0Q2FsbEZyYW1lPiYg
ZnJhbWVzKQogewogICAgIHJldHVybiBhZG9wdFJlZihuZXcgU2NyaXB0Q2FsbFN0YWNrKGZyYW1l
cykpOwogfQogCi1TY3JpcHRDYWxsU3RhY2s6OlNjcmlwdENhbGxTdGFjaygpCi17Ci19Ci0KIFNj
cmlwdENhbGxTdGFjazo6U2NyaXB0Q2FsbFN0YWNrKFZlY3RvcjxTY3JpcHRDYWxsRnJhbWU+JiBm
cmFtZXMpCiB7CiAgICAgbV9mcmFtZXMuc3dhcChmcmFtZXMpOwpAQCAtNzAsMjUgKzYxLDYgQEAg
c2l6ZV90IFNjcmlwdENhbGxTdGFjazo6c2l6ZSgpIGNvbnN0CiAgICAgcmV0dXJuIG1fZnJhbWVz
LnNpemUoKTsKIH0KIAotY29uc3QgU2NyaXB0Q2FsbEZyYW1lKiBTY3JpcHRDYWxsU3RhY2s6OmZp
cnN0Tm9uTmF0aXZlQ2FsbEZyYW1lKCkgY29uc3QKLXsKLSAgICBpZiAoIW1fZnJhbWVzLnNpemUo
KSkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0KLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8
IG1fZnJhbWVzLnNpemUoKTsgKytpKSB7Ci0gICAgICAgIGNvbnN0IFNjcmlwdENhbGxGcmFtZSYg
ZnJhbWUgPSBtX2ZyYW1lc1tpXTsKLSAgICAgICAgaWYgKGZyYW1lLnNvdXJjZVVSTCgpICE9ICJb
bmF0aXZlIGNvZGVdIikKLSAgICAgICAgICAgIHJldHVybiAmZnJhbWU7Ci0gICAgfQotCi0gICAg
cmV0dXJuIG51bGxwdHI7Ci19Ci0KLXZvaWQgU2NyaXB0Q2FsbFN0YWNrOjphcHBlbmQoY29uc3Qg
U2NyaXB0Q2FsbEZyYW1lJiBmcmFtZSkKLXsKLSAgICBtX2ZyYW1lcy5hcHBlbmQoZnJhbWUpOwot
fQotCiBib29sIFNjcmlwdENhbGxTdGFjazo6aXNFcXVhbChTY3JpcHRDYWxsU3RhY2sqIG8pIGNv
bnN0CiB7CiAgICAgaWYgKCFvKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rv
ci9TY3JpcHRDYWxsU3RhY2suaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aW5zcGVjdG9yL1NjcmlwdENhbGxTdGFjay5oCShyZXZpc2lvbiAxNjQ1NTMpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL1NjcmlwdENhbGxTdGFjay5oCSh3b3JraW5nIGNvcHkp
CkBAIC00Nyw3ICs0Nyw2IEBAIGNsYXNzIEpTX0VYUE9SVF9QUklWQVRFIFNjcmlwdENhbGxTdGFj
ayAKIHB1YmxpYzoKICAgICBzdGF0aWMgY29uc3Qgc2l6ZV90IG1heENhbGxTdGFja1NpemVUb0Nh
cHR1cmUgPSAyMDA7CiAgICAgCi0gICAgc3RhdGljIFBhc3NSZWZQdHI8U2NyaXB0Q2FsbFN0YWNr
PiBjcmVhdGUoKTsKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxTY3JpcHRDYWxsU3RhY2s+IGNyZWF0
ZShWZWN0b3I8U2NyaXB0Q2FsbEZyYW1lPiYpOwogCiAgICAgflNjcmlwdENhbGxTdGFjaygpOwpA
QCAtNTUsMTAgKzU0LDYgQEAgcHVibGljOgogICAgIGNvbnN0IFNjcmlwdENhbGxGcmFtZSYgYXQo
c2l6ZV90KSBjb25zdDsKICAgICBzaXplX3Qgc2l6ZSgpIGNvbnN0OwogCi0gICAgY29uc3QgU2Ny
aXB0Q2FsbEZyYW1lKiBmaXJzdE5vbk5hdGl2ZUNhbGxGcmFtZSgpIGNvbnN0OwotCi0gICAgdm9p
ZCBhcHBlbmQoY29uc3QgU2NyaXB0Q2FsbEZyYW1lJik7Ci0KICAgICBib29sIGlzRXF1YWwoU2Ny
aXB0Q2FsbFN0YWNrKikgY29uc3Q7CiAKICNpZiBFTkFCTEUoSU5TUEVDVE9SKQpAQCAtNjYsNyAr
NjEsNiBAQCBwdWJsaWM6CiAjZW5kaWYKIAogcHJpdmF0ZToKLSAgICBTY3JpcHRDYWxsU3RhY2so
KTsKICAgICBTY3JpcHRDYWxsU3RhY2soVmVjdG9yPFNjcmlwdENhbGxGcmFtZT4mKTsKIAogICAg
IFZlY3RvcjxTY3JpcHRDYWxsRnJhbWU+IG1fZnJhbWVzOwpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2luc3BlY3Rvci9TY3JpcHRDYWxsU3RhY2tGYWN0b3J5LmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL1NjcmlwdENhbGxTdGFja0ZhY3Rvcnku
Y3BwCShyZXZpc2lvbiAxNjQ1NTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9y
L1NjcmlwdENhbGxTdGFja0ZhY3RvcnkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04MywyNSArODMs
MjggQEAgcHJpdmF0ZToKICAgICBzaXplX3QgbV9yZW1haW5pbmdDYXBhY2l0eUZvckZyYW1lQ2Fw
dHVyZTsKIH07CiAKLVBhc3NSZWZQdHI8U2NyaXB0Q2FsbFN0YWNrPiBjcmVhdGVTY3JpcHRDYWxs
U3RhY2soSlNDOjpFeGVjU3RhdGUqIGV4ZWMsIHNpemVfdCBtYXhTdGFja1NpemUpCitQYXNzUmVm
UHRyPFNjcmlwdENhbGxTdGFjaz4gY3JlYXRlU2NyaXB0Q2FsbFN0YWNrKEpTQzo6RXhlY1N0YXRl
KiBleGVjLCBzaXplX3QgbWF4U3RhY2tTaXplLCBib29sIGVtcHR5SXNBbGxvd2VkKQogewotICAg
IGlmICghZXhlYykKLSAgICAgICAgcmV0dXJuIFNjcmlwdENhbGxTdGFjazo6Y3JlYXRlKCk7Ci0K
ICAgICBWZWN0b3I8U2NyaXB0Q2FsbEZyYW1lPiBmcmFtZXM7CiAKLSAgICBDYWxsRnJhbWUqIGZy
YW1lID0gZXhlYy0+dm0oKS50b3BDYWxsRnJhbWU7Ci0gICAgQ3JlYXRlU2NyaXB0Q2FsbFN0YWNr
RnVuY3RvciBmdW5jdG9yKGZhbHNlLCBmcmFtZXMsIG1heFN0YWNrU2l6ZSk7Ci0gICAgZnJhbWUt
Pml0ZXJhdGUoZnVuY3Rvcik7CisgICAgaWYgKGV4ZWMpIHsKKyAgICAgICAgQ2FsbEZyYW1lKiBm
cmFtZSA9IGV4ZWMtPnZtKCkudG9wQ2FsbEZyYW1lOworICAgICAgICBDcmVhdGVTY3JpcHRDYWxs
U3RhY2tGdW5jdG9yIGZ1bmN0b3IoZmFsc2UsIGZyYW1lcywgbWF4U3RhY2tTaXplKTsKKyAgICAg
ICAgZnJhbWUtPml0ZXJhdGUoZnVuY3Rvcik7CisgICAgfQorCisgICAgaWYgKGZyYW1lcy5pc0Vt
cHR5KCkgJiYgIWVtcHR5SXNBbGxvd2VkKSB7CisgICAgICAgIC8vIE5vIGZyYW1lcyBmb3VuZC4g
SXQgbWF5IGhhcHBlbiBpbiB0aGUgY2FzZSB3aGVyZQorICAgICAgICAvLyBhIGJvdW5kIGZ1bmN0
aW9uIGlzIGNhbGxlZCBmcm9tIG5hdGl2ZSBjb2RlIGZvciBleGFtcGxlLgorICAgICAgICAvLyBG
YWxsYmFjayB0byBzZXR0aW5nIGxpbmVOdW1iZXIgdG8gMCwgYW5kIHNvdXJjZSBhbmQgZnVuY3Rp
b24gbmFtZSB0byAidW5kZWZpbmVkIi4KKyAgICAgICAgZnJhbWVzLmFwcGVuZChTY3JpcHRDYWxs
RnJhbWUoQVNDSUlMaXRlcmFsKCJ1bmRlZmluZWQiKSwgQVNDSUlMaXRlcmFsKCJ1bmRlZmluZWQi
KSwgMCwgMCkpOworICAgIH0KIAogICAgIHJldHVybiBTY3JpcHRDYWxsU3RhY2s6OmNyZWF0ZShm
cmFtZXMpOwogfQogCi1QYXNzUmVmUHRyPFNjcmlwdENhbGxTdGFjaz4gY3JlYXRlU2NyaXB0Q2Fs
bFN0YWNrRm9yQ29uc29sZShKU0M6OkV4ZWNTdGF0ZSogZXhlYywgc2l6ZV90IG1heFN0YWNrU2l6
ZSkKK1Bhc3NSZWZQdHI8U2NyaXB0Q2FsbFN0YWNrPiBjcmVhdGVTY3JpcHRDYWxsU3RhY2soSlND
OjpFeGVjU3RhdGUqIGV4ZWMsIHNpemVfdCBtYXhTdGFja1NpemUpCiB7Ci0gICAgaWYgKCFleGVj
KQotICAgICAgICByZXR1cm4gU2NyaXB0Q2FsbFN0YWNrOjpjcmVhdGUoKTsKLQogICAgIFZlY3Rv
cjxTY3JpcHRDYWxsRnJhbWU+IGZyYW1lczsKIAogICAgIENhbGxGcmFtZSogZnJhbWUgPSBleGVj
LT52bSgpLnRvcENhbGxGcmFtZTsKQEAgLTExNiwxNiArMTE5LDEwIEBAIFBhc3NSZWZQdHI8U2Ny
aXB0Q2FsbFN0YWNrPiBjcmVhdGVTY3JpcHQKICAgICByZXR1cm4gU2NyaXB0Q2FsbFN0YWNrOjpj
cmVhdGUoZnJhbWVzKTsKIH0KIAotc3RhdGljIHZvaWQgZXh0cmFjdFNvdXJjZUluZm9ybWF0aW9u
RnJvbUV4Y2VwdGlvbihKU0M6OkV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIGV4Y2VwdGlvbk9i
amVjdCwgaW50KiBsaW5lTnVtYmVyLCBpbnQqIGNvbHVtbk51bWJlciwgU3RyaW5nKiBzb3VyY2VV
UkwpCitQYXNzUmVmUHRyPFNjcmlwdENhbGxTdGFjaz4gY3JlYXRlU2NyaXB0Q2FsbFN0YWNrRm9y
Q29uc29sZShKU0M6OkV4ZWNTdGF0ZSogZXhlYykKIHsKLSAgICAvLyBGSVhNRTogPGh0dHA6Ly93
ZWJraXQub3JnL2IvMTE1MDg3PiBXZWIgSW5zcGVjdG9yOiBTaG91bGQgbm90IG5lZWQgdG8gZXZh
bHVhdGUgSmF2YVNjcmlwdCBoYW5kbGluZyBleGNlcHRpb25zCi0gICAgSlNWYWx1ZSBsaW5lVmFs
dWUgPSBleGNlcHRpb25PYmplY3QtPmdldERpcmVjdChleGVjLT52bSgpLCBJZGVudGlmaWVyKGV4
ZWMsICJsaW5lIikpOwotICAgICpsaW5lTnVtYmVyID0gbGluZVZhbHVlICYmIGxpbmVWYWx1ZS5p
c051bWJlcigpID8gaW50KGxpbmVWYWx1ZS50b051bWJlcihleGVjKSkgOiAwOwotICAgIEpTVmFs
dWUgY29sdW1uVmFsdWUgPSBleGNlcHRpb25PYmplY3QtPmdldERpcmVjdChleGVjLT52bSgpLCBJ
ZGVudGlmaWVyKGV4ZWMsICJjb2x1bW4iKSk7Ci0gICAgKmNvbHVtbk51bWJlciA9IGNvbHVtblZh
bHVlICYmIGNvbHVtblZhbHVlLmlzTnVtYmVyKCkgPyBpbnQoY29sdW1uVmFsdWUudG9OdW1iZXIo
ZXhlYykpIDogMDsKLSAgICBKU1ZhbHVlIHNvdXJjZVVSTFZhbHVlID0gZXhjZXB0aW9uT2JqZWN0
LT5nZXREaXJlY3QoZXhlYy0+dm0oKSwgSWRlbnRpZmllcihleGVjLCAic291cmNlVVJMIikpOwot
ICAgICpzb3VyY2VVUkwgPSBzb3VyY2VVUkxWYWx1ZSAmJiBzb3VyY2VVUkxWYWx1ZS5pc1N0cmlu
ZygpID8gc291cmNlVVJMVmFsdWUudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpIDogU3RyaW5n
KCJ1bmRlZmluZWQiKTsKLSAgICBleGVjLT5jbGVhckV4Y2VwdGlvbigpOworICAgIC8vIEZJWE1F
OiBDYWxsZXIgc2hvdWxkIHVzZSBjcmVhdGVTY3JpcHRDYWxsU3RhY2sgYWx0ZXJuYXRpdmUgd2l0
aCB0aGUgZXhlYyBhbmQgYXBwcm9wcmlhdGUgbWF4LgorICAgIHJldHVybiBjcmVhdGVTY3JpcHRD
YWxsU3RhY2soZXhlYywgU2NyaXB0Q2FsbFN0YWNrOjptYXhDYWxsU3RhY2tTaXplVG9DYXB0dXJl
KTsKIH0KIAogUGFzc1JlZlB0cjxTY3JpcHRDYWxsU3RhY2s+IGNyZWF0ZVNjcmlwdENhbGxTdGFj
a0Zyb21FeGNlcHRpb24oSlNDOjpFeGVjU3RhdGUqIGV4ZWMsIEpTQzo6SlNWYWx1ZSYgZXhjZXB0
aW9uLCBzaXplX3QgbWF4U3RhY2tTaXplKQpAQCAtMTMzLDI4ICsxMzAsMjkgQEAgUGFzc1JlZlB0
cjxTY3JpcHRDYWxsU3RhY2s+IGNyZWF0ZVNjcmlwdAogICAgIFZlY3RvcjxTY3JpcHRDYWxsRnJh
bWU+IGZyYW1lczsKICAgICBSZWZDb3VudGVkQXJyYXk8U3RhY2tGcmFtZT4gc3RhY2tUcmFjZSA9
IGV4ZWMtPnZtKCkuZXhjZXB0aW9uU3RhY2soKTsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8
IHN0YWNrVHJhY2Uuc2l6ZSgpICYmIGkgPCBtYXhTdGFja1NpemU7IGkrKykgeworICAgICAgICBp
ZiAoIXN0YWNrVHJhY2VbaV0uY2FsbGVlICYmIGZyYW1lcy5zaXplKCkpCisgICAgICAgICAgICBi
cmVhazsKKwogICAgICAgICB1bnNpZ25lZCBsaW5lOwogICAgICAgICB1bnNpZ25lZCBjb2x1bW47
CiAgICAgICAgIHN0YWNrVHJhY2VbaV0uY29tcHV0ZUxpbmVBbmRDb2x1bW4obGluZSwgY29sdW1u
KTsKICAgICAgICAgU3RyaW5nIGZ1bmN0aW9uTmFtZSA9IHN0YWNrVHJhY2VbaV0uZnJpZW5kbHlG
dW5jdGlvbk5hbWUoZXhlYyk7Ci0gICAgICAgIGZyYW1lcy5hcHBlbmQoU2NyaXB0Q2FsbEZyYW1l
KGZ1bmN0aW9uTmFtZSwgc3RhY2tUcmFjZVtpXS5mcmllbmRseVNvdXJjZVVSTCgpLCBsaW5lLCBj
b2x1bW4pKTsKKyAgICAgICAgZnJhbWVzLmFwcGVuZChTY3JpcHRDYWxsRnJhbWUoZnVuY3Rpb25O
YW1lLCBzdGFja1RyYWNlW2ldLnNvdXJjZVVSTCwgbGluZSwgY29sdW1uKSk7CiAgICAgfQogCi0g
ICAgLy8gRmFsbGJhY2sgdG8gZ2V0dGluZyBhdCBsZWFzdCB0aGUgbGluZSBhbmQgc291cmNlVVJM
IGZyb20gdGhlIGV4Y2VwdGlvbiBvYmplY3QgaWYgaXQgaGFzIHZhbHVlcyBhbmQgdGhlIGV4Y2Vw
dGlvblN0YWNrIGRvZXNuJ3QuCi0gICAgSlNPYmplY3QqIGV4Y2VwdGlvbk9iamVjdCA9IGV4Y2Vw
dGlvbi50b09iamVjdChleGVjKTsKLSAgICBpZiAoZXhjZXB0aW9uLmlzT2JqZWN0KCkpIHsKLSAg
ICAgICAgaW50IGxpbmVOdW1iZXI7Ci0gICAgICAgIGludCBjb2x1bW5OdW1iZXI7Ci0gICAgICAg
IFN0cmluZyBleGNlcHRpb25Tb3VyY2VVUkw7Ci0gICAgICAgIGlmICghZnJhbWVzLnNpemUoKSkg
ewotICAgICAgICAgICAgZXh0cmFjdFNvdXJjZUluZm9ybWF0aW9uRnJvbUV4Y2VwdGlvbihleGVj
LCBleGNlcHRpb25PYmplY3QsICZsaW5lTnVtYmVyLCAmY29sdW1uTnVtYmVyLCAmZXhjZXB0aW9u
U291cmNlVVJMKTsKLSAgICAgICAgICAgIGZyYW1lcy5hcHBlbmQoU2NyaXB0Q2FsbEZyYW1lKFN0
cmluZygpLCBleGNlcHRpb25Tb3VyY2VVUkwsIGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlcikpOwot
ICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgaWYgKHN0YWNrVHJhY2VbMF0uc291cmNlVVJM
LmlzRW1wdHkoKSkgewotICAgICAgICAgICAgICAgIGNvbnN0IFNjcmlwdENhbGxGcmFtZSYgZmly
c3RDYWxsRnJhbWUgPSBmcmFtZXMuZmlyc3QoKTsKLSAgICAgICAgICAgICAgICBleHRyYWN0U291
cmNlSW5mb3JtYXRpb25Gcm9tRXhjZXB0aW9uKGV4ZWMsIGV4Y2VwdGlvbk9iamVjdCwgJmxpbmVO
dW1iZXIsICZjb2x1bW5OdW1iZXIsICZleGNlcHRpb25Tb3VyY2VVUkwpOwotICAgICAgICAgICAg
ICAgIGZyYW1lc1swXSA9IFNjcmlwdENhbGxGcmFtZShmaXJzdENhbGxGcmFtZS5mdW5jdGlvbk5h
bWUoKSwgZXhjZXB0aW9uU291cmNlVVJMLCBsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIpOwotICAg
ICAgICAgICAgfQorICAgIC8vIEZJWE1FOiA8aHR0cDovL3dlYmtpdC5vcmcvYi8xMTUwODc+IFdl
YiBJbnNwZWN0b3I6IFdlYkNvcmU6OnJlcG9ydEV4Y2VwdGlvbiBzaG91bGQgbm90IGV2YWx1YXRl
IEphdmFTY3JpcHQgaGFuZGxpbmcgZXhjZXB0aW9ucworICAgIC8vIEZhbGxiYWNrIHRvIGdldHRp
bmcgYXQgbGVhc3QgdGhlIGxpbmUgYW5kIHNvdXJjZVVSTCBmcm9tIHRoZSBleGNlcHRpb24gaWYg
aXQgaGFzIHZhbHVlcyBhbmQgdGhlIGV4Y2VwdGlvblN0YWNrIGRvZXNuJ3QuCisgICAgaWYgKGZy
YW1lcy5zaXplKCkgPiAwKSB7CisgICAgICAgIGNvbnN0IFNjcmlwdENhbGxGcmFtZSYgZmlyc3RD
YWxsRnJhbWUgPSBmcmFtZXMuZmlyc3QoKTsKKyAgICAgICAgSlNPYmplY3QqIGV4Y2VwdGlvbk9i
amVjdCA9IGV4Y2VwdGlvbi50b09iamVjdChleGVjKTsKKyAgICAgICAgaWYgKGV4Y2VwdGlvbi5p
c09iamVjdCgpICYmIGZpcnN0Q2FsbEZyYW1lLnNvdXJjZVVSTCgpLmlzRW1wdHkoKSkgeworICAg
ICAgICAgICAgSlNWYWx1ZSBsaW5lVmFsdWUgPSBleGNlcHRpb25PYmplY3QtPmdldERpcmVjdChl
eGVjLT52bSgpLCBJZGVudGlmaWVyKGV4ZWMsICJsaW5lIikpOworICAgICAgICAgICAgaW50IGxp
bmVOdW1iZXIgPSBsaW5lVmFsdWUgJiYgbGluZVZhbHVlLmlzTnVtYmVyKCkgPyBpbnQobGluZVZh
bHVlLnRvTnVtYmVyKGV4ZWMpKSA6IDA7CisgICAgICAgICAgICBKU1ZhbHVlIGNvbHVtblZhbHVl
ID0gZXhjZXB0aW9uT2JqZWN0LT5nZXREaXJlY3QoZXhlYy0+dm0oKSwgSWRlbnRpZmllcihleGVj
LCAiY29sdW1uIikpOworICAgICAgICAgICAgaW50IGNvbHVtbk51bWJlciA9IGNvbHVtblZhbHVl
ICYmIGNvbHVtblZhbHVlLmlzTnVtYmVyKCkgPyBpbnQoY29sdW1uVmFsdWUudG9OdW1iZXIoZXhl
YykpIDogMDsKKyAgICAgICAgICAgIEpTVmFsdWUgc291cmNlVVJMVmFsdWUgPSBleGNlcHRpb25P
YmplY3QtPmdldERpcmVjdChleGVjLT52bSgpLCBJZGVudGlmaWVyKGV4ZWMsICJzb3VyY2VVUkwi
KSk7CisgICAgICAgICAgICBTdHJpbmcgZXhjZXB0aW9uU291cmNlVVJMID0gc291cmNlVVJMVmFs
dWUgJiYgc291cmNlVVJMVmFsdWUuaXNTdHJpbmcoKSA/IHNvdXJjZVVSTFZhbHVlLnRvU3RyaW5n
KGV4ZWMpLT52YWx1ZShleGVjKSA6IEFTQ0lJTGl0ZXJhbCgidW5kZWZpbmVkIik7CisgICAgICAg
ICAgICBmcmFtZXNbMF0gPSBTY3JpcHRDYWxsRnJhbWUoZmlyc3RDYWxsRnJhbWUuZnVuY3Rpb25O
YW1lKCksIGV4Y2VwdGlvblNvdXJjZVVSTCwgbGluZU51bWJlciwgY29sdW1uTnVtYmVyKTsKICAg
ICAgICAgfQogICAgIH0KIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9T
Y3JpcHRDYWxsU3RhY2tGYWN0b3J5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2luc3BlY3Rvci9TY3JpcHRDYWxsU3RhY2tGYWN0b3J5LmgJKHJldmlzaW9uIDE2NDU1MykK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvU2NyaXB0Q2FsbFN0YWNrRmFjdG9y
eS5oCSh3b3JraW5nIGNvcHkpCkBAIC00NSw4ICs0NSw5IEBAIGNsYXNzIFNjcmlwdEFyZ3VtZW50
czsKIGNsYXNzIFNjcmlwdENhbGxTdGFjazsKIAogLy8gRklYTUU6IFRoZSBzdWJ0bGUgZGlmZmVy
ZW5jZXMgYmV0d2VlbiB0aGVzZSBzaG91bGQgYmUgZWxpbWluYXRlZC4KK0pTX0VYUE9SVF9QUklW
QVRFIFBhc3NSZWZQdHI8U2NyaXB0Q2FsbFN0YWNrPiBjcmVhdGVTY3JpcHRDYWxsU3RhY2soSlND
OjpFeGVjU3RhdGUqLCBzaXplX3QgbWF4U3RhY2tTaXplLCBib29sIGVtcHR5SXNBbGxvd2VkKTsK
IEpTX0VYUE9SVF9QUklWQVRFIFBhc3NSZWZQdHI8U2NyaXB0Q2FsbFN0YWNrPiBjcmVhdGVTY3Jp
cHRDYWxsU3RhY2soSlNDOjpFeGVjU3RhdGUqLCBzaXplX3QgbWF4U3RhY2tTaXplKTsKLUpTX0VY
UE9SVF9QUklWQVRFIFBhc3NSZWZQdHI8U2NyaXB0Q2FsbFN0YWNrPiBjcmVhdGVTY3JpcHRDYWxs
U3RhY2tGb3JDb25zb2xlKEpTQzo6RXhlY1N0YXRlKiwgc2l6ZV90IG1heFN0YWNrU2l6ZSk7CitK
U19FWFBPUlRfUFJJVkFURSBQYXNzUmVmUHRyPFNjcmlwdENhbGxTdGFjaz4gY3JlYXRlU2NyaXB0
Q2FsbFN0YWNrRm9yQ29uc29sZShKU0M6OkV4ZWNTdGF0ZSopOwogSlNfRVhQT1JUX1BSSVZBVEUg
UGFzc1JlZlB0cjxTY3JpcHRDYWxsU3RhY2s+IGNyZWF0ZVNjcmlwdENhbGxTdGFja0Zyb21FeGNl
cHRpb24oSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkpTVmFsdWUmIGV4Y2VwdGlvbiwgc2l6ZV90IG1h
eFN0YWNrU2l6ZSk7CiBKU19FWFBPUlRfUFJJVkFURSBQYXNzUmVmUHRyPFNjcmlwdEFyZ3VtZW50
cz4gY3JlYXRlU2NyaXB0QXJndW1lbnRzKEpTQzo6RXhlY1N0YXRlKiwgdW5zaWduZWQgc2tpcEFy
Z3VtZW50Q291bnQpOwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2Fn
ZW50cy9JbnNwZWN0b3JDb25zb2xlQWdlbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckNvbnNvbGVBZ2VudC5jcHAJKHJl
dmlzaW9uIDE2NDU1MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRz
L0luc3BlY3RvckNvbnNvbGVBZ2VudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTgwLDcgKzgwLDcg
QEAgdm9pZCBJbnNwZWN0b3JDb25zb2xlQWdlbnQ6OmVuYWJsZShFcnJvcgogICAgIG1fZW5hYmxl
ZCA9IHRydWU7CiAKICAgICBpZiAobV9leHBpcmVkQ29uc29sZU1lc3NhZ2VDb3VudCkgewotICAg
ICAgICBDb25zb2xlTWVzc2FnZSBleHBpcmVkTWVzc2FnZShNZXNzYWdlU291cmNlOjpPdGhlciwg
TWVzc2FnZVR5cGU6OkxvZywgTWVzc2FnZUxldmVsOjpXYXJuaW5nLCBTdHJpbmc6OmZvcm1hdCgi
JWQgY29uc29sZSBtZXNzYWdlcyBhcmUgbm90IHNob3duLiIsIG1fZXhwaXJlZENvbnNvbGVNZXNz
YWdlQ291bnQpKTsKKyAgICAgICAgQ29uc29sZU1lc3NhZ2UgZXhwaXJlZE1lc3NhZ2UoIWlzV29y
a2VyQWdlbnQoKSwgTWVzc2FnZVNvdXJjZTo6T3RoZXIsIE1lc3NhZ2VUeXBlOjpMb2csIE1lc3Nh
Z2VMZXZlbDo6V2FybmluZywgU3RyaW5nOjpmb3JtYXQoIiVkIGNvbnNvbGUgbWVzc2FnZXMgYXJl
IG5vdCBzaG93bi4iLCBtX2V4cGlyZWRDb25zb2xlTWVzc2FnZUNvdW50KSk7CiAgICAgICAgIGV4
cGlyZWRNZXNzYWdlLmFkZFRvRnJvbnRlbmQobV9mcm9udGVuZERpc3BhdGNoZXIuZ2V0KCksIG1f
aW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLCBmYWxzZSk7CiAgICAgfQogCkBAIC0xMjgsNyArMTI4LDcg
QEAgdm9pZCBJbnNwZWN0b3JDb25zb2xlQWdlbnQ6OmFkZE1lc3NhZ2VUbwogICAgICAgICBjbGVh
ck1lc3NhZ2VzKCZlcnJvcik7CiAgICAgfQogCi0gICAgYWRkQ29uc29sZU1lc3NhZ2Uoc3RkOjpt
YWtlX3VuaXF1ZTxDb25zb2xlTWVzc2FnZT4oc291cmNlLCB0eXBlLCBsZXZlbCwgbWVzc2FnZSwg
Y2FsbFN0YWNrLCByZXF1ZXN0SWRlbnRpZmllcikpOworICAgIGFkZENvbnNvbGVNZXNzYWdlKHN0
ZDo6bWFrZV91bmlxdWU8Q29uc29sZU1lc3NhZ2U+KCFpc1dvcmtlckFnZW50KCksIHNvdXJjZSwg
dHlwZSwgbGV2ZWwsIG1lc3NhZ2UsIGNhbGxTdGFjaywgcmVxdWVzdElkZW50aWZpZXIpKTsKIH0K
IAogdm9pZCBJbnNwZWN0b3JDb25zb2xlQWdlbnQ6OmFkZE1lc3NhZ2VUb0NvbnNvbGUoTWVzc2Fn
ZVNvdXJjZSBzb3VyY2UsIE1lc3NhZ2VUeXBlIHR5cGUsIE1lc3NhZ2VMZXZlbCBsZXZlbCwgY29u
c3QgU3RyaW5nJiBtZXNzYWdlLCBKU0M6OkV4ZWNTdGF0ZSogc3RhdGUsIFBhc3NSZWZQdHI8U2Ny
aXB0QXJndW1lbnRzPiBhcmd1bWVudHMsIHVuc2lnbmVkIGxvbmcgcmVxdWVzdElkZW50aWZpZXIp
CkBAIC0xNDEsNyArMTQxLDcgQEAgdm9pZCBJbnNwZWN0b3JDb25zb2xlQWdlbnQ6OmFkZE1lc3Nh
Z2VUbwogICAgICAgICBjbGVhck1lc3NhZ2VzKCZlcnJvcik7CiAgICAgfQogCi0gICAgYWRkQ29u
c29sZU1lc3NhZ2Uoc3RkOjptYWtlX3VuaXF1ZTxDb25zb2xlTWVzc2FnZT4oc291cmNlLCB0eXBl
LCBsZXZlbCwgbWVzc2FnZSwgYXJndW1lbnRzLCBzdGF0ZSwgcmVxdWVzdElkZW50aWZpZXIpKTsK
KyAgICBhZGRDb25zb2xlTWVzc2FnZShzdGQ6Om1ha2VfdW5pcXVlPENvbnNvbGVNZXNzYWdlPigh
aXNXb3JrZXJBZ2VudCgpLCBzb3VyY2UsIHR5cGUsIGxldmVsLCBtZXNzYWdlLCBhcmd1bWVudHMs
IHN0YXRlLCByZXF1ZXN0SWRlbnRpZmllcikpOwogfQogCiB2b2lkIEluc3BlY3RvckNvbnNvbGVB
Z2VudDo6YWRkTWVzc2FnZVRvQ29uc29sZShNZXNzYWdlU291cmNlIHNvdXJjZSwgTWVzc2FnZVR5
cGUgdHlwZSwgTWVzc2FnZUxldmVsIGxldmVsLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIGNvbnN0
IFN0cmluZyYgc2NyaXB0SUQsIHVuc2lnbmVkIGxpbmVOdW1iZXIsIHVuc2lnbmVkIGNvbHVtbk51
bWJlciwgSlNDOjpFeGVjU3RhdGUqIHN0YXRlLCB1bnNpZ25lZCBsb25nIHJlcXVlc3RJZGVudGlm
aWVyKQpAQCAtMTU0LDcgKzE1NCw4IEBAIHZvaWQgSW5zcGVjdG9yQ29uc29sZUFnZW50OjphZGRN
ZXNzYWdlVG8KICAgICAgICAgY2xlYXJNZXNzYWdlcygmZXJyb3IpOwogICAgIH0KIAotICAgIGFk
ZENvbnNvbGVNZXNzYWdlKHN0ZDo6bWFrZV91bmlxdWU8Q29uc29sZU1lc3NhZ2U+KHNvdXJjZSwg
dHlwZSwgbGV2ZWwsIG1lc3NhZ2UsIHNjcmlwdElELCBsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIs
IHN0YXRlLCByZXF1ZXN0SWRlbnRpZmllcikpOworICAgIGJvb2wgY2FuR2VuZXJhdGVDYWxsU3Rh
Y2sgPSAhaXNXb3JrZXJBZ2VudCgpICYmIG1fZnJvbnRlbmREaXNwYXRjaGVyOworICAgIGFkZENv
bnNvbGVNZXNzYWdlKHN0ZDo6bWFrZV91bmlxdWU8Q29uc29sZU1lc3NhZ2U+KGNhbkdlbmVyYXRl
Q2FsbFN0YWNrLCBzb3VyY2UsIHR5cGUsIGxldmVsLCBtZXNzYWdlLCBzY3JpcHRJRCwgbGluZU51
bWJlciwgY29sdW1uTnVtYmVyLCBzdGF0ZSwgcmVxdWVzdElkZW50aWZpZXIpKTsKIH0KIAogVmVj
dG9yPHVuc2lnbmVkPiBJbnNwZWN0b3JDb25zb2xlQWdlbnQ6OmNvbnNvbGVNZXNzYWdlQXJndW1l
bnRDb3VudHMoKSBjb25zdApAQCAtMTk2LDcgKzE5Nyw3IEBAIHZvaWQgSW5zcGVjdG9yQ29uc29s
ZUFnZW50OjpzdG9wVGltaW5nKGMKIAogdm9pZCBJbnNwZWN0b3JDb25zb2xlQWdlbnQ6OmNvdW50
KEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSwgUGFzc1JlZlB0cjxTY3JpcHRBcmd1bWVudHM+IGFyZ3Vt
ZW50cykKIHsKLSAgICBSZWZQdHI8U2NyaXB0Q2FsbFN0YWNrPiBjYWxsU3RhY2soY3JlYXRlU2Ny
aXB0Q2FsbFN0YWNrRm9yQ29uc29sZShzdGF0ZSwgU2NyaXB0Q2FsbFN0YWNrOjptYXhDYWxsU3Rh
Y2tTaXplVG9DYXB0dXJlKSk7CisgICAgUmVmUHRyPFNjcmlwdENhbGxTdGFjaz4gY2FsbFN0YWNr
KGNyZWF0ZVNjcmlwdENhbGxTdGFja0ZvckNvbnNvbGUoc3RhdGUpKTsKICAgICBjb25zdCBTY3Jp
cHRDYWxsRnJhbWUmIGxhc3RDYWxsZXIgPSBjYWxsU3RhY2stPmF0KDApOwogICAgIC8vIEZvbGxv
dyBGaXJlYnVnJ3MgYmVoYXZpb3Igb2YgY291bnRpbmcgd2l0aCBudWxsIGFuZCB1bmRlZmluZWQg
dGl0bGUgaW4KICAgICAvLyB0aGUgc2FtZSBidWNrZXQgYXMgbm8gYXJndW1lbnQKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0pTR2xvYmFsT2JqZWN0RGVidWdn
ZXJBZ2VudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rv
ci9hZ2VudHMvSlNHbG9iYWxPYmplY3REZWJ1Z2dlckFnZW50LmNwcAkocmV2aXNpb24gMTY0NTUz
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSlNHbG9iYWxPYmpl
Y3REZWJ1Z2dlckFnZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjksNyArNjksNyBAQCBJbmpl
Y3RlZFNjcmlwdCBKU0dsb2JhbE9iamVjdERlYnVnZ2VyQWdlCiAKIHZvaWQgSlNHbG9iYWxPYmpl
Y3REZWJ1Z2dlckFnZW50OjpicmVha3BvaW50QWN0aW9uTG9nKEpTQzo6RXhlY1N0YXRlKiBleGVj
LCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCiB7Ci0gICAgbV9jb25zb2xlQWdlbnQtPmFkZE1lc3Nh
Z2VUb0NvbnNvbGUoTWVzc2FnZVNvdXJjZTo6SlMsIE1lc3NhZ2VUeXBlOjpMb2csIE1lc3NhZ2VM
ZXZlbDo6TG9nLCBtZXNzYWdlLCBjcmVhdGVTY3JpcHRDYWxsU3RhY2soZXhlYywgU2NyaXB0Q2Fs
bFN0YWNrOjptYXhDYWxsU3RhY2tTaXplVG9DYXB0dXJlKSwgMCk7CisgICAgbV9jb25zb2xlQWdl
bnQtPmFkZE1lc3NhZ2VUb0NvbnNvbGUoTWVzc2FnZVNvdXJjZTo6SlMsIE1lc3NhZ2VUeXBlOjpM
b2csIE1lc3NhZ2VMZXZlbDo6TG9nLCBtZXNzYWdlLCBjcmVhdGVTY3JpcHRDYWxsU3RhY2soZXhl
YywgU2NyaXB0Q2FsbFN0YWNrOjptYXhDYWxsU3RhY2tTaXplVG9DYXB0dXJlLCB0cnVlKSwgMCk7
CiB9CiAKIH0gLy8gbmFtZXNwYWNlIEluc3BlY3RvcgpJbmRleDogU291cmNlL1dlYkNvcmUvQ2hh
bmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24g
MTY0NTUzKQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDMgKzEsMzEgQEAKKzIwMTQtMDItMjIgIERhbiBCZXJuc3RlaW4gIDxtaXR6QGFwcGxlLmNvbT4K
KworICAgICAgICBSRUdSRVNTSU9OIChyMTY0NTA3KTogQ3Jhc2ggYmVuZWF0aCBKU0dsb2JhbE9i
amVjdEluc3BlY3RvckNvbnRyb2xsZXI6OnJlcG9ydEFQSUV4Y2VwdGlvbiBhdCBmYWNlYm9vay5j
b20sIHR3aXR0ZXIuY29tLCB5b3V0dWJlLmNvbQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI5MjI3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgUmV2ZXJ0ZWQgcjE2NDUwNy4KKworICAgICAgICAqIGJpbmRp
bmdzL2pzL0pTRE9NQmluZGluZy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpyZXBvcnRFeGNlcHRp
b24pOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJjZUFnZW50LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclJlc291cmNlQWdlbnQ6OmJ1aWxkSW5pdGlhdG9yT2Jq
ZWN0KToKKyAgICAgICAgKiBpbnNwZWN0b3IvUGFnZURlYnVnZ2VyQWdlbnQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6UGFnZURlYnVnZ2VyQWdlbnQ6OmJyZWFrcG9pbnRBY3Rpb25Mb2cpOgorICAg
ICAgICAqIGluc3BlY3Rvci9UaW1lbGluZVJlY29yZEZhY3RvcnkuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6VGltZWxpbmVSZWNvcmRGYWN0b3J5OjpjcmVhdGVHZW5lcmljUmVjb3JkKToKKyAgICAg
ICAgKiBwYWdlL0NvbnNvbGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6aW50ZXJuYWxBZGRNZXNz
YWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnNvbGU6OnByb2ZpbGUpOgorICAgICAgICAoV2Vi
Q29yZTo6Q29uc29sZTo6cHJvZmlsZUVuZCk6CisgICAgICAgIChXZWJDb3JlOjpDb25zb2xlOjp0
aW1lRW5kKToKKyAgICAgICAgKiBwYWdlL0NvbnRlbnRTZWN1cml0eVBvbGljeS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpnYXRoZXJTZWN1cml0eVBvbGljeVZpb2xhdGlvbkV2ZW50RGF0YSk6Cisg
ICAgICAgIChXZWJDb3JlOjpDb250ZW50U2VjdXJpdHlQb2xpY3k6OnJlcG9ydFZpb2xhdGlvbik6
CisgICAgICAgICogcGFnZS9ET01XaW5kb3cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RE9NV2lu
ZG93Ojpwb3N0TWVzc2FnZSk6CisKIDIwMTQtMDItMjIgIEpvc2VwaCBQZWNvcmFybyAgPHBlY29y
YXJvQGFwcGxlLmNvbT4KIAogICAgICAgICBSZW1vdmUgc29tZSB1bnJlYWNoYWJsZSBjb2RlICgt
V3VucmVhY2hhYmxlLWNvZGUpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RP
TUJpbmRpbmcuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
RE9NQmluZGluZy5jcHAJKHJldmlzaW9uIDE2NDU1MykKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTRE9NQmluZGluZy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE3MSwxMCArMTcxLDIw
IEBAIHZvaWQgcmVwb3J0RXhjZXB0aW9uKEV4ZWNTdGF0ZSogZXhlYywgSlMKICAgICBpbnQgbGlu
ZU51bWJlciA9IDA7CiAgICAgaW50IGNvbHVtbk51bWJlciA9IDA7CiAgICAgU3RyaW5nIGV4Y2Vw
dGlvblNvdXJjZVVSTDsKLSAgICBpZiAoY29uc3QgU2NyaXB0Q2FsbEZyYW1lKiBjYWxsRnJhbWUg
PSBjYWxsU3RhY2stPmZpcnN0Tm9uTmF0aXZlQ2FsbEZyYW1lKCkpIHsKLSAgICAgICAgbGluZU51
bWJlciA9IGNhbGxGcmFtZS0+bGluZU51bWJlcigpOwotICAgICAgICBjb2x1bW5OdW1iZXIgPSBj
YWxsRnJhbWUtPmNvbHVtbk51bWJlcigpOwotICAgICAgICBleGNlcHRpb25Tb3VyY2VVUkwgPSBj
YWxsRnJhbWUtPnNvdXJjZVVSTCgpOworICAgIGlmIChjYWxsU3RhY2stPnNpemUoKSkgeworICAg
ICAgICBjb25zdCBTY3JpcHRDYWxsRnJhbWUmIGZyYW1lID0gY2FsbFN0YWNrLT5hdCgwKTsKKyAg
ICAgICAgbGluZU51bWJlciA9IGZyYW1lLmxpbmVOdW1iZXIoKTsKKyAgICAgICAgY29sdW1uTnVt
YmVyID0gZnJhbWUuY29sdW1uTnVtYmVyKCk7CisgICAgICAgIGV4Y2VwdGlvblNvdXJjZVVSTCA9
IGZyYW1lLnNvdXJjZVVSTCgpOworICAgIH0gZWxzZSB7CisgICAgICAgIC8vIFRoZXJlIG1heSBu
b3QgYmUgYW4gZXhjZXB0aW9uU3RhY2sgZm9yIGEgPHNjcmlwdD4gU3ludGF4RXJyb3IuIEZhbGxi
YWNrIHRvIGdldHRpbmcgYXQgbGVhc3QgdGhlIGxpbmUgYW5kIHNvdXJjZVVSTCBmcm9tIHRoZSBl
eGNlcHRpb24uCisgICAgICAgIEpTT2JqZWN0KiBleGNlcHRpb25PYmplY3QgPSBleGNlcHRpb24u
dG9PYmplY3QoZXhlYyk7CisgICAgICAgIEpTVmFsdWUgbGluZVZhbHVlID0gZXhjZXB0aW9uT2Jq
ZWN0LT5nZXREaXJlY3QoZXhlYy0+dm0oKSwgSWRlbnRpZmllcihleGVjLCAibGluZSIpKTsKKyAg
ICAgICAgbGluZU51bWJlciA9IGxpbmVWYWx1ZSAmJiBsaW5lVmFsdWUuaXNOdW1iZXIoKSA/IGlu
dChsaW5lVmFsdWUudG9OdW1iZXIoZXhlYykpIDogMDsKKyAgICAgICAgSlNWYWx1ZSBjb2x1bW5W
YWx1ZSA9IGV4Y2VwdGlvbk9iamVjdC0+Z2V0RGlyZWN0KGV4ZWMtPnZtKCksIElkZW50aWZpZXIo
ZXhlYywgImNvbHVtbiIpKTsKKyAgICAgICAgY29sdW1uTnVtYmVyID0gY29sdW1uVmFsdWUgJiYg
Y29sdW1uVmFsdWUuaXNOdW1iZXIoKSA/IGludChjb2x1bW5WYWx1ZS50b051bWJlcihleGVjKSkg
OiAwOworICAgICAgICBKU1ZhbHVlIHNvdXJjZVVSTFZhbHVlID0gZXhjZXB0aW9uT2JqZWN0LT5n
ZXREaXJlY3QoZXhlYy0+dm0oKSwgSWRlbnRpZmllcihleGVjLCAic291cmNlVVJMIikpOworICAg
ICAgICBleGNlcHRpb25Tb3VyY2VVUkwgPSBzb3VyY2VVUkxWYWx1ZSAmJiBzb3VyY2VVUkxWYWx1
ZS5pc1N0cmluZygpID8gc291cmNlVVJMVmFsdWUudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMp
IDogQVNDSUlMaXRlcmFsKCJ1bmRlZmluZWQiKTsKICAgICB9CiAKICAgICBTdHJpbmcgZXJyb3JN
ZXNzYWdlOwpJbmRleDogU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclJlc291cmNl
QWdlbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JSZXNvdXJjZUFnZW50LmNwcAkocmV2aXNpb24gMTY0NTUzKQorKysgU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvclJlc291cmNlQWdlbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00
MzksNyArNDM5LDcgQEAgdm9pZCBJbnNwZWN0b3JSZXNvdXJjZUFnZW50OjpkaWRTY2hlZHVsZQog
CiBQYXNzUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6Ok5ldHdvcms6OkluaXRpYXRvcj4g
SW5zcGVjdG9yUmVzb3VyY2VBZ2VudDo6YnVpbGRJbml0aWF0b3JPYmplY3QoRG9jdW1lbnQqIGRv
Y3VtZW50KQogewotICAgIFJlZlB0cjxTY3JpcHRDYWxsU3RhY2s+IHN0YWNrVHJhY2UgPSBjcmVh
dGVTY3JpcHRDYWxsU3RhY2soSlNNYWluVGhyZWFkRXhlY1N0YXRlOjpjdXJyZW50U3RhdGUoKSwg
U2NyaXB0Q2FsbFN0YWNrOjptYXhDYWxsU3RhY2tTaXplVG9DYXB0dXJlKTsKKyAgICBSZWZQdHI8
U2NyaXB0Q2FsbFN0YWNrPiBzdGFja1RyYWNlID0gY3JlYXRlU2NyaXB0Q2FsbFN0YWNrKEpTTWFp
blRocmVhZEV4ZWNTdGF0ZTo6Y3VycmVudFN0YXRlKCksIFNjcmlwdENhbGxTdGFjazo6bWF4Q2Fs
bFN0YWNrU2l6ZVRvQ2FwdHVyZSwgdHJ1ZSk7CiAgICAgaWYgKHN0YWNrVHJhY2UgJiYgc3RhY2tU
cmFjZS0+c2l6ZSgpID4gMCkgewogICAgICAgICBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRl
cjo6TmV0d29yazo6SW5pdGlhdG9yPiBpbml0aWF0b3JPYmplY3QgPSBJbnNwZWN0b3I6OlR5cGVC
dWlsZGVyOjpOZXR3b3JrOjpJbml0aWF0b3I6OmNyZWF0ZSgpCiAgICAgICAgICAgICAuc2V0VHlw
ZShJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpOZXR3b3JrOjpJbml0aWF0b3I6OlR5cGU6OlNjcmlw
dCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvUGFnZURlYnVnZ2VyQWdlbnQuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9QYWdlRGVidWdnZXJBZ2Vu
dC5jcHAJKHJldmlzaW9uIDE2NDU1MykKKysrIFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9QYWdl
RGVidWdnZXJBZ2VudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTExNyw3ICsxMTcsNyBAQCB2b2lk
IFBhZ2VEZWJ1Z2dlckFnZW50Ojp1bm11dGVDb25zb2xlKCkKIAogdm9pZCBQYWdlRGVidWdnZXJB
Z2VudDo6YnJlYWtwb2ludEFjdGlvbkxvZyhKU0M6OkV4ZWNTdGF0ZSogZXhlYywgY29uc3QgU3Ry
aW5nJiBtZXNzYWdlKQogewotICAgIG1fcGFnZUFnZW50LT5wYWdlKCktPmNvbnNvbGUoKS5hZGRN
ZXNzYWdlKE1lc3NhZ2VTb3VyY2U6OkpTLCBNZXNzYWdlTGV2ZWw6OkxvZywgbWVzc2FnZSwgY3Jl
YXRlU2NyaXB0Q2FsbFN0YWNrKGV4ZWMsIFNjcmlwdENhbGxTdGFjazo6bWF4Q2FsbFN0YWNrU2l6
ZVRvQ2FwdHVyZSkpOworICAgIG1fcGFnZUFnZW50LT5wYWdlKCktPmNvbnNvbGUoKS5hZGRNZXNz
YWdlKE1lc3NhZ2VTb3VyY2U6OkpTLCBNZXNzYWdlTGV2ZWw6OkxvZywgbWVzc2FnZSwgY3JlYXRl
U2NyaXB0Q2FsbFN0YWNrKGV4ZWMsIFNjcmlwdENhbGxTdGFjazo6bWF4Q2FsbFN0YWNrU2l6ZVRv
Q2FwdHVyZSwgdHJ1ZSkpOwogfQogCiBJbmplY3RlZFNjcmlwdCBQYWdlRGVidWdnZXJBZ2VudDo6
aW5qZWN0ZWRTY3JpcHRGb3JFdmFsKEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywgY29uc3QgaW50
KiBleGVjdXRpb25Db250ZXh0SWQpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvVGlt
ZWxpbmVSZWNvcmRGYWN0b3J5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvVGltZWxpbmVSZWNvcmRGYWN0b3J5LmNwcAkocmV2aXNpb24gMTY0NTUzKQorKysgU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1RpbWVsaW5lUmVjb3JkRmFjdG9yeS5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTU3LDcgKzU3LDcgQEAgUGFzc1JlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IFRpbWVs
aW5lUmVjbwogICAgIHJlY29yZC0+c2V0TnVtYmVyKCJzdGFydFRpbWUiLCBzdGFydFRpbWUpOwog
CiAgICAgaWYgKG1heENhbGxTdGFja0RlcHRoKSB7Ci0gICAgICAgIFJlZlB0cjxTY3JpcHRDYWxs
U3RhY2s+IHN0YWNrVHJhY2UgPSBjcmVhdGVTY3JpcHRDYWxsU3RhY2soSlNNYWluVGhyZWFkRXhl
Y1N0YXRlOjpjdXJyZW50U3RhdGUoKSwgbWF4Q2FsbFN0YWNrRGVwdGgpOworICAgICAgICBSZWZQ
dHI8U2NyaXB0Q2FsbFN0YWNrPiBzdGFja1RyYWNlID0gY3JlYXRlU2NyaXB0Q2FsbFN0YWNrKEpT
TWFpblRocmVhZEV4ZWNTdGF0ZTo6Y3VycmVudFN0YXRlKCksIG1heENhbGxTdGFja0RlcHRoLCB0
cnVlKTsKICAgICAgICAgaWYgKHN0YWNrVHJhY2UgJiYgc3RhY2tUcmFjZS0+c2l6ZSgpKQogICAg
ICAgICAgICAgcmVjb3JkLT5zZXRWYWx1ZSgic3RhY2tUcmFjZSIsIHN0YWNrVHJhY2UtPmJ1aWxk
SW5zcGVjdG9yQXJyYXkoKSk7CiAgICAgfQpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9Db25z
b2xlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL0NvbnNvbGUuY3BwCShy
ZXZpc2lvbiAxNjQ1NTMpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL0NvbnNvbGUuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC03Nyw3ICs3Nyw3IEBAIHN0YXRpYyB2b2lkIGludGVybmFsQWRkTWVzc2Fn
ZShQYWdlKiBwYWcKICAgICAgICAgcmV0dXJuOwogCiAgICAgc2l6ZV90IHN0YWNrU2l6ZSA9IHBy
aW50VHJhY2UgPyBTY3JpcHRDYWxsU3RhY2s6Om1heENhbGxTdGFja1NpemVUb0NhcHR1cmUgOiAx
OwotICAgIFJlZlB0cjxTY3JpcHRDYWxsU3RhY2s+IGNhbGxTdGFjayhjcmVhdGVTY3JpcHRDYWxs
U3RhY2tGb3JDb25zb2xlKHN0YXRlLCBzdGFja1NpemUpKTsKKyAgICBSZWZQdHI8U2NyaXB0Q2Fs
bFN0YWNrPiBjYWxsU3RhY2soY3JlYXRlU2NyaXB0Q2FsbFN0YWNrKHN0YXRlLCBzdGFja1NpemUp
KTsKICAgICBjb25zdCBTY3JpcHRDYWxsRnJhbWUmIGxhc3RDYWxsZXIgPSBjYWxsU3RhY2stPmF0
KDApOwogCiAgICAgU3RyaW5nIG1lc3NhZ2U7CkBAIC0yMDMsNyArMjAzLDcgQEAgdm9pZCBDb25z
b2xlOjpwcm9maWxlKEpTQzo6RXhlY1N0YXRlKiBzdAogCiAgICAgU2NyaXB0UHJvZmlsZXI6OnN0
YXJ0KHN0YXRlLCByZXNvbHZlZFRpdGxlKTsKIAotICAgIFJlZlB0cjxTY3JpcHRDYWxsU3RhY2s+
IGNhbGxTdGFjayhjcmVhdGVTY3JpcHRDYWxsU3RhY2tGb3JDb25zb2xlKHN0YXRlLCAxKSk7Cisg
ICAgUmVmUHRyPFNjcmlwdENhbGxTdGFjaz4gY2FsbFN0YWNrKGNyZWF0ZVNjcmlwdENhbGxTdGFj
ayhzdGF0ZSwgMSkpOwogICAgIGNvbnN0IFNjcmlwdENhbGxGcmFtZSYgbGFzdENhbGxlciA9IGNh
bGxTdGFjay0+YXQoMCk7CiAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjphZGRTdGFydFBy
b2ZpbGluZ01lc3NhZ2VUb0NvbnNvbGUocGFnZSwgcmVzb2x2ZWRUaXRsZSwgbGFzdENhbGxlci5s
aW5lTnVtYmVyKCksIGxhc3RDYWxsZXIuY29sdW1uTnVtYmVyKCksIGxhc3RDYWxsZXIuc291cmNl
VVJMKCkpOwogfQpAQCAtMjIyLDcgKzIyMiw3IEBAIHZvaWQgQ29uc29sZTo6cHJvZmlsZUVuZChK
U0M6OkV4ZWNTdGF0ZSoKICAgICAgICAgcmV0dXJuOwogCiAgICAgbV9wcm9maWxlcy5hcHBlbmQo
cHJvZmlsZSk7Ci0gICAgUmVmUHRyPFNjcmlwdENhbGxTdGFjaz4gY2FsbFN0YWNrKGNyZWF0ZVNj
cmlwdENhbGxTdGFja0ZvckNvbnNvbGUoc3RhdGUsIDEpKTsKKyAgICBSZWZQdHI8U2NyaXB0Q2Fs
bFN0YWNrPiBjYWxsU3RhY2soY3JlYXRlU2NyaXB0Q2FsbFN0YWNrKHN0YXRlLCAxKSk7CiAgICAg
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjphZGRQcm9maWxlKHBhZ2UsIHByb2ZpbGUsIGNhbGxT
dGFjayk7CiB9CiAKQEAgLTIzMyw3ICsyMzMsNyBAQCB2b2lkIENvbnNvbGU6OnRpbWUoY29uc3Qg
U3RyaW5nJiB0aXRsZSkKIAogdm9pZCBDb25zb2xlOjp0aW1lRW5kKEpTQzo6RXhlY1N0YXRlKiBz
dGF0ZSwgY29uc3QgU3RyaW5nJiB0aXRsZSkKIHsKLSAgICBSZWZQdHI8U2NyaXB0Q2FsbFN0YWNr
PiBjYWxsU3RhY2soY3JlYXRlU2NyaXB0Q2FsbFN0YWNrRm9yQ29uc29sZShzdGF0ZSwgMSkpOwor
ICAgIFJlZlB0cjxTY3JpcHRDYWxsU3RhY2s+IGNhbGxTdGFjayhjcmVhdGVTY3JpcHRDYWxsU3Rh
Y2tGb3JDb25zb2xlKHN0YXRlKSk7CiAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpzdG9w
Q29uc29sZVRpbWluZyhtX2ZyYW1lLCB0aXRsZSwgY2FsbFN0YWNrLnJlbGVhc2UoKSk7CiB9CiAK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvQ29udGVudFNlY3VyaXR5UG9saWN5LmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL0NvbnRlbnRTZWN1cml0eVBvbGljeS5jcHAJ
KHJldmlzaW9uIDE2NDU1MykKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvQ29udGVudFNlY3VyaXR5
UG9saWN5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTcxLDYgKzE3MSwxNSBAQCBGZWF0dXJlT2Jz
ZXJ2ZXI6OkZlYXR1cmUgZ2V0RmVhdHVyZU9ic2VyCiAgICAgcmV0dXJuIEZlYXR1cmVPYnNlcnZl
cjo6TnVtYmVyT2ZGZWF0dXJlczsKIH0KIAorY29uc3QgU2NyaXB0Q2FsbEZyYW1lJiBnZXRGaXJz
dE5vbk5hdGl2ZUZyYW1lKFBhc3NSZWZQdHI8U2NyaXB0Q2FsbFN0YWNrPiBzdGFjaykKK3sKKyAg
ICBpbnQgZnJhbWVOdW1iZXIgPSAwOworICAgIGlmICghc3RhY2stPmF0KDApLmxpbmVOdW1iZXIo
KSAmJiBzdGFjay0+c2l6ZSgpID4gMSAmJiBzdGFjay0+YXQoMSkubGluZU51bWJlcigpKQorICAg
ICAgICBmcmFtZU51bWJlciA9IDE7CisKKyAgICByZXR1cm4gc3RhY2stPmF0KGZyYW1lTnVtYmVy
KTsKK30KKwogfSAvLyBuYW1lc3BhY2UKIAogc3RhdGljIGJvb2wgc2tpcEV4YWN0bHkoY29uc3Qg
VUNoYXIqJiBwb3NpdGlvbiwgY29uc3QgVUNoYXIqIGVuZCwgVUNoYXIgZGVsaW1pdGVyKQpAQCAt
MTcxOCwxMiArMTcyNywxNiBAQCBzdGF0aWMgdm9pZCBnYXRoZXJTZWN1cml0eVBvbGljeVZpb2xh
dGlvCiAgICAgaW5pdC5zb3VyY2VGaWxlID0gU3RyaW5nKCk7CiAgICAgaW5pdC5saW5lTnVtYmVy
ID0gMDsKIAotICAgIFJlZlB0cjxTY3JpcHRDYWxsU3RhY2s+IHN0YWNrID0gY3JlYXRlU2NyaXB0
Q2FsbFN0YWNrKEpTTWFpblRocmVhZEV4ZWNTdGF0ZTo6Y3VycmVudFN0YXRlKCksIDIpOwotICAg
IGNvbnN0IFNjcmlwdENhbGxGcmFtZSogY2FsbEZyYW1lID0gc3RhY2stPmZpcnN0Tm9uTmF0aXZl
Q2FsbEZyYW1lKCk7Ci0gICAgaWYgKGNhbGxGcmFtZSAmJiBjYWxsRnJhbWUtPmxpbmVOdW1iZXIo
KSkgewotICAgICAgICBVUkwgc291cmNlID0gVVJMKFVSTCgpLCBjYWxsRnJhbWUtPnNvdXJjZVVS
TCgpKTsKKyAgICBSZWZQdHI8U2NyaXB0Q2FsbFN0YWNrPiBzdGFjayA9IGNyZWF0ZVNjcmlwdENh
bGxTdGFjayhKU01haW5UaHJlYWRFeGVjU3RhdGU6OmN1cnJlbnRTdGF0ZSgpLCAyLCBmYWxzZSk7
CisgICAgaWYgKCFzdGFjaykKKyAgICAgICAgcmV0dXJuOworCisgICAgY29uc3QgU2NyaXB0Q2Fs
bEZyYW1lJiBjYWxsRnJhbWUgPSBnZXRGaXJzdE5vbk5hdGl2ZUZyYW1lKHN0YWNrKTsKKworICAg
IGlmIChjYWxsRnJhbWUubGluZU51bWJlcigpKSB7CisgICAgICAgIFVSTCBzb3VyY2UgPSBVUkwo
UGFyc2VkVVJMU3RyaW5nLCBjYWxsRnJhbWUuc291cmNlVVJMKCkpOwogICAgICAgICBpbml0LnNv
dXJjZUZpbGUgPSBzdHJpcFVSTEZvclVzZUluUmVwb3J0KGRvY3VtZW50LCBzb3VyY2UpOwotICAg
ICAgICBpbml0LmxpbmVOdW1iZXIgPSBjYWxsRnJhbWUtPmxpbmVOdW1iZXIoKTsKKyAgICAgICAg
aW5pdC5saW5lTnVtYmVyID0gY2FsbEZyYW1lLmxpbmVOdW1iZXIoKTsKICAgICB9CiB9CiAjZW5k
aWYKQEAgLTE3NjQsMjggKzE3NzcsMzEgQEAgdm9pZCBDb250ZW50U2VjdXJpdHlQb2xpY3k6OnJl
cG9ydFZpb2xhdAogICAgIC8vIGhhcm1sZXNzIGluZm9ybWF0aW9uLgogCiAgICAgUmVmUHRyPElu
c3BlY3Rvck9iamVjdD4gY3NwUmVwb3J0ID0gSW5zcGVjdG9yT2JqZWN0OjpjcmVhdGUoKTsKLSAg
ICBjc3BSZXBvcnQtPnNldFN0cmluZyhBU0NJSUxpdGVyYWwoImRvY3VtZW50LXVyaSIpLCBkb2N1
bWVudC0+dXJsKCkuc3RyaXBwZWRGb3JVc2VBc1JlZmVycmVyKCkpOwotICAgIGNzcFJlcG9ydC0+
c2V0U3RyaW5nKEFTQ0lJTGl0ZXJhbCgicmVmZXJyZXIiKSwgZG9jdW1lbnQtPnJlZmVycmVyKCkp
OwotICAgIGNzcFJlcG9ydC0+c2V0U3RyaW5nKEFTQ0lJTGl0ZXJhbCgidmlvbGF0ZWQtZGlyZWN0
aXZlIiksIGRpcmVjdGl2ZVRleHQpOworICAgIGNzcFJlcG9ydC0+c2V0U3RyaW5nKCJkb2N1bWVu
dC11cmkiLCBkb2N1bWVudC0+dXJsKCkuc3RyaXBwZWRGb3JVc2VBc1JlZmVycmVyKCkpOworICAg
IGNzcFJlcG9ydC0+c2V0U3RyaW5nKCJyZWZlcnJlciIsIGRvY3VtZW50LT5yZWZlcnJlcigpKTsK
KyAgICBjc3BSZXBvcnQtPnNldFN0cmluZygidmlvbGF0ZWQtZGlyZWN0aXZlIiwgZGlyZWN0aXZl
VGV4dCk7CiAjaWYgRU5BQkxFKENTUF9ORVhUKQogICAgIGlmIChleHBlcmltZW50YWxGZWF0dXJl
c0VuYWJsZWQoKSkKLSAgICAgICAgY3NwUmVwb3J0LT5zZXRTdHJpbmcoQVNDSUlMaXRlcmFsKCJl
ZmZlY3RpdmUtZGlyZWN0aXZlIiksIGVmZmVjdGl2ZURpcmVjdGl2ZSk7CisgICAgICAgIGNzcFJl
cG9ydC0+c2V0U3RyaW5nKCJlZmZlY3RpdmUtZGlyZWN0aXZlIiwgZWZmZWN0aXZlRGlyZWN0aXZl
KTsKICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKGVmZmVjdGl2ZURpcmVjdGl2ZSk7CiAjZW5kaWYK
LSAgICBjc3BSZXBvcnQtPnNldFN0cmluZyhBU0NJSUxpdGVyYWwoIm9yaWdpbmFsLXBvbGljeSIp
LCBoZWFkZXIpOwotICAgIGNzcFJlcG9ydC0+c2V0U3RyaW5nKEFTQ0lJTGl0ZXJhbCgiYmxvY2tl
ZC11cmkiKSwgc3RyaXBVUkxGb3JVc2VJblJlcG9ydChkb2N1bWVudCwgYmxvY2tlZFVSTCkpOwor
ICAgIGNzcFJlcG9ydC0+c2V0U3RyaW5nKCJvcmlnaW5hbC1wb2xpY3kiLCBoZWFkZXIpOworICAg
IGNzcFJlcG9ydC0+c2V0U3RyaW5nKCJibG9ja2VkLXVyaSIsIHN0cmlwVVJMRm9yVXNlSW5SZXBv
cnQoZG9jdW1lbnQsIGJsb2NrZWRVUkwpKTsKIAotICAgIFJlZlB0cjxTY3JpcHRDYWxsU3RhY2s+
IHN0YWNrID0gY3JlYXRlU2NyaXB0Q2FsbFN0YWNrKEpTTWFpblRocmVhZEV4ZWNTdGF0ZTo6Y3Vy
cmVudFN0YXRlKCksIDIpOwotICAgIGNvbnN0IFNjcmlwdENhbGxGcmFtZSogY2FsbEZyYW1lID0g
c3RhY2stPmZpcnN0Tm9uTmF0aXZlQ2FsbEZyYW1lKCk7Ci0gICAgaWYgKGNhbGxGcmFtZSAmJiBj
YWxsRnJhbWUtPmxpbmVOdW1iZXIoKSkgewotICAgICAgICBVUkwgc291cmNlID0gVVJMKFVSTCgp
LCBjYWxsRnJhbWUtPnNvdXJjZVVSTCgpKTsKLSAgICAgICAgY3NwUmVwb3J0LT5zZXRTdHJpbmco
QVNDSUlMaXRlcmFsKCJzb3VyY2UtZmlsZSIpLCBzdHJpcFVSTEZvclVzZUluUmVwb3J0KGRvY3Vt
ZW50LCBzb3VyY2UpKTsKLSAgICAgICAgY3NwUmVwb3J0LT5zZXROdW1iZXIoQVNDSUlMaXRlcmFs
KCJsaW5lLW51bWJlciIpLCBjYWxsRnJhbWUtPmxpbmVOdW1iZXIoKSk7CisgICAgUmVmUHRyPFNj
cmlwdENhbGxTdGFjaz4gc3RhY2sgPSBjcmVhdGVTY3JpcHRDYWxsU3RhY2soSlNNYWluVGhyZWFk
RXhlY1N0YXRlOjpjdXJyZW50U3RhdGUoKSwgMiwgZmFsc2UpOworICAgIGlmIChzdGFjaykgewor
ICAgICAgICBjb25zdCBTY3JpcHRDYWxsRnJhbWUmIGNhbGxGcmFtZSA9IGdldEZpcnN0Tm9uTmF0
aXZlRnJhbWUoc3RhY2spOworCisgICAgICAgIGlmIChjYWxsRnJhbWUubGluZU51bWJlcigpKSB7
CisgICAgICAgICAgICBVUkwgc291cmNlID0gVVJMKFBhcnNlZFVSTFN0cmluZywgY2FsbEZyYW1l
LnNvdXJjZVVSTCgpKTsKKyAgICAgICAgICAgIGNzcFJlcG9ydC0+c2V0U3RyaW5nKCJzb3VyY2Ut
ZmlsZSIsIHN0cmlwVVJMRm9yVXNlSW5SZXBvcnQoZG9jdW1lbnQsIHNvdXJjZSkpOworICAgICAg
ICAgICAgY3NwUmVwb3J0LT5zZXROdW1iZXIoImxpbmUtbnVtYmVyIiwgY2FsbEZyYW1lLmxpbmVO
dW1iZXIoKSk7CisgICAgICAgIH0KICAgICB9CiAKICAgICBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0
PiByZXBvcnRPYmplY3QgPSBJbnNwZWN0b3JPYmplY3Q6OmNyZWF0ZSgpOwotICAgIHJlcG9ydE9i
amVjdC0+c2V0T2JqZWN0KEFTQ0lJTGl0ZXJhbCgiY3NwLXJlcG9ydCIpLCBjc3BSZXBvcnQucmVs
ZWFzZSgpKTsKKyAgICByZXBvcnRPYmplY3QtPnNldE9iamVjdCgiY3NwLXJlcG9ydCIsIGNzcFJl
cG9ydC5yZWxlYXNlKCkpOwogCiAgICAgUmVmUHRyPEZvcm1EYXRhPiByZXBvcnQgPSBGb3JtRGF0
YTo6Y3JlYXRlKHJlcG9ydE9iamVjdC0+dG9KU09OU3RyaW5nKCkudXRmOCgpKTsKIApJbmRleDog
U291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNwcAkocmV2aXNpb24gMTY0NTUzKQorKysgU291cmNlL1dl
YkNvcmUvcGFnZS9ET01XaW5kb3cuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04NDYsNyArODQ2LDcg
QEAgdm9pZCBET01XaW5kb3c6OnBvc3RNZXNzYWdlKFBhc3NSZWZQdHI8UwogICAgIC8vIENhcHR1
cmUgc3RhY2sgdHJhY2Ugb25seSB3aGVuIGluc3BlY3RvciBmcm9udC1lbmQgaXMgbG9hZGVkIGFz
IGl0IG1heSBiZSB0aW1lIGNvbnN1bWluZy4KICAgICBSZWZQdHI8U2NyaXB0Q2FsbFN0YWNrPiBz
dGFja1RyYWNlOwogICAgIGlmIChJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmNvbnNvbGVBZ2Vu
dEVuYWJsZWQoc291cmNlRG9jdW1lbnQpKQotICAgICAgICBzdGFja1RyYWNlID0gY3JlYXRlU2Ny
aXB0Q2FsbFN0YWNrKEpTTWFpblRocmVhZEV4ZWNTdGF0ZTo6Y3VycmVudFN0YXRlKCksIFNjcmlw
dENhbGxTdGFjazo6bWF4Q2FsbFN0YWNrU2l6ZVRvQ2FwdHVyZSk7CisgICAgICAgIHN0YWNrVHJh
Y2UgPSBjcmVhdGVTY3JpcHRDYWxsU3RhY2soSlNNYWluVGhyZWFkRXhlY1N0YXRlOjpjdXJyZW50
U3RhdGUoKSwgU2NyaXB0Q2FsbFN0YWNrOjptYXhDYWxsU3RhY2tTaXplVG9DYXB0dXJlLCB0cnVl
KTsKIAogICAgIC8vIFNjaGVkdWxlIHRoZSBtZXNzYWdlLgogICAgIFBvc3RNZXNzYWdlVGltZXIq
IHRpbWVyID0gbmV3IFBvc3RNZXNzYWdlVGltZXIodGhpcywgbWVzc2FnZSwgc291cmNlT3JpZ2lu
LCAmc291cmNlLCBzdGQ6Om1vdmUoY2hhbm5lbHMpLCB0YXJnZXQuZ2V0KCksIHN0YWNrVHJhY2Uu
cmVsZWFzZSgpKTsKSW5kZXg6IFNvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkluc3BlY3RvclVJL0NoYW5nZUxvZwkocmV2aXNpb24gMTY0NTUz
KQorKysgU291cmNlL1dlYkluc3BlY3RvclVJL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAt
MSwzICsxLDE2IEBACisyMDE0LTAyLTIyICBEYW4gQmVybnN0ZWluICA8bWl0ekBhcHBsZS5jb20+
CisKKyAgICAgICAgUkVHUkVTU0lPTiAocjE2NDUwNyk6IENyYXNoIGJlbmVhdGggSlNHbG9iYWxP
YmplY3RJbnNwZWN0b3JDb250cm9sbGVyOjpyZXBvcnRBUElFeGNlcHRpb24gYXQgZmFjZWJvb2su
Y29tLCB0d2l0dGVyLmNvbSwgeW91dHViZS5jb20KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTEyOTIyNworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIFJldmVydGVkIHIxNjQ1MDcuCisKKyAgICAgICAgKiBVc2Vy
SW50ZXJmYWNlL1ZpZXdzL0NvbnNvbGVNZXNzYWdlSW1wbC5qczoKKyAgICAgICAgKFdlYkluc3Bl
Y3Rvci5Db25zb2xlTWVzc2FnZUltcGwucHJvdG90eXBlLl9mb3JtYXRNZXNzYWdlKToKKyAgICAg
ICAgKFdlYkluc3BlY3Rvci5Db25zb2xlTWVzc2FnZUltcGwucHJvdG90eXBlLl9wb3B1bGF0ZVN0
YWNrVHJhY2VUcmVlRWxlbWVudCk6CisKIDIwMTQtMDItMjEgIFRpbW90aHkgSGF0Y2hlciAgPHRp
bW90aHlAYXBwbGUuY29tPgogCiAgICAgICAgIE9yZ2FuaXplIFdlYkluc3BlY3RvclVJL1VzZXJJ
bnRlcmZhY2UgaW50byBzdWItZGlyZWN0b3JpZXMuCkluZGV4OiBTb3VyY2UvV2ViSW5zcGVjdG9y
VUkvVXNlckludGVyZmFjZS9WaWV3cy9Db25zb2xlTWVzc2FnZUltcGwuanMKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQ29uc29sZU1lc3Nh
Z2VJbXBsLmpzCShyZXZpc2lvbiAxNjQ1NTMpCisrKyBTb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNl
ckludGVyZmFjZS9WaWV3cy9Db25zb2xlTWVzc2FnZUltcGwuanMJKHdvcmtpbmcgY29weSkKQEAg
LTEwOSwxMSArMTA5LDEwIEBAIFdlYkluc3BlY3Rvci5Db25zb2xlTWVzc2FnZUltcGwucHJvdG90
eXAKICAgICAgICAgfQogCiAgICAgICAgIGlmICh0aGlzLnNvdXJjZSAhPT0gV2ViSW5zcGVjdG9y
LkNvbnNvbGVNZXNzYWdlLk1lc3NhZ2VTb3VyY2UuTmV0d29yayB8fCB0aGlzLl9yZXF1ZXN0KSB7
Ci0gICAgICAgICAgICB2YXIgZmlyc3ROb25OYXRpdmVDYWxsRnJhbWUgPSB0aGlzLl9maXJzdE5v
bk5hdGl2ZUNhbGxGcmFtZSgpOwotICAgICAgICAgICAgaWYgKGZpcnN0Tm9uTmF0aXZlQ2FsbEZy
YW1lKSB7Ci0gICAgICAgICAgICAgICAgdmFyIHVybEVsZW1lbnQgPSB0aGlzLl9saW5raWZ5Q2Fs
bEZyYW1lKGZpcnN0Tm9uTmF0aXZlQ2FsbEZyYW1lKTsKKyAgICAgICAgICAgIGlmICh0aGlzLl9z
dGFja1RyYWNlICYmIHRoaXMuX3N0YWNrVHJhY2UubGVuZ3RoICYmIHRoaXMuX3N0YWNrVHJhY2Vb
MF0udXJsKSB7CisgICAgICAgICAgICAgICAgdmFyIHVybEVsZW1lbnQgPSB0aGlzLl9saW5raWZ5
Q2FsbEZyYW1lKHRoaXMuX3N0YWNrVHJhY2VbMF0pOwogICAgICAgICAgICAgICAgIHRoaXMuX2Zv
cm1hdHRlZE1lc3NhZ2UuYXBwZW5kQ2hpbGQodXJsRWxlbWVudCk7Ci0gICAgICAgICAgICB9IGVs
c2UgaWYgKHRoaXMudXJsICYmICF0aGlzLl9zaG91bGRIaWRlVVJMKHRoaXMudXJsKSkgeworICAg
ICAgICAgICAgfSBlbHNlIGlmICh0aGlzLnVybCAmJiB0aGlzLnVybCAhPT0gInVuZGVmaW5lZCIp
IHsKICAgICAgICAgICAgICAgICB2YXIgdXJsRWxlbWVudCA9IHRoaXMuX2xpbmtpZnlMb2NhdGlv
bih0aGlzLnVybCwgdGhpcy5saW5lLCB0aGlzLmNvbHVtbik7CiAgICAgICAgICAgICAgICAgdGhp
cy5fZm9ybWF0dGVkTWVzc2FnZS5hcHBlbmRDaGlsZCh1cmxFbGVtZW50KTsKICAgICAgICAgICAg
IH0KQEAgLTE0NiwyNiArMTQ1LDYgQEAgV2ViSW5zcGVjdG9yLkNvbnNvbGVNZXNzYWdlSW1wbC5w
cm90b3R5cAogICAgICAgICByZXR1cm4gISF0aGlzLl9zdGFja1RyYWNlICYmIHRoaXMuX3N0YWNr
VHJhY2UubGVuZ3RoICYmICh0aGlzLnNvdXJjZSA9PT0gV2ViSW5zcGVjdG9yLkNvbnNvbGVNZXNz
YWdlLk1lc3NhZ2VTb3VyY2UuTmV0d29yayB8fCB0aGlzLmxldmVsID09PSBXZWJJbnNwZWN0b3Iu
Q29uc29sZU1lc3NhZ2UuTWVzc2FnZUxldmVsLkVycm9yIHx8IHRoaXMudHlwZSA9PT0gV2ViSW5z
cGVjdG9yLkNvbnNvbGVNZXNzYWdlLk1lc3NhZ2VUeXBlLlRyYWNlKTsKICAgICB9LAogCi0gICAg
X3Nob3VsZEhpZGVVUkw6IGZ1bmN0aW9uKHVybCkKLSAgICB7Ci0gICAgICAgIHJldHVybiB1cmwg
PT09ICJ1bmRlZmluZWQiIHx8IHVybCA9PT0gIltuYXRpdmUgY29kZV0iOwotICAgIH0sCi0KLSAg
ICBfZmlyc3ROb25OYXRpdmVDYWxsRnJhbWU6IGZ1bmN0aW9uKCkKLSAgICB7Ci0gICAgICAgIGlm
ICghdGhpcy5fc3RhY2tUcmFjZSkKLSAgICAgICAgICAgIHJldHVybiBudWxsOwotCi0gICAgICAg
IGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5fc3RhY2tUcmFjZS5sZW5ndGg7IGkrKykgewotICAg
ICAgICAgICAgdmFyIGZyYW1lID0gdGhpcy5fc3RhY2tUcmFjZVtpXTsKLSAgICAgICAgICAgIGlm
ICghZnJhbWUudXJsIHx8IGZyYW1lLnVybCA9PT0gIltuYXRpdmUgY29kZV0iKQotICAgICAgICAg
ICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgcmV0dXJuIGZyYW1lOwotICAgICAgICB9Ci0K
LSAgICAgICAgcmV0dXJuIG51bGw7Ci0gICAgfSwKLQogICAgIGdldCBtZXNzYWdlKCkKICAgICB7
CiAgICAgICAgIC8vIGZvcmNlIG1lc3NhZ2UgZm9ybWF0dGluZwpAQCAtNTQ3LDcgKzUyNiw3IEBA
IFdlYkluc3BlY3Rvci5Db25zb2xlTWVzc2FnZUltcGwucHJvdG90eXAKICAgICAgICAgICAgIG1l
c3NhZ2VUZXh0RWxlbWVudC5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShmdW5j
dGlvbk5hbWUpKTsKICAgICAgICAgICAgIGNvbnRlbnQuYXBwZW5kQ2hpbGQobWVzc2FnZVRleHRF
bGVtZW50KTsKIAotICAgICAgICAgICAgaWYgKGZyYW1lLnVybCAmJiAhdGhpcy5fc2hvdWxkSGlk
ZVVSTChmcmFtZS51cmwpKSB7CisgICAgICAgICAgICBpZiAoZnJhbWUudXJsKSB7CiAgICAgICAg
ICAgICAgICAgdmFyIHVybEVsZW1lbnQgPSB0aGlzLl9saW5raWZ5Q2FsbEZyYW1lKGZyYW1lKTsK
ICAgICAgICAgICAgICAgICBjb250ZW50LmFwcGVuZENoaWxkKHVybEVsZW1lbnQpOwogICAgICAg
ICAgICAgfQo=
</data>
<flag name="review"
          id="249090"
          type_id="1"
          status="+"
          setter="eric.carlson"
    />
          </attachment>
      

    </bug>

</bugzilla>