<?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>40755</bug_id>
          
          <creation_ts>2010-06-16 19:13:32 -0700</creation_ts>
          <short_desc>Clean up error conditions for Typed Arrays</short_desc>
          <delta_ts>2010-06-17 11:15:44 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebGL</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</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="Kenneth Russell">kbr</reporter>
          <assigned_to name="Kenneth Russell">kbr</assigned_to>
          <cc>cedricv</cc>
    
    <cc>cmarrin</cc>
    
    <cc>dglazkov</cc>
    
    <cc>eric</cc>
    
    <cc>oliver</cc>
    
    <cc>zmo</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>239182</commentid>
    <comment_count>0</comment_count>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2010-06-16 19:13:32 -0700</bug_when>
    <thetext>Based on feedback from Cedric Vivier and others on the public WebGL mailing list, there are several error condition corner cases that need to be clarified or fixed in the Typed Array implementation.

1. For parity with the behavior of &quot;new Array(length)&quot;, RangeError should be thrown if the length passed to the ArrayBuffer or ArrayBufferView constructors is negative.
2. INDEX_SIZE_ERR should be thrown when the length passed to the constructor was too large to allocate.
3. INDEX_SIZE_ERR must be thrown when the offset passed to the ArrayBufferView(ArrayBuffer, offset, length) is unaligned, or the offset and length are out of range.
4. Additional null checks are needed in some allocation code paths to prevent crashes.

The unit tests need to be updated to cover more of these cases.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>239186</commentid>
    <comment_count>1</comment_count>
      <attachid>58954</attachid>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2010-06-16 19:30:12 -0700</bug_when>
    <thetext>Created attachment 58954
Patch

From the ChangeLog:

Fixed handling of NaN/+inf/-inf lengths. Throw RangeError for too-large or negative lengths. Changed all error code paths to throw exceptions. Clarified exception types. Added necessary null checks during allocation. Added tests for overloaded ArrayBufferView constructors taking null, and improperly aligned offsets. Improved precision of tests causing INDEX_SIZE_ERR to be thrown.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>239187</commentid>
    <comment_count>2</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-06-16 19:36:11 -0700</bug_when>
    <thetext>Attachment 58954 did not build on mac:
Build output: http://webkit-commit-queue.appspot.com/results/3315260</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>239189</commentid>
    <comment_count>3</comment_count>
      <attachid>58955</attachid>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2010-06-16 19:49:10 -0700</bug_when>
    <thetext>Created attachment 58955
Revised patch

Fixed build problem on Leopard with last patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>239465</commentid>
    <comment_count>4</comment_count>
      <attachid>58955</attachid>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2010-06-17 10:47:29 -0700</bug_when>
    <thetext>Comment on attachment 58955
Revised patch

ok.

I am a bit concerned that throwError family is multiplying like rabbits. Should we take away some when add new ones? Like throwError(&quot;Foo&quot;) already throws a type error by default.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>239487</commentid>
    <comment_count>5</comment_count>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2010-06-17 11:15:44 -0700</bug_when>
    <thetext>Committed r61339: &lt;http://trac.webkit.org/changeset/61339&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>58954</attachid>
            <date>2010-06-16 19:30:12 -0700</date>
            <delta_ts>2010-06-16 19:49:10 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>error-conditions.patch</filename>
            <type>text/plain</type>
            <size>39088</size>
            <attacher name="Kenneth Russell">kbr</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA2MTMwMCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsNDggQEAKKzIwMTAtMDYtMTYgIEtlbm5ldGggUnVzc2VsbCAgPGtickBnb29nbGUu
