<?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>27476</bug_id>
          
          <creation_ts>2009-07-20 18:43:52 -0700</creation_ts>
          <short_desc>execCommand(&apos;underline&apos; / &apos;strikeThrough&apos;) doesn&apos;t work properly with multiple styles in text-decoration</short_desc>
          <delta_ts>2009-07-23 00:13:02 -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>HTML Editing</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</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="Ryosuke Niwa">rniwa</reporter>
          <assigned_to name="Ryosuke Niwa">rniwa</assigned_to>
          <cc>eric</cc>
    
    <cc>jparent</cc>
    
    <cc>justin.garcia</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>133324</commentid>
    <comment_count>0</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2009-07-20 18:43:52 -0700</bug_when>
    <thetext>execCommand(&apos;underline&apos; / &apos;strikeThrough&apos;) results in text-decoration: underline / line-through, deleting all other text decorations even when more than one styles are specified.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>133823</commentid>
    <comment_count>1</comment_count>
      <attachid>33278</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2009-07-22 11:45:49 -0700</bug_when>
    <thetext>Created attachment 33278
fixes the bug</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>133881</commentid>
    <comment_count>2</comment_count>
      <attachid>33278</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-07-22 13:33:14 -0700</bug_when>
    <thetext>Comment on attachment 33278
fixes the bug

/CSSComputedStyleDeclaration.cpp change needs testing.
window.getComputedStyle(foo).getPropertyCSSValue(&apos;text-decoration&apos;)


   RefPtr&lt;CSSValueList&gt; list = CSSValueList::createCommaSeparated();
 1055             RefPtr&lt;CSSValueList&gt; list = CSSValueList::createSpaceSeparated();
needs test too.
foo.style.textDecoration

 73 void CSSValueList::remove(CSSValue* val)
should be called removeFirst or removeAll or should at least be documented as to its behavior.

 78         if (m_values.at(index)-&gt;cssText() == val-&gt;cssText())

is really really sad.

consider adding a bool return to remove and then you don&apos;t need hasValue

 93 static bool applyCommandToFrame(Frame* frame, EditorCommandSource source, EditAction action, CSSMutableStyleDeclaration* style)
is a great change and could even be made in a separate patch.  it&apos;s OK to do in this one though.

YOu can just delete:
110116 static bool executeApplyStyle(Frame* frame, EditorCommandSource source, EditAction action, int propertyID, const char* propertyValue)

Spacing:
 130     Node* nodeToRemove=0;

This looks great!  We just need more tests!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>133970</commentid>
    <comment_count>3</comment_count>
      <attachid>33304</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2009-07-22 15:56:51 -0700</bug_when>
    <thetext>Created attachment 33304
2nd submission, no longer adds hasValue to CSSValueList</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>133978</commentid>
    <comment_count>4</comment_count>
      <attachid>33304</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-07-22 16:26:18 -0700</bug_when>
    <thetext>Comment on attachment 33304
2nd submission, no longer adds hasValue to CSSValueList

getComputedStyle/getComputedStyle-text-decoration.html shoudl be a js test (like how editing/execCommand/resources/toggle-text-decorations.js is).  Ping me if you need help converting it.

missing newline at EOF:
29 var successfullyParsed = true;
030 \ No newline at end of file

Would like to see the converted test. Otherwise this looks fine.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>133996</commentid>
    <comment_count>5</comment_count>
      <attachid>33308</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2009-07-22 18:12:53 -0700</bug_when>
    <thetext>Created attachment 33308
3rd submission, test for computed style is converted to a js test</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>134000</commentid>
    <comment_count>6</comment_count>
      <attachid>33308</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-07-22 18:29:34 -0700</bug_when>
    <thetext>Comment on attachment 33308
3rd submission, test for computed style is converted to a js test

Looks fine.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>134009</commentid>
    <comment_count>7</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2009-07-22 19:40:28 -0700</bug_when>
    <thetext>Landed in http://trac.webkit.org/changeset/46251</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>33278</attachid>
            <date>2009-07-22 11:45:49 -0700</date>
            <delta_ts>2009-07-22 15:56:51 -0700</delta_ts>
            <desc>fixes the bug</desc>
            <filename>fix27476</filename>
            <type>text/plain</type>
            <size>20910</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA0NjIyNykKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMzQgQEAKKzIwMDktMDctMjIgIFJ5b3N1a2UgTml3YSAgPHJuaXdhQHdlYmtpdC5v
cmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgZXhl
Y0NvbW1hbmQoJ3VuZGVybGluZScgLyAnc3RyaWtlVGhyb3VnaCcpIGRvZXNuJ3Qgd29yayBwcm9w
ZXJseSB3aXRoIG11bHRpcGxlIHN0eWxlcyBpbiB0ZXh0LWRlY29yYXRpb24KKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI3NDc2CisKKyAgICAgICAgZXhl
Y3V0ZVN0cmlrZXRocm91Z2ggYW5kIGV4ZWN1dGVVbmRlcmxpbmUgd2VyZSB0b2dnbGluZyBiZXR3
ZWVuICJsaW5lLXRocm91Z2giIC8gInVuZGVybGluZSIgYW5kICJub25lIi4KKyAgICAgICAgVGhp
cyBwYXRjaCBhZGRzIGV4ZWN1dGVUb2dnbGVTdHlsZUluTGlzdCB0aGF0IHRvZ2dsZXMgYSBzdHls
ZSBpbiBDU1NWYWx1ZUxpc3QgaW5zdGVhZCBvZiB0b2dnbGluZyB0aGUgZW50aXJlIHZhbHVlLgor
ICAgICAgICBDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24gd2FzIG1vZGlmaWVkIHRvIHJldHVy
biBDU1NWYWx1ZUxpc3QgaW5zdGVhZCBvZiBDU1NQcmltaXRpdmVWYWx1ZSBmb3IgdGV4dCBkZWNv
cmF0aW9ucy4KKyAgICAgICAgSW4gYWRkaXRpb24sIHR3byBtZW1iZXIgZnVuY3Rpb25zIChyZW1v
dmUgYW5kIGhhc1ZhbHVlKSBhcmUgYWRkZWQgdG8gQ1NTVmFsdWVMaXN0IHRvIGFsbG93IG1hbmlw
dWxhdGlvbnMgb2YgQ1NTVmFsdWVMaXN0LgorCisgICAgICAgIFRlc3Q6IGVkaXRpbmcvZXhlY0Nv
bW1hbmQvdG9nZ2xlLXRleHQtZGVjb3JhdGlvbnMuaHRtbAorCisgICAgICAgICogY3NzL0NTU0Nv
bXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpyZW5kZXJUZXh0
RGVjb3JhdGlvbkZsYWdzVG9DU1NWYWx1ZSk6IENyZWF0ZXMgYSBDU1NWYWx1ZUxpc3QKKyAgICAg
ICAgKFdlYkNvcmU6OkNTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbjo6Z2V0UHJvcGVydHlDU1NW
YWx1ZSk6IFJldHVybnMgYSBDU1NWYWx1ZUxpc3QgaW5zdGVhZCBvZiBDU1NWYWx1ZQorICAgICAg
ICAqIGNzcy9DU1NQYXJzZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyOjpwYXJz
ZVZhbHVlKTogVGV4dCBkZWNvcmF0aW9ucyBhcmUgc3BhY2Ugc2VwYXJhdGVkIGluc3RlYWQgb2Yg
Y29tbWEgc2VwYXJhdGVkCisgICAgICAgICogY3NzL0NTU1ZhbHVlTGlzdC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpDU1NWYWx1ZUxpc3Q6OnJlbW92ZSk6IFJlbW92ZXMgYSB2YWx1ZSBmcm9tIHRo
ZSBsaXN0CisgICAgICAgIChXZWJDb3JlOjpDU1NWYWx1ZUxpc3Q6Omhhc1ZhbHVlKTogVHJ1ZSBp
ZiB0aGUgc3BlY2lmaWVkIHZhbHVlIGV4aXN0cyBpbiB0aGUgbGlzdAorICAgICAgICAqIGNzcy9D
U1NWYWx1ZUxpc3QuaDoKKyAgICAgICAgKiBlZGl0aW5nL0VkaXRvckNvbW1hbmQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6YXBwbHlDb21tYW5kVG9GcmFtZSk6IEFwcGx5IHN0eWxlIHRvIGEgZnJh
bWUgdXNpbmcgc3BlY2lmaWVkIGNvbW1hbmQKKyAgICAgICAgKFdlYkNvcmU6OmV4ZWN1dGVBcHBs
eVN0eWxlKTogVXNlcyBhcHBseUNvbW1hbmRUb0ZyYW1lCisgICAgICAgIChXZWJDb3JlOjpleGVj
dXRlVG9nZ2xlU3R5bGUpOiBVc2VzIGFwcGx5Q29tbWFuZFRvRnJhbWUKKyAgICAgICAgKFdlYkNv
cmU6OmV4ZWN1dGVUb2dnbGVTdHlsZUluTGlzdCk6IFRvZ2dsZXMgYSBzdHlsZSBpbiBDU1NWYWx1
ZUxpc3QKKyAgICAgICAgKFdlYkNvcmU6OmV4ZWN1dGVTdHJpa2V0aHJvdWdoKTogVXNlcyBleGVj
dXRlVG9nZ2xlU3R5bGVJbkxpc3QKKyAgICAgICAgKFdlYkNvcmU6OmV4ZWN1dGVVbmRlcmxpbmUp
OiBVc2VzIGV4ZWN1dGVUb2dnbGVTdHlsZUluTGlzdAorCiAyMDA5LTA3LTIyICBBZGFtIExhbmds
ZXkgIDxhZ2xAZ29vZ2xlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBGaXNoZXIu
CkluZGV4OiBXZWJDb3JlL2Nzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYkNvcmUvY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHAJKHJl
dmlzaW9uIDQ2MTQxKQorKysgV2ViQ29yZS9jc3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9u
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTk3LDYgKzU5NywyMyBAQCBzdGF0aWMgUGFzc1JlZlB0
cjxDU1NQcmltaXRpdmVWYWx1ZT4gdmFsCiAgICAgcmV0dXJuIENTU1ByaW1pdGl2ZVZhbHVlOjpj
cmVhdGUoZmFtaWx5LnN0cmluZygpLCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1NUUklORyk7CiB9
CiAKK3N0YXRpYyBQYXNzUmVmUHRyPENTU1ZhbHVlPiByZW5kZXJUZXh0RGVjb3JhdGlvbkZsYWdz
VG9DU1NWYWx1ZShpbnQgdGV4dERlY29yYXRpb24pCit7CisgICAgUmVmUHRyPENTU1ZhbHVlTGlz
dD4gbGlzdCA9IENTU1ZhbHVlTGlzdDo6Y3JlYXRlU3BhY2VTZXBhcmF0ZWQoKTsKKyAgICBpZiAo
dGV4dERlY29yYXRpb24gJiBVTkRFUkxJTkUpCisgICAgICAgIGxpc3QtPmFwcGVuZChDU1NQcmlt
aXRpdmVWYWx1ZTo6Y3JlYXRlSWRlbnRpZmllcihDU1NWYWx1ZVVuZGVybGluZSkpOworICAgIGlm
ICh0ZXh0RGVjb3JhdGlvbiAmIE9WRVJMSU5FKQorICAgICAgICBsaXN0LT5hcHBlbmQoQ1NTUHJp
bWl0aXZlVmFsdWU6OmNyZWF0ZUlkZW50aWZpZXIoQ1NTVmFsdWVPdmVybGluZSkpOworICAgIGlm
ICh0ZXh0RGVjb3JhdGlvbiAmIExJTkVfVEhST1VHSCkKKyAgICAgICAgbGlzdC0+YXBwZW5kKENT
U1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGVJZGVudGlmaWVyKENTU1ZhbHVlTGluZVRocm91Z2gpKTsK
KyAgICBpZiAodGV4dERlY29yYXRpb24gJiBCTElOSykKKyAgICAgICAgbGlzdC0+YXBwZW5kKENT
U1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGVJZGVudGlmaWVyKENTU1ZhbHVlQmxpbmspKTsKKworICAg
IGlmICghbGlzdC0+bGVuZ3RoKCkpCisgICAgICAgIHJldHVybiBDU1NQcmltaXRpdmVWYWx1ZTo6
Y3JlYXRlSWRlbnRpZmllcihDU1NWYWx1ZU5vbmUpOworICAgIHJldHVybiBsaXN0OworfQorCiBQ
YXNzUmVmUHRyPENTU1ZhbHVlPiBDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb246OmdldFByb3Bl
cnR5Q1NTVmFsdWUoaW50IHByb3BlcnR5SUQsIEVVcGRhdGVMYXlvdXQgdXBkYXRlTGF5b3V0KSBj
b25zdAogewogICAgIE5vZGUqIG5vZGUgPSBtX25vZGUuZ2V0KCk7CkBAIC05OTksNTIgKzEwMTYs
MTAgQEAgUGFzc1JlZlB0cjxDU1NWYWx1ZT4gQ1NTQ29tcHV0ZWRTdHlsZURlYwogICAgICAgICAg
ICAgcmV0dXJuIENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUoc3R5bGUtPnRhYmxlTGF5b3V0KCkp
OwogICAgICAgICBjYXNlIENTU1Byb3BlcnR5VGV4dEFsaWduOgogICAgICAgICAgICAgcmV0dXJu
IENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUoc3R5bGUtPnRleHRBbGlnbigpKTsKLSAgICAgICAg
Y2FzZSBDU1NQcm9wZXJ0eVRleHREZWNvcmF0aW9uOiB7Ci0gICAgICAgICAgICBTdHJpbmcgc3Ry
aW5nOwotICAgICAgICAgICAgaWYgKHN0eWxlLT50ZXh0RGVjb3JhdGlvbigpICYgVU5ERVJMSU5F
KQotICAgICAgICAgICAgICAgIHN0cmluZyArPSAidW5kZXJsaW5lIjsKLSAgICAgICAgICAgIGlm
IChzdHlsZS0+dGV4dERlY29yYXRpb24oKSAmIE9WRVJMSU5FKSB7Ci0gICAgICAgICAgICAgICAg
aWYgKHN0cmluZy5sZW5ndGgoKSkKLSAgICAgICAgICAgICAgICAgICAgc3RyaW5nICs9ICIgIjsK
LSAgICAgICAgICAgICAgICBzdHJpbmcgKz0gIm92ZXJsaW5lIjsKLSAgICAgICAgICAgIH0KLSAg
ICAgICAgICAgIGlmIChzdHlsZS0+dGV4dERlY29yYXRpb24oKSAmIExJTkVfVEhST1VHSCkgewot
ICAgICAgICAgICAgICAgIGlmIChzdHJpbmcubGVuZ3RoKCkpCi0gICAgICAgICAgICAgICAgICAg
IHN0cmluZyArPSAiICI7Ci0gICAgICAgICAgICAgICAgc3RyaW5nICs9ICJsaW5lLXRocm91Z2gi
OwotICAgICAgICAgICAgfQotICAgICAgICAgICAgaWYgKHN0eWxlLT50ZXh0RGVjb3JhdGlvbigp
ICYgQkxJTkspIHsKLSAgICAgICAgICAgICAgICBpZiAoc3RyaW5nLmxlbmd0aCgpKQotICAgICAg
ICAgICAgICAgICAgICBzdHJpbmcgKz0gIiAiOwotICAgICAgICAgICAgICAgIHN0cmluZyArPSAi
YmxpbmsiOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgaWYgKCFzdHJpbmcubGVuZ3RoKCkp
Ci0gICAgICAgICAgICAgICAgcmV0dXJuIENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGVJZGVudGlm
aWVyKENTU1ZhbHVlTm9uZSk7Ci0gICAgICAgICAgICByZXR1cm4gQ1NTUHJpbWl0aXZlVmFsdWU6
OmNyZWF0ZShzdHJpbmcsIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfU1RSSU5HKTsKLSAgICAgICAg
fQotICAgICAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0VGV4dERlY29yYXRpb25zSW5FZmZlY3Q6
IHsKLSAgICAgICAgICAgIFN0cmluZyBzdHJpbmc7Ci0gICAgICAgICAgICBpZiAoc3R5bGUtPnRl
eHREZWNvcmF0aW9uc0luRWZmZWN0KCkgJiBVTkRFUkxJTkUpCi0gICAgICAgICAgICAgICAgc3Ry
aW5nICs9ICJ1bmRlcmxpbmUiOwotICAgICAgICAgICAgaWYgKHN0eWxlLT50ZXh0RGVjb3JhdGlv
bnNJbkVmZmVjdCgpICYgT1ZFUkxJTkUpIHsKLSAgICAgICAgICAgICAgICBpZiAoc3RyaW5nLmxl
bmd0aCgpKQotICAgICAgICAgICAgICAgICAgICBzdHJpbmcgKz0gIiAiOwotICAgICAgICAgICAg
ICAgIHN0cmluZyArPSAib3ZlcmxpbmUiOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgaWYg
KHN0eWxlLT50ZXh0RGVjb3JhdGlvbnNJbkVmZmVjdCgpICYgTElORV9USFJPVUdIKSB7Ci0gICAg
ICAgICAgICAgICAgaWYgKHN0cmluZy5sZW5ndGgoKSkKLSAgICAgICAgICAgICAgICAgICAgc3Ry
aW5nICs9ICIgIjsKLSAgICAgICAgICAgICAgICBzdHJpbmcgKz0gImxpbmUtdGhyb3VnaCI7Ci0g
ICAgICAgICAgICB9Ci0gICAgICAgICAgICBpZiAoc3R5bGUtPnRleHREZWNvcmF0aW9uc0luRWZm
ZWN0KCkgJiBCTElOSykgewotICAgICAgICAgICAgICAgIGlmIChzdHJpbmcubGVuZ3RoKCkpCi0g
ICAgICAgICAgICAgICAgICAgIHN0cmluZyArPSAiICI7Ci0gICAgICAgICAgICAgICAgc3RyaW5n
ICs9ICJibGluayI7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBpZiAoIXN0cmluZy5sZW5n
dGgoKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZUlk
ZW50aWZpZXIoQ1NTVmFsdWVOb25lKTsKLSAgICAgICAgICAgIHJldHVybiBDU1NQcmltaXRpdmVW
YWx1ZTo6Y3JlYXRlKHN0cmluZywgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19TVFJJTkcpOwotICAg
ICAgICB9CisgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlUZXh0RGVjb3JhdGlvbjoKKyAgICAgICAg
ICAgIHJldHVybiByZW5kZXJUZXh0RGVjb3JhdGlvbkZsYWdzVG9DU1NWYWx1ZShzdHlsZS0+dGV4
dERlY29yYXRpb24oKSk7CisgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRUZXh0RGVjb3Jh
dGlvbnNJbkVmZmVjdDoKKyAgICAgICAgICAgIHJldHVybiByZW5kZXJUZXh0RGVjb3JhdGlvbkZs
YWdzVG9DU1NWYWx1ZShzdHlsZS0+dGV4dERlY29yYXRpb25zSW5FZmZlY3QoKSk7CiAgICAgICAg
IGNhc2UgQ1NTUHJvcGVydHlXZWJraXRUZXh0RmlsbENvbG9yOgogICAgICAgICAgICAgcmV0dXJu
IGN1cnJlbnRDb2xvck9yVmFsaWRDb2xvcihzdHlsZS5nZXQoKSwgc3R5bGUtPnRleHRGaWxsQ29s
b3IoKSk7CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlUZXh0SW5kZW50OgpJbmRleDogV2ViQ29y
ZS9jc3MvQ1NTUGFyc2VyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2Nzcy9DU1NQYXJzZXIu
Y3BwCShyZXZpc2lvbiA0NjE0MSkKKysrIFdlYkNvcmUvY3NzL0NTU1BhcnNlci5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTEwNTIsNyArMTA1Miw3IEBAIGJvb2wgQ1NTUGFyc2VyOjpwYXJzZVZhbHVl
KGludCBwcm9wSWQsIGIKICAgICAgICAgaWYgKGlkID09IENTU1ZhbHVlTm9uZSkgewogICAgICAg
ICAgICAgdmFsaWRfcHJpbWl0aXZlID0gdHJ1ZTsKICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAg
ICAgIFJlZlB0cjxDU1NWYWx1ZUxpc3Q+IGxpc3QgPSBDU1NWYWx1ZUxpc3Q6OmNyZWF0ZUNvbW1h
U2VwYXJhdGVkKCk7CisgICAgICAgICAgICBSZWZQdHI8Q1NTVmFsdWVMaXN0PiBsaXN0ID0gQ1NT
VmFsdWVMaXN0OjpjcmVhdGVTcGFjZVNlcGFyYXRlZCgpOwogICAgICAgICAgICAgYm9vbCBpc192
YWxpZCA9IHRydWU7CiAgICAgICAgICAgICB3aGlsZSAoaXNfdmFsaWQgJiYgdmFsdWUpIHsKICAg
ICAgICAgICAgICAgICBzd2l0Y2ggKHZhbHVlLT5pZCkgewpJbmRleDogV2ViQ29yZS9jc3MvQ1NT
VmFsdWVMaXN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2Nzcy9DU1NWYWx1ZUxpc3QuY3Bw
CShyZXZpc2lvbiA0NjE0MSkKKysrIFdlYkNvcmUvY3NzL0NTU1ZhbHVlTGlzdC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTcwLDYgKzcwLDI1IEBAIHZvaWQgQ1NTVmFsdWVMaXN0OjpwcmVwZW5kKFBh
c3NSZWZQdHI8Q1MKICAgICBtX3ZhbHVlcy5wcmVwZW5kKHZhbCk7CiB9CiAKK3ZvaWQgQ1NTVmFs
dWVMaXN0OjpyZW1vdmUoQ1NTVmFsdWUqIHZhbCkKK3sKKyAgICAvLyBGSVhNRTogd2Ugc2hvdWxk
IGJlIGltcGxlbWVudGluZyBvcGVyYXRvcj09IHRvIENTU1ZhbHVlIGFuZCBpdHMgZGVyaXZlZCBj
bGFzc2VzCisgICAgLy8gdG8gbWFrZSBjb21wYXJpc29uIG1vcmUgZmxleGlibGUgYW5kIGZhc3Qu
CisgICAgZm9yIChzaXplX3QgaW5kZXggPSAwOyBpbmRleCA8IG1fdmFsdWVzLnNpemUoKTsgaW5k
ZXgrKykgeworICAgICAgICBpZiAobV92YWx1ZXMuYXQoaW5kZXgpLT5jc3NUZXh0KCkgPT0gdmFs
LT5jc3NUZXh0KCkpCisgICAgICAgICAgICBtX3ZhbHVlcy5yZW1vdmUoaW5kZXgpOworICAgIH0K
K30KKworYm9vbCBDU1NWYWx1ZUxpc3Q6Omhhc1ZhbHVlKENTU1ZhbHVlKiB2YWwpCit7CisgICAg
Zm9yIChzaXplX3QgaW5kZXggPSAwOyBpbmRleCA8IG1fdmFsdWVzLnNpemUoKTsgaW5kZXgrKykg
eworICAgICAgICBpZiAobV92YWx1ZXMuYXQoaW5kZXgpLT5jc3NUZXh0KCkgPT0gdmFsLT5jc3NU
ZXh0KCkpCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAgcmV0dXJuIGZhbHNl
OworfQorCiBTdHJpbmcgQ1NTVmFsdWVMaXN0Ojpjc3NUZXh0KCkgY29uc3QKIHsKICAgICBTdHJp
bmcgcmVzdWx0ID0gIiI7CkluZGV4OiBXZWJDb3JlL2Nzcy9DU1NWYWx1ZUxpc3QuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJDb3JlL2Nzcy9DU1NWYWx1ZUxpc3QuaAkocmV2aXNpb24gNDYxNDEpCisrKyBX
ZWJDb3JlL2Nzcy9DU1NWYWx1ZUxpc3QuaAkod29ya2luZyBjb3B5KQpAQCAtNTIsNiArNTIsOCBA
QCBwdWJsaWM6CiAKICAgICB2b2lkIGFwcGVuZChQYXNzUmVmUHRyPENTU1ZhbHVlPik7CiAgICAg
dm9pZCBwcmVwZW5kKFBhc3NSZWZQdHI8Q1NTVmFsdWU+KTsKKyAgICB2b2lkIHJlbW92ZShDU1NW
YWx1ZSopOworICAgIGJvb2wgaGFzVmFsdWUoQ1NTVmFsdWUqKTsKIAogICAgIHZpcnR1YWwgU3Ry
aW5nIGNzc1RleHQoKSBjb25zdDsKIApJbmRleDogV2ViQ29yZS9lZGl0aW5nL0VkaXRvckNvbW1h
bmQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvZWRpdGluZy9FZGl0b3JDb21tYW5kLmNwcAko
cmV2aXNpb24gNDYxNDEpCisrKyBXZWJDb3JlL2VkaXRpbmcvRWRpdG9yQ29tbWFuZC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTI3LDYgKzI3LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKIAogI2lu
Y2x1ZGUgIkF0b21pY1N0cmluZy5oIgorI2luY2x1ZGUgIkNTU0NvbXB1dGVkU3R5bGVEZWNsYXJh
dGlvbi5oIgogI2luY2x1ZGUgIkNTU011dGFibGVTdHlsZURlY2xhcmF0aW9uLmgiCiAjaW5jbHVk
ZSAiQ1NTUHJvcGVydHlOYW1lcy5oIgogI2luY2x1ZGUgIkNTU1ZhbHVlS2V5d29yZHMuaCIKQEAg
LTg5LDI0ICs5MCwyOSBAQCBzdGF0aWMgRnJhbWUqIHRhcmdldEZyYW1lKEZyYW1lKiBmcmFtZSwg
CiAgICAgcmV0dXJuIG5vZGUtPmRvY3VtZW50KCktPmZyYW1lKCk7CiB9CiAKLXN0YXRpYyBib29s
IGV4ZWN1dGVBcHBseVN0eWxlKEZyYW1lKiBmcmFtZSwgRWRpdG9yQ29tbWFuZFNvdXJjZSBzb3Vy
Y2UsIEVkaXRBY3Rpb24gYWN0aW9uLCBpbnQgcHJvcGVydHlJRCwgY29uc3QgU3RyaW5nJiBwcm9w
ZXJ0eVZhbHVlKQorc3RhdGljIGJvb2wgYXBwbHlDb21tYW5kVG9GcmFtZShGcmFtZSogZnJhbWUs
IEVkaXRvckNvbW1hbmRTb3VyY2Ugc291cmNlLCBFZGl0QWN0aW9uIGFjdGlvbiwgQ1NTTXV0YWJs
ZVN0eWxlRGVjbGFyYXRpb24qIHN0eWxlKQogewotICAgIFJlZlB0cjxDU1NNdXRhYmxlU3R5bGVE
ZWNsYXJhdGlvbj4gc3R5bGUgPSBDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbjo6Y3JlYXRlKCk7
Ci0gICAgc3R5bGUtPnNldFByb3BlcnR5KHByb3BlcnR5SUQsIHByb3BlcnR5VmFsdWUpOwogICAg
IC8vIEZJWE1FOiBXZSBkb24ndCBjYWxsIHNob3VsZEFwcGx5U3R5bGUgd2hlbiB0aGUgc291cmNl
IGlzIERPTTsgaXMgdGhlcmUgYSBnb29kIHJlYXNvbiBmb3IgdGhhdD8KICAgICBzd2l0Y2ggKHNv
dXJjZSkgewogICAgICAgICBjYXNlIENvbW1hbmRGcm9tTWVudU9yS2V5QmluZGluZzoKLSAgICAg
ICAgICAgIGZyYW1lLT5lZGl0b3IoKS0+YXBwbHlTdHlsZVRvU2VsZWN0aW9uKHN0eWxlLmdldCgp
LCBhY3Rpb24pOworICAgICAgICAgICAgZnJhbWUtPmVkaXRvcigpLT5hcHBseVN0eWxlVG9TZWxl
Y3Rpb24oc3R5bGUsIGFjdGlvbik7CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAg
Y2FzZSBDb21tYW5kRnJvbURPTToKICAgICAgICAgY2FzZSBDb21tYW5kRnJvbURPTVdpdGhVc2Vy
SW50ZXJmYWNlOgotICAgICAgICAgICAgZnJhbWUtPmVkaXRvcigpLT5hcHBseVN0eWxlKHN0eWxl
LmdldCgpKTsKKyAgICAgICAgICAgIGZyYW1lLT5lZGl0b3IoKS0+YXBwbHlTdHlsZShzdHlsZSk7
CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAgICAgQVNTRVJUX05PVF9SRUFDSEVE
KCk7CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCitzdGF0aWMgYm9vbCBleGVjdXRlQXBwbHlTdHls
ZShGcmFtZSogZnJhbWUsIEVkaXRvckNvbW1hbmRTb3VyY2Ugc291cmNlLCBFZGl0QWN0aW9uIGFj
dGlvbiwgaW50IHByb3BlcnR5SUQsIGNvbnN0IFN0cmluZyYgcHJvcGVydHlWYWx1ZSkKK3sKKyAg
ICBSZWZQdHI8Q1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb24+IHN0eWxlID0gQ1NTTXV0YWJsZVN0
eWxlRGVjbGFyYXRpb246OmNyZWF0ZSgpOworICAgIHN0eWxlLT5zZXRQcm9wZXJ0eShwcm9wZXJ0
eUlELCBwcm9wZXJ0eVZhbHVlKTsKKyAgICByZXR1cm4gYXBwbHlDb21tYW5kVG9GcmFtZShmcmFt
ZSwgc291cmNlLCBhY3Rpb24sIHN0eWxlLmdldCgpKTsKK30KKwogc3RhdGljIGJvb2wgZXhlY3V0
ZUFwcGx5U3R5bGUoRnJhbWUqIGZyYW1lLCBFZGl0b3JDb21tYW5kU291cmNlIHNvdXJjZSwgRWRp
dEFjdGlvbiBhY3Rpb24sIGludCBwcm9wZXJ0eUlELCBjb25zdCBjaGFyKiBwcm9wZXJ0eVZhbHVl
KQogewogICAgIHJldHVybiBleGVjdXRlQXBwbHlTdHlsZShmcmFtZSwgc291cmNlLCBhY3Rpb24s
IHByb3BlcnR5SUQsIFN0cmluZyhwcm9wZXJ0eVZhbHVlKSk7CkBAIC0xMTYsMzcgKzEyMiw0NCBA
QCBzdGF0aWMgYm9vbCBleGVjdXRlQXBwbHlTdHlsZShGcmFtZSogZnJhCiB7CiAgICAgUmVmUHRy
PENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uPiBzdHlsZSA9IENTU011dGFibGVTdHlsZURlY2xh
cmF0aW9uOjpjcmVhdGUoKTsKICAgICBzdHlsZS0+c2V0UHJvcGVydHkocHJvcGVydHlJRCwgcHJv
cGVydHlWYWx1ZSk7Ci0gICAgLy8gRklYTUU6IFdlIGRvbid0IGNhbGwgc2hvdWxkQXBwbHlTdHls
ZSB3aGVuIHRoZSBzb3VyY2UgaXMgRE9NOyBpcyB0aGVyZSBhIGdvb2QgcmVhc29uIGZvciB0aGF0
PwotICAgIHN3aXRjaCAoc291cmNlKSB7Ci0gICAgICAgIGNhc2UgQ29tbWFuZEZyb21NZW51T3JL
ZXlCaW5kaW5nOgotICAgICAgICAgICAgZnJhbWUtPmVkaXRvcigpLT5hcHBseVN0eWxlVG9TZWxl
Y3Rpb24oc3R5bGUuZ2V0KCksIGFjdGlvbik7Ci0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAg
ICAgICAgY2FzZSBDb21tYW5kRnJvbURPTToKLSAgICAgICAgY2FzZSBDb21tYW5kRnJvbURPTVdp
dGhVc2VySW50ZXJmYWNlOgotICAgICAgICAgICAgZnJhbWUtPmVkaXRvcigpLT5hcHBseVN0eWxl
KHN0eWxlLmdldCgpKTsKLSAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgIH0KLSAgICBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1cm4gZmFsc2U7CisgICAgcmV0dXJuIGFwcGx5Q29t
bWFuZFRvRnJhbWUoZnJhbWUsIHNvdXJjZSwgYWN0aW9uLCBzdHlsZS5nZXQoKSk7CiB9CiAKK3N0
YXRpYyBib29sIGV4ZWN1dGVUb2dnbGVTdHlsZUluTGlzdChGcmFtZSogZnJhbWUsIEVkaXRvckNv
bW1hbmRTb3VyY2Ugc291cmNlLCBFZGl0QWN0aW9uIGFjdGlvbiwgaW50IHByb3BlcnR5SUQsIENT
U1ZhbHVlKiB2YWx1ZSkKK3sKKyAgICBOb2RlKiBub2RlVG9SZW1vdmU9MDsKKyAgICBSZWZQdHI8
Q1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uPiBzZWxlY3Rpb25TdHlsZSA9IGZyYW1lLT5zZWxl
Y3Rpb25Db21wdXRlZFN0eWxlKG5vZGVUb1JlbW92ZSk7CisgICAgUmVmUHRyPENTU1ZhbHVlPiBz
ZWxlY3RlZENTU1ZhbHVlID0gc2VsZWN0aW9uU3R5bGUtPmdldFByb3BlcnR5Q1NTVmFsdWUocHJv
cGVydHlJRCk7CisgICAgUmVmUHRyPENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uPiBuZXdTdHls
ZSA9IENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uOjpjcmVhdGUoKTsKKyAgICBuZXdTdHlsZS0+
c2V0UHJvcGVydHkocHJvcGVydHlJRCwgIm5vbmUiKTsKKyAgICBFeGNlcHRpb25Db2RlIGVjID0g
MDsKKyAgICBpZiAoc2VsZWN0ZWRDU1NWYWx1ZS0+Y3NzVmFsdWVUeXBlKCkgPT0gQ1NTVmFsdWU6
OkNTU19WQUxVRV9MSVNUKSB7CisgICAgICAgIFJlZlB0cjxDU1NWYWx1ZUxpc3Q+IHNlbGVjdGVk
Q1NTVmFsdWVMaXN0ID0gc3RhdGljX2Nhc3Q8Q1NTVmFsdWVMaXN0Kj4oc2VsZWN0ZWRDU1NWYWx1
ZS5nZXQoKSk7CisKKyAgICAgICAgaWYgKHNlbGVjdGVkQ1NTVmFsdWVMaXN0LT5oYXNWYWx1ZSh2
YWx1ZSkpCisgICAgICAgICAgICBzZWxlY3RlZENTU1ZhbHVlTGlzdC0+cmVtb3ZlKHZhbHVlKTsK
KyAgICAgICAgZWxzZQorICAgICAgICAgICAgc2VsZWN0ZWRDU1NWYWx1ZUxpc3QtPmFwcGVuZCh2
YWx1ZSk7CisKKyAgICAgICAgLy8gRklYTUU6IFdlIHNob3VsZG4ndCBiZSBuZWVkaW5nIHRvIGNv
bnZlcnQgaXQgaW50byB0ZXh0LiAgV2Ugc2hvdWxkIGhhdmUgc2V0UHJvcGVydHlDU1NWYWx1ZS4K
KyAgICAgICAgaWYgKHNlbGVjdGVkQ1NTVmFsdWVMaXN0LT5sZW5ndGgoKSkKKyAgICAgICAgICAg
IG5ld1N0eWxlLT5zZXRQcm9wZXJ0eShwcm9wZXJ0eUlELCBzZWxlY3RlZENTU1ZhbHVlTGlzdC0+
Y3NzVGV4dCgpLGVjKTsKKyAgICB9IGVsc2UgaWYgKHNlbGVjdGVkQ1NTVmFsdWUtPmNzc1RleHQo
KSA9PSAibm9uZSIpCisgICAgICAgIG5ld1N0eWxlLT5zZXRQcm9wZXJ0eShwcm9wZXJ0eUlELCB2
YWx1ZS0+Y3NzVGV4dCgpLGVjKTsKKworICAgIGlmIChub2RlVG9SZW1vdmUpIHsKKyAgICAgICAg
bm9kZVRvUmVtb3ZlLT5yZW1vdmUoZWMpOworICAgICAgICBBU1NFUlQoZWMgPT0gMCk7CisgICAg
fQorICAgIHJldHVybiBhcHBseUNvbW1hbmRUb0ZyYW1lKGZyYW1lLCBzb3VyY2UsIGFjdGlvbiwg
bmV3U3R5bGUuZ2V0KCkpOworfQorICAgIAogc3RhdGljIGJvb2wgZXhlY3V0ZVRvZ2dsZVN0eWxl
KEZyYW1lKiBmcmFtZSwgRWRpdG9yQ29tbWFuZFNvdXJjZSBzb3VyY2UsIEVkaXRBY3Rpb24gYWN0
aW9uLCBpbnQgcHJvcGVydHlJRCwgY29uc3QgY2hhciogb2ZmVmFsdWUsIGNvbnN0IGNoYXIqIG9u
VmFsdWUpCiB7CiAgICAgUmVmUHRyPENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uPiBzdHlsZSA9
IENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uOjpjcmVhdGUoKTsKICAgICBzdHlsZS0+c2V0UHJv
cGVydHkocHJvcGVydHlJRCwgb25WYWx1ZSk7CiAgICAgc3R5bGUtPnNldFByb3BlcnR5KHByb3Bl
cnR5SUQsIGZyYW1lLT5lZGl0b3IoKS0+c2VsZWN0aW9uU3RhcnRIYXNTdHlsZShzdHlsZS5nZXQo
KSkgPyBvZmZWYWx1ZSA6IG9uVmFsdWUpOwotICAgIC8vIEZJWE1FOiBXZSBkb24ndCBjYWxsIHNo
b3VsZEFwcGx5U3R5bGUgd2hlbiB0aGUgc291cmNlIGlzIERPTTsgaXMgdGhlcmUgYSBnb29kIHJl
YXNvbiBmb3IgdGhhdD8KLSAgICBzd2l0Y2ggKHNvdXJjZSkgewotICAgICAgICBjYXNlIENvbW1h
bmRGcm9tTWVudU9yS2V5QmluZGluZzoKLSAgICAgICAgICAgIGZyYW1lLT5lZGl0b3IoKS0+YXBw
bHlTdHlsZVRvU2VsZWN0aW9uKHN0eWxlLmdldCgpLCBhY3Rpb24pOwotICAgICAgICAgICAgcmV0
dXJuIHRydWU7Ci0gICAgICAgIGNhc2UgQ29tbWFuZEZyb21ET006Ci0gICAgICAgIGNhc2UgQ29t
bWFuZEZyb21ET01XaXRoVXNlckludGVyZmFjZToKLSAgICAgICAgICAgIGZyYW1lLT5lZGl0b3Io
KS0+YXBwbHlTdHlsZShzdHlsZS5nZXQoKSk7Ci0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAg
ICB9Ci0gICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgcmV0dXJuIGZhbHNlOworICAgIHJl
dHVybiBhcHBseUNvbW1hbmRUb0ZyYW1lKGZyYW1lLCBzb3VyY2UsIGFjdGlvbiwgc3R5bGUuZ2V0
KCkpOwogfQogCiBzdGF0aWMgYm9vbCBleGVjdXRlQXBwbHlQYXJhZ3JhcGhTdHlsZShGcmFtZSog
ZnJhbWUsIEVkaXRvckNvbW1hbmRTb3VyY2Ugc291cmNlLCBFZGl0QWN0aW9uIGFjdGlvbiwgaW50
IHByb3BlcnR5SUQsIGNvbnN0IFN0cmluZyYgcHJvcGVydHlWYWx1ZSkKQEAgLTkzNyw3ICs5NTAs
OCBAQCBzdGF0aWMgYm9vbCBleGVjdXRlU2V0TWFyayhGcmFtZSogZnJhbWUsCiAKIHN0YXRpYyBi
b29sIGV4ZWN1dGVTdHJpa2V0aHJvdWdoKEZyYW1lKiBmcmFtZSwgRXZlbnQqLCBFZGl0b3JDb21t
YW5kU291cmNlIHNvdXJjZSwgY29uc3QgU3RyaW5nJikKIHsKLSAgICByZXR1cm4gZXhlY3V0ZVRv
Z2dsZVN0eWxlKGZyYW1lLCBzb3VyY2UsIEVkaXRBY3Rpb25DaGFuZ2VBdHRyaWJ1dGVzLCBDU1NQ
cm9wZXJ0eVdlYmtpdFRleHREZWNvcmF0aW9uc0luRWZmZWN0LCAibm9uZSIsICJsaW5lLXRocm91
Z2giKTsKKyAgICBSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IGxpbmVUaHJvdWdoID0gQ1NTUHJp
bWl0aXZlVmFsdWU6OmNyZWF0ZUlkZW50aWZpZXIoQ1NTVmFsdWVMaW5lVGhyb3VnaCk7CisgICAg
cmV0dXJuIGV4ZWN1dGVUb2dnbGVTdHlsZUluTGlzdChmcmFtZSwgc291cmNlLCBFZGl0QWN0aW9u
VW5kZXJsaW5lLCBDU1NQcm9wZXJ0eVdlYmtpdFRleHREZWNvcmF0aW9uc0luRWZmZWN0LCBsaW5l
VGhyb3VnaC5nZXQoKSk7CiB9CiAKIHN0YXRpYyBib29sIGV4ZWN1dGVTdHlsZVdpdGhDU1MoRnJh
bWUqIGZyYW1lLCBFdmVudCosIEVkaXRvckNvbW1hbmRTb3VyY2UsIGNvbnN0IFN0cmluZyYgdmFs
dWUpCkBAIC05OTAsOCArMTAwNCw4IEBAIHN0YXRpYyBib29sIGV4ZWN1dGVUcmFuc3Bvc2UoRnJh
bWUqIGZyYW0KIAogc3RhdGljIGJvb2wgZXhlY3V0ZVVuZGVybGluZShGcmFtZSogZnJhbWUsIEV2
ZW50KiwgRWRpdG9yQ29tbWFuZFNvdXJjZSBzb3VyY2UsIGNvbnN0IFN0cmluZyYpCiB7Ci0gICAg
Ly8gRklYTUU6IFRoaXMgY3VycmVudGx5IGNsZWFycyBvdmVybGluZSwgbGluZS10aHJvdWdoLCBh
bmQgYmxpbmsgYXMgYW4gdW53YW50ZWQgc2lkZSBlZmZlY3QuCi0gICAgcmV0dXJuIGV4ZWN1dGVU
b2dnbGVTdHlsZShmcmFtZSwgc291cmNlLCBFZGl0QWN0aW9uVW5kZXJsaW5lLCBDU1NQcm9wZXJ0
eVdlYmtpdFRleHREZWNvcmF0aW9uc0luRWZmZWN0LCAibm9uZSIsICJ1bmRlcmxpbmUiKTsKKyAg
ICBSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IHVuZGVybGluZSA9IENTU1ByaW1pdGl2ZVZhbHVl
OjpjcmVhdGVJZGVudGlmaWVyKENTU1ZhbHVlVW5kZXJsaW5lKTsKKyAgICByZXR1cm4gZXhlY3V0
ZVRvZ2dsZVN0eWxlSW5MaXN0KGZyYW1lLCBzb3VyY2UsIEVkaXRBY3Rpb25VbmRlcmxpbmUsIENT
U1Byb3BlcnR5V2Via2l0VGV4dERlY29yYXRpb25zSW5FZmZlY3QsIHVuZGVybGluZS5nZXQoKSk7
CiB9CiAKIHN0YXRpYyBib29sIGV4ZWN1dGVVbmRvKEZyYW1lKiBmcmFtZSwgRXZlbnQqLCBFZGl0
b3JDb21tYW5kU291cmNlLCBjb25zdCBTdHJpbmcmKQpJbmRleDogTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24gNDYyMjcp
CisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxOSBA
QAorMjAwOS0wNy0yMiAgUnlvc3VrZSBOaXdhICA8cm5pd2FAd2Via2l0Lm9yZz4KKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBleGVjQ29tbWFuZCgndW5k
ZXJsaW5lJyAvICdzdHJpa2VUaHJvdWdoJykgZG9lc24ndCB3b3JrIHByb3Blcmx5IHdpdGggbXVs
dGlwbGUgc3R5bGVzIGluIHRleHQtZGVjb3JhdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Mjc0NzYKKworICAgICAgICBDaGVja3Mgd2hldGhlciB3
ZSBjYW4gdG9nZ2xlIHRleHQgZGVjb3JhdGlvbnMgd2l0aCBtdWx0aXBsZSBzdHlsZXMgcHJvcGVy
bHkuCisgICAgICAgIGUuZy4gZXhlY0NvbW1hbmQoInVuZGVybGluZSIpIHNob3VsZCBtb2RpZnkg
InRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lIG92ZXJsaW5lIiB0byAidGV4dC1kZWNvcmF0aW9u
OiBvdmVybGluZSIKKworICAgICAgICAqIGVkaXRpbmcvZXhlY0NvbW1hbmQvcmVzb3VyY2VzL3Rv
Z2dsZS10ZXh0LWRlY29yYXRpb25zLmpzOiBBZGRlZC4KKyAgICAgICAgKHRlc3RTaW5nbGVUb2dn
bGUpOgorICAgICAgICAodGVzdERvdWJsZVRvZ2dsZSk6CisgICAgICAgICogZWRpdGluZy9leGVj
Q29tbWFuZC90b2dnbGUtdGV4dC1kZWNvcmF0aW9ucy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAg
ICAgICAqIGVkaXRpbmcvZXhlY0NvbW1hbmQvdG9nZ2xlLXRleHQtZGVjb3JhdGlvbnMuaHRtbDog
QWRkZWQuCisKIDIwMDktMDctMjEgIFNhbSBXZWluaWcgIDxzYW1Ad2Via2l0Lm9yZz4KIAogICAg
ICAgICBSZXZpZXdlZCBieSBEYW4gQmVybnN0ZWluLgpJbmRleDogTGF5b3V0VGVzdHMvZWRpdGlu
Zy9leGVjQ29tbWFuZC90b2dnbGUtdGV4dC1kZWNvcmF0aW9ucy1leHBlY3RlZC50eHQKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gTGF5b3V0VGVzdHMvZWRpdGluZy9leGVjQ29tbWFuZC90b2dnbGUtdGV4dC1kZWNv
cmF0aW9ucy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9lZGl0aW5n
L2V4ZWNDb21tYW5kL3RvZ2dsZS10ZXh0LWRlY29yYXRpb25zLWV4cGVjdGVkLnR4dAkocmV2aXNp
b24gMCkKQEAgLTAsMCArMSwxNSBAQAorVGVzdCB0byBtYWtlIHN1cmUgd2UgY2FuIHRvZ2dsZSB0
ZXh0IGRlY29yYXRpb25zIGNvcnJlY3RseS4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEg
c2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgor
CisKK1BBU1Mgb25lIHVuZGVybGluZSBjb21tYW5kIGNvbnZlcnRlZCB0ZXN0IHRvIDxzcGFuIGNs
YXNzPSJBcHBsZS1zdHlsZS1zcGFuIiBzdHlsZT0idGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7
Ij50ZXN0PC9zcGFuPgorUEFTUyBvbmUgdW5kZXJsaW5lIGNvbW1hbmQgY29udmVydGVkIDxzcGFu
IGNsYXNzPSJBcHBsZS1zdHlsZS1zcGFuIiBzdHlsZT0idGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxp
bmU7Ij50ZXN0PC9zcGFuPiB0byB0ZXN0CitQQVNTIG9uZSB1bmRlcmxpbmUgY29tbWFuZCBjb252
ZXJ0ZWQgPHNwYW4gY2xhc3M9IkFwcGxlLXN0eWxlLXNwYW4iIHN0eWxlPSJ0ZXh0LWRlY29yYXRp
b246IHVuZGVybGluZSBsaW5lLXRocm91Z2ggb3ZlcmxpbmU7Ij50ZXN0PC9zcGFuPiB0byA8c3Bh
biBjbGFzcz0iQXBwbGUtc3R5bGUtc3BhbiIgc3R5bGU9InRleHQtZGVjb3JhdGlvbjogb3Zlcmxp
bmUgbGluZS10aHJvdWdoOyI+dGVzdDwvc3Bhbj4KK1BBU1Mgb25lIHN0cmlrZXRocm91Z2ggY29t
bWFuZCBjb252ZXJ0ZWQgdGVzdCB0byA8c3BhbiBjbGFzcz0iQXBwbGUtc3R5bGUtc3BhbiIgc3R5
bGU9InRleHQtZGVjb3JhdGlvbjogbGluZS10aHJvdWdoOyI+dGVzdDwvc3Bhbj4KK1BBU1Mgb25l
IHN0cmlrZXRocm91Z2ggY29tbWFuZCBjb252ZXJ0ZWQgPHNwYW4gY2xhc3M9IkFwcGxlLXN0eWxl
LXNwYW4iIHN0eWxlPSJ0ZXh0LWRlY29yYXRpb246IGxpbmUtdGhyb3VnaDsiPnRlc3Q8L3NwYW4+
IHRvIHRlc3QKK1BBU1Mgb25lIHN0cmlrZXRocm91Z2ggY29tbWFuZCBjb252ZXJ0ZWQgPHNwYW4g
Y2xhc3M9IkFwcGxlLXN0eWxlLXNwYW4iIHN0eWxlPSJ0ZXh0LWRlY29yYXRpb246IHVuZGVybGlu
ZSBsaW5lLXRocm91Z2ggb3ZlcmxpbmU7Ij50ZXN0PC9zcGFuPiB0byA8c3BhbiBjbGFzcz0iQXBw
bGUtc3R5bGUtc3BhbiIgc3R5bGU9InRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lIG92ZXJsaW5l
OyI+dGVzdDwvc3Bhbj4KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBD
T01QTEVURQorCkluZGV4OiBMYXlvdXRUZXN0cy9lZGl0aW5nL2V4ZWNDb21tYW5kL3RvZ2dsZS10
ZXh0LWRlY29yYXRpb25zLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZWRpdGluZy9l
eGVjQ29tbWFuZC90b2dnbGUtdGV4dC1kZWNvcmF0aW9ucy5odG1sCShyZXZpc2lvbiAwKQorKysg
TGF5b3V0VGVzdHMvZWRpdGluZy9leGVjQ29tbWFuZC90b2dnbGUtdGV4dC1kZWNvcmF0aW9ucy5o
dG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDEzIEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMg
Ii0vL0lFVEYvL0RURCBIVE1MLy9FTiI+Cis8aHRtbD4KKzxoZWFkPgorPGxpbmsgcmVsPSJzdHls
ZXNoZWV0IiBocmVmPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyI+
Cis8c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwv
c2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8cCBpZD0iZGVzY3JpcHRpb24iPjwvcD4KKzxkaXYg
aWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy90b2dnbGUtdGV4dC1k
ZWNvcmF0aW9ucy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNv
dXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6
IExheW91dFRlc3RzL2VkaXRpbmcvZXhlY0NvbW1hbmQvcmVzb3VyY2VzL3RvZ2dsZS10ZXh0LWRl
Y29yYXRpb25zLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2VkaXRpbmcvZXhlY0NvbW1h
bmQvcmVzb3VyY2VzL3RvZ2dsZS10ZXh0LWRlY29yYXRpb25zLmpzCShyZXZpc2lvbiAwKQorKysg
TGF5b3V0VGVzdHMvZWRpdGluZy9leGVjQ29tbWFuZC9yZXNvdXJjZXMvdG9nZ2xlLXRleHQtZGVj
b3JhdGlvbnMuanMJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNDEgQEAKK2Rlc2NyaXB0aW9uKCJU
ZXN0IHRvIG1ha2Ugc3VyZSB3ZSBjYW4gdG9nZ2xlIHRleHQgZGVjb3JhdGlvbnMgY29ycmVjdGx5
LiIpCisKK3ZhciB0ZXN0Q29udGFpbmVyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7
Cit0ZXN0Q29udGFpbmVyLmNvbnRlbnRFZGl0YWJsZSA9IHRydWU7Citkb2N1bWVudC5ib2R5LmFw
cGVuZENoaWxkKHRlc3RDb250YWluZXIpOworCitmdW5jdGlvbiB0ZXN0U2luZ2xlVG9nZ2xlKHRv
Z2dsZUNvbW1hbmQsIGluaXRpYWxDb250ZW50cywgZXhwZWN0ZWRDb250ZW50cykKK3sKKyAgICB0
ZXN0Q29udGFpbmVyLmlubmVySFRNTCA9IGluaXRpYWxDb250ZW50czsKKyAgICB3aW5kb3cuZ2V0
U2VsZWN0aW9uKCkuc2VsZWN0QWxsQ2hpbGRyZW4odGVzdENvbnRhaW5lcik7CisgICAgZG9jdW1l
bnQuZXhlY0NvbW1hbmQodG9nZ2xlQ29tbWFuZCwgZmFsc2UsIG51bGwpOworICAgIGlmICh0ZXN0
Q29udGFpbmVyLmlubmVySFRNTCA9PT0gZXhwZWN0ZWRDb250ZW50cykgeworICAgICAgICB0ZXN0
UGFzc2VkKCJvbmUgIiArIHRvZ2dsZUNvbW1hbmQgKyAiIGNvbW1hbmQgY29udmVydGVkICIgKyBp
bml0aWFsQ29udGVudHMgKyAiIHRvICIgKyBleHBlY3RlZENvbnRlbnRzKTsKKyAgICB9IGVsc2Ug
eworICAgICAgICB0ZXN0RmFpbGVkKCJvbmUgIiArIHRvZ2dsZUNvbW1hbmQgKyAiIGNvbW1hbmQg
Y29udmVydGVkICIgKyBpbml0aWFsQ29udGVudHMgKyAiIHRvICIgKyB0ZXN0Q29udGFpbmVyLmlu
bmVySFRNTCArICIsIGV4cGVjdGVkICIgKyBleHBlY3RlZENvbnRlbnRzKTsKKyAgICB9Cit9CisK
K2Z1bmN0aW9uIHRlc3REb3VibGVUb2dnbGUodG9nZ2xlQ29tbWFuZCwgaW5pdGlhbENvbnRlbnRz
LCBleHBlY3RlZENvbnRlbnRzKQoreworICAgIHRlc3RDb250YWluZXIuaW5uZXJIVE1MID0gaW5p
dGlhbENvbnRlbnRzOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5zZWxlY3RBbGxDaGlsZHJl
bih0ZXN0Q29udGFpbmVyKTsKKyAgICBkb2N1bWVudC5leGVjQ29tbWFuZCh0b2dnbGVDb21tYW5k
LCBmYWxzZSwgbnVsbCk7CisgICAgZG9jdW1lbnQuZXhlY0NvbW1hbmQodG9nZ2xlQ29tbWFuZCwg
ZmFsc2UsIG51bGwpOworICAgIGlmICh0ZXN0Q29udGFpbmVyLmlubmVySFRNTCA9PT0gZXhwZWN0
ZWRDb250ZW50cykgeworICAgICAgICB0ZXN0UGFzc2VkKCJ0d28gIiArIHRvZ2dsZUNvbW1hbmQg
KyAiIGNvbW1hbmRzIGNvbnZlcnRlZCAiICsgaW5pdGlhbENvbnRlbnRzICsgIiB0byAiICsgZXhw
ZWN0ZWRDb250ZW50cyk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgdGVzdEZhaWxlZCgidHdvICIg
KyB0b2dnbGVDb21tYW5kICsgIiBjb21tYW5kcyBjb252ZXJ0ZWQgIiArIGluaXRpYWxDb250ZW50
cyArICIgdG8gIiArIHRlc3RDb250YWluZXIuaW5uZXJIVE1MICsgIiwgZXhwZWN0ZWQgIiArIGV4
cGVjdGVkQ29udGVudHMpOworICAgIH0KK30KKwordGVzdFNpbmdsZVRvZ2dsZSgidW5kZXJsaW5l
IiwgInRlc3QiLCAiPHNwYW4gY2xhc3M9XCJBcHBsZS1zdHlsZS1zcGFuXCIgc3R5bGU9XCJ0ZXh0
LWRlY29yYXRpb246IHVuZGVybGluZTtcIj50ZXN0PC9zcGFuPiIpOwordGVzdFNpbmdsZVRvZ2ds
ZSgidW5kZXJsaW5lIiwgIjxzcGFuIGNsYXNzPVwiQXBwbGUtc3R5bGUtc3BhblwiIHN0eWxlPVwi
dGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7XCI+dGVzdDwvc3Bhbj4iLCAidGVzdCIpOwordGVz
dFNpbmdsZVRvZ2dsZSgidW5kZXJsaW5lIiwgIjxzcGFuIGNsYXNzPVwiQXBwbGUtc3R5bGUtc3Bh
blwiIHN0eWxlPVwidGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmUgbGluZS10aHJvdWdoIG92ZXJs
aW5lO1wiPnRlc3Q8L3NwYW4+IiwgIjxzcGFuIGNsYXNzPVwiQXBwbGUtc3R5bGUtc3BhblwiIHN0
eWxlPVwidGV4dC1kZWNvcmF0aW9uOiBvdmVybGluZSBsaW5lLXRocm91Z2g7XCI+dGVzdDwvc3Bh
bj4iKTsKK3Rlc3RTaW5nbGVUb2dnbGUoInN0cmlrZXRocm91Z2giLCAidGVzdCIsICI8c3BhbiBj
bGFzcz1cIkFwcGxlLXN0eWxlLXNwYW5cIiBzdHlsZT1cInRleHQtZGVjb3JhdGlvbjogbGluZS10
aHJvdWdoO1wiPnRlc3Q8L3NwYW4+Iik7Cit0ZXN0U2luZ2xlVG9nZ2xlKCJzdHJpa2V0aHJvdWdo
IiwgIjxzcGFuIGNsYXNzPVwiQXBwbGUtc3R5bGUtc3BhblwiIHN0eWxlPVwidGV4dC1kZWNvcmF0
aW9uOiBsaW5lLXRocm91Z2g7XCI+dGVzdDwvc3Bhbj4iLCAidGVzdCIpOwordGVzdFNpbmdsZVRv
Z2dsZSgic3RyaWtldGhyb3VnaCIsICI8c3BhbiBjbGFzcz1cIkFwcGxlLXN0eWxlLXNwYW5cIiBz
dHlsZT1cInRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lIGxpbmUtdGhyb3VnaCBvdmVybGluZTtc
Ij50ZXN0PC9zcGFuPiIsICI8c3BhbiBjbGFzcz1cIkFwcGxlLXN0eWxlLXNwYW5cIiBzdHlsZT1c
InRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lIG92ZXJsaW5lO1wiPnRlc3Q8L3NwYW4+Iik7CisK
K2RvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQodGVzdENvbnRhaW5lcik7CisKK3ZhciBzdWNjZXNz
ZnVsbHlQYXJzZWQgPSB0cnVlOwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUK
</data>
<flag name="review"
          id="17583"
          type_id="1"
          status="-"
          setter="eric"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>33304</attachid>
            <date>2009-07-22 15:56:51 -0700</date>
            <delta_ts>2009-07-22 18:12:53 -0700</delta_ts>
            <desc>2nd submission, no longer adds hasValue to CSSValueList</desc>
            <filename>fix27476b</filename>
            <type>text/plain</type>
            <size>22398</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA0NjI0OCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjkgQEAKKzIwMDktMDctMjIgIFJ5b3N1a2UgTml3YSAgPHJuaXdhQHdlYmtpdC5v
cmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgZXhl
Y0NvbW1hbmQoJ3VuZGVybGluZScgLyAnc3RyaWtlVGhyb3VnaCcpIGRvZXNuJ3Qgd29yayBwcm9w
ZXJseSB3aXRoIG11bHRpcGxlIHN0eWxlcyBpbiB0ZXh0LWRlY29yYXRpb24KKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI3NDc2CisKKyAgICAgICAgVGVz
dHM6IGVkaXRpbmcvZXhlY0NvbW1hbmQvdG9nZ2xlLXRleHQtZGVjb3JhdGlvbnMuaHRtbAorICAg
ICAgICAgICAgICAgZmFzdC9jc3MvZ2V0Q29tcHV0ZWRTdHlsZS9nZXRDb21wdXRlZFN0eWxlLXRl
eHQtZGVjb3JhdGlvbi5odG1sCisKKyAgICAgICAgKiBjc3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xh
cmF0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnJlbmRlclRleHREZWNvcmF0aW9uRmxhZ3NU
b0NTU1ZhbHVlKTogQ3JlYXRlcyBhIENTU1ZhbHVlTGlzdAorICAgICAgICAoV2ViQ29yZTo6Q1NT
Q29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uOjpnZXRQcm9wZXJ0eUNTU1ZhbHVlKTogUmV0dXJucyBh
IENTU1ZhbHVlTGlzdCBpbnN0ZWFkIG9mIENTU1ZhbHVlCisgICAgICAgICogY3NzL0NTU1BhcnNl
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXI6OnBhcnNlVmFsdWUpOiBUZXh0IGRl
Y29yYXRpb25zIGFyZSBzcGFjZSBzZXBhcmF0ZWQgaW5zdGVhZCBvZiBjb21tYSBzZXBhcmF0ZWQK
KyAgICAgICAgKiBjc3MvQ1NTVmFsdWVMaXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU1Zh
bHVlTGlzdDo6cmVtb3ZlQWxsKTogUmVtb3ZlcyBhbGwgdmFsdWVzIHRoYXQgbWF0Y2ggdGhlIHNw
ZWNpZmllZCB2YWx1ZQorICAgICAgICAqIGNzcy9DU1NWYWx1ZUxpc3QuaDoKKyAgICAgICAgKiBl
ZGl0aW5nL0VkaXRvckNvbW1hbmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6YXBwbHlDb21tYW5k
VG9GcmFtZSk6IEFwcGx5IHN0eWxlIHRvIGEgZnJhbWUgdXNpbmcgc3BlY2lmaWVkIGNvbW1hbmQK
KyAgICAgICAgKFdlYkNvcmU6OmV4ZWN1dGVBcHBseVN0eWxlKTogVXNlcyBhcHBseUNvbW1hbmRU
b0ZyYW1lCisgICAgICAgIChXZWJDb3JlOjpleGVjdXRlVG9nZ2xlU3R5bGVJbkxpc3QpOiBVc2Vz
IGFwcGx5Q29tbWFuZFRvRnJhbWUKKyAgICAgICAgKFdlYkNvcmU6OmV4ZWN1dGVUb2dnbGVTdHls
ZSk6IFRvZ2dsZXMgYSBzdHlsZSBpbiBDU1NWYWx1ZUxpc3QKKyAgICAgICAgKFdlYkNvcmU6OmV4
ZWN1dGVTdHJpa2V0aHJvdWdoKTogVXNlcyBleGVjdXRlVG9nZ2xlU3R5bGVJbkxpc3QKKyAgICAg
ICAgKFdlYkNvcmU6OmV4ZWN1dGVVbmRlcmxpbmUpOiBVc2VzIGV4ZWN1dGVUb2dnbGVTdHlsZUlu
TGlzdAorCiAyMDA5LTA3LTIyICBPbGl2ZXIgSHVudCAgPG9saXZlckBhcHBsZS5jb20+CiAKICAg
ICAgICAgUmV2aWV3ZWQgYnkgQWRlbGUgUGV0ZXJzb24uCkluZGV4OiBXZWJDb3JlL2Nzcy9DU1ND
b21wdXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvY3NzL0NT
U0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHAJKHJldmlzaW9uIDQ2MjM5KQorKysgV2ViQ29y
ZS9jc3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NTk3LDYgKzU5NywyMyBAQCBzdGF0aWMgUGFzc1JlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gdmFs
CiAgICAgcmV0dXJuIENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUoZmFtaWx5LnN0cmluZygpLCBD
U1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1NUUklORyk7CiB9CiAKK3N0YXRpYyBQYXNzUmVmUHRyPENT
U1ZhbHVlPiByZW5kZXJUZXh0RGVjb3JhdGlvbkZsYWdzVG9DU1NWYWx1ZShpbnQgdGV4dERlY29y
YXRpb24pCit7CisgICAgUmVmUHRyPENTU1ZhbHVlTGlzdD4gbGlzdCA9IENTU1ZhbHVlTGlzdDo6
Y3JlYXRlU3BhY2VTZXBhcmF0ZWQoKTsKKyAgICBpZiAodGV4dERlY29yYXRpb24gJiBVTkRFUkxJ
TkUpCisgICAgICAgIGxpc3QtPmFwcGVuZChDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlSWRlbnRp
ZmllcihDU1NWYWx1ZVVuZGVybGluZSkpOworICAgIGlmICh0ZXh0RGVjb3JhdGlvbiAmIE9WRVJM
SU5FKQorICAgICAgICBsaXN0LT5hcHBlbmQoQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZUlkZW50
aWZpZXIoQ1NTVmFsdWVPdmVybGluZSkpOworICAgIGlmICh0ZXh0RGVjb3JhdGlvbiAmIExJTkVf
VEhST1VHSCkKKyAgICAgICAgbGlzdC0+YXBwZW5kKENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGVJ
ZGVudGlmaWVyKENTU1ZhbHVlTGluZVRocm91Z2gpKTsKKyAgICBpZiAodGV4dERlY29yYXRpb24g
JiBCTElOSykKKyAgICAgICAgbGlzdC0+YXBwZW5kKENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGVJ
ZGVudGlmaWVyKENTU1ZhbHVlQmxpbmspKTsKKworICAgIGlmICghbGlzdC0+bGVuZ3RoKCkpCisg
ICAgICAgIHJldHVybiBDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlSWRlbnRpZmllcihDU1NWYWx1
ZU5vbmUpOworICAgIHJldHVybiBsaXN0OworfQorCiBQYXNzUmVmUHRyPENTU1ZhbHVlPiBDU1ND
b21wdXRlZFN0eWxlRGVjbGFyYXRpb246OmdldFByb3BlcnR5Q1NTVmFsdWUoaW50IHByb3BlcnR5
SUQsIEVVcGRhdGVMYXlvdXQgdXBkYXRlTGF5b3V0KSBjb25zdAogewogICAgIE5vZGUqIG5vZGUg
PSBtX25vZGUuZ2V0KCk7CkBAIC05OTksNTIgKzEwMTYsMTAgQEAgUGFzc1JlZlB0cjxDU1NWYWx1
ZT4gQ1NTQ29tcHV0ZWRTdHlsZURlYwogICAgICAgICAgICAgcmV0dXJuIENTU1ByaW1pdGl2ZVZh
bHVlOjpjcmVhdGUoc3R5bGUtPnRhYmxlTGF5b3V0KCkpOwogICAgICAgICBjYXNlIENTU1Byb3Bl
cnR5VGV4dEFsaWduOgogICAgICAgICAgICAgcmV0dXJuIENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVh
dGUoc3R5bGUtPnRleHRBbGlnbigpKTsKLSAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eVRleHREZWNv
cmF0aW9uOiB7Ci0gICAgICAgICAgICBTdHJpbmcgc3RyaW5nOwotICAgICAgICAgICAgaWYgKHN0
eWxlLT50ZXh0RGVjb3JhdGlvbigpICYgVU5ERVJMSU5FKQotICAgICAgICAgICAgICAgIHN0cmlu
ZyArPSAidW5kZXJsaW5lIjsKLSAgICAgICAgICAgIGlmIChzdHlsZS0+dGV4dERlY29yYXRpb24o
KSAmIE9WRVJMSU5FKSB7Ci0gICAgICAgICAgICAgICAgaWYgKHN0cmluZy5sZW5ndGgoKSkKLSAg
ICAgICAgICAgICAgICAgICAgc3RyaW5nICs9ICIgIjsKLSAgICAgICAgICAgICAgICBzdHJpbmcg
Kz0gIm92ZXJsaW5lIjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGlmIChzdHlsZS0+dGV4
dERlY29yYXRpb24oKSAmIExJTkVfVEhST1VHSCkgewotICAgICAgICAgICAgICAgIGlmIChzdHJp
bmcubGVuZ3RoKCkpCi0gICAgICAgICAgICAgICAgICAgIHN0cmluZyArPSAiICI7Ci0gICAgICAg
ICAgICAgICAgc3RyaW5nICs9ICJsaW5lLXRocm91Z2giOwotICAgICAgICAgICAgfQotICAgICAg
ICAgICAgaWYgKHN0eWxlLT50ZXh0RGVjb3JhdGlvbigpICYgQkxJTkspIHsKLSAgICAgICAgICAg
ICAgICBpZiAoc3RyaW5nLmxlbmd0aCgpKQotICAgICAgICAgICAgICAgICAgICBzdHJpbmcgKz0g
IiAiOwotICAgICAgICAgICAgICAgIHN0cmluZyArPSAiYmxpbmsiOwotICAgICAgICAgICAgfQot
ICAgICAgICAgICAgaWYgKCFzdHJpbmcubGVuZ3RoKCkpCi0gICAgICAgICAgICAgICAgcmV0dXJu
IENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGVJZGVudGlmaWVyKENTU1ZhbHVlTm9uZSk7Ci0gICAg
ICAgICAgICByZXR1cm4gQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZShzdHJpbmcsIENTU1ByaW1p
dGl2ZVZhbHVlOjpDU1NfU1RSSU5HKTsKLSAgICAgICAgfQotICAgICAgICBjYXNlIENTU1Byb3Bl
cnR5V2Via2l0VGV4dERlY29yYXRpb25zSW5FZmZlY3Q6IHsKLSAgICAgICAgICAgIFN0cmluZyBz
dHJpbmc7Ci0gICAgICAgICAgICBpZiAoc3R5bGUtPnRleHREZWNvcmF0aW9uc0luRWZmZWN0KCkg
JiBVTkRFUkxJTkUpCi0gICAgICAgICAgICAgICAgc3RyaW5nICs9ICJ1bmRlcmxpbmUiOwotICAg
ICAgICAgICAgaWYgKHN0eWxlLT50ZXh0RGVjb3JhdGlvbnNJbkVmZmVjdCgpICYgT1ZFUkxJTkUp
IHsKLSAgICAgICAgICAgICAgICBpZiAoc3RyaW5nLmxlbmd0aCgpKQotICAgICAgICAgICAgICAg
ICAgICBzdHJpbmcgKz0gIiAiOwotICAgICAgICAgICAgICAgIHN0cmluZyArPSAib3ZlcmxpbmUi
OwotICAgICAgICAgICAgfQotICAgICAgICAgICAgaWYgKHN0eWxlLT50ZXh0RGVjb3JhdGlvbnNJ
bkVmZmVjdCgpICYgTElORV9USFJPVUdIKSB7Ci0gICAgICAgICAgICAgICAgaWYgKHN0cmluZy5s
ZW5ndGgoKSkKLSAgICAgICAgICAgICAgICAgICAgc3RyaW5nICs9ICIgIjsKLSAgICAgICAgICAg
ICAgICBzdHJpbmcgKz0gImxpbmUtdGhyb3VnaCI7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAg
ICBpZiAoc3R5bGUtPnRleHREZWNvcmF0aW9uc0luRWZmZWN0KCkgJiBCTElOSykgewotICAgICAg
ICAgICAgICAgIGlmIChzdHJpbmcubGVuZ3RoKCkpCi0gICAgICAgICAgICAgICAgICAgIHN0cmlu
ZyArPSAiICI7Ci0gICAgICAgICAgICAgICAgc3RyaW5nICs9ICJibGluayI7Ci0gICAgICAgICAg
ICB9Ci0gICAgICAgICAgICBpZiAoIXN0cmluZy5sZW5ndGgoKSkKLSAgICAgICAgICAgICAgICBy
ZXR1cm4gQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZUlkZW50aWZpZXIoQ1NTVmFsdWVOb25lKTsK
LSAgICAgICAgICAgIHJldHVybiBDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlKHN0cmluZywgQ1NT
UHJpbWl0aXZlVmFsdWU6OkNTU19TVFJJTkcpOwotICAgICAgICB9CisgICAgICAgIGNhc2UgQ1NT
UHJvcGVydHlUZXh0RGVjb3JhdGlvbjoKKyAgICAgICAgICAgIHJldHVybiByZW5kZXJUZXh0RGVj
b3JhdGlvbkZsYWdzVG9DU1NWYWx1ZShzdHlsZS0+dGV4dERlY29yYXRpb24oKSk7CisgICAgICAg
IGNhc2UgQ1NTUHJvcGVydHlXZWJraXRUZXh0RGVjb3JhdGlvbnNJbkVmZmVjdDoKKyAgICAgICAg
ICAgIHJldHVybiByZW5kZXJUZXh0RGVjb3JhdGlvbkZsYWdzVG9DU1NWYWx1ZShzdHlsZS0+dGV4
dERlY29yYXRpb25zSW5FZmZlY3QoKSk7CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRU
ZXh0RmlsbENvbG9yOgogICAgICAgICAgICAgcmV0dXJuIGN1cnJlbnRDb2xvck9yVmFsaWRDb2xv
cihzdHlsZS5nZXQoKSwgc3R5bGUtPnRleHRGaWxsQ29sb3IoKSk7CiAgICAgICAgIGNhc2UgQ1NT
UHJvcGVydHlUZXh0SW5kZW50OgpJbmRleDogV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJDb3JlL2Nzcy9DU1NQYXJzZXIuY3BwCShyZXZpc2lvbiA0NjIzOSkKKysr
IFdlYkNvcmUvY3NzL0NTU1BhcnNlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwNTIsNyArMTA1
Miw3IEBAIGJvb2wgQ1NTUGFyc2VyOjpwYXJzZVZhbHVlKGludCBwcm9wSWQsIGIKICAgICAgICAg
aWYgKGlkID09IENTU1ZhbHVlTm9uZSkgewogICAgICAgICAgICAgdmFsaWRfcHJpbWl0aXZlID0g
dHJ1ZTsKICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIFJlZlB0cjxDU1NWYWx1ZUxpc3Q+
IGxpc3QgPSBDU1NWYWx1ZUxpc3Q6OmNyZWF0ZUNvbW1hU2VwYXJhdGVkKCk7CisgICAgICAgICAg
ICBSZWZQdHI8Q1NTVmFsdWVMaXN0PiBsaXN0ID0gQ1NTVmFsdWVMaXN0OjpjcmVhdGVTcGFjZVNl
cGFyYXRlZCgpOwogICAgICAgICAgICAgYm9vbCBpc192YWxpZCA9IHRydWU7CiAgICAgICAgICAg
ICB3aGlsZSAoaXNfdmFsaWQgJiYgdmFsdWUpIHsKICAgICAgICAgICAgICAgICBzd2l0Y2ggKHZh
bHVlLT5pZCkgewpJbmRleDogV2ViQ29yZS9jc3MvQ1NTVmFsdWVMaXN0LmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJDb3JlL2Nzcy9DU1NWYWx1ZUxpc3QuY3BwCShyZXZpc2lvbiA0NjIzOSkKKysrIFdl
YkNvcmUvY3NzL0NTU1ZhbHVlTGlzdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTcwLDYgKzcwLDIx
IEBAIHZvaWQgQ1NTVmFsdWVMaXN0OjpwcmVwZW5kKFBhc3NSZWZQdHI8Q1MKICAgICBtX3ZhbHVl
cy5wcmVwZW5kKHZhbCk7CiB9CiAKK2Jvb2wgQ1NTVmFsdWVMaXN0OjpyZW1vdmVBbGwoQ1NTVmFs
dWUqIHZhbCkKK3sKKyAgICBib29sIGZvdW5kID0gZmFsc2U7CisgICAgLy8gRklYTUU6IHdlIHNo
b3VsZCBiZSBpbXBsZW1lbnRpbmcgb3BlcmF0b3I9PSB0byBDU1NWYWx1ZSBhbmQgaXRzIGRlcml2
ZWQgY2xhc3NlcworICAgIC8vIHRvIG1ha2UgY29tcGFyaXNvbiBtb3JlIGZsZXhpYmxlIGFuZCBm
YXN0LgorICAgIGZvciAoc2l6ZV90IGluZGV4ID0gMDsgaW5kZXggPCBtX3ZhbHVlcy5zaXplKCk7
IGluZGV4KyspIHsKKyAgICAgICAgaWYgKG1fdmFsdWVzLmF0KGluZGV4KS0+Y3NzVGV4dCgpID09
IHZhbC0+Y3NzVGV4dCgpKSB7CisgICAgICAgICAgICBtX3ZhbHVlcy5yZW1vdmUoaW5kZXgpOwor
ICAgICAgICAgICAgZm91bmQgPSB0cnVlOworICAgICAgICB9CisgICAgfQorICAgIAorICAgIHJl
dHVybiBmb3VuZDsKK30KKwogU3RyaW5nIENTU1ZhbHVlTGlzdDo6Y3NzVGV4dCgpIGNvbnN0CiB7
CiAgICAgU3RyaW5nIHJlc3VsdCA9ICIiOwpJbmRleDogV2ViQ29yZS9jc3MvQ1NTVmFsdWVMaXN0
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9jc3MvQ1NTVmFsdWVMaXN0LmgJKHJldmlzaW9uIDQ2
MjM5KQorKysgV2ViQ29yZS9jc3MvQ1NTVmFsdWVMaXN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTUy
LDYgKzUyLDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBhcHBlbmQoUGFzc1JlZlB0cjxDU1NWYWx1
ZT4pOwogICAgIHZvaWQgcHJlcGVuZChQYXNzUmVmUHRyPENTU1ZhbHVlPik7CisgICAgYm9vbCBy
ZW1vdmVBbGwoQ1NTVmFsdWUqKTsKIAogICAgIHZpcnR1YWwgU3RyaW5nIGNzc1RleHQoKSBjb25z
dDsKIApJbmRleDogV2ViQ29yZS9lZGl0aW5nL0VkaXRvckNvbW1hbmQuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYkNvcmUvZWRpdGluZy9FZGl0b3JDb21tYW5kLmNwcAkocmV2aXNpb24gNDYyMzkpCisr
KyBXZWJDb3JlL2VkaXRpbmcvRWRpdG9yQ29tbWFuZC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI3
LDYgKzI3LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKIAogI2luY2x1ZGUgIkF0b21pY1N0cmlu
Zy5oIgorI2luY2x1ZGUgIkNTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5oIgogI2luY2x1ZGUg
IkNTU011dGFibGVTdHlsZURlY2xhcmF0aW9uLmgiCiAjaW5jbHVkZSAiQ1NTUHJvcGVydHlOYW1l
cy5oIgogI2luY2x1ZGUgIkNTU1ZhbHVlS2V5d29yZHMuaCIKQEAgLTg5LDY0ICs5MCw3MSBAQCBz
dGF0aWMgRnJhbWUqIHRhcmdldEZyYW1lKEZyYW1lKiBmcmFtZSwgCiAgICAgcmV0dXJuIG5vZGUt
PmRvY3VtZW50KCktPmZyYW1lKCk7CiB9CiAKLXN0YXRpYyBib29sIGV4ZWN1dGVBcHBseVN0eWxl
KEZyYW1lKiBmcmFtZSwgRWRpdG9yQ29tbWFuZFNvdXJjZSBzb3VyY2UsIEVkaXRBY3Rpb24gYWN0
aW9uLCBpbnQgcHJvcGVydHlJRCwgY29uc3QgU3RyaW5nJiBwcm9wZXJ0eVZhbHVlKQorc3RhdGlj
IGJvb2wgYXBwbHlDb21tYW5kVG9GcmFtZShGcmFtZSogZnJhbWUsIEVkaXRvckNvbW1hbmRTb3Vy
Y2Ugc291cmNlLCBFZGl0QWN0aW9uIGFjdGlvbiwgQ1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb24q
IHN0eWxlKQogewotICAgIFJlZlB0cjxDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbj4gc3R5bGUg
PSBDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbjo6Y3JlYXRlKCk7Ci0gICAgc3R5bGUtPnNldFBy
b3BlcnR5KHByb3BlcnR5SUQsIHByb3BlcnR5VmFsdWUpOwogICAgIC8vIEZJWE1FOiBXZSBkb24n
dCBjYWxsIHNob3VsZEFwcGx5U3R5bGUgd2hlbiB0aGUgc291cmNlIGlzIERPTTsgaXMgdGhlcmUg
YSBnb29kIHJlYXNvbiBmb3IgdGhhdD8KICAgICBzd2l0Y2ggKHNvdXJjZSkgewogICAgICAgICBj
YXNlIENvbW1hbmRGcm9tTWVudU9yS2V5QmluZGluZzoKLSAgICAgICAgICAgIGZyYW1lLT5lZGl0
b3IoKS0+YXBwbHlTdHlsZVRvU2VsZWN0aW9uKHN0eWxlLmdldCgpLCBhY3Rpb24pOworICAgICAg
ICAgICAgZnJhbWUtPmVkaXRvcigpLT5hcHBseVN0eWxlVG9TZWxlY3Rpb24oc3R5bGUsIGFjdGlv
bik7CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgY2FzZSBDb21tYW5kRnJvbURP
TToKICAgICAgICAgY2FzZSBDb21tYW5kRnJvbURPTVdpdGhVc2VySW50ZXJmYWNlOgotICAgICAg
ICAgICAgZnJhbWUtPmVkaXRvcigpLT5hcHBseVN0eWxlKHN0eWxlLmdldCgpKTsKKyAgICAgICAg
ICAgIGZyYW1lLT5lZGl0b3IoKS0+YXBwbHlTdHlsZShzdHlsZSk7CiAgICAgICAgICAgICByZXR1
cm4gdHJ1ZTsKICAgICB9CiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgcmV0dXJuIGZh
bHNlOwogfQogCi1zdGF0aWMgYm9vbCBleGVjdXRlQXBwbHlTdHlsZShGcmFtZSogZnJhbWUsIEVk
aXRvckNvbW1hbmRTb3VyY2Ugc291cmNlLCBFZGl0QWN0aW9uIGFjdGlvbiwgaW50IHByb3BlcnR5
SUQsIGNvbnN0IGNoYXIqIHByb3BlcnR5VmFsdWUpCitzdGF0aWMgYm9vbCBleGVjdXRlQXBwbHlT
dHlsZShGcmFtZSogZnJhbWUsIEVkaXRvckNvbW1hbmRTb3VyY2Ugc291cmNlLCBFZGl0QWN0aW9u
IGFjdGlvbiwgaW50IHByb3BlcnR5SUQsIGNvbnN0IFN0cmluZyYgcHJvcGVydHlWYWx1ZSkKIHsK
LSAgICByZXR1cm4gZXhlY3V0ZUFwcGx5U3R5bGUoZnJhbWUsIHNvdXJjZSwgYWN0aW9uLCBwcm9w
ZXJ0eUlELCBTdHJpbmcocHJvcGVydHlWYWx1ZSkpOworICAgIFJlZlB0cjxDU1NNdXRhYmxlU3R5
bGVEZWNsYXJhdGlvbj4gc3R5bGUgPSBDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbjo6Y3JlYXRl
KCk7CisgICAgc3R5bGUtPnNldFByb3BlcnR5KHByb3BlcnR5SUQsIHByb3BlcnR5VmFsdWUpOwor
ICAgIHJldHVybiBhcHBseUNvbW1hbmRUb0ZyYW1lKGZyYW1lLCBzb3VyY2UsIGFjdGlvbiwgc3R5
bGUuZ2V0KCkpOwogfQogCiBzdGF0aWMgYm9vbCBleGVjdXRlQXBwbHlTdHlsZShGcmFtZSogZnJh
bWUsIEVkaXRvckNvbW1hbmRTb3VyY2Ugc291cmNlLCBFZGl0QWN0aW9uIGFjdGlvbiwgaW50IHBy
b3BlcnR5SUQsIGludCBwcm9wZXJ0eVZhbHVlKQogewogICAgIFJlZlB0cjxDU1NNdXRhYmxlU3R5
bGVEZWNsYXJhdGlvbj4gc3R5bGUgPSBDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbjo6Y3JlYXRl
KCk7CiAgICAgc3R5bGUtPnNldFByb3BlcnR5KHByb3BlcnR5SUQsIHByb3BlcnR5VmFsdWUpOwot
ICAgIC8vIEZJWE1FOiBXZSBkb24ndCBjYWxsIHNob3VsZEFwcGx5U3R5bGUgd2hlbiB0aGUgc291
cmNlIGlzIERPTTsgaXMgdGhlcmUgYSBnb29kIHJlYXNvbiBmb3IgdGhhdD8KLSAgICBzd2l0Y2gg
KHNvdXJjZSkgewotICAgICAgICBjYXNlIENvbW1hbmRGcm9tTWVudU9yS2V5QmluZGluZzoKLSAg
ICAgICAgICAgIGZyYW1lLT5lZGl0b3IoKS0+YXBwbHlTdHlsZVRvU2VsZWN0aW9uKHN0eWxlLmdl
dCgpLCBhY3Rpb24pOwotICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgIGNhc2UgQ29t
bWFuZEZyb21ET006Ci0gICAgICAgIGNhc2UgQ29tbWFuZEZyb21ET01XaXRoVXNlckludGVyZmFj
ZToKLSAgICAgICAgICAgIGZyYW1lLT5lZGl0b3IoKS0+YXBwbHlTdHlsZShzdHlsZS5nZXQoKSk7
Ci0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci0gICAgQVNTRVJUX05PVF9SRUFDSEVE
KCk7Ci0gICAgcmV0dXJuIGZhbHNlOworICAgIHJldHVybiBhcHBseUNvbW1hbmRUb0ZyYW1lKGZy
YW1lLCBzb3VyY2UsIGFjdGlvbiwgc3R5bGUuZ2V0KCkpOwogfQogCitzdGF0aWMgYm9vbCBleGVj
dXRlVG9nZ2xlU3R5bGVJbkxpc3QoRnJhbWUqIGZyYW1lLCBFZGl0b3JDb21tYW5kU291cmNlIHNv
dXJjZSwgRWRpdEFjdGlvbiBhY3Rpb24sIGludCBwcm9wZXJ0eUlELCBDU1NWYWx1ZSogdmFsdWUp
Cit7CisgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CisgICAgTm9kZSogbm9kZVRvUmVtb3ZlID0g
MDsKKyAgICBSZWZQdHI8Q1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uPiBzZWxlY3Rpb25TdHls
ZSA9IGZyYW1lLT5zZWxlY3Rpb25Db21wdXRlZFN0eWxlKG5vZGVUb1JlbW92ZSk7CisgICAgUmVm
UHRyPENTU1ZhbHVlPiBzZWxlY3RlZENTU1ZhbHVlID0gc2VsZWN0aW9uU3R5bGUtPmdldFByb3Bl
cnR5Q1NTVmFsdWUocHJvcGVydHlJRCk7CisgICAgU3RyaW5nIG5ld1N0eWxlID0gIm5vbmUiOwor
ICAgIGlmIChzZWxlY3RlZENTU1ZhbHVlLT5pc1ZhbHVlTGlzdCgpKSB7CisgICAgICAgIFJlZlB0
cjxDU1NWYWx1ZUxpc3Q+IHNlbGVjdGVkQ1NTVmFsdWVMaXN0ID0gc3RhdGljX2Nhc3Q8Q1NTVmFs
dWVMaXN0Kj4oc2VsZWN0ZWRDU1NWYWx1ZS5nZXQoKSk7CisgICAgICAgIGlmICghc2VsZWN0ZWRD
U1NWYWx1ZUxpc3QtPnJlbW92ZUFsbCh2YWx1ZSkpCisgICAgICAgICAgICBzZWxlY3RlZENTU1Zh
bHVlTGlzdC0+YXBwZW5kKHZhbHVlKTsKKyAgICAgICAgaWYgKHNlbGVjdGVkQ1NTVmFsdWVMaXN0
LT5sZW5ndGgoKSkKKyAgICAgICAgICAgIG5ld1N0eWxlID0gc2VsZWN0ZWRDU1NWYWx1ZUxpc3Qt
PmNzc1RleHQoKTsKKworICAgIH0gZWxzZSBpZiAoc2VsZWN0ZWRDU1NWYWx1ZS0+Y3NzVGV4dCgp
ID09ICJub25lIikKKyAgICAgICAgbmV3U3R5bGUgPSB2YWx1ZS0+Y3NzVGV4dCgpOworCisgICAg
QVNTRVJUKGVjID09IDApOworICAgIGlmIChub2RlVG9SZW1vdmUpIHsKKyAgICAgICAgbm9kZVRv
UmVtb3ZlLT5yZW1vdmUoZWMpOworICAgICAgICBBU1NFUlQoZWMgPT0gMCk7CisgICAgfQorCisg
ICAgLy8gRklYTUU6IFdlIHNob3VsZG4ndCBiZSBoYXZpbmcgdG8gY29udmVydCBuZXcgc3R5bGUg
aW50byB0ZXh0LiAgV2Ugc2hvdWxkIGhhdmUgc2V0UHJvcGVydHlDU1NWYWx1ZS4KKyAgICBSZWZQ
dHI8Q1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb24+IG5ld011dGFibGVTdHlsZSA9IENTU011dGFi
bGVTdHlsZURlY2xhcmF0aW9uOjpjcmVhdGUoKTsKKyAgICBuZXdNdXRhYmxlU3R5bGUtPnNldFBy
b3BlcnR5KHByb3BlcnR5SUQsIG5ld1N0eWxlLGVjKTsKKyAgICByZXR1cm4gYXBwbHlDb21tYW5k
VG9GcmFtZShmcmFtZSwgc291cmNlLCBhY3Rpb24sIG5ld011dGFibGVTdHlsZS5nZXQoKSk7Cit9
CisgICAgCiBzdGF0aWMgYm9vbCBleGVjdXRlVG9nZ2xlU3R5bGUoRnJhbWUqIGZyYW1lLCBFZGl0
b3JDb21tYW5kU291cmNlIHNvdXJjZSwgRWRpdEFjdGlvbiBhY3Rpb24sIGludCBwcm9wZXJ0eUlE
LCBjb25zdCBjaGFyKiBvZmZWYWx1ZSwgY29uc3QgY2hhciogb25WYWx1ZSkKIHsKICAgICBSZWZQ
dHI8Q1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb24+IHN0eWxlID0gQ1NTTXV0YWJsZVN0eWxlRGVj
bGFyYXRpb246OmNyZWF0ZSgpOwogICAgIHN0eWxlLT5zZXRQcm9wZXJ0eShwcm9wZXJ0eUlELCBv
blZhbHVlKTsKICAgICBzdHlsZS0+c2V0UHJvcGVydHkocHJvcGVydHlJRCwgZnJhbWUtPmVkaXRv
cigpLT5zZWxlY3Rpb25TdGFydEhhc1N0eWxlKHN0eWxlLmdldCgpKSA/IG9mZlZhbHVlIDogb25W
YWx1ZSk7Ci0gICAgLy8gRklYTUU6IFdlIGRvbid0IGNhbGwgc2hvdWxkQXBwbHlTdHlsZSB3aGVu
IHRoZSBzb3VyY2UgaXMgRE9NOyBpcyB0aGVyZSBhIGdvb2QgcmVhc29uIGZvciB0aGF0PwotICAg
IHN3aXRjaCAoc291cmNlKSB7Ci0gICAgICAgIGNhc2UgQ29tbWFuZEZyb21NZW51T3JLZXlCaW5k
aW5nOgotICAgICAgICAgICAgZnJhbWUtPmVkaXRvcigpLT5hcHBseVN0eWxlVG9TZWxlY3Rpb24o
c3R5bGUuZ2V0KCksIGFjdGlvbik7Ci0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAg
Y2FzZSBDb21tYW5kRnJvbURPTToKLSAgICAgICAgY2FzZSBDb21tYW5kRnJvbURPTVdpdGhVc2Vy
SW50ZXJmYWNlOgotICAgICAgICAgICAgZnJhbWUtPmVkaXRvcigpLT5hcHBseVN0eWxlKHN0eWxl
LmdldCgpKTsKLSAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgIH0KLSAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKLSAgICByZXR1cm4gZmFsc2U7CisgICAgcmV0dXJuIGFwcGx5Q29tbWFuZFRv
RnJhbWUoZnJhbWUsIHNvdXJjZSwgYWN0aW9uLCBzdHlsZS5nZXQoKSk7CiB9CiAKIHN0YXRpYyBi
b29sIGV4ZWN1dGVBcHBseVBhcmFncmFwaFN0eWxlKEZyYW1lKiBmcmFtZSwgRWRpdG9yQ29tbWFu
ZFNvdXJjZSBzb3VyY2UsIEVkaXRBY3Rpb24gYWN0aW9uLCBpbnQgcHJvcGVydHlJRCwgY29uc3Qg
U3RyaW5nJiBwcm9wZXJ0eVZhbHVlKQpAQCAtOTM3LDcgKzk0NSw4IEBAIHN0YXRpYyBib29sIGV4
ZWN1dGVTZXRNYXJrKEZyYW1lKiBmcmFtZSwKIAogc3RhdGljIGJvb2wgZXhlY3V0ZVN0cmlrZXRo
cm91Z2goRnJhbWUqIGZyYW1lLCBFdmVudCosIEVkaXRvckNvbW1hbmRTb3VyY2Ugc291cmNlLCBj
b25zdCBTdHJpbmcmKQogewotICAgIHJldHVybiBleGVjdXRlVG9nZ2xlU3R5bGUoZnJhbWUsIHNv
dXJjZSwgRWRpdEFjdGlvbkNoYW5nZUF0dHJpYnV0ZXMsIENTU1Byb3BlcnR5V2Via2l0VGV4dERl
Y29yYXRpb25zSW5FZmZlY3QsICJub25lIiwgImxpbmUtdGhyb3VnaCIpOworICAgIFJlZlB0cjxD
U1NQcmltaXRpdmVWYWx1ZT4gbGluZVRocm91Z2ggPSBDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRl
SWRlbnRpZmllcihDU1NWYWx1ZUxpbmVUaHJvdWdoKTsKKyAgICByZXR1cm4gZXhlY3V0ZVRvZ2ds
ZVN0eWxlSW5MaXN0KGZyYW1lLCBzb3VyY2UsIEVkaXRBY3Rpb25VbmRlcmxpbmUsIENTU1Byb3Bl
cnR5V2Via2l0VGV4dERlY29yYXRpb25zSW5FZmZlY3QsIGxpbmVUaHJvdWdoLmdldCgpKTsKIH0K
IAogc3RhdGljIGJvb2wgZXhlY3V0ZVN0eWxlV2l0aENTUyhGcmFtZSogZnJhbWUsIEV2ZW50Kiwg
RWRpdG9yQ29tbWFuZFNvdXJjZSwgY29uc3QgU3RyaW5nJiB2YWx1ZSkKQEAgLTk5MCw4ICs5OTks
OCBAQCBzdGF0aWMgYm9vbCBleGVjdXRlVHJhbnNwb3NlKEZyYW1lKiBmcmFtCiAKIHN0YXRpYyBi
b29sIGV4ZWN1dGVVbmRlcmxpbmUoRnJhbWUqIGZyYW1lLCBFdmVudCosIEVkaXRvckNvbW1hbmRT
b3VyY2Ugc291cmNlLCBjb25zdCBTdHJpbmcmKQogewotICAgIC8vIEZJWE1FOiBUaGlzIGN1cnJl
bnRseSBjbGVhcnMgb3ZlcmxpbmUsIGxpbmUtdGhyb3VnaCwgYW5kIGJsaW5rIGFzIGFuIHVud2Fu
dGVkIHNpZGUgZWZmZWN0LgotICAgIHJldHVybiBleGVjdXRlVG9nZ2xlU3R5bGUoZnJhbWUsIHNv
dXJjZSwgRWRpdEFjdGlvblVuZGVybGluZSwgQ1NTUHJvcGVydHlXZWJraXRUZXh0RGVjb3JhdGlv
bnNJbkVmZmVjdCwgIm5vbmUiLCAidW5kZXJsaW5lIik7CisgICAgUmVmUHRyPENTU1ByaW1pdGl2
ZVZhbHVlPiB1bmRlcmxpbmUgPSBDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlSWRlbnRpZmllcihD
U1NWYWx1ZVVuZGVybGluZSk7CisgICAgcmV0dXJuIGV4ZWN1dGVUb2dnbGVTdHlsZUluTGlzdChm
cmFtZSwgc291cmNlLCBFZGl0QWN0aW9uVW5kZXJsaW5lLCBDU1NQcm9wZXJ0eVdlYmtpdFRleHRE
ZWNvcmF0aW9uc0luRWZmZWN0LCB1bmRlcmxpbmUuZ2V0KCkpOwogfQogCiBzdGF0aWMgYm9vbCBl
eGVjdXRlVW5kbyhGcmFtZSogZnJhbWUsIEV2ZW50KiwgRWRpdG9yQ29tbWFuZFNvdXJjZSwgY29u
c3QgU3RyaW5nJikKSW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBM
YXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDQ2MjQ4KQorKysgTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjMgQEAKKzIwMDktMDctMjIgIFJ5b3N1
a2UgTml3YSAgPHJuaXdhQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgZXhlY0NvbW1hbmQoJ3VuZGVybGluZScgLyAnc3RyaWtlVGhy
b3VnaCcpIGRvZXNuJ3Qgd29yayBwcm9wZXJseSB3aXRoIG11bHRpcGxlIHN0eWxlcyBpbiB0ZXh0
LWRlY29yYXRpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTI3NDc2CisKKyAgICAgICAgdG9nZ2xlLXRleHQtZGVjb3JhdGlvbnMgY2hlY2tzIHdoZXRo
ZXIgd2UgY2FuIHRvZ2dsZSB0ZXh0IGRlY29yYXRpb25zIHdpdGggbXVsdGlwbGUgc3R5bGVzIHBy
b3Blcmx5LgorICAgICAgICBlLmcuIGV4ZWNDb21tYW5kKCJ1bmRlcmxpbmUiKSBzaG91bGQgbW9k
aWZ5ICJ0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZSBvdmVybGluZSIgdG8gInRleHQtZGVjb3Jh
dGlvbjogb3ZlcmxpbmUiCisKKyAgICAgICAgZ2V0Q29tcHV0ZWRTdHlsZS10ZXh0LWRlY29yYXRp
b24gY2hlY2tzIHdoZXRoZXIgdGhlIENTUyB2YWx1ZSBvZiB0ZXh0IGRlY29yYXRpb24gYW5kIGl0
cyBjb21wdXRlZCBzdHlsZSBhcmUKKyAgICAgICAgYm90aCBzcGFjZS1zZXBhcmF0ZWQgQ1NTVmFs
dWVMaXN0IGluc3RlYWQgb2YgQ1NTUHJpbWl0aXZlVmFsdWUgb3IgY29tbWEtc2VwYXJhdGVkIENT
U1ZhbHVlTGlzdC4KKworICAgICAgICAqIGVkaXRpbmcvZXhlY0NvbW1hbmQvcmVzb3VyY2VzL3Rv
Z2dsZS10ZXh0LWRlY29yYXRpb25zLmpzOiBBZGRlZC4KKyAgICAgICAgKHRlc3RTaW5nbGVUb2dn
bGUpOgorICAgICAgICAqIGVkaXRpbmcvZXhlY0NvbW1hbmQvdG9nZ2xlLXRleHQtZGVjb3JhdGlv
bnMtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBlZGl0aW5nL2V4ZWNDb21tYW5kL3Rv
Z2dsZS10ZXh0LWRlY29yYXRpb25zLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvY3NzL2dl
dENvbXB1dGVkU3R5bGUvZ2V0Q29tcHV0ZWRTdHlsZS10ZXh0LWRlY29yYXRpb24tZXhwZWN0ZWQu
dHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2Nzcy9nZXRDb21wdXRlZFN0eWxlL2dldENvbXB1
dGVkU3R5bGUtdGV4dC1kZWNvcmF0aW9uLmh0bWw6IEFkZGVkLgorCiAyMDA5LTA3LTIyICBEYXZp
ZCBIeWF0dCAgPGh5YXR0QGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBCZXRoIERh
a2luLgpJbmRleDogTGF5b3V0VGVzdHMvZWRpdGluZy9leGVjQ29tbWFuZC90b2dnbGUtdGV4dC1k
ZWNvcmF0aW9ucy1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZWRpdGlu
Zy9leGVjQ29tbWFuZC90b2dnbGUtdGV4dC1kZWNvcmF0aW9ucy1leHBlY3RlZC50eHQJKHJldmlz
aW9uIDApCisrKyBMYXlvdXRUZXN0cy9lZGl0aW5nL2V4ZWNDb21tYW5kL3RvZ2dsZS10ZXh0LWRl
Y29yYXRpb25zLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxNSBAQAorVGVz
dCB0byBtYWtlIHN1cmUgd2UgY2FuIHRvZ2dsZSB0ZXh0IGRlY29yYXRpb25zIGNvcnJlY3RseS4K
KworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywg
Zm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1Mgb25lIHVuZGVybGluZSBjb21t
YW5kIGNvbnZlcnRlZCB0ZXN0IHRvIDxzcGFuIGNsYXNzPSJBcHBsZS1zdHlsZS1zcGFuIiBzdHls
ZT0idGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7Ij50ZXN0PC9zcGFuPgorUEFTUyBvbmUgdW5k
ZXJsaW5lIGNvbW1hbmQgY29udmVydGVkIDxzcGFuIGNsYXNzPSJBcHBsZS1zdHlsZS1zcGFuIiBz
dHlsZT0idGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7Ij50ZXN0PC9zcGFuPiB0byB0ZXN0CitQ
QVNTIG9uZSB1bmRlcmxpbmUgY29tbWFuZCBjb252ZXJ0ZWQgPHNwYW4gY2xhc3M9IkFwcGxlLXN0
eWxlLXNwYW4iIHN0eWxlPSJ0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZSBsaW5lLXRocm91Z2gg
b3ZlcmxpbmU7Ij50ZXN0PC9zcGFuPiB0byA8c3BhbiBjbGFzcz0iQXBwbGUtc3R5bGUtc3BhbiIg
c3R5bGU9InRleHQtZGVjb3JhdGlvbjogb3ZlcmxpbmUgbGluZS10aHJvdWdoOyI+dGVzdDwvc3Bh
bj4KK1BBU1Mgb25lIHN0cmlrZXRocm91Z2ggY29tbWFuZCBjb252ZXJ0ZWQgdGVzdCB0byA8c3Bh
biBjbGFzcz0iQXBwbGUtc3R5bGUtc3BhbiIgc3R5bGU9InRleHQtZGVjb3JhdGlvbjogbGluZS10
aHJvdWdoOyI+dGVzdDwvc3Bhbj4KK1BBU1Mgb25lIHN0cmlrZXRocm91Z2ggY29tbWFuZCBjb252
ZXJ0ZWQgPHNwYW4gY2xhc3M9IkFwcGxlLXN0eWxlLXNwYW4iIHN0eWxlPSJ0ZXh0LWRlY29yYXRp
b246IGxpbmUtdGhyb3VnaDsiPnRlc3Q8L3NwYW4+IHRvIHRlc3QKK1BBU1Mgb25lIHN0cmlrZXRo
cm91Z2ggY29tbWFuZCBjb252ZXJ0ZWQgPHNwYW4gY2xhc3M9IkFwcGxlLXN0eWxlLXNwYW4iIHN0
eWxlPSJ0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZSBsaW5lLXRocm91Z2ggb3ZlcmxpbmU7Ij50
ZXN0PC9zcGFuPiB0byA8c3BhbiBjbGFzcz0iQXBwbGUtc3R5bGUtc3BhbiIgc3R5bGU9InRleHQt
ZGVjb3JhdGlvbjogdW5kZXJsaW5lIG92ZXJsaW5lOyI+dGVzdDwvc3Bhbj4KK1BBU1Mgc3VjY2Vz
c2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCkluZGV4OiBMYXlvdXRUZXN0
cy9lZGl0aW5nL2V4ZWNDb21tYW5kL3RvZ2dsZS10ZXh0LWRlY29yYXRpb25zLmh0bWwKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gTGF5b3V0VGVzdHMvZWRpdGluZy9leGVjQ29tbWFuZC90b2dnbGUtdGV4dC1kZWNv
cmF0aW9ucy5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZWRpdGluZy9leGVjQ29t
bWFuZC90b2dnbGUtdGV4dC1kZWNvcmF0aW9ucy5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsx
LDEzIEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RURCBIVE1MLy9FTiI+Cis8
aHRtbD4KKzxoZWFkPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi9mYXN0L2pz
L3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyI+Cis8c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9q
cy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8
cCBpZD0iZGVzY3JpcHRpb24iPjwvcD4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlw
dCBzcmM9InJlc291cmNlcy90b2dnbGUtdGV4dC1kZWNvcmF0aW9ucy5qcyI+PC9zY3JpcHQ+Cis8
c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3Nj
cmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2VkaXRpbmcvZXhlY0Nv
bW1hbmQvcmVzb3VyY2VzL3RvZ2dsZS10ZXh0LWRlY29yYXRpb25zLmpzCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IExheW91dFRlc3RzL2VkaXRpbmcvZXhlY0NvbW1hbmQvcmVzb3VyY2VzL3RvZ2dsZS10ZXh0LWRl
Y29yYXRpb25zLmpzCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZWRpdGluZy9leGVjQ29t
bWFuZC9yZXNvdXJjZXMvdG9nZ2xlLXRleHQtZGVjb3JhdGlvbnMuanMJKHJldmlzaW9uIDApCkBA
IC0wLDAgKzEsMjkgQEAKK2Rlc2NyaXB0aW9uKCJUZXN0IHRvIG1ha2Ugc3VyZSB3ZSBjYW4gdG9n
Z2xlIHRleHQgZGVjb3JhdGlvbnMgY29ycmVjdGx5LiIpCisKK3ZhciB0ZXN0Q29udGFpbmVyID0g
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7Cit0ZXN0Q29udGFpbmVyLmNvbnRlbnRFZGl0
YWJsZSA9IHRydWU7Citkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKHRlc3RDb250YWluZXIpOwor
CitmdW5jdGlvbiB0ZXN0U2luZ2xlVG9nZ2xlKHRvZ2dsZUNvbW1hbmQsIGluaXRpYWxDb250ZW50
cywgZXhwZWN0ZWRDb250ZW50cykKK3sKKyAgICB0ZXN0Q29udGFpbmVyLmlubmVySFRNTCA9IGlu
aXRpYWxDb250ZW50czsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuc2VsZWN0QWxsQ2hpbGRy
ZW4odGVzdENvbnRhaW5lcik7CisgICAgZG9jdW1lbnQuZXhlY0NvbW1hbmQodG9nZ2xlQ29tbWFu
ZCwgZmFsc2UsIG51bGwpOworICAgIGlmICh0ZXN0Q29udGFpbmVyLmlubmVySFRNTCA9PT0gZXhw
ZWN0ZWRDb250ZW50cykgeworICAgICAgICB0ZXN0UGFzc2VkKCJvbmUgIiArIHRvZ2dsZUNvbW1h
bmQgKyAiIGNvbW1hbmQgY29udmVydGVkICIgKyBpbml0aWFsQ29udGVudHMgKyAiIHRvICIgKyBl
eHBlY3RlZENvbnRlbnRzKTsKKyAgICB9IGVsc2UgeworICAgICAgICB0ZXN0RmFpbGVkKCJvbmUg
IiArIHRvZ2dsZUNvbW1hbmQgKyAiIGNvbW1hbmQgY29udmVydGVkICIgKyBpbml0aWFsQ29udGVu
dHMgKyAiIHRvICIgKyB0ZXN0Q29udGFpbmVyLmlubmVySFRNTCArICIsIGV4cGVjdGVkICIgKyBl
eHBlY3RlZENvbnRlbnRzKTsKKyAgICB9Cit9CisKK2RvY3VtZW50LmV4ZWNDb21tYW5kKCJzdHls
ZVdpdGhDU1MiLCB0cnVlLCBudWxsKTsKK3Rlc3RTaW5nbGVUb2dnbGUoInVuZGVybGluZSIsICJ0
ZXN0IiwgIjxzcGFuIGNsYXNzPVwiQXBwbGUtc3R5bGUtc3BhblwiIHN0eWxlPVwidGV4dC1kZWNv
cmF0aW9uOiB1bmRlcmxpbmU7XCI+dGVzdDwvc3Bhbj4iKTsKK3Rlc3RTaW5nbGVUb2dnbGUoInVu
ZGVybGluZSIsICI8c3BhbiBjbGFzcz1cIkFwcGxlLXN0eWxlLXNwYW5cIiBzdHlsZT1cInRleHQt
ZGVjb3JhdGlvbjogdW5kZXJsaW5lO1wiPnRlc3Q8L3NwYW4+IiwgInRlc3QiKTsKK3Rlc3RTaW5n
bGVUb2dnbGUoInVuZGVybGluZSIsICI8c3BhbiBjbGFzcz1cIkFwcGxlLXN0eWxlLXNwYW5cIiBz
dHlsZT1cInRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lIGxpbmUtdGhyb3VnaCBvdmVybGluZTtc
Ij50ZXN0PC9zcGFuPiIsICI8c3BhbiBjbGFzcz1cIkFwcGxlLXN0eWxlLXNwYW5cIiBzdHlsZT1c
InRleHQtZGVjb3JhdGlvbjogb3ZlcmxpbmUgbGluZS10aHJvdWdoO1wiPnRlc3Q8L3NwYW4+Iik7
Cit0ZXN0U2luZ2xlVG9nZ2xlKCJzdHJpa2V0aHJvdWdoIiwgInRlc3QiLCAiPHNwYW4gY2xhc3M9
XCJBcHBsZS1zdHlsZS1zcGFuXCIgc3R5bGU9XCJ0ZXh0LWRlY29yYXRpb246IGxpbmUtdGhyb3Vn
aDtcIj50ZXN0PC9zcGFuPiIpOwordGVzdFNpbmdsZVRvZ2dsZSgic3RyaWtldGhyb3VnaCIsICI8
c3BhbiBjbGFzcz1cIkFwcGxlLXN0eWxlLXNwYW5cIiBzdHlsZT1cInRleHQtZGVjb3JhdGlvbjog
bGluZS10aHJvdWdoO1wiPnRlc3Q8L3NwYW4+IiwgInRlc3QiKTsKK3Rlc3RTaW5nbGVUb2dnbGUo
InN0cmlrZXRocm91Z2giLCAiPHNwYW4gY2xhc3M9XCJBcHBsZS1zdHlsZS1zcGFuXCIgc3R5bGU9
XCJ0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZSBsaW5lLXRocm91Z2ggb3ZlcmxpbmU7XCI+dGVz
dDwvc3Bhbj4iLCAiPHNwYW4gY2xhc3M9XCJBcHBsZS1zdHlsZS1zcGFuXCIgc3R5bGU9XCJ0ZXh0
LWRlY29yYXRpb246IHVuZGVybGluZSBvdmVybGluZTtcIj50ZXN0PC9zcGFuPiIpOworCitkb2N1
bWVudC5ib2R5LnJlbW92ZUNoaWxkKHRlc3RDb250YWluZXIpOworCit2YXIgc3VjY2Vzc2Z1bGx5
UGFyc2VkID0gdHJ1ZTsKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCkluZGV4OiBMYXlvdXRU
ZXN0cy9mYXN0L2Nzcy9nZXRDb21wdXRlZFN0eWxlL2dldENvbXB1dGVkU3R5bGUtdGV4dC1kZWNv
cmF0aW9uLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2Nzcy9n
ZXRDb21wdXRlZFN0eWxlL2dldENvbXB1dGVkU3R5bGUtdGV4dC1kZWNvcmF0aW9uLWV4cGVjdGVk
LnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvY3NzL2dldENvbXB1dGVkU3R5
bGUvZ2V0Q29tcHV0ZWRTdHlsZS10ZXh0LWRlY29yYXRpb24tZXhwZWN0ZWQudHh0CShyZXZpc2lv
biAwKQpAQCAtMCwwICsxLDUgQEAKK2hlbGxvCitQQVNTOiB0ZXh0IGRlY29yYXRpb24gc2hvdWxk
IGJlIENTU1ZhbHVlTGlzdAorUEFTUzogdGV4dCBkZWNvcmF0aW9uIHNob3VsZCBiZSBzZXBhcmF0
ZWQgYnkgYSBzaW5nbGUgc3BhY2UKK1BBU1M6IGNvbXB1dGVkIHN0eWxlIG9mIHRleHQgZGVjb3Jh
dGlvbiBzaG91bGQgYmUgQ1NTVmFsdWVMaXN0CitQQVNTOiBjb21wdXRlZCBzdHlsZSBvZiB0ZXh0
IGRlY29yYXRpb24gc2hvdWxkIGJlIHNlcGFyYXRlZCBieSBhIHNpbmdsZSBzcGFjZQpJbmRleDog
TGF5b3V0VGVzdHMvZmFzdC9jc3MvZ2V0Q29tcHV0ZWRTdHlsZS9nZXRDb21wdXRlZFN0eWxlLXRl
eHQtZGVjb3JhdGlvbi5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvY3NzL2dl
dENvbXB1dGVkU3R5bGUvZ2V0Q29tcHV0ZWRTdHlsZS10ZXh0LWRlY29yYXRpb24uaHRtbAkocmV2
aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvY3NzL2dldENvbXB1dGVkU3R5bGUvZ2V0Q29t
cHV0ZWRTdHlsZS10ZXh0LWRlY29yYXRpb24uaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwz
NSBAQAorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQ+CitmdW5jdGlvbiBleHBlY3QoZGVzYywgYWN0
dWFsLCBleHBlY3RlZCkKK3sKKyAgICB2YXIgY29uc29sZSA9IGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKCdjb25zb2xlJyk7CisgICAgdmFyIGl0ZW0gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCds
aScpOworCisgICAgaWYgKGFjdHVhbCA9PSBleHBlY3RlZCkKKyAgICAgICAgaXRlbS5hcHBlbmRD
aGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSgiUEFTUzogIitkZXNjKSk7CisgICAgZWxzZQor
ICAgICAgICBpdGVtLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKCJGQUlMICgi
K2FjdHVhbCsiIEJVVCBFWFBFQ1RFRCAiK2V4cGVjdGVkKyIpOiAiK2Rlc2MpKTsKKyAgICBjb25z
b2xlLmFwcGVuZENoaWxkKGl0ZW0pOworfQorCitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAgICBpZiAo
d2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxl
ci5kdW1wQXNUZXh0KCk7CisKKyAgICB2YXIgZSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0
ZXN0Jyk7CisgICAgZXhwZWN0KCd0ZXh0IGRlY29yYXRpb24gc2hvdWxkIGJlIENTU1ZhbHVlTGlz
dCcsIGUuc3R5bGUuZ2V0UHJvcGVydHlDU1NWYWx1ZSgndGV4dC1kZWNvcmF0aW9uJyksICJbb2Jq
ZWN0IENTU1ZhbHVlTGlzdF0iKTsKKyAgICBleHBlY3QoJ3RleHQgZGVjb3JhdGlvbiBzaG91bGQg
YmUgc2VwYXJhdGVkIGJ5IGEgc2luZ2xlIHNwYWNlJywgZS5zdHlsZS50ZXh0RGVjb3JhdGlvbiwg
InVuZGVybGluZSBsaW5lLXRocm91Z2giKTsKKyAgICBleHBlY3QoJ2NvbXB1dGVkIHN0eWxlIG9m
IHRleHQgZGVjb3JhdGlvbiBzaG91bGQgYmUgQ1NTVmFsdWVMaXN0Jywgd2luZG93LmdldENvbXB1
dGVkU3R5bGUoZSwgbnVsbCkuZ2V0UHJvcGVydHlDU1NWYWx1ZSgndGV4dC1kZWNvcmF0aW9uJyks
ICJbb2JqZWN0IENTU1ZhbHVlTGlzdF0iKTsKKyAgICBleHBlY3QoJ2NvbXB1dGVkIHN0eWxlIG9m
IHRleHQgZGVjb3JhdGlvbiBzaG91bGQgYmUgc2VwYXJhdGVkIGJ5IGEgc2luZ2xlIHNwYWNlJywg
d2luZG93LmdldENvbXB1dGVkU3R5bGUoZSwgbnVsbCkuZ2V0UHJvcGVydHlDU1NWYWx1ZSgndGV4
dC1kZWNvcmF0aW9uJykuY3NzVGV4dCwgInVuZGVybGluZSBsaW5lLXRocm91Z2giKTsKK30KKzwv
c2NyaXB0PgorPC9oZWFkPgorPGJvZHkgb25sb2FkPSJ0ZXN0KCkiPgorPGRpdiBpZD0idGVzdCIg
c3R5bGU9InRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lICAgIAorIGxpbmUtdGhyb3VnaDsiPmhl
bGxvPC9kaXY+Cis8dWwgaWQ9ImNvbnNvbGUiPgorPC91bD4KKzwvYm9keT4KKzwvaHRtbD4K
</data>
<flag name="review"
          id="17604"
          type_id="1"
          status="-"
          setter="eric"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>33308</attachid>
            <date>2009-07-22 18:12:53 -0700</date>
            <delta_ts>2009-07-22 18:29:34 -0700</delta_ts>
            <desc>3rd submission, test for computed style is converted to a js test</desc>
            <filename>fix27476c</filename>
            <type>text/plain</type>
            <size>24616</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA0NjI0OCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMzQgQEAKKzIwMDktMDctMjIgIFJ5b3N1a2UgTml3YSAgPHJuaXdhQHdlYmtpdC5v
cmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgZXhl
Y0NvbW1hbmQoJ3VuZGVybGluZScgLyAnc3RyaWtlVGhyb3VnaCcpIGRvZXNuJ3Qgd29yayBwcm9w
ZXJseSB3aXRoIG11bHRpcGxlIHN0eWxlcyBpbiB0ZXh0LWRlY29yYXRpb24KKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI3NDc2CisKKyAgICAgICAgZXhl
Y3V0ZVN0cmlrZXRocm91Z2ggYW5kIGV4ZWN1dGVVbmRlcmxpbmUgd2VyZSB0b2dnbGluZyBiZXR3
ZWVuICJsaW5lLXRocm91Z2giIC8gInVuZGVybGluZSIgYW5kICJub25lIi4KKyAgICAgICAgVGhp
cyBwYXRjaCBhZGRzIGV4ZWN1dGVUb2dnbGVTdHlsZUluTGlzdCB0aGF0IHRvZ2dsZXMgYSBzdHls
ZSBpbiBDU1NWYWx1ZUxpc3QgaW5zdGVhZCBvZiB0b2dnbGluZyB0aGUgZW50aXJlIHZhbHVlLgor
ICAgICAgICBJdCBtb2RpZmllcyBDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24gdG8gcmV0dXJu
IENTU1ZhbHVlTGlzdCBpbnN0ZWFkIG9mIENTU1ByaW1pdGl2ZVZhbHVlIGZvciB0ZXh0IGRlY29y
YXRpb25zLAorICAgICAgICBhbmQgYWRkcyByZW1vdmVBbGwgbWVtYmVyIGZ1bmN0aW9uIHRvIENT
U1ZhbHVlTGlzdC4KKworICAgICAgICBUZXN0czogZWRpdGluZy9leGVjQ29tbWFuZC90b2dnbGUt
dGV4dC1kZWNvcmF0aW9ucy5odG1sCisgICAgICAgICAgICAgICBmYXN0L2Nzcy9nZXRDb21wdXRl
ZFN0eWxlL2dldENvbXB1dGVkU3R5bGUtdGV4dC1kZWNvcmF0aW9uLmh0bWwKKworICAgICAgICAq
IGNzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6
cmVuZGVyVGV4dERlY29yYXRpb25GbGFnc1RvQ1NTVmFsdWUpOiBDcmVhdGVzIGEgQ1NTVmFsdWVM
aXN0CisgICAgICAgIChXZWJDb3JlOjpDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb246OmdldFBy
b3BlcnR5Q1NTVmFsdWUpOiBSZXR1cm5zIGEgQ1NTVmFsdWVMaXN0IGluc3RlYWQgb2YgQ1NTVmFs
dWUKKyAgICAgICAgKiBjc3MvQ1NTUGFyc2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU1Bh
cnNlcjo6cGFyc2VWYWx1ZSk6IFRleHQgZGVjb3JhdGlvbnMgYXJlIHNwYWNlIHNlcGFyYXRlZCBp
bnN0ZWFkIG9mIGNvbW1hIHNlcGFyYXRlZAorICAgICAgICAqIGNzcy9DU1NWYWx1ZUxpc3QuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Q1NTVmFsdWVMaXN0OjpyZW1vdmVBbGwpOiBSZW1vdmVzIGFs
bCB2YWx1ZXMgdGhhdCBtYXRjaCB0aGUgc3BlY2lmaWVkIHZhbHVlCisgICAgICAgICogY3NzL0NT
U1ZhbHVlTGlzdC5oOgorICAgICAgICAqIGVkaXRpbmcvRWRpdG9yQ29tbWFuZC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjphcHBseUNvbW1hbmRUb0ZyYW1lKTogQXBwbHkgc3R5bGUgdG8gYSBmcmFt
ZSB1c2luZyBzcGVjaWZpZWQgY29tbWFuZAorICAgICAgICAoV2ViQ29yZTo6ZXhlY3V0ZUFwcGx5
U3R5bGUpOiBVc2VzIGFwcGx5Q29tbWFuZFRvRnJhbWUKKyAgICAgICAgKFdlYkNvcmU6OmV4ZWN1
dGVUb2dnbGVTdHlsZUluTGlzdCk6IFVzZXMgYXBwbHlDb21tYW5kVG9GcmFtZQorICAgICAgICAo
V2ViQ29yZTo6ZXhlY3V0ZVRvZ2dsZVN0eWxlKTogVG9nZ2xlcyBhIHN0eWxlIGluIENTU1ZhbHVl
TGlzdAorICAgICAgICAoV2ViQ29yZTo6ZXhlY3V0ZVN0cmlrZXRocm91Z2gpOiBVc2VzIGV4ZWN1
dGVUb2dnbGVTdHlsZUluTGlzdAorICAgICAgICAoV2ViQ29yZTo6ZXhlY3V0ZVVuZGVybGluZSk6
IFVzZXMgZXhlY3V0ZVRvZ2dsZVN0eWxlSW5MaXN0CisKIDIwMDktMDctMjIgIE9saXZlciBIdW50
ICA8b2xpdmVyQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBBZGVsZSBQZXRlcnNv
bi4KSW5kZXg6IFdlYkNvcmUvY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViQ29yZS9jc3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNwcAko
cmV2aXNpb24gNDYyMzkpCisrKyBXZWJDb3JlL2Nzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRp
b24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01OTcsNiArNTk3LDIzIEBAIHN0YXRpYyBQYXNzUmVm
UHRyPENTU1ByaW1pdGl2ZVZhbHVlPiB2YWwKICAgICByZXR1cm4gQ1NTUHJpbWl0aXZlVmFsdWU6
OmNyZWF0ZShmYW1pbHkuc3RyaW5nKCksIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfU1RSSU5HKTsK
IH0KIAorc3RhdGljIFBhc3NSZWZQdHI8Q1NTVmFsdWU+IHJlbmRlclRleHREZWNvcmF0aW9uRmxh
Z3NUb0NTU1ZhbHVlKGludCB0ZXh0RGVjb3JhdGlvbikKK3sKKyAgICBSZWZQdHI8Q1NTVmFsdWVM
aXN0PiBsaXN0ID0gQ1NTVmFsdWVMaXN0OjpjcmVhdGVTcGFjZVNlcGFyYXRlZCgpOworICAgIGlm
ICh0ZXh0RGVjb3JhdGlvbiAmIFVOREVSTElORSkKKyAgICAgICAgbGlzdC0+YXBwZW5kKENTU1By
aW1pdGl2ZVZhbHVlOjpjcmVhdGVJZGVudGlmaWVyKENTU1ZhbHVlVW5kZXJsaW5lKSk7CisgICAg
aWYgKHRleHREZWNvcmF0aW9uICYgT1ZFUkxJTkUpCisgICAgICAgIGxpc3QtPmFwcGVuZChDU1NQ
cmltaXRpdmVWYWx1ZTo6Y3JlYXRlSWRlbnRpZmllcihDU1NWYWx1ZU92ZXJsaW5lKSk7CisgICAg
aWYgKHRleHREZWNvcmF0aW9uICYgTElORV9USFJPVUdIKQorICAgICAgICBsaXN0LT5hcHBlbmQo
Q1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZUlkZW50aWZpZXIoQ1NTVmFsdWVMaW5lVGhyb3VnaCkp
OworICAgIGlmICh0ZXh0RGVjb3JhdGlvbiAmIEJMSU5LKQorICAgICAgICBsaXN0LT5hcHBlbmQo
Q1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZUlkZW50aWZpZXIoQ1NTVmFsdWVCbGluaykpOworCisg
ICAgaWYgKCFsaXN0LT5sZW5ndGgoKSkKKyAgICAgICAgcmV0dXJuIENTU1ByaW1pdGl2ZVZhbHVl
OjpjcmVhdGVJZGVudGlmaWVyKENTU1ZhbHVlTm9uZSk7CisgICAgcmV0dXJuIGxpc3Q7Cit9CisK
IFBhc3NSZWZQdHI8Q1NTVmFsdWU+IENTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbjo6Z2V0UHJv
cGVydHlDU1NWYWx1ZShpbnQgcHJvcGVydHlJRCwgRVVwZGF0ZUxheW91dCB1cGRhdGVMYXlvdXQp
IGNvbnN0CiB7CiAgICAgTm9kZSogbm9kZSA9IG1fbm9kZS5nZXQoKTsKQEAgLTk5OSw1MiArMTAx
NiwxMCBAQCBQYXNzUmVmUHRyPENTU1ZhbHVlPiBDU1NDb21wdXRlZFN0eWxlRGVjCiAgICAgICAg
ICAgICByZXR1cm4gQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZShzdHlsZS0+dGFibGVMYXlvdXQo
KSk7CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlUZXh0QWxpZ246CiAgICAgICAgICAgICByZXR1
cm4gQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZShzdHlsZS0+dGV4dEFsaWduKCkpOwotICAgICAg
ICBjYXNlIENTU1Byb3BlcnR5VGV4dERlY29yYXRpb246IHsKLSAgICAgICAgICAgIFN0cmluZyBz
dHJpbmc7Ci0gICAgICAgICAgICBpZiAoc3R5bGUtPnRleHREZWNvcmF0aW9uKCkgJiBVTkRFUkxJ
TkUpCi0gICAgICAgICAgICAgICAgc3RyaW5nICs9ICJ1bmRlcmxpbmUiOwotICAgICAgICAgICAg
aWYgKHN0eWxlLT50ZXh0RGVjb3JhdGlvbigpICYgT1ZFUkxJTkUpIHsKLSAgICAgICAgICAgICAg
ICBpZiAoc3RyaW5nLmxlbmd0aCgpKQotICAgICAgICAgICAgICAgICAgICBzdHJpbmcgKz0gIiAi
OwotICAgICAgICAgICAgICAgIHN0cmluZyArPSAib3ZlcmxpbmUiOwotICAgICAgICAgICAgfQot
ICAgICAgICAgICAgaWYgKHN0eWxlLT50ZXh0RGVjb3JhdGlvbigpICYgTElORV9USFJPVUdIKSB7
Ci0gICAgICAgICAgICAgICAgaWYgKHN0cmluZy5sZW5ndGgoKSkKLSAgICAgICAgICAgICAgICAg
ICAgc3RyaW5nICs9ICIgIjsKLSAgICAgICAgICAgICAgICBzdHJpbmcgKz0gImxpbmUtdGhyb3Vn
aCI7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBpZiAoc3R5bGUtPnRleHREZWNvcmF0aW9u
KCkgJiBCTElOSykgewotICAgICAgICAgICAgICAgIGlmIChzdHJpbmcubGVuZ3RoKCkpCi0gICAg
ICAgICAgICAgICAgICAgIHN0cmluZyArPSAiICI7Ci0gICAgICAgICAgICAgICAgc3RyaW5nICs9
ICJibGluayI7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBpZiAoIXN0cmluZy5sZW5ndGgo
KSkKLSAgICAgICAgICAgICAgICByZXR1cm4gQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZUlkZW50
aWZpZXIoQ1NTVmFsdWVOb25lKTsKLSAgICAgICAgICAgIHJldHVybiBDU1NQcmltaXRpdmVWYWx1
ZTo6Y3JlYXRlKHN0cmluZywgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19TVFJJTkcpOwotICAgICAg
ICB9Ci0gICAgICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRUZXh0RGVjb3JhdGlvbnNJbkVmZmVj
dDogewotICAgICAgICAgICAgU3RyaW5nIHN0cmluZzsKLSAgICAgICAgICAgIGlmIChzdHlsZS0+
dGV4dERlY29yYXRpb25zSW5FZmZlY3QoKSAmIFVOREVSTElORSkKLSAgICAgICAgICAgICAgICBz
dHJpbmcgKz0gInVuZGVybGluZSI7Ci0gICAgICAgICAgICBpZiAoc3R5bGUtPnRleHREZWNvcmF0
aW9uc0luRWZmZWN0KCkgJiBPVkVSTElORSkgewotICAgICAgICAgICAgICAgIGlmIChzdHJpbmcu
bGVuZ3RoKCkpCi0gICAgICAgICAgICAgICAgICAgIHN0cmluZyArPSAiICI7Ci0gICAgICAgICAg
ICAgICAgc3RyaW5nICs9ICJvdmVybGluZSI7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBp
ZiAoc3R5bGUtPnRleHREZWNvcmF0aW9uc0luRWZmZWN0KCkgJiBMSU5FX1RIUk9VR0gpIHsKLSAg
ICAgICAgICAgICAgICBpZiAoc3RyaW5nLmxlbmd0aCgpKQotICAgICAgICAgICAgICAgICAgICBz
dHJpbmcgKz0gIiAiOwotICAgICAgICAgICAgICAgIHN0cmluZyArPSAibGluZS10aHJvdWdoIjsK
LSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGlmIChzdHlsZS0+dGV4dERlY29yYXRpb25zSW5F
ZmZlY3QoKSAmIEJMSU5LKSB7Ci0gICAgICAgICAgICAgICAgaWYgKHN0cmluZy5sZW5ndGgoKSkK
LSAgICAgICAgICAgICAgICAgICAgc3RyaW5nICs9ICIgIjsKLSAgICAgICAgICAgICAgICBzdHJp
bmcgKz0gImJsaW5rIjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGlmICghc3RyaW5nLmxl
bmd0aCgpKQotICAgICAgICAgICAgICAgIHJldHVybiBDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRl
SWRlbnRpZmllcihDU1NWYWx1ZU5vbmUpOwotICAgICAgICAgICAgcmV0dXJuIENTU1ByaW1pdGl2
ZVZhbHVlOjpjcmVhdGUoc3RyaW5nLCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1NUUklORyk7Ci0g
ICAgICAgIH0KKyAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eVRleHREZWNvcmF0aW9uOgorICAgICAg
ICAgICAgcmV0dXJuIHJlbmRlclRleHREZWNvcmF0aW9uRmxhZ3NUb0NTU1ZhbHVlKHN0eWxlLT50
ZXh0RGVjb3JhdGlvbigpKTsKKyAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFRleHREZWNv
cmF0aW9uc0luRWZmZWN0OgorICAgICAgICAgICAgcmV0dXJuIHJlbmRlclRleHREZWNvcmF0aW9u
RmxhZ3NUb0NTU1ZhbHVlKHN0eWxlLT50ZXh0RGVjb3JhdGlvbnNJbkVmZmVjdCgpKTsKICAgICAg
ICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFRleHRGaWxsQ29sb3I6CiAgICAgICAgICAgICByZXR1
cm4gY3VycmVudENvbG9yT3JWYWxpZENvbG9yKHN0eWxlLmdldCgpLCBzdHlsZS0+dGV4dEZpbGxD
b2xvcigpKTsKICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eVRleHRJbmRlbnQ6CkluZGV4OiBXZWJD
b3JlL2Nzcy9DU1NQYXJzZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvY3NzL0NTU1BhcnNl
ci5jcHAJKHJldmlzaW9uIDQ2MjM5KQorKysgV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMTA1Miw3ICsxMDUyLDcgQEAgYm9vbCBDU1NQYXJzZXI6OnBhcnNlVmFs
dWUoaW50IHByb3BJZCwgYgogICAgICAgICBpZiAoaWQgPT0gQ1NTVmFsdWVOb25lKSB7CiAgICAg
ICAgICAgICB2YWxpZF9wcmltaXRpdmUgPSB0cnVlOwogICAgICAgICB9IGVsc2UgewotICAgICAg
ICAgICAgUmVmUHRyPENTU1ZhbHVlTGlzdD4gbGlzdCA9IENTU1ZhbHVlTGlzdDo6Y3JlYXRlQ29t
bWFTZXBhcmF0ZWQoKTsKKyAgICAgICAgICAgIFJlZlB0cjxDU1NWYWx1ZUxpc3Q+IGxpc3QgPSBD
U1NWYWx1ZUxpc3Q6OmNyZWF0ZVNwYWNlU2VwYXJhdGVkKCk7CiAgICAgICAgICAgICBib29sIGlz
X3ZhbGlkID0gdHJ1ZTsKICAgICAgICAgICAgIHdoaWxlIChpc192YWxpZCAmJiB2YWx1ZSkgewog
ICAgICAgICAgICAgICAgIHN3aXRjaCAodmFsdWUtPmlkKSB7CkluZGV4OiBXZWJDb3JlL2Nzcy9D
U1NWYWx1ZUxpc3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvY3NzL0NTU1ZhbHVlTGlzdC5j
cHAJKHJldmlzaW9uIDQ2MjM5KQorKysgV2ViQ29yZS9jc3MvQ1NTVmFsdWVMaXN0LmNwcAkod29y
a2luZyBjb3B5KQpAQCAtNzAsNiArNzAsMjEgQEAgdm9pZCBDU1NWYWx1ZUxpc3Q6OnByZXBlbmQo
UGFzc1JlZlB0cjxDUwogICAgIG1fdmFsdWVzLnByZXBlbmQodmFsKTsKIH0KIAorYm9vbCBDU1NW
YWx1ZUxpc3Q6OnJlbW92ZUFsbChDU1NWYWx1ZSogdmFsKQoreworICAgIGJvb2wgZm91bmQgPSBm
YWxzZTsKKyAgICAvLyBGSVhNRTogd2Ugc2hvdWxkIGJlIGltcGxlbWVudGluZyBvcGVyYXRvcj09
IHRvIENTU1ZhbHVlIGFuZCBpdHMgZGVyaXZlZCBjbGFzc2VzCisgICAgLy8gdG8gbWFrZSBjb21w
YXJpc29uIG1vcmUgZmxleGlibGUgYW5kIGZhc3QuCisgICAgZm9yIChzaXplX3QgaW5kZXggPSAw
OyBpbmRleCA8IG1fdmFsdWVzLnNpemUoKTsgaW5kZXgrKykgeworICAgICAgICBpZiAobV92YWx1
ZXMuYXQoaW5kZXgpLT5jc3NUZXh0KCkgPT0gdmFsLT5jc3NUZXh0KCkpIHsKKyAgICAgICAgICAg
IG1fdmFsdWVzLnJlbW92ZShpbmRleCk7CisgICAgICAgICAgICBmb3VuZCA9IHRydWU7CisgICAg
ICAgIH0KKyAgICB9CisgICAgCisgICAgcmV0dXJuIGZvdW5kOworfQorCiBTdHJpbmcgQ1NTVmFs
dWVMaXN0Ojpjc3NUZXh0KCkgY29uc3QKIHsKICAgICBTdHJpbmcgcmVzdWx0ID0gIiI7CkluZGV4
OiBXZWJDb3JlL2Nzcy9DU1NWYWx1ZUxpc3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2Nzcy9D
U1NWYWx1ZUxpc3QuaAkocmV2aXNpb24gNDYyMzkpCisrKyBXZWJDb3JlL2Nzcy9DU1NWYWx1ZUxp
c3QuaAkod29ya2luZyBjb3B5KQpAQCAtNTIsNiArNTIsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lk
IGFwcGVuZChQYXNzUmVmUHRyPENTU1ZhbHVlPik7CiAgICAgdm9pZCBwcmVwZW5kKFBhc3NSZWZQ
dHI8Q1NTVmFsdWU+KTsKKyAgICBib29sIHJlbW92ZUFsbChDU1NWYWx1ZSopOwogCiAgICAgdmly
dHVhbCBTdHJpbmcgY3NzVGV4dCgpIGNvbnN0OwogCkluZGV4OiBXZWJDb3JlL2VkaXRpbmcvRWRp
dG9yQ29tbWFuZC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9lZGl0aW5nL0VkaXRvckNvbW1h
bmQuY3BwCShyZXZpc2lvbiA0NjIzOSkKKysrIFdlYkNvcmUvZWRpdGluZy9FZGl0b3JDb21tYW5k
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjcsNiArMjcsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5o
IgogCiAjaW5jbHVkZSAiQXRvbWljU3RyaW5nLmgiCisjaW5jbHVkZSAiQ1NTQ29tcHV0ZWRTdHls
ZURlY2xhcmF0aW9uLmgiCiAjaW5jbHVkZSAiQ1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb24uaCIK
ICNpbmNsdWRlICJDU1NQcm9wZXJ0eU5hbWVzLmgiCiAjaW5jbHVkZSAiQ1NTVmFsdWVLZXl3b3Jk
cy5oIgpAQCAtODksNjQgKzkwLDcxIEBAIHN0YXRpYyBGcmFtZSogdGFyZ2V0RnJhbWUoRnJhbWUq
IGZyYW1lLCAKICAgICByZXR1cm4gbm9kZS0+ZG9jdW1lbnQoKS0+ZnJhbWUoKTsKIH0KIAotc3Rh
dGljIGJvb2wgZXhlY3V0ZUFwcGx5U3R5bGUoRnJhbWUqIGZyYW1lLCBFZGl0b3JDb21tYW5kU291
cmNlIHNvdXJjZSwgRWRpdEFjdGlvbiBhY3Rpb24sIGludCBwcm9wZXJ0eUlELCBjb25zdCBTdHJp
bmcmIHByb3BlcnR5VmFsdWUpCitzdGF0aWMgYm9vbCBhcHBseUNvbW1hbmRUb0ZyYW1lKEZyYW1l
KiBmcmFtZSwgRWRpdG9yQ29tbWFuZFNvdXJjZSBzb3VyY2UsIEVkaXRBY3Rpb24gYWN0aW9uLCBD
U1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbiogc3R5bGUpCiB7Ci0gICAgUmVmUHRyPENTU011dGFi
bGVTdHlsZURlY2xhcmF0aW9uPiBzdHlsZSA9IENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uOjpj
cmVhdGUoKTsKLSAgICBzdHlsZS0+c2V0UHJvcGVydHkocHJvcGVydHlJRCwgcHJvcGVydHlWYWx1
ZSk7CiAgICAgLy8gRklYTUU6IFdlIGRvbid0IGNhbGwgc2hvdWxkQXBwbHlTdHlsZSB3aGVuIHRo
ZSBzb3VyY2UgaXMgRE9NOyBpcyB0aGVyZSBhIGdvb2QgcmVhc29uIGZvciB0aGF0PwogICAgIHN3
aXRjaCAoc291cmNlKSB7CiAgICAgICAgIGNhc2UgQ29tbWFuZEZyb21NZW51T3JLZXlCaW5kaW5n
OgotICAgICAgICAgICAgZnJhbWUtPmVkaXRvcigpLT5hcHBseVN0eWxlVG9TZWxlY3Rpb24oc3R5
bGUuZ2V0KCksIGFjdGlvbik7CisgICAgICAgICAgICBmcmFtZS0+ZWRpdG9yKCktPmFwcGx5U3R5
bGVUb1NlbGVjdGlvbihzdHlsZSwgYWN0aW9uKTsKICAgICAgICAgICAgIHJldHVybiB0cnVlOwog
ICAgICAgICBjYXNlIENvbW1hbmRGcm9tRE9NOgogICAgICAgICBjYXNlIENvbW1hbmRGcm9tRE9N
V2l0aFVzZXJJbnRlcmZhY2U6Ci0gICAgICAgICAgICBmcmFtZS0+ZWRpdG9yKCktPmFwcGx5U3R5
bGUoc3R5bGUuZ2V0KCkpOworICAgICAgICAgICAgZnJhbWUtPmVkaXRvcigpLT5hcHBseVN0eWxl
KHN0eWxlKTsKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KICAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLXN0YXRpYyBib29sIGV4ZWN1dGVB
cHBseVN0eWxlKEZyYW1lKiBmcmFtZSwgRWRpdG9yQ29tbWFuZFNvdXJjZSBzb3VyY2UsIEVkaXRB
Y3Rpb24gYWN0aW9uLCBpbnQgcHJvcGVydHlJRCwgY29uc3QgY2hhciogcHJvcGVydHlWYWx1ZSkK
K3N0YXRpYyBib29sIGV4ZWN1dGVBcHBseVN0eWxlKEZyYW1lKiBmcmFtZSwgRWRpdG9yQ29tbWFu
ZFNvdXJjZSBzb3VyY2UsIEVkaXRBY3Rpb24gYWN0aW9uLCBpbnQgcHJvcGVydHlJRCwgY29uc3Qg
U3RyaW5nJiBwcm9wZXJ0eVZhbHVlKQogewotICAgIHJldHVybiBleGVjdXRlQXBwbHlTdHlsZShm
cmFtZSwgc291cmNlLCBhY3Rpb24sIHByb3BlcnR5SUQsIFN0cmluZyhwcm9wZXJ0eVZhbHVlKSk7
CisgICAgUmVmUHRyPENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uPiBzdHlsZSA9IENTU011dGFi
bGVTdHlsZURlY2xhcmF0aW9uOjpjcmVhdGUoKTsKKyAgICBzdHlsZS0+c2V0UHJvcGVydHkocHJv
cGVydHlJRCwgcHJvcGVydHlWYWx1ZSk7CisgICAgcmV0dXJuIGFwcGx5Q29tbWFuZFRvRnJhbWUo
ZnJhbWUsIHNvdXJjZSwgYWN0aW9uLCBzdHlsZS5nZXQoKSk7CiB9CiAKIHN0YXRpYyBib29sIGV4
ZWN1dGVBcHBseVN0eWxlKEZyYW1lKiBmcmFtZSwgRWRpdG9yQ29tbWFuZFNvdXJjZSBzb3VyY2Us
IEVkaXRBY3Rpb24gYWN0aW9uLCBpbnQgcHJvcGVydHlJRCwgaW50IHByb3BlcnR5VmFsdWUpCiB7
CiAgICAgUmVmUHRyPENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uPiBzdHlsZSA9IENTU011dGFi
bGVTdHlsZURlY2xhcmF0aW9uOjpjcmVhdGUoKTsKICAgICBzdHlsZS0+c2V0UHJvcGVydHkocHJv
cGVydHlJRCwgcHJvcGVydHlWYWx1ZSk7Ci0gICAgLy8gRklYTUU6IFdlIGRvbid0IGNhbGwgc2hv
dWxkQXBwbHlTdHlsZSB3aGVuIHRoZSBzb3VyY2UgaXMgRE9NOyBpcyB0aGVyZSBhIGdvb2QgcmVh
c29uIGZvciB0aGF0PwotICAgIHN3aXRjaCAoc291cmNlKSB7Ci0gICAgICAgIGNhc2UgQ29tbWFu
ZEZyb21NZW51T3JLZXlCaW5kaW5nOgotICAgICAgICAgICAgZnJhbWUtPmVkaXRvcigpLT5hcHBs
eVN0eWxlVG9TZWxlY3Rpb24oc3R5bGUuZ2V0KCksIGFjdGlvbik7Ci0gICAgICAgICAgICByZXR1
cm4gdHJ1ZTsKLSAgICAgICAgY2FzZSBDb21tYW5kRnJvbURPTToKLSAgICAgICAgY2FzZSBDb21t
YW5kRnJvbURPTVdpdGhVc2VySW50ZXJmYWNlOgotICAgICAgICAgICAgZnJhbWUtPmVkaXRvcigp
LT5hcHBseVN0eWxlKHN0eWxlLmdldCgpKTsKLSAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAg
IH0KLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1cm4gZmFsc2U7CisgICAgcmV0
dXJuIGFwcGx5Q29tbWFuZFRvRnJhbWUoZnJhbWUsIHNvdXJjZSwgYWN0aW9uLCBzdHlsZS5nZXQo
KSk7CiB9CiAKK3N0YXRpYyBib29sIGV4ZWN1dGVUb2dnbGVTdHlsZUluTGlzdChGcmFtZSogZnJh
bWUsIEVkaXRvckNvbW1hbmRTb3VyY2Ugc291cmNlLCBFZGl0QWN0aW9uIGFjdGlvbiwgaW50IHBy
b3BlcnR5SUQsIENTU1ZhbHVlKiB2YWx1ZSkKK3sKKyAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsK
KyAgICBOb2RlKiBub2RlVG9SZW1vdmUgPSAwOworICAgIFJlZlB0cjxDU1NDb21wdXRlZFN0eWxl
RGVjbGFyYXRpb24+IHNlbGVjdGlvblN0eWxlID0gZnJhbWUtPnNlbGVjdGlvbkNvbXB1dGVkU3R5
bGUobm9kZVRvUmVtb3ZlKTsKKyAgICBSZWZQdHI8Q1NTVmFsdWU+IHNlbGVjdGVkQ1NTVmFsdWUg
PSBzZWxlY3Rpb25TdHlsZS0+Z2V0UHJvcGVydHlDU1NWYWx1ZShwcm9wZXJ0eUlEKTsKKyAgICBT
dHJpbmcgbmV3U3R5bGUgPSAibm9uZSI7CisgICAgaWYgKHNlbGVjdGVkQ1NTVmFsdWUtPmlzVmFs
dWVMaXN0KCkpIHsKKyAgICAgICAgUmVmUHRyPENTU1ZhbHVlTGlzdD4gc2VsZWN0ZWRDU1NWYWx1
ZUxpc3QgPSBzdGF0aWNfY2FzdDxDU1NWYWx1ZUxpc3QqPihzZWxlY3RlZENTU1ZhbHVlLmdldCgp
KTsKKyAgICAgICAgaWYgKCFzZWxlY3RlZENTU1ZhbHVlTGlzdC0+cmVtb3ZlQWxsKHZhbHVlKSkK
KyAgICAgICAgICAgIHNlbGVjdGVkQ1NTVmFsdWVMaXN0LT5hcHBlbmQodmFsdWUpOworICAgICAg
ICBpZiAoc2VsZWN0ZWRDU1NWYWx1ZUxpc3QtPmxlbmd0aCgpKQorICAgICAgICAgICAgbmV3U3R5
bGUgPSBzZWxlY3RlZENTU1ZhbHVlTGlzdC0+Y3NzVGV4dCgpOworCisgICAgfSBlbHNlIGlmIChz
ZWxlY3RlZENTU1ZhbHVlLT5jc3NUZXh0KCkgPT0gIm5vbmUiKQorICAgICAgICBuZXdTdHlsZSA9
IHZhbHVlLT5jc3NUZXh0KCk7CisKKyAgICBBU1NFUlQoZWMgPT0gMCk7CisgICAgaWYgKG5vZGVU
b1JlbW92ZSkgeworICAgICAgICBub2RlVG9SZW1vdmUtPnJlbW92ZShlYyk7CisgICAgICAgIEFT
U0VSVChlYyA9PSAwKTsKKyAgICB9CisKKyAgICAvLyBGSVhNRTogV2Ugc2hvdWxkbid0IGJlIGhh
dmluZyB0byBjb252ZXJ0IG5ldyBzdHlsZSBpbnRvIHRleHQuICBXZSBzaG91bGQgaGF2ZSBzZXRQ
cm9wZXJ0eUNTU1ZhbHVlLgorICAgIFJlZlB0cjxDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbj4g
bmV3TXV0YWJsZVN0eWxlID0gQ1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb246OmNyZWF0ZSgpOwor
ICAgIG5ld011dGFibGVTdHlsZS0+c2V0UHJvcGVydHkocHJvcGVydHlJRCwgbmV3U3R5bGUsZWMp
OworICAgIHJldHVybiBhcHBseUNvbW1hbmRUb0ZyYW1lKGZyYW1lLCBzb3VyY2UsIGFjdGlvbiwg
bmV3TXV0YWJsZVN0eWxlLmdldCgpKTsKK30KKyAgICAKIHN0YXRpYyBib29sIGV4ZWN1dGVUb2dn
bGVTdHlsZShGcmFtZSogZnJhbWUsIEVkaXRvckNvbW1hbmRTb3VyY2Ugc291cmNlLCBFZGl0QWN0
aW9uIGFjdGlvbiwgaW50IHByb3BlcnR5SUQsIGNvbnN0IGNoYXIqIG9mZlZhbHVlLCBjb25zdCBj
aGFyKiBvblZhbHVlKQogewogICAgIFJlZlB0cjxDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbj4g
c3R5bGUgPSBDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbjo6Y3JlYXRlKCk7CiAgICAgc3R5bGUt
PnNldFByb3BlcnR5KHByb3BlcnR5SUQsIG9uVmFsdWUpOwogICAgIHN0eWxlLT5zZXRQcm9wZXJ0
eShwcm9wZXJ0eUlELCBmcmFtZS0+ZWRpdG9yKCktPnNlbGVjdGlvblN0YXJ0SGFzU3R5bGUoc3R5
bGUuZ2V0KCkpID8gb2ZmVmFsdWUgOiBvblZhbHVlKTsKLSAgICAvLyBGSVhNRTogV2UgZG9uJ3Qg
Y2FsbCBzaG91bGRBcHBseVN0eWxlIHdoZW4gdGhlIHNvdXJjZSBpcyBET007IGlzIHRoZXJlIGEg
Z29vZCByZWFzb24gZm9yIHRoYXQ/Ci0gICAgc3dpdGNoIChzb3VyY2UpIHsKLSAgICAgICAgY2Fz
ZSBDb21tYW5kRnJvbU1lbnVPcktleUJpbmRpbmc6Ci0gICAgICAgICAgICBmcmFtZS0+ZWRpdG9y
KCktPmFwcGx5U3R5bGVUb1NlbGVjdGlvbihzdHlsZS5nZXQoKSwgYWN0aW9uKTsKLSAgICAgICAg
ICAgIHJldHVybiB0cnVlOwotICAgICAgICBjYXNlIENvbW1hbmRGcm9tRE9NOgotICAgICAgICBj
YXNlIENvbW1hbmRGcm9tRE9NV2l0aFVzZXJJbnRlcmZhY2U6Ci0gICAgICAgICAgICBmcmFtZS0+
ZWRpdG9yKCktPmFwcGx5U3R5bGUoc3R5bGUuZ2V0KCkpOwotICAgICAgICAgICAgcmV0dXJuIHRy
dWU7Ci0gICAgfQotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIHJldHVybiBmYWxzZTsK
KyAgICByZXR1cm4gYXBwbHlDb21tYW5kVG9GcmFtZShmcmFtZSwgc291cmNlLCBhY3Rpb24sIHN0
eWxlLmdldCgpKTsKIH0KIAogc3RhdGljIGJvb2wgZXhlY3V0ZUFwcGx5UGFyYWdyYXBoU3R5bGUo
RnJhbWUqIGZyYW1lLCBFZGl0b3JDb21tYW5kU291cmNlIHNvdXJjZSwgRWRpdEFjdGlvbiBhY3Rp
b24sIGludCBwcm9wZXJ0eUlELCBjb25zdCBTdHJpbmcmIHByb3BlcnR5VmFsdWUpCkBAIC05Mzcs
NyArOTQ1LDggQEAgc3RhdGljIGJvb2wgZXhlY3V0ZVNldE1hcmsoRnJhbWUqIGZyYW1lLAogCiBz
dGF0aWMgYm9vbCBleGVjdXRlU3RyaWtldGhyb3VnaChGcmFtZSogZnJhbWUsIEV2ZW50KiwgRWRp
dG9yQ29tbWFuZFNvdXJjZSBzb3VyY2UsIGNvbnN0IFN0cmluZyYpCiB7Ci0gICAgcmV0dXJuIGV4
ZWN1dGVUb2dnbGVTdHlsZShmcmFtZSwgc291cmNlLCBFZGl0QWN0aW9uQ2hhbmdlQXR0cmlidXRl
cywgQ1NTUHJvcGVydHlXZWJraXRUZXh0RGVjb3JhdGlvbnNJbkVmZmVjdCwgIm5vbmUiLCAibGlu
ZS10aHJvdWdoIik7CisgICAgUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBsaW5lVGhyb3VnaCA9
IENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGVJZGVudGlmaWVyKENTU1ZhbHVlTGluZVRocm91Z2gp
OworICAgIHJldHVybiBleGVjdXRlVG9nZ2xlU3R5bGVJbkxpc3QoZnJhbWUsIHNvdXJjZSwgRWRp
dEFjdGlvblVuZGVybGluZSwgQ1NTUHJvcGVydHlXZWJraXRUZXh0RGVjb3JhdGlvbnNJbkVmZmVj
dCwgbGluZVRocm91Z2guZ2V0KCkpOwogfQogCiBzdGF0aWMgYm9vbCBleGVjdXRlU3R5bGVXaXRo
Q1NTKEZyYW1lKiBmcmFtZSwgRXZlbnQqLCBFZGl0b3JDb21tYW5kU291cmNlLCBjb25zdCBTdHJp
bmcmIHZhbHVlKQpAQCAtOTkwLDggKzk5OSw4IEBAIHN0YXRpYyBib29sIGV4ZWN1dGVUcmFuc3Bv
c2UoRnJhbWUqIGZyYW0KIAogc3RhdGljIGJvb2wgZXhlY3V0ZVVuZGVybGluZShGcmFtZSogZnJh
bWUsIEV2ZW50KiwgRWRpdG9yQ29tbWFuZFNvdXJjZSBzb3VyY2UsIGNvbnN0IFN0cmluZyYpCiB7
Ci0gICAgLy8gRklYTUU6IFRoaXMgY3VycmVudGx5IGNsZWFycyBvdmVybGluZSwgbGluZS10aHJv
dWdoLCBhbmQgYmxpbmsgYXMgYW4gdW53YW50ZWQgc2lkZSBlZmZlY3QuCi0gICAgcmV0dXJuIGV4
ZWN1dGVUb2dnbGVTdHlsZShmcmFtZSwgc291cmNlLCBFZGl0QWN0aW9uVW5kZXJsaW5lLCBDU1NQ
cm9wZXJ0eVdlYmtpdFRleHREZWNvcmF0aW9uc0luRWZmZWN0LCAibm9uZSIsICJ1bmRlcmxpbmUi
KTsKKyAgICBSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IHVuZGVybGluZSA9IENTU1ByaW1pdGl2
ZVZhbHVlOjpjcmVhdGVJZGVudGlmaWVyKENTU1ZhbHVlVW5kZXJsaW5lKTsKKyAgICByZXR1cm4g
ZXhlY3V0ZVRvZ2dsZVN0eWxlSW5MaXN0KGZyYW1lLCBzb3VyY2UsIEVkaXRBY3Rpb25VbmRlcmxp
bmUsIENTU1Byb3BlcnR5V2Via2l0VGV4dERlY29yYXRpb25zSW5FZmZlY3QsIHVuZGVybGluZS5n
ZXQoKSk7CiB9CiAKIHN0YXRpYyBib29sIGV4ZWN1dGVVbmRvKEZyYW1lKiBmcmFtZSwgRXZlbnQq
LCBFZGl0b3JDb21tYW5kU291cmNlLCBjb25zdCBTdHJpbmcmKQpJbmRleDogTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24g
NDYyNTApCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyAr
MSwyNyBAQAorMjAwOS0wNy0yMiAgUnlvc3VrZSBOaXdhICA8cm5pd2FAd2Via2l0Lm9yZz4KKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBleGVjQ29tbWFu
ZCgndW5kZXJsaW5lJyAvICdzdHJpa2VUaHJvdWdoJykgZG9lc24ndCB3b3JrIHByb3Blcmx5IHdp
dGggbXVsdGlwbGUgc3R5bGVzIGluIHRleHQtZGVjb3JhdGlvbgorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Mjc0NzYKKworICAgICAgICB0b2dnbGUtdGV4
dC1kZWNvcmF0aW9ucyBjaGVja3Mgd2hldGhlciB3ZSBjYW4gdG9nZ2xlIHRleHQgZGVjb3JhdGlv
bnMgd2l0aCBtdWx0aXBsZSBzdHlsZXMgcHJvcGVybHkuCisgICAgICAgIGUuZy4gZXhlY0NvbW1h
bmQoInVuZGVybGluZSIpIHNob3VsZCBtb2RpZnkgInRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5l
IG92ZXJsaW5lIiB0byAidGV4dC1kZWNvcmF0aW9uOiBvdmVybGluZSIKKworICAgICAgICBnZXRD
b21wdXRlZFN0eWxlLXRleHQtZGVjb3JhdGlvbnMgY2hlY2tzIHdoZXRoZXIgdGhlIENTUyB2YWx1
ZSBvZiB0ZXh0IGRlY29yYXRpb24gYW5kIGl0cyBjb21wdXRlZCBzdHlsZSBhcmUKKyAgICAgICAg
Ym90aCBzcGFjZS1zZXBhcmF0ZWQgQ1NTVmFsdWVMaXN0IGluc3RlYWQgb2YgQ1NTUHJpbWl0aXZl
VmFsdWUgb3IgY29tbWEtc2VwYXJhdGVkIENTU1ZhbHVlTGlzdC4KKworICAgICAgICAqIGVkaXRp
bmcvZXhlY0NvbW1hbmQvcmVzb3VyY2VzL3RvZ2dsZS10ZXh0LWRlY29yYXRpb25zLmpzOiBBZGRl
ZC4KKyAgICAgICAgKHRlc3RTaW5nbGVUb2dnbGUpOgorICAgICAgICAqIGVkaXRpbmcvZXhlY0Nv
bW1hbmQvdG9nZ2xlLXRleHQtZGVjb3JhdGlvbnMtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAg
ICAgKiBlZGl0aW5nL2V4ZWNDb21tYW5kL3RvZ2dsZS10ZXh0LWRlY29yYXRpb25zLmh0bWw6IEFk
ZGVkLgorICAgICAgICAqIGZhc3QvY3NzL2dldENvbXB1dGVkU3R5bGUvZ2V0Q29tcHV0ZWRTdHls
ZS10ZXh0LWRlY29yYXRpb24tZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2Nz
cy9nZXRDb21wdXRlZFN0eWxlL2dldENvbXB1dGVkU3R5bGUtdGV4dC1kZWNvcmF0aW9uLmh0bWw6
IEFkZGVkLgorICAgICAgICAqIGZhc3QvY3NzL2dldENvbXB1dGVkU3R5bGUvcmVzb3VyY2VzOiBB
ZGRlZC4KKyAgICAgICAgKiBmYXN0L2Nzcy9nZXRDb21wdXRlZFN0eWxlL3Jlc291cmNlcy9URU1Q
TEFURS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2Nzcy9nZXRDb21wdXRlZFN0eWxlL3Jl
c291cmNlcy9nZXRDb21wdXRlZFN0eWxlLXRleHQtZGVjb3JhdGlvbi5qczogQWRkZWQuCisgICAg
ICAgIChleHBlY3QpOgorCiAyMDA5LTA3LTIyICBEYW5pZWwgQmF0ZXMgIDxkYmF0ZXNAaW50dWRh
dGEuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEFkYW0gQmFydGguCkluZGV4OiBMYXlvdXRU
ZXN0cy9lZGl0aW5nL2V4ZWNDb21tYW5kL3RvZ2dsZS10ZXh0LWRlY29yYXRpb25zLWV4cGVjdGVk
LnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9lZGl0aW5nL2V4ZWNDb21tYW5kL3RvZ2ds
ZS10ZXh0LWRlY29yYXRpb25zLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRl
c3RzL2VkaXRpbmcvZXhlY0NvbW1hbmQvdG9nZ2xlLXRleHQtZGVjb3JhdGlvbnMtZXhwZWN0ZWQu
dHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDE1IEBACitUZXN0IHRvIG1ha2Ugc3VyZSB3ZSBj
YW4gdG9nZ2xlIHRleHQgZGVjb3JhdGlvbnMgY29ycmVjdGx5LgorCitPbiBzdWNjZXNzLCB5b3Ug
d2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBD
T01QTEVURSIuCisKKworUEFTUyBvbmUgdW5kZXJsaW5lIGNvbW1hbmQgY29udmVydGVkIHRlc3Qg
dG8gPHNwYW4gY2xhc3M9IkFwcGxlLXN0eWxlLXNwYW4iIHN0eWxlPSJ0ZXh0LWRlY29yYXRpb246
IHVuZGVybGluZTsiPnRlc3Q8L3NwYW4+CitQQVNTIG9uZSB1bmRlcmxpbmUgY29tbWFuZCBjb252
ZXJ0ZWQgPHNwYW4gY2xhc3M9IkFwcGxlLXN0eWxlLXNwYW4iIHN0eWxlPSJ0ZXh0LWRlY29yYXRp
b246IHVuZGVybGluZTsiPnRlc3Q8L3NwYW4+IHRvIHRlc3QKK1BBU1Mgb25lIHVuZGVybGluZSBj
b21tYW5kIGNvbnZlcnRlZCA8c3BhbiBjbGFzcz0iQXBwbGUtc3R5bGUtc3BhbiIgc3R5bGU9InRl
eHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lIGxpbmUtdGhyb3VnaCBvdmVybGluZTsiPnRlc3Q8L3Nw
YW4+IHRvIDxzcGFuIGNsYXNzPSJBcHBsZS1zdHlsZS1zcGFuIiBzdHlsZT0idGV4dC1kZWNvcmF0
aW9uOiBvdmVybGluZSBsaW5lLXRocm91Z2g7Ij50ZXN0PC9zcGFuPgorUEFTUyBvbmUgc3RyaWtl
dGhyb3VnaCBjb21tYW5kIGNvbnZlcnRlZCB0ZXN0IHRvIDxzcGFuIGNsYXNzPSJBcHBsZS1zdHls
ZS1zcGFuIiBzdHlsZT0idGV4dC1kZWNvcmF0aW9uOiBsaW5lLXRocm91Z2g7Ij50ZXN0PC9zcGFu
PgorUEFTUyBvbmUgc3RyaWtldGhyb3VnaCBjb21tYW5kIGNvbnZlcnRlZCA8c3BhbiBjbGFzcz0i
QXBwbGUtc3R5bGUtc3BhbiIgc3R5bGU9InRleHQtZGVjb3JhdGlvbjogbGluZS10aHJvdWdoOyI+
dGVzdDwvc3Bhbj4gdG8gdGVzdAorUEFTUyBvbmUgc3RyaWtldGhyb3VnaCBjb21tYW5kIGNvbnZl
cnRlZCA8c3BhbiBjbGFzcz0iQXBwbGUtc3R5bGUtc3BhbiIgc3R5bGU9InRleHQtZGVjb3JhdGlv
bjogdW5kZXJsaW5lIGxpbmUtdGhyb3VnaCBvdmVybGluZTsiPnRlc3Q8L3NwYW4+IHRvIDxzcGFu
IGNsYXNzPSJBcHBsZS1zdHlsZS1zcGFuIiBzdHlsZT0idGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxp
bmUgb3ZlcmxpbmU7Ij50ZXN0PC9zcGFuPgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1
ZQorCitURVNUIENPTVBMRVRFCisKSW5kZXg6IExheW91dFRlc3RzL2VkaXRpbmcvZXhlY0NvbW1h
bmQvdG9nZ2xlLXRleHQtZGVjb3JhdGlvbnMuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0
cy9lZGl0aW5nL2V4ZWNDb21tYW5kL3RvZ2dsZS10ZXh0LWRlY29yYXRpb25zLmh0bWwJKHJldmlz
aW9uIDApCisrKyBMYXlvdXRUZXN0cy9lZGl0aW5nL2V4ZWNDb21tYW5kL3RvZ2dsZS10ZXh0LWRl
Y29yYXRpb25zLmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTMgQEAKKzwhRE9DVFlQRSBI
VE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwvL0VOIj4KKzxodG1sPgorPGhlYWQ+Cis8bGlu
ayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3Qt
c3R5bGUuY3NzIj4KKzxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0
LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxwIGlkPSJkZXNjcmlwdGlvbiI+
PC9wPgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3Rv
Z2dsZS10ZXh0LWRlY29yYXRpb25zLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9m
YXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9o
dG1sPgpJbmRleDogTGF5b3V0VGVzdHMvZWRpdGluZy9leGVjQ29tbWFuZC9yZXNvdXJjZXMvdG9n
Z2xlLXRleHQtZGVjb3JhdGlvbnMuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZWRpdGlu
Zy9leGVjQ29tbWFuZC9yZXNvdXJjZXMvdG9nZ2xlLXRleHQtZGVjb3JhdGlvbnMuanMJKHJldmlz
aW9uIDApCisrKyBMYXlvdXRUZXN0cy9lZGl0aW5nL2V4ZWNDb21tYW5kL3Jlc291cmNlcy90b2dn
bGUtdGV4dC1kZWNvcmF0aW9ucy5qcwkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwyOSBAQAorZGVz
Y3JpcHRpb24oIlRlc3QgdG8gbWFrZSBzdXJlIHdlIGNhbiB0b2dnbGUgdGV4dCBkZWNvcmF0aW9u
cyBjb3JyZWN0bHkuIikKKwordmFyIHRlc3RDb250YWluZXIgPSBkb2N1bWVudC5jcmVhdGVFbGVt
ZW50KCJkaXYiKTsKK3Rlc3RDb250YWluZXIuY29udGVudEVkaXRhYmxlID0gdHJ1ZTsKK2RvY3Vt
ZW50LmJvZHkuYXBwZW5kQ2hpbGQodGVzdENvbnRhaW5lcik7CisKK2Z1bmN0aW9uIHRlc3RTaW5n
bGVUb2dnbGUodG9nZ2xlQ29tbWFuZCwgaW5pdGlhbENvbnRlbnRzLCBleHBlY3RlZENvbnRlbnRz
KQoreworICAgIHRlc3RDb250YWluZXIuaW5uZXJIVE1MID0gaW5pdGlhbENvbnRlbnRzOworICAg
IHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5zZWxlY3RBbGxDaGlsZHJlbih0ZXN0Q29udGFpbmVyKTsK
KyAgICBkb2N1bWVudC5leGVjQ29tbWFuZCh0b2dnbGVDb21tYW5kLCBmYWxzZSwgbnVsbCk7Cisg
ICAgaWYgKHRlc3RDb250YWluZXIuaW5uZXJIVE1MID09PSBleHBlY3RlZENvbnRlbnRzKSB7Cisg
ICAgICAgIHRlc3RQYXNzZWQoIm9uZSAiICsgdG9nZ2xlQ29tbWFuZCArICIgY29tbWFuZCBjb252
ZXJ0ZWQgIiArIGluaXRpYWxDb250ZW50cyArICIgdG8gIiArIGV4cGVjdGVkQ29udGVudHMpOwor
ICAgIH0gZWxzZSB7CisgICAgICAgIHRlc3RGYWlsZWQoIm9uZSAiICsgdG9nZ2xlQ29tbWFuZCAr
ICIgY29tbWFuZCBjb252ZXJ0ZWQgIiArIGluaXRpYWxDb250ZW50cyArICIgdG8gIiArIHRlc3RD
b250YWluZXIuaW5uZXJIVE1MICsgIiwgZXhwZWN0ZWQgIiArIGV4cGVjdGVkQ29udGVudHMpOwor
ICAgIH0KK30KKworZG9jdW1lbnQuZXhlY0NvbW1hbmQoInN0eWxlV2l0aENTUyIsIHRydWUsIG51
bGwpOwordGVzdFNpbmdsZVRvZ2dsZSgidW5kZXJsaW5lIiwgInRlc3QiLCAiPHNwYW4gY2xhc3M9
XCJBcHBsZS1zdHlsZS1zcGFuXCIgc3R5bGU9XCJ0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTtc
Ij50ZXN0PC9zcGFuPiIpOwordGVzdFNpbmdsZVRvZ2dsZSgidW5kZXJsaW5lIiwgIjxzcGFuIGNs
YXNzPVwiQXBwbGUtc3R5bGUtc3BhblwiIHN0eWxlPVwidGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxp
bmU7XCI+dGVzdDwvc3Bhbj4iLCAidGVzdCIpOwordGVzdFNpbmdsZVRvZ2dsZSgidW5kZXJsaW5l
IiwgIjxzcGFuIGNsYXNzPVwiQXBwbGUtc3R5bGUtc3BhblwiIHN0eWxlPVwidGV4dC1kZWNvcmF0
aW9uOiB1bmRlcmxpbmUgbGluZS10aHJvdWdoIG92ZXJsaW5lO1wiPnRlc3Q8L3NwYW4+IiwgIjxz
cGFuIGNsYXNzPVwiQXBwbGUtc3R5bGUtc3BhblwiIHN0eWxlPVwidGV4dC1kZWNvcmF0aW9uOiBv
dmVybGluZSBsaW5lLXRocm91Z2g7XCI+dGVzdDwvc3Bhbj4iKTsKK3Rlc3RTaW5nbGVUb2dnbGUo
InN0cmlrZXRocm91Z2giLCAidGVzdCIsICI8c3BhbiBjbGFzcz1cIkFwcGxlLXN0eWxlLXNwYW5c
IiBzdHlsZT1cInRleHQtZGVjb3JhdGlvbjogbGluZS10aHJvdWdoO1wiPnRlc3Q8L3NwYW4+Iik7
Cit0ZXN0U2luZ2xlVG9nZ2xlKCJzdHJpa2V0aHJvdWdoIiwgIjxzcGFuIGNsYXNzPVwiQXBwbGUt
c3R5bGUtc3BhblwiIHN0eWxlPVwidGV4dC1kZWNvcmF0aW9uOiBsaW5lLXRocm91Z2g7XCI+dGVz
dDwvc3Bhbj4iLCAidGVzdCIpOwordGVzdFNpbmdsZVRvZ2dsZSgic3RyaWtldGhyb3VnaCIsICI8
c3BhbiBjbGFzcz1cIkFwcGxlLXN0eWxlLXNwYW5cIiBzdHlsZT1cInRleHQtZGVjb3JhdGlvbjog
dW5kZXJsaW5lIGxpbmUtdGhyb3VnaCBvdmVybGluZTtcIj50ZXN0PC9zcGFuPiIsICI8c3BhbiBj
bGFzcz1cIkFwcGxlLXN0eWxlLXNwYW5cIiBzdHlsZT1cInRleHQtZGVjb3JhdGlvbjogdW5kZXJs
aW5lIG92ZXJsaW5lO1wiPnRlc3Q8L3NwYW4+Iik7CisKK2RvY3VtZW50LmJvZHkucmVtb3ZlQ2hp
bGQodGVzdENvbnRhaW5lcik7CisKK3ZhciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOwpJbmRl
eDogTGF5b3V0VGVzdHMvZmFzdC9jc3MvZ2V0Q29tcHV0ZWRTdHlsZS9nZXRDb21wdXRlZFN0eWxl
LXRleHQtZGVjb3JhdGlvbi1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMv
ZmFzdC9jc3MvZ2V0Q29tcHV0ZWRTdHlsZS9nZXRDb21wdXRlZFN0eWxlLXRleHQtZGVjb3JhdGlv
bi1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2Nzcy9nZXRD
b21wdXRlZFN0eWxlL2dldENvbXB1dGVkU3R5bGUtdGV4dC1kZWNvcmF0aW9uLWV4cGVjdGVkLnR4
dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxMyBAQAorVGVzdCB0byBtYWtlIHN1cmUgdGV4dC1k
ZWNvcmF0aW9uIHByb3BlcnR5IHJldHVybnMgQ1NTVmFsdWVMaXN0IHByb3Blcmx5LgorCitPbiBz
dWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dl
ZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFTUyB0ZXh0IGRlY29yYXRpb24gc2hvdWxkIGJl
IENTU1ZhbHVlTGlzdAorUEFTUyB0ZXh0IGRlY29yYXRpb24gc2hvdWxkIGJlIHNlcGFyYXRlZCBi
eSBhIHNpbmdsZSBzcGFjZQorUEFTUyBjb21wdXRlZCBzdHlsZSBvZiB0ZXh0IGRlY29yYXRpb24g
c2hvdWxkIGJlIENTU1ZhbHVlTGlzdAorUEFTUyBjb21wdXRlZCBzdHlsZSBvZiB0ZXh0IGRlY29y
YXRpb24gc2hvdWxkIGJlIHNlcGFyYXRlZCBieSBhIHNpbmdsZSBzcGFjZQorUEFTUyBzdWNjZXNz
ZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKSW5kZXg6IExheW91dFRlc3Rz
L2Zhc3QvY3NzL2dldENvbXB1dGVkU3R5bGUvZ2V0Q29tcHV0ZWRTdHlsZS10ZXh0LWRlY29yYXRp
b24uaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2Nzcy9nZXRDb21wdXRlZFN0
eWxlL2dldENvbXB1dGVkU3R5bGUtdGV4dC1kZWNvcmF0aW9uLmh0bWwJKHJldmlzaW9uIDApCisr
KyBMYXlvdXRUZXN0cy9mYXN0L2Nzcy9nZXRDb21wdXRlZFN0eWxlL2dldENvbXB1dGVkU3R5bGUt
dGV4dC1kZWNvcmF0aW9uLmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTMgQEAKKzwhRE9D
VFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwvL0VOIj4KKzxodG1sPgorPGhlYWQ+
Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uL2pzL3Jlc291cmNlcy9qcy10ZXN0
LXN0eWxlLmNzcyI+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJl
LmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHAgaWQ9ImRlc2NyaXB0aW9uIj48L3A+
Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvZ2V0Q29t
cHV0ZWRTdHlsZS10ZXh0LWRlY29yYXRpb24uanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4u
Ly4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9o
dG1sPgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9jc3MvZ2V0Q29tcHV0ZWRTdHlsZS9yZXNvdXJj
ZXMvVEVNUExBVEUuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2Nzcy9nZXRD
b21wdXRlZFN0eWxlL3Jlc291cmNlcy9URU1QTEFURS5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5
b3V0VGVzdHMvZmFzdC9jc3MvZ2V0Q29tcHV0ZWRTdHlsZS9yZXNvdXJjZXMvVEVNUExBVEUuaHRt
bAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxMyBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICIt
Ly9JRVRGLy9EVEQgSFRNTC8vRU4iPgorPGh0bWw+Cis8aGVhZD4KKzxsaW5rIHJlbD0ic3R5bGVz
aGVldCIgaHJlZj0iLi4vLi4vanMvcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIj4KKzxzY3Jp
cHQgc3JjPSIuLi8uLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9o
ZWFkPgorPGJvZHk+Cis8cCBpZD0iZGVzY3JpcHRpb24iPjwvcD4KKzxkaXYgaWQ9ImNvbnNvbGUi
PjwvZGl2PgorPHNjcmlwdCBzcmM9IllPVVJfSlNfRklMRV9IRVJFIj48L3NjcmlwdD4KKzxzY3Jp
cHQgc3JjPSIuLi8uLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwv
Ym9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvY3NzL2dldENvbXB1dGVkU3R5
bGUvcmVzb3VyY2VzL2dldENvbXB1dGVkU3R5bGUtdGV4dC1kZWNvcmF0aW9uLmpzCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvY3NzL2dldENvbXB1dGVkU3R5bGUvcmVzb3VyY2VzL2dl
dENvbXB1dGVkU3R5bGUtdGV4dC1kZWNvcmF0aW9uLmpzCShyZXZpc2lvbiAwKQorKysgTGF5b3V0
VGVzdHMvZmFzdC9jc3MvZ2V0Q29tcHV0ZWRTdHlsZS9yZXNvdXJjZXMvZ2V0Q29tcHV0ZWRTdHls
ZS10ZXh0LWRlY29yYXRpb24uanMJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMjYgQEAKK2Rlc2Ny
aXB0aW9uKCJUZXN0IHRvIG1ha2Ugc3VyZSB0ZXh0LWRlY29yYXRpb24gcHJvcGVydHkgcmV0dXJu
cyBDU1NWYWx1ZUxpc3QgcHJvcGVybHkuIikKKwordmFyIHRlc3RDb250YWluZXIgPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKK3Rlc3RDb250YWluZXIuY29udGVudEVkaXRhYmxlID0g
dHJ1ZTsKK2RvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQodGVzdENvbnRhaW5lcik7CisKK2Z1bmN0
aW9uIGV4cGVjdChkZXNjLCBhY3R1YWwsIGV4cGVjdGVkKQoreworICAgIGlmIChhY3R1YWwgPT0g
ZXhwZWN0ZWQpCisgICAgICAgIHRlc3RQYXNzZWQoZGVzYyk7CisgICAgZWxzZQorICAgICAgICB0
ZXN0UGFzc2VkKGRlc2MrIiBFWFBFQ1RFRDoiK2V4cGVjdGVkKyIgQUNUVUFMOiIrYWN0dWFsKTsK
K30KKwordGVzdENvbnRhaW5lci5pbm5lckhUTUwgPSAnPGRpdiBpZD0idGVzdCIgc3R5bGU9InRl
eHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lICAgIFxuIGxpbmUtdGhyb3VnaDsiPmhlbGxvPC9kaXY+
JzsKKworZSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0ZXN0Jyk7CitleHBlY3QoJ3RleHQg
ZGVjb3JhdGlvbiBzaG91bGQgYmUgQ1NTVmFsdWVMaXN0JywgZS5zdHlsZS5nZXRQcm9wZXJ0eUNT
U1ZhbHVlKCd0ZXh0LWRlY29yYXRpb24nKSwgIltvYmplY3QgQ1NTVmFsdWVMaXN0XSIpOworZXhw
ZWN0KCd0ZXh0IGRlY29yYXRpb24gc2hvdWxkIGJlIHNlcGFyYXRlZCBieSBhIHNpbmdsZSBzcGFj
ZScsIGUuc3R5bGUudGV4dERlY29yYXRpb24sICJ1bmRlcmxpbmUgbGluZS10aHJvdWdoIik7Citj
b21wdXRlZFN0eWxlID0gd2luZG93LmdldENvbXB1dGVkU3R5bGUoZSwgbnVsbCk7CitleHBlY3Qo
J2NvbXB1dGVkIHN0eWxlIG9mIHRleHQgZGVjb3JhdGlvbiBzaG91bGQgYmUgQ1NTVmFsdWVMaXN0
JywgY29tcHV0ZWRTdHlsZS5nZXRQcm9wZXJ0eUNTU1ZhbHVlKCd0ZXh0LWRlY29yYXRpb24nKSwg
IltvYmplY3QgQ1NTVmFsdWVMaXN0XSIpOworZXhwZWN0KCdjb21wdXRlZCBzdHlsZSBvZiB0ZXh0
IGRlY29yYXRpb24gc2hvdWxkIGJlIHNlcGFyYXRlZCBieSBhIHNpbmdsZSBzcGFjZScsIGNvbXB1
dGVkU3R5bGUuZ2V0UHJvcGVydHlDU1NWYWx1ZSgndGV4dC1kZWNvcmF0aW9uJykuY3NzVGV4dCwg
InVuZGVybGluZSBsaW5lLXRocm91Z2giKTsKKworZG9jdW1lbnQuYm9keS5yZW1vdmVDaGlsZCh0
ZXN0Q29udGFpbmVyKTsKKwordmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7Cg==
</data>
<flag name="review"
          id="17608"
          type_id="1"
          status="+"
          setter="eric"
    />
          </attachment>
      

    </bug>

</bugzilla>