<?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>139799</bug_id>
          
          <creation_ts>2014-12-18 16:34:30 -0800</creation_ts>
          <short_desc>[Win] Update DumpRenderTree to more closely match Mac version</short_desc>
          <delta_ts>2014-12-28 02:35:48 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Tools / Tests</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>
          <dependson>139972</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Brent Fulgham">bfulgham</reporter>
          <assigned_to name="Brent Fulgham">bfulgham</assigned_to>
          <cc>bfulgham</cc>
    
    <cc>commit-queue</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1056949</commentid>
    <comment_count>0</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2014-12-18 16:34:30 -0800</bug_when>
    <thetext>Reorder the contents of the Windows implementation of DumpRenderTree so that it is easier to compare the steps taken when starting and ending our layout tests.

Also implement a handful of functions so that Windows does a better job of handling its caches and other local storage.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1056952</commentid>
    <comment_count>1</comment_count>
      <attachid>243533</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2014-12-18 16:44:28 -0800</bug_when>
    <thetext>Created attachment 243533
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1056953</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-12-18 16:46:27 -0800</bug_when>
    <thetext>Attachment 243533 did not pass style-queue:


ERROR: Tools/DumpRenderTree/win/DumpRenderTree.cpp:56:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/WebKit/win/WebSecurityOrigin.cpp:32:  Alphabetical sorting problem.  [build/include_order] [4]
Total errors found: 2 in 10 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1056954</commentid>
    <comment_count>3</comment_count>
      <attachid>243533</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2014-12-18 16:46:34 -0800</bug_when>
    <thetext>Comment on attachment 243533
Patch

rs=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1056961</commentid>
    <comment_count>4</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2014-12-18 17:00:26 -0800</bug_when>
    <thetext>Committed r177542: &lt;http://trac.webkit.org/changeset/177542&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>243533</attachid>
            <date>2014-12-18 16:44:28 -0800</date>
            <delta_ts>2014-12-18 16:46:34 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-139799-20141218165026.patch</filename>
            <type>text/plain</type>
            <size>50944</size>
            <attacher name="Brent Fulgham">bfulgham</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0L3dpbi9DaGFuZ2VMb2cJKHJldmlzaW9uIDE3NzU0MCkKKysrIFNvdXJjZS9XZWJLaXQv