Y29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIENs
ZWFuIHVwIGVycm9yIGNvbmRpdGlvbnMgZm9yIFR5cGVkIEFycmF5cworICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDA3NTUKKworICAgICAgICAqIGJpbmRp
bmdzL2pzL0pTQXJyYXlCdWZmZXJDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNBcnJh
eUJ1ZmZlckNvbnN0cnVjdG9yOjpjb25zdHJ1Y3RKU0FycmF5QnVmZmVyKToKKyAgICAgICAgIC0g
Rml4ZWQgaGFuZGxpbmcgb2YgTmFOLytpbmYvLWluZiBsZW5ndGhzLiBUaHJvdyBSYW5nZUVycm9y
IGZvciB0b28tbGFyZ2Ugb3IgbmVnYXRpdmUgbGVuZ3Rocy4KKyAgICAgICAgKiBiaW5kaW5ncy9q
cy9KU0FycmF5QnVmZmVyVmlld0hlbHBlci5oOgorICAgICAgICAoV2ViQ29yZTo6Y29uc3RydWN0
QXJyYXlCdWZmZXJWaWV3KToKKyAgICAgICAgIC0gQ2hhbmdlZCBhbGwgZXJyb3IgY29kZSBwYXRo
cyB0byB0aHJvdyBleGNlcHRpb25zLiBDbGFyaWZpZWQgZXhjZXB0aW9uIHR5cGVzLgorICAgICAg
ICAqIGJpbmRpbmdzL2pzL0pTRmxvYXQzMkFycmF5Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkpTRmxvYXQzMkFycmF5Q29uc3RydWN0b3I6OmNvbnN0cnVjdEpTRmxvYXQzMkFycmF5KToK
KyAgICAgICAgIC0gUmVtb3ZlZCB0aHJvd2luZyBvZiBJTkRFWF9TSVpFX0VSUk9SLCBkZWxlZ2F0
aW5nIHJlc3BvbnNpYmlsaXR5IHRvIGNvbnN0cnVjdEFycmF5QnVmZmVyVmlldy4KKyAgICAgICAg
KiBiaW5kaW5ncy9qcy9KU0ludDE2QXJyYXlDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6
SlNJbnQxNkFycmF5Q29uc3RydWN0b3I6OmNvbnN0cnVjdEpTSW50MTZBcnJheSk6CisgICAgICAg
ICAtIFJlbW92ZWQgdGhyb3dpbmcgb2YgSU5ERVhfU0laRV9FUlJPUiwgZGVsZWdhdGluZyByZXNw
b25zaWJpbGl0eSB0byBjb25zdHJ1Y3RBcnJheUJ1ZmZlclZpZXcuCisgICAgICAgICogYmluZGlu
Z3MvanMvSlNJbnQzMkFycmF5Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTSW50MzJB
cnJheUNvbnN0cnVjdG9yOjpjb25zdHJ1Y3RKU0ludDMyQXJyYXkpOgorICAgICAgICAgLSBSZW1v
dmVkIHRocm93aW5nIG9mIElOREVYX1NJWkVfRVJST1IsIGRlbGVnYXRpbmcgcmVzcG9uc2liaWxp
dHkgdG8gY29uc3RydWN0QXJyYXlCdWZmZXJWaWV3LgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pT
SW50OEFycmF5Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTSW50OEFycmF5Q29uc3Ry
dWN0b3I6OmNvbnN0cnVjdEpTSW50OEFycmF5KToKKyAgICAgICAgIC0gUmVtb3ZlZCB0aHJvd2lu
ZyBvZiBJTkRFWF9TSVpFX0VSUk9SLCBkZWxlZ2F0aW5nIHJlc3BvbnNpYmlsaXR5IHRvIGNvbnN0
cnVjdEFycmF5QnVmZmVyVmlldy4KKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU1VpbnQxNkFycmF5
Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTVWludDE2QXJyYXlDb25zdHJ1Y3Rvcjo6
Y29uc3RydWN0SlNVaW50MTZBcnJheSk6CisgICAgICAgICAtIFJlbW92ZWQgdGhyb3dpbmcgb2Yg
SU5ERVhfU0laRV9FUlJPUiwgZGVsZWdhdGluZyByZXNwb25zaWJpbGl0eSB0byBjb25zdHJ1Y3RB
cnJheUJ1ZmZlclZpZXcuCisgICAgICAgICogYmluZGluZ3MvanMvSlNVaW50MzJBcnJheUN1c3Rv
bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU1VpbnQzMkFycmF5Q29uc3RydWN0b3I6OmNvbnN0
cnVjdEpTVWludDMyQXJyYXkpOgorICAgICAgICAgLSBSZW1vdmVkIHRocm93aW5nIG9mIElOREVY
X1NJWkVfRVJST1IsIGRlbGVnYXRpbmcgcmVzcG9uc2liaWxpdHkgdG8gY29uc3RydWN0QXJyYXlC
dWZmZXJWaWV3LgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTVWludDhBcnJheUN1c3RvbS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpKU1VpbnQ4QXJyYXlDb25zdHJ1Y3Rvcjo6Y29uc3RydWN0SlNV
aW50OEFycmF5KToKKyAgICAgICAgIC0gUmVtb3ZlZCB0aHJvd2luZyBvZiBJTkRFWF9TSVpFX0VS
Uk9SLCBkZWxlZ2F0aW5nIHJlc3BvbnNpYmlsaXR5IHRvIGNvbnN0cnVjdEFycmF5QnVmZmVyVmll
dy4KKyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhBcnJheUJ1ZmZlckN1c3RvbS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpWOEFycmF5QnVmZmVyOjpjb25zdHJ1Y3RvckNhbGxiYWNrKToK
KyAgICAgICAgIC0gRml4ZWQgaGFuZGxpbmcgb2YgTmFOLytpbmYvLWluZiBsZW5ndGhzLiBUaHJv
dyBSYW5nZUVycm9yIGZvciB0b28tbGFyZ2Ugb3IgbmVnYXRpdmUgbGVuZ3Rocy4KKyAgICAgICAg
ICAgQ2xhcmlmaWVkIGV4Y2VwdGlvbiB0eXBlcy4KKyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0
b20vVjhBcnJheUJ1ZmZlclZpZXdDdXN0b20uaDoKKyAgICAgICAgKFdlYkNvcmU6OmNvbnN0cnVj
dFdlYkdMQXJyYXkpOgorICAgICAgICAgLSBDbGFyaWZpZWQgZXhjZXB0aW9uIHR5cGVzIGFuZCB0
aHJvd2luZyBvZiBleGNlcHRpb25zIGFsb25nIGFsbCBlcnJvciBjb2RlIHBhdGhzLgorICAgICAg
ICAqIGh0bWwvY2FudmFzL1R5cGVkQXJyYXlCYXNlLmg6CisgICAgICAgIChXZWJDb3JlOjpUeXBl
ZEFycmF5QmFzZTo6Y3JlYXRlKToKKyAgICAgICAgIC0gQWRkZWQgbmVjZXNzYXJ5IG51bGwgY2hl
Y2tzIGR1cmluZyBhbGxvY2F0aW9uLgorCiAyMDEwLTA2LTE2ICBBbnRvbmlvIEdvbWVzICA8dG9u
aWtpdG9vQHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgU2ltb24gRnJhc2VyLgpJ
bmRleDogV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0FycmF5QnVmZmVyQ3VzdG9tLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTQXJyYXlCdWZmZXJDdXN0b20uY3BwCShyZXZp
c2lvbiA2MTMwMCkKKysrIFdlYkNvcmUvYmluZGluZ3MvanMvSlNBcnJheUJ1ZmZlckN1c3RvbS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTMxLDYgKzMxLDcgQEAKIAogI2luY2x1ZGUgIkFycmF5QnVm
ZmVyLmgiCiAjaW5jbHVkZSAiRXhjZXB0aW9uQ29kZS5oIgorI2luY2x1ZGUgPHJ1bnRpbWUvRXJy
b3IuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC00MCwxNyArNDEsMTQgQEAgRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBKU0FycmF5QnVmZgogewogICAgIEpTQXJyYXlCdWZmZXJD
b25zdHJ1Y3RvcioganNDb25zdHJ1Y3RvciA9IHN0YXRpY19jYXN0PEpTQXJyYXlCdWZmZXJDb25z
dHJ1Y3Rvcio+KGV4ZWMtPmNhbGxlZSgpKTsKIAotICAgIHVuc2lnbmVkIGludCBzaXplID0gMDsK
LSAgICBpZiAoZXhlYy0+YXJndW1lbnRDb3VudCgpID09IDEpIHsKLSAgICAgICAgc2l6ZSA9ICh1
bnNpZ25lZCBpbnQpZXhlYy0+YXJndW1lbnQoMCkudG9JbnQzMihleGVjKTsKLSAgICAgICAgaWYg
KGlzbmFuKHNpemUpKQotICAgICAgICAgICAgc2l6ZSA9IDA7Ci0gICAgfQotICAgIFJlZlB0cjxB
cnJheUJ1ZmZlcj4gYnVmZmVyID0gQXJyYXlCdWZmZXI6OmNyZWF0ZShzaXplLCAxKTsKLSAgICBp
ZiAoIWJ1ZmZlci5nZXQoKSl7Ci0gICAgICAgIHNldERPTUV4Y2VwdGlvbihleGVjLCBJTkRFWF9T
SVpFX0VSUik7Ci0gICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNWYWx1ZSgpKTsKLSAg
ICB9CisgICAgaW50IGxlbmd0aCA9IDA7CisgICAgaWYgKGV4ZWMtPmFyZ3VtZW50Q291bnQoKSA+
IDApCisgICAgICAgIGxlbmd0aCA9IGV4ZWMtPmFyZ3VtZW50KDApLnRvSW50MzIoZXhlYyk7IC8v
IE5hTi8raW5mLy1pbmYgcmV0dXJucyAwLCB0aGlzIGlzIGludGVuZGVkIGJ5IFdlYklETAorICAg
IFJlZlB0cjxBcnJheUJ1ZmZlcj4gYnVmZmVyOworICAgIGlmIChsZW5ndGggPj0gMCkKKyAgICAg
ICAgYnVmZmVyID0gQXJyYXlCdWZmZXI6OmNyZWF0ZShzdGF0aWNfY2FzdDx1bnNpZ25lZD4obGVu
Z3RoKSwgMSk7CisgICAgaWYgKCFidWZmZXIuZ2V0KCkpCisgICAgICAgIHJldHVybiB0aHJvd0Vy
cm9yKGV4ZWMsIGNyZWF0ZVJhbmdlRXJyb3IoZXhlYywgIkFycmF5QnVmZmVyIHNpemUgaXMgbm90
IGEgc21hbGwgZW5vdWdoIHBvc2l0aXZlIGludGVnZXIuIikpOwogICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUoYXNPYmplY3QodG9KUyhleGVjLCBqc0NvbnN0cnVjdG9yLT5nbG9iYWxPYmplY3Qo
KSwgYnVmZmVyLmdldCgpKSkpOwogfQogCkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTQXJy
YXlCdWZmZXJWaWV3SGVscGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U0FycmF5QnVmZmVyVmlld0hlbHBlci5oCShyZXZpc2lvbiA2MTMwMCkKKysrIFdlYkNvcmUvYmlu
ZGluZ3MvanMvSlNBcnJheUJ1ZmZlclZpZXdIZWxwZXIuaAkod29ya2luZyBjb3B5KQpAQCAtODMs
NyArODMsOCBAQCBKU0M6OkpTVmFsdWUgc2V0V2ViR0xBcnJheUhlbHBlcihKU0M6OkV4CiAgICAg
cmV0dXJuIEpTQzo6dGhyb3dTeW50YXhFcnJvcihleGVjKTsKIH0KIAotLy8gVGVtcGxhdGUgZnVu
Y3Rpb24gdXNlZCBieSBYWFhBcnJheUNvbnN0cnVjdG9ycworLy8gVGVtcGxhdGUgZnVuY3Rpb24g
dXNlZCBieSBYWFhBcnJheUNvbnN0cnVjdG9ycy4KKy8vIElmIHRoaXMgcmV0dXJucyAwLCBpdCB3
aWxsIGFscmVhZHkgaGF2ZSB0aHJvd24gYSBKYXZhU2NyaXB0IGV4Y2VwdGlvbi4KIHRlbXBsYXRl
PGNsYXNzIEMsIHR5cGVuYW1lIFQ+CiBQYXNzUmVmUHRyPEFycmF5QnVmZmVyVmlldz4gY29uc3Ry
dWN0QXJyYXlCdWZmZXJWaWV3KEpTQzo6RXhlY1N0YXRlKiBleGVjKQogewpAQCAtOTksOCArMTAw
LDkgQEAgUGFzc1JlZlB0cjxBcnJheUJ1ZmZlclZpZXc+IGNvbnN0cnVjdEFycgogICAgIGlmIChl
eGVjLT5hcmd1bWVudENvdW50KCkgPCAxKQogICAgICAgICByZXR1cm4gQzo6Y3JlYXRlKDAsIDAs
IDApOwogICAgIAotICAgIGlmIChleGVjLT5hcmd1bWVudENvdW50KCkgPiAxICYmICFleGVjLT5h
cmd1bWVudCgwKS5pc09iamVjdCgpKSB7CisgICAgaWYgKGV4ZWMtPmFyZ3VtZW50KDApLmlzTnVs
bCgpKSB7CiAgICAgICAgIC8vIEludmFsaWQgZmlyc3QgYXJndW1lbnQKKyAgICAgICAgdGhyb3dU
eXBlRXJyb3IoZXhlYyk7CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KIApAQCAtMTExLDcgKzEx
MywxMCBAQCBQYXNzUmVmUHRyPEFycmF5QnVmZmVyVmlldz4gY29uc3RydWN0QXJyCiAgICAgICAg
ICAgICB1bnNpZ25lZCBpbnQgbGVuZ3RoID0gKGJ1ZmZlci0+Ynl0ZUxlbmd0aCgpIC0gb2Zmc2V0
KSAvIHNpemVvZihUKTsKICAgICAgICAgICAgIGlmIChleGVjLT5hcmd1bWVudENvdW50KCkgPiAy
KQogICAgICAgICAgICAgICAgIGxlbmd0aCA9IGV4ZWMtPmFyZ3VtZW50KDIpLnRvVUludDMyKGV4
ZWMpOwotICAgICAgICAgICAgcmV0dXJuIEM6OmNyZWF0ZShidWZmZXIsIG9mZnNldCwgbGVuZ3Ro
KTsKKyAgICAgICAgICAgIFBhc3NSZWZQdHI8QXJyYXlCdWZmZXJWaWV3PiBhcnJheSA9IEM6OmNy
ZWF0ZShidWZmZXIsIG9mZnNldCwgbGVuZ3RoKTsKKyAgICAgICAgICAgIGlmICghYXJyYXkpCisg
ICAgICAgICAgICAgICAgc2V0RE9NRXhjZXB0aW9uKGV4ZWMsIElOREVYX1NJWkVfRVJSKTsKKyAg
ICAgICAgICAgIHJldHVybiBhcnJheTsKICAgICAgICAgfQogICAgICAgICAKICAgICAgICAgSlND
OjpKU09iamVjdCogYXJyYXkgPSBhc09iamVjdChleGVjLT5hcmd1bWVudCgwKSk7CkBAIC0xMzAs
MTEgKzEzNSwxOSBAQCBQYXNzUmVmUHRyPEFycmF5QnVmZmVyVmlldz4gY29uc3RydWN0QXJyCiAg
ICAgICAgICAgICB2YWx1ZXMuZ2V0KClbaV0gPSBzdGF0aWNfY2FzdDxUPih2LnRvTnVtYmVyKGV4
ZWMpKTsKICAgICAgICAgfQogICAgICAgICAKLSAgICAgICAgcmV0dXJuIEM6OmNyZWF0ZSh2YWx1
ZXMuZ2V0KCksIGxlbmd0aCk7CisgICAgICAgIFBhc3NSZWZQdHI8QXJyYXlCdWZmZXJWaWV3PiBy
ZXN1bHQgPSBDOjpjcmVhdGUodmFsdWVzLmdldCgpLCBsZW5ndGgpOworICAgICAgICBpZiAoIXJl
c3VsdCkKKyAgICAgICAgICAgIHNldERPTUV4Y2VwdGlvbihleGVjLCBJTkRFWF9TSVpFX0VSUik7
CisgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQogICAgIAotICAgIHVuc2lnbmVkIHNpemUg
PSBleGVjLT5hcmd1bWVudCgwKS50b1VJbnQzMihleGVjKTsKLSAgICByZXR1cm4gQzo6Y3JlYXRl
KHNpemUpOworICAgIGludCBsZW5ndGggPSBleGVjLT5hcmd1bWVudCgwKS50b0ludDMyKGV4ZWMp
OworICAgIFBhc3NSZWZQdHI8QXJyYXlCdWZmZXJWaWV3PiByZXN1bHQ7CisgICAgaWYgKGxlbmd0
aCA+PSAwKQorICAgICAgICByZXN1bHQgPSBDOjpjcmVhdGUoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+
KGxlbmd0aCkpOworICAgIGlmICghcmVzdWx0KQorICAgICAgICB0aHJvd0Vycm9yKGV4ZWMsIGNy
ZWF0ZVJhbmdlRXJyb3IoZXhlYywgIkFycmF5QnVmZmVyVmlldyBzaXplIGlzIG5vdCBhIHNtYWxs
IGVub3VnaCBwb3NpdGl2ZSBpbnRlZ2VyLiIpKTsKKyAgICByZXR1cm4gcmVzdWx0OwogfQogCiB9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTRmxvYXQz
MkFycmF5Q3VzdG9tLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTRmxv
YXQzMkFycmF5Q3VzdG9tLmNwcAkocmV2aXNpb24gNjEzMDApCisrKyBXZWJDb3JlL2JpbmRpbmdz
L2pzL0pTRmxvYXQzMkFycmF5Q3VzdG9tLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTUsMTAgKzU1
LDkgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBKU0Zsb2F0MzJBcgogewogICAgIEpT
RmxvYXQzMkFycmF5Q29uc3RydWN0b3IqIGpzQ29uc3RydWN0b3IgPSBzdGF0aWNfY2FzdDxKU0Zs
b2F0MzJBcnJheUNvbnN0cnVjdG9yKj4oZXhlYy0+Y2FsbGVlKCkpOwogICAgIFJlZlB0cjxGbG9h
dDMyQXJyYXk+IGFycmF5ID0gc3RhdGljX2Nhc3Q8RmxvYXQzMkFycmF5Kj4oY29uc3RydWN0QXJy
YXlCdWZmZXJWaWV3PEZsb2F0MzJBcnJheSwgZmxvYXQ+KGV4ZWMpLmdldCgpKTsKLSAgICBpZiAo
IWFycmF5LmdldCgpKSB7Ci0gICAgICAgIHNldERPTUV4Y2VwdGlvbihleGVjLCBJTkRFWF9TSVpF
X0VSUik7CisgICAgaWYgKCFhcnJheS5nZXQoKSkKKyAgICAgICAgLy8gRXhjZXB0aW9uIGhhcyBh
bHJlYWR5IGJlZW4gdGhyb3duLgogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTVmFs
dWUoKSk7Ci0gICAgfQogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoYXNPYmplY3QodG9KUyhl
eGVjLCBqc0NvbnN0cnVjdG9yLT5nbG9iYWxPYmplY3QoKSwgYXJyYXkuZ2V0KCkpKSk7CiB9CiAK
SW5kZXg6IFdlYkNvcmUvYmluZGluZ3MvanMvSlNJbnQ4QXJyYXlDdXN0b20uY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYkNvcmUvYmluZGluZ3MvanMvSlNJbnQ4QXJyYXlDdXN0b20uY3BwCShyZXZpc2lv
biA2MTMwMCkKKysrIFdlYkNvcmUvYmluZGluZ3MvanMvSlNJbnQ4QXJyYXlDdXN0b20uY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC01NiwxMCArNTYsOSBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIEpTSW50OEFycmF5CiB7CiAgICAgSlNJbnQ4QXJyYXlDb25zdHJ1Y3RvcioganNDb25zdHJ1
Y3RvciA9IHN0YXRpY19jYXN0PEpTSW50OEFycmF5Q29uc3RydWN0b3IqPihleGVjLT5jYWxsZWUo
KSk7CiAgICAgUmVmUHRyPEludDhBcnJheT4gYXJyYXkgPSBzdGF0aWNfY2FzdDxJbnQ4QXJyYXkq
Pihjb25zdHJ1Y3RBcnJheUJ1ZmZlclZpZXc8SW50OEFycmF5LCBzaWduZWQgY2hhcj4oZXhlYyku
Z2V0KCkpOwotICAgIGlmICghYXJyYXkuZ2V0KCkpIHsKLSAgICAgICAgc2V0RE9NRXhjZXB0aW9u
KGV4ZWMsIElOREVYX1NJWkVfRVJSKTsKKyAgICBpZiAoIWFycmF5LmdldCgpKQorICAgICAgICAv
LyBFeGNlcHRpb24gaGFzIGFscmVhZHkgYmVlbiB0aHJvd24uCiAgICAgICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUoSlNWYWx1ZSgpKTsKLSAgICB9CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShhc09iamVjdCh0b0pTKGV4ZWMsIGpzQ29uc3RydWN0b3ItPmdsb2JhbE9iamVjdCgpLCBhcnJh
eS5nZXQoKSkpKTsKIH0KIApJbmRleDogV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0ludDE2QXJyYXlD
dXN0b20uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3MvanMvSlNJbnQxNkFycmF5
Q3VzdG9tLmNwcAkocmV2aXNpb24gNjEzMDApCisrKyBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTSW50
MTZBcnJheUN1c3RvbS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU1LDEwICs1NSw5IEBAIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSlNJbnQxNkFycmEKIHsKICAgICBKU0ludDE2QXJyYXlD
b25zdHJ1Y3RvcioganNDb25zdHJ1Y3RvciA9IHN0YXRpY19jYXN0PEpTSW50MTZBcnJheUNvbnN0
cnVjdG9yKj4oZXhlYy0+Y2FsbGVlKCkpOwogICAgIFJlZlB0cjxJbnQxNkFycmF5PiBhcnJheSA9
IHN0YXRpY19jYXN0PEludDE2QXJyYXkqPihjb25zdHJ1Y3RBcnJheUJ1ZmZlclZpZXc8SW50MTZB
cnJheSwgc2hvcnQ+KGV4ZWMpLmdldCgpKTsKLSAgICBpZiAoIWFycmF5LmdldCgpKSB7Ci0gICAg
ICAgIHNldERPTUV4Y2VwdGlvbihleGVjLCBJTkRFWF9TSVpFX0VSUik7CisgICAgaWYgKCFhcnJh
eS5nZXQoKSkKKyAgICAgICAgLy8gRXhjZXB0aW9uIGhhcyBhbHJlYWR5IGJlZW4gdGhyb3duLgog
ICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTVmFsdWUoKSk7Ci0gICAgfQogICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUoYXNPYmplY3QodG9KUyhleGVjLCBqc0NvbnN0cnVjdG9yLT5n
bG9iYWxPYmplY3QoKSwgYXJyYXkuZ2V0KCkpKSk7CiB9CiAKSW5kZXg6IFdlYkNvcmUvYmluZGlu
Z3MvanMvSlNJbnQzMkFycmF5Q3VzdG9tLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRp
bmdzL2pzL0pTSW50MzJBcnJheUN1c3RvbS5jcHAJKHJldmlzaW9uIDYxMzAwKQorKysgV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU0ludDMyQXJyYXlDdXN0b20uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01
NSwxMCArNTUsOSBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEpTSW50MzJBcnJhCiB7
CiAgICAgSlNJbnQzMkFycmF5Q29uc3RydWN0b3IqIGpzQ29uc3RydWN0b3IgPSBzdGF0aWNfY2Fz
dDxKU0ludDMyQXJyYXlDb25zdHJ1Y3Rvcio+KGV4ZWMtPmNhbGxlZSgpKTsKICAgICBSZWZQdHI8
SW50MzJBcnJheT4gYXJyYXkgPSBzdGF0aWNfY2FzdDxJbnQzMkFycmF5Kj4oY29uc3RydWN0QXJy
YXlCdWZmZXJWaWV3PEludDMyQXJyYXksIGludD4oZXhlYykuZ2V0KCkpOwotICAgIGlmICghYXJy
YXkuZ2V0KCkpIHsKLSAgICAgICAgc2V0RE9NRXhjZXB0aW9uKGV4ZWMsIElOREVYX1NJWkVfRVJS
KTsKKyAgICBpZiAoIWFycmF5LmdldCgpKQorICAgICAgICAvLyBFeGNlcHRpb24gaGFzIGFscmVh
ZHkgYmVlbiB0aHJvd24uCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNWYWx1ZSgp
KTsKLSAgICB9CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShhc09iamVjdCh0b0pTKGV4ZWMs
IGpzQ29uc3RydWN0b3ItPmdsb2JhbE9iamVjdCgpLCBhcnJheS5nZXQoKSkpKTsKIH0KIApJbmRl
eDogV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1VpbnQ4QXJyYXlDdXN0b20uY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYkNvcmUvYmluZGluZ3MvanMvSlNVaW50OEFycmF5Q3VzdG9tLmNwcAkocmV2aXNpb24g
NjEzMDApCisrKyBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTVWludDhBcnJheUN1c3RvbS5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTU1LDEwICs1NSw5IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgSlNVaW50OEFycmEKIHsKICAgICBKU1VpbnQ4QXJyYXlDb25zdHJ1Y3RvcioganNDb25zdHJ1
Y3RvciA9IHN0YXRpY19jYXN0PEpTVWludDhBcnJheUNvbnN0cnVjdG9yKj4oZXhlYy0+Y2FsbGVl
KCkpOwogICAgIFJlZlB0cjxVaW50OEFycmF5PiBhcnJheSA9IHN0YXRpY19jYXN0PFVpbnQ4QXJy
YXkqPihjb25zdHJ1Y3RBcnJheUJ1ZmZlclZpZXc8VWludDhBcnJheSwgdW5zaWduZWQgY2hhcj4o
ZXhlYykuZ2V0KCkpOwotICAgIGlmICghYXJyYXkuZ2V0KCkpIHsKLSAgICAgICAgc2V0RE9NRXhj
ZXB0aW9uKGV4ZWMsIElOREVYX1NJWkVfRVJSKTsKKyAgICBpZiAoIWFycmF5LmdldCgpKQorICAg
ICAgICAvLyBFeGNlcHRpb24gaGFzIGFscmVhZHkgYmVlbiB0aHJvd24uCiAgICAgICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUoSlNWYWx1ZSgpKTsKLSAgICB9CiAgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShhc09iamVjdCh0b0pTKGV4ZWMsIGpzQ29uc3RydWN0b3ItPmdsb2JhbE9iamVjdCgp
LCBhcnJheS5nZXQoKSkpKTsKIH0KIApJbmRleDogV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1VpbnQx
NkFycmF5Q3VzdG9tLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTVWlu
dDE2QXJyYXlDdXN0b20uY3BwCShyZXZpc2lvbiA2MTMwMCkKKysrIFdlYkNvcmUvYmluZGluZ3Mv
anMvSlNVaW50MTZBcnJheUN1c3RvbS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU1LDEwICs1NSw5
IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSlNVaW50MTZBcnIKIHsKICAgICBKU1Vp
bnQxNkFycmF5Q29uc3RydWN0b3IqIGpzQ29uc3RydWN0b3IgPSBzdGF0aWNfY2FzdDxKU1VpbnQx
NkFycmF5Q29uc3RydWN0b3IqPihleGVjLT5jYWxsZWUoKSk7CiAgICAgUmVmUHRyPFVpbnQxNkFy
cmF5PiBhcnJheSA9IHN0YXRpY19jYXN0PFVpbnQxNkFycmF5Kj4oY29uc3RydWN0QXJyYXlCdWZm
ZXJWaWV3PFVpbnQxNkFycmF5LCB1bnNpZ25lZCBzaG9ydD4oZXhlYykuZ2V0KCkpOwotICAgIGlm
ICghYXJyYXkuZ2V0KCkpIHsKLSAgICAgICAgc2V0RE9NRXhjZXB0aW9uKGV4ZWMsIElOREVYX1NJ
WkVfRVJSKTsKKyAgICBpZiAoIWFycmF5LmdldCgpKQorICAgICAgICAvLyBFeGNlcHRpb24gaGFz
IGFscmVhZHkgYmVlbiB0aHJvd24uCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNW
YWx1ZSgpKTsKLSAgICB9CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShhc09iamVjdCh0b0pT
KGV4ZWMsIGpzQ29uc3RydWN0b3ItPmdsb2JhbE9iamVjdCgpLCBhcnJheS5nZXQoKSkpKTsKIH0K
IApJbmRleDogV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1VpbnQzMkFycmF5Q3VzdG9tLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTVWludDMyQXJyYXlDdXN0b20uY3BwCShy
ZXZpc2lvbiA2MTMwMCkKKysrIFdlYkNvcmUvYmluZGluZ3MvanMvSlNVaW50MzJBcnJheUN1c3Rv
bS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU1LDEwICs1NSw5IEBAIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgSlNVaW50MzJBcnIKIHsKICAgICBKU1VpbnQzMkFycmF5Q29uc3RydWN0b3Iq
IGpzQ29uc3RydWN0b3IgPSBzdGF0aWNfY2FzdDxKU1VpbnQzMkFycmF5Q29uc3RydWN0b3IqPihl
eGVjLT5jYWxsZWUoKSk7CiAgICAgUmVmUHRyPFVpbnQzMkFycmF5PiBhcnJheSA9IHN0YXRpY19j
YXN0PFVpbnQzMkFycmF5Kj4oY29uc3RydWN0QXJyYXlCdWZmZXJWaWV3PFVpbnQzMkFycmF5LCB1
bnNpZ25lZCBpbnQ+KGV4ZWMpLmdldCgpKTsKLSAgICBpZiAoIWFycmF5LmdldCgpKSB7Ci0gICAg
ICAgIHNldERPTUV4Y2VwdGlvbihleGVjLCBJTkRFWF9TSVpFX0VSUik7CisgICAgaWYgKCFhcnJh
eS5nZXQoKSkKKyAgICAgICAgLy8gRXhjZXB0aW9uIGhhcyBhbHJlYWR5IGJlZW4gdGhyb3duLgog
ICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTVmFsdWUoKSk7Ci0gICAgfQogICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUoYXNPYmplY3QodG9KUyhleGVjLCBqc0NvbnN0cnVjdG9yLT5n
bG9iYWxPYmplY3QoKSwgYXJyYXkuZ2V0KCkpKSk7CiB9CiAKSW5kZXg6IFdlYkNvcmUvYmluZGlu
Z3MvdjgvY3VzdG9tL1Y4QXJyYXlCdWZmZXJDdXN0b20uY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNv
cmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4QXJyYXlCdWZmZXJDdXN0b20uY3BwCShyZXZpc2lvbiA2
MTMwMCkKKysrIFdlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4QXJyYXlCdWZmZXJDdXN0b20u
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NSw3ICs0NSw3IEBAIHY4OjpIYW5kbGU8djg6OlZhbHVl
PiBWOEFycmF5QnVmZmVyOjpjb24KICAgICBJTkNfU1RBVFMoIkRPTS5BcnJheUJ1ZmZlci5Db25z
dHJ1Y3RvciIpOwogCiAgICAgaWYgKCFhcmdzLklzQ29uc3RydWN0Q2FsbCgpKQotICAgICAgICBy
ZXR1cm4gdGhyb3dFcnJvcigiRE9NIG9iamVjdCBjb25zdHJ1Y3RvciBjYW5ub3QgYmUgY2FsbGVk
IGFzIGEgZnVuY3Rpb24uIik7CisgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKCJET00gb2JqZWN0
IGNvbnN0cnVjdG9yIGNhbm5vdCBiZSBjYWxsZWQgYXMgYSBmdW5jdGlvbi4iLCBWOFByb3h5OjpT
eW50YXhFcnJvcik7CiAKICAgICAvLyBJZiB3ZSByZXR1cm4gYSBwcmV2aW91c2x5IGNvbnN0cnVj
dGVkIEFycmF5QnVmZmVyLAogICAgIC8vIGUuZy4gZnJvbSB0aGUgY2FsbCB0byBBcnJheUJ1ZmZl
clZpZXcuYnVmZmVyLCB0aGlzIGNvZGUgaXMgY2FsbGVkCkBAIC02MSwyMiArNjEsMTUgQEAgdjg6
OkhhbmRsZTx2ODo6VmFsdWU+IFY4QXJyYXlCdWZmZXI6OmNvbgogICAgIC8vIEFycmF5QnVmZmVy
KG4pIHdoZXJlIG4gaXMgYW4gaW50ZWdlcjoKICAgICAvLyAgIC0tIGNyZWF0ZSBhbiBlbXB0eSBi
dWZmZXIgb2YgbiBieXRlcwogCi0gICAgaW50IGFyZ0xlbiA9IGFyZ3MuTGVuZ3RoKCk7Ci0gICAg
aWYgKGFyZ0xlbiA+IDEpCi0gICAgICAgIHJldHVybiB0aHJvd0Vycm9yKCJXcm9uZyBudW1iZXIg
b2YgYXJndW1lbnRzIHNwZWNpZmllZCB0byBjb25zdHJ1Y3RvciAocmVxdWlyZXMgMSkiKTsKLQot
ICAgIGludCBsZW4gPSAwOwotICAgIGlmIChhcmdMZW4gPiAwKSB7Ci0gICAgICAgIGlmICghYXJn
c1swXS0+SXNJbnQzMigpKQotICAgICAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoIkFyZ3VtZW50
IHRvIEFycmF5QnVmZmVyIGNvbnN0cnVjdG9yIHdhcyBub3QgYW4gaW50ZWdlciIpOwotICAgICAg
ICBsZW4gPSB0b0ludDMyKGFyZ3NbMF0pOwotICAgIH0KLQotICAgIFJlZlB0cjxBcnJheUJ1ZmZl
cj4gYnVmZmVyID0gQXJyYXlCdWZmZXI6OmNyZWF0ZShsZW4sIDEpOwotICAgIGlmICghYnVmZmVy
LmdldCgpKSB7Ci0gICAgICAgIFY4UHJveHk6OnNldERPTUV4Y2VwdGlvbihJTkRFWF9TSVpFX0VS
Uik7Ci0gICAgICAgIHJldHVybiB2ODo6VW5kZWZpbmVkKCk7Ci0gICAgfQorICAgIGludCBhcmdM
ZW5ndGggPSBhcmdzLkxlbmd0aCgpOworICAgIGludCBsZW5ndGggPSAwOworICAgIGlmIChhcmdM
ZW5ndGggPiAwKQorICAgICAgICBsZW5ndGggPSB0b0ludDMyKGFyZ3NbMF0pOyAvLyBOYU4vK2lu
Zi8taW5mIHJldHVybnMgMCwgdGhpcyBpcyBpbnRlbmRlZCBieSBXZWJJREwKKyAgICBSZWZQdHI8
QXJyYXlCdWZmZXI+IGJ1ZmZlcjsKKyAgICBpZiAobGVuZ3RoID49IDApCisgICAgICAgIGJ1ZmZl
ciA9IEFycmF5QnVmZmVyOjpjcmVhdGUoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGxlbmd0aCksIDEp
OworICAgIGlmICghYnVmZmVyLmdldCgpKQorICAgICAgICByZXR1cm4gdGhyb3dFcnJvcigiQXJy
YXlCdWZmZXIgc2l6ZSBpcyBub3QgYSBzbWFsbCBlbm91Z2ggcG9zaXRpdmUgaW50ZWdlci4iLCBW
OFByb3h5OjpSYW5nZUVycm9yKTsKICAgICAvLyBUcmFuc2Zvcm0gdGhlIGhvbGRlciBpbnRvIGEg
d3JhcHBlciBvYmplY3QgZm9yIHRoZSBhcnJheS4KICAgICBWOERPTVdyYXBwZXI6OnNldERPTVdy
YXBwZXIoYXJncy5Ib2xkZXIoKSwgJmluZm8sIGJ1ZmZlci5nZXQoKSk7CiAgICAgcmV0dXJuIHRv
VjgoYnVmZmVyLnJlbGVhc2UoKSwgYXJncy5Ib2xkZXIoKSk7CkluZGV4OiBXZWJDb3JlL2JpbmRp
bmdzL3Y4L2N1c3RvbS9WOEFycmF5QnVmZmVyVmlld0N1c3RvbS5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4QXJyYXlCdWZmZXJWaWV3Q3VzdG9tLmgJKHJldmlz
aW9uIDYxMzAwKQorKysgV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhBcnJheUJ1ZmZlclZp
ZXdDdXN0b20uaAkod29ya2luZyBjb3B5KQpAQCAtNjgsNiArNjgsMTIgQEAgdjg6OkhhbmRsZTx2
ODo6VmFsdWU+IGNvbnN0cnVjdFdlYkdMQXJyYQogICAgIC8vICAgICAgImJ1ZiIsIHN0YXJ0aW5n
IGF0IHRoZSBzcGVjaWZpZWQgb2Zmc2V0LCBmb3IgdGhlIGdpdmVuCiAgICAgLy8gICAgICBsZW5n
dGgKIAorICAgIGlmIChhcmdzWzBdLT5Jc051bGwoKSkgeworICAgICAgICAvLyBJbnZhbGlkIGZp
cnN0IGFyZ3VtZW50CisgICAgICAgIC8vIEZJWE1FOiB1c2UgZm9ydGhjb21pbmcgVjhQcm94eTo6
dGhyb3dUeXBlRXJyb3IoKS4KKyAgICAgICAgcmV0dXJuIFY4UHJveHk6OnRocm93RXJyb3IoVjhQ
cm94eTo6VHlwZUVycm9yLCAiVHlwZSBlcnJvciIpOworICAgIH0KKwogICAgIC8vIFNlZSB3aGV0
aGVyIHRoZSBmaXJzdCBhcmd1bWVudCBpcyBhIEFycmF5QnVmZmVyLgogICAgIGlmIChWOEFycmF5
QnVmZmVyOjpIYXNJbnN0YW5jZShhcmdzWzBdKSkgewogICAgICAgICBBcnJheUJ1ZmZlciogYnVm
ID0gVjhBcnJheUJ1ZmZlcjo6dG9OYXRpdmUoYXJnc1swXS0+VG9PYmplY3QoKSk7CkBAIC04OCw4
ICs5NCwxMCBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gY29uc3RydWN0V2ViR0xBcnJhCiAgICAg
ICAgIH0KIAogICAgICAgICBSZWZQdHI8QXJyYXlDbGFzcz4gYXJyYXkgPSBBcnJheUNsYXNzOjpj
cmVhdGUoYnVmLCBvZmZzZXQsIGxlbmd0aCk7Ci0gICAgICAgIGlmICghYXJyYXkpCi0gICAgICAg
ICAgICByZXR1cm4gdGhyb3dFcnJvcigiT3V0LW9mLXJhbmdlIG9mZnNldCBhbmQvb3IgbGVuZ3Ro
Iik7CisgICAgICAgIGlmICghYXJyYXkpIHsKKyAgICAgICAgICAgIFY4UHJveHk6OnNldERPTUV4
Y2VwdGlvbihJTkRFWF9TSVpFX0VSUik7CisgICAgICAgICAgICByZXR1cm4gbm90SGFuZGxlZEJ5
SW50ZXJjZXB0b3IoKTsKKyAgICAgICAgfQogICAgICAgICAvLyBUcmFuc2Zvcm0gdGhlIGhvbGRl
ciBpbnRvIGEgd3JhcHBlciBvYmplY3QgZm9yIHRoZSBhcnJheS4KICAgICAgICAgVjhET01XcmFw
cGVyOjpzZXRET01XcmFwcGVyKGFyZ3MuSG9sZGVyKCksIHR5cGUsIGFycmF5LmdldCgpKTsKICAg
ICAgICAgYXJncy5Ib2xkZXIoKS0+U2V0SW5kZXhlZFByb3BlcnRpZXNUb0V4dGVybmFsQXJyYXlE
YXRhKGFycmF5LmdldCgpLT5iYXNlQWRkcmVzcygpLCBhcnJheVR5cGUsIGFycmF5LmdldCgpLT5s
ZW5ndGgoKSk7CkBAIC05OCwyMiArMTA2LDI5IEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBjb25z
dHJ1Y3RXZWJHTEFycmEKIAogICAgIHVpbnQzMl90IGxlbiA9IDA7CiAgICAgdjg6OkhhbmRsZTx2
ODo6T2JqZWN0PiBzcmNBcnJheTsKKyAgICBib29sIGRvSW5zdGFudGlhdGlvbiA9IGZhbHNlOwog
Ci0gICAgaWYgKGFyZ3NbMF0tPklzSW50MzIoKSkgewotICAgICAgICBsZW4gPSB0b1VJbnQzMihh
cmdzWzBdKTsKLSAgICB9IGVsc2UgaWYgKGFyZ3NbMF0tPklzT2JqZWN0KCkpIHsKKyAgICBpZiAo
YXJnc1swXS0+SXNPYmplY3QoKSkgewogICAgICAgICBzcmNBcnJheSA9IGFyZ3NbMF0tPlRvT2Jq
ZWN0KCk7CiAgICAgICAgIGlmIChzcmNBcnJheS5Jc0VtcHR5KCkpCiAgICAgICAgICAgICByZXR1
cm4gdGhyb3dFcnJvcigiQ291bGQgbm90IGNvbnZlcnQgYXJndW1lbnQgMCB0byBhbiBhcnJheSIp
OwogICAgICAgICBsZW4gPSB0b1VJbnQzMihzcmNBcnJheS0+R2V0KHY4OjpTdHJpbmc6Ok5ldygi
bGVuZ3RoIikpKTsKLSAgICB9IGVsc2UKLSAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoIkNvdWxk
IG5vdCBjb252ZXJ0IGFyZ3VtZW50IDAgdG8gZWl0aGVyIGEgbnVtYmVyIG9yIGFuIGFycmF5Iik7
Ci0KLSAgICBSZWZQdHI8QXJyYXlDbGFzcz4gYXJyYXkgPSBBcnJheUNsYXNzOjpjcmVhdGUobGVu
KTsKLSAgICBpZiAoIWFycmF5LmdldCgpKSB7Ci0gICAgICAgIFY4UHJveHk6OnNldERPTUV4Y2Vw
dGlvbihJTkRFWF9TSVpFX0VSUik7Ci0gICAgICAgIHJldHVybiB2ODo6VW5kZWZpbmVkKCk7Cisg
ICAgICAgIGRvSW5zdGFudGlhdGlvbiA9IHRydWU7CisgICAgfSBlbHNlIHsKKyAgICAgICAgYm9v
bCBvayA9IGZhbHNlOworICAgICAgICBpbnQzMl90IHRlbXBMZW5ndGggPSB0b0ludDMyKGFyZ3Nb
MF0sIG9rKTsgLy8gTmFOLytpbmYvLWluZiByZXR1cm5zIDAsIHRoaXMgaXMgaW50ZW5kZWQgYnkg
V2ViSURMCisgICAgICAgIGlmIChvayAmJiB0ZW1wTGVuZ3RoID49IDApIHsKKyAgICAgICAgICAg
IGxlbiA9IHN0YXRpY19jYXN0PHVpbnQzMl90Pih0ZW1wTGVuZ3RoKTsKKyAgICAgICAgICAgIGRv
SW5zdGFudGlhdGlvbiA9IHRydWU7CisgICAgICAgIH0KICAgICB9CisKKyAgICBSZWZQdHI8QXJy
YXlDbGFzcz4gYXJyYXk7CisgICAgaWYgKGRvSW5zdGFudGlhdGlvbikKKyAgICAgICAgYXJyYXkg
PSBBcnJheUNsYXNzOjpjcmVhdGUobGVuKTsKKyAgICBpZiAoIWFycmF5LmdldCgpKQorICAgICAg
ICByZXR1cm4gdGhyb3dFcnJvcigiQXJyYXlCdWZmZXJWaWV3IHNpemUgaXMgbm90IGEgc21hbGwg
ZW5vdWdoIHBvc2l0aXZlIGludGVnZXIuIiwgVjhQcm94eTo6UmFuZ2VFcnJvcik7CisKICAgICBp
ZiAoIXNyY0FycmF5LklzRW1wdHkoKSkgewogICAgICAgICAvLyBOZWVkIHRvIGNvcHkgdGhlIGlu
Y29taW5nIGFycmF5IGludG8gdGhlIG5ld2x5IGNyZWF0ZWQgQXJyYXlCdWZmZXJWaWV3LgogICAg
ICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbGVuOyBpKyspIHsKSW5kZXg6IFdlYkNvcmUv
aHRtbC9jYW52YXMvVHlwZWRBcnJheUJhc2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwv
Y2FudmFzL1R5cGVkQXJyYXlCYXNlLmgJKHJldmlzaW9uIDYxMzAwKQorKysgV2ViQ29yZS9odG1s
L2NhbnZhcy9UeXBlZEFycmF5QmFzZS5oCSh3b3JraW5nIGNvcHkpCkBAIC02MSw2ICs2MSw4IEBA
IGNsYXNzIFR5cGVkQXJyYXlCYXNlIDogcHVibGljIEFycmF5QnVmZmUKICAgICBzdGF0aWMgUGFz
c1JlZlB0cjxTdWJjbGFzcz4gY3JlYXRlKHVuc2lnbmVkIGxlbmd0aCkKICAgICB7CiAgICAgICAg
IFJlZlB0cjxBcnJheUJ1ZmZlcj4gYnVmZmVyID0gQXJyYXlCdWZmZXI6OmNyZWF0ZShsZW5ndGgs
IHNpemVvZihUKSk7CisgICAgICAgIGlmICghYnVmZmVyLmdldCgpKQorICAgICAgICAgICAgcmV0
dXJuIDA7CiAgICAgICAgIHJldHVybiBjcmVhdGU8U3ViY2xhc3M+KGJ1ZmZlciwgMCwgbGVuZ3Ro
KTsKICAgICB9CiAKQEAgLTY4LDggKzcwLDkgQEAgY2xhc3MgVHlwZWRBcnJheUJhc2UgOiBwdWJs
aWMgQXJyYXlCdWZmZQogICAgIHN0YXRpYyBQYXNzUmVmUHRyPFN1YmNsYXNzPiBjcmVhdGUoVCog
YXJyYXksIHVuc2lnbmVkIGxlbmd0aCkKICAgICB7CiAgICAgICAgIFJlZlB0cjxTdWJjbGFzcz4g
YSA9IGNyZWF0ZTxTdWJjbGFzcz4obGVuZ3RoKTsKLSAgICAgICAgZm9yICh1bnNpZ25lZCBpID0g
MDsgaSA8IGxlbmd0aDsgKytpKQotICAgICAgICAgICAgYS0+c2V0KGksIGFycmF5W2ldKTsKKyAg
ICAgICAgaWYgKGEpCisgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbGVuZ3Ro
OyArK2kpCisgICAgICAgICAgICAgICAgYS0+c2V0KGksIGFycmF5W2ldKTsKICAgICAgICAgcmV0
dXJuIGE7CiAgICAgfQogCkluZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiA2MTMwMCkKKysrIExheW91dFRlc3Rz
L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE2IEBACisyMDEwLTA2LTE2ICBL
ZW5uZXRoIFJ1c3NlbGwgIDxrYnJAZ29vZ2xlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBOZWVkIGEgc2hvcnQgZGVzY3JpcHRpb24gYW5kIGJ1
ZyBVUkwgKE9PUFMhKQorCisgICAgICAgICogZmFzdC9jYW52YXMvd2ViZ2wvYXJyYXktdW5pdC10
ZXN0cy1leHBlY3RlZC50eHQ6CisgICAgICAgICAtIFVwZGF0ZWQgdGVzdCBleHBlY3RhdGlvbnMu
CisgICAgICAgICogZmFzdC9jYW52YXMvd2ViZ2wvYXJyYXktdW5pdC10ZXN0cy5odG1sOgorICAg
ICAgICAgLSBBZGRlZCB0ZXN0cyBmb3Igb3ZlcmxvYWRlZCBBcnJheUJ1ZmZlclZpZXcgY29uc3Ry
dWN0b3JzIHRha2luZyBudWxsLAorICAgICAgICAgICBhbmQgaW1wcm9wZXJseSBhbGlnbmVkIG9m
ZnNldHMuIEltcHJvdmVkIHByZWNpc2lvbiBvZiB0ZXN0cyBjYXVzaW5nCisgICAgICAgICAgIElO
REVYX1NJWkVfRVJSIHRvIGJlIHRocm93bi4KKwogMjAxMC0wNi0xNiAgQWRhbSBCYXJ0aCAgPGFi
YXJ0aEB3ZWJraXQub3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQuCkluZGV4OiBMYXlvdXRUZXN0
cy9mYXN0L2NhbnZhcy93ZWJnbC9hcnJheS11bml0LXRlc3RzLWV4cGVjdGVkLnR4dAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC9hcnJheS11bml0LXRlc3RzLWV4
cGVjdGVkLnR4dAkocmV2aXNpb24gNjEzMDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93
ZWJnbC9hcnJheS11bml0LXRlc3RzLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMTgs
OCArMTgsMTMgQEAgUEFTUyB0ZXN0IEZsb2F0MzJBcnJheSBTbGljZQogUEFTUyBuZWdhdGl2ZVRl
c3QgRmxvYXQzMkFycmF5IFNsaWNlCiBQQVNTIHRlc3QgRmxvYXQzMkFycmF5IEJvdW5kYXJ5Q29u
ZGl0aW9ucygtNTAwLjUsIC01MDAuNSwgNTAwLjUsIDUwMC41KQogUEFTUyBDb25zdHJ1Y3Rpb24g
b2YgRmxvYXQzMkFycmF5IHdpdGggbnVsbCBidWZmZXIgdGhyZXcgZXhjZXB0aW9uCi1QQVNTIENv
bnN0cnVjdGlvbiBvZiBGbG9hdDMyQXJyYXkgd2l0aCBvdXQtb2YtcmFuZ2UgdmFsdWVzIHRocmV3
IGV4Y2VwdGlvbgotUEFTUyBDb25zdHJ1Y3Rpb24gb2YgRmxvYXQzMkFycmF5IHdpdGggbmVnYXRp
dmUgb3V0LW9mLXJhbmdlIHZhbHVlcyB0aHJldyBleGNlcHRpb24KK1BBU1MgQ29uc3RydWN0aW9u
IG9mIEZsb2F0MzJBcnJheSB3aXRoIChudWxsIGJ1ZmZlciwgMCkgdGhyZXcgZXhjZXB0aW9uCitQ
QVNTIENvbnN0cnVjdGlvbiBvZiBGbG9hdDMyQXJyYXkgd2l0aCAobnVsbCBidWZmZXIsIDAsIDAp
IHRocmV3IGV4Y2VwdGlvbgorUEFTUyBDb25zdHJ1Y3Rpb24gb2YgRmxvYXQzMkFycmF5IHdpdGgg
b3V0LW9mLXJhbmdlIHZhbHVlcyB0aHJldyBJTkRFWF9TSVpFX0VSUiBleGNlcHRpb24KK1BBU1Mg
Q29uc3RydWN0aW9uIG9mIEFycmF5QnVmZmVyIHdpdGggbmVnYXRpdmUgc2l6ZSB0aHJldyBleGNl
cHRpb24KK1BBU1MgQ29uc3RydWN0aW9uIG9mIEZsb2F0MzJBcnJheSB3aXRoIG5lZ2F0aXZlIHNp
emUgdGhyZXcgZXhjZXB0aW9uCitQQVNTIENvbnN0cnVjdGlvbiBvZiBGbG9hdDMyQXJyYXkgd2l0
aCBuZWdhdGl2ZSBvdXQtb2YtcmFuZ2UgdmFsdWVzIHRocmV3IElOREVYX1NJWkVfRVJSIGV4Y2Vw
dGlvbgorUEFTUyBDb25zdHJ1Y3Rpb24gb2YgRmxvYXQzMkFycmF5IHdpdGggdW5hbGlnbmVkIG9m
ZnNldCB0aHJldyBJTkRFWF9TSVpFX0VSUiBleGNlcHRpb24KIFBBU1MgQ29uc3RydWN0aW9uIG9m
IGh1Z2UgRmxvYXQzMkFycmF5IHRocmV3IGV4Y2VwdGlvbgogVGVzdGluZyBzbGljaW5nIG9mIEZs
b2F0MzJBcnJheQogUEFTUyBhcnJheS5sZW5ndGggaXMgMzIgLyB0eXBlU2l6ZQpAQCAtNTMsOCAr
NTgsMTIgQEAgUEFTUyB0ZXN0IEludDhBcnJheSBTbGljZQogUEFTUyBuZWdhdGl2ZVRlc3QgSW50
OEFycmF5IFNsaWNlCiBQQVNTIHRlc3QgSW50OEFycmF5IEJvdW5kYXJ5Q29uZGl0aW9ucygtMTI4
LCAtMTI4LCAxMjcsIDEyNykKIFBBU1MgQ29uc3RydWN0aW9uIG9mIEludDhBcnJheSB3aXRoIG51
bGwgYnVmZmVyIHRocmV3IGV4Y2VwdGlvbgotUEFTUyBDb25zdHJ1Y3Rpb24gb2YgSW50OEFycmF5
IHdpdGggb3V0LW9mLXJhbmdlIHZhbHVlcyB0aHJldyBleGNlcHRpb24KLVBBU1MgQ29uc3RydWN0
aW9uIG9mIEludDhBcnJheSB3aXRoIG5lZ2F0aXZlIG91dC1vZi1yYW5nZSB2YWx1ZXMgdGhyZXcg
ZXhjZXB0aW9uCitQQVNTIENvbnN0cnVjdGlvbiBvZiBJbnQ4QXJyYXkgd2l0aCAobnVsbCBidWZm
ZXIsIDApIHRocmV3IGV4Y2VwdGlvbgorUEFTUyBDb25zdHJ1Y3Rpb24gb2YgSW50OEFycmF5IHdp
dGggKG51bGwgYnVmZmVyLCAwLCAwKSB0aHJldyBleGNlcHRpb24KK1BBU1MgQ29uc3RydWN0aW9u
IG9mIEludDhBcnJheSB3aXRoIG91dC1vZi1yYW5nZSB2YWx1ZXMgdGhyZXcgSU5ERVhfU0laRV9F
UlIgZXhjZXB0aW9uCitQQVNTIENvbnN0cnVjdGlvbiBvZiBBcnJheUJ1ZmZlciB3aXRoIG5lZ2F0
aXZlIHNpemUgdGhyZXcgZXhjZXB0aW9uCitQQVNTIENvbnN0cnVjdGlvbiBvZiBJbnQ4QXJyYXkg
d2l0aCBuZWdhdGl2ZSBzaXplIHRocmV3IGV4Y2VwdGlvbgorUEFTUyBDb25zdHJ1Y3Rpb24gb2Yg
SW50OEFycmF5IHdpdGggbmVnYXRpdmUgb3V0LW9mLXJhbmdlIHZhbHVlcyB0aHJldyBJTkRFWF9T
SVpFX0VSUiBleGNlcHRpb24KIFRlc3Rpbmcgc2xpY2luZyBvZiBJbnQ4QXJyYXkKIFBBU1MgYXJy
YXkubGVuZ3RoIGlzIDMyIC8gdHlwZVNpemUKIFBBU1MgYXJyYXkuc2xpY2UoNCwgMHgzRkZGRkZG
RikubGVuZ3RoIGlzICgzMiAvIHR5cGVTaXplKSAtIDQKQEAgLTg2LDggKzk1LDEzIEBAIFBBU1Mg
dGVzdCBJbnQxNkFycmF5IFNsaWNlCiBQQVNTIG5lZ2F0aXZlVGVzdCBJbnQxNkFycmF5IFNsaWNl
CiBQQVNTIHRlc3QgSW50MTZBcnJheSBCb3VuZGFyeUNvbmRpdGlvbnMoLTMyNzY4LCAtMzI3Njgs
IDMyNzY3LCAzMjc2NykKIFBBU1MgQ29uc3RydWN0aW9uIG9mIEludDE2QXJyYXkgd2l0aCBudWxs
IGJ1ZmZlciB0aHJldyBleGNlcHRpb24KLVBBU1MgQ29uc3RydWN0aW9uIG9mIEludDE2QXJyYXkg
d2l0aCBvdXQtb2YtcmFuZ2UgdmFsdWVzIHRocmV3IGV4Y2VwdGlvbgotUEFTUyBDb25zdHJ1Y3Rp
b24gb2YgSW50MTZBcnJheSB3aXRoIG5lZ2F0aXZlIG91dC1vZi1yYW5nZSB2YWx1ZXMgdGhyZXcg
ZXhjZXB0aW9uCitQQVNTIENvbnN0cnVjdGlvbiBvZiBJbnQxNkFycmF5IHdpdGggKG51bGwgYnVm
ZmVyLCAwKSB0aHJldyBleGNlcHRpb24KK1BBU1MgQ29uc3RydWN0aW9uIG9mIEludDE2QXJyYXkg
d2l0aCAobnVsbCBidWZmZXIsIDAsIDApIHRocmV3IGV4Y2VwdGlvbgorUEFTUyBDb25zdHJ1Y3Rp
b24gb2YgSW50MTZBcnJheSB3aXRoIG91dC1vZi1yYW5nZSB2YWx1ZXMgdGhyZXcgSU5ERVhfU0la
RV9FUlIgZXhjZXB0aW9uCitQQVNTIENvbnN0cnVjdGlvbiBvZiBBcnJheUJ1ZmZlciB3aXRoIG5l
Z2F0aXZlIHNpemUgdGhyZXcgZXhjZXB0aW9uCitQQVNTIENvbnN0cnVjdGlvbiBvZiBJbnQxNkFy
cmF5IHdpdGggbmVnYXRpdmUgc2l6ZSB0aHJldyBleGNlcHRpb24KK1BBU1MgQ29uc3RydWN0aW9u
IG9mIEludDE2QXJyYXkgd2l0aCBuZWdhdGl2ZSBvdXQtb2YtcmFuZ2UgdmFsdWVzIHRocmV3IElO
REVYX1NJWkVfRVJSIGV4Y2VwdGlvbgorUEFTUyBDb25zdHJ1Y3Rpb24gb2YgSW50MTZBcnJheSB3
aXRoIHVuYWxpZ25lZCBvZmZzZXQgdGhyZXcgSU5ERVhfU0laRV9FUlIgZXhjZXB0aW9uCiBQQVNT
IENvbnN0cnVjdGlvbiBvZiBodWdlIEludDE2QXJyYXkgdGhyZXcgZXhjZXB0aW9uCiBUZXN0aW5n
IHNsaWNpbmcgb2YgSW50MTZBcnJheQogUEFTUyBhcnJheS5sZW5ndGggaXMgMzIgLyB0eXBlU2l6
ZQpAQCAtMTIxLDggKzEzNSwxMyBAQCBQQVNTIHRlc3QgSW50MzJBcnJheSBTbGljZQogUEFTUyBu
ZWdhdGl2ZVRlc3QgSW50MzJBcnJheSBTbGljZQogUEFTUyB0ZXN0IEludDMyQXJyYXkgQm91bmRh
cnlDb25kaXRpb25zKC0yMTQ3NDgzNjQ4LCAtMjE0NzQ4MzY0OCwgMjE0NzQ4MzY0NywgMjE0NzQ4
MzY0NykKIFBBU1MgQ29uc3RydWN0aW9uIG9mIEludDMyQXJyYXkgd2l0aCBudWxsIGJ1ZmZlciB0
aHJldyBleGNlcHRpb24KLVBBU1MgQ29uc3RydWN0aW9uIG9mIEludDMyQXJyYXkgd2l0aCBvdXQt
b2YtcmFuZ2UgdmFsdWVzIHRocmV3IGV4Y2VwdGlvbgotUEFTUyBDb25zdHJ1Y3Rpb24gb2YgSW50
MzJBcnJheSB3aXRoIG5lZ2F0aXZlIG91dC1vZi1yYW5nZSB2YWx1ZXMgdGhyZXcgZXhjZXB0aW9u
CitQQVNTIENvbnN0cnVjdGlvbiBvZiBJbnQzMkFycmF5IHdpdGggKG51bGwgYnVmZmVyLCAwKSB0
aHJldyBleGNlcHRpb24KK1BBU1MgQ29uc3RydWN0aW9uIG9mIEludDMyQXJyYXkgd2l0aCAobnVs
bCBidWZmZXIsIDAsIDApIHRocmV3IGV4Y2VwdGlvbgorUEFTUyBDb25zdHJ1Y3Rpb24gb2YgSW50
MzJBcnJheSB3aXRoIG91dC1vZi1yYW5nZSB2YWx1ZXMgdGhyZXcgSU5ERVhfU0laRV9FUlIgZXhj
ZXB0aW9uCitQQVNTIENvbnN0cnVjdGlvbiBvZiBBcnJheUJ1ZmZlciB3aXRoIG5lZ2F0aXZlIHNp
emUgdGhyZXcgZXhjZXB0aW9uCitQQVNTIENvbnN0cnVjdGlvbiBvZiBJbnQzMkFycmF5IHdpdGgg
bmVnYXRpdmUgc2l6ZSB0aHJldyBleGNlcHRpb24KK1BBU1MgQ29uc3RydWN0aW9uIG9mIEludDMy
QXJyYXkgd2l0aCBuZWdhdGl2ZSBvdXQtb2YtcmFuZ2UgdmFsdWVzIHRocmV3IElOREVYX1NJWkVf
RVJSIGV4Y2VwdGlvbgorUEFTUyBDb25zdHJ1Y3Rpb24gb2YgSW50MzJBcnJheSB3aXRoIHVuYWxp
Z25lZCBvZmZzZXQgdGhyZXcgSU5ERVhfU0laRV9FUlIgZXhjZXB0aW9uCiBQQVNTIENvbnN0cnVj
dGlvbiBvZiBodWdlIEludDMyQXJyYXkgdGhyZXcgZXhjZXB0aW9uCiBUZXN0aW5nIHNsaWNpbmcg
b2YgSW50MzJBcnJheQogUEFTUyBhcnJheS5sZW5ndGggaXMgMzIgLyB0eXBlU2l6ZQpAQCAtMTU2
LDggKzE3NSwxMiBAQCBQQVNTIHRlc3QgVWludDhBcnJheSBTbGljZQogUEFTUyBuZWdhdGl2ZVRl
c3QgVWludDhBcnJheSBTbGljZQogUEFTUyB0ZXN0IFVpbnQ4QXJyYXkgQm91bmRhcnlDb25kaXRp
b25zKDAsIDAsIDI1NSwgMjU1KQogUEFTUyBDb25zdHJ1Y3Rpb24gb2YgVWludDhBcnJheSB3aXRo
IG51bGwgYnVmZmVyIHRocmV3IGV4Y2VwdGlvbgotUEFTUyBDb25zdHJ1Y3Rpb24gb2YgVWludDhB
cnJheSB3aXRoIG91dC1vZi1yYW5nZSB2YWx1ZXMgdGhyZXcgZXhjZXB0aW9uCi1QQVNTIENvbnN0
cnVjdGlvbiBvZiBVaW50OEFycmF5IHdpdGggbmVnYXRpdmUgb3V0LW9mLXJhbmdlIHZhbHVlcyB0
aHJldyBleGNlcHRpb24KK1BBU1MgQ29uc3RydWN0aW9uIG9mIFVpbnQ4QXJyYXkgd2l0aCAobnVs
bCBidWZmZXIsIDApIHRocmV3IGV4Y2VwdGlvbgorUEFTUyBDb25zdHJ1Y3Rpb24gb2YgVWludDhB
cnJheSB3aXRoIChudWxsIGJ1ZmZlciwgMCwgMCkgdGhyZXcgZXhjZXB0aW9uCitQQVNTIENvbnN0
cnVjdGlvbiBvZiBVaW50OEFycmF5IHdpdGggb3V0LW9mLXJhbmdlIHZhbHVlcyB0aHJldyBJTkRF
WF9TSVpFX0VSUiBleGNlcHRpb24KK1BBU1MgQ29uc3RydWN0aW9uIG9mIEFycmF5QnVmZmVyIHdp
dGggbmVnYXRpdmUgc2l6ZSB0aHJldyBleGNlcHRpb24KK1BBU1MgQ29uc3RydWN0aW9uIG9mIFVp
bnQ4QXJyYXkgd2l0aCBuZWdhdGl2ZSBzaXplIHRocmV3IGV4Y2VwdGlvbgorUEFTUyBDb25zdHJ1
Y3Rpb24gb2YgVWludDhBcnJheSB3aXRoIG5lZ2F0aXZlIG91dC1vZi1yYW5nZSB2YWx1ZXMgdGhy
ZXcgSU5ERVhfU0laRV9FUlIgZXhjZXB0aW9uCiBUZXN0aW5nIHNsaWNpbmcgb2YgVWludDhBcnJh
eQogUEFTUyBhcnJheS5sZW5ndGggaXMgMzIgLyB0eXBlU2l6ZQogUEFTUyBhcnJheS5zbGljZSg0
LCAweDNGRkZGRkZGKS5sZW5ndGggaXMgKDMyIC8gdHlwZVNpemUpIC0gNApAQCAtMTg5LDggKzIx
MiwxMyBAQCBQQVNTIHRlc3QgVWludDE2QXJyYXkgU2xpY2UKIFBBU1MgbmVnYXRpdmVUZXN0IFVp
bnQxNkFycmF5IFNsaWNlCiBQQVNTIHRlc3QgVWludDE2QXJyYXkgQm91bmRhcnlDb25kaXRpb25z
KDAsIDAsIDY1NTM1LCA2NTUzNSkKIFBBU1MgQ29uc3RydWN0aW9uIG9mIFVpbnQxNkFycmF5IHdp
dGggbnVsbCBidWZmZXIgdGhyZXcgZXhjZXB0aW9uCi1QQVNTIENvbnN0cnVjdGlvbiBvZiBVaW50
MTZBcnJheSB3aXRoIG91dC1vZi1yYW5nZSB2YWx1ZXMgdGhyZXcgZXhjZXB0aW9uCi1QQVNTIENv
bnN0cnVjdGlvbiBvZiBVaW50MTZBcnJheSB3aXRoIG5lZ2F0aXZlIG91dC1vZi1yYW5nZSB2YWx1
ZXMgdGhyZXcgZXhjZXB0aW9uCitQQVNTIENvbnN0cnVjdGlvbiBvZiBVaW50MTZBcnJheSB3aXRo
IChudWxsIGJ1ZmZlciwgMCkgdGhyZXcgZXhjZXB0aW9uCitQQVNTIENvbnN0cnVjdGlvbiBvZiBV
aW50MTZBcnJheSB3aXRoIChudWxsIGJ1ZmZlciwgMCwgMCkgdGhyZXcgZXhjZXB0aW9uCitQQVNT
IENvbnN0cnVjdGlvbiBvZiBVaW50MTZBcnJheSB3aXRoIG91dC1vZi1yYW5nZSB2YWx1ZXMgdGhy
ZXcgSU5ERVhfU0laRV9FUlIgZXhjZXB0aW9uCitQQVNTIENvbnN0cnVjdGlvbiBvZiBBcnJheUJ1
ZmZlciB3aXRoIG5lZ2F0aXZlIHNpemUgdGhyZXcgZXhjZXB0aW9uCitQQVNTIENvbnN0cnVjdGlv
biBvZiBVaW50MTZBcnJheSB3aXRoIG5lZ2F0aXZlIHNpemUgdGhyZXcgZXhjZXB0aW9uCitQQVNT
IENvbnN0cnVjdGlvbiBvZiBVaW50MTZBcnJheSB3aXRoIG5lZ2F0aXZlIG91dC1vZi1yYW5nZSB2
YWx1ZXMgdGhyZXcgSU5ERVhfU0laRV9FUlIgZXhjZXB0aW9uCitQQVNTIENvbnN0cnVjdGlvbiBv
ZiBVaW50MTZBcnJheSB3aXRoIHVuYWxpZ25lZCBvZmZzZXQgdGhyZXcgSU5ERVhfU0laRV9FUlIg
ZXhjZXB0aW9uCiBQQVNTIENvbnN0cnVjdGlvbiBvZiBodWdlIFVpbnQxNkFycmF5IHRocmV3IGV4
Y2VwdGlvbgogVGVzdGluZyBzbGljaW5nIG9mIFVpbnQxNkFycmF5CiBQQVNTIGFycmF5Lmxlbmd0
aCBpcyAzMiAvIHR5cGVTaXplCkBAIC0yMjQsOCArMjUyLDEzIEBAIFBBU1MgdGVzdCBVaW50MzJB
cnJheSBTbGljZQogUEFTUyBuZWdhdGl2ZVRlc3QgVWludDMyQXJyYXkgU2xpY2UKIFBBU1MgdGVz
dCBVaW50MzJBcnJheSBCb3VuZGFyeUNvbmRpdGlvbnMoMCwgMCwgNDI5NDk2NzI5NSwgNDI5NDk2
NzI5NSkKIFBBU1MgQ29uc3RydWN0aW9uIG9mIFVpbnQzMkFycmF5IHdpdGggbnVsbCBidWZmZXIg
dGhyZXcgZXhjZXB0aW9uCi1QQVNTIENvbnN0cnVjdGlvbiBvZiBVaW50MzJBcnJheSB3aXRoIG91
dC1vZi1yYW5nZSB2YWx1ZXMgdGhyZXcgZXhjZXB0aW9uCi1QQVNTIENvbnN0cnVjdGlvbiBvZiBV
aW50MzJBcnJheSB3aXRoIG5lZ2F0aXZlIG91dC1vZi1yYW5nZSB2YWx1ZXMgdGhyZXcgZXhjZXB0
aW9uCitQQVNTIENvbnN0cnVjdGlvbiBvZiBVaW50MzJBcnJheSB3aXRoIChudWxsIGJ1ZmZlciwg
MCkgdGhyZXcgZXhjZXB0aW9uCitQQVNTIENvbnN0cnVjdGlvbiBvZiBVaW50MzJBcnJheSB3aXRo
IChudWxsIGJ1ZmZlciwgMCwgMCkgdGhyZXcgZXhjZXB0aW9uCitQQVNTIENvbnN0cnVjdGlvbiBv
ZiBVaW50MzJBcnJheSB3aXRoIG91dC1vZi1yYW5nZSB2YWx1ZXMgdGhyZXcgSU5ERVhfU0laRV9F
UlIgZXhjZXB0aW9uCitQQVNTIENvbnN0cnVjdGlvbiBvZiBBcnJheUJ1ZmZlciB3aXRoIG5lZ2F0
aXZlIHNpemUgdGhyZXcgZXhjZXB0aW9uCitQQVNTIENvbnN0cnVjdGlvbiBvZiBVaW50MzJBcnJh
eSB3aXRoIG5lZ2F0aXZlIHNpemUgdGhyZXcgZXhjZXB0aW9uCitQQVNTIENvbnN0cnVjdGlvbiBv
ZiBVaW50MzJBcnJheSB3aXRoIG5lZ2F0aXZlIG91dC1vZi1yYW5nZSB2YWx1ZXMgdGhyZXcgSU5E
RVhfU0laRV9FUlIgZXhjZXB0aW9uCitQQVNTIENvbnN0cnVjdGlvbiBvZiBVaW50MzJBcnJheSB3
aXRoIHVuYWxpZ25lZCBvZmZzZXQgdGhyZXcgSU5ERVhfU0laRV9FUlIgZXhjZXB0aW9uCiBQQVNT
IENvbnN0cnVjdGlvbiBvZiBodWdlIFVpbnQzMkFycmF5IHRocmV3IGV4Y2VwdGlvbgogVGVzdGlu
ZyBzbGljaW5nIG9mIFVpbnQzMkFycmF5CiBQQVNTIGFycmF5Lmxlbmd0aCBpcyAzMiAvIHR5cGVT
aXplCkBAIC0yNTksOCArMjkyLDEyIEBAIFBBU1MgdGVzdCBXZWJHTEJ5dGVBcnJheSBTbGljZQog
UEFTUyBuZWdhdGl2ZVRlc3QgV2ViR0xCeXRlQXJyYXkgU2xpY2UKIFBBU1MgdGVzdCBXZWJHTEJ5
dGVBcnJheSBCb3VuZGFyeUNvbmRpdGlvbnMoLTEyOCwgLTEyOCwgMTI3LCAxMjcpCiBQQVNTIENv
bnN0cnVjdGlvbiBvZiBXZWJHTEJ5dGVBcnJheSB3aXRoIG51bGwgYnVmZmVyIHRocmV3IGV4Y2Vw
dGlvbgotUEFTUyBDb25zdHJ1Y3Rpb24gb2YgV2ViR0xCeXRlQXJyYXkgd2l0aCBvdXQtb2YtcmFu
Z2UgdmFsdWVzIHRocmV3IGV4Y2VwdGlvbgotUEFTUyBDb25zdHJ1Y3Rpb24gb2YgV2ViR0xCeXRl
QXJyYXkgd2l0aCBuZWdhdGl2ZSBvdXQtb2YtcmFuZ2UgdmFsdWVzIHRocmV3IGV4Y2VwdGlvbgor
UEFTUyBDb25zdHJ1Y3Rpb24gb2YgV2ViR0xCeXRlQXJyYXkgd2l0aCAobnVsbCBidWZmZXIsIDAp
IHRocmV3IGV4Y2VwdGlvbgorUEFTUyBDb25zdHJ1Y3Rpb24gb2YgV2ViR0xCeXRlQXJyYXkgd2l0
aCAobnVsbCBidWZmZXIsIDAsIDApIHRocmV3IGV4Y2VwdGlvbgorUEFTUyBDb25zdHJ1Y3Rpb24g
b2YgV2ViR0xCeXRlQXJyYXkgd2l0aCBvdXQtb2YtcmFuZ2UgdmFsdWVzIHRocmV3IElOREVYX1NJ
WkVfRVJSIGV4Y2VwdGlvbgorUEFTUyBDb25zdHJ1Y3Rpb24gb2YgQXJyYXlCdWZmZXIgd2l0aCBu
ZWdhdGl2ZSBzaXplIHRocmV3IGV4Y2VwdGlvbgorUEFTUyBDb25zdHJ1Y3Rpb24gb2YgV2ViR0xC
eXRlQXJyYXkgd2l0aCBuZWdhdGl2ZSBzaXplIHRocmV3IGV4Y2VwdGlvbgorUEFTUyBDb25zdHJ1
Y3Rpb24gb2YgV2ViR0xCeXRlQXJyYXkgd2l0aCBuZWdhdGl2ZSBvdXQtb2YtcmFuZ2UgdmFsdWVz
IHRocmV3IElOREVYX1NJWkVfRVJSIGV4Y2VwdGlvbgogVGVzdGluZyBzbGljaW5nIG9mIFdlYkdM
Qnl0ZUFycmF5CiBQQVNTIGFycmF5Lmxlbmd0aCBpcyAzMiAvIHR5cGVTaXplCiBQQVNTIGFycmF5
LnNsaWNlKDQsIDB4M0ZGRkZGRkYpLmxlbmd0aCBpcyAoMzIgLyB0eXBlU2l6ZSkgLSA0CkBAIC0y
OTIsOCArMzI5LDEzIEBAIFBBU1MgdGVzdCBXZWJHTEZsb2F0QXJyYXkgU2xpY2UKIFBBU1MgbmVn
YXRpdmVUZXN0IFdlYkdMRmxvYXRBcnJheSBTbGljZQogUEFTUyB0ZXN0IFdlYkdMRmxvYXRBcnJh
eSBCb3VuZGFyeUNvbmRpdGlvbnMoLTUwMC41LCAtNTAwLjUsIDUwMC41LCA1MDAuNSkKIFBBU1Mg
Q29uc3RydWN0aW9uIG9mIFdlYkdMRmxvYXRBcnJheSB3aXRoIG51bGwgYnVmZmVyIHRocmV3IGV4
Y2VwdGlvbgotUEFTUyBDb25zdHJ1Y3Rpb24gb2YgV2ViR0xGbG9hdEFycmF5IHdpdGggb3V0LW9m
LXJhbmdlIHZhbHVlcyB0aHJldyBleGNlcHRpb24KLVBBU1MgQ29uc3RydWN0aW9uIG9mIFdlYkdM
RmxvYXRBcnJheSB3aXRoIG5lZ2F0aXZlIG91dC1vZi1yYW5nZSB2YWx1ZXMgdGhyZXcgZXhjZXB0
aW9uCitQQVNTIENvbnN0cnVjdGlvbiBvZiBXZWJHTEZsb2F0QXJyYXkgd2l0aCAobnVsbCBidWZm
ZXIsIDApIHRocmV3IGV4Y2VwdGlvbgorUEFTUyBDb25zdHJ1Y3Rpb24gb2YgV2ViR0xGbG9hdEFy
cmF5IHdpdGggKG51bGwgYnVmZmVyLCAwLCAwKSB0aHJldyBleGNlcHRpb24KK1BBU1MgQ29uc3Ry
dWN0aW9uIG9mIFdlYkdMRmxvYXRBcnJheSB3aXRoIG91dC1vZi1yYW5nZSB2YWx1ZXMgdGhyZXcg
SU5ERVhfU0laRV9FUlIgZXhjZXB0aW9uCitQQVNTIENvbnN0cnVjdGlvbiBvZiBBcnJheUJ1ZmZl
ciB3aXRoIG5lZ2F0aXZlIHNpemUgdGhyZXcgZXhjZXB0aW9uCitQQVNTIENvbnN0cnVjdGlvbiBv
ZiBXZWJHTEZsb2F0QXJyYXkgd2l0aCBuZWdhdGl2ZSBzaXplIHRocmV3IGV4Y2VwdGlvbgorUEFT
UyBDb25zdHJ1Y3Rpb24gb2YgV2ViR0xGbG9hdEFycmF5IHdpdGggbmVnYXRpdmUgb3V0LW9mLXJh
bmdlIHZhbHVlcyB0aHJldyBJTkRFWF9TSVpFX0VSUiBleGNlcHRpb24KK1BBU1MgQ29uc3RydWN0
aW9uIG9mIFdlYkdMRmxvYXRBcnJheSB3aXRoIHVuYWxpZ25lZCBvZmZzZXQgdGhyZXcgSU5ERVhf
U0laRV9FUlIgZXhjZXB0aW9uCiBQQVNTIENvbnN0cnVjdGlvbiBvZiBodWdlIFdlYkdMRmxvYXRB
cnJheSB0aHJldyBleGNlcHRpb24KIFRlc3Rpbmcgc2xpY2luZyBvZiBXZWJHTEZsb2F0QXJyYXkK
IFBBU1MgYXJyYXkubGVuZ3RoIGlzIDMyIC8gdHlwZVNpemUKQEAgLTMyNyw4ICszNjksMTMgQEAg
UEFTUyB0ZXN0IFdlYkdMSW50QXJyYXkgU2xpY2UKIFBBU1MgbmVnYXRpdmVUZXN0IFdlYkdMSW50
QXJyYXkgU2xpY2UKIFBBU1MgdGVzdCBXZWJHTEludEFycmF5IEJvdW5kYXJ5Q29uZGl0aW9ucygt
MjE0NzQ4MzY0OCwgLTIxNDc0ODM2NDgsIDIxNDc0ODM2NDcsIDIxNDc0ODM2NDcpCiBQQVNTIENv
bnN0cnVjdGlvbiBvZiBXZWJHTEludEFycmF5IHdpdGggbnVsbCBidWZmZXIgdGhyZXcgZXhjZXB0
aW9uCi1QQVNTIENvbnN0cnVjdGlvbiBvZiBXZWJHTEludEFycmF5IHdpdGggb3V0LW9mLXJhbmdl
IHZhbHVlcyB0aHJldyBleGNlcHRpb24KLVBBU1MgQ29uc3RydWN0aW9uIG9mIFdlYkdMSW50QXJy
YXkgd2l0aCBuZWdhdGl2ZSBvdXQtb2YtcmFuZ2UgdmFsdWVzIHRocmV3IGV4Y2VwdGlvbgorUEFT
UyBDb25zdHJ1Y3Rpb24gb2YgV2ViR0xJbnRBcnJheSB3aXRoIChudWxsIGJ1ZmZlciwgMCkgdGhy
ZXcgZXhjZXB0aW9uCitQQVNTIENvbnN0cnVjdGlvbiBvZiBXZWJHTEludEFycmF5IHdpdGggKG51
bGwgYnVmZmVyLCAwLCAwKSB0aHJldyBleGNlcHRpb24KK1BBU1MgQ29uc3RydWN0aW9uIG9mIFdl
YkdMSW50QXJyYXkgd2l0aCBvdXQtb2YtcmFuZ2UgdmFsdWVzIHRocmV3IElOREVYX1NJWkVfRVJS
IGV4Y2VwdGlvbgorUEFTUyBDb25zdHJ1Y3Rpb24gb2YgQXJyYXlCdWZmZXIgd2l0aCBuZWdhdGl2
ZSBzaXplIHRocmV3IGV4Y2VwdGlvbgorUEFTUyBDb25zdHJ1Y3Rpb24gb2YgV2ViR0xJbnRBcnJh
eSB3aXRoIG5lZ2F0aXZlIHNpemUgdGhyZXcgZXhjZXB0aW9uCitQQVNTIENvbnN0cnVjdGlvbiBv
ZiBXZWJHTEludEFycmF5IHdpdGggbmVnYXRpdmUgb3V0LW9mLXJhbmdlIHZhbHVlcyB0aHJldyBJ
TkRFWF9TSVpFX0VSUiBleGNlcHRpb24KK1BBU1MgQ29uc3RydWN0aW9uIG9mIFdlYkdMSW50QXJy
YXkgd2l0aCB1bmFsaWduZWQgb2Zmc2V0IHRocmV3IElOREVYX1NJWkVfRVJSIGV4Y2VwdGlvbgog
UEFTUyBDb25zdHJ1Y3Rpb24gb2YgaHVnZSBXZWJHTEludEFycmF5IHRocmV3IGV4Y2VwdGlvbgog
VGVzdGluZyBzbGljaW5nIG9mIFdlYkdMSW50QXJyYXkKIFBBU1MgYXJyYXkubGVuZ3RoIGlzIDMy
IC8gdHlwZVNpemUKQEAgLTM2Miw4ICs0MDksMTMgQEAgUEFTUyB0ZXN0IFdlYkdMU2hvcnRBcnJh
eSBTbGljZQogUEFTUyBuZWdhdGl2ZVRlc3QgV2ViR0xTaG9ydEFycmF5IFNsaWNlCiBQQVNTIHRl
c3QgV2ViR0xTaG9ydEFycmF5IEJvdW5kYXJ5Q29uZGl0aW9ucygtMzI3NjgsIC0zMjc2OCwgMzI3
NjcsIDMyNzY3KQogUEFTUyBDb25zdHJ1Y3Rpb24gb2YgV2ViR0xTaG9ydEFycmF5IHdpdGggbnVs
bCBidWZmZXIgdGhyZXcgZXhjZXB0aW9uCi1QQVNTIENvbnN0cnVjdGlvbiBvZiBXZWJHTFNob3J0
QXJyYXkgd2l0aCBvdXQtb2YtcmFuZ2UgdmFsdWVzIHRocmV3IGV4Y2VwdGlvbgotUEFTUyBDb25z
dHJ1Y3Rpb24gb2YgV2ViR0xTaG9ydEFycmF5IHdpdGggbmVnYXRpdmUgb3V0LW9mLXJhbmdlIHZh
bHVlcyB0aHJldyBleGNlcHRpb24KK1BBU1MgQ29uc3RydWN0aW9uIG9mIFdlYkdMU2hvcnRBcnJh
eSB3aXRoIChudWxsIGJ1ZmZlciwgMCkgdGhyZXcgZXhjZXB0aW9uCitQQVNTIENvbnN0cnVjdGlv
biBvZiBXZWJHTFNob3J0QXJyYXkgd2l0aCAobnVsbCBidWZmZXIsIDAsIDApIHRocmV3IGV4Y2Vw
dGlvbgorUEFTUyBDb25zdHJ1Y3Rpb24gb2YgV2ViR0xTaG9ydEFycmF5IHdpdGggb3V0LW9mLXJh
bmdlIHZhbHVlcyB0aHJldyBJTkRFWF9TSVpFX0VSUiBleGNlcHRpb24KK1BBU1MgQ29uc3RydWN0
aW9uIG9mIEFycmF5QnVmZmVyIHdpdGggbmVnYXRpdmUgc2l6ZSB0aHJldyBleGNlcHRpb24KK1BB
U1MgQ29uc3RydWN0aW9uIG9mIFdlYkdMU2hvcnRBcnJheSB3aXRoIG5lZ2F0aXZlIHNpemUgdGhy
ZXcgZXhjZXB0aW9uCitQQVNTIENvbnN0cnVjdGlvbiBvZiBXZWJHTFNob3J0QXJyYXkgd2l0aCBu
ZWdhdGl2ZSBvdXQtb2YtcmFuZ2UgdmFsdWVzIHRocmV3IElOREVYX1NJWkVfRVJSIGV4Y2VwdGlv
bgorUEFTUyBDb25zdHJ1Y3Rpb24gb2YgV2ViR0xTaG9ydEFycmF5IHdpdGggdW5hbGlnbmVkIG9m
ZnNldCB0aHJldyBJTkRFWF9TSVpFX0VSUiBleGNlcHRpb24KIFBBU1MgQ29uc3RydWN0aW9uIG9m
IGh1Z2UgV2ViR0xTaG9ydEFycmF5IHRocmV3IGV4Y2VwdGlvbgogVGVzdGluZyBzbGljaW5nIG9m
IFdlYkdMU2hvcnRBcnJheQogUEFTUyBhcnJheS5sZW5ndGggaXMgMzIgLyB0eXBlU2l6ZQpAQCAt
Mzk3LDggKzQ0OSwxMiBAQCBQQVNTIHRlc3QgV2ViR0xVbnNpZ25lZEJ5dGVBcnJheSBTbGljZQog
UEFTUyBuZWdhdGl2ZVRlc3QgV2ViR0xVbnNpZ25lZEJ5dGVBcnJheSBTbGljZQogUEFTUyB0ZXN0
IFdlYkdMVW5zaWduZWRCeXRlQXJyYXkgQm91bmRhcnlDb25kaXRpb25zKDAsIDAsIDI1NSwgMjU1
KQogUEFTUyBDb25zdHJ1Y3Rpb24gb2YgV2ViR0xVbnNpZ25lZEJ5dGVBcnJheSB3aXRoIG51bGwg
YnVmZmVyIHRocmV3IGV4Y2VwdGlvbgotUEFTUyBDb25zdHJ1Y3Rpb24gb2YgV2ViR0xVbnNpZ25l
ZEJ5dGVBcnJheSB3aXRoIG91dC1vZi1yYW5nZSB2YWx1ZXMgdGhyZXcgZXhjZXB0aW9uCi1QQVNT
IENvbnN0cnVjdGlvbiBvZiBXZWJHTFVuc2lnbmVkQnl0ZUFycmF5IHdpdGggbmVnYXRpdmUgb3V0
LW9mLXJhbmdlIHZhbHVlcyB0aHJldyBleGNlcHRpb24KK1BBU1MgQ29uc3RydWN0aW9uIG9mIFdl
YkdMVW5zaWduZWRCeXRlQXJyYXkgd2l0aCAobnVsbCBidWZmZXIsIDApIHRocmV3IGV4Y2VwdGlv
bgorUEFTUyBDb25zdHJ1Y3Rpb24gb2YgV2ViR0xVbnNpZ25lZEJ5dGVBcnJheSB3aXRoIChudWxs
IGJ1ZmZlciwgMCwgMCkgdGhyZXcgZXhjZXB0aW9uCitQQVNTIENvbnN0cnVjdGlvbiBvZiBXZWJH
TFVuc2lnbmVkQnl0ZUFycmF5IHdpdGggb3V0LW9mLXJhbmdlIHZhbHVlcyB0aHJldyBJTkRFWF9T
SVpFX0VSUiBleGNlcHRpb24KK1BBU1MgQ29uc3RydWN0aW9uIG9mIEFycmF5QnVmZmVyIHdpdGgg
bmVnYXRpdmUgc2l6ZSB0aHJldyBleGNlcHRpb24KK1BBU1MgQ29uc3RydWN0aW9uIG9mIFdlYkdM
VW5zaWduZWRCeXRlQXJyYXkgd2l0aCBuZWdhdGl2ZSBzaXplIHRocmV3IGV4Y2VwdGlvbgorUEFT
UyBDb25zdHJ1Y3Rpb24gb2YgV2ViR0xVbnNpZ25lZEJ5dGVBcnJheSB3aXRoIG5lZ2F0aXZlIG91
dC1vZi1yYW5nZSB2YWx1ZXMgdGhyZXcgSU5ERVhfU0laRV9FUlIgZXhjZXB0aW9uCiBUZXN0aW5n
IHNsaWNpbmcgb2YgV2ViR0xVbnNpZ25lZEJ5dGVBcnJheQogUEFTUyBhcnJheS5sZW5ndGggaXMg
MzIgLyB0eXBlU2l6ZQogUEFTUyBhcnJheS5zbGljZSg0LCAweDNGRkZGRkZGKS5sZW5ndGggaXMg
KDMyIC8gdHlwZVNpemUpIC0gNApAQCAtNDMwLDggKzQ4NiwxMyBAQCBQQVNTIHRlc3QgV2ViR0xV
bnNpZ25lZEludEFycmF5IFNsaWNlCiBQQVNTIG5lZ2F0aXZlVGVzdCBXZWJHTFVuc2lnbmVkSW50
QXJyYXkgU2xpY2UKIFBBU1MgdGVzdCBXZWJHTFVuc2lnbmVkSW50QXJyYXkgQm91bmRhcnlDb25k
aXRpb25zKDAsIDAsIDQyOTQ5NjcyOTUsIDQyOTQ5NjcyOTUpCiBQQVNTIENvbnN0cnVjdGlvbiBv
ZiBXZWJHTFVuc2lnbmVkSW50QXJyYXkgd2l0aCBudWxsIGJ1ZmZlciB0aHJldyBleGNlcHRpb24K
LVBBU1MgQ29uc3RydWN0aW9uIG9mIFdlYkdMVW5zaWduZWRJbnRBcnJheSB3aXRoIG91dC1vZi1y
YW5nZSB2YWx1ZXMgdGhyZXcgZXhjZXB0aW9uCi1QQVNTIENvbnN0cnVjdGlvbiBvZiBXZWJHTFVu
c2lnbmVkSW50QXJyYXkgd2l0aCBuZWdhdGl2ZSBvdXQtb2YtcmFuZ2UgdmFsdWVzIHRocmV3IGV4
Y2VwdGlvbgorUEFTUyBDb25zdHJ1Y3Rpb24gb2YgV2ViR0xVbnNpZ25lZEludEFycmF5IHdpdGgg
KG51bGwgYnVmZmVyLCAwKSB0aHJldyBleGNlcHRpb24KK1BBU1MgQ29uc3RydWN0aW9uIG9mIFdl
YkdMVW5zaWduZWRJbnRBcnJheSB3aXRoIChudWxsIGJ1ZmZlciwgMCwgMCkgdGhyZXcgZXhjZXB0
aW9uCitQQVNTIENvbnN0cnVjdGlvbiBvZiBXZWJHTFVuc2lnbmVkSW50QXJyYXkgd2l0aCBvdXQt
b2YtcmFuZ2UgdmFsdWVzIHRocmV3IElOREVYX1NJWkVfRVJSIGV4Y2VwdGlvbgorUEFTUyBDb25z
dHJ1Y3Rpb24gb2YgQXJyYXlCdWZmZXIgd2l0aCBuZWdhdGl2ZSBzaXplIHRocmV3IGV4Y2VwdGlv
bgorUEFTUyBDb25zdHJ1Y3Rpb24gb2YgV2ViR0xVbnNpZ25lZEludEFycmF5IHdpdGggbmVnYXRp
dmUgc2l6ZSB0aHJldyBleGNlcHRpb24KK1BBU1MgQ29uc3RydWN0aW9uIG9mIFdlYkdMVW5zaWdu
ZWRJbnRBcnJheSB3aXRoIG5lZ2F0aXZlIG91dC1vZi1yYW5nZSB2YWx1ZXMgdGhyZXcgSU5ERVhf
U0laRV9FUlIgZXhjZXB0aW9uCitQQVNTIENvbnN0cnVjdGlvbiBvZiBXZWJHTFVuc2lnbmVkSW50
QXJyYXkgd2l0aCB1bmFsaWduZWQgb2Zmc2V0IHRocmV3IElOREVYX1NJWkVfRVJSIGV4Y2VwdGlv
bgogUEFTUyBDb25zdHJ1Y3Rpb24gb2YgaHVnZSBXZWJHTFVuc2lnbmVkSW50QXJyYXkgdGhyZXcg
ZXhjZXB0aW9uCiBUZXN0aW5nIHNsaWNpbmcgb2YgV2ViR0xVbnNpZ25lZEludEFycmF5CiBQQVNT
IGFycmF5Lmxlbmd0aCBpcyAzMiAvIHR5cGVTaXplCkBAIC00NjUsOCArNTI2LDEzIEBAIFBBU1Mg
dGVzdCBXZWJHTFVuc2lnbmVkU2hvcnRBcnJheSBTbGljZQogUEFTUyBuZWdhdGl2ZVRlc3QgV2Vi
R0xVbnNpZ25lZFNob3J0QXJyYXkgU2xpY2UKIFBBU1MgdGVzdCBXZWJHTFVuc2lnbmVkU2hvcnRB
cnJheSBCb3VuZGFyeUNvbmRpdGlvbnMoMCwgMCwgNjU1MzUsIDY1NTM1KQogUEFTUyBDb25zdHJ1
Y3Rpb24gb2YgV2ViR0xVbnNpZ25lZFNob3J0QXJyYXkgd2l0aCBudWxsIGJ1ZmZlciB0aHJldyBl
eGNlcHRpb24KLVBBU1MgQ29uc3RydWN0aW9uIG9mIFdlYkdMVW5zaWduZWRTaG9ydEFycmF5IHdp
dGggb3V0LW9mLXJhbmdlIHZhbHVlcyB0aHJldyBleGNlcHRpb24KLVBBU1MgQ29uc3RydWN0aW9u
IG9mIFdlYkdMVW5zaWduZWRTaG9ydEFycmF5IHdpdGggbmVnYXRpdmUgb3V0LW9mLXJhbmdlIHZh
bHVlcyB0aHJldyBleGNlcHRpb24KK1BBU1MgQ29uc3RydWN0aW9uIG9mIFdlYkdMVW5zaWduZWRT
aG9ydEFycmF5IHdpdGggKG51bGwgYnVmZmVyLCAwKSB0aHJldyBleGNlcHRpb24KK1BBU1MgQ29u
c3RydWN0aW9uIG9mIFdlYkdMVW5zaWduZWRTaG9ydEFycmF5IHdpdGggKG51bGwgYnVmZmVyLCAw
LCAwKSB0aHJldyBleGNlcHRpb24KK1BBU1MgQ29uc3RydWN0aW9uIG9mIFdlYkdMVW5zaWduZWRT
aG9ydEFycmF5IHdpdGggb3V0LW9mLXJhbmdlIHZhbHVlcyB0aHJldyBJTkRFWF9TSVpFX0VSUiBl
eGNlcHRpb24KK1BBU1MgQ29uc3RydWN0aW9uIG9mIEFycmF5QnVmZmVyIHdpdGggbmVnYXRpdmUg
c2l6ZSB0aHJldyBleGNlcHRpb24KK1BBU1MgQ29uc3RydWN0aW9uIG9mIFdlYkdMVW5zaWduZWRT
aG9ydEFycmF5IHdpdGggbmVnYXRpdmUgc2l6ZSB0aHJldyBleGNlcHRpb24KK1BBU1MgQ29uc3Ry
dWN0aW9uIG9mIFdlYkdMVW5zaWduZWRTaG9ydEFycmF5IHdpdGggbmVnYXRpdmUgb3V0LW9mLXJh
bmdlIHZhbHVlcyB0aHJldyBJTkRFWF9TSVpFX0VSUiBleGNlcHRpb24KK1BBU1MgQ29uc3RydWN0
aW9uIG9mIFdlYkdMVW5zaWduZWRTaG9ydEFycmF5IHdpdGggdW5hbGlnbmVkIG9mZnNldCB0aHJl
dyBJTkRFWF9TSVpFX0VSUiBleGNlcHRpb24KIFBBU1MgQ29uc3RydWN0aW9uIG9mIGh1Z2UgV2Vi
R0xVbnNpZ25lZFNob3J0QXJyYXkgdGhyZXcgZXhjZXB0aW9uCiBUZXN0aW5nIHNsaWNpbmcgb2Yg
V2ViR0xVbnNpZ25lZFNob3J0QXJyYXkKIFBBU1MgYXJyYXkubGVuZ3RoIGlzIDMyIC8gdHlwZVNp
emUKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmdsL2FycmF5LXVuaXQtdGVzdHMu
aHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC9hcnJheS11
bml0LXRlc3RzLmh0bWwJKHJldmlzaW9uIDYxMzAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9jYW52
YXMvd2ViZ2wvYXJyYXktdW5pdC10ZXN0cy5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0zNDQsMzMg
KzM0NCw3MSBAQCBmdW5jdGlvbiB0ZXN0Qm91bmRhcnlDb25kaXRpb25zKHR5cGUsIG5hCiBmdW5j
dGlvbiB0ZXN0Q29uc3RydWN0aW9uV2l0aE51bGxCdWZmZXIodHlwZSwgbmFtZSkgewogICAgIHZh
ciBhcnJheTsKICAgICB0cnkgewotICAgICAgICBhcnJheSA9IG5ldyB0eXBlKG51bGwsIDAsIDAp
OworICAgICAgICBhcnJheSA9IG5ldyB0eXBlKG51bGwpOwogICAgICAgICB0ZXN0RmFpbGVkKCJD
b25zdHJ1Y3Rpb24gb2YgIiArIG5hbWUgKyAiIHdpdGggbnVsbCBidWZmZXIgc2hvdWxkIHRocm93
IGV4Y2VwdGlvbiIpOwogICAgIH0gY2F0Y2ggKGUpIHsKICAgICAgICAgdGVzdFBhc3NlZCgiQ29u
c3RydWN0aW9uIG9mICIgKyBuYW1lICsgIiB3aXRoIG51bGwgYnVmZmVyIHRocmV3IGV4Y2VwdGlv
biIpOwogICAgIH0KKyAgICB0cnkgeworICAgICAgICBhcnJheSA9IG5ldyB0eXBlKG51bGwsIDAs
IDApOworICAgICAgICB0ZXN0RmFpbGVkKCJDb25zdHJ1Y3Rpb24gb2YgIiArIG5hbWUgKyAiIHdp
dGggKG51bGwgYnVmZmVyLCAwKSBzaG91bGQgdGhyb3cgZXhjZXB0aW9uIik7CisgICAgfSBjYXRj
aCAoZSkgeworICAgICAgICB0ZXN0UGFzc2VkKCJDb25zdHJ1Y3Rpb24gb2YgIiArIG5hbWUgKyAi
IHdpdGggKG51bGwgYnVmZmVyLCAwKSB0aHJldyBleGNlcHRpb24iKTsKKyAgICB9CisgICAgdHJ5
IHsKKyAgICAgICAgYXJyYXkgPSBuZXcgdHlwZShudWxsLCAwLCAwKTsKKyAgICAgICAgdGVzdEZh
aWxlZCgiQ29uc3RydWN0aW9uIG9mICIgKyBuYW1lICsgIiB3aXRoIChudWxsIGJ1ZmZlciwgMCwg
MCkgc2hvdWxkIHRocm93IGV4Y2VwdGlvbiIpOworICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAgICAg
dGVzdFBhc3NlZCgiQ29uc3RydWN0aW9uIG9mICIgKyBuYW1lICsgIiB3aXRoIChudWxsIGJ1ZmZl
ciwgMCwgMCkgdGhyZXcgZXhjZXB0aW9uIik7CisgICAgfQogfQogCi0KLWZ1bmN0aW9uIHRlc3RD
b25zdHJ1Y3Rpb25XaXRoT3V0T2ZSYW5nZVZhbHVlcyh0eXBlLCBuYW1lKSB7Ci0gICAgdmFyIGJ1
ZmZlciA9IG5ldyBBcnJheUJ1ZmZlcig0KTsKLSAgICB2YXIgYXJyYXk7CitmdW5jdGlvbiBzaG91
bGRUaHJvd0luZGV4U2l6ZUVycihmdW5jLCB0ZXh0KSB7CisgICAgdmFyIGVycm9yVGV4dCA9IHRl
eHQgKyAiIHNob3VsZCB0aHJvdyBJTkRFWF9TSVpFX0VSUiBleGNlcHRpb24iOwogICAgIHRyeSB7
Ci0gICAgICAgIGFycmF5ID0gbmV3IHR5cGUoYnVmZmVyLCA0LCAweDNGRkZGRkZGKTsKLSAgICAg
ICAgdGVzdEZhaWxlZCgiQ29uc3RydWN0aW9uIG9mICIgKyBuYW1lICsgIiB3aXRoIG91dC1vZi1y
YW5nZSB2YWx1ZXMgc2hvdWxkIHRocm93IGV4Y2VwdGlvbiIpOworICAgICAgICBmdW5jKCk7Cisg
ICAgICAgIHRlc3RGYWlsZWQoZXJyb3JUZXh0KTsKICAgICB9IGNhdGNoIChlKSB7Ci0gICAgICAg
IHRlc3RQYXNzZWQoIkNvbnN0cnVjdGlvbiBvZiAiICsgbmFtZSArICIgd2l0aCBvdXQtb2YtcmFu
Z2UgdmFsdWVzIHRocmV3IGV4Y2VwdGlvbiIpOworICAgICAgICBpZiAoZS5jb2RlICE9IERPTUV4
Y2VwdGlvbi5JTkRFWF9TSVpFX0VSUikgeworICAgICAgICAgICAgdGVzdEZhaWxlZChlcnJvclRl
eHQpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgdGVzdFBhc3NlZCh0ZXh0ICsgIiB0
aHJldyBJTkRFWF9TSVpFX0VSUiBleGNlcHRpb24iKTsKKyAgICAgICAgfQogICAgIH0KIH0KIAor
ZnVuY3Rpb24gdGVzdENvbnN0cnVjdGlvbldpdGhPdXRPZlJhbmdlVmFsdWVzKHR5cGUsIG5hbWUp
IHsKKyAgICBzaG91bGRUaHJvd0luZGV4U2l6ZUVycihmdW5jdGlvbigpIHsKKyAgICAgICAgdmFy
IGJ1ZmZlciA9IG5ldyBBcnJheUJ1ZmZlcig0KTsKKyAgICAgICAgdmFyIGFycmF5ID0gbmV3IHR5
cGUoYnVmZmVyLCA0LCAweDNGRkZGRkZGKTsKKyAgICB9LCAiQ29uc3RydWN0aW9uIG9mICIgKyBu
YW1lICsgIiB3aXRoIG91dC1vZi1yYW5nZSB2YWx1ZXMiKTsKK30KKwogZnVuY3Rpb24gdGVzdENv
bnN0cnVjdGlvbldpdGhOZWdhdGl2ZU91dE9mUmFuZ2VWYWx1ZXModHlwZSwgbmFtZSkgewotICAg
IHZhciBidWZmZXIgPSBuZXcgQXJyYXlCdWZmZXIoNCk7Ci0gICAgdmFyIGFycmF5OwogICAgIHRy
eSB7Ci0gICAgICAgIGFycmF5ID0gbmV3IHR5cGUoYnVmZmVyLCA0LCAtMjE0NzQ4MzY0OCk7Ci0g
ICAgICAgIHRlc3RGYWlsZWQoIkNvbnN0cnVjdGlvbiBvZiAiICsgbmFtZSArICIgd2l0aCBuZWdh
dGl2ZSBvdXQtb2YtcmFuZ2UgdmFsdWVzIHNob3VsZCB0aHJvdyBleGNlcHRpb24iKTsKKyAgICAg
ICAgdmFyIGJ1ZmZlciA9IG5ldyBBcnJheUJ1ZmZlcigtMSk7CisgICAgICAgIHRlc3RGYWlsZWQo
IkNvbnN0cnVjdGlvbiBvZiBBcnJheUJ1ZmZlciB3aXRoIG5lZ2F0aXZlIHNpemUgc2hvdWxkIHRo
cm93IGV4Y2VwdGlvbiIpOwogICAgIH0gY2F0Y2ggKGUpIHsKLSAgICAgICAgdGVzdFBhc3NlZCgi
Q29uc3RydWN0aW9uIG9mICIgKyBuYW1lICsgIiB3aXRoIG5lZ2F0aXZlIG91dC1vZi1yYW5nZSB2
YWx1ZXMgdGhyZXcgZXhjZXB0aW9uIik7CisgICAgICAgIHRlc3RQYXNzZWQoIkNvbnN0cnVjdGlv
biBvZiBBcnJheUJ1ZmZlciB3aXRoIG5lZ2F0aXZlIHNpemUgdGhyZXcgZXhjZXB0aW9uIik7Cisg
ICAgfQorICAgIHRyeSB7CisgICAgICAgIHZhciBhcnJheSA9IG5ldyB0eXBlKC0xKTsKKyAgICAg
ICAgdGVzdEZhaWxlZCgiQ29uc3RydWN0aW9uIG9mICIgKyBuYW1lICsgIiB3aXRoIG5lZ2F0aXZl
IHNpemUgc2hvdWxkIHRocm93IGV4Y2VwdGlvbiIpOworICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAg
ICAgdGVzdFBhc3NlZCgiQ29uc3RydWN0aW9uIG9mICIgKyBuYW1lICsgIiB3aXRoIG5lZ2F0aXZl
IHNpemUgdGhyZXcgZXhjZXB0aW9uIik7CisgICAgfQorICAgIHNob3VsZFRocm93SW5kZXhTaXpl
RXJyKGZ1bmN0aW9uKCkgeworICAgICAgICB2YXIgYnVmZmVyID0gbmV3IEFycmF5QnVmZmVyKDQp
OworICAgICAgICB2YXIgYXJyYXkgPSBuZXcgdHlwZShidWZmZXIsIDQsIC0yMTQ3NDgzNjQ4KTsK
KyAgICB9LCAiQ29uc3RydWN0aW9uIG9mICIgKyBuYW1lICsgIiB3aXRoIG5lZ2F0aXZlIG91dC1v
Zi1yYW5nZSB2YWx1ZXMiKTsKK30KKworZnVuY3Rpb24gdGVzdENvbnN0cnVjdGlvbldpdGhVbmFs
aWduZWRPZmZzZXQodHlwZSwgbmFtZSwgZWxlbWVudFNpemVJbkJ5dGVzKSB7CisgICAgaWYgKGVs
ZW1lbnRTaXplSW5CeXRlcyA+IDEpIHsKKyAgICAgICAgc2hvdWxkVGhyb3dJbmRleFNpemVFcnIo
ZnVuY3Rpb24oKSB7CisgICAgICAgICAgICB2YXIgYnVmZmVyID0gbmV3IEFycmF5QnVmZmVyKDMy
KTsKKyAgICAgICAgICAgIHZhciBhcnJheSA9IG5ldyB0eXBlKGJ1ZmZlciwgMSwgZWxlbWVudFNp
emVJbkJ5dGVzKTsKKyAgICAgICAgfSwgIkNvbnN0cnVjdGlvbiBvZiAiICsgbmFtZSArICIgd2l0
aCB1bmFsaWduZWQgb2Zmc2V0Iik7CiAgICAgfQogfQogCkBAIC02NDYsNiArNjg0LDcgQEAgZnVu
Y3Rpb24gcnVuVGVzdHMoKSB7CiAgICAgdGVzdENvbnN0cnVjdGlvbldpdGhOdWxsQnVmZmVyKHR5
cGUsIG5hbWUpOwogICAgIHRlc3RDb25zdHJ1Y3Rpb25XaXRoT3V0T2ZSYW5nZVZhbHVlcyh0eXBl
LCBuYW1lKTsKICAgICB0ZXN0Q29uc3RydWN0aW9uV2l0aE5lZ2F0aXZlT3V0T2ZSYW5nZVZhbHVl
cyh0eXBlLCBuYW1lKTsKKyAgICB0ZXN0Q29uc3RydWN0aW9uV2l0aFVuYWxpZ25lZE9mZnNldCh0
eXBlLCBuYW1lLCB0ZXN0Q2FzZS5lbGVtZW50U2l6ZUluQnl0ZXMpOwogICAgIHRlc3RDb25zdHJ1
Y3Rpb25PZkh1Z2VBcnJheSh0eXBlLCBuYW1lLCB0ZXN0Q2FzZS5lbGVtZW50U2l6ZUluQnl0ZXMp
OwogICAgIHRlc3RTbGljaW5nV2l0aE91dE9mUmFuZ2VWYWx1ZXModHlwZSwgbmFtZSwgdGVzdENh
c2UuZWxlbWVudFNpemVJbkJ5dGVzKTsKICAgICB0ZXN0U2xpY2luZ1dpdGhEZWZhdWx0VmFsdWVz
KHR5cGUsIG5hbWUsIHRlc3RDYXNlLmVsZW1lbnRTaXplSW5CeXRlcyk7Cg==
</data>
<flag name="commit-queue"
          id="45508"
          type_id="3"
          status="-"
          setter="kbr"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>58955</attachid>
            <date>2010-06-16 19:49:10 -0700</date>
            <delta_ts>2010-06-17 10:47:29 -0700</delta_ts>
            <desc>Revised patch</desc>
            <filename>error-conditions.patch</filename>
            <type>text/plain</type>
            <size>39090</size>
            <attacher name="Kenneth Russell">kbr</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA2MTMwMCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsNDggQEAKKzIwMTAtMDYtMTYgIEtlbm5ldGggUnVzc2VsbCAgPGtickBnb29nbGUu
Y29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIENs
ZWFuIHVwIGVycm9yIGNvbmRpdGlvbnMgZm9yIFR5cGVkIEFycmF5cworICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDA3NTUKKworICAgICAgICAqIGJpbmRp
bmdzL2pzL0pTQXJyYXlCdWZmZXJDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNBcnJh
eUJ1ZmZlckNvbnN0cnVjdG9yOjpjb25zdHJ1Y3RKU0FycmF5QnVmZmVyKToKKyAgICAgICAgIC0g
Rml4ZWQgaGFuZGxpbmcgb2YgTmFOLytpbmYvLWluZiBsZW5ndGhzLiBUaHJvdyBSYW5nZUVycm9y
IGZvciB0b28tbGFyZ2Ugb3IgbmVnYXRpdmUgbGVuZ3Rocy4KKyAgICAgICAgKiBiaW5kaW5ncy9q
cy9KU0FycmF5QnVmZmVyVmlld0hlbHBlci5oOgorICAgICAgICAoV2ViQ29yZTo6Y29uc3RydWN0
QXJyYXlCdWZmZXJWaWV3KToKKyAgICAgICAgIC0gQ2hhbmdlZCBhbGwgZXJyb3IgY29kZSBwYXRo
cyB0byB0aHJvdyBleGNlcHRpb25zLiBDbGFyaWZpZWQgZXhjZXB0aW9uIHR5cGVzLgorICAgICAg
ICAqIGJpbmRpbmdzL2pzL0pTRmxvYXQzMkFycmF5Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkpTRmxvYXQzMkFycmF5Q29uc3RydWN0b3I6OmNvbnN0cnVjdEpTRmxvYXQzMkFycmF5KToK
KyAgICAgICAgIC0gUmVtb3ZlZCB0aHJvd2luZyBvZiBJTkRFWF9TSVpFX0VSUk9SLCBkZWxlZ2F0
aW5nIHJlc3BvbnNpYmlsaXR5IHRvIGNvbnN0cnVjdEFycmF5QnVmZmVyVmlldy4KKyAgICAgICAg
KiBiaW5kaW5ncy9qcy9KU0ludDE2QXJyYXlDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6
SlNJbnQxNkFycmF5Q29uc3RydWN0b3I6OmNvbnN0cnVjdEpTSW50MTZBcnJheSk6CisgICAgICAg
ICAtIFJlbW92ZWQgdGhyb3dpbmcgb2YgSU5ERVhfU0laRV9FUlJPUiwgZGVsZWdhdGluZyByZXNw
b25zaWJpbGl0eSB0byBjb25zdHJ1Y3RBcnJheUJ1ZmZlclZpZXcuCisgICAgICAgICogYmluZGlu
Z3MvanMvSlNJbnQzMkFycmF5Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTSW50MzJB
cnJheUNvbnN0cnVjdG9yOjpjb25zdHJ1Y3RKU0ludDMyQXJyYXkpOgorICAgICAgICAgLSBSZW1v
dmVkIHRocm93aW5nIG9mIElOREVYX1NJWkVfRVJST1IsIGRlbGVnYXRpbmcgcmVzcG9uc2liaWxp
dHkgdG8gY29uc3RydWN0QXJyYXlCdWZmZXJWaWV3LgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pT
SW50OEFycmF5Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTSW50OEFycmF5Q29uc3Ry
dWN0b3I6OmNvbnN0cnVjdEpTSW50OEFycmF5KToKKyAgICAgICAgIC0gUmVtb3ZlZCB0aHJvd2lu
ZyBvZiBJTkRFWF9TSVpFX0VSUk9SLCBkZWxlZ2F0aW5nIHJlc3BvbnNpYmlsaXR5IHRvIGNvbnN0
cnVjdEFycmF5QnVmZmVyVmlldy4KKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU1VpbnQxNkFycmF5
Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTVWludDE2QXJyYXlDb25zdHJ1Y3Rvcjo6
Y29uc3RydWN0SlNVaW50MTZBcnJheSk6CisgICAgICAgICAtIFJlbW92ZWQgdGhyb3dpbmcgb2Yg
SU5ERVhfU0laRV9FUlJPUiwgZGVsZWdhdGluZyByZXNwb25zaWJpbGl0eSB0byBjb25zdHJ1Y3RB
cnJheUJ1ZmZlclZpZXcuCisgICAgICAgICogYmluZGluZ3MvanMvSlNVaW50MzJBcnJheUN1c3Rv
bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU1VpbnQzMkFycmF5Q29uc3RydWN0b3I6OmNvbnN0
cnVjdEpTVWludDMyQXJyYXkpOgorICAgICAgICAgLSBSZW1vdmVkIHRocm93aW5nIG9mIElOREVY
X1NJWkVfRVJST1IsIGRlbGVnYXRpbmcgcmVzcG9uc2liaWxpdHkgdG8gY29uc3RydWN0QXJyYXlC
dWZmZXJWaWV3LgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTVWludDhBcnJheUN1c3RvbS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpKU1VpbnQ4QXJyYXlDb25zdHJ1Y3Rvcjo6Y29uc3RydWN0SlNV
aW50OEFycmF5KToKKyAgICAgICAgIC0gUmVtb3ZlZCB0aHJvd2luZyBvZiBJTkRFWF9TSVpFX0VS
Uk9SLCBkZWxlZ2F0aW5nIHJlc3BvbnNpYmlsaXR5IHRvIGNvbnN0cnVjdEFycmF5QnVmZmVyVmll
dy4KKyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhBcnJheUJ1ZmZlckN1c3RvbS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpWOEFycmF5QnVmZmVyOjpjb25zdHJ1Y3RvckNhbGxiYWNrKToK
KyAgICAgICAgIC0gRml4ZWQgaGFuZGxpbmcgb2YgTmFOLytpbmYvLWluZiBsZW5ndGhzLiBUaHJv
dyBSYW5nZUVycm9yIGZvciB0b28tbGFyZ2Ugb3IgbmVnYXRpdmUgbGVuZ3Rocy4KKyAgICAgICAg
ICAgQ2xhcmlmaWVkIGV4Y2VwdGlvbiB0eXBlcy4KKyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0
b20vVjhBcnJheUJ1ZmZlclZpZXdDdXN0b20uaDoKKyAgICAgICAgKFdlYkNvcmU6OmNvbnN0cnVj
dFdlYkdMQXJyYXkpOgorICAgICAgICAgLSBDbGFyaWZpZWQgZXhjZXB0aW9uIHR5cGVzIGFuZCB0
aHJvd2luZyBvZiBleGNlcHRpb25zIGFsb25nIGFsbCBlcnJvciBjb2RlIHBhdGhzLgorICAgICAg
ICAqIGh0bWwvY2FudmFzL1R5cGVkQXJyYXlCYXNlLmg6CisgICAgICAgIChXZWJDb3JlOjpUeXBl
ZEFycmF5QmFzZTo6Y3JlYXRlKToKKyAgICAgICAgIC0gQWRkZWQgbmVjZXNzYXJ5IG51bGwgY2hl
Y2tzIGR1cmluZyBhbGxvY2F0aW9uLgorCiAyMDEwLTA2LTE2ICBBbnRvbmlvIEdvbWVzICA8dG9u
aWtpdG9vQHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgU2ltb24gRnJhc2VyLgpJ
bmRleDogV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0FycmF5QnVmZmVyQ3VzdG9tLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTQXJyYXlCdWZmZXJDdXN0b20uY3BwCShyZXZp
c2lvbiA2MTMwMCkKKysrIFdlYkNvcmUvYmluZGluZ3MvanMvSlNBcnJheUJ1ZmZlckN1c3RvbS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTMxLDYgKzMxLDcgQEAKIAogI2luY2x1ZGUgIkFycmF5QnVm
ZmVyLmgiCiAjaW5jbHVkZSAiRXhjZXB0aW9uQ29kZS5oIgorI2luY2x1ZGUgPHJ1bnRpbWUvRXJy
b3IuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC00MCwxNyArNDEsMTQgQEAgRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBKU0FycmF5QnVmZgogewogICAgIEpTQXJyYXlCdWZmZXJD
b25zdHJ1Y3RvcioganNDb25zdHJ1Y3RvciA9IHN0YXRpY19jYXN0PEpTQXJyYXlCdWZmZXJDb25z
dHJ1Y3Rvcio+KGV4ZWMtPmNhbGxlZSgpKTsKIAotICAgIHVuc2lnbmVkIGludCBzaXplID0gMDsK
LSAgICBpZiAoZXhlYy0+YXJndW1lbnRDb3VudCgpID09IDEpIHsKLSAgICAgICAgc2l6ZSA9ICh1
bnNpZ25lZCBpbnQpZXhlYy0+YXJndW1lbnQoMCkudG9JbnQzMihleGVjKTsKLSAgICAgICAgaWYg
KGlzbmFuKHNpemUpKQotICAgICAgICAgICAgc2l6ZSA9IDA7Ci0gICAgfQotICAgIFJlZlB0cjxB
cnJheUJ1ZmZlcj4gYnVmZmVyID0gQXJyYXlCdWZmZXI6OmNyZWF0ZShzaXplLCAxKTsKLSAgICBp
ZiAoIWJ1ZmZlci5nZXQoKSl7Ci0gICAgICAgIHNldERPTUV4Y2VwdGlvbihleGVjLCBJTkRFWF9T
SVpFX0VSUik7Ci0gICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNWYWx1ZSgpKTsKLSAg
ICB9CisgICAgaW50IGxlbmd0aCA9IDA7CisgICAgaWYgKGV4ZWMtPmFyZ3VtZW50Q291bnQoKSA+
IDApCisgICAgICAgIGxlbmd0aCA9IGV4ZWMtPmFyZ3VtZW50KDApLnRvSW50MzIoZXhlYyk7IC8v
IE5hTi8raW5mLy1pbmYgcmV0dXJucyAwLCB0aGlzIGlzIGludGVuZGVkIGJ5IFdlYklETAorICAg
IFJlZlB0cjxBcnJheUJ1ZmZlcj4gYnVmZmVyOworICAgIGlmIChsZW5ndGggPj0gMCkKKyAgICAg
ICAgYnVmZmVyID0gQXJyYXlCdWZmZXI6OmNyZWF0ZShzdGF0aWNfY2FzdDx1bnNpZ25lZD4obGVu
Z3RoKSwgMSk7CisgICAgaWYgKCFidWZmZXIuZ2V0KCkpCisgICAgICAgIHJldHVybiB0aHJvd1ZN
RXJyb3IoZXhlYywgY3JlYXRlUmFuZ2VFcnJvcihleGVjLCAiQXJyYXlCdWZmZXIgc2l6ZSBpcyBu
b3QgYSBzbWFsbCBlbm91Z2ggcG9zaXRpdmUgaW50ZWdlci4iKSk7CiAgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShhc09iamVjdCh0b0pTKGV4ZWMsIGpzQ29uc3RydWN0b3ItPmdsb2JhbE9iamVj
dCgpLCBidWZmZXIuZ2V0KCkpKSk7CiB9CiAKSW5kZXg6IFdlYkNvcmUvYmluZGluZ3MvanMvSlNB
cnJheUJ1ZmZlclZpZXdIZWxwZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL2pz
L0pTQXJyYXlCdWZmZXJWaWV3SGVscGVyLmgJKHJldmlzaW9uIDYxMzAwKQorKysgV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0FycmF5QnVmZmVyVmlld0hlbHBlci5oCSh3b3JraW5nIGNvcHkpCkBAIC04
Myw3ICs4Myw4IEBAIEpTQzo6SlNWYWx1ZSBzZXRXZWJHTEFycmF5SGVscGVyKEpTQzo6RXgKICAg
ICByZXR1cm4gSlNDOjp0aHJvd1N5bnRheEVycm9yKGV4ZWMpOwogfQogCi0vLyBUZW1wbGF0ZSBm
dW5jdGlvbiB1c2VkIGJ5IFhYWEFycmF5Q29uc3RydWN0b3JzCisvLyBUZW1wbGF0ZSBmdW5jdGlv
biB1c2VkIGJ5IFhYWEFycmF5Q29uc3RydWN0b3JzLgorLy8gSWYgdGhpcyByZXR1cm5zIDAsIGl0
IHdpbGwgYWxyZWFkeSBoYXZlIHRocm93biBhIEphdmFTY3JpcHQgZXhjZXB0aW9uLgogdGVtcGxh
dGU8Y2xhc3MgQywgdHlwZW5hbWUgVD4KIFBhc3NSZWZQdHI8QXJyYXlCdWZmZXJWaWV3PiBjb25z
dHJ1Y3RBcnJheUJ1ZmZlclZpZXcoSlNDOjpFeGVjU3RhdGUqIGV4ZWMpCiB7CkBAIC05OSw4ICsx
MDAsOSBAQCBQYXNzUmVmUHRyPEFycmF5QnVmZmVyVmlldz4gY29uc3RydWN0QXJyCiAgICAgaWYg
KGV4ZWMtPmFyZ3VtZW50Q291bnQoKSA8IDEpCiAgICAgICAgIHJldHVybiBDOjpjcmVhdGUoMCwg
MCwgMCk7CiAgICAgCi0gICAgaWYgKGV4ZWMtPmFyZ3VtZW50Q291bnQoKSA+IDEgJiYgIWV4ZWMt
PmFyZ3VtZW50KDApLmlzT2JqZWN0KCkpIHsKKyAgICBpZiAoZXhlYy0+YXJndW1lbnQoMCkuaXNO
dWxsKCkpIHsKICAgICAgICAgLy8gSW52YWxpZCBmaXJzdCBhcmd1bWVudAorICAgICAgICB0aHJv
d1R5cGVFcnJvcihleGVjKTsKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogCkBAIC0xMTEsNyAr
MTEzLDEwIEBAIFBhc3NSZWZQdHI8QXJyYXlCdWZmZXJWaWV3PiBjb25zdHJ1Y3RBcnIKICAgICAg
ICAgICAgIHVuc2lnbmVkIGludCBsZW5ndGggPSAoYnVmZmVyLT5ieXRlTGVuZ3RoKCkgLSBvZmZz
ZXQpIC8gc2l6ZW9mKFQpOwogICAgICAgICAgICAgaWYgKGV4ZWMtPmFyZ3VtZW50Q291bnQoKSA+
IDIpCiAgICAgICAgICAgICAgICAgbGVuZ3RoID0gZXhlYy0+YXJndW1lbnQoMikudG9VSW50MzIo
ZXhlYyk7Ci0gICAgICAgICAgICByZXR1cm4gQzo6Y3JlYXRlKGJ1ZmZlciwgb2Zmc2V0LCBsZW5n
dGgpOworICAgICAgICAgICAgUGFzc1JlZlB0cjxBcnJheUJ1ZmZlclZpZXc+IGFycmF5ID0gQzo6
Y3JlYXRlKGJ1ZmZlciwgb2Zmc2V0LCBsZW5ndGgpOworICAgICAgICAgICAgaWYgKCFhcnJheSkK
KyAgICAgICAgICAgICAgICBzZXRET01FeGNlcHRpb24oZXhlYywgSU5ERVhfU0laRV9FUlIpOwor
ICAgICAgICAgICAgcmV0dXJuIGFycmF5OwogICAgICAgICB9CiAgICAgICAgIAogICAgICAgICBK
U0M6OkpTT2JqZWN0KiBhcnJheSA9IGFzT2JqZWN0KGV4ZWMtPmFyZ3VtZW50KDApKTsKQEAgLTEz
MCwxMSArMTM1LDE5IEBAIFBhc3NSZWZQdHI8QXJyYXlCdWZmZXJWaWV3PiBjb25zdHJ1Y3RBcnIK
ICAgICAgICAgICAgIHZhbHVlcy5nZXQoKVtpXSA9IHN0YXRpY19jYXN0PFQ+KHYudG9OdW1iZXIo
ZXhlYykpOwogICAgICAgICB9CiAgICAgICAgIAotICAgICAgICByZXR1cm4gQzo6Y3JlYXRlKHZh
bHVlcy5nZXQoKSwgbGVuZ3RoKTsKKyAgICAgICAgUGFzc1JlZlB0cjxBcnJheUJ1ZmZlclZpZXc+
IHJlc3VsdCA9IEM6OmNyZWF0ZSh2YWx1ZXMuZ2V0KCksIGxlbmd0aCk7CisgICAgICAgIGlmICgh
cmVzdWx0KQorICAgICAgICAgICAgc2V0RE9NRXhjZXB0aW9uKGV4ZWMsIElOREVYX1NJWkVfRVJS
KTsKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CiAgICAgCi0gICAgdW5zaWduZWQgc2l6
ZSA9IGV4ZWMtPmFyZ3VtZW50KDApLnRvVUludDMyKGV4ZWMpOwotICAgIHJldHVybiBDOjpjcmVh
dGUoc2l6ZSk7CisgICAgaW50IGxlbmd0aCA9IGV4ZWMtPmFyZ3VtZW50KDApLnRvSW50MzIoZXhl
Yyk7CisgICAgUGFzc1JlZlB0cjxBcnJheUJ1ZmZlclZpZXc+IHJlc3VsdDsKKyAgICBpZiAobGVu
Z3RoID49IDApCisgICAgICAgIHJlc3VsdCA9IEM6OmNyZWF0ZShzdGF0aWNfY2FzdDx1bnNpZ25l
ZD4obGVuZ3RoKSk7CisgICAgaWYgKCFyZXN1bHQpCisgICAgICAgIHRocm93RXJyb3IoZXhlYywg
Y3JlYXRlUmFuZ2VFcnJvcihleGVjLCAiQXJyYXlCdWZmZXJWaWV3IHNpemUgaXMgbm90IGEgc21h
bGwgZW5vdWdoIHBvc2l0aXZlIGludGVnZXIuIikpOworICAgIHJldHVybiByZXN1bHQ7CiB9CiAK
IH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFdlYkNvcmUvYmluZGluZ3MvanMvSlNGbG9h
dDMyQXJyYXlDdXN0b20uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3MvanMvSlNG
bG9hdDMyQXJyYXlDdXN0b20uY3BwCShyZXZpc2lvbiA2MTMwMCkKKysrIFdlYkNvcmUvYmluZGlu
Z3MvanMvSlNGbG9hdDMyQXJyYXlDdXN0b20uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01NSwxMCAr
NTUsOSBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEpTRmxvYXQzMkFyCiB7CiAgICAg
SlNGbG9hdDMyQXJyYXlDb25zdHJ1Y3RvcioganNDb25zdHJ1Y3RvciA9IHN0YXRpY19jYXN0PEpT
RmxvYXQzMkFycmF5Q29uc3RydWN0b3IqPihleGVjLT5jYWxsZWUoKSk7CiAgICAgUmVmUHRyPEZs
b2F0MzJBcnJheT4gYXJyYXkgPSBzdGF0aWNfY2FzdDxGbG9hdDMyQXJyYXkqPihjb25zdHJ1Y3RB
cnJheUJ1ZmZlclZpZXc8RmxvYXQzMkFycmF5LCBmbG9hdD4oZXhlYykuZ2V0KCkpOwotICAgIGlm
ICghYXJyYXkuZ2V0KCkpIHsKLSAgICAgICAgc2V0RE9NRXhjZXB0aW9uKGV4ZWMsIElOREVYX1NJ
WkVfRVJSKTsKKyAgICBpZiAoIWFycmF5LmdldCgpKQorICAgICAgICAvLyBFeGNlcHRpb24gaGFz
IGFscmVhZHkgYmVlbiB0aHJvd24uCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNW
YWx1ZSgpKTsKLSAgICB9CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShhc09iamVjdCh0b0pT
KGV4ZWMsIGpzQ29uc3RydWN0b3ItPmdsb2JhbE9iamVjdCgpLCBhcnJheS5nZXQoKSkpKTsKIH0K
IApJbmRleDogV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0ludDhBcnJheUN1c3RvbS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0ludDhBcnJheUN1c3RvbS5jcHAJKHJldmlz
aW9uIDYxMzAwKQorKysgV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0ludDhBcnJheUN1c3RvbS5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTU2LDEwICs1Niw5IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgSlNJbnQ4QXJyYXkKIHsKICAgICBKU0ludDhBcnJheUNvbnN0cnVjdG9yKiBqc0NvbnN0
cnVjdG9yID0gc3RhdGljX2Nhc3Q8SlNJbnQ4QXJyYXlDb25zdHJ1Y3Rvcio+KGV4ZWMtPmNhbGxl
ZSgpKTsKICAgICBSZWZQdHI8SW50OEFycmF5PiBhcnJheSA9IHN0YXRpY19jYXN0PEludDhBcnJh
eSo+KGNvbnN0cnVjdEFycmF5QnVmZmVyVmlldzxJbnQ4QXJyYXksIHNpZ25lZCBjaGFyPihleGVj
KS5nZXQoKSk7Ci0gICAgaWYgKCFhcnJheS5nZXQoKSkgewotICAgICAgICBzZXRET01FeGNlcHRp
b24oZXhlYywgSU5ERVhfU0laRV9FUlIpOworICAgIGlmICghYXJyYXkuZ2V0KCkpCisgICAgICAg
IC8vIEV4Y2VwdGlvbiBoYXMgYWxyZWFkeSBiZWVuIHRocm93bi4KICAgICAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShKU1ZhbHVlKCkpOwotICAgIH0KICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKGFzT2JqZWN0KHRvSlMoZXhlYywganNDb25zdHJ1Y3Rvci0+Z2xvYmFsT2JqZWN0KCksIGFy
cmF5LmdldCgpKSkpOwogfQogCkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTSW50MTZBcnJh
eUN1c3RvbS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0ludDE2QXJy
YXlDdXN0b20uY3BwCShyZXZpc2lvbiA2MTMwMCkKKysrIFdlYkNvcmUvYmluZGluZ3MvanMvSlNJ
bnQxNkFycmF5Q3VzdG9tLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTUsMTAgKzU1LDkgQEAgRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBKU0ludDE2QXJyYQogewogICAgIEpTSW50MTZBcnJh
eUNvbnN0cnVjdG9yKiBqc0NvbnN0cnVjdG9yID0gc3RhdGljX2Nhc3Q8SlNJbnQxNkFycmF5Q29u
c3RydWN0b3IqPihleGVjLT5jYWxsZWUoKSk7CiAgICAgUmVmUHRyPEludDE2QXJyYXk+IGFycmF5
ID0gc3RhdGljX2Nhc3Q8SW50MTZBcnJheSo+KGNvbnN0cnVjdEFycmF5QnVmZmVyVmlldzxJbnQx
NkFycmF5LCBzaG9ydD4oZXhlYykuZ2V0KCkpOwotICAgIGlmICghYXJyYXkuZ2V0KCkpIHsKLSAg
ICAgICAgc2V0RE9NRXhjZXB0aW9uKGV4ZWMsIElOREVYX1NJWkVfRVJSKTsKKyAgICBpZiAoIWFy
cmF5LmdldCgpKQorICAgICAgICAvLyBFeGNlcHRpb24gaGFzIGFscmVhZHkgYmVlbiB0aHJvd24u
CiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNWYWx1ZSgpKTsKLSAgICB9CiAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShhc09iamVjdCh0b0pTKGV4ZWMsIGpzQ29uc3RydWN0b3It
Pmdsb2JhbE9iamVjdCgpLCBhcnJheS5nZXQoKSkpKTsKIH0KIApJbmRleDogV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU0ludDMyQXJyYXlDdXN0b20uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmlu
ZGluZ3MvanMvSlNJbnQzMkFycmF5Q3VzdG9tLmNwcAkocmV2aXNpb24gNjEzMDApCisrKyBXZWJD
b3JlL2JpbmRpbmdzL2pzL0pTSW50MzJBcnJheUN1c3RvbS5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTU1LDEwICs1NSw5IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSlNJbnQzMkFycmEK
IHsKICAgICBKU0ludDMyQXJyYXlDb25zdHJ1Y3RvcioganNDb25zdHJ1Y3RvciA9IHN0YXRpY19j
YXN0PEpTSW50MzJBcnJheUNvbnN0cnVjdG9yKj4oZXhlYy0+Y2FsbGVlKCkpOwogICAgIFJlZlB0
cjxJbnQzMkFycmF5PiBhcnJheSA9IHN0YXRpY19jYXN0PEludDMyQXJyYXkqPihjb25zdHJ1Y3RB
cnJheUJ1ZmZlclZpZXc8SW50MzJBcnJheSwgaW50PihleGVjKS5nZXQoKSk7Ci0gICAgaWYgKCFh
cnJheS5nZXQoKSkgewotICAgICAgICBzZXRET01FeGNlcHRpb24oZXhlYywgSU5ERVhfU0laRV9F
UlIpOworICAgIGlmICghYXJyYXkuZ2V0KCkpCisgICAgICAgIC8vIEV4Y2VwdGlvbiBoYXMgYWxy
ZWFkeSBiZWVuIHRocm93bi4KICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU1ZhbHVl
KCkpOwotICAgIH0KICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGFzT2JqZWN0KHRvSlMoZXhl
YywganNDb25zdHJ1Y3Rvci0+Z2xvYmFsT2JqZWN0KCksIGFycmF5LmdldCgpKSkpOwogfQogCklu
ZGV4OiBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTVWludDhBcnJheUN1c3RvbS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1VpbnQ4QXJyYXlDdXN0b20uY3BwCShyZXZpc2lv
biA2MTMwMCkKKysrIFdlYkNvcmUvYmluZGluZ3MvanMvSlNVaW50OEFycmF5Q3VzdG9tLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNTUsMTAgKzU1LDkgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBKU1VpbnQ4QXJyYQogewogICAgIEpTVWludDhBcnJheUNvbnN0cnVjdG9yKiBqc0NvbnN0
cnVjdG9yID0gc3RhdGljX2Nhc3Q8SlNVaW50OEFycmF5Q29uc3RydWN0b3IqPihleGVjLT5jYWxs
ZWUoKSk7CiAgICAgUmVmUHRyPFVpbnQ4QXJyYXk+IGFycmF5ID0gc3RhdGljX2Nhc3Q8VWludDhB
cnJheSo+KGNvbnN0cnVjdEFycmF5QnVmZmVyVmlldzxVaW50OEFycmF5LCB1bnNpZ25lZCBjaGFy
PihleGVjKS5nZXQoKSk7Ci0gICAgaWYgKCFhcnJheS5nZXQoKSkgewotICAgICAgICBzZXRET01F
eGNlcHRpb24oZXhlYywgSU5ERVhfU0laRV9FUlIpOworICAgIGlmICghYXJyYXkuZ2V0KCkpCisg
ICAgICAgIC8vIEV4Y2VwdGlvbiBoYXMgYWxyZWFkeSBiZWVuIHRocm93bi4KICAgICAgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShKU1ZhbHVlKCkpOwotICAgIH0KICAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKGFzT2JqZWN0KHRvSlMoZXhlYywganNDb25zdHJ1Y3Rvci0+Z2xvYmFsT2JqZWN0
KCksIGFycmF5LmdldCgpKSkpOwogfQogCkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTVWlu
dDE2QXJyYXlDdXN0b20uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3MvanMvSlNV
aW50MTZBcnJheUN1c3RvbS5jcHAJKHJldmlzaW9uIDYxMzAwKQorKysgV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU1VpbnQxNkFycmF5Q3VzdG9tLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTUsMTAgKzU1
LDkgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBKU1VpbnQxNkFycgogewogICAgIEpT
VWludDE2QXJyYXlDb25zdHJ1Y3RvcioganNDb25zdHJ1Y3RvciA9IHN0YXRpY19jYXN0PEpTVWlu
dDE2QXJyYXlDb25zdHJ1Y3Rvcio+KGV4ZWMtPmNhbGxlZSgpKTsKICAgICBSZWZQdHI8VWludDE2
QXJyYXk+IGFycmF5ID0gc3RhdGljX2Nhc3Q8VWludDE2QXJyYXkqPihjb25zdHJ1Y3RBcnJheUJ1
ZmZlclZpZXc8VWludDE2QXJyYXksIHVuc2lnbmVkIHNob3J0PihleGVjKS5nZXQoKSk7Ci0gICAg
aWYgKCFhcnJheS5nZXQoKSkgewotICAgICAgICBzZXRET01FeGNlcHRpb24oZXhlYywgSU5ERVhf
U0laRV9FUlIpOworICAgIGlmICghYXJyYXkuZ2V0KCkpCisgICAgICAgIC8vIEV4Y2VwdGlvbiBo
YXMgYWxyZWFkeSBiZWVuIHRocm93bi4KICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShK
U1ZhbHVlKCkpOwotICAgIH0KICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGFzT2JqZWN0KHRv
SlMoZXhlYywganNDb25zdHJ1Y3Rvci0+Z2xvYmFsT2JqZWN0KCksIGFycmF5LmdldCgpKSkpOwog
fQogCkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTVWludDMyQXJyYXlDdXN0b20uY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3MvanMvSlNVaW50MzJBcnJheUN1c3RvbS5jcHAJ
KHJldmlzaW9uIDYxMzAwKQorKysgV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1VpbnQzMkFycmF5Q3Vz
dG9tLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTUsMTAgKzU1LDkgQEAgRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBKU1VpbnQzMkFycgogewogICAgIEpTVWludDMyQXJyYXlDb25zdHJ1Y3Rv
cioganNDb25zdHJ1Y3RvciA9IHN0YXRpY19jYXN0PEpTVWludDMyQXJyYXlDb25zdHJ1Y3Rvcio+
KGV4ZWMtPmNhbGxlZSgpKTsKICAgICBSZWZQdHI8VWludDMyQXJyYXk+IGFycmF5ID0gc3RhdGlj
X2Nhc3Q8VWludDMyQXJyYXkqPihjb25zdHJ1Y3RBcnJheUJ1ZmZlclZpZXc8VWludDMyQXJyYXks
IHVuc2lnbmVkIGludD4oZXhlYykuZ2V0KCkpOwotICAgIGlmICghYXJyYXkuZ2V0KCkpIHsKLSAg
ICAgICAgc2V0RE9NRXhjZXB0aW9uKGV4ZWMsIElOREVYX1NJWkVfRVJSKTsKKyAgICBpZiAoIWFy
cmF5LmdldCgpKQorICAgICAgICAvLyBFeGNlcHRpb24gaGFzIGFscmVhZHkgYmVlbiB0aHJvd24u
CiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNWYWx1ZSgpKTsKLSAgICB9CiAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShhc09iamVjdCh0b0pTKGV4ZWMsIGpzQ29uc3RydWN0b3It
Pmdsb2JhbE9iamVjdCgpLCBhcnJheS5nZXQoKSkpKTsKIH0KIApJbmRleDogV2ViQ29yZS9iaW5k
aW5ncy92OC9jdXN0b20vVjhBcnJheUJ1ZmZlckN1c3RvbS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
Q29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhBcnJheUJ1ZmZlckN1c3RvbS5jcHAJKHJldmlzaW9u
IDYxMzAwKQorKysgV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhBcnJheUJ1ZmZlckN1c3Rv
bS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ1LDcgKzQ1LDcgQEAgdjg6OkhhbmRsZTx2ODo6VmFs
dWU+IFY4QXJyYXlCdWZmZXI6OmNvbgogICAgIElOQ19TVEFUUygiRE9NLkFycmF5QnVmZmVyLkNv
bnN0cnVjdG9yIik7CiAKICAgICBpZiAoIWFyZ3MuSXNDb25zdHJ1Y3RDYWxsKCkpCi0gICAgICAg
IHJldHVybiB0aHJvd0Vycm9yKCJET00gb2JqZWN0IGNvbnN0cnVjdG9yIGNhbm5vdCBiZSBjYWxs
ZWQgYXMgYSBmdW5jdGlvbi4iKTsKKyAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoIkRPTSBvYmpl
Y3QgY29uc3RydWN0b3IgY2Fubm90IGJlIGNhbGxlZCBhcyBhIGZ1bmN0aW9uLiIsIFY4UHJveHk6
OlN5bnRheEVycm9yKTsKIAogICAgIC8vIElmIHdlIHJldHVybiBhIHByZXZpb3VzbHkgY29uc3Ry
dWN0ZWQgQXJyYXlCdWZmZXIsCiAgICAgLy8gZS5nLiBmcm9tIHRoZSBjYWxsIHRvIEFycmF5QnVm
ZmVyVmlldy5idWZmZXIsIHRoaXMgY29kZSBpcyBjYWxsZWQKQEAgLTYxLDIyICs2MSwxNSBAQCB2
ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhBcnJheUJ1ZmZlcjo6Y29uCiAgICAgLy8gQXJyYXlCdWZm
ZXIobikgd2hlcmUgbiBpcyBhbiBpbnRlZ2VyOgogICAgIC8vICAgLS0gY3JlYXRlIGFuIGVtcHR5
IGJ1ZmZlciBvZiBuIGJ5dGVzCiAKLSAgICBpbnQgYXJnTGVuID0gYXJncy5MZW5ndGgoKTsKLSAg
ICBpZiAoYXJnTGVuID4gMSkKLSAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoIldyb25nIG51bWJl
ciBvZiBhcmd1bWVudHMgc3BlY2lmaWVkIHRvIGNvbnN0cnVjdG9yIChyZXF1aXJlcyAxKSIpOwot
Ci0gICAgaW50IGxlbiA9IDA7Ci0gICAgaWYgKGFyZ0xlbiA+IDApIHsKLSAgICAgICAgaWYgKCFh
cmdzWzBdLT5Jc0ludDMyKCkpCi0gICAgICAgICAgICByZXR1cm4gdGhyb3dFcnJvcigiQXJndW1l
bnQgdG8gQXJyYXlCdWZmZXIgY29uc3RydWN0b3Igd2FzIG5vdCBhbiBpbnRlZ2VyIik7Ci0gICAg
ICAgIGxlbiA9IHRvSW50MzIoYXJnc1swXSk7Ci0gICAgfQotCi0gICAgUmVmUHRyPEFycmF5QnVm
ZmVyPiBidWZmZXIgPSBBcnJheUJ1ZmZlcjo6Y3JlYXRlKGxlbiwgMSk7Ci0gICAgaWYgKCFidWZm
ZXIuZ2V0KCkpIHsKLSAgICAgICAgVjhQcm94eTo6c2V0RE9NRXhjZXB0aW9uKElOREVYX1NJWkVf
RVJSKTsKLSAgICAgICAgcmV0dXJuIHY4OjpVbmRlZmluZWQoKTsKLSAgICB9CisgICAgaW50IGFy
Z0xlbmd0aCA9IGFyZ3MuTGVuZ3RoKCk7CisgICAgaW50IGxlbmd0aCA9IDA7CisgICAgaWYgKGFy
Z0xlbmd0aCA+IDApCisgICAgICAgIGxlbmd0aCA9IHRvSW50MzIoYXJnc1swXSk7IC8vIE5hTi8r
aW5mLy1pbmYgcmV0dXJucyAwLCB0aGlzIGlzIGludGVuZGVkIGJ5IFdlYklETAorICAgIFJlZlB0
cjxBcnJheUJ1ZmZlcj4gYnVmZmVyOworICAgIGlmIChsZW5ndGggPj0gMCkKKyAgICAgICAgYnVm
ZmVyID0gQXJyYXlCdWZmZXI6OmNyZWF0ZShzdGF0aWNfY2FzdDx1bnNpZ25lZD4obGVuZ3RoKSwg
MSk7CisgICAgaWYgKCFidWZmZXIuZ2V0KCkpCisgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKCJB
cnJheUJ1ZmZlciBzaXplIGlzIG5vdCBhIHNtYWxsIGVub3VnaCBwb3NpdGl2ZSBpbnRlZ2VyLiIs
IFY4UHJveHk6OlJhbmdlRXJyb3IpOwogICAgIC8vIFRyYW5zZm9ybSB0aGUgaG9sZGVyIGludG8g
YSB3cmFwcGVyIG9iamVjdCBmb3IgdGhlIGFycmF5LgogICAgIFY4RE9NV3JhcHBlcjo6c2V0RE9N
V3JhcHBlcihhcmdzLkhvbGRlcigpLCAmaW5mbywgYnVmZmVyLmdldCgpKTsKICAgICByZXR1cm4g
dG9WOChidWZmZXIucmVsZWFzZSgpLCBhcmdzLkhvbGRlcigpKTsKSW5kZXg6IFdlYkNvcmUvYmlu
ZGluZ3MvdjgvY3VzdG9tL1Y4QXJyYXlCdWZmZXJWaWV3Q3VzdG9tLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhBcnJheUJ1ZmZlclZpZXdDdXN0b20uaAkocmV2
aXNpb24gNjEzMDApCisrKyBXZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEFycmF5QnVmZmVy
Vmlld0N1c3RvbS5oCSh3b3JraW5nIGNvcHkpCkBAIC02OCw2ICs2OCwxMiBAQCB2ODo6SGFuZGxl
PHY4OjpWYWx1ZT4gY29uc3RydWN0V2ViR0xBcnJhCiAgICAgLy8gICAgICAiYnVmIiwgc3RhcnRp
bmcgYXQgdGhlIHNwZWNpZmllZCBvZmZzZXQsIGZvciB0aGUgZ2l2ZW4KICAgICAvLyAgICAgIGxl
bmd0aAogCisgICAgaWYgKGFyZ3NbMF0tPklzTnVsbCgpKSB7CisgICAgICAgIC8vIEludmFsaWQg
Zmlyc3QgYXJndW1lbnQKKyAgICAgICAgLy8gRklYTUU6IHVzZSBmb3J0aGNvbWluZyBWOFByb3h5
Ojp0aHJvd1R5cGVFcnJvcigpLgorICAgICAgICByZXR1cm4gVjhQcm94eTo6dGhyb3dFcnJvcihW
OFByb3h5OjpUeXBlRXJyb3IsICJUeXBlIGVycm9yIik7CisgICAgfQorCiAgICAgLy8gU2VlIHdo
ZXRoZXIgdGhlIGZpcnN0IGFyZ3VtZW50IGlzIGEgQXJyYXlCdWZmZXIuCiAgICAgaWYgKFY4QXJy
YXlCdWZmZXI6Okhhc0luc3RhbmNlKGFyZ3NbMF0pKSB7CiAgICAgICAgIEFycmF5QnVmZmVyKiBi
dWYgPSBWOEFycmF5QnVmZmVyOjp0b05hdGl2ZShhcmdzWzBdLT5Ub09iamVjdCgpKTsKQEAgLTg4
LDggKzk0LDEwIEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBjb25zdHJ1Y3RXZWJHTEFycmEKICAg
ICAgICAgfQogCiAgICAgICAgIFJlZlB0cjxBcnJheUNsYXNzPiBhcnJheSA9IEFycmF5Q2xhc3M6
OmNyZWF0ZShidWYsIG9mZnNldCwgbGVuZ3RoKTsKLSAgICAgICAgaWYgKCFhcnJheSkKLSAgICAg
ICAgICAgIHJldHVybiB0aHJvd0Vycm9yKCJPdXQtb2YtcmFuZ2Ugb2Zmc2V0IGFuZC9vciBsZW5n
dGgiKTsKKyAgICAgICAgaWYgKCFhcnJheSkgeworICAgICAgICAgICAgVjhQcm94eTo6c2V0RE9N
RXhjZXB0aW9uKElOREVYX1NJWkVfRVJSKTsKKyAgICAgICAgICAgIHJldHVybiBub3RIYW5kbGVk
QnlJbnRlcmNlcHRvcigpOworICAgICAgICB9CiAgICAgICAgIC8vIFRyYW5zZm9ybSB0aGUgaG9s
ZGVyIGludG8gYSB3cmFwcGVyIG9iamVjdCBmb3IgdGhlIGFycmF5LgogICAgICAgICBWOERPTVdy
YXBwZXI6OnNldERPTVdyYXBwZXIoYXJncy5Ib2xkZXIoKSwgdHlwZSwgYXJyYXkuZ2V0KCkpOwog
ICAgICAgICBhcmdzLkhvbGRlcigpLT5TZXRJbmRleGVkUHJvcGVydGllc1RvRXh0ZXJuYWxBcnJh
eURhdGEoYXJyYXkuZ2V0KCktPmJhc2VBZGRyZXNzKCksIGFycmF5VHlwZSwgYXJyYXkuZ2V0KCkt
Pmxlbmd0aCgpKTsKQEAgLTk4LDIyICsxMDYsMjkgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGNv
bnN0cnVjdFdlYkdMQXJyYQogCiAgICAgdWludDMyX3QgbGVuID0gMDsKICAgICB2ODo6SGFuZGxl
PHY4OjpPYmplY3Q+IHNyY0FycmF5OworICAgIGJvb2wgZG9JbnN0YW50aWF0aW9uID0gZmFsc2U7
CiAKLSAgICBpZiAoYXJnc1swXS0+SXNJbnQzMigpKSB7Ci0gICAgICAgIGxlbiA9IHRvVUludDMy
KGFyZ3NbMF0pOwotICAgIH0gZWxzZSBpZiAoYXJnc1swXS0+SXNPYmplY3QoKSkgeworICAgIGlm
IChhcmdzWzBdLT5Jc09iamVjdCgpKSB7CiAgICAgICAgIHNyY0FycmF5ID0gYXJnc1swXS0+VG9P
YmplY3QoKTsKICAgICAgICAgaWYgKHNyY0FycmF5LklzRW1wdHkoKSkKICAgICAgICAgICAgIHJl
dHVybiB0aHJvd0Vycm9yKCJDb3VsZCBub3QgY29udmVydCBhcmd1bWVudCAwIHRvIGFuIGFycmF5
Iik7CiAgICAgICAgIGxlbiA9IHRvVUludDMyKHNyY0FycmF5LT5HZXQodjg6OlN0cmluZzo6TmV3
KCJsZW5ndGgiKSkpOwotICAgIH0gZWxzZQotICAgICAgICByZXR1cm4gdGhyb3dFcnJvcigiQ291
bGQgbm90IGNvbnZlcnQgYXJndW1lbnQgMCB0byBlaXRoZXIgYSBudW1iZXIgb3IgYW4gYXJyYXki
KTsKLQotICAgIFJlZlB0cjxBcnJheUNsYXNzPiBhcnJheSA9IEFycmF5Q2xhc3M6OmNyZWF0ZShs
ZW4pOwotICAgIGlmICghYXJyYXkuZ2V0KCkpIHsKLSAgICAgICAgVjhQcm94eTo6c2V0RE9NRXhj
ZXB0aW9uKElOREVYX1NJWkVfRVJSKTsKLSAgICAgICAgcmV0dXJuIHY4OjpVbmRlZmluZWQoKTsK
KyAgICAgICAgZG9JbnN0YW50aWF0aW9uID0gdHJ1ZTsKKyAgICB9IGVsc2UgeworICAgICAgICBi
b29sIG9rID0gZmFsc2U7CisgICAgICAgIGludDMyX3QgdGVtcExlbmd0aCA9IHRvSW50MzIoYXJn
c1swXSwgb2spOyAvLyBOYU4vK2luZi8taW5mIHJldHVybnMgMCwgdGhpcyBpcyBpbnRlbmRlZCBi
eSBXZWJJREwKKyAgICAgICAgaWYgKG9rICYmIHRlbXBMZW5ndGggPj0gMCkgeworICAgICAgICAg
ICAgbGVuID0gc3RhdGljX2Nhc3Q8dWludDMyX3Q+KHRlbXBMZW5ndGgpOworICAgICAgICAgICAg
ZG9JbnN0YW50aWF0aW9uID0gdHJ1ZTsKKyAgICAgICAgfQogICAgIH0KKworICAgIFJlZlB0cjxB
cnJheUNsYXNzPiBhcnJheTsKKyAgICBpZiAoZG9JbnN0YW50aWF0aW9uKQorICAgICAgICBhcnJh
eSA9IEFycmF5Q2xhc3M6OmNyZWF0ZShsZW4pOworICAgIGlmICghYXJyYXkuZ2V0KCkpCisgICAg
ICAgIHJldHVybiB0aHJvd0Vycm9yKCJBcnJheUJ1ZmZlclZpZXcgc2l6ZSBpcyBub3QgYSBzbWFs
bCBlbm91Z2ggcG9zaXRpdmUgaW50ZWdlci4iLCBWOFByb3h5OjpSYW5nZUVycm9yKTsKKwogICAg
IGlmICghc3JjQXJyYXkuSXNFbXB0eSgpKSB7CiAgICAgICAgIC8vIE5lZWQgdG8gY29weSB0aGUg
aW5jb21pbmcgYXJyYXkgaW50byB0aGUgbmV3bHkgY3JlYXRlZCBBcnJheUJ1ZmZlclZpZXcuCiAg
ICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBsZW47IGkrKykgewpJbmRleDogV2ViQ29y
ZS9odG1sL2NhbnZhcy9UeXBlZEFycmF5QmFzZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvaHRt
bC9jYW52YXMvVHlwZWRBcnJheUJhc2UuaAkocmV2aXNpb24gNjEzMDApCisrKyBXZWJDb3JlL2h0
bWwvY2FudmFzL1R5cGVkQXJyYXlCYXNlLmgJKHdvcmtpbmcgY29weSkKQEAgLTYxLDYgKzYxLDgg
QEAgY2xhc3MgVHlwZWRBcnJheUJhc2UgOiBwdWJsaWMgQXJyYXlCdWZmZQogICAgIHN0YXRpYyBQ
YXNzUmVmUHRyPFN1YmNsYXNzPiBjcmVhdGUodW5zaWduZWQgbGVuZ3RoKQogICAgIHsKICAgICAg
ICAgUmVmUHRyPEFycmF5QnVmZmVyPiBidWZmZXIgPSBBcnJheUJ1ZmZlcjo6Y3JlYXRlKGxlbmd0
aCwgc2l6ZW9mKFQpKTsKKyAgICAgICAgaWYgKCFidWZmZXIuZ2V0KCkpCisgICAgICAgICAgICBy
ZXR1cm4gMDsKICAgICAgICAgcmV0dXJuIGNyZWF0ZTxTdWJjbGFzcz4oYnVmZmVyLCAwLCBsZW5n
dGgpOwogICAgIH0KIApAQCAtNjgsOCArNzAsOSBAQCBjbGFzcyBUeXBlZEFycmF5QmFzZSA6IHB1
YmxpYyBBcnJheUJ1ZmZlCiAgICAgc3RhdGljIFBhc3NSZWZQdHI8U3ViY2xhc3M+IGNyZWF0ZShU
KiBhcnJheSwgdW5zaWduZWQgbGVuZ3RoKQogICAgIHsKICAgICAgICAgUmVmUHRyPFN1YmNsYXNz
PiBhID0gY3JlYXRlPFN1YmNsYXNzPihsZW5ndGgpOwotICAgICAgICBmb3IgKHVuc2lnbmVkIGkg
PSAwOyBpIDwgbGVuZ3RoOyArK2kpCi0gICAgICAgICAgICBhLT5zZXQoaSwgYXJyYXlbaV0pOwor
ICAgICAgICBpZiAoYSkKKyAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBsZW5n
dGg7ICsraSkKKyAgICAgICAgICAgICAgICBhLT5zZXQoaSwgYXJyYXlbaV0pOwogICAgICAgICBy
ZXR1cm4gYTsKICAgICB9CiAKSW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDYxMzAwKQorKysgTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTAtMDYtMTYg
IEtlbm5ldGggUnVzc2VsbCAgPGtickBnb29nbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5lZWQgYSBzaG9ydCBkZXNjcmlwdGlvbiBhbmQg
YnVnIFVSTCAoT09QUyEpCisKKyAgICAgICAgKiBmYXN0L2NhbnZhcy93ZWJnbC9hcnJheS11bml0
LXRlc3RzLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgIC0gVXBkYXRlZCB0ZXN0IGV4cGVjdGF0aW9u
cy4KKyAgICAgICAgKiBmYXN0L2NhbnZhcy93ZWJnbC9hcnJheS11bml0LXRlc3RzLmh0bWw6Cisg
ICAgICAgICAtIEFkZGVkIHRlc3RzIGZvciBvdmVybG9hZGVkIEFycmF5QnVmZmVyVmlldyBjb25z
dHJ1Y3RvcnMgdGFraW5nIG51bGwsCisgICAgICAgICAgIGFuZCBpbXByb3Blcmx5IGFsaWduZWQg
b2Zmc2V0cy4gSW1wcm92ZWQgcHJlY2lzaW9uIG9mIHRlc3RzIGNhdXNpbmcKKyAgICAgICAgICAg
SU5ERVhfU0laRV9FUlIgdG8gYmUgdGhyb3duLgorCiAyMDEwLTA2LTE2ICBBZGFtIEJhcnRoICA8
YWJhcnRoQHdlYmtpdC5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdlZC4KSW5kZXg6IExheW91dFRl
c3RzL2Zhc3QvY2FudmFzL3dlYmdsL2FycmF5LXVuaXQtdGVzdHMtZXhwZWN0ZWQudHh0Cj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmdsL2FycmF5LXVuaXQtdGVzdHMt
ZXhwZWN0ZWQudHh0CShyZXZpc2lvbiA2MTMwMCkKKysrIExheW91dFRlc3RzL2Zhc3QvY2FudmFz
L3dlYmdsL2FycmF5LXVuaXQtdGVzdHMtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0x
OCw4ICsxOCwxMyBAQCBQQVNTIHRlc3QgRmxvYXQzMkFycmF5IFNsaWNlCiBQQVNTIG5lZ2F0aXZl
VGVzdCBGbG9hdDMyQXJyYXkgU2xpY2UKIFBBU1MgdGVzdCBGbG9hdDMyQXJyYXkgQm91bmRhcnlD
b25kaXRpb25zKC01MDAuNSwgLTUwMC41LCA1MDAuNSwgNTAwLjUpCiBQQVNTIENvbnN0cnVjdGlv
biBvZiBGbG9hdDMyQXJyYXkgd2l0aCBudWxsIGJ1ZmZlciB0aHJldyBleGNlcHRpb24KLVBBU1Mg
Q29uc3RydWN0aW9uIG9mIEZsb2F0MzJBcnJheSB3aXRoIG91dC1vZi1yYW5nZSB2YWx1ZXMgdGhy
ZXcgZXhjZXB0aW9uCi1QQVNTIENvbnN0cnVjdGlvbiBvZiBGbG9hdDMyQXJyYXkgd2l0aCBuZWdh
dGl2ZSBvdXQtb2YtcmFuZ2UgdmFsdWVzIHRocmV3IGV4Y2VwdGlvbgorUEFTUyBDb25zdHJ1Y3Rp
b24gb2YgRmxvYXQzMkFycmF5IHdpdGggKG51bGwgYnVmZmVyLCAwKSB0aHJldyBleGNlcHRpb24K
K1BBU1MgQ29uc3RydWN0aW9uIG9mIEZsb2F0MzJBcnJheSB3aXRoIChudWxsIGJ1ZmZlciwgMCwg
MCkgdGhyZXcgZXhjZXB0aW9uCitQQVNTIENvbnN0cnVjdGlvbiBvZiBGbG9hdDMyQXJyYXkgd2l0
aCBvdXQtb2YtcmFuZ2UgdmFsdWVzIHRocmV3IElOREVYX1NJWkVfRVJSIGV4Y2VwdGlvbgorUEFT
UyBDb25zdHJ1Y3Rpb24gb2YgQXJyYXlCdWZmZXIgd2l0aCBuZWdhdGl2ZSBzaXplIHRocmV3IGV4
Y2VwdGlvbgorUEFTUyBDb25zdHJ1Y3Rpb24gb2YgRmxvYXQzMkFycmF5IHdpdGggbmVnYXRpdmUg
c2l6ZSB0aHJldyBleGNlcHRpb24KK1BBU1MgQ29uc3RydWN0aW9uIG9mIEZsb2F0MzJBcnJheSB3
aXRoIG5lZ2F0aXZlIG91dC1vZi1yYW5nZSB2YWx1ZXMgdGhyZXcgSU5ERVhfU0laRV9FUlIgZXhj
ZXB0aW9uCitQQVNTIENvbnN0cnVjdGlvbiBvZiBGbG9hdDMyQXJyYXkgd2l0aCB1bmFsaWduZWQg
b2Zmc2V0IHRocmV3IElOREVYX1NJWkVfRVJSIGV4Y2VwdGlvbgogUEFTUyBDb25zdHJ1Y3Rpb24g
b2YgaHVnZSBGbG9hdDMyQXJyYXkgdGhyZXcgZXhjZXB0aW9uCiBUZXN0aW5nIHNsaWNpbmcgb2Yg
RmxvYXQzMkFycmF5CiBQQVNTIGFycmF5Lmxlbmd0aCBpcyAzMiAvIHR5cGVTaXplCkBAIC01Myw4
ICs1OCwxMiBAQCBQQVNTIHRlc3QgSW50OEFycmF5IFNsaWNlCiBQQVNTIG5lZ2F0aXZlVGVzdCBJ
bnQ4QXJyYXkgU2xpY2UKIFBBU1MgdGVzdCBJbnQ4QXJyYXkgQm91bmRhcnlDb25kaXRpb25zKC0x
MjgsIC0xMjgsIDEyNywgMTI3KQogUEFTUyBDb25zdHJ1Y3Rpb24gb2YgSW50OEFycmF5IHdpdGgg
bnVsbCBidWZmZXIgdGhyZXcgZXhjZXB0aW9uCi1QQVNTIENvbnN0cnVjdGlvbiBvZiBJbnQ4QXJy
YXkgd2l0aCBvdXQtb2YtcmFuZ2UgdmFsdWVzIHRocmV3IGV4Y2VwdGlvbgotUEFTUyBDb25zdHJ1
Y3Rpb24gb2YgSW50OEFycmF5IHdpdGggbmVnYXRpdmUgb3V0LW9mLXJhbmdlIHZhbHVlcyB0aHJl
dyBleGNlcHRpb24KK1BBU1MgQ29uc3RydWN0aW9uIG9mIEludDhBcnJheSB3aXRoIChudWxsIGJ1
ZmZlciwgMCkgdGhyZXcgZXhjZXB0aW9uCitQQVNTIENvbnN0cnVjdGlvbiBvZiBJbnQ4QXJyYXkg
d2l0aCAobnVsbCBidWZmZXIsIDAsIDApIHRocmV3IGV4Y2VwdGlvbgorUEFTUyBDb25zdHJ1Y3Rp
b24gb2YgSW50OEFycmF5IHdpdGggb3V0LW9mLXJhbmdlIHZhbHVlcyB0aHJldyBJTkRFWF9TSVpF
X0VSUiBleGNlcHRpb24KK1BBU1MgQ29uc3RydWN0aW9uIG9mIEFycmF5QnVmZmVyIHdpdGggbmVn
YXRpdmUgc2l6ZSB0aHJldyBleGNlcHRpb24KK1BBU1MgQ29uc3RydWN0aW9uIG9mIEludDhBcnJh
eSB3aXRoIG5lZ2F0aXZlIHNpemUgdGhyZXcgZXhjZXB0aW9uCitQQVNTIENvbnN0cnVjdGlvbiBv
ZiBJbnQ4QXJyYXkgd2l0aCBuZWdhdGl2ZSBvdXQtb2YtcmFuZ2UgdmFsdWVzIHRocmV3IElOREVY
X1NJWkVfRVJSIGV4Y2VwdGlvbgogVGVzdGluZyBzbGljaW5nIG9mIEludDhBcnJheQogUEFTUyBh
cnJheS5sZW5ndGggaXMgMzIgLyB0eXBlU2l6ZQogUEFTUyBhcnJheS5zbGljZSg0LCAweDNGRkZG
RkZGKS5sZW5ndGggaXMgKDMyIC8gdHlwZVNpemUpIC0gNApAQCAtODYsOCArOTUsMTMgQEAgUEFT
UyB0ZXN0IEludDE2QXJyYXkgU2xpY2UKIFBBU1MgbmVnYXRpdmVUZXN0IEludDE2QXJyYXkgU2xp
Y2UKIFBBU1MgdGVzdCBJbnQxNkFycmF5IEJvdW5kYXJ5Q29uZGl0aW9ucygtMzI3NjgsIC0zMjc2
OCwgMzI3NjcsIDMyNzY3KQogUEFTUyBDb25zdHJ1Y3Rpb24gb2YgSW50MTZBcnJheSB3aXRoIG51
bGwgYnVmZmVyIHRocmV3IGV4Y2VwdGlvbgotUEFTUyBDb25zdHJ1Y3Rpb24gb2YgSW50MTZBcnJh
eSB3aXRoIG91dC1vZi1yYW5nZSB2YWx1ZXMgdGhyZXcgZXhjZXB0aW9uCi1QQVNTIENvbnN0cnVj
dGlvbiBvZiBJbnQxNkFycmF5IHdpdGggbmVnYXRpdmUgb3V0LW9mLXJhbmdlIHZhbHVlcyB0aHJl
dyBleGNlcHRpb24KK1BBU1MgQ29uc3RydWN0aW9uIG9mIEludDE2QXJyYXkgd2l0aCAobnVsbCBi
dWZmZXIsIDApIHRocmV3IGV4Y2VwdGlvbgorUEFTUyBDb25zdHJ1Y3Rpb24gb2YgSW50MTZBcnJh
eSB3aXRoIChudWxsIGJ1ZmZlciwgMCwgMCkgdGhyZXcgZXhjZXB0aW9uCitQQVNTIENvbnN0cnVj
dGlvbiBvZiBJbnQxNkFycmF5IHdpdGggb3V0LW9mLXJhbmdlIHZhbHVlcyB0aHJldyBJTkRFWF9T
SVpFX0VSUiBleGNlcHRpb24KK1BBU1MgQ29uc3RydWN0aW9uIG9mIEFycmF5QnVmZmVyIHdpdGgg
bmVnYXRpdmUgc2l6ZSB0aHJldyBleGNlcHRpb24KK1BBU1MgQ29uc3RydWN0aW9uIG9mIEludDE2
QXJyYXkgd2l0aCBuZWdhdGl2ZSBzaXplIHRocmV3IGV4Y2VwdGlvbgorUEFTUyBDb25zdHJ1Y3Rp
b24gb2YgSW50MTZBcnJheSB3aXRoIG5lZ2F0aXZlIG91dC1vZi1yYW5nZSB2YWx1ZXMgdGhyZXcg
SU5ERVhfU0laRV9FUlIgZXhjZXB0aW9uCitQQVNTIENvbnN0cnVjdGlvbiBvZiBJbnQxNkFycmF5
IHdpdGggdW5hbGlnbmVkIG9mZnNldCB0aHJldyBJTkRFWF9TSVpFX0VSUiBleGNlcHRpb24KIFBB
U1MgQ29uc3RydWN0aW9uIG9mIGh1Z2UgSW50MTZBcnJheSB0aHJldyBleGNlcHRpb24KIFRlc3Rp
bmcgc2xpY2luZyBvZiBJbnQxNkFycmF5CiBQQVNTIGFycmF5Lmxlbmd0aCBpcyAzMiAvIHR5cGVT
aXplCkBAIC0xMjEsOCArMTM1LDEzIEBAIFBBU1MgdGVzdCBJbnQzMkFycmF5IFNsaWNlCiBQQVNT
IG5lZ2F0aXZlVGVzdCBJbnQzMkFycmF5IFNsaWNlCiBQQVNTIHRlc3QgSW50MzJBcnJheSBCb3Vu
ZGFyeUNvbmRpdGlvbnMoLTIxNDc0ODM2NDgsIC0yMTQ3NDgzNjQ4LCAyMTQ3NDgzNjQ3LCAyMTQ3
NDgzNjQ3KQogUEFTUyBDb25zdHJ1Y3Rpb24gb2YgSW50MzJBcnJheSB3aXRoIG51bGwgYnVmZmVy
IHRocmV3IGV4Y2VwdGlvbgotUEFTUyBDb25zdHJ1Y3Rpb24gb2YgSW50MzJBcnJheSB3aXRoIG91
dC1vZi1yYW5nZSB2YWx1ZXMgdGhyZXcgZXhjZXB0aW9uCi1QQVNTIENvbnN0cnVjdGlvbiBvZiBJ
bnQzMkFycmF5IHdpdGggbmVnYXRpdmUgb3V0LW9mLXJhbmdlIHZhbHVlcyB0aHJldyBleGNlcHRp
b24KK1BBU1MgQ29uc3RydWN0aW9uIG9mIEludDMyQXJyYXkgd2l0aCAobnVsbCBidWZmZXIsIDAp
IHRocmV3IGV4Y2VwdGlvbgorUEFTUyBDb25zdHJ1Y3Rpb24gb2YgSW50MzJBcnJheSB3aXRoIChu
dWxsIGJ1ZmZlciwgMCwgMCkgdGhyZXcgZXhjZXB0aW9uCitQQVNTIENvbnN0cnVjdGlvbiBvZiBJ
bnQzMkFycmF5IHdpdGggb3V0LW9mLXJhbmdlIHZhbHVlcyB0aHJldyBJTkRFWF9TSVpFX0VSUiBl
eGNlcHRpb24KK1BBU1MgQ29uc3RydWN0aW9uIG9mIEFycmF5QnVmZmVyIHdpdGggbmVnYXRpdmUg
c2l6ZSB0aHJldyBleGNlcHRpb24KK1BBU1MgQ29uc3RydWN0aW9uIG9mIEludDMyQXJyYXkgd2l0
aCBuZWdhdGl2ZSBzaXplIHRocmV3IGV4Y2VwdGlvbgorUEFTUyBDb25zdHJ1Y3Rpb24gb2YgSW50
MzJBcnJheSB3aXRoIG5lZ2F0aXZlIG91dC1vZi1yYW5nZSB2YWx1ZXMgdGhyZXcgSU5ERVhfU0la
RV9FUlIgZXhjZXB0aW9uCitQQVNTIENvbnN0cnVjdGlvbiBvZiBJbnQzMkFycmF5IHdpdGggdW5h
bGlnbmVkIG9mZnNldCB0aHJldyBJTkRFWF9TSVpFX0VSUiBleGNlcHRpb24KIFBBU1MgQ29uc3Ry
dWN0aW9uIG9mIGh1Z2UgSW50MzJBcnJheSB0aHJldyBleGNlcHRpb24KIFRlc3Rpbmcgc2xpY2lu
ZyBvZiBJbnQzMkFycmF5CiBQQVNTIGFycmF5Lmxlbmd0aCBpcyAzMiAvIHR5cGVTaXplCkBAIC0x
NTYsOCArMTc1LDEyIEBAIFBBU1MgdGVzdCBVaW50OEFycmF5IFNsaWNlCiBQQVNTIG5lZ2F0aXZl
VGVzdCBVaW50OEFycmF5IFNsaWNlCiBQQVNTIHRlc3QgVWludDhBcnJheSBCb3VuZGFyeUNvbmRp
dGlvbnMoMCwgMCwgMjU1LCAyNTUpCiBQQVNTIENvbnN0cnVjdGlvbiBvZiBVaW50OEFycmF5IHdp
dGggbnVsbCBidWZmZXIgdGhyZXcgZXhjZXB0aW9uCi1QQVNTIENvbnN0cnVjdGlvbiBvZiBVaW50
OEFycmF5IHdpdGggb3V0LW9mLXJhbmdlIHZhbHVlcyB0aHJldyBleGNlcHRpb24KLVBBU1MgQ29u
c3RydWN0aW9uIG9mIFVpbnQ4QXJyYXkgd2l0aCBuZWdhdGl2ZSBvdXQtb2YtcmFuZ2UgdmFsdWVz
IHRocmV3IGV4Y2VwdGlvbgorUEFTUyBDb25zdHJ1Y3Rpb24gb2YgVWludDhBcnJheSB3aXRoIChu
dWxsIGJ1ZmZlciwgMCkgdGhyZXcgZXhjZXB0aW9uCitQQVNTIENvbnN0cnVjdGlvbiBvZiBVaW50
OEFycmF5IHdpdGggKG51bGwgYnVmZmVyLCAwLCAwKSB0aHJldyBleGNlcHRpb24KK1BBU1MgQ29u
c3RydWN0aW9uIG9mIFVpbnQ4QXJyYXkgd2l0aCBvdXQtb2YtcmFuZ2UgdmFsdWVzIHRocmV3IElO
REVYX1NJWkVfRVJSIGV4Y2VwdGlvbgorUEFTUyBDb25zdHJ1Y3Rpb24gb2YgQXJyYXlCdWZmZXIg
d2l0aCBuZWdhdGl2ZSBzaXplIHRocmV3IGV4Y2VwdGlvbgorUEFTUyBDb25zdHJ1Y3Rpb24gb2Yg
VWludDhBcnJheSB3aXRoIG5lZ2F0aXZlIHNpemUgdGhyZXcgZXhjZXB0aW9uCitQQVNTIENvbnN0
cnVjdGlvbiBvZiBVaW50OEFycmF5IHdpdGggbmVnYXRpdmUgb3V0LW9mLXJhbmdlIHZhbHVlcyB0
aHJldyBJTkRFWF9TSVpFX0VSUiBleGNlcHRpb24KIFRlc3Rpbmcgc2xpY2luZyBvZiBVaW50OEFy
cmF5CiBQQVNTIGFycmF5Lmxlbmd0aCBpcyAzMiAvIHR5cGVTaXplCiBQQVNTIGFycmF5LnNsaWNl
KDQsIDB4M0ZGRkZGRkYpLmxlbmd0aCBpcyAoMzIgLyB0eXBlU2l6ZSkgLSA0CkBAIC0xODksOCAr
MjEyLDEzIEBAIFBBU1MgdGVzdCBVaW50MTZBcnJheSBTbGljZQogUEFTUyBuZWdhdGl2ZVRlc3Qg
VWludDE2QXJyYXkgU2xpY2UKIFBBU1MgdGVzdCBVaW50MTZBcnJheSBCb3VuZGFyeUNvbmRpdGlv
bnMoMCwgMCwgNjU1MzUsIDY1NTM1KQogUEFTUyBDb25zdHJ1Y3Rpb24gb2YgVWludDE2QXJyYXkg
d2l0aCBudWxsIGJ1ZmZlciB0aHJldyBleGNlcHRpb24KLVBBU1MgQ29uc3RydWN0aW9uIG9mIFVp
bnQxNkFycmF5IHdpdGggb3V0LW9mLXJhbmdlIHZhbHVlcyB0aHJldyBleGNlcHRpb24KLVBBU1Mg
Q29uc3RydWN0aW9uIG9mIFVpbnQxNkFycmF5IHdpdGggbmVnYXRpdmUgb3V0LW9mLXJhbmdlIHZh
bHVlcyB0aHJldyBleGNlcHRpb24KK1BBU1MgQ29uc3RydWN0aW9uIG9mIFVpbnQxNkFycmF5IHdp
dGggKG51bGwgYnVmZmVyLCAwKSB0aHJldyBleGNlcHRpb24KK1BBU1MgQ29uc3RydWN0aW9uIG9m
IFVpbnQxNkFycmF5IHdpdGggKG51bGwgYnVmZmVyLCAwLCAwKSB0aHJldyBleGNlcHRpb24KK1BB
U1MgQ29uc3RydWN0aW9uIG9mIFVpbnQxNkFycmF5IHdpdGggb3V0LW9mLXJhbmdlIHZhbHVlcyB0
aHJldyBJTkRFWF9TSVpFX0VSUiBleGNlcHRpb24KK1BBU1MgQ29uc3RydWN0aW9uIG9mIEFycmF5
QnVmZmVyIHdpdGggbmVnYXRpdmUgc2l6ZSB0aHJldyBleGNlcHRpb24KK1BBU1MgQ29uc3RydWN0
aW9uIG9mIFVpbnQxNkFycmF5IHdpdGggbmVnYXRpdmUgc2l6ZSB0aHJldyBleGNlcHRpb24KK1BB
U1MgQ29uc3RydWN0aW9uIG9mIFVpbnQxNkFycmF5IHdpdGggbmVnYXRpdmUgb3V0LW9mLXJhbmdl
IHZhbHVlcyB0aHJldyBJTkRFWF9TSVpFX0VSUiBleGNlcHRpb24KK1BBU1MgQ29uc3RydWN0aW9u
IG9mIFVpbnQxNkFycmF5IHdpdGggdW5hbGlnbmVkIG9mZnNldCB0aHJldyBJTkRFWF9TSVpFX0VS
UiBleGNlcHRpb24KIFBBU1MgQ29uc3RydWN0aW9uIG9mIGh1Z2UgVWludDE2QXJyYXkgdGhyZXcg
ZXhjZXB0aW9uCiBUZXN0aW5nIHNsaWNpbmcgb2YgVWludDE2QXJyYXkKIFBBU1MgYXJyYXkubGVu
Z3RoIGlzIDMyIC8gdHlwZVNpemUKQEAgLTIyNCw4ICsyNTIsMTMgQEAgUEFTUyB0ZXN0IFVpbnQz
MkFycmF5IFNsaWNlCiBQQVNTIG5lZ2F0aXZlVGVzdCBVaW50MzJBcnJheSBTbGljZQogUEFTUyB0
ZXN0IFVpbnQzMkFycmF5IEJvdW5kYXJ5Q29uZGl0aW9ucygwLCAwLCA0Mjk0OTY3Mjk1LCA0Mjk0
OTY3Mjk1KQogUEFTUyBDb25zdHJ1Y3Rpb24gb2YgVWludDMyQXJyYXkgd2l0aCBudWxsIGJ1ZmZl
ciB0aHJldyBleGNlcHRpb24KLVBBU1MgQ29uc3RydWN0aW9uIG9mIFVpbnQzMkFycmF5IHdpdGgg
b3V0LW9mLXJhbmdlIHZhbHVlcyB0aHJldyBleGNlcHRpb24KLVBBU1MgQ29uc3RydWN0aW9uIG9m
IFVpbnQzMkFycmF5IHdpdGggbmVnYXRpdmUgb3V0LW9mLXJhbmdlIHZhbHVlcyB0aHJldyBleGNl
cHRpb24KK1BBU1MgQ29uc3RydWN0aW9uIG9mIFVpbnQzMkFycmF5IHdpdGggKG51bGwgYnVmZmVy
LCAwKSB0aHJldyBleGNlcHRpb24KK1BBU1MgQ29uc3RydWN0aW9uIG9mIFVpbnQzMkFycmF5IHdp
dGggKG51bGwgYnVmZmVyLCAwLCAwKSB0aHJldyBleGNlcHRpb24KK1BBU1MgQ29uc3RydWN0aW9u
IG9mIFVpbnQzMkFycmF5IHdpdGggb3V0LW9mLXJhbmdlIHZhbHVlcyB0aHJldyBJTkRFWF9TSVpF
X0VSUiBleGNlcHRpb24KK1BBU1MgQ29uc3RydWN0aW9uIG9mIEFycmF5QnVmZmVyIHdpdGggbmVn
YXRpdmUgc2l6ZSB0aHJldyBleGNlcHRpb24KK1BBU1MgQ29uc3RydWN0aW9uIG9mIFVpbnQzMkFy
cmF5IHdpdGggbmVnYXRpdmUgc2l6ZSB0aHJldyBleGNlcHRpb24KK1BBU1MgQ29uc3RydWN0aW9u
IG9mIFVpbnQzMkFycmF5IHdpdGggbmVnYXRpdmUgb3V0LW9mLXJhbmdlIHZhbHVlcyB0aHJldyBJ
TkRFWF9TSVpFX0VSUiBleGNlcHRpb24KK1BBU1MgQ29uc3RydWN0aW9uIG9mIFVpbnQzMkFycmF5
IHdpdGggdW5hbGlnbmVkIG9mZnNldCB0aHJldyBJTkRFWF9TSVpFX0VSUiBleGNlcHRpb24KIFBB
U1MgQ29uc3RydWN0aW9uIG9mIGh1Z2UgVWludDMyQXJyYXkgdGhyZXcgZXhjZXB0aW9uCiBUZXN0
aW5nIHNsaWNpbmcgb2YgVWludDMyQXJyYXkKIFBBU1MgYXJyYXkubGVuZ3RoIGlzIDMyIC8gdHlw
ZVNpemUKQEAgLTI1OSw4ICsyOTIsMTIgQEAgUEFTUyB0ZXN0IFdlYkdMQnl0ZUFycmF5IFNsaWNl
CiBQQVNTIG5lZ2F0aXZlVGVzdCBXZWJHTEJ5dGVBcnJheSBTbGljZQogUEFTUyB0ZXN0IFdlYkdM
Qnl0ZUFycmF5IEJvdW5kYXJ5Q29uZGl0aW9ucygtMTI4LCAtMTI4LCAxMjcsIDEyNykKIFBBU1Mg
Q29uc3RydWN0aW9uIG9mIFdlYkdMQnl0ZUFycmF5IHdpdGggbnVsbCBidWZmZXIgdGhyZXcgZXhj
ZXB0aW9uCi1QQVNTIENvbnN0cnVjdGlvbiBvZiBXZWJHTEJ5dGVBcnJheSB3aXRoIG91dC1vZi1y
YW5nZSB2YWx1ZXMgdGhyZXcgZXhjZXB0aW9uCi1QQVNTIENvbnN0cnVjdGlvbiBvZiBXZWJHTEJ5
dGVBcnJheSB3aXRoIG5lZ2F0aXZlIG91dC1vZi1yYW5nZSB2YWx1ZXMgdGhyZXcgZXhjZXB0aW9u
CitQQVNTIENvbnN0cnVjdGlvbiBvZiBXZWJHTEJ5dGVBcnJheSB3aXRoIChudWxsIGJ1ZmZlciwg
MCkgdGhyZXcgZXhjZXB0aW9uCitQQVNTIENvbnN0cnVjdGlvbiBvZiBXZWJHTEJ5dGVBcnJheSB3
aXRoIChudWxsIGJ1ZmZlciwgMCwgMCkgdGhyZXcgZXhjZXB0aW9uCitQQVNTIENvbnN0cnVjdGlv
biBvZiBXZWJHTEJ5dGVBcnJheSB3aXRoIG91dC1vZi1yYW5nZSB2YWx1ZXMgdGhyZXcgSU5ERVhf
U0laRV9FUlIgZXhjZXB0aW9uCitQQVNTIENvbnN0cnVjdGlvbiBvZiBBcnJheUJ1ZmZlciB3aXRo
IG5lZ2F0aXZlIHNpemUgdGhyZXcgZXhjZXB0aW9uCitQQVNTIENvbnN0cnVjdGlvbiBvZiBXZWJH
TEJ5dGVBcnJheSB3aXRoIG5lZ2F0aXZlIHNpemUgdGhyZXcgZXhjZXB0aW9uCitQQVNTIENvbnN0
cnVjdGlvbiBvZiBXZWJHTEJ5dGVBcnJheSB3aXRoIG5lZ2F0aXZlIG91dC1vZi1yYW5nZSB2YWx1
ZXMgdGhyZXcgSU5ERVhfU0laRV9FUlIgZXhjZXB0aW9uCiBUZXN0aW5nIHNsaWNpbmcgb2YgV2Vi
R0xCeXRlQXJyYXkKIFBBU1MgYXJyYXkubGVuZ3RoIGlzIDMyIC8gdHlwZVNpemUKIFBBU1MgYXJy
YXkuc2xpY2UoNCwgMHgzRkZGRkZGRikubGVuZ3RoIGlzICgzMiAvIHR5cGVTaXplKSAtIDQKQEAg
LTI5Miw4ICszMjksMTMgQEAgUEFTUyB0ZXN0IFdlYkdMRmxvYXRBcnJheSBTbGljZQogUEFTUyBu
ZWdhdGl2ZVRlc3QgV2ViR0xGbG9hdEFycmF5IFNsaWNlCiBQQVNTIHRlc3QgV2ViR0xGbG9hdEFy
cmF5IEJvdW5kYXJ5Q29uZGl0aW9ucygtNTAwLjUsIC01MDAuNSwgNTAwLjUsIDUwMC41KQogUEFT
UyBDb25zdHJ1Y3Rpb24gb2YgV2ViR0xGbG9hdEFycmF5IHdpdGggbnVsbCBidWZmZXIgdGhyZXcg
ZXhjZXB0aW9uCi1QQVNTIENvbnN0cnVjdGlvbiBvZiBXZWJHTEZsb2F0QXJyYXkgd2l0aCBvdXQt
b2YtcmFuZ2UgdmFsdWVzIHRocmV3IGV4Y2VwdGlvbgotUEFTUyBDb25zdHJ1Y3Rpb24gb2YgV2Vi
R0xGbG9hdEFycmF5IHdpdGggbmVnYXRpdmUgb3V0LW9mLXJhbmdlIHZhbHVlcyB0aHJldyBleGNl
cHRpb24KK1BBU1MgQ29uc3RydWN0aW9uIG9mIFdlYkdMRmxvYXRBcnJheSB3aXRoIChudWxsIGJ1
ZmZlciwgMCkgdGhyZXcgZXhjZXB0aW9uCitQQVNTIENvbnN0cnVjdGlvbiBvZiBXZWJHTEZsb2F0
QXJyYXkgd2l0aCAobnVsbCBidWZmZXIsIDAsIDApIHRocmV3IGV4Y2VwdGlvbgorUEFTUyBDb25z
dHJ1Y3Rpb24gb2YgV2ViR0xGbG9hdEFycmF5IHdpdGggb3V0LW9mLXJhbmdlIHZhbHVlcyB0aHJl
dyBJTkRFWF9TSVpFX0VSUiBleGNlcHRpb24KK1BBU1MgQ29uc3RydWN0aW9uIG9mIEFycmF5QnVm
ZmVyIHdpdGggbmVnYXRpdmUgc2l6ZSB0aHJldyBleGNlcHRpb24KK1BBU1MgQ29uc3RydWN0aW9u
IG9mIFdlYkdMRmxvYXRBcnJheSB3aXRoIG5lZ2F0aXZlIHNpemUgdGhyZXcgZXhjZXB0aW9uCitQ
QVNTIENvbnN0cnVjdGlvbiBvZiBXZWJHTEZsb2F0QXJyYXkgd2l0aCBuZWdhdGl2ZSBvdXQtb2Yt
cmFuZ2UgdmFsdWVzIHRocmV3IElOREVYX1NJWkVfRVJSIGV4Y2VwdGlvbgorUEFTUyBDb25zdHJ1
Y3Rpb24gb2YgV2ViR0xGbG9hdEFycmF5IHdpdGggdW5hbGlnbmVkIG9mZnNldCB0aHJldyBJTkRF
WF9TSVpFX0VSUiBleGNlcHRpb24KIFBBU1MgQ29uc3RydWN0aW9uIG9mIGh1Z2UgV2ViR0xGbG9h
dEFycmF5IHRocmV3IGV4Y2VwdGlvbgogVGVzdGluZyBzbGljaW5nIG9mIFdlYkdMRmxvYXRBcnJh
eQogUEFTUyBhcnJheS5sZW5ndGggaXMgMzIgLyB0eXBlU2l6ZQpAQCAtMzI3LDggKzM2OSwxMyBA
QCBQQVNTIHRlc3QgV2ViR0xJbnRBcnJheSBTbGljZQogUEFTUyBuZWdhdGl2ZVRlc3QgV2ViR0xJ
bnRBcnJheSBTbGljZQogUEFTUyB0ZXN0IFdlYkdMSW50QXJyYXkgQm91bmRhcnlDb25kaXRpb25z
KC0yMTQ3NDgzNjQ4LCAtMjE0NzQ4MzY0OCwgMjE0NzQ4MzY0NywgMjE0NzQ4MzY0NykKIFBBU1Mg
Q29uc3RydWN0aW9uIG9mIFdlYkdMSW50QXJyYXkgd2l0aCBudWxsIGJ1ZmZlciB0aHJldyBleGNl
cHRpb24KLVBBU1MgQ29uc3RydWN0aW9uIG9mIFdlYkdMSW50QXJyYXkgd2l0aCBvdXQtb2YtcmFu
Z2UgdmFsdWVzIHRocmV3IGV4Y2VwdGlvbgotUEFTUyBDb25zdHJ1Y3Rpb24gb2YgV2ViR0xJbnRB
cnJheSB3aXRoIG5lZ2F0aXZlIG91dC1vZi1yYW5nZSB2YWx1ZXMgdGhyZXcgZXhjZXB0aW9uCitQ
QVNTIENvbnN0cnVjdGlvbiBvZiBXZWJHTEludEFycmF5IHdpdGggKG51bGwgYnVmZmVyLCAwKSB0
aHJldyBleGNlcHRpb24KK1BBU1MgQ29uc3RydWN0aW9uIG9mIFdlYkdMSW50QXJyYXkgd2l0aCAo
bnVsbCBidWZmZXIsIDAsIDApIHRocmV3IGV4Y2VwdGlvbgorUEFTUyBDb25zdHJ1Y3Rpb24gb2Yg
V2ViR0xJbnRBcnJheSB3aXRoIG91dC1vZi1yYW5nZSB2YWx1ZXMgdGhyZXcgSU5ERVhfU0laRV9F
UlIgZXhjZXB0aW9uCitQQVNTIENvbnN0cnVjdGlvbiBvZiBBcnJheUJ1ZmZlciB3aXRoIG5lZ2F0
aXZlIHNpemUgdGhyZXcgZXhjZXB0aW9uCitQQVNTIENvbnN0cnVjdGlvbiBvZiBXZWJHTEludEFy
cmF5IHdpdGggbmVnYXRpdmUgc2l6ZSB0aHJldyBleGNlcHRpb24KK1BBU1MgQ29uc3RydWN0aW9u
IG9mIFdlYkdMSW50QXJyYXkgd2l0aCBuZWdhdGl2ZSBvdXQtb2YtcmFuZ2UgdmFsdWVzIHRocmV3
IElOREVYX1NJWkVfRVJSIGV4Y2VwdGlvbgorUEFTUyBDb25zdHJ1Y3Rpb24gb2YgV2ViR0xJbnRB
cnJheSB3aXRoIHVuYWxpZ25lZCBvZmZzZXQgdGhyZXcgSU5ERVhfU0laRV9FUlIgZXhjZXB0aW9u
CiBQQVNTIENvbnN0cnVjdGlvbiBvZiBodWdlIFdlYkdMSW50QXJyYXkgdGhyZXcgZXhjZXB0aW9u
CiBUZXN0aW5nIHNsaWNpbmcgb2YgV2ViR0xJbnRBcnJheQogUEFTUyBhcnJheS5sZW5ndGggaXMg
MzIgLyB0eXBlU2l6ZQpAQCAtMzYyLDggKzQwOSwxMyBAQCBQQVNTIHRlc3QgV2ViR0xTaG9ydEFy
cmF5IFNsaWNlCiBQQVNTIG5lZ2F0aXZlVGVzdCBXZWJHTFNob3J0QXJyYXkgU2xpY2UKIFBBU1Mg
dGVzdCBXZWJHTFNob3J0QXJyYXkgQm91bmRhcnlDb25kaXRpb25zKC0zMjc2OCwgLTMyNzY4LCAz
Mjc2NywgMzI3NjcpCiBQQVNTIENvbnN0cnVjdGlvbiBvZiBXZWJHTFNob3J0QXJyYXkgd2l0aCBu
dWxsIGJ1ZmZlciB0aHJldyBleGNlcHRpb24KLVBBU1MgQ29uc3RydWN0aW9uIG9mIFdlYkdMU2hv
cnRBcnJheSB3aXRoIG91dC1vZi1yYW5nZSB2YWx1ZXMgdGhyZXcgZXhjZXB0aW9uCi1QQVNTIENv
bnN0cnVjdGlvbiBvZiBXZWJHTFNob3J0QXJyYXkgd2l0aCBuZWdhdGl2ZSBvdXQtb2YtcmFuZ2Ug
dmFsdWVzIHRocmV3IGV4Y2VwdGlvbgorUEFTUyBDb25zdHJ1Y3Rpb24gb2YgV2ViR0xTaG9ydEFy
cmF5IHdpdGggKG51bGwgYnVmZmVyLCAwKSB0aHJldyBleGNlcHRpb24KK1BBU1MgQ29uc3RydWN0
aW9uIG9mIFdlYkdMU2hvcnRBcnJheSB3aXRoIChudWxsIGJ1ZmZlciwgMCwgMCkgdGhyZXcgZXhj
ZXB0aW9uCitQQVNTIENvbnN0cnVjdGlvbiBvZiBXZWJHTFNob3J0QXJyYXkgd2l0aCBvdXQtb2Yt
cmFuZ2UgdmFsdWVzIHRocmV3IElOREVYX1NJWkVfRVJSIGV4Y2VwdGlvbgorUEFTUyBDb25zdHJ1
Y3Rpb24gb2YgQXJyYXlCdWZmZXIgd2l0aCBuZWdhdGl2ZSBzaXplIHRocmV3IGV4Y2VwdGlvbgor
UEFTUyBDb25zdHJ1Y3Rpb24gb2YgV2ViR0xTaG9ydEFycmF5IHdpdGggbmVnYXRpdmUgc2l6ZSB0
aHJldyBleGNlcHRpb24KK1BBU1MgQ29uc3RydWN0aW9uIG9mIFdlYkdMU2hvcnRBcnJheSB3aXRo
IG5lZ2F0aXZlIG91dC1vZi1yYW5nZSB2YWx1ZXMgdGhyZXcgSU5ERVhfU0laRV9FUlIgZXhjZXB0
aW9uCitQQVNTIENvbnN0cnVjdGlvbiBvZiBXZWJHTFNob3J0QXJyYXkgd2l0aCB1bmFsaWduZWQg
b2Zmc2V0IHRocmV3IElOREVYX1NJWkVfRVJSIGV4Y2VwdGlvbgogUEFTUyBDb25zdHJ1Y3Rpb24g
b2YgaHVnZSBXZWJHTFNob3J0QXJyYXkgdGhyZXcgZXhjZXB0aW9uCiBUZXN0aW5nIHNsaWNpbmcg
b2YgV2ViR0xTaG9ydEFycmF5CiBQQVNTIGFycmF5Lmxlbmd0aCBpcyAzMiAvIHR5cGVTaXplCkBA
IC0zOTcsOCArNDQ5LDEyIEBAIFBBU1MgdGVzdCBXZWJHTFVuc2lnbmVkQnl0ZUFycmF5IFNsaWNl
CiBQQVNTIG5lZ2F0aXZlVGVzdCBXZWJHTFVuc2lnbmVkQnl0ZUFycmF5IFNsaWNlCiBQQVNTIHRl
c3QgV2ViR0xVbnNpZ25lZEJ5dGVBcnJheSBCb3VuZGFyeUNvbmRpdGlvbnMoMCwgMCwgMjU1LCAy
NTUpCiBQQVNTIENvbnN0cnVjdGlvbiBvZiBXZWJHTFVuc2lnbmVkQnl0ZUFycmF5IHdpdGggbnVs
bCBidWZmZXIgdGhyZXcgZXhjZXB0aW9uCi1QQVNTIENvbnN0cnVjdGlvbiBvZiBXZWJHTFVuc2ln
bmVkQnl0ZUFycmF5IHdpdGggb3V0LW9mLXJhbmdlIHZhbHVlcyB0aHJldyBleGNlcHRpb24KLVBB
U1MgQ29uc3RydWN0aW9uIG9mIFdlYkdMVW5zaWduZWRCeXRlQXJyYXkgd2l0aCBuZWdhdGl2ZSBv
dXQtb2YtcmFuZ2UgdmFsdWVzIHRocmV3IGV4Y2VwdGlvbgorUEFTUyBDb25zdHJ1Y3Rpb24gb2Yg
V2ViR0xVbnNpZ25lZEJ5dGVBcnJheSB3aXRoIChudWxsIGJ1ZmZlciwgMCkgdGhyZXcgZXhjZXB0
aW9uCitQQVNTIENvbnN0cnVjdGlvbiBvZiBXZWJHTFVuc2lnbmVkQnl0ZUFycmF5IHdpdGggKG51
bGwgYnVmZmVyLCAwLCAwKSB0aHJldyBleGNlcHRpb24KK1BBU1MgQ29uc3RydWN0aW9uIG9mIFdl
YkdMVW5zaWduZWRCeXRlQXJyYXkgd2l0aCBvdXQtb2YtcmFuZ2UgdmFsdWVzIHRocmV3IElOREVY
X1NJWkVfRVJSIGV4Y2VwdGlvbgorUEFTUyBDb25zdHJ1Y3Rpb24gb2YgQXJyYXlCdWZmZXIgd2l0
aCBuZWdhdGl2ZSBzaXplIHRocmV3IGV4Y2VwdGlvbgorUEFTUyBDb25zdHJ1Y3Rpb24gb2YgV2Vi
R0xVbnNpZ25lZEJ5dGVBcnJheSB3aXRoIG5lZ2F0aXZlIHNpemUgdGhyZXcgZXhjZXB0aW9uCitQ
QVNTIENvbnN0cnVjdGlvbiBvZiBXZWJHTFVuc2lnbmVkQnl0ZUFycmF5IHdpdGggbmVnYXRpdmUg
b3V0LW9mLXJhbmdlIHZhbHVlcyB0aHJldyBJTkRFWF9TSVpFX0VSUiBleGNlcHRpb24KIFRlc3Rp
bmcgc2xpY2luZyBvZiBXZWJHTFVuc2lnbmVkQnl0ZUFycmF5CiBQQVNTIGFycmF5Lmxlbmd0aCBp
cyAzMiAvIHR5cGVTaXplCiBQQVNTIGFycmF5LnNsaWNlKDQsIDB4M0ZGRkZGRkYpLmxlbmd0aCBp
cyAoMzIgLyB0eXBlU2l6ZSkgLSA0CkBAIC00MzAsOCArNDg2LDEzIEBAIFBBU1MgdGVzdCBXZWJH
TFVuc2lnbmVkSW50QXJyYXkgU2xpY2UKIFBBU1MgbmVnYXRpdmVUZXN0IFdlYkdMVW5zaWduZWRJ
bnRBcnJheSBTbGljZQogUEFTUyB0ZXN0IFdlYkdMVW5zaWduZWRJbnRBcnJheSBCb3VuZGFyeUNv
bmRpdGlvbnMoMCwgMCwgNDI5NDk2NzI5NSwgNDI5NDk2NzI5NSkKIFBBU1MgQ29uc3RydWN0aW9u
IG9mIFdlYkdMVW5zaWduZWRJbnRBcnJheSB3aXRoIG51bGwgYnVmZmVyIHRocmV3IGV4Y2VwdGlv
bgotUEFTUyBDb25zdHJ1Y3Rpb24gb2YgV2ViR0xVbnNpZ25lZEludEFycmF5IHdpdGggb3V0LW9m
LXJhbmdlIHZhbHVlcyB0aHJldyBleGNlcHRpb24KLVBBU1MgQ29uc3RydWN0aW9uIG9mIFdlYkdM
VW5zaWduZWRJbnRBcnJheSB3aXRoIG5lZ2F0aXZlIG91dC1vZi1yYW5nZSB2YWx1ZXMgdGhyZXcg
ZXhjZXB0aW9uCitQQVNTIENvbnN0cnVjdGlvbiBvZiBXZWJHTFVuc2lnbmVkSW50QXJyYXkgd2l0
aCAobnVsbCBidWZmZXIsIDApIHRocmV3IGV4Y2VwdGlvbgorUEFTUyBDb25zdHJ1Y3Rpb24gb2Yg
V2ViR0xVbnNpZ25lZEludEFycmF5IHdpdGggKG51bGwgYnVmZmVyLCAwLCAwKSB0aHJldyBleGNl
cHRpb24KK1BBU1MgQ29uc3RydWN0aW9uIG9mIFdlYkdMVW5zaWduZWRJbnRBcnJheSB3aXRoIG91
dC1vZi1yYW5nZSB2YWx1ZXMgdGhyZXcgSU5ERVhfU0laRV9FUlIgZXhjZXB0aW9uCitQQVNTIENv
bnN0cnVjdGlvbiBvZiBBcnJheUJ1ZmZlciB3aXRoIG5lZ2F0aXZlIHNpemUgdGhyZXcgZXhjZXB0
aW9uCitQQVNTIENvbnN0cnVjdGlvbiBvZiBXZWJHTFVuc2lnbmVkSW50QXJyYXkgd2l0aCBuZWdh
dGl2ZSBzaXplIHRocmV3IGV4Y2VwdGlvbgorUEFTUyBDb25zdHJ1Y3Rpb24gb2YgV2ViR0xVbnNp
Z25lZEludEFycmF5IHdpdGggbmVnYXRpdmUgb3V0LW9mLXJhbmdlIHZhbHVlcyB0aHJldyBJTkRF
WF9TSVpFX0VSUiBleGNlcHRpb24KK1BBU1MgQ29uc3RydWN0aW9uIG9mIFdlYkdMVW5zaWduZWRJ
bnRBcnJheSB3aXRoIHVuYWxpZ25lZCBvZmZzZXQgdGhyZXcgSU5ERVhfU0laRV9FUlIgZXhjZXB0
aW9uCiBQQVNTIENvbnN0cnVjdGlvbiBvZiBodWdlIFdlYkdMVW5zaWduZWRJbnRBcnJheSB0aHJl
dyBleGNlcHRpb24KIFRlc3Rpbmcgc2xpY2luZyBvZiBXZWJHTFVuc2lnbmVkSW50QXJyYXkKIFBB
U1MgYXJyYXkubGVuZ3RoIGlzIDMyIC8gdHlwZVNpemUKQEAgLTQ2NSw4ICs1MjYsMTMgQEAgUEFT
UyB0ZXN0IFdlYkdMVW5zaWduZWRTaG9ydEFycmF5IFNsaWNlCiBQQVNTIG5lZ2F0aXZlVGVzdCBX
ZWJHTFVuc2lnbmVkU2hvcnRBcnJheSBTbGljZQogUEFTUyB0ZXN0IFdlYkdMVW5zaWduZWRTaG9y
dEFycmF5IEJvdW5kYXJ5Q29uZGl0aW9ucygwLCAwLCA2NTUzNSwgNjU1MzUpCiBQQVNTIENvbnN0
cnVjdGlvbiBvZiBXZWJHTFVuc2lnbmVkU2hvcnRBcnJheSB3aXRoIG51bGwgYnVmZmVyIHRocmV3
IGV4Y2VwdGlvbgotUEFTUyBDb25zdHJ1Y3Rpb24gb2YgV2ViR0xVbnNpZ25lZFNob3J0QXJyYXkg
d2l0aCBvdXQtb2YtcmFuZ2UgdmFsdWVzIHRocmV3IGV4Y2VwdGlvbgotUEFTUyBDb25zdHJ1Y3Rp
b24gb2YgV2ViR0xVbnNpZ25lZFNob3J0QXJyYXkgd2l0aCBuZWdhdGl2ZSBvdXQtb2YtcmFuZ2Ug
dmFsdWVzIHRocmV3IGV4Y2VwdGlvbgorUEFTUyBDb25zdHJ1Y3Rpb24gb2YgV2ViR0xVbnNpZ25l
ZFNob3J0QXJyYXkgd2l0aCAobnVsbCBidWZmZXIsIDApIHRocmV3IGV4Y2VwdGlvbgorUEFTUyBD
b25zdHJ1Y3Rpb24gb2YgV2ViR0xVbnNpZ25lZFNob3J0QXJyYXkgd2l0aCAobnVsbCBidWZmZXIs
IDAsIDApIHRocmV3IGV4Y2VwdGlvbgorUEFTUyBDb25zdHJ1Y3Rpb24gb2YgV2ViR0xVbnNpZ25l
ZFNob3J0QXJyYXkgd2l0aCBvdXQtb2YtcmFuZ2UgdmFsdWVzIHRocmV3IElOREVYX1NJWkVfRVJS
IGV4Y2VwdGlvbgorUEFTUyBDb25zdHJ1Y3Rpb24gb2YgQXJyYXlCdWZmZXIgd2l0aCBuZWdhdGl2
ZSBzaXplIHRocmV3IGV4Y2VwdGlvbgorUEFTUyBDb25zdHJ1Y3Rpb24gb2YgV2ViR0xVbnNpZ25l
ZFNob3J0QXJyYXkgd2l0aCBuZWdhdGl2ZSBzaXplIHRocmV3IGV4Y2VwdGlvbgorUEFTUyBDb25z
dHJ1Y3Rpb24gb2YgV2ViR0xVbnNpZ25lZFNob3J0QXJyYXkgd2l0aCBuZWdhdGl2ZSBvdXQtb2Yt
cmFuZ2UgdmFsdWVzIHRocmV3IElOREVYX1NJWkVfRVJSIGV4Y2VwdGlvbgorUEFTUyBDb25zdHJ1
Y3Rpb24gb2YgV2ViR0xVbnNpZ25lZFNob3J0QXJyYXkgd2l0aCB1bmFsaWduZWQgb2Zmc2V0IHRo
cmV3IElOREVYX1NJWkVfRVJSIGV4Y2VwdGlvbgogUEFTUyBDb25zdHJ1Y3Rpb24gb2YgaHVnZSBX
ZWJHTFVuc2lnbmVkU2hvcnRBcnJheSB0aHJldyBleGNlcHRpb24KIFRlc3Rpbmcgc2xpY2luZyBv
ZiBXZWJHTFVuc2lnbmVkU2hvcnRBcnJheQogUEFTUyBhcnJheS5sZW5ndGggaXMgMzIgLyB0eXBl
U2l6ZQpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wvYXJyYXktdW5pdC10ZXN0
cy5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmdsL2FycmF5
LXVuaXQtdGVzdHMuaHRtbAkocmV2aXNpb24gNjEzMDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2Nh
bnZhcy93ZWJnbC9hcnJheS11bml0LXRlc3RzLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTM0NCwz
MyArMzQ0LDcxIEBAIGZ1bmN0aW9uIHRlc3RCb3VuZGFyeUNvbmRpdGlvbnModHlwZSwgbmEKIGZ1
bmN0aW9uIHRlc3RDb25zdHJ1Y3Rpb25XaXRoTnVsbEJ1ZmZlcih0eXBlLCBuYW1lKSB7CiAgICAg
dmFyIGFycmF5OwogICAgIHRyeSB7Ci0gICAgICAgIGFycmF5ID0gbmV3IHR5cGUobnVsbCwgMCwg
MCk7CisgICAgICAgIGFycmF5ID0gbmV3IHR5cGUobnVsbCk7CiAgICAgICAgIHRlc3RGYWlsZWQo
IkNvbnN0cnVjdGlvbiBvZiAiICsgbmFtZSArICIgd2l0aCBudWxsIGJ1ZmZlciBzaG91bGQgdGhy
b3cgZXhjZXB0aW9uIik7CiAgICAgfSBjYXRjaCAoZSkgewogICAgICAgICB0ZXN0UGFzc2VkKCJD
b25zdHJ1Y3Rpb24gb2YgIiArIG5hbWUgKyAiIHdpdGggbnVsbCBidWZmZXIgdGhyZXcgZXhjZXB0
aW9uIik7CiAgICAgfQorICAgIHRyeSB7CisgICAgICAgIGFycmF5ID0gbmV3IHR5cGUobnVsbCwg
MCwgMCk7CisgICAgICAgIHRlc3RGYWlsZWQoIkNvbnN0cnVjdGlvbiBvZiAiICsgbmFtZSArICIg
d2l0aCAobnVsbCBidWZmZXIsIDApIHNob3VsZCB0aHJvdyBleGNlcHRpb24iKTsKKyAgICB9IGNh
dGNoIChlKSB7CisgICAgICAgIHRlc3RQYXNzZWQoIkNvbnN0cnVjdGlvbiBvZiAiICsgbmFtZSAr
ICIgd2l0aCAobnVsbCBidWZmZXIsIDApIHRocmV3IGV4Y2VwdGlvbiIpOworICAgIH0KKyAgICB0
cnkgeworICAgICAgICBhcnJheSA9IG5ldyB0eXBlKG51bGwsIDAsIDApOworICAgICAgICB0ZXN0
RmFpbGVkKCJDb25zdHJ1Y3Rpb24gb2YgIiArIG5hbWUgKyAiIHdpdGggKG51bGwgYnVmZmVyLCAw
LCAwKSBzaG91bGQgdGhyb3cgZXhjZXB0aW9uIik7CisgICAgfSBjYXRjaCAoZSkgeworICAgICAg
ICB0ZXN0UGFzc2VkKCJDb25zdHJ1Y3Rpb24gb2YgIiArIG5hbWUgKyAiIHdpdGggKG51bGwgYnVm
ZmVyLCAwLCAwKSB0aHJldyBleGNlcHRpb24iKTsKKyAgICB9CiB9CiAKLQotZnVuY3Rpb24gdGVz
dENvbnN0cnVjdGlvbldpdGhPdXRPZlJhbmdlVmFsdWVzKHR5cGUsIG5hbWUpIHsKLSAgICB2YXIg
YnVmZmVyID0gbmV3IEFycmF5QnVmZmVyKDQpOwotICAgIHZhciBhcnJheTsKK2Z1bmN0aW9uIHNo
b3VsZFRocm93SW5kZXhTaXplRXJyKGZ1bmMsIHRleHQpIHsKKyAgICB2YXIgZXJyb3JUZXh0ID0g
dGV4dCArICIgc2hvdWxkIHRocm93IElOREVYX1NJWkVfRVJSIGV4Y2VwdGlvbiI7CiAgICAgdHJ5
IHsKLSAgICAgICAgYXJyYXkgPSBuZXcgdHlwZShidWZmZXIsIDQsIDB4M0ZGRkZGRkYpOwotICAg
ICAgICB0ZXN0RmFpbGVkKCJDb25zdHJ1Y3Rpb24gb2YgIiArIG5hbWUgKyAiIHdpdGggb3V0LW9m
LXJhbmdlIHZhbHVlcyBzaG91bGQgdGhyb3cgZXhjZXB0aW9uIik7CisgICAgICAgIGZ1bmMoKTsK
KyAgICAgICAgdGVzdEZhaWxlZChlcnJvclRleHQpOwogICAgIH0gY2F0Y2ggKGUpIHsKLSAgICAg
ICAgdGVzdFBhc3NlZCgiQ29uc3RydWN0aW9uIG9mICIgKyBuYW1lICsgIiB3aXRoIG91dC1vZi1y
YW5nZSB2YWx1ZXMgdGhyZXcgZXhjZXB0aW9uIik7CisgICAgICAgIGlmIChlLmNvZGUgIT0gRE9N
RXhjZXB0aW9uLklOREVYX1NJWkVfRVJSKSB7CisgICAgICAgICAgICB0ZXN0RmFpbGVkKGVycm9y
VGV4dCk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICB0ZXN0UGFzc2VkKHRleHQgKyAi
IHRocmV3IElOREVYX1NJWkVfRVJSIGV4Y2VwdGlvbiIpOworICAgICAgICB9CiAgICAgfQogfQog
CitmdW5jdGlvbiB0ZXN0Q29uc3RydWN0aW9uV2l0aE91dE9mUmFuZ2VWYWx1ZXModHlwZSwgbmFt
ZSkgeworICAgIHNob3VsZFRocm93SW5kZXhTaXplRXJyKGZ1bmN0aW9uKCkgeworICAgICAgICB2
YXIgYnVmZmVyID0gbmV3IEFycmF5QnVmZmVyKDQpOworICAgICAgICB2YXIgYXJyYXkgPSBuZXcg
dHlwZShidWZmZXIsIDQsIDB4M0ZGRkZGRkYpOworICAgIH0sICJDb25zdHJ1Y3Rpb24gb2YgIiAr
IG5hbWUgKyAiIHdpdGggb3V0LW9mLXJhbmdlIHZhbHVlcyIpOworfQorCiBmdW5jdGlvbiB0ZXN0
Q29uc3RydWN0aW9uV2l0aE5lZ2F0aXZlT3V0T2ZSYW5nZVZhbHVlcyh0eXBlLCBuYW1lKSB7Ci0g
ICAgdmFyIGJ1ZmZlciA9IG5ldyBBcnJheUJ1ZmZlcig0KTsKLSAgICB2YXIgYXJyYXk7CiAgICAg
dHJ5IHsKLSAgICAgICAgYXJyYXkgPSBuZXcgdHlwZShidWZmZXIsIDQsIC0yMTQ3NDgzNjQ4KTsK
LSAgICAgICAgdGVzdEZhaWxlZCgiQ29uc3RydWN0aW9uIG9mICIgKyBuYW1lICsgIiB3aXRoIG5l
Z2F0aXZlIG91dC1vZi1yYW5nZSB2YWx1ZXMgc2hvdWxkIHRocm93IGV4Y2VwdGlvbiIpOworICAg
ICAgICB2YXIgYnVmZmVyID0gbmV3IEFycmF5QnVmZmVyKC0xKTsKKyAgICAgICAgdGVzdEZhaWxl
ZCgiQ29uc3RydWN0aW9uIG9mIEFycmF5QnVmZmVyIHdpdGggbmVnYXRpdmUgc2l6ZSBzaG91bGQg
dGhyb3cgZXhjZXB0aW9uIik7CiAgICAgfSBjYXRjaCAoZSkgewotICAgICAgICB0ZXN0UGFzc2Vk
KCJDb25zdHJ1Y3Rpb24gb2YgIiArIG5hbWUgKyAiIHdpdGggbmVnYXRpdmUgb3V0LW9mLXJhbmdl
IHZhbHVlcyB0aHJldyBleGNlcHRpb24iKTsKKyAgICAgICAgdGVzdFBhc3NlZCgiQ29uc3RydWN0
aW9uIG9mIEFycmF5QnVmZmVyIHdpdGggbmVnYXRpdmUgc2l6ZSB0aHJldyBleGNlcHRpb24iKTsK
KyAgICB9CisgICAgdHJ5IHsKKyAgICAgICAgdmFyIGFycmF5ID0gbmV3IHR5cGUoLTEpOworICAg
ICAgICB0ZXN0RmFpbGVkKCJDb25zdHJ1Y3Rpb24gb2YgIiArIG5hbWUgKyAiIHdpdGggbmVnYXRp
dmUgc2l6ZSBzaG91bGQgdGhyb3cgZXhjZXB0aW9uIik7CisgICAgfSBjYXRjaCAoZSkgeworICAg
ICAgICB0ZXN0UGFzc2VkKCJDb25zdHJ1Y3Rpb24gb2YgIiArIG5hbWUgKyAiIHdpdGggbmVnYXRp
dmUgc2l6ZSB0aHJldyBleGNlcHRpb24iKTsKKyAgICB9CisgICAgc2hvdWxkVGhyb3dJbmRleFNp
emVFcnIoZnVuY3Rpb24oKSB7CisgICAgICAgIHZhciBidWZmZXIgPSBuZXcgQXJyYXlCdWZmZXIo
NCk7CisgICAgICAgIHZhciBhcnJheSA9IG5ldyB0eXBlKGJ1ZmZlciwgNCwgLTIxNDc0ODM2NDgp
OworICAgIH0sICJDb25zdHJ1Y3Rpb24gb2YgIiArIG5hbWUgKyAiIHdpdGggbmVnYXRpdmUgb3V0
LW9mLXJhbmdlIHZhbHVlcyIpOworfQorCitmdW5jdGlvbiB0ZXN0Q29uc3RydWN0aW9uV2l0aFVu
YWxpZ25lZE9mZnNldCh0eXBlLCBuYW1lLCBlbGVtZW50U2l6ZUluQnl0ZXMpIHsKKyAgICBpZiAo
ZWxlbWVudFNpemVJbkJ5dGVzID4gMSkgeworICAgICAgICBzaG91bGRUaHJvd0luZGV4U2l6ZUVy
cihmdW5jdGlvbigpIHsKKyAgICAgICAgICAgIHZhciBidWZmZXIgPSBuZXcgQXJyYXlCdWZmZXIo
MzIpOworICAgICAgICAgICAgdmFyIGFycmF5ID0gbmV3IHR5cGUoYnVmZmVyLCAxLCBlbGVtZW50
U2l6ZUluQnl0ZXMpOworICAgICAgICB9LCAiQ29uc3RydWN0aW9uIG9mICIgKyBuYW1lICsgIiB3
aXRoIHVuYWxpZ25lZCBvZmZzZXQiKTsKICAgICB9CiB9CiAKQEAgLTY0Niw2ICs2ODQsNyBAQCBm
dW5jdGlvbiBydW5UZXN0cygpIHsKICAgICB0ZXN0Q29uc3RydWN0aW9uV2l0aE51bGxCdWZmZXIo
dHlwZSwgbmFtZSk7CiAgICAgdGVzdENvbnN0cnVjdGlvbldpdGhPdXRPZlJhbmdlVmFsdWVzKHR5
cGUsIG5hbWUpOwogICAgIHRlc3RDb25zdHJ1Y3Rpb25XaXRoTmVnYXRpdmVPdXRPZlJhbmdlVmFs
dWVzKHR5cGUsIG5hbWUpOworICAgIHRlc3RDb25zdHJ1Y3Rpb25XaXRoVW5hbGlnbmVkT2Zmc2V0
KHR5cGUsIG5hbWUsIHRlc3RDYXNlLmVsZW1lbnRTaXplSW5CeXRlcyk7CiAgICAgdGVzdENvbnN0
cnVjdGlvbk9mSHVnZUFycmF5KHR5cGUsIG5hbWUsIHRlc3RDYXNlLmVsZW1lbnRTaXplSW5CeXRl
cyk7CiAgICAgdGVzdFNsaWNpbmdXaXRoT3V0T2ZSYW5nZVZhbHVlcyh0eXBlLCBuYW1lLCB0ZXN0
Q2FzZS5lbGVtZW50U2l6ZUluQnl0ZXMpOwogICAgIHRlc3RTbGljaW5nV2l0aERlZmF1bHRWYWx1
ZXModHlwZSwgbmFtZSwgdGVzdENhc2UuZWxlbWVudFNpemVJbkJ5dGVzKTsK
</data>
<flag name="review"
          id="45510"
          type_id="1"
          status="+"
          setter="dglazkov"
    />
    <flag name="commit-queue"
          id="45511"
          type_id="3"
          status="-"
          setter="kbr"
    />
          </attachment>
      

    </bug>

</bugzilla>