d2luL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI5IEBACisyMDE0LTEyLTE4
ICBCcmVudCBGdWxnaGFtICA8YmZ1bGdoYW1AYXBwbGUuY29tPgorCisgICAgICAgIFtXaW5dIFVw
ZGF0ZSBEdW1wUmVuZGVyVHJlZSB0byBtb3JlIGNsb3NlbHkgbWF0Y2ggTWFjIHZlcnNpb24KKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzOTc5OQorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogSW50ZXJmYWNl
cy9JV2ViU2VjdXJpdHlPcmlnaW4uaWRsOiBBZGQgaW5pdGlhbGl6ZXIgZnJvbSBVUkwuCisgICAg
ICAgICogSW50ZXJmYWNlcy9XZWJLaXQuaWRsOiBBZGQgQ0xTSUQgc28gd2UgY2FuIGluc3RhbnRp
YXRlIGEKKyAgICAgICAgV2ViU2VjdXJpdHlPcmlnaW4gZnJvbSBDT00uCisgICAgICAgICogV2Vi
QXBwbGljYXRpb25DYWNoZS5oOiBEZWNvcmF0ZSBjbGFzcyBkZWNsYXJhdGlvbiB3aXRoIENMU0lE
CisgICAgICAgIHRvIHN1cHBvcnQgQ09NIGludHJvc3BlY3Rpb24uCisgICAgICAgICogV2ViU2Vj
dXJpdHlPcmlnaW4uY3BwOiBHZXQgcmlkIG9mIG1lYW5pbmdsZXNzIFNURE1FVEhPRENBTExUWVBF
CisgICAgICAgIGRlY2xhcmF0aW9ucyBpbnNpZGUgaW1wbGVtZW50YXRpb24uCisgICAgICAgIChX
ZWJTZWN1cml0eU9yaWdpbjo6UXVlcnlJbnRlcmZhY2UpOgorICAgICAgICAoV2ViU2VjdXJpdHlP
cmlnaW46OkFkZFJlZik6CisgICAgICAgIChXZWJTZWN1cml0eU9yaWdpbjo6UmVsZWFzZSk6Cisg
ICAgICAgIChXZWJTZWN1cml0eU9yaWdpbjo6cHJvdG9jb2wpOgorICAgICAgICAoV2ViU2VjdXJp
dHlPcmlnaW46Omhvc3QpOgorICAgICAgICAoV2ViU2VjdXJpdHlPcmlnaW46OnBvcnQpOgorICAg
ICAgICAoV2ViU2VjdXJpdHlPcmlnaW46OnVzYWdlKToKKyAgICAgICAgKFdlYlNlY3VyaXR5T3Jp
Z2luOjpxdW90YSk6CisgICAgICAgIChXZWJTZWN1cml0eU9yaWdpbjo6c2V0UXVvdGEpOgorICAg
ICAgICAoV2ViU2VjdXJpdHlPcmlnaW46OmluaXRXaXRoVVJMKTogQWRkZWQuCisgICAgICAgICog
V2ViU2VjdXJpdHlPcmlnaW4uaDoKKwogMjAxNC0xMi0xOCAgQnJlbnQgRnVsZ2hhbSAgPGJmdWxn
aGFtQGFwcGxlLmNvbT4KIAogICAgICAgICBbV2luXSBDb3JyZWN0IFdpbmRvd3MgdGVzdHMgYWZ0
ZXIgQnVnIDEzOTE0OS4KSW5kZXg6IFNvdXJjZS9XZWJLaXQvd2luL1dlYkFwcGxpY2F0aW9uQ2Fj
aGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3dpbi9XZWJBcHBsaWNhdGlvbkNhY2hl
LmgJKHJldmlzaW9uIDE3NzUxMikKKysrIFNvdXJjZS9XZWJLaXQvd2luL1dlYkFwcGxpY2F0aW9u
Q2FjaGUuaAkod29ya2luZyBjb3B5KQpAQCAtMjgsNyArMjgsNyBAQAogCiAjaW5jbHVkZSAiV2Vi
S2l0LmgiCiAKLWNsYXNzIFdlYkFwcGxpY2F0aW9uQ2FjaGUgOiBwdWJsaWMgSVdlYkFwcGxpY2F0
aW9uQ2FjaGUgeworY2xhc3MgREVDTFNQRUNfVVVJRCgiMTExOUU5NzAtNEIxMy00QjlBLUEwNDkt
NDEwOTYxMDRCNjg5IikgV2ViQXBwbGljYXRpb25DYWNoZSA6IHB1YmxpYyBJV2ViQXBwbGljYXRp
b25DYWNoZSB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFdlYkFwcGxpY2F0aW9uQ2FjaGUqIGNyZWF0
ZUluc3RhbmNlKCk7CiBwcm90ZWN0ZWQ6CkluZGV4OiBTb3VyY2UvV2ViS2l0L3dpbi9XZWJTZWN1
cml0eU9yaWdpbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC93aW4vV2ViU2VjdXJp
dHlPcmlnaW4uY3BwCShyZXZpc2lvbiAxNzc1MTEpCisrKyBTb3VyY2UvV2ViS2l0L3dpbi9XZWJT
ZWN1cml0eU9yaWdpbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI5LDggKzI5LDEwIEBACiAjaW5j
bHVkZSAiV2ViU2VjdXJpdHlPcmlnaW4uaCIKICNpbmNsdWRlICJXZWJLaXRETEwuaCIKIAorI2lu
Y2x1ZGUgIk1hcnNoYWxsaW5nSGVscGVycy5oIgogI2luY2x1ZGUgPFdlYkNvcmUvQlN0cmluZy5o
PgogI2luY2x1ZGUgPFdlYkNvcmUvRGF0YWJhc2VNYW5hZ2VyLmg+CisjaW5jbHVkZSA8V2ViQ29y
ZS9VUkwuaD4KIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKQEAgLTU3LDcgKzU5LDcgQEAg
V2ViU2VjdXJpdHlPcmlnaW46On5XZWJTZWN1cml0eU9yaWdpbigpCiB9CiAKIC8vIElVbmtub3du
IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLQotSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJTZWN1cml0eU9y
aWdpbjo6UXVlcnlJbnRlcmZhY2UoUkVGSUlEIHJpaWQsIHZvaWQqKiBwcHZPYmplY3QpCitIUkVT
VUxUIFdlYlNlY3VyaXR5T3JpZ2luOjpRdWVyeUludGVyZmFjZShSRUZJSUQgcmlpZCwgdm9pZCoq
IHBwdk9iamVjdCkKIHsKICAgICAqcHB2T2JqZWN0ID0gMDsKICAgICBpZiAoSXNFcXVhbEdVSUQo
cmlpZCwgSUlEX0lVbmtub3duKSkKQEAgLTczLDEyICs3NSwxMiBAQCBIUkVTVUxUIFNURE1FVEhP
RENBTExUWVBFIFdlYlNlY3VyaXR5T3JpCiAgICAgcmV0dXJuIFNfT0s7CiB9CiAKLVVMT05HIFNU
RE1FVEhPRENBTExUWVBFIFdlYlNlY3VyaXR5T3JpZ2luOjpBZGRSZWYoKQorVUxPTkcgV2ViU2Vj
dXJpdHlPcmlnaW46OkFkZFJlZigpCiB7CiAgICAgcmV0dXJuICsrbV9yZWZDb3VudDsKIH0KIAot
VUxPTkcgU1RETUVUSE9EQ0FMTFRZUEUgV2ViU2VjdXJpdHlPcmlnaW46OlJlbGVhc2UoKQorVUxP
TkcgV2ViU2VjdXJpdHlPcmlnaW46OlJlbGVhc2UoKQogewogICAgIFVMT05HIG5ld1JlZiA9IC0t
bV9yZWZDb3VudDsKICAgICBpZiAoIW5ld1JlZikKQEAgLTg5LDggKzkxLDcgQEAgVUxPTkcgU1RE
TUVUSE9EQ0FMTFRZUEUgV2ViU2VjdXJpdHlPcmlnaQogCiAvLyBJV2ViU2VjdXJpdHlPcmlnaW4g
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0KIAotSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJTZWN1cml0eU9yaWdpbjo6cHJv
dG9jb2woIAotICAgIC8qIFtyZXR2YWxdW291dF0gKi8gQlNUUiogcmVzdWx0KQorSFJFU1VMVCBX
ZWJTZWN1cml0eU9yaWdpbjo6cHJvdG9jb2woLyogW3JldHZhbF1bb3V0XSAqLyBCU1RSKiByZXN1
bHQpCiB7CiAgICAgaWYgKCFyZXN1bHQpCiAgICAgICAgIHJldHVybiBFX1BPSU5URVI7CkBAIC0x
MDAsOCArMTAxLDcgQEAgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJTZWN1cml0eU9yaQog
ICAgIHJldHVybiBTX09LOwogfQogICAgICAgICAKLUhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUg
V2ViU2VjdXJpdHlPcmlnaW46Omhvc3QoIAotICAgIC8qIFtyZXR2YWxdW291dF0gKi8gQlNUUiog
cmVzdWx0KQorSFJFU1VMVCBXZWJTZWN1cml0eU9yaWdpbjo6aG9zdCgvKiBbcmV0dmFsXVtvdXRd
ICovIEJTVFIqIHJlc3VsdCkKIHsKICAgICBpZiAoIXJlc3VsdCkKICAgICAgICAgcmV0dXJuIEVf
UE9JTlRFUjsKQEAgLTExMSw4ICsxMTEsNyBAQCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdl
YlNlY3VyaXR5T3JpCiAgICAgcmV0dXJuIFNfT0s7CiB9CiAgICAgICAKLUhSRVNVTFQgU1RETUVU
SE9EQ0FMTFRZUEUgV2ViU2VjdXJpdHlPcmlnaW46OnBvcnQoIAotICAgIC8qIFtyZXR2YWxdW291
dF0gKi8gdW5zaWduZWQgc2hvcnQqIHJlc3VsdCkKK0hSRVNVTFQgV2ViU2VjdXJpdHlPcmlnaW46
OnBvcnQoLyogW3JldHZhbF1bb3V0XSAqLyB1bnNpZ25lZCBzaG9ydCogcmVzdWx0KQogewogICAg
IGlmICghcmVzdWx0KQogICAgICAgICByZXR1cm4gRV9QT0lOVEVSOwpAQCAtMTIyLDggKzEyMSw3
IEBAIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViU2VjdXJpdHlPcmkKICAgICByZXR1cm4g
U19PSzsKIH0KICAgICAgICAgCi1IUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYlNlY3VyaXR5
T3JpZ2luOjp1c2FnZSggCi0gICAgLyogW3JldHZhbF1bb3V0XSAqLyB1bnNpZ25lZCBsb25nIGxv
bmcqIHJlc3VsdCkKK0hSRVNVTFQgV2ViU2VjdXJpdHlPcmlnaW46OnVzYWdlKC8qIFtyZXR2YWxd
W291dF0gKi8gdW5zaWduZWQgbG9uZyBsb25nKiByZXN1bHQpCiB7CiAjaWYgRU5BQkxFKFNRTF9E
QVRBQkFTRSkKICAgICBpZiAoIXJlc3VsdCkKQEAgLTEzOCw4ICsxMzYsNyBAQCBIUkVTVUxUIFNU
RE1FVEhPRENBTExUWVBFIFdlYlNlY3VyaXR5T3JpCiAjZW5kaWYKIH0KICAgICAgICAgCi1IUkVT
VUxUIFNURE1FVEhPRENBTExUWVBFIFdlYlNlY3VyaXR5T3JpZ2luOjpxdW90YSggCi0gICAgLyog
W3JldHZhbF1bb3V0XSAqLyB1bnNpZ25lZCBsb25nIGxvbmcqIHJlc3VsdCkKK0hSRVNVTFQgV2Vi
U2VjdXJpdHlPcmlnaW46OnF1b3RhKC8qIFtyZXR2YWxdW291dF0gKi8gdW5zaWduZWQgbG9uZyBs
b25nKiByZXN1bHQpCiB7CiAjaWYgRU5BQkxFKFNRTF9EQVRBQkFTRSkKICAgICBpZiAoIXJlc3Vs
dCkKQEAgLTE1Myw4ICsxNTAsNyBAQCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYlNlY3Vy
aXR5T3JpCiAjZW5kaWYKIH0KICAgICAgICAgCi1IUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdl
YlNlY3VyaXR5T3JpZ2luOjpzZXRRdW90YSggCi0gICAgLyogW2luXSAqLyB1bnNpZ25lZCBsb25n
IGxvbmcgcXVvdGEpIAorSFJFU1VMVCBXZWJTZWN1cml0eU9yaWdpbjo6c2V0UXVvdGEoLyogW2lu
XSAqLyB1bnNpZ25lZCBsb25nIGxvbmcgcXVvdGEpIAogewogI2lmIEVOQUJMRShTUUxfREFUQUJB
U0UpCiAgICAgRGF0YWJhc2VNYW5hZ2VyOjptYW5hZ2VyKCkuc2V0UXVvdGEobV9zZWN1cml0eU9y
aWdpbi5nZXQoKSwgcXVvdGEpOwpAQCAtMTY1LDMgKzE2MSwxMCBAQCBIUkVTVUxUIFNURE1FVEhP
RENBTExUWVBFIFdlYlNlY3VyaXR5T3JpCiAgICAgcmV0dXJuIEVfTk9USU1QTDsKICNlbmRpZgog
fQorCitIUkVTVUxUIFdlYlNlY3VyaXR5T3JpZ2luOjppbml0V2l0aFVSTCgvKiBbaW5dICovIEJT
VFIgdXJsQnN0cikKK3sKKyAgICBtX3NlY3VyaXR5T3JpZ2luID0gV2ViQ29yZTo6U2VjdXJpdHlP
cmlnaW46OmNyZWF0ZShNYXJzaGFsbGluZ0hlbHBlcnM6OkJTVFJUb0tVUkwodXJsQnN0cikpOwor
CisgICAgcmV0dXJuIFNfT0s7Cit9CkluZGV4OiBTb3VyY2UvV2ViS2l0L3dpbi9XZWJTZWN1cml0
eU9yaWdpbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvd2luL1dlYlNlY3VyaXR5T3Jp
Z2luLmgJKHJldmlzaW9uIDE3NzUxMSkKKysrIFNvdXJjZS9XZWJLaXQvd2luL1dlYlNlY3VyaXR5
T3JpZ2luLmgJKHdvcmtpbmcgY29weSkKQEAgLTY3LDYgKzY3LDggQEAgcHVibGljOgogICAgIHZp
cnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBzZXRRdW90YSggCiAgICAgICAgIC8qIFtp
bl0gKi8gdW5zaWduZWQgbG9uZyBsb25nIHF1b3RhKTsKIAorICAgIHZpcnR1YWwgSFJFU1VMVCBT
VERNRVRIT0RDQUxMVFlQRSBpbml0V2l0aFVSTCgvKltpbl0qLyBCU1RSKTsKKwogcHJpdmF0ZToK
ICAgICBXZWJTZWN1cml0eU9yaWdpbihXZWJDb3JlOjpTZWN1cml0eU9yaWdpbiopOwogICAgIH5X
ZWJTZWN1cml0eU9yaWdpbigpOwpJbmRleDogU291cmNlL1dlYktpdC93aW4vSW50ZXJmYWNlcy9J
V2ViU2VjdXJpdHlPcmlnaW4uaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvd2luL0lu
dGVyZmFjZXMvSVdlYlNlY3VyaXR5T3JpZ2luLmlkbAkocmV2aXNpb24gMTc3NTExKQorKysgU291
cmNlL1dlYktpdC93aW4vSW50ZXJmYWNlcy9JV2ViU2VjdXJpdHlPcmlnaW4uaWRsCSh3b3JraW5n
IGNvcHkpCkBAIC00Nyw0ICs0Nyw2IEBAIGludGVyZmFjZSBJV2ViU2VjdXJpdHlPcmlnaW4gOiBJ
VW5rbm93bgogCiAgICAgSFJFU1VMVCBxdW90YShbb3V0LCByZXR2YWxdIHVuc2lnbmVkIGxvbmcg
bG9uZyogcmVzdWx0KTsKICAgICBIUkVTVUxUIHNldFF1b3RhKFtpbl0gdW5zaWduZWQgbG9uZyBs
b25nIHF1b3RhKTsKKworICAgIEhSRVNVTFQgaW5pdFdpdGhVUkwoW2luXSBCU1RSKTsKIH0KSW5k
ZXg6IFNvdXJjZS9XZWJLaXQvd2luL0ludGVyZmFjZXMvV2ViS2l0LmlkbAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0L3dpbi9JbnRlcmZhY2VzL1dlYktpdC5pZGwJKHJldmlzaW9uIDE3NzUx
MikKKysrIFNvdXJjZS9XZWJLaXQvd2luL0ludGVyZmFjZXMvV2ViS2l0LmlkbAkod29ya2luZyBj
b3B5KQpAQCAtMjk1LDQgKzI5NSw5IEBAIGxpYnJhcnkgV2ViS2l0CiAgICAgY29jbGFzcyBXZWJV
c2VyQ29udGVudFVSTFBhdHRlcm4gewogICAgICAgICBbZGVmYXVsdF0gaW50ZXJmYWNlIElXZWJV
c2VyQ29udGVudFVSTFBhdHRlcm47CiAgICAgfQorCisgICAgW3V1aWQoNmViOGQ5OGYtMjcyMy00
NDcyLTg4ZDMtNTkzNmY5ZDZlNjMxKV0KKyAgICBjb2NsYXNzIFdlYlNlY3VyaXR5T3JpZ2luIHsK
KyAgICAgICAgW2RlZmF1bHRdIGludGVyZmFjZSBJV2ViU2VjdXJpdHlPcmlnaW47CisgICAgfTsK
IH0KSW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJ
KHJldmlzaW9uIDE3NzU0MCkKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAt
MSwzICsxLDc1IEBACisyMDE0LTEyLTE4ICBCcmVudCBGdWxnaGFtICA8YmZ1bGdoYW1AYXBwbGUu
Y29tPgorCisgICAgICAgIFtXaW5dIFVwZGF0ZSBEdW1wUmVuZGVyVHJlZSB0byBtb3JlIGNsb3Nl
bHkgbWF0Y2ggTWFjIHZlcnNpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTEzOTc5OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgICogRHVtcFJlbmRlclRyZWUvd2luL0FjY2Vzc2liaWxpdHlDb250cm9sbGVy
V2luLmNwcDoKKyAgICAgICAgKEFjY2Vzc2liaWxpdHlDb250cm9sbGVyOjphY2Nlc3NpYmxlRWxl
bWVudEJ5SWQpOiBDb3JyZWN0CisgICAgICAgIHVzZSBvZiBCU1RSIHRvIGF2b2lkIGxlYWsuCisg
ICAgICAgICogRHVtcFJlbmRlclRyZWUvd2luL0R1bXBSZW5kZXJUcmVlLmNwcDogUmVvcmRlciBt
ZXRob2RzIGFuZAorICAgICAgICB1cGRhdGUgdG8gbWF0Y2ggTWFjIHZlcnNpb24gbW9yZSBjbG9z
ZWx5LgorICAgICAgICAoZHVtcEZyYW1lc0FzVGV4dCk6CisgICAgICAgIChkdW1wKToKKyAgICAg
ICAgKHJlc2V0RGVmYXVsdHNUb0NvbnNpc3RlbnRWYWx1ZXMpOgorICAgICAgICAocmVzZXRXZWJW
aWV3VG9Db25zaXN0ZW50U3RhdGVCZWZvcmVUZXN0aW5nKToKKyAgICAgICAgKHNpemVXZWJWaWV3
Rm9yQ3VycmVudFRlc3QpOgorICAgICAgICAocnVuVGVzdCk6CisgICAgICAgIChvcGVuV2luZG93
cyk6CisgICAgICAgICh3aW5kb3dUb1dlYlZpZXdNYXApOgorICAgICAgICAoY3JlYXRlV2ViVmll
d0FuZE9mZnNjcmVlbldpbmRvdyk6CisgICAgICAgIChzaGFyZWRDRlVSTENhY2hlKToKKyAgICAg
ICAgKGluaXRpYWxpemVHbG9iYWxzRnJvbUNvbW1hbmRMaW5lT3B0aW9ucyk6CisgICAgICAgICht
YWluKToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS93aW4vVGVzdFJ1bm5lcldpbi5jcHA6IERp
dHRvLgorICAgICAgICAoVGVzdFJ1bm5lcjo6YWRkRGlzYWxsb3dlZFVSTCk6CisgICAgICAgIChU
ZXN0UnVubmVyOjphcHBsaWNhdGlvbkNhY2hlRGlza1VzYWdlRm9yT3JpZ2luKToKKyAgICAgICAg
KFRlc3RSdW5uZXI6OnN5bmNMb2NhbFN0b3JhZ2UpOgorICAgICAgICAoVGVzdFJ1bm5lcjo6bG9j
YWxTdG9yYWdlRGlza1VzYWdlRm9yT3JpZ2luKToKKyAgICAgICAgKFRlc3RSdW5uZXI6Om9ic2Vy
dmVTdG9yYWdlVHJhY2tlck5vdGlmaWNhdGlvbnMpOgorICAgICAgICAoVGVzdFJ1bm5lcjo6Y2xl
YXJBcHBsaWNhdGlvbkNhY2hlRm9yT3JpZ2luKToKKyAgICAgICAgKFRlc3RSdW5uZXI6Om9yaWdp
bnNXaXRoQXBwbGljYXRpb25DYWNoZSk6CisgICAgICAgIChUZXN0UnVubmVyOjpkZWxldGVBbGxM
b2NhbFN0b3JhZ2UpOgorICAgICAgICAoVGVzdFJ1bm5lcjo6c2V0U3RvcmFnZURhdGFiYXNlSWRs
ZUludGVydmFsKToKKyAgICAgICAgKFRlc3RSdW5uZXI6OmNsb3NlSWRsZUxvY2FsU3RvcmFnZURh
dGFiYXNlcyk6CisgICAgICAgIChUZXN0UnVubmVyOjpvcmlnaW5zV2l0aExvY2FsU3RvcmFnZSk6
CisgICAgICAgIChUZXN0UnVubmVyOjpkZWxldGVMb2NhbFN0b3JhZ2VGb3JPcmlnaW4pOgorICAg
ICAgICAoVGVzdFJ1bm5lcjo6Y29weURlY29kZWRIb3N0TmFtZSk6CisgICAgICAgIChUZXN0UnVu
bmVyOjpjb3B5RW5jb2RlZEhvc3ROYW1lKToKKyAgICAgICAgKFRlc3RSdW5uZXI6OmtlZXBXZWJI
aXN0b3J5KToKKyAgICAgICAgKFRlc3RSdW5uZXI6Om51bWJlck9mUGVuZGluZ0dlb2xvY2F0aW9u
UGVybWlzc2lvblJlcXVlc3RzKToKKyAgICAgICAgKFRlc3RSdW5uZXI6OnNldEFwcENhY2hlTWF4
aW11bVNpemUpOgorICAgICAgICAoVGVzdFJ1bm5lcjo6c2V0Q3VzdG9tUG9saWN5RGVsZWdhdGUp
OgorICAgICAgICAoVGVzdFJ1bm5lcjo6Z29CYWNrKToKKyAgICAgICAgKFRlc3RSdW5uZXI6OnNl
dERlZmVyc0xvYWRpbmcpOgorICAgICAgICAoVGVzdFJ1bm5lcjo6c2V0RG9tYWluUmVsYXhhdGlv
bkZvcmJpZGRlbkZvclVSTFNjaGVtZSk6CisgICAgICAgIChUZXN0UnVubmVyOjpzZXRNb2NrRGV2
aWNlT3JpZW50YXRpb24pOgorICAgICAgICAoVGVzdFJ1bm5lcjo6c2V0TW9ja0dlb2xvY2F0aW9u
UG9zaXRpb24pOgorICAgICAgICAoVGVzdFJ1bm5lcjo6c2V0TW9ja0dlb2xvY2F0aW9uUG9zaXRp
b25VbmF2YWlsYWJsZUVycm9yKToKKyAgICAgICAgKFRlc3RSdW5uZXI6OnNldEljb25EYXRhYmFz
ZUVuYWJsZWQpOgorICAgICAgICAoVGVzdFJ1bm5lcjo6c2V0TWFpbkZyYW1lSXNGaXJzdFJlc3Bv
bmRlcik6CisgICAgICAgIChUZXN0UnVubmVyOjpzZXRTcGF0aWFsTmF2aWdhdGlvbkVuYWJsZWQp
OgorICAgICAgICAoVGVzdFJ1bm5lcjo6c2V0UGx1Z2luc0VuYWJsZWQpOgorICAgICAgICAoVGVz
dFJ1bm5lcjo6c2V0QXV0b21hdGljTGlua0RldGVjdGlvbkVuYWJsZWQpOgorICAgICAgICAoVGVz
dFJ1bm5lcjo6c2V0VXNlRGFzaGJvYXJkQ29tcGF0aWJpbGl0eU1vZGUpOgorICAgICAgICAoVGVz
dFJ1bm5lcjo6ZGlzcGF0Y2hQZW5kaW5nTG9hZFJlcXVlc3RzKToKKyAgICAgICAgKFRlc3RSdW5u
ZXI6OmZpbmRTdHJpbmcpOgorICAgICAgICAoVGVzdFJ1bm5lcjo6c2V0Q2FjaGVNb2RlbCk6Cisg
ICAgICAgIChUZXN0UnVubmVyOjphcGlUZXN0TmV3V2luZG93RGF0YUxvYWRCYXNlVVJMKToKKyAg
ICAgICAgKFRlc3RSdW5uZXI6OnNldFdlYlZpZXdFZGl0YWJsZSk6CisgICAgICAgIChUZXN0UnVu
bmVyOjphdXRoZW50aWNhdGVTZXNzaW9uKToKKyAgICAgICAgKFRlc3RSdW5uZXI6OmFib3J0TW9k
YWwpOgorICAgICAgICAoVGVzdFJ1bm5lcjo6c2V0U2VyaWFsaXplSFRUUExvYWRzKToKKyAgICAg
ICAgKFRlc3RSdW5uZXI6OmFkZENocm9tZUlucHV0RmllbGQpOgorICAgICAgICAoVGVzdFJ1bm5l
cjo6cmVtb3ZlQ2hyb21lSW5wdXRGaWVsZCk6CisgICAgICAgIChUZXN0UnVubmVyOjpmb2N1c1dl
YlZpZXcpOgorICAgICAgICAoVGVzdFJ1bm5lcjo6c2V0QmFja2luZ1NjYWxlRmFjdG9yKToKKyAg
ICAgICAgKFRlc3RSdW5uZXI6OmdyYW50V2ViTm90aWZpY2F0aW9uUGVybWlzc2lvbik6CisgICAg
ICAgIChUZXN0UnVubmVyOjpkZW55V2ViTm90aWZpY2F0aW9uUGVybWlzc2lvbik6CisgICAgICAg
IChUZXN0UnVubmVyOjpyZW1vdmVBbGxXZWJOb3RpZmljYXRpb25QZXJtaXNzaW9ucyk6CisgICAg
ICAgIChUZXN0UnVubmVyOjpzaW11bGF0ZVdlYk5vdGlmaWNhdGlvbkNsaWNrKToKKwogMjAxNC0x
Mi0xOCAgQWxleGV5IFByb3NrdXJ5YWtvdiAgPGFwQGFwcGxlLmNvbT4KIAogICAgICAgICBEaXNh
YmxlIHJldHJpZXMgb24gTWFjIFJlbGVhc2UgV0syIHRlc3RlcnMKSW5kZXg6IFRvb2xzL0R1bXBS
ZW5kZXJUcmVlL3dpbi9BY2Nlc3NpYmlsaXR5Q29udHJvbGxlcldpbi5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gVG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL0FjY2Vzc2liaWxpdHlDb250cm9sbGVyV2luLmNw
cAkocmV2aXNpb24gMTc3NTExKQorKysgVG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL0FjY2Vzc2li
aWxpdHlDb250cm9sbGVyV2luLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTIzLDEyICsxMjMsOSBA
QCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50IEFjY2Vzc2liaWxpdHlDb250CiB7CiAgICAgQWNjZXNz
aWJpbGl0eVVJRWxlbWVudCByb290QWNjZXNzaWJpbGl0eVVJRWxlbWVudCA9IHJvb3RFbGVtZW50
KCk7CiAKLSAgICBCU1RSIGlkQXR0cmlidXRlID0gSlNTdHJpbmdDb3B5QlNUUihpZCk7CisgICAg
X2JzdHJfdCBpZEF0dHJpYnV0ZShKU1N0cmluZ0NvcHlCU1RSKGlkKSwgZmFsc2UpOwogCiAgICAg
Q09NUHRyPElBY2Nlc3NpYmxlPiByZXN1bHQgPSBmaW5kQWNjZXNzaWJsZU9iamVjdEJ5SWQocm9v
dEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQsIGlkQXR0cmlidXRlKTsKLQotICAgIDo6U3lzRnJlZVN0
cmluZyhpZEF0dHJpYnV0ZSk7Ci0KICAgICBpZiAocmVzdWx0KQogICAgICAgICByZXR1cm4gQWNj
ZXNzaWJpbGl0eVVJRWxlbWVudChyZXN1bHQpOwogCkluZGV4OiBUb29scy9EdW1wUmVuZGVyVHJl
ZS93aW4vRHVtcFJlbmRlclRyZWUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0R1bXBSZW5kZXJU
cmVlL3dpbi9EdW1wUmVuZGVyVHJlZS5jcHAJKHJldmlzaW9uIDE3NzUxMSkKKysrIFRvb2xzL0R1
bXBSZW5kZXJUcmVlL3dpbi9EdW1wUmVuZGVyVHJlZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEs
NSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA1LCAyMDA2LCAyMDA3LCAyMDA4LCAy
MDA5IEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIw
MDUsIDIwMDYsIDIwMDcsIDIwMDgsIDIwMDksIDIwMTQgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNTAsOCArNTAsMTAg
QEAKICNpbmNsdWRlIDxzdGRpby5oPgogI2luY2x1ZGUgPHN0cmluZy5oPgogI2luY2x1ZGUgPHRj
aGFyLmg+CisjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAjaW5jbHVkZSA8d3RmL1Jl
dGFpblB0ci5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9D
U3RyaW5nLmg+CiAjaW5jbHVkZSA8d2luZG93cy5oPgogI2luY2x1ZGUgPENvcmVGb3VuZGF0aW9u
L0NvcmVGb3VuZGF0aW9uLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9GaWxlU3lzdGVtLmg+CkBAIC04
MSwxNCArODMsMTcgQEAgc3RhdGljIENGU3RyaW5nUmVmIFdlYlN0b3JhZ2VEaXJlY3RvcnlEZQog
CiBjb25zdCBMUENXU1RSIGtEdW1wUmVuZGVyVHJlZUNsYXNzTmFtZSA9IEwiRHVtcFJlbmRlclRy
ZWVXaW5kb3ciOwogCi1zdGF0aWMgYm9vbCBkdW1wVHJlZSA9IHRydWU7CiBzdGF0aWMgYm9vbCBk
dW1wUGl4ZWxzRm9yQWxsVGVzdHMgPSBmYWxzZTsKLXN0YXRpYyBib29sIGR1bXBQaXhlbHNGb3JD
dXJyZW50VGVzdDsKLXN0YXRpYyBib29sIGR1bXBBbGxQaXhlbHM7Ci1zdGF0aWMgYm9vbCBwcmlu
dFNlcGFyYXRvcnM7Ci1zdGF0aWMgYm9vbCBsZWFrQ2hlY2tpbmcgPSBmYWxzZTsKK3N0YXRpYyBi
b29sIGR1bXBQaXhlbHNGb3JDdXJyZW50VGVzdCA9IGZhbHNlOwogc3RhdGljIGJvb2wgdGhyZWFk
ZWQgPSBmYWxzZTsKK3N0YXRpYyBib29sIGR1bXBUcmVlID0gdHJ1ZTsKK3N0YXRpYyBib29sIHVz
ZVRpbWVvdXRXYXRjaGRvZyA9IHRydWU7CiBzdGF0aWMgYm9vbCBmb3JjZUNvbXBsZXhUZXh0ID0g
ZmFsc2U7CitzdGF0aWMgYm9vbCBkdW1wQWxsUGl4ZWxzOworc3RhdGljIGJvb2wgdXNlQWNjZWxl
cmF0ZWREcmF3aW5nID0gdHJ1ZTsgLy8gTm90IHVzZWQKK3N0YXRpYyBib29sIGdjQmV0d2VlblRl
c3RzID0gZmFsc2U7CitzdGF0aWMgYm9vbCBwcmludFNlcGFyYXRvcnMgPSBmYWxzZTsKK3N0YXRp
YyBib29sIGxlYWtDaGVja2luZyA9IGZhbHNlOwogc3RhdGljIGJvb2wgcHJpbnRTdXBwb3J0ZWRG
ZWF0dXJlcyA9IGZhbHNlOwogc3RhdGljIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gcGVyc2lzdGVu
dFVzZXJTdHlsZVNoZWV0TG9jYXRpb247CiAKQEAgLTQzMyw2ICs0MzgsNyBAQCBzdGF0aWMgd3N0
cmluZyBkdW1wRnJhbWVzQXNUZXh0KElXZWJGcmFtCiAgICAgQ09NUHRyPElXZWJGcmFtZT4gcGFy
ZW50OwogICAgIGlmIChGQUlMRUQoZnJhbWUtPnBhcmVudEZyYW1lKCZwYXJlbnQpKSkKICAgICAg
ICAgcmV0dXJuIEwiIjsKKwogICAgIGlmIChwYXJlbnQpIHsKICAgICAgICAgX2JzdHJfdCBuYW1l
OwogICAgICAgICBpZiAoRkFJTEVEKGZyYW1lLT5uYW1lKCZuYW1lLkdldEJTVFIoKSkpKQpAQCAt
NDU1LDE0ICs0NjEsMTUgQEAgc3RhdGljIHdzdHJpbmcgZHVtcEZyYW1lc0FzVGV4dChJV2ViRnJh
bQogICAgICAgICBDT01QdHI8SUVudW1WQVJJQU5UPiBlbnVtS2lkczsKICAgICAgICAgaWYgKEZB
SUxFRChmcmFtZS0+Y2hpbGRGcmFtZXMoJmVudW1LaWRzKSkpCiAgICAgICAgICAgICByZXR1cm4g
TCIiOworCiAgICAgICAgIFZBUklBTlQgdmFyOwotICAgICAgICBWYXJpYW50SW5pdCgmdmFyKTsK
KyAgICAgICAgOjpWYXJpYW50SW5pdCgmdmFyKTsKICAgICAgICAgd2hpbGUgKGVudW1LaWRzLT5O
ZXh0KDEsICZ2YXIsIDApID09IFNfT0spIHsKICAgICAgICAgICAgIEFTU0VSVChWX1ZUKCZ2YXIp
ID09IFZUX1VOS05PV04pOwogICAgICAgICAgICAgQ09NUHRyPElXZWJGcmFtZT4gZnJhbWVQdHI7
CiAgICAgICAgICAgICBWX1VOS05PV04oJnZhciktPlF1ZXJ5SW50ZXJmYWNlKElJRF9JV2ViRnJh
bWUsICh2b2lkKiopJmZyYW1lUHRyKTsKICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoZHVtcEZy
YW1lc0FzVGV4dChmcmFtZVB0ci5nZXQoKSkpOwotICAgICAgICAgICAgVmFyaWFudENsZWFyKCZ2
YXIpOworICAgICAgICAgICAgOjpWYXJpYW50Q2xlYXIoJnZhcik7CiAgICAgICAgIH0KICAgICB9
CiAKQEAgLTY2NywyNSArNjc0LDI2IEBAIHN0YXRpYyB2b2lkIGludmFsaWRhdGVBbnlQcmV2aW91
c1dhaXRUb0QKIAogdm9pZCBkdW1wKCkKIHsKLSAgICBpbnZhbGlkYXRlQW55UHJldmlvdXNXYWl0
VG9EdW1wV2F0Y2hkb2coKTsKKyAgICA6OkludmFsaWRhdGVSZWN0KHdlYlZpZXdXaW5kb3csIDAs
IFRSVUUpOworICAgIDo6U2VuZE1lc3NhZ2Uod2ViVmlld1dpbmRvdywgV01fUEFJTlQsIDAsIDAp
OwogCi0gICAgQ09NUHRyPElXZWJEYXRhU291cmNlPiBkYXRhU291cmNlOwotICAgIGlmIChTVUND
RUVERUQoZnJhbWUtPmRhdGFTb3VyY2UoJmRhdGFTb3VyY2UpKSkgewotICAgICAgICBDT01QdHI8
SVdlYlVSTFJlc3BvbnNlPiByZXNwb25zZTsKLSAgICAgICAgaWYgKFNVQ0NFRURFRChkYXRhU291
cmNlLT5yZXNwb25zZSgmcmVzcG9uc2UpKSAmJiByZXNwb25zZSkgewotICAgICAgICAgICAgX2Jz
dHJfdCBtaW1lVHlwZTsKLSAgICAgICAgICAgIGlmIChTVUNDRUVERUQocmVzcG9uc2UtPk1JTUVU
eXBlKCZtaW1lVHlwZS5HZXRCU1RSKCkpKSAmJiAhX3Rjc2NtcChzdGF0aWNfY2FzdDxUQ0hBUio+
KG1pbWVUeXBlKSwgVEVYVCgidGV4dC9wbGFpbiIpKSkgewotICAgICAgICAgICAgICAgIDo6Z1Rl
c3RSdW5uZXItPnNldER1bXBBc1RleHQodHJ1ZSk7Ci0gICAgICAgICAgICAgICAgOjpnVGVzdFJ1
bm5lci0+c2V0R2VuZXJhdGVQaXhlbFJlc3VsdHMoZmFsc2UpOwotICAgICAgICAgICAgfQotICAg
ICAgICB9Ci0gICAgfQorICAgIGludmFsaWRhdGVBbnlQcmV2aW91c1dhaXRUb0R1bXBXYXRjaGRv
ZygpOworICAgIEFTU0VSVCghZ1Rlc3RSdW5uZXItPmhhc1BlbmRpbmdXZWJOb3RpZmljYXRpb25D
bGljaygpKTsKIAogICAgIF9ic3RyX3QgcmVzdWx0U3RyaW5nOwogCiAgICAgaWYgKGR1bXBUcmVl
KSB7Ci0gICAgICAgIDo6SW52YWxpZGF0ZVJlY3Qod2ViVmlld1dpbmRvdywgMCwgVFJVRSk7Ci0g
ICAgICAgIDo6U2VuZE1lc3NhZ2Uod2ViVmlld1dpbmRvdywgV01fUEFJTlQsIDAsIDApOworICAg
ICAgICBDT01QdHI8SVdlYkRhdGFTb3VyY2U+IGRhdGFTb3VyY2U7CisgICAgICAgIGlmIChTVUND
RUVERUQoZnJhbWUtPmRhdGFTb3VyY2UoJmRhdGFTb3VyY2UpKSkgeworICAgICAgICAgICAgQ09N
UHRyPElXZWJVUkxSZXNwb25zZT4gcmVzcG9uc2U7CisgICAgICAgICAgICBpZiAoU1VDQ0VFREVE
KGRhdGFTb3VyY2UtPnJlc3BvbnNlKCZyZXNwb25zZSkpICYmIHJlc3BvbnNlKSB7CisgICAgICAg
ICAgICAgICAgX2JzdHJfdCBtaW1lVHlwZTsKKyAgICAgICAgICAgICAgICBpZiAoU1VDQ0VFREVE
KHJlc3BvbnNlLT5NSU1FVHlwZSgmbWltZVR5cGUuR2V0QlNUUigpKSkgJiYgIV90Y3NjbXAoc3Rh
dGljX2Nhc3Q8VENIQVIqPihtaW1lVHlwZSksIFRFWFQoInRleHQvcGxhaW4iKSkpIHsKKyAgICAg
ICAgICAgICAgICAgICAgOjpnVGVzdFJ1bm5lci0+c2V0RHVtcEFzVGV4dCh0cnVlKTsKKyAgICAg
ICAgICAgICAgICAgICAgOjpnVGVzdFJ1bm5lci0+c2V0R2VuZXJhdGVQaXhlbFJlc3VsdHMoZmFs
c2UpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQogCiAgICAg
ICAgIGlmICg6OmdUZXN0UnVubmVyLT5kdW1wQXNUZXh0KCkpIHsKICAgICAgICAgICAgIHJlc3Vs
dFN0cmluZyA9IGR1bXBGcmFtZXNBc1RleHQoZnJhbWUpLmRhdGEoKTsKQEAgLTcxOSw5ICs3Mjcs
OSBAQCB2b2lkIGR1bXAoKQogICAgIH0KIAogICAgIGlmIChkdW1wUGl4ZWxzRm9yQ3VycmVudFRl
c3QKLSAgICAgJiYgZ1Rlc3RSdW5uZXItPmdlbmVyYXRlUGl4ZWxSZXN1bHRzKCkKLSAgICAgJiYg
IWdUZXN0UnVubmVyLT5kdW1wRE9NQXNXZWJBcmNoaXZlKCkKLSAgICAgJiYgIWdUZXN0UnVubmVy
LT5kdW1wU291cmNlQXNXZWJBcmNoaXZlKCkpCisgICAgICAgICYmIGdUZXN0UnVubmVyLT5nZW5l
cmF0ZVBpeGVsUmVzdWx0cygpCisgICAgICAgICYmICFnVGVzdFJ1bm5lci0+ZHVtcERPTUFzV2Vi
QXJjaGl2ZSgpCisgICAgICAgICYmICFnVGVzdFJ1bm5lci0+ZHVtcFNvdXJjZUFzV2ViQXJjaGl2
ZSgpKQogICAgICAgICBkdW1wV2ViVmlld0FzUGl4ZWxzQW5kQ29tcGFyZVdpdGhFeHBlY3RlZChn
VGVzdFJ1bm5lci0+ZXhwZWN0ZWRQaXhlbEhhc2goKSk7CiAKICAgICBwcmludGYoIiNFT0ZcbiIp
OyAgIC8vIHRlcm1pbmF0ZSB0aGUgKHBvc3NpYmx5IGVtcHR5KSBwaXhlbHMgYmxvY2sKQEAgLTcz
MCw3ICs3MzgsNyBAQCB2b2lkIGR1bXAoKQogCiBmYWlsOgogICAgIC8vIFRoaXMgd2lsbCBleGl0
IGZyb20gb3VyIG1lc3NhZ2UgbG9vcC4KLSAgICBQb3N0UXVpdE1lc3NhZ2UoMCk7CisgICAgOjpQ
b3N0UXVpdE1lc3NhZ2UoMCk7CiAgICAgZG9uZSA9IHRydWU7CiB9CiAKQEAgLTc1Niw2ICs3NjQs
MTQgQEAgc3RhdGljIGJvb2wgc2hvdWxkRW5hYmxlRGV2ZWxvcGVyRXh0cmFzKAogCiBzdGF0aWMg
dm9pZCByZXNldERlZmF1bHRzVG9Db25zaXN0ZW50VmFsdWVzKElXZWJQcmVmZXJlbmNlcyogcHJl
ZmVyZW5jZXMpCiB7CisgICAgQVNTRVJUKHByZWZlcmVuY2VzKTsKKworICAgIHByZWZlcmVuY2Vz
LT5zZXRBdXRvc2F2ZXMoRkFMU0UpOworCisgICAgQ09NUHRyPElXZWJQcmVmZXJlbmNlc1ByaXZh
dGU+IHByZWZzUHJpdmF0ZShRdWVyeSwgcHJlZmVyZW5jZXMpOworICAgIEFTU0VSVChwcmVmc1By
aXZhdGUpOworICAgIHByZWZzUHJpdmF0ZS0+c2V0RnVsbFNjcmVlbkVuYWJsZWQoVFJVRSk7CisK
ICNpZmRlZiBVU0VfTUFDX0ZPTlRTCiAgICAgc3RhdGljIF9ic3RyX3Qgc3RhbmRhcmRGYW1pbHko
VEVYVCgiVGltZXMiKSk7CiAgICAgc3RhdGljIF9ic3RyX3QgZml4ZWRGYW1pbHkoVEVYVCgiQ291
cmllciIpKTsKQEAgLTc3Miw2ICs3ODgsOCBAQCBzdGF0aWMgdm9pZCByZXNldERlZmF1bHRzVG9D
b25zaXN0ZW50VmFsCiAgICAgc3RhdGljIF9ic3RyX3QgcGljdG9ncmFwaEZhbWlseShURVhUKCJU
aW1lcyBOZXcgUm9tYW4iKSk7CiAjZW5kaWYKIAorICAgIHByZWZzUHJpdmF0ZS0+c2V0QWxsb3dV
bml2ZXJzYWxBY2Nlc3NGcm9tRmlsZVVSTHMoVFJVRSk7CisgICAgcHJlZnNQcml2YXRlLT5zZXRB
bGxvd0ZpbGVBY2Nlc3NGcm9tRmlsZVVSTHMoVFJVRSk7CiAgICAgcHJlZmVyZW5jZXMtPnNldFN0
YW5kYXJkRm9udEZhbWlseShzdGFuZGFyZEZhbWlseSk7CiAgICAgcHJlZmVyZW5jZXMtPnNldEZp
eGVkRm9udEZhbWlseShmaXhlZEZhbWlseSk7CiAgICAgcHJlZmVyZW5jZXMtPnNldFNlcmlmRm9u
dEZhbWlseShzdGFuZGFyZEZhbWlseSk7CkBAIC03NzksMjggKzc5NywzNCBAQCBzdGF0aWMgdm9p
ZCByZXNldERlZmF1bHRzVG9Db25zaXN0ZW50VmFsCiAgICAgcHJlZmVyZW5jZXMtPnNldEN1cnNp
dmVGb250RmFtaWx5KGN1cnNpdmVGYW1pbHkpOwogICAgIHByZWZlcmVuY2VzLT5zZXRGYW50YXN5
Rm9udEZhbWlseShmYW50YXN5RmFtaWx5KTsKICAgICBwcmVmZXJlbmNlcy0+c2V0UGljdG9ncmFw
aEZvbnRGYW1pbHkocGljdG9ncmFwaEZhbWlseSk7Ci0KLSAgICBwcmVmZXJlbmNlcy0+c2V0QXV0
b3NhdmVzKEZBTFNFKTsKICAgICBwcmVmZXJlbmNlcy0+c2V0RGVmYXVsdEZvbnRTaXplKDE2KTsK
ICAgICBwcmVmZXJlbmNlcy0+c2V0RGVmYXVsdEZpeGVkRm9udFNpemUoMTMpOwogICAgIHByZWZl
cmVuY2VzLT5zZXRNaW5pbXVtRm9udFNpemUoMCk7CiAgICAgcHJlZmVyZW5jZXMtPnNldERlZmF1
bHRUZXh0RW5jb2RpbmdOYW1lKEwiSVNPLTg4NTktMSIpOwogICAgIHByZWZlcmVuY2VzLT5zZXRK
YXZhRW5hYmxlZChGQUxTRSk7Ci0gICAgcHJlZmVyZW5jZXMtPnNldFBsdWdJbnNFbmFibGVkKFRS
VUUpOwotICAgIHByZWZlcmVuY2VzLT5zZXRET01QYXN0ZUFsbG93ZWQoVFJVRSk7Ci0gICAgcHJl
ZmVyZW5jZXMtPnNldEVkaXRhYmxlTGlua0JlaGF2aW9yKFdlYktpdEVkaXRhYmxlTGlua09ubHlM
aXZlV2l0aFNoaWZ0S2V5KTsKLSAgICBwcmVmZXJlbmNlcy0+c2V0Rm9udFNtb290aGluZyhGb250
U21vb3RoaW5nVHlwZVN0YW5kYXJkKTsKLSAgICBwcmVmZXJlbmNlcy0+c2V0VXNlc1BhZ2VDYWNo
ZShGQUxTRSk7Ci0gICAgcHJlZmVyZW5jZXMtPnNldFByaXZhdGVCcm93c2luZ0VuYWJsZWQoRkFM
U0UpOwotICAgIHByZWZlcmVuY2VzLT5zZXRKYXZhU2NyaXB0Q2FuT3BlbldpbmRvd3NBdXRvbWF0
aWNhbGx5KFRSVUUpOwogICAgIHByZWZlcmVuY2VzLT5zZXRKYXZhU2NyaXB0RW5hYmxlZChUUlVF
KTsKKyAgICBwcmVmZXJlbmNlcy0+c2V0RWRpdGFibGVMaW5rQmVoYXZpb3IoV2ViS2l0RWRpdGFi
bGVMaW5rT25seUxpdmVXaXRoU2hpZnRLZXkpOwogICAgIHByZWZlcmVuY2VzLT5zZXRUYWJzVG9M
aW5rcyhGQUxTRSk7CisgICAgcHJlZmVyZW5jZXMtPnNldERPTVBhc3RlQWxsb3dlZChUUlVFKTsK
ICAgICBwcmVmZXJlbmNlcy0+c2V0U2hvdWxkUHJpbnRCYWNrZ3JvdW5kcyhUUlVFKTsKICAgICBw
cmVmZXJlbmNlcy0+c2V0Q2FjaGVNb2RlbChXZWJDYWNoZU1vZGVsRG9jdW1lbnRCcm93c2VyKTsK
LSAgICBwcmVmZXJlbmNlcy0+c2V0TG9hZHNJbWFnZXNBdXRvbWF0aWNhbGx5KFRSVUUpOworICAg
IHByZWZzUHJpdmF0ZS0+c2V0WFNTQXVkaXRvckVuYWJsZWQoRkFMU0UpOworICAgIHByZWZzUHJp
dmF0ZS0+c2V0RXhwZXJpbWVudGFsTm90aWZpY2F0aW9uc0VuYWJsZWQoRkFMU0UpOworICAgIHBy
ZWZlcmVuY2VzLT5zZXRQbHVnSW5zRW5hYmxlZChUUlVFKTsKICAgICBwcmVmZXJlbmNlcy0+c2V0
VGV4dEFyZWFzQXJlUmVzaXphYmxlKFRSVUUpOwotICAgIHByZWZlcmVuY2VzLT5zZXRDU1NSZWdp
b25zRW5hYmxlZChUUlVFKTsKIAorICAgIHByZWZlcmVuY2VzLT5zZXRQcml2YXRlQnJvd3NpbmdF
bmFibGVkKEZBTFNFKTsKKyAgICBwcmVmc1ByaXZhdGUtPnNldEF1dGhvckFuZFVzZXJTdHlsZXNF
bmFibGVkKFRSVUUpOworICAgIC8vIFNocmlua3Mgc3RhbmRhbG9uZSBpbWFnZXMgdG8gZml0OiBZ
RVMKKyAgICBwcmVmZXJlbmNlcy0+c2V0SmF2YVNjcmlwdENhbk9wZW5XaW5kb3dzQXV0b21hdGlj
YWxseShUUlVFKTsKKyAgICBwcmVmc1ByaXZhdGUtPnNldEphdmFTY3JpcHRDYW5BY2Nlc3NDbGlw
Ym9hcmQoVFJVRSk7CisgICAgcHJlZnNQcml2YXRlLT5zZXRPZmZsaW5lV2ViQXBwbGljYXRpb25D
YWNoZUVuYWJsZWQoVFJVRSk7CisgICAgcHJlZnNQcml2YXRlLT5zZXREZXZlbG9wZXJFeHRyYXNF
bmFibGVkKEZBTFNFKTsKKyAgICAvLyBTZXQgSlMgZXhwZXJpbWVudHMgZW5hYmxlZDogWUVTCisg
ICAgcHJlZmVyZW5jZXMtPnNldExvYWRzSW1hZ2VzQXV0b21hdGljYWxseShUUlVFKTsKKyAgICBw
cmVmc1ByaXZhdGUtPnNldExvYWRzU2l0ZUljb25zSWdub3JpbmdJbWFnZUxvYWRpbmdQcmVmZXJl
bmNlKEZBTFNFKTsKKyAgICBwcmVmc1ByaXZhdGUtPnNldEZyYW1lRmxhdHRlbmluZ0VuYWJsZWQo
RkFMU0UpOworICAgIC8vIFNldCBzcGF0aWFsIG5hdmlnYXRpb24gZW5hYmxlZDogTk8KICAgICBp
ZiAocGVyc2lzdGVudFVzZXJTdHlsZVNoZWV0TG9jYXRpb24pIHsKICAgICAgICAgVmVjdG9yPHdj
aGFyX3Q+IHVybENoYXJhY3RlcnMoQ0ZTdHJpbmdHZXRMZW5ndGgocGVyc2lzdGVudFVzZXJTdHls
ZVNoZWV0TG9jYXRpb24uZ2V0KCkpKTsKICAgICAgICAgQ0ZTdHJpbmdHZXRDaGFyYWN0ZXJzKHBl
cnNpc3RlbnRVc2VyU3R5bGVTaGVldExvY2F0aW9uLmdldCgpLCBDRlJhbmdlTWFrZSgwLCBDRlN0
cmluZ0dldExlbmd0aChwZXJzaXN0ZW50VXNlclN0eWxlU2hlZXRMb2NhdGlvbi5nZXQoKSkpLCAo
VW5pQ2hhciAqKXVybENoYXJhY3RlcnMuZGF0YSgpKTsKQEAgLTgxMCwyNiArODM0LDE5IEBAIHN0
YXRpYyB2b2lkIHJlc2V0RGVmYXVsdHNUb0NvbnNpc3RlbnRWYWwKICAgICB9IGVsc2UKICAgICAg
ICAgcHJlZmVyZW5jZXMtPnNldFVzZXJTdHlsZVNoZWV0RW5hYmxlZChGQUxTRSk7CiAKLSAgICBD
T01QdHI8SVdlYlByZWZlcmVuY2VzUHJpdmF0ZT4gcHJlZnNQcml2YXRlKFF1ZXJ5LCBwcmVmZXJl
bmNlcyk7Ci0gICAgaWYgKHByZWZzUHJpdmF0ZSkgewotICAgICAgICBwcmVmc1ByaXZhdGUtPnNl
dEFsbG93VW5pdmVyc2FsQWNjZXNzRnJvbUZpbGVVUkxzKFRSVUUpOwotICAgICAgICBwcmVmc1By
aXZhdGUtPnNldEFsbG93RmlsZUFjY2Vzc0Zyb21GaWxlVVJMcyhUUlVFKTsKLSAgICAgICAgcHJl
ZnNQcml2YXRlLT5zZXRBdXRob3JBbmRVc2VyU3R5bGVzRW5hYmxlZChUUlVFKTsKLSAgICAgICAg
cHJlZnNQcml2YXRlLT5zZXREZXZlbG9wZXJFeHRyYXNFbmFibGVkKEZBTFNFKTsKLSAgICAgICAg
cHJlZnNQcml2YXRlLT5zZXRFeHBlcmltZW50YWxOb3RpZmljYXRpb25zRW5hYmxlZChUUlVFKTsK
LSAgICAgICAgcHJlZnNQcml2YXRlLT5zZXRTaG91bGRQYWludE5hdGl2ZUNvbnRyb2xzKFRSVUUp
OyAvLyBGSVhNRSAtIG5lZWQgdG8gbWFrZSBEUlQgcGFzcyB3aXRoIFdpbmRvd3MgbmF0aXZlIGNv
bnRyb2xzIDxodHRwOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yNTU5Mj4KLSAg
ICAgICAgcHJlZnNQcml2YXRlLT5zZXRKYXZhU2NyaXB0Q2FuQWNjZXNzQ2xpcGJvYXJkKFRSVUUp
OwotICAgICAgICBwcmVmc1ByaXZhdGUtPnNldFhTU0F1ZGl0b3JFbmFibGVkKEZBTFNFKTsKLSAg
ICAgICAgcHJlZnNQcml2YXRlLT5zZXRPZmZsaW5lV2ViQXBwbGljYXRpb25DYWNoZUVuYWJsZWQo
VFJVRSk7Ci0gICAgICAgIHByZWZzUHJpdmF0ZS0+c2V0TG9hZHNTaXRlSWNvbnNJZ25vcmluZ0lt
YWdlTG9hZGluZ1ByZWZlcmVuY2UoRkFMU0UpOwotICAgICAgICBwcmVmc1ByaXZhdGUtPnNldEZy
YW1lRmxhdHRlbmluZ0VuYWJsZWQoRkFMU0UpOwotICAgICAgICBwcmVmc1ByaXZhdGUtPnNldEZ1
bGxTY3JlZW5FbmFibGVkKFRSVUUpOwogI2lmIFVTRShDRykKLSAgICAgICAgcHJlZnNQcml2YXRl
LT5zZXRBY2NlbGVyYXRlZENvbXBvc2l0aW5nRW5hYmxlZChUUlVFKTsKKyAgICBwcmVmc1ByaXZh
dGUtPnNldEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdFbmFibGVkKFRSVUUpOwogI2VuZGlmCi0gICAg
ICAgIHByZWZzUHJpdmF0ZS0+c2V0TW9ja1Njcm9sbGJhcnNFbmFibGVkKFRSVUUpOwotICAgICAg
ICBwcmVmc1ByaXZhdGUtPnNldFNjcmVlbkZvbnRTdWJzdGl0dXRpb25FbmFibGVkKFRSVUUpOwot
ICAgIH0KKyAgICAvLyBTZXQgV2ViR0wgRW5hYmxlZDogTk8KKyAgICBwcmVmZXJlbmNlcy0+c2V0
Q1NTUmVnaW9uc0VuYWJsZWQoVFJVRSk7CisgICAgLy8gU2V0IHVzZXMgSFRNTDUgcGFyc2VyIHF1
aXJrczogTk8KKyAgICAvLyBBc3luYyBzcGVsbGNoZWNrOiBOTworICAgIHByZWZzUHJpdmF0ZS0+
c2V0U2hvdWxkUGFpbnROYXRpdmVDb250cm9scyhUUlVFKTsgLy8gRklYTUUgLSBuZWVkIHRvIG1h
a2UgRFJUIHBhc3Mgd2l0aCBXaW5kb3dzIG5hdGl2ZSBjb250cm9scyA8aHR0cDovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjU1OTI+CisgICAgcHJlZnNQcml2YXRlLT5zZXRNb2Nr
U2Nyb2xsYmFyc0VuYWJsZWQoVFJVRSk7CisKKyAgICBwcmVmZXJlbmNlcy0+c2V0Rm9udFNtb290
aGluZyhGb250U21vb3RoaW5nVHlwZVN0YW5kYXJkKTsKKyAgICBwcmVmc1ByaXZhdGUtPnNldFNj
cmVlbkZvbnRTdWJzdGl0dXRpb25FbmFibGVkKFRSVUUpOworCiAgICAgc2V0QWx3YXlzQWNjZXB0
Q29va2llcyhmYWxzZSk7CiAKICAgICBzZXRsb2NhbGUoTENfQUxMLCAiIik7CkBAIC04NDEsMTYg
Kzg1OCwyNyBAQCBzdGF0aWMgdm9pZCByZXNldFdlYlZpZXdUb0NvbnNpc3RlbnRTdGF0CiAgICAg
aWYgKEZBSUxFRChmcmFtZS0+d2ViVmlldygmd2ViVmlldykpKSAKICAgICAgICAgcmV0dXJuOwog
Ci0gICAgd2ViVmlldy0+c2V0UG9saWN5RGVsZWdhdGUoMCk7Ci0gICAgcG9saWN5RGVsZWdhdGUt
PnNldFBlcm1pc3NpdmUoZmFsc2UpOwotICAgIHBvbGljeURlbGVnYXRlLT5zZXRDb250cm9sbGVy
VG9Ob3RpZnlEb25lKDApOwotCiAgICAgQ09NUHRyPElXZWJJQkFjdGlvbnM+IHdlYklCQWN0aW9u
cyhRdWVyeSwgd2ViVmlldyk7CiAgICAgaWYgKHdlYklCQWN0aW9ucykgewogICAgICAgICB3ZWJJ
QkFjdGlvbnMtPm1ha2VUZXh0U3RhbmRhcmRTaXplKDApOwogICAgICAgICB3ZWJJQkFjdGlvbnMt
PnJlc2V0UGFnZVpvb20oMCk7CiAgICAgfQogCisgICAgQ09NUHRyPElXZWJWaWV3UHJpdmF0ZT4g
d2ViVmlld1ByaXZhdGUoUXVlcnksIHdlYlZpZXcpOworICAgIGlmICh3ZWJWaWV3UHJpdmF0ZSkK
KyAgICAgICAgd2ViVmlld1ByaXZhdGUtPnNldFRhYktleUN5Y2xlc1Rocm91Z2hFbGVtZW50cyhU
UlVFKTsKKworICAgIHdlYlZpZXctPnNldFBvbGljeURlbGVnYXRlKG51bGxwdHIpOworICAgIHBv
bGljeURlbGVnYXRlLT5zZXRQZXJtaXNzaXZlKGZhbHNlKTsKKyAgICBwb2xpY3lEZWxlZ2F0ZS0+
c2V0Q29udHJvbGxlclRvTm90aWZ5RG9uZShudWxscHRyKTsKKyAgICBzaGFyZWRGcmFtZUxvYWRE
ZWxlZ2F0ZS0+cmVzZXRUb0NvbnNpc3RlbnRTdGF0ZSgpOworCisgICAgaWYgKHdlYlZpZXdQcml2
YXRlKSB7CisgICAgICAgIHdlYlZpZXdQcml2YXRlLT5jbGVhck1haW5GcmFtZU5hbWUoKTsKKyAg
ICAgICAgX2JzdHJfdCBncm91cE5hbWU7CisgICAgICAgIGlmIChTVUNDRUVERUQod2ViVmlldy0+
Z3JvdXBOYW1lKCZncm91cE5hbWUuR2V0QlNUUigpKSkpCisgICAgICAgICAgICB3ZWJWaWV3UHJp
dmF0ZS0+cmVtb3ZlQWxsVXNlckNvbnRlbnRGcm9tR3JvdXAoZ3JvdXBOYW1lKTsKKyAgICB9CiAK
ICAgICBDT01QdHI8SVdlYlByZWZlcmVuY2VzPiBwcmVmZXJlbmNlczsKICAgICBpZiAoU1VDQ0VF
REVEKHdlYlZpZXctPnByZWZlcmVuY2VzKCZwcmVmZXJlbmNlcykpKQpAQCAtODYxLDI1ICs4ODks
MTQgQEAgc3RhdGljIHZvaWQgcmVzZXRXZWJWaWV3VG9Db25zaXN0ZW50U3RhdAogICAgICAgICBX
ZWJDb3JlVGVzdFN1cHBvcnQ6OnJlc2V0SW50ZXJuYWxzT2JqZWN0KGNvbnRleHQpOwogICAgIH0K
IAotICAgIENPTVB0cjxJV2ViVmlld1ByaXZhdGU+IHdlYlZpZXdQcml2YXRlKFF1ZXJ5LCB3ZWJW
aWV3KTsKLSAgICBpZiAoIXdlYlZpZXdQcml2YXRlKQotICAgICAgICByZXR1cm47Ci0KICAgICBI
V05EIHZpZXdXaW5kb3c7Ci0gICAgaWYgKFNVQ0NFRURFRCh3ZWJWaWV3UHJpdmF0ZS0+dmlld1dp
bmRvdygmdmlld1dpbmRvdykpICYmIHZpZXdXaW5kb3cpCi0gICAgICAgIFNldEZvY3VzKHZpZXdX
aW5kb3cpOworICAgIGlmICh3ZWJWaWV3UHJpdmF0ZSAmJiBTVUNDRUVERUQod2ViVmlld1ByaXZh
dGUtPnZpZXdXaW5kb3coJnZpZXdXaW5kb3cpKSAmJiB2aWV3V2luZG93KQorICAgICAgICA6OlNl
dEZvY3VzKHZpZXdXaW5kb3cpOwogCi0gICAgd2ViVmlld1ByaXZhdGUtPmNsZWFyTWFpbkZyYW1l
TmFtZSgpOwogICAgIHdlYlZpZXdQcml2YXRlLT5yZXNldE9yaWdpbkFjY2Vzc1doaXRlbGlzdHMo
KTsKIAotICAgIF9ic3RyX3QgZ3JvdXBOYW1lOwotICAgIGlmIChTVUNDRUVERUQod2ViVmlldy0+
Z3JvdXBOYW1lKCZncm91cE5hbWUuR2V0QlNUUigpKSkpCi0gICAgICAgIHdlYlZpZXdQcml2YXRl
LT5yZW1vdmVBbGxVc2VyQ29udGVudEZyb21Hcm91cChncm91cE5hbWUpOwotCiAgICAgc2hhcmVk
VUlEZWxlZ2F0ZS0+cmVzZXRVbmRvTWFuYWdlcigpOwogCi0gICAgc2hhcmVkRnJhbWVMb2FkRGVs
ZWdhdGUtPnJlc2V0VG9Db25zaXN0ZW50U3RhdGUoKTsKLQogICAgIENPTVB0cjxJV2ViRnJhbWVQ
cml2YXRlPiBmcmFtZVByaXZhdGU7CiAgICAgaWYgKFNVQ0NFRURFRChmcmFtZS0+UXVlcnlJbnRl
cmZhY2UoJmZyYW1lUHJpdmF0ZSkpKQogICAgICAgICBmcmFtZVByaXZhdGUtPmNsZWFyT3BlbmVy
KCk7CkBAIC04ODgsMTUgKzkwNSw4IEBAIHN0YXRpYyB2b2lkIHJlc2V0V2ViVmlld1RvQ29uc2lz
dGVudFN0YXQKIHN0YXRpYyB2b2lkIHNpemVXZWJWaWV3Rm9yQ3VycmVudFRlc3QoKQogewogICAg
IGJvb2wgaXNTVkdXM0NUZXN0ID0gKGdUZXN0UnVubmVyLT50ZXN0VVJMKCkuZmluZCgic3ZnXFxX
M0MtU1ZHLTEuMSIpICE9IHN0cmluZzo6bnBvcyk7Ci0gICAgdW5zaWduZWQgd2lkdGg7Ci0gICAg
dW5zaWduZWQgaGVpZ2h0OwotICAgIGlmIChpc1NWR1czQ1Rlc3QpIHsKLSAgICAgICAgd2lkdGgg
PSBUZXN0UnVubmVyOjp3M2NTVkdWaWV3V2lkdGg7Ci0gICAgICAgIGhlaWdodCA9IFRlc3RSdW5u
ZXI6OnczY1NWR1ZpZXdIZWlnaHQ7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgd2lkdGggPSBUZXN0
UnVubmVyOjp2aWV3V2lkdGg7Ci0gICAgICAgIGhlaWdodCA9IFRlc3RSdW5uZXI6OnZpZXdIZWln
aHQ7Ci0gICAgfQorICAgIHVuc2lnbmVkIHdpZHRoID0gaXNTVkdXM0NUZXN0ID8gVGVzdFJ1bm5l
cjo6dzNjU1ZHVmlld1dpZHRoIDogVGVzdFJ1bm5lcjo6dmlld1dpZHRoOworICAgIHVuc2lnbmVk
IGhlaWdodCA9IGlzU1ZHVzNDVGVzdCA/IFRlc3RSdW5uZXI6OnczY1NWR1ZpZXdIZWlnaHQgOiBU
ZXN0UnVubmVyOjp2aWV3SGVpZ2h0OwogCiAgICAgOjpTZXRXaW5kb3dQb3Mod2ViVmlld1dpbmRv
dywgMCwgMCwgMCwgd2lkdGgsIGhlaWdodCwgU1dQX05PTU9WRSk7CiB9CkBAIC0xMDE3LDYgKzEw
MjcsOCBAQCBzdGF0aWMgdm9pZCBydW5UZXN0KGNvbnN0IHN0cmluZyYgaW5wdXRMCiAKICAgICBh
ZGRGb250RmFsbGJhY2tJZlByZXNlbnQoZmFsbGJhY2tQYXRoKTsKIAorICAgIHJlc2V0V2ViVmll
d1RvQ29uc2lzdGVudFN0YXRlQmVmb3JlVGVzdGluZygpOworCiAgICAgc2l6ZVdlYlZpZXdGb3JD
dXJyZW50VGVzdCgpOwogICAgIGdUZXN0UnVubmVyLT5zZXRJY29uRGF0YWJhc2VFbmFibGVkKGZh
bHNlKTsKICAgICBnVGVzdFJ1bm5lci0+Y2xlYXJBbGxBcHBsaWNhdGlvbkNhY2hlcygpOwpAQCAt
MTAzMiwxNCArMTA0NCw5IEBAIHN0YXRpYyB2b2lkIHJ1blRlc3QoY29uc3Qgc3RyaW5nJiBpbnB1
dEwKICAgICAgICAgICAgICAgICBnVGVzdFJ1bm5lci0+c2V0RHVtcEhpc3RvcnlEZWxlZ2F0ZUNh
bGxiYWNrcyh0cnVlKTsgICAgICAgICAgICAKICAgICAgICAgICAgICAgICB2aWV3UHJpdmF0ZS0+
c2V0SGlzdG9yeURlbGVnYXRlKHNoYXJlZEhpc3RvcnlEZWxlZ2F0ZS5nZXQoKSk7CiAgICAgICAg
ICAgICB9IGVsc2UKLSAgICAgICAgICAgICAgICB2aWV3UHJpdmF0ZS0+c2V0SGlzdG9yeURlbGVn
YXRlKDApOworICAgICAgICAgICAgICAgIHZpZXdQcml2YXRlLT5zZXRIaXN0b3J5RGVsZWdhdGUo
bnVsbHB0cik7CiAgICAgICAgIH0KICAgICB9Ci0gICAgQ09NUHRyPElXZWJIaXN0b3J5PiBoaXN0
b3J5OwotICAgIGlmIChTVUNDRUVERUQoV2ViS2l0Q3JlYXRlSW5zdGFuY2UoQ0xTSURfV2ViSGlz
dG9yeSwgMCwgX191dWlkb2YoaGlzdG9yeSksIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCoqPigmaGlz
dG9yeSkpKSkKLSAgICAgICAgaGlzdG9yeS0+c2V0T3B0aW9uYWxTaGFyZWRIaXN0b3J5KDApOwot
Ci0gICAgcmVzZXRXZWJWaWV3VG9Db25zaXN0ZW50U3RhdGVCZWZvcmVUZXN0aW5nKCk7CiAKICAg
ICBpZiAoc2hvdWxkRW5hYmxlRGV2ZWxvcGVyRXh0cmFzKHBhdGhPclVSTC5jX3N0cigpKSkgewog
ICAgICAgICBnVGVzdFJ1bm5lci0+c2V0RGV2ZWxvcGVyRXh0cmFzRW5hYmxlZCh0cnVlKTsKQEAg
LTEwNDksMTIgKzEwNTYsMTQgQEAgc3RhdGljIHZvaWQgcnVuVGVzdChjb25zdCBzdHJpbmcmIGlu
cHV0TAogICAgICAgICB9CiAgICAgfQogCi0gICAgcHJldlRlc3RCRkl0ZW0gPSAwOwotICAgIGlm
ICh3ZWJWaWV3KSB7Ci0gICAgICAgIENPTVB0cjxJV2ViQmFja0ZvcndhcmRMaXN0PiBiZkxpc3Q7
Ci0gICAgICAgIGlmIChTVUNDRUVERUQod2ViVmlldy0+YmFja0ZvcndhcmRMaXN0KCZiZkxpc3Qp
KSkKLSAgICAgICAgICAgIGJmTGlzdC0+Y3VycmVudEl0ZW0oJnByZXZUZXN0QkZJdGVtKTsKLSAg
ICB9CisgICAgQ09NUHRyPElXZWJIaXN0b3J5PiBoaXN0b3J5OworICAgIGlmIChTVUNDRUVERUQo
V2ViS2l0Q3JlYXRlSW5zdGFuY2UoQ0xTSURfV2ViSGlzdG9yeSwgMCwgX191dWlkb2YoaGlzdG9y
eSksIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCoqPigmaGlzdG9yeSkpKSkKKyAgICAgICAgaGlzdG9y
eS0+c2V0T3B0aW9uYWxTaGFyZWRIaXN0b3J5KG51bGxwdHIpOworCisgICAgcHJldlRlc3RCRkl0
ZW0gPSBudWxscHRyOworICAgIENPTVB0cjxJV2ViQmFja0ZvcndhcmRMaXN0PiBiZkxpc3Q7Cisg
ICAgaWYgKHdlYlZpZXcgJiYgU1VDQ0VFREVEKHdlYlZpZXctPmJhY2tGb3J3YXJkTGlzdCgmYmZM
aXN0KSkpCisgICAgICAgIGJmTGlzdC0+Y3VycmVudEl0ZW0oJnByZXZUZXN0QkZJdGVtKTsKIAog
ICAgIFdvcmtRdWV1ZTo6c2hhcmVkKCktPmNsZWFyKCk7CiAgICAgV29ya1F1ZXVlOjpzaGFyZWQo
KS0+c2V0RnJvemVuKGZhbHNlKTsKQEAgLTEwNzcsNyArMTA4Niw3IEBAIHN0YXRpYyB2b2lkIHJ1
blRlc3QoY29uc3Qgc3RyaW5nJiBpbnB1dEwKICNpZiBVU0UoQ0YpCiAgICAgICAgIENGUnVuTG9v
cFJ1bkluTW9kZShrQ0ZSdW5Mb29wRGVmYXVsdE1vZGUsIDAsIHRydWUpOwogI2VuZGlmCi0gICAg
ICAgIGlmICghR2V0TWVzc2FnZSgmbXNnLCAwLCAwLCAwKSkKKyAgICAgICAgaWYgKCE6OkdldE1l
c3NhZ2UoJm1zZywgMCwgMCwgMCkpCiAgICAgICAgICAgICBicmVhazsKIAogICAgICAgICAvLyBX
ZSBnZXQgc3B1cmlvdXMgV01fTU9VU0VMRUFWRSBldmVudHMgd2hpY2ggbWFrZSBldmVudCBoYW5k
bGluZyBtYWNoaW5lcnkgdGhpbmsgdGhhdCBtb3VzZSBidXR0b24KQEAgLTEwODUsMTggKzEwOTQs
MTIgQEAgc3RhdGljIHZvaWQgcnVuVGVzdChjb25zdCBzdHJpbmcmIGlucHV0TAogICAgICAgICAv
LyBNb3VzZSBjYW4gbmV2ZXIgbGVhdmUgV2ViVmlldyBkdXJpbmcgbm9ybWFsIER1bXBSZW5kZXJU
cmVlIG9wZXJhdGlvbiwgc28gd2UganVzdCBpZ25vcmUgYWxsIHN1Y2ggZXZlbnRzLgogICAgICAg
ICBpZiAobXNnLm1lc3NhZ2UgPT0gV01fTU9VU0VMRUFWRSkKICAgICAgICAgICAgIGNvbnRpbnVl
OwotICAgICAgICBUcmFuc2xhdGVNZXNzYWdlKCZtc2cpOwotICAgICAgICBEaXNwYXRjaE1lc3Nh
Z2UoJm1zZyk7Ci0gICAgfQotCi0gICAgaWYgKHNob3VsZEVuYWJsZURldmVsb3BlckV4dHJhcyhw
YXRoT3JVUkwuY19zdHIoKSkpIHsKLSAgICAgICAgZ1Rlc3RSdW5uZXItPmNsb3NlV2ViSW5zcGVj
dG9yKCk7Ci0gICAgICAgIGdUZXN0UnVubmVyLT5zZXREZXZlbG9wZXJFeHRyYXNFbmFibGVkKGZh
bHNlKTsKKyAgICAgICAgOjpUcmFuc2xhdGVNZXNzYWdlKCZtc2cpOworICAgICAgICA6OkRpc3Bh
dGNoTWVzc2FnZSgmbXNnKTsKICAgICB9CiAKLSAgICByZXNldFdlYlZpZXdUb0NvbnNpc3RlbnRT
dGF0ZUJlZm9yZVRlc3RpbmcoKTsKLQotICAgIGZyYW1lLT5zdG9wTG9hZGluZygpOworICAgIC8v
IEV2ZW50U2VuZGluZ0NvbnRyb2xsZXIgY2xlYXJTYXZlZEV2ZW50cworICAgIFdvcmtRdWV1ZTo6
c2hhcmVkKCktPmNsZWFyKCk7CiAKICAgICBpZiAoOjpnVGVzdFJ1bm5lci0+Y2xvc2VSZW1haW5p
bmdXaW5kb3dzV2hlbkNvbXBsZXRlKCkpIHsKICAgICAgICAgVmVjdG9yPEhXTkQ+IHdpbmRvd3Mg
PSBvcGVuV2luZG93cygpOwpAQCAtMTEwOCwxMCArMTExMSwxOSBAQCBzdGF0aWMgdm9pZCBydW5U
ZXN0KGNvbnN0IHN0cmluZyYgaW5wdXRMCiAgICAgICAgICAgICBpZiAod2luZG93ID09IGhvc3RX
aW5kb3cpCiAgICAgICAgICAgICAgICAgY29udGludWU7CiAKLSAgICAgICAgICAgIERlc3Ryb3lX
aW5kb3cod2luZG93KTsKKyAgICAgICAgICAgIDo6RGVzdHJveVdpbmRvdyh3aW5kb3cpOwogICAg
ICAgICB9CiAgICAgfQogCisgICAgaWYgKHNob3VsZEVuYWJsZURldmVsb3BlckV4dHJhcyhwYXRo
T3JVUkwuY19zdHIoKSkpIHsKKyAgICAgICAgZ1Rlc3RSdW5uZXItPmNsb3NlV2ViSW5zcGVjdG9y
KCk7CisgICAgICAgIGdUZXN0UnVubmVyLT5zZXREZXZlbG9wZXJFeHRyYXNFbmFibGVkKGZhbHNl
KTsKKyAgICB9CisKKyAgICByZXNldFdlYlZpZXdUb0NvbnNpc3RlbnRTdGF0ZUJlZm9yZVRlc3Rp
bmcoKTsKKworICAgIGZyYW1lLT5zdG9wTG9hZGluZygpOworCiBleGl0OgogICAgIHJlbW92ZUZv
bnRGYWxsYmFja0lmUHJlc2VudChmYWxsYmFja1BhdGgpOwogICAgIDo6Z1Rlc3RSdW5uZXIuY2xl
YXIoKTsKQEAgLTExMjEsMTMgKzExMzMsMTMgQEAgZXhpdDoKIAogVmVjdG9yPEhXTkQ+JiBvcGVu
V2luZG93cygpCiB7Ci0gICAgc3RhdGljIFZlY3RvcjxIV05EPiB2ZWN0b3I7CisgICAgc3RhdGlj
IE5ldmVyRGVzdHJveWVkPFZlY3RvcjxIV05EPj4gdmVjdG9yOwogICAgIHJldHVybiB2ZWN0b3I7
CiB9CiAKIFdpbmRvd1RvV2ViVmlld01hcCYgd2luZG93VG9XZWJWaWV3TWFwKCkKIHsKLSAgICBz
dGF0aWMgV2luZG93VG9XZWJWaWV3TWFwIG1hcDsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8
V2luZG93VG9XZWJWaWV3TWFwPiBtYXA7CiAgICAgcmV0dXJuIG1hcDsKIH0KIApAQCAtMTEzOCwy
NiArMTE1MCwyNSBAQCBJV2ViVmlldyogY3JlYXRlV2ViVmlld0FuZE9mZnNjcmVlbldpbmRvCiAg
ICAgSFdORCBob3N0V2luZG93ID0gQ3JlYXRlV2luZG93RXgoV1NfRVhfVE9PTFdJTkRPVywga0R1
bXBSZW5kZXJUcmVlQ2xhc3NOYW1lLCBURVhUKCJEdW1wUmVuZGVyVHJlZSIpLCBXU19QT1BVUCwK
ICAgICAgIC1tYXhWaWV3V2lkdGgsIC1tYXhWaWV3SGVpZ2h0LCBtYXhWaWV3V2lkdGgsIG1heFZp
ZXdIZWlnaHQsIDAsIDAsIEdldE1vZHVsZUhhbmRsZSgwKSwgMCk7CiAKLSAgICBJV2ViVmlldyog
d2ViVmlldzsKLQorICAgIElXZWJWaWV3KiB3ZWJWaWV3ID0gbnVsbHB0cjsKICAgICBIUkVTVUxU
IGhyID0gV2ViS2l0Q3JlYXRlSW5zdGFuY2UoQ0xTSURfV2ViVmlldywgMCwgSUlEX0lXZWJWaWV3
LCAodm9pZCoqKSZ3ZWJWaWV3KTsKICAgICBpZiAoRkFJTEVEKGhyKSkgewogICAgICAgICBmcHJp
bnRmKHN0ZGVyciwgIkZhaWxlZCB0byBjcmVhdGUgQ0xTSURfV2ViVmlldyBpbnN0YW5jZSwgZXJy
b3IgMHgleFxuIiwgaHIpOwotICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIG51bGxw
dHI7CiAgICAgfQogCiAgICAgaWYgKEZBSUxFRCh3ZWJWaWV3LT5zZXRIb3N0V2luZG93KGhvc3RX
aW5kb3cpKSkKLSAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiBudWxscHRyOwogCiAg
ICAgUkVDVCBjbGllbnRSZWN0OwogICAgIGNsaWVudFJlY3QuYm90dG9tID0gY2xpZW50UmVjdC5s
ZWZ0ID0gY2xpZW50UmVjdC50b3AgPSBjbGllbnRSZWN0LnJpZ2h0ID0gMDsKICAgICBfYnN0cl90
IGdyb3VwTmFtZShMIm9yZy53ZWJraXQuRHVtcFJlbmRlclRyZWUiKTsKICAgICBpZiAoRkFJTEVE
KHdlYlZpZXctPmluaXRXaXRoRnJhbWUoY2xpZW50UmVjdCwgMCwgZ3JvdXBOYW1lKSkpCi0gICAg
ICAgIHJldHVybiAwOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIENPTVB0cjxJV2Vi
Vmlld1ByaXZhdGU+IHZpZXdQcml2YXRlOwogICAgIGlmIChGQUlMRUQod2ViVmlldy0+UXVlcnlJ
bnRlcmZhY2UoJnZpZXdQcml2YXRlKSkpCi0gICAgICAgIHJldHVybiAwOworICAgICAgICByZXR1
cm4gbnVsbHB0cjsKIAogICAgIHZpZXdQcml2YXRlLT5zZXRTaG91bGRBcHBseU1hY0ZvbnRBc2Nl
bnRIYWNrKFRSVUUpOwogICAgIHZpZXdQcml2YXRlLT5zZXRBbHdheXNVc2VzQ29tcGxleFRleHRD
b2RlUGF0aChmb3JjZUNvbXBsZXhUZXh0KTsKQEAgLTExNjYsMzggKzExNzcsMzggQEAgSVdlYlZp
ZXcqIGNyZWF0ZVdlYlZpZXdBbmRPZmZzY3JlZW5XaW5kbwogICAgIF90Y3NjcHkoc3RhdGljX2Nh
c3Q8VENIQVIqPihwbHVnaW5QYXRoKSwgZXhlUGF0aCgpLmNfc3RyKCkpOwogICAgIF90Y3NjYXQo
c3RhdGljX2Nhc3Q8VENIQVIqPihwbHVnaW5QYXRoKSwgVGVzdFBsdWdpbkRpcik7CiAgICAgaWYg
KEZBSUxFRCh2aWV3UHJpdmF0ZS0+YWRkQWRkaXRpb25hbFBsdWdpbkRpcmVjdG9yeShwbHVnaW5Q
YXRoKSkpCi0gICAgICAgIHJldHVybiAwOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAg
IEhXTkQgdmlld1dpbmRvdzsKICAgICBpZiAoRkFJTEVEKHZpZXdQcml2YXRlLT52aWV3V2luZG93
KCZ2aWV3V2luZG93KSkpCi0gICAgICAgIHJldHVybiAwOworICAgICAgICByZXR1cm4gbnVsbHB0
cjsKICAgICBpZiAod2ViVmlld1dpbmRvdykKICAgICAgICAgKndlYlZpZXdXaW5kb3cgPSB2aWV3
V2luZG93OwogCi0gICAgU2V0V2luZG93UG9zKHZpZXdXaW5kb3csIDAsIDAsIDAsIG1heFZpZXdX
aWR0aCwgbWF4Vmlld0hlaWdodCwgMCk7Ci0gICAgU2hvd1dpbmRvdyhob3N0V2luZG93LCBTV19T
SE9XKTsKKyAgICA6OlNldFdpbmRvd1Bvcyh2aWV3V2luZG93LCAwLCAwLCAwLCBtYXhWaWV3V2lk
dGgsIG1heFZpZXdIZWlnaHQsIDApOworICAgIDo6U2hvd1dpbmRvdyhob3N0V2luZG93LCBTV19T
SE9XKTsKIAogICAgIGlmIChGQUlMRUQod2ViVmlldy0+c2V0RnJhbWVMb2FkRGVsZWdhdGUoc2hh
cmVkRnJhbWVMb2FkRGVsZWdhdGUuZ2V0KCkpKSkKLSAgICAgICAgcmV0dXJuIDA7CisgICAgICAg
IHJldHVybiBudWxscHRyOwogCiAgICAgaWYgKEZBSUxFRCh2aWV3UHJpdmF0ZS0+c2V0RnJhbWVM
b2FkRGVsZWdhdGVQcml2YXRlKHNoYXJlZEZyYW1lTG9hZERlbGVnYXRlLmdldCgpKSkpCi0gICAg
ICAgIHJldHVybiAwOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIGlmIChGQUlMRUQo
d2ViVmlldy0+c2V0VUlEZWxlZ2F0ZShzaGFyZWRVSURlbGVnYXRlLmdldCgpKSkpCi0gICAgICAg
IHJldHVybiAwOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIENPTVB0cjxJV2ViVmll
d0VkaXRpbmc+IHZpZXdFZGl0aW5nOwogICAgIGlmIChGQUlMRUQod2ViVmlldy0+UXVlcnlJbnRl
cmZhY2UoJnZpZXdFZGl0aW5nKSkpCi0gICAgICAgIHJldHVybiAwOworICAgICAgICByZXR1cm4g
bnVsbHB0cjsKIAogICAgIGlmIChGQUlMRUQodmlld0VkaXRpbmctPnNldEVkaXRpbmdEZWxlZ2F0
ZShzaGFyZWRFZGl0aW5nRGVsZWdhdGUuZ2V0KCkpKSkKLSAgICAgICAgcmV0dXJuIDA7CisgICAg
ICAgIHJldHVybiBudWxscHRyOwogCiAgICAgUmVzb3VyY2VMb2FkRGVsZWdhdGUqIHJlc291cmNl
TG9hZERlbGVnYXRlID0gbmV3IFJlc291cmNlTG9hZERlbGVnYXRlKCk7CiAgICAgSFJFU1VMVCBy
ZXN1bHQgPSB3ZWJWaWV3LT5zZXRSZXNvdXJjZUxvYWREZWxlZ2F0ZShyZXNvdXJjZUxvYWREZWxl
Z2F0ZSk7CiAgICAgcmVzb3VyY2VMb2FkRGVsZWdhdGUtPlJlbGVhc2UoKTsgLy8gVGhlIGRlbGVn
YXRlIGlzIG93bmVkIGJ5IHRoZSBXZWJWaWV3LCBzbyByZWxlYXNlIG91ciByZWZlcmVuY2UgdG8g
aXQuCiAgICAgaWYgKEZBSUxFRChyZXN1bHQpKQotICAgICAgICByZXR1cm4gMDsKKyAgICAgICAg
cmV0dXJuIG51bGxwdHI7CiAKICAgICBvcGVuV2luZG93cygpLmFwcGVuZChob3N0V2luZG93KTsK
ICAgICB3aW5kb3dUb1dlYlZpZXdNYXAoKS5zZXQoaG9zdFdpbmRvdywgd2ViVmlldyk7CkBAIC0x
MjEzLDcgKzEyMjQsNyBAQCBSZXRhaW5QdHI8Q0ZVUkxDYWNoZVJlZj4gc2hhcmVkQ0ZVUkxDYWNo
CiAgICAgSE1PRFVMRSBtb2R1bGUgPSBHZXRNb2R1bGVIYW5kbGUoVEVYVCgiQ0ZOZXR3b3JrX2Rl
YnVnLmRsbCIpKTsKICNlbmRpZgogICAgIGlmICghbW9kdWxlKQotICAgICAgICByZXR1cm4gMDsK
KyAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICB0eXBlZGVmIENGVVJMQ2FjaGVSZWYgKCpD
RlVSTENhY2hlQ29weVNoYXJlZFVSTENhY2hlUHJvY1B0cikodm9pZCk7CiAgICAgaWYgKENGVVJM
Q2FjaGVDb3B5U2hhcmVkVVJMQ2FjaGVQcm9jUHRyIGNvcHlDYWNoZSA9IHJlaW50ZXJwcmV0X2Nh
c3Q8Q0ZVUkxDYWNoZUNvcHlTaGFyZWRVUkxDYWNoZVByb2NQdHI+KEdldFByb2NBZGRyZXNzKG1v
ZHVsZSwgIkNGVVJMQ2FjaGVDb3B5U2hhcmVkVVJMQ2FjaGUiKSkpCkBAIC0xMjIzLDcgKzEyMzQs
NyBAQCBSZXRhaW5QdHI8Q0ZVUkxDYWNoZVJlZj4gc2hhcmVkQ0ZVUkxDYWNoCiAgICAgaWYgKENG
VVJMQ2FjaGVTaGFyZWRVUkxDYWNoZVByb2NQdHIgc2hhcmVkQ2FjaGUgPSByZWludGVycHJldF9j
YXN0PENGVVJMQ2FjaGVTaGFyZWRVUkxDYWNoZVByb2NQdHI+KEdldFByb2NBZGRyZXNzKG1vZHVs
ZSwgIkNGVVJMQ2FjaGVTaGFyZWRVUkxDYWNoZSIpKSkKICAgICAgICAgcmV0dXJuIHNoYXJlZENh
Y2hlKCk7CiAKLSAgICByZXR1cm4gMDsKKyAgICByZXR1cm4gbnVsbHB0cjsKIH0KICNlbmRpZgog
CkBAIC0xMjM0LDU4ICsxMjQ1LDkwIEBAIHN0YXRpYyBMT05HIFdJTkFQSSBleGNlcHRpb25GaWx0
ZXIoRVhDRVAKICAgICByZXR1cm4gRVhDRVBUSU9OX0NPTlRJTlVFX1NFQVJDSDsKIH0KIAotaW50
IG1haW4oaW50IGFyZ2MsIGNvbnN0IGNoYXIqIGFyZ3ZbXSkKK3N0YXRpYyBWZWN0b3I8Y29uc3Qg
Y2hhcio+IGluaXRpYWxpemVHbG9iYWxzRnJvbUNvbW1hbmRMaW5lT3B0aW9ucyhpbnQgYXJnYywg
Y29uc3QgY2hhciogYXJndltdKQogewotI2lmZGVmIF9DUlREQkdfTUFQX0FMTE9DCi0gICAgX0Ny
dFNldFJlcG9ydEZpbGUoX0NSVF9XQVJOLCBfQ1JUREJHX0ZJTEVfU1RERVJSKTsKLSAgICBfQ3J0
U2V0UmVwb3J0TW9kZShfQ1JUX1dBUk4sIF9DUlREQkdfTU9ERV9GSUxFKTsKLSNlbmRpZgotCi0g
ICAgLy8gQ3lnd2luIGNhbGxzIDo6U2V0RXJyb3JNb2RlKFNFTV9GQUlMQ1JJVElDQUxFUlJPUlMp
LCB3aGljaCB3ZSB3aWxsIGluaGVyaXQuIFRoaXMgaXMgYmFkIGZvcgotICAgIC8vIHRlc3Rpbmcv
ZGVidWdnaW5nLCBhcyBpdCBjYXVzZXMgdGhlIHBvc3QtbW9ydGVtIGRlYnVnZ2VyIG5vdCB0byBi
ZSBpbnZva2VkLiBXZSByZXNldCB0aGUKLSAgICAvLyBlcnJvciBtb2RlIGhlcmUgdG8gd29yayBh
cm91bmQgQ3lnd2luJ3MgYmVoYXZpb3IuIFNlZSA8aHR0cDovL3dlYmtpdC5vcmcvYi81NTIyMj4u
Ci0gICAgOjpTZXRFcnJvck1vZGUoMCk7Ci0KLSAgICA6OlNldFVuaGFuZGxlZEV4Y2VwdGlvbkZp
bHRlcihleGNlcHRpb25GaWx0ZXIpOwotCi0gICAgbGVha0NoZWNraW5nID0gZmFsc2U7CisgICAg
VmVjdG9yPGNvbnN0IGNoYXIqPiB0ZXN0czsKIAotICAgIF9zZXRtb2RlKDEsIF9PX0JJTkFSWSk7
Ci0gICAgX3NldG1vZGUoMiwgX09fQklOQVJZKTsKKyAgICBmb3IgKGludCBpID0gMTsgaSA8IGFy
Z2M7ICsraSkgeworICAgICAgICBpZiAoIXN0cmljbXAoYXJndltpXSwgIi0tbm90cmVlIikpIHsK
KyAgICAgICAgICAgIGR1bXBUcmVlID0gZmFsc2U7CisgICAgICAgICAgICBjb250aW51ZTsKKyAg
ICAgICAgfQogCi0gICAgaW5pdGlhbGl6ZSgpOworICAgICAgICBpZiAoIXN0cmljbXAoYXJndltp
XSwgIi0tcGl4ZWwtdGVzdHMiKSkgeworICAgICAgICAgICAgZHVtcFBpeGVsc0ZvckFsbFRlc3Rz
ID0gdHJ1ZTsKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9CiAKLSAgICBWZWN0b3I8
Y29uc3QgY2hhcio+IHRlc3RzOworICAgICAgICBpZiAoIXN0cmljbXAoYXJndltpXSwgIi0tdHJl
ZSIpKSB7CisgICAgICAgICAgICBkdW1wVHJlZSA9IHRydWU7CisgICAgICAgICAgICBjb250aW51
ZTsKKyAgICAgICAgfQogCi0gICAgZm9yIChpbnQgaSA9IDE7IGkgPCBhcmdjOyArK2kpIHsKICAg
ICAgICAgaWYgKCFzdHJpY21wKGFyZ3ZbaV0sICItLXRocmVhZGVkIikpIHsKICAgICAgICAgICAg
IHRocmVhZGVkID0gdHJ1ZTsKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9CiAKLSAg
ICAgICAgaWYgKCFzdHJpY21wKGFyZ3ZbaV0sICItLWR1bXAtYWxsLXBpeGVscyIpKSB7Ci0gICAg
ICAgICAgICBkdW1wQWxsUGl4ZWxzID0gdHJ1ZTsKKyAgICAgICAgaWYgKCFzdHJpY21wKGFyZ3Zb
aV0sICItLWNvbXBsZXgtdGV4dCIpKSB7CisgICAgICAgICAgICBmb3JjZUNvbXBsZXhUZXh0ID0g
dHJ1ZTsKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9CiAKLSAgICAgICAgaWYgKCFz
dHJpY21wKGFyZ3ZbaV0sICItLWNvbXBsZXgtdGV4dCIpKSB7Ci0gICAgICAgICAgICBmb3JjZUNv
bXBsZXhUZXh0ID0gdHJ1ZTsKKyAgICAgICAgaWYgKCFzdHJpY21wKGFyZ3ZbaV0sICItLWFjY2Vs
ZXJhdGVkLWRyYXdpbmciKSkgeworICAgICAgICAgICAgdXNlQWNjZWxlcmF0ZWREcmF3aW5nID0g
dHJ1ZTsKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9CiAKLSAgICAgICAgaWYgKCFz
dHJpY21wKGFyZ3ZbaV0sICItLXByaW50LXN1cHBvcnRlZC1mZWF0dXJlcyIpKSB7Ci0gICAgICAg
ICAgICBwcmludFN1cHBvcnRlZEZlYXR1cmVzID0gdHJ1ZTsKKyAgICAgICAgaWYgKCFzdHJpY21w
KGFyZ3ZbaV0sICItLWdjLWJldHdlZW4tdGVzdHMiKSkgeworICAgICAgICAgICAgZ2NCZXR3ZWVu
VGVzdHMgPSB0cnVlOwogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KIAotICAgICAg
ICBpZiAoIXN0cmljbXAoYXJndltpXSwgIi0tcGl4ZWwtdGVzdHMiKSkgewotICAgICAgICAgICAg
ZHVtcFBpeGVsc0ZvckFsbFRlc3RzID0gdHJ1ZTsKKyAgICAgICAgaWYgKCFzdHJpY21wKGFyZ3Zb
aV0sICItLW5vLXRpbWVvdXQiKSkgeworICAgICAgICAgICAgdXNlVGltZW91dFdhdGNoZG9nID0g
ZmFsc2U7CisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgfQorCisgICAgICAgIGlmICgh
c3RyaWNtcChhcmd2W2ldLCAiLS1kdW1wLWFsbC1waXhlbHMiKSkgeworICAgICAgICAgICAgZHVt
cEFsbFBpeGVscyA9IHRydWU7CisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgfQorCisg
ICAgICAgIGlmICghc3RyaWNtcChhcmd2W2ldLCAiLS1wcmludC1zdXBwb3J0ZWQtZmVhdHVyZXMi
KSkgeworICAgICAgICAgICAgcHJpbnRTdXBwb3J0ZWRGZWF0dXJlcyA9IHRydWU7CiAgICAgICAg
ICAgICBjb250aW51ZTsKICAgICAgICAgfQogCiAgICAgICAgIHRlc3RzLmFwcGVuZChhcmd2W2ld
KTsKICAgICB9CiAKKyAgICByZXR1cm4gdGVzdHM7Cit9CisKK2ludCBtYWluKGludCBhcmdjLCBj
b25zdCBjaGFyKiBhcmd2W10pCit7CisjaWZkZWYgX0NSVERCR19NQVBfQUxMT0MKKyAgICBfQ3J0
U2V0UmVwb3J0RmlsZShfQ1JUX1dBUk4sIF9DUlREQkdfRklMRV9TVERFUlIpOworICAgIF9DcnRT
ZXRSZXBvcnRNb2RlKF9DUlRfV0FSTiwgX0NSVERCR19NT0RFX0ZJTEUpOworI2VuZGlmCisKKyAg
ICAvLyBDeWd3aW4gY2FsbHMgOjpTZXRFcnJvck1vZGUoU0VNX0ZBSUxDUklUSUNBTEVSUk9SUyks
IHdoaWNoIHdlIHdpbGwgaW5oZXJpdC4gVGhpcyBpcyBiYWQgZm9yCisgICAgLy8gdGVzdGluZy9k
ZWJ1Z2dpbmcsIGFzIGl0IGNhdXNlcyB0aGUgcG9zdC1tb3J0ZW0gZGVidWdnZXIgbm90IHRvIGJl
IGludm9rZWQuIFdlIHJlc2V0IHRoZQorICAgIC8vIGVycm9yIG1vZGUgaGVyZSB0byB3b3JrIGFy
b3VuZCBDeWd3aW4ncyBiZWhhdmlvci4gU2VlIDxodHRwOi8vd2Via2l0Lm9yZy9iLzU1MjIyPi4K
KyAgICA6OlNldEVycm9yTW9kZSgwKTsKKworICAgIDo6U2V0VW5oYW5kbGVkRXhjZXB0aW9uRmls
dGVyKGV4Y2VwdGlvbkZpbHRlcik7CisKKyAgICBsZWFrQ2hlY2tpbmcgPSBmYWxzZTsKKworICAg
IF9zZXRtb2RlKDEsIF9PX0JJTkFSWSk7CisgICAgX3NldG1vZGUoMiwgX09fQklOQVJZKTsKKwor
ICAgIGluaXRpYWxpemUoKTsKKworICAgIFZlY3Rvcjxjb25zdCBjaGFyKj4gdGVzdHMgPSBpbml0
aWFsaXplR2xvYmFsc0Zyb21Db21tYW5kTGluZU9wdGlvbnMoYXJnYywgYXJndik7CisKICAgICBw
b2xpY3lEZWxlZ2F0ZSA9IG5ldyBQb2xpY3lEZWxlZ2F0ZSgpOwogICAgIHNoYXJlZEZyYW1lTG9h
ZERlbGVnYXRlLmFkb3B0UmVmKG5ldyBGcmFtZUxvYWREZWxlZ2F0ZSk7CiAgICAgc2hhcmVkVUlE
ZWxlZ2F0ZS5hZG9wdFJlZihuZXcgVUlEZWxlZ2F0ZSk7CkluZGV4OiBUb29scy9EdW1wUmVuZGVy
VHJlZS93aW4vVGVzdFJ1bm5lcldpbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvRHVtcFJlbmRl
clRyZWUvd2luL1Rlc3RSdW5uZXJXaW4uY3BwCShyZXZpc2lvbiAxNzc1MTUpCisrKyBUb29scy9E
dW1wUmVuZGVyVHJlZS93aW4vVGVzdFJ1bm5lcldpbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTgy
LDYgKzgyLDcgQEAgVGVzdFJ1bm5lcjo6flRlc3RSdW5uZXIoKQogdm9pZCBUZXN0UnVubmVyOjph
ZGREaXNhbGxvd2VkVVJMKEpTU3RyaW5nUmVmIHVybCkKIHsKICAgICAvLyBGSVhNRTogSW1wbGVt
ZW50IQorICAgIHByaW50ZigiRVJST1I6IFRlc3RSdW5uZXI6OmFkZERpc2FsbG93ZWRVUkwoSlNT
dHJpbmdSZWYpIG5vdCBpbXBsZW1lbnRlZFxuIik7CiB9CiAKIGJvb2wgVGVzdFJ1bm5lcjo6Y2Fs
bFNob3VsZENsb3NlT25XZWJWaWV3KCkKQEAgLTEwOCwzNiArMTA5LDY2IEBAIHZvaWQgVGVzdFJ1
bm5lcjo6Y2xlYXJBbGxBcHBsaWNhdGlvbkNhY2gKICAgICBhcHBsaWNhdGlvbkNhY2hlLT5kZWxl
dGVBbGxBcHBsaWNhdGlvbkNhY2hlcygpOwogfQogCi1sb25nIGxvbmcgVGVzdFJ1bm5lcjo6YXBw
bGljYXRpb25DYWNoZURpc2tVc2FnZUZvck9yaWdpbihKU1N0cmluZ1JlZiBuYW1lKQorbG9uZyBs
b25nIFRlc3RSdW5uZXI6OmFwcGxpY2F0aW9uQ2FjaGVEaXNrVXNhZ2VGb3JPcmlnaW4oSlNTdHJp
bmdSZWYgdXJsKQogewotICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgdG8gZ2V0IGRpc2sgdXNhZ2Ug
YnkgYWxsIGFwcGxpY2F0aW9uIGNhY2hlcyBmb3IgYW4gb3JpZ2luLgotICAgIHJldHVybiAwOwor
ICAgIENPTVB0cjxJV2ViU2VjdXJpdHlPcmlnaW4+IG9yaWdpbjsKKyAgICBpZiAoRkFJTEVEKFdl
YktpdENyZWF0ZUluc3RhbmNlKENMU0lEX1dlYlNlY3VyaXR5T3JpZ2luLCAwLCBJSURfSVdlYlNl
Y3VyaXR5T3JpZ2luLCByZWludGVycHJldF9jYXN0PHZvaWQqKj4oJm9yaWdpbikpKSkKKyAgICAg
ICAgcmV0dXJuIDA7CisKKyAgICBDT01QdHI8SVdlYkFwcGxpY2F0aW9uQ2FjaGU+IGFwcGxpY2F0
aW9uQ2FjaGU7CisgICAgaWYgKEZBSUxFRChXZWJLaXRDcmVhdGVJbnN0YW5jZShDTFNJRF9XZWJB
cHBsaWNhdGlvbkNhY2hlLCAwLCBJSURfSVdlYkFwcGxpY2F0aW9uQ2FjaGUsIHJlaW50ZXJwcmV0
X2Nhc3Q8dm9pZCoqPigmYXBwbGljYXRpb25DYWNoZSkpKSkKKyAgICAgICAgcmV0dXJuIDA7CisK
KyAgICBfYnN0cl90IHVybEJzdHIoSlNTdHJpbmdDb3B5QlNUUih1cmwpLCBmYWxzZSk7CisgICAg
b3JpZ2luLT5pbml0V2l0aFVSTCh1cmxCc3RyLkdldEJTVFIoKSk7CisKKyAgICBsb25nIGxvbmcg
dXNhZ2UgPSAwOworICAgIGlmIChGQUlMRUQoYXBwbGljYXRpb25DYWNoZS0+ZGlza1VzYWdlRm9y
T3JpZ2luKG9yaWdpbi5nZXQoKSwgJnVzYWdlKSkpCisgICAgICAgIHJldHVybiAwOworCisgICAg
cmV0dXJuIHVzYWdlOwogfQogCiB2b2lkIFRlc3RSdW5uZXI6OnN5bmNMb2NhbFN0b3JhZ2UoKQog
ewotICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQuCisgICAgLy8gRklYTUU6IEltcGxlbWVudC4gUmVx
dWlyZXMgbm9uLWV4aXN0YW50IChvbiBXaW5kb3dzKSBXZWJTdG9yYWdlTWFuYWdlcgorICAgIHBy
aW50ZigiRVJST1I6IFRlc3RSdW5uZXI6OnN5bmNMb2NhbFN0b3JhZ2UoKSBub3QgaW1wbGVtZW50
ZWRcbiIpOwogfQogCiBsb25nIGxvbmcgVGVzdFJ1bm5lcjo6bG9jYWxTdG9yYWdlRGlza1VzYWdl
Rm9yT3JpZ2luKEpTU3RyaW5nUmVmIG9yaWdpbklkZW50aWZpZXIpCiB7Ci0gICAgLy8gRklYTUU6
IEltcGxlbWVudCB0byBzdXBwb3J0IGdldHRpbmcgbG9jYWwgc3RvcmFnZSBkaXNrIHVzYWdlIGZv
ciBhbiBvcmlnaW4uCisgICAgLy8gRklYTUU6IEltcGxlbWVudCB0byBzdXBwb3J0IGdldHRpbmcg
bG9jYWwgc3RvcmFnZSBkaXNrIHVzYWdlIGZvciBhbiBvcmlnaW4uIChEaXR0byBXZWJTdG9yYWdl
TWFuYWdlcikKKyAgICBwcmludGYoIkVSUk9SOiBUZXN0UnVubmVyOjpsb2NhbFN0b3JhZ2VEaXNr
VXNhZ2VGb3JPcmlnaW4oSlNTdHJpbmdSZWYpIG5vdCBpbXBsZW1lbnRlZFxuIik7CiAgICAgcmV0
dXJuIDA7CiB9CiAKIHZvaWQgVGVzdFJ1bm5lcjo6b2JzZXJ2ZVN0b3JhZ2VUcmFja2VyTm90aWZp
Y2F0aW9ucyh1bnNpZ25lZCBudW1iZXIpCiB7Ci0gICAgLy8gRklYTUU6IEltcGxlbWVudC4KKyAg
ICAvLyBGSVhNRTogSW1wbGVtZW50LiBSZXF1aXJlcyBub24tZXhpc3RhbnQgKG9uIFdpbmRvd3Mp
IFdlYlN0b3JhZ2VNYW5hZ2VyCisgICAgcHJpbnRmKCJFUlJPUjogVGVzdFJ1bm5lcjo6b2JzZXJ2
ZVN0b3JhZ2VUcmFja2VyTm90aWZpY2F0aW9ucyh1bnNpZ25lZCkgbm90IGltcGxlbWVudGVkXG4i
KTsKIH0KIAogdm9pZCBUZXN0UnVubmVyOjpjbGVhckFwcGxpY2F0aW9uQ2FjaGVGb3JPcmlnaW4o
SlNTdHJpbmdSZWYgb3JpZ2luKQogewotICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgdG8gc3VwcG9y
dCBkZWxldGluZyBhbGwgYXBwbGljYXRpb24gY2FjaGUgZm9yIGFuIG9yaWdpbi4KKyAgICBDT01Q
dHI8SVdlYlNlY3VyaXR5T3JpZ2luPiBzZWN1cml0eU9yaWdpbjsKKyAgICBpZiAoRkFJTEVEKFdl
YktpdENyZWF0ZUluc3RhbmNlKENMU0lEX1dlYlNlY3VyaXR5T3JpZ2luLCAwLCBJSURfSVdlYlNl
Y3VyaXR5T3JpZ2luLCByZWludGVycHJldF9jYXN0PHZvaWQqKj4oJnNlY3VyaXR5T3JpZ2luKSkp
KQorICAgICAgICByZXR1cm47CisKKyAgICBfYnN0cl90IG9yaWdpbkJzdHIoSlNTdHJpbmdDb3B5
QlNUUihvcmlnaW4pLCBmYWxzZSk7CisgICAgaWYgKEZBSUxFRChzZWN1cml0eU9yaWdpbi0+aW5p
dFdpdGhVUkwob3JpZ2luQnN0ci5HZXRCU1RSKCkpKSkKKyAgICAgICAgcmV0dXJuOworCisgICAg
Q09NUHRyPElXZWJBcHBsaWNhdGlvbkNhY2hlPiBhcHBsaWNhdGlvbkNhY2hlOworICAgIGlmIChG
QUlMRUQoV2ViS2l0Q3JlYXRlSW5zdGFuY2UoQ0xTSURfV2ViQXBwbGljYXRpb25DYWNoZSwgMCwg
SUlEX0lXZWJBcHBsaWNhdGlvbkNhY2hlLCByZWludGVycHJldF9jYXN0PHZvaWQqKj4oJmFwcGxp
Y2F0aW9uQ2FjaGUpKSkpCisgICAgICAgIHJldHVybjsKKworICAgIGFwcGxpY2F0aW9uQ2FjaGUt
PmRlbGV0ZUNhY2hlRm9yT3JpZ2luKHNlY3VyaXR5T3JpZ2luLmdldCgpKTsKIH0KIAogSlNWYWx1
ZVJlZiBUZXN0UnVubmVyOjpvcmlnaW5zV2l0aEFwcGxpY2F0aW9uQ2FjaGUoSlNDb250ZXh0UmVm
IGNvbnRleHQpCiB7CiAgICAgLy8gRklYTUU6IEltcGxlbWVudCB0byBnZXQgb3JpZ2lucyB0aGF0
IGhhdmUgYXBwbGljYXRpb24gY2FjaGVzLgorICAgIHByaW50ZigiRVJST1I6IFRlc3RSdW5uZXI6
Om9yaWdpbnNXaXRoQXBwbGljYXRpb25DYWNoZShKU0NvbnRleHRSZWYpIG5vdCBpbXBsZW1lbnRl
ZFxuIik7CiAgICAgcmV0dXJuIEpTVmFsdWVNYWtlVW5kZWZpbmVkKGNvbnRleHQpOwogfQogCkBA
IC0xNTYsMjggKzE4NywzMyBAQCB2b2lkIFRlc3RSdW5uZXI6OmNsZWFyQWxsRGF0YWJhc2VzKCkK
IAogdm9pZCBUZXN0UnVubmVyOjpkZWxldGVBbGxMb2NhbFN0b3JhZ2UoKQogewotICAgIC8vIEZJ
WE1FOiBJbXBsZW1lbnQuCisgICAgLy8gRklYTUU6IEltcGxlbWVudC4gUmVxdWlyZXMgbm9uLWV4
aXN0YW50IChvbiBXaW5kb3dzKSBXZWJTdG9yYWdlTWFuYWdlcgorICAgIHByaW50ZigiRVJST1I6
IFRlc3RSdW5uZXI6OmRlbGV0ZUFsbExvY2FsU3RvcmFnZSgpIG5vdCBpbXBsZW1lbnRlZFxuIik7
CiB9CiAKIHZvaWQgVGVzdFJ1bm5lcjo6c2V0U3RvcmFnZURhdGFiYXNlSWRsZUludGVydmFsKGRv
dWJsZSkKIHsKLSAgICAvLyBGSVhNRTogSW1wbGVtZW50IHRoaXMuCisgICAgLy8gRklYTUU6IElt
cGxlbWVudC4gUmVxdWlyZXMgbm9uLWV4aXN0YW50IChvbiBXaW5kb3dzKSBXZWJTdG9yYWdlTWFu
YWdlcgorICAgIHByaW50ZigiRVJST1I6IFRlc3RSdW5uZXI6OnNldFN0b3JhZ2VEYXRhYmFzZUlk
bGVJbnRlcnZhbChkb3VibGUpIG5vdCBpbXBsZW1lbnRlZFxuIik7CiB9CiAKIHZvaWQgVGVzdFJ1
bm5lcjo6Y2xvc2VJZGxlTG9jYWxTdG9yYWdlRGF0YWJhc2VzKCkKIHsKLSAgICAvLyBGSVhNRTog
SW1wbGVtZW50IHRoaXMuCisgICAgLy8gRklYTUU6IEltcGxlbWVudC4gUmVxdWlyZXMgbm9uLWV4
aXN0YW50IChvbiBXaW5kb3dzKSBXZWJTdG9yYWdlTWFuYWdlcgorICAgIHByaW50ZigiRVJST1I6
IFRlc3RSdW5uZXI6OmNsb3NlSWRsZUxvY2FsU3RvcmFnZURhdGFiYXNlcyhkb3VibGUpIG5vdCBp
bXBsZW1lbnRlZFxuIik7CiB9CiAKIEpTVmFsdWVSZWYgVGVzdFJ1bm5lcjo6b3JpZ2luc1dpdGhM
b2NhbFN0b3JhZ2UoSlNDb250ZXh0UmVmIGNvbnRleHQpCiB7Ci0gICAgLy8gRklYTUU6IEltcGxl
bWVudC4KKyAgICAvLyBGSVhNRTogSW1wbGVtZW50LiBSZXF1aXJlcyBub24tZXhpc3RhbnQgKG9u
IFdpbmRvd3MpIFdlYlN0b3JhZ2VNYW5hZ2VyCisgICAgcHJpbnRmKCJFUlJPUjogVGVzdFJ1bm5l
cjo6b3JpZ2luc1dpdGhMb2NhbFN0b3JhZ2UoSlNDb250ZXh0UmVmKSBub3QgaW1wbGVtZW50ZWRc
biIpOwogICAgIHJldHVybiBKU1ZhbHVlTWFrZVVuZGVmaW5lZChjb250ZXh0KTsKIH0KIAogdm9p
ZCBUZXN0UnVubmVyOjpkZWxldGVMb2NhbFN0b3JhZ2VGb3JPcmlnaW4oSlNTdHJpbmdSZWYgVVJM
KQogewotICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQuCisgICAgLy8gRklYTUU6IEltcGxlbWVudC4g
UmVxdWlyZXMgbm9uLWV4aXN0YW50IChvbiBXaW5kb3dzKSBXZWJTdG9yYWdlTWFuYWdlcgorICAg
IHByaW50ZigiRVJST1I6IFRlc3RSdW5uZXI6OmRlbGV0ZUxvY2FsU3RvcmFnZUZvck9yaWdpbihK
U1N0cmluZ1JlZikgbm90IGltcGxlbWVudGVkXG4iKTsKIH0KIAogdm9pZCBUZXN0UnVubmVyOjpj
bGVhckJhY2tGb3J3YXJkTGlzdCgpCkBAIC0yMDksMTIgKzI0NSwxNCBAQCB2b2lkIFRlc3RSdW5u
ZXI6OmNsZWFyQmFja0ZvcndhcmRMaXN0KCkKIEpTU3RyaW5nUmVmIFRlc3RSdW5uZXI6OmNvcHlE
ZWNvZGVkSG9zdE5hbWUoSlNTdHJpbmdSZWYgbmFtZSkKIHsKICAgICAvLyBGSVhNRTogSW1wbGVt
ZW50IQorICAgIHByaW50ZigiRVJST1I6IFRlc3RSdW5uZXI6OmNvcHlEZWNvZGVkSG9zdE5hbWUo
SlNTdHJpbmdSZWYpIG5vdCBpbXBsZW1lbnRlZFxuIik7CiAgICAgcmV0dXJuIDA7CiB9CiAKIEpT
U3RyaW5nUmVmIFRlc3RSdW5uZXI6OmNvcHlFbmNvZGVkSG9zdE5hbWUoSlNTdHJpbmdSZWYgbmFt
ZSkKIHsKICAgICAvLyBGSVhNRTogSW1wbGVtZW50IQorICAgIHByaW50ZigiRVJST1I6IFRlc3RS
dW5uZXI6OmNvcHlFbmNvZGVkSG9zdE5hbWUoSlNTdHJpbmdSZWYpIG5vdCBpbXBsZW1lbnRlZFxu
Iik7CiAgICAgcmV0dXJuIDA7CiB9CiAKQEAgLTIzMCw2ICsyNjgsOSBAQCB2b2lkIFRlc3RSdW5u
ZXI6OmtlZXBXZWJIaXN0b3J5KCkKICAgICAgICAgcmV0dXJuOwogCiAgICAgQ09NUHRyPElXZWJI
aXN0b3J5PiBzaGFyZWRIaXN0b3J5OworICAgIGlmIChTVUNDRUVERUQoaGlzdG9yeS0+b3B0aW9u
YWxTaGFyZWRIaXN0b3J5KCZzaGFyZWRIaXN0b3J5KSkgJiYgc2hhcmVkSGlzdG9yeSkKKyAgICAg
ICAgcmV0dXJuOworCiAgICAgaWYgKEZBSUxFRChXZWJLaXRDcmVhdGVJbnN0YW5jZShDTFNJRF9X
ZWJIaXN0b3J5LCAwLCBfX3V1aWRvZihzaGFyZWRIaXN0b3J5KSwgcmVpbnRlcnByZXRfY2FzdDx2
b2lkKio+KCZzaGFyZWRIaXN0b3J5KSkpKQogICAgICAgICByZXR1cm47CiAKQEAgLTIzOSw2ICsy
ODAsNyBAQCB2b2lkIFRlc3RSdW5uZXI6OmtlZXBXZWJIaXN0b3J5KCkKIGludCBUZXN0UnVubmVy
OjpudW1iZXJPZlBlbmRpbmdHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0cygpCiB7CiAgICAg
Ly8gRklYTUU6IEltcGxlbWVudCBmb3IgR2VvbG9jYXRpb24gbGF5b3V0IHRlc3RzLgorICAgIHBy
aW50ZigiRVJST1I6IFRlc3RSdW5uZXI6Om51bWJlck9mUGVuZGluZ0dlb2xvY2F0aW9uUGVybWlz
c2lvblJlcXVlc3RzKCkgbm90IGltcGxlbWVudGVkXG4iKTsKICAgICByZXR1cm4gLTE7CiB9CiAK
QEAgLTM1MSw3ICszOTMsMTEgQEAgdm9pZCBUZXN0UnVubmVyOjpzZXRBbHdheXNBY2NlcHRDb29r
aWVzKAogCiB2b2lkIFRlc3RSdW5uZXI6OnNldEFwcENhY2hlTWF4aW11bVNpemUodW5zaWduZWQg
bG9uZyBsb25nIHNpemUpCiB7Ci0gICAgcHJpbnRmKCJFUlJPUjogVGVzdFJ1bm5lcjo6c2V0QXBw
Q2FjaGVNYXhpbXVtU2l6ZSgpIG5vdCBpbXBsZW1lbnRlZFxuIik7CisgICAgQ09NUHRyPElXZWJB
cHBsaWNhdGlvbkNhY2hlPiBhcHBsaWNhdGlvbkNhY2hlOworICAgIGlmIChGQUlMRUQoV2ViS2l0
Q3JlYXRlSW5zdGFuY2UoQ0xTSURfV2ViQXBwbGljYXRpb25DYWNoZSwgMCwgSUlEX0lXZWJBcHBs
aWNhdGlvbkNhY2hlLCByZWludGVycHJldF9jYXN0PHZvaWQqKj4oJmFwcGxpY2F0aW9uQ2FjaGUp
KSkpCisgICAgICAgIHJldHVybjsKKworICAgIGFwcGxpY2F0aW9uQ2FjaGUtPnNldE1heGltdW1T
aXplKHNpemUpOwogfQogCiB2b2lkIFRlc3RSdW5uZXI6OnNldEF1dGhvckFuZFVzZXJTdHlsZXNF
bmFibGVkKGJvb2wgZmxhZykKQEAgLTM3NywxMSArNDIzLDEzIEBAIHZvaWQgVGVzdFJ1bm5lcjo6
c2V0Q3VzdG9tUG9saWN5RGVsZWdhdGUKICAgICBpZiAoRkFJTEVEKGZyYW1lLT53ZWJWaWV3KCZ3
ZWJWaWV3KSkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGlmIChzZXREZWxlZ2F0ZSkgewotICAg
ICAgICBwb2xpY3lEZWxlZ2F0ZS0+c2V0UGVybWlzc2l2ZShwZXJtaXNzaXZlKTsKLSAgICAgICAg
d2ViVmlldy0+c2V0UG9saWN5RGVsZWdhdGUocG9saWN5RGVsZWdhdGUpOwotICAgIH0gZWxzZQot
ICAgICAgICB3ZWJWaWV3LT5zZXRQb2xpY3lEZWxlZ2F0ZSgwKTsKKyAgICBpZiAoIXNldERlbGVn
YXRlKSB7CisgICAgICAgIHdlYlZpZXctPnNldFBvbGljeURlbGVnYXRlKG51bGxwdHIpOworICAg
ICAgICByZXR1cm47CisgICAgfQorCisgICAgcG9saWN5RGVsZWdhdGUtPnNldFBlcm1pc3NpdmUo
cGVybWlzc2l2ZSk7CisgICAgd2ViVmlldy0+c2V0UG9saWN5RGVsZWdhdGUocG9saWN5RGVsZWdh
dGUpOwogfQogCiB2b2lkIFRlc3RSdW5uZXI6OnNldERhdGFiYXNlUXVvdGEodW5zaWduZWQgbG9u
ZyBsb25nIHF1b3RhKQpAQCAtMzk5LDEyICs0NDcsMjUgQEAgdm9pZCBUZXN0UnVubmVyOjpzZXRE
YXRhYmFzZVF1b3RhKHVuc2lnbgogCiB2b2lkIFRlc3RSdW5uZXI6OmdvQmFjaygpCiB7Ci0gICAg
Ly8gRklYTUU6IGltcGxlbWVudCB0byBlbmFibGUgbG9hZGVyL25hdmlnYXRpb24td2hpbGUtZGVm
ZXJyaW5nLWxvYWRzLmh0bWwKKyAgICBDT01QdHI8SVdlYlZpZXc+IHdlYlZpZXc7CisgICAgaWYg
KEZBSUxFRChmcmFtZS0+d2ViVmlldygmd2ViVmlldykpKQorICAgICAgICByZXR1cm47CisKKyAg
ICBCT09MIGlnbm9yZSA9IFRSVUU7CisgICAgd2ViVmlldy0+Z29CYWNrKCZpZ25vcmUpOwogfQog
Ci12b2lkIFRlc3RSdW5uZXI6OnNldERlZmVyc0xvYWRpbmcoYm9vbCkKK3ZvaWQgVGVzdFJ1bm5l
cjo6c2V0RGVmZXJzTG9hZGluZyhib29sIGRlZmVycykKIHsKLSAgICAvLyBGSVhNRTogaW1wbGVt
ZW50IHRvIGVuYWJsZSBsb2FkZXIvbmF2aWdhdGlvbi13aGlsZS1kZWZlcnJpbmctbG9hZHMuaHRt
bAorICAgIENPTVB0cjxJV2ViVmlldz4gd2ViVmlldzsKKyAgICBpZiAoRkFJTEVEKGZyYW1lLT53
ZWJWaWV3KCZ3ZWJWaWV3KSkpCisgICAgICAgIHJldHVybjsKKworICAgIENPTVB0cjxJV2ViVmll
d1ByaXZhdGU+IHZpZXdQcml2YXRlOworICAgIGlmIChGQUlMRUQod2ViVmlldy0+UXVlcnlJbnRl
cmZhY2UoJnZpZXdQcml2YXRlKSkpCisgICAgICAgIHJldHVybjsKKworICAgIHZpZXdQcml2YXRl
LT5zZXREZWZlcnNDYWxsYmFja3MoZGVmZXJzKTsKIH0KIAogdm9pZCBUZXN0UnVubmVyOjpzZXRE
b21haW5SZWxheGF0aW9uRm9yYmlkZGVuRm9yVVJMU2NoZW1lKGJvb2wgZm9yYmlkZGVuLCBKU1N0
cmluZ1JlZiBzY2hlbWUpCkBAIC00MTMsMjcgKzQ3NCwyOSBAQCB2b2lkIFRlc3RSdW5uZXI6OnNl
dERvbWFpblJlbGF4YXRpb25Gb3JiCiAgICAgaWYgKEZBSUxFRChXZWJLaXRDcmVhdGVJbnN0YW5j
ZShfX3V1aWRvZihXZWJWaWV3KSwgMCwgX191dWlkb2Yod2ViVmlldyksIHJlaW50ZXJwcmV0X2Nh
c3Q8dm9pZCoqPigmd2ViVmlldykpKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgQlNUUiBzY2hl
bWVCU1RSID0gSlNTdHJpbmdDb3B5QlNUUihzY2hlbWUpOwotICAgIHdlYlZpZXctPnNldERvbWFp
blJlbGF4YXRpb25Gb3JiaWRkZW5Gb3JVUkxTY2hlbWUoZm9yYmlkZGVuLCBzY2hlbWVCU1RSKTsK
LSAgICBTeXNGcmVlU3RyaW5nKHNjaGVtZUJTVFIpOworICAgIF9ic3RyX3Qgc2NoZW1lQlNUUihK
U1N0cmluZ0NvcHlCU1RSKHNjaGVtZSksIGZhbHNlKTsKKyAgICB3ZWJWaWV3LT5zZXREb21haW5S
ZWxheGF0aW9uRm9yYmlkZGVuRm9yVVJMU2NoZW1lKGZvcmJpZGRlbiwgc2NoZW1lQlNUUi5HZXRC
U1RSKCkpOwogfQogCiB2b2lkIFRlc3RSdW5uZXI6OnNldE1vY2tEZXZpY2VPcmllbnRhdGlvbihi
b29sIGNhblByb3ZpZGVBbHBoYSwgZG91YmxlIGFscGhhLCBib29sIGNhblByb3ZpZGVCZXRhLCBk
b3VibGUgYmV0YSwgYm9vbCBjYW5Qcm92aWRlR2FtbWEsIGRvdWJsZSBnYW1tYSkKIHsKICAgICAv
LyBGSVhNRTogSW1wbGVtZW50IGZvciBEZXZpY2VPcmllbnRhdGlvbiBsYXlvdXQgdGVzdHMuCiAg
ICAgLy8gU2VlIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zMDMzNS4K
KyAgICBwcmludGYoIkVSUk9SOiBUZXN0UnVubmVyOjpzZXRNb2NrRGV2aWNlT3JpZW50YXRpb24o
KSBub3QgaW1wbGVtZW50ZWRcbiIpOwogfQogCiB2b2lkIFRlc3RSdW5uZXI6OnNldE1vY2tHZW9s
b2NhdGlvblBvc2l0aW9uKGRvdWJsZSBsYXRpdHVkZSwgZG91YmxlIGxvbmdpdHVkZSwgZG91Ymxl
IGFjY3VyYWN5LCBib29sIHByb3ZpZGVzQWx0aXR1ZGUsIGRvdWJsZSBhbHRpdHVkZSwgYm9vbCBw
cm92aWRlc0FsdGl0dWRlQWNjdXJhY3ksIGRvdWJsZSBhbHRpdHVkZUFjY3VyYWN5LCBib29sIHBy
b3ZpZGVzSGVhZGluZywgZG91YmxlIGhlYWRpbmcsIGJvb2wgcHJvdmlkZXNTcGVlZCwgZG91Ymxl
IHNwZWVkKQogewogICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgZm9yIEdlb2xvY2F0aW9uIGxheW91
dCB0ZXN0cy4KICAgICAvLyBTZWUgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTI4MjY0LgorICAgIHByaW50ZigiRVJST1I6IFRlc3RSdW5uZXI6OnNldE1vY2tHZW9sb2Nh
dGlvblBvc2l0aW9uKCkgbm90IGltcGxlbWVudGVkXG4iKTsKIH0KIAogdm9pZCBUZXN0UnVubmVy
OjpzZXRNb2NrR2VvbG9jYXRpb25Qb3NpdGlvblVuYXZhaWxhYmxlRXJyb3IoSlNTdHJpbmdSZWYg
bWVzc2FnZSkKIHsKICAgICAvLyBGSVhNRTogSW1wbGVtZW50IGZvciBHZW9sb2NhdGlvbiBsYXlv
dXQgdGVzdHMuCiAgICAgLy8gU2VlIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yODI2NC4KKyAgICBwcmludGYoIkVSUk9SOiBUZXN0UnVubmVyOjpzZXRNb2NrR2VvbG9j
YXRpb25Qb3NpdGlvblVuYXZhaWxhYmxlRXJyb3IoKSBub3QgaW1wbGVtZW50ZWRcbiIpOwogfQog
CiB2b2lkIFRlc3RSdW5uZXI6OnNldEdlb2xvY2F0aW9uUGVybWlzc2lvbihib29sIGFsbG93KQpA
QCAtNDQ0LDYgKzUwNyw3IEBAIHZvaWQgVGVzdFJ1bm5lcjo6c2V0R2VvbG9jYXRpb25QZXJtaXNz
aW8KIAogdm9pZCBUZXN0UnVubmVyOjpzZXRJY29uRGF0YWJhc2VFbmFibGVkKGJvb2wgaWNvbkRh
dGFiYXNlRW5hYmxlZCkKIHsKKyNpZiBFTkFCTEUoSUNPTkRBVEFCQVNFKQogICAgIC8vIFNlZSBh
bHNvIDxyZGFyOi8vcHJvYmxlbS82NDgwMTA4PgogICAgIENPTVB0cjxJV2ViSWNvbkRhdGFiYXNl
PiBpY29uRGF0YWJhc2U7CiAgICAgQ09NUHRyPElXZWJJY29uRGF0YWJhc2U+IHRtcEljb25EYXRh
YmFzZTsKQEAgLTQ1MywxMSArNTE3LDEyIEBAIHZvaWQgVGVzdFJ1bm5lcjo6c2V0SWNvbkRhdGFi
YXNlRW5hYmxlZCgKICAgICAgICAgcmV0dXJuOwogCiAgICAgaWNvbkRhdGFiYXNlLT5zZXRFbmFi
bGVkKGljb25EYXRhYmFzZUVuYWJsZWQpOworI2VuZGlmCiB9CiAKLXZvaWQgVGVzdFJ1bm5lcjo6
c2V0TWFpbkZyYW1lSXNGaXJzdFJlc3BvbmRlcihib29sIGZsYWcpCit2b2lkIFRlc3RSdW5uZXI6
OnNldE1haW5GcmFtZUlzRmlyc3RSZXNwb25kZXIoYm9vbCkKIHsKLSAgICAvLyBGSVhNRTogSW1w
bGVtZW50IQorICAgIC8vIE5vdGhpbmcgdG8gZG8gaGVyZSBvbiBXaW5kb3dzCiB9CiAKIHZvaWQg
VGVzdFJ1bm5lcjo6c2V0UHJpdmF0ZUJyb3dzaW5nRW5hYmxlZChib29sIHByaXZhdGVCcm93c2lu
Z0VuYWJsZWQpCkBAIC00OTMsNiArNTU4LDcgQEAgdm9pZCBUZXN0UnVubmVyOjpzZXRYU1NBdWRp
dG9yRW5hYmxlZChibwogdm9pZCBUZXN0UnVubmVyOjpzZXRTcGF0aWFsTmF2aWdhdGlvbkVuYWJs
ZWQoYm9vbCBlbmFibGVkKQogewogICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgZm9yIFNwYXRpYWxO
YXZpZ2F0aW9uIGxheW91dCB0ZXN0cy4KKyAgICBwcmludGYoIkVSUk9SOiBUZXN0UnVubmVyOjpz
ZXRTcGF0aWFsTmF2aWdhdGlvbkVuYWJsZWQoYm9vbCkgbm90IGltcGxlbWVudGVkXG4iKTsKIH0K
IAogdm9pZCBUZXN0UnVubmVyOjpzZXRBbGxvd1VuaXZlcnNhbEFjY2Vzc0Zyb21GaWxlVVJMcyhi
b29sIGVuYWJsZWQpCkBAIC01NDQsNyArNjEwLDE1IEBAIHZvaWQgVGVzdFJ1bm5lcjo6c2V0UG9w
dXBCbG9ja2luZ0VuYWJsZWQKIAogdm9pZCBUZXN0UnVubmVyOjpzZXRQbHVnaW5zRW5hYmxlZChi
b29sIGZsYWcpCiB7Ci0gICAgLy8gRklYTUU6IEltcGxlbWVudAorICAgIENPTVB0cjxJV2ViVmll
dz4gd2ViVmlldzsKKyAgICBpZiAoRkFJTEVEKGZyYW1lLT53ZWJWaWV3KCZ3ZWJWaWV3KSkpCisg
ICAgICAgIHJldHVybjsKKworICAgIENPTVB0cjxJV2ViUHJlZmVyZW5jZXM+IHByZWZlcmVuY2Vz
OworICAgIGlmIChGQUlMRUQod2ViVmlldy0+cHJlZmVyZW5jZXMoJnByZWZlcmVuY2VzKSkpCisg
ICAgICAgIHJldHVybjsKKworICAgIHByZWZlcmVuY2VzLT5zZXRQbHVnSW5zRW5hYmxlZChmbGFn
KTsKIH0KIAogdm9pZCBUZXN0UnVubmVyOjpzZXRKYXZhU2NyaXB0Q2FuQWNjZXNzQ2xpcGJvYXJk
KGJvb2wgZW5hYmxlZCkKQEAgLTU2Nyw2ICs2NDEsNyBAQCB2b2lkIFRlc3RSdW5uZXI6OnNldEph
dmFTY3JpcHRDYW5BY2Nlc3NDCiB2b2lkIFRlc3RSdW5uZXI6OnNldEF1dG9tYXRpY0xpbmtEZXRl
Y3Rpb25FbmFibGVkKGJvb2wpCiB7CiAgICAgLy8gRklYTUU6IEltcGxlbWVudCB0aGlzLgorICAg
IHByaW50ZigiRVJST1I6IFRlc3RSdW5uZXI6OnNldEF1dG9tYXRpY0xpbmtEZXRlY3Rpb25FbmFi
bGVkKGJvb2wpIG5vdCBpbXBsZW1lbnRlZFxuIik7CiB9CiAKIHZvaWQgVGVzdFJ1bm5lcjo6c2V0
VGFiS2V5Q3ljbGVzVGhyb3VnaEVsZW1lbnRzKGJvb2wgc2hvdWxkQ3ljbGUpCkBAIC01ODQsNyAr
NjU5LDcgQEAgdm9pZCBUZXN0UnVubmVyOjpzZXRUYWJLZXlDeWNsZXNUaHJvdWdoRQogCiB2b2lk
IFRlc3RSdW5uZXI6OnNldFVzZURhc2hib2FyZENvbXBhdGliaWxpdHlNb2RlKGJvb2wgZmxhZykK
IHsKLSAgICAvLyBGSVhNRTogSW1wbGVtZW50IQorICAgIC8vIE5vdCBpbXBsZW1lbnRlZCBvbiBX
aW5kb3dzLgogfQogCiB2b2lkIFRlc3RSdW5uZXI6OnNldFVzZXJTdHlsZVNoZWV0RW5hYmxlZChi
b29sIGZsYWcpCkBAIC03ODEsNiArODU2LDcgQEAgdm9pZCBUZXN0UnVubmVyOjpzZXRWaWV3TW9k
ZU1lZGlhRmVhdHVyZQogdm9pZCBUZXN0UnVubmVyOjpkaXNwYXRjaFBlbmRpbmdMb2FkUmVxdWVz
dHMoKQogewogICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgZm9yIHRlc3RpbmcgZml4IGZvciA2NzI3
NDk1CisgICAgcHJpbnRmKCJFUlJPUjogVGVzdFJ1bm5lcjo6ZGlzcGF0Y2hQZW5kaW5nTG9hZFJl
cXVlc3RzKCkgbm90IGltcGxlbWVudGVkXG4iKTsKIH0KIAogdm9pZCBUZXN0UnVubmVyOjpvdmVy
cmlkZVByZWZlcmVuY2UoSlNTdHJpbmdSZWYga2V5LCBKU1N0cmluZ1JlZiB2YWx1ZSkKQEAgLTg4
NCwxMiArOTYwLDIxIEBAIHZvaWQgVGVzdFJ1bm5lcjo6ZXhlY0NvbW1hbmQoSlNTdHJpbmdSZWYK
IGJvb2wgVGVzdFJ1bm5lcjo6ZmluZFN0cmluZyhKU0NvbnRleHRSZWYgLyogY29udGV4dCAqLywg
SlNTdHJpbmdSZWYgLyogdGFyZ2V0ICovLCBKU09iamVjdFJlZiAvKiBvcHRpb25zQXJyYXkgKi8p
CiB7CiAgICAgLy8gRklYTUU6IEltcGxlbWVudAorICAgIHByaW50ZigiRVJST1I6IFRlc3RSdW5u
ZXI6OmZpbmRTdHJpbmcoLi4uKSBub3QgaW1wbGVtZW50ZWRcbiIpOwogICAgIHJldHVybiBmYWxz
ZTsKIH0KIAotdm9pZCBUZXN0UnVubmVyOjpzZXRDYWNoZU1vZGVsKGludCkKK3ZvaWQgVGVzdFJ1
bm5lcjo6c2V0Q2FjaGVNb2RlbChpbnQgY2FjaGVNb2RlbCkKIHsKLSAgICAvLyBGSVhNRTogSW1w
bGVtZW50CisgICAgQ09NUHRyPElXZWJWaWV3PiB3ZWJWaWV3OworICAgIGlmIChGQUlMRUQoZnJh
bWUtPndlYlZpZXcoJndlYlZpZXcpKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgQ09NUHRyPElX
ZWJQcmVmZXJlbmNlcz4gcHJlZmVyZW5jZXM7CisgICAgaWYgKEZBSUxFRCh3ZWJWaWV3LT5wcmVm
ZXJlbmNlcygmcHJlZmVyZW5jZXMpKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgcHJlZmVyZW5j
ZXMtPnNldENhY2hlTW9kZWwoc3RhdGljX2Nhc3Q8V2ViQ2FjaGVNb2RlbD4oY2FjaGVNb2RlbCkp
OwogfQogCiBib29sIFRlc3RSdW5uZXI6OmlzQ29tbWFuZEVuYWJsZWQoSlNTdHJpbmdSZWYgLypu
YW1lKi8pCkBAIC0xMDgzLDcgKzExNjgsNyBAQCB2b2lkIFRlc3RSdW5uZXI6OmV2YWx1YXRlU2Ny
aXB0SW5Jc29sYXRlCiAKIHZvaWQgVGVzdFJ1bm5lcjo6YXBpVGVzdE5ld1dpbmRvd0RhdGFMb2Fk
QmFzZVVSTChKU1N0cmluZ1JlZiB1dGY4RGF0YSwgSlNTdHJpbmdSZWYgYmFzZVVSTCkKIHsKLQor
ICAgIC8vIE5vdGhpbmcgaW1wbGVtZW50ZWQgaGVyZSAoY29tcGFyZSB0byBNYWMpCiB9CiAKIHZv
aWQgVGVzdFJ1bm5lcjo6YXBpVGVzdEdvVG9DdXJyZW50QmFja0ZvcndhcmRJdGVtKCkKQEAgLTEx
MDQsMjEgKzExODksMzMgQEAgdm9pZCBUZXN0UnVubmVyOjphcGlUZXN0R29Ub0N1cnJlbnRCYWNr
RgogICAgIHdlYlZpZXctPmdvVG9CYWNrRm9yd2FyZEl0ZW0oaXRlbS5nZXQoKSwgJnN1Y2Nlc3Mp
OwogfQogCi12b2lkIFRlc3RSdW5uZXI6OnNldFdlYlZpZXdFZGl0YWJsZShib29sKQordm9pZCBU
ZXN0UnVubmVyOjpzZXRXZWJWaWV3RWRpdGFibGUoYm9vbCBlZGl0YWJsZSkKIHsKKyAgICBDT01Q
dHI8SVdlYlZpZXc+IHdlYlZpZXc7CisgICAgaWYgKEZBSUxFRChmcmFtZS0+d2ViVmlldygmd2Vi
VmlldykpKQorICAgICAgICByZXR1cm47CisKKyAgICBDT01QdHI8SVdlYlZpZXdFZGl0aW5nPiB2
aWV3RWRpdGluZzsKKyAgICBpZiAoRkFJTEVEKHdlYlZpZXctPlF1ZXJ5SW50ZXJmYWNlKCZ2aWV3
RWRpdGluZykpKQorICAgICAgICByZXR1cm47CisKKyAgICB2aWV3RWRpdGluZy0+c2V0RWRpdGFi
bGUoZWRpdGFibGUpOwogfQogCiB2b2lkIFRlc3RSdW5uZXI6OmF1dGhlbnRpY2F0ZVNlc3Npb24o
SlNTdHJpbmdSZWYsIEpTU3RyaW5nUmVmLCBKU1N0cmluZ1JlZikKIHsKKyAgICBwcmludGYoIkVS
Uk9SOiBUZXN0UnVubmVyOjphdXRoZW50aWNhdGVTZXNzaW9uKCkgbm90IGltcGxlbWVudGVkXG4i
KTsKIH0KIAogdm9pZCBUZXN0UnVubmVyOjphYm9ydE1vZGFsKCkKIHsKKyAgICAvLyBOb3RoaW5n
IHRvIGRvCiB9CiAKIHZvaWQgVGVzdFJ1bm5lcjo6c2V0U2VyaWFsaXplSFRUUExvYWRzKGJvb2wp
CiB7CiAgICAgLy8gRklYTUU6IEltcGxlbWVudC4KKyAgICBwcmludGYoIkVSUk9SOiBUZXN0UnVu
bmVyOjpzZXRTZXJpYWxpemVIVFRQTG9hZHMoKSBub3QgaW1wbGVtZW50ZWRcbiIpOwogfQogCiB2
b2lkIFRlc3RSdW5uZXI6OnNldFRleHREaXJlY3Rpb24oSlNTdHJpbmdSZWYgZGlyZWN0aW9uKQpA
QCAtMTEzMiwxOCArMTIyOSwyMiBAQCB2b2lkIFRlc3RSdW5uZXI6OnNldFRleHREaXJlY3Rpb24o
SlNTdHJpCiAKIHZvaWQgVGVzdFJ1bm5lcjo6YWRkQ2hyb21lSW5wdXRGaWVsZCgpCiB7CisgICAg
cHJpbnRmKCJFUlJPUjogVGVzdFJ1bm5lcjo6YWRkQ2hyb21lSW5wdXRGaWVsZCgpIG5vdCBpbXBs
ZW1lbnRlZFxuIik7CiB9CiAKIHZvaWQgVGVzdFJ1bm5lcjo6cmVtb3ZlQ2hyb21lSW5wdXRGaWVs
ZCgpCiB7CisgICAgcHJpbnRmKCJFUlJPUjogVGVzdFJ1bm5lcjo6cmVtb3ZlQ2hyb21lSW5wdXRG
aWVsZCgpIG5vdCBpbXBsZW1lbnRlZFxuIik7CiB9CiAKIHZvaWQgVGVzdFJ1bm5lcjo6Zm9jdXNX
ZWJWaWV3KCkKIHsKKyAgICBwcmludGYoIkVSUk9SOiBUZXN0UnVubmVyOjpmb2N1c1dlYlZpZXco
KSBub3QgaW1wbGVtZW50ZWRcbiIpOwogfQogCiB2b2lkIFRlc3RSdW5uZXI6OnNldEJhY2tpbmdT
Y2FsZUZhY3Rvcihkb3VibGUpCiB7CisgICAgLy8gTm90IGFwcGxpY2FibGUKIH0KIAogdm9pZCBU
ZXN0UnVubmVyOjpyZXNldFBhZ2VWaXNpYmlsaXR5KCkKQEAgLTExNTgsMTggKzEyNTksMjIgQEAg
dm9pZCBUZXN0UnVubmVyOjpzZXRQYWdlVmlzaWJpbGl0eShjb25zdAogCiB2b2lkIFRlc3RSdW5u
ZXI6OmdyYW50V2ViTm90aWZpY2F0aW9uUGVybWlzc2lvbihKU1N0cmluZ1JlZiBvcmlnaW4pCiB7
CisgICAgcHJpbnRmKCJFUlJPUjogVGVzdFJ1bm5lcjo6Z3JhbnRXZWJOb3RpZmljYXRpb25QZXJt
aXNzaW9uKEpTU3RyaW5nUmVmKSBub3QgaW1wbGVtZW50ZWRcbiIpOwogfQogCiB2b2lkIFRlc3RS
dW5uZXI6OmRlbnlXZWJOb3RpZmljYXRpb25QZXJtaXNzaW9uKEpTU3RyaW5nUmVmIGpzT3JpZ2lu
KQogeworICAgIHByaW50ZigiRVJST1I6IFRlc3RSdW5uZXI6OmRlbnlXZWJOb3RpZmljYXRpb25Q
ZXJtaXNzaW9uKEpTU3RyaW5nUmVmKSBub3QgaW1wbGVtZW50ZWRcbiIpOwogfQogCiB2b2lkIFRl
c3RSdW5uZXI6OnJlbW92ZUFsbFdlYk5vdGlmaWNhdGlvblBlcm1pc3Npb25zKCkKIHsKKyAgICBw
cmludGYoIkVSUk9SOiBUZXN0UnVubmVyOjpyZW1vdmVBbGxXZWJOb3RpZmljYXRpb25QZXJtaXNz
aW9ucygpIG5vdCBpbXBsZW1lbnRlZFxuIik7CiB9CiAKIHZvaWQgVGVzdFJ1bm5lcjo6c2ltdWxh
dGVXZWJOb3RpZmljYXRpb25DbGljayhKU1ZhbHVlUmVmIGpzTm90aWZpY2F0aW9uKQogeworICAg
IHByaW50ZigiRVJST1I6IFRlc3RSdW5uZXI6OnNpbXVsYXRlV2ViTm90aWZpY2F0aW9uQ2xpY2so
KSBub3QgaW1wbGVtZW50ZWRcbiIpOwogfQogCiB2b2lkIFRlc3RSdW5uZXI6OnNpbXVsYXRlTGVn
YWN5V2ViTm90aWZpY2F0aW9uQ2xpY2soSlNTdHJpbmdSZWYgdGl0bGUpCg==
</data>
<flag name="review"
          id="268427"
          type_id="1"
          status="+"
          setter="thorton"
    />
          </attachment>
      

    </bug>

</bugzilla>