<?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>128211</bug_id>
          
          <creation_ts>2014-02-04 15:06:43 -0800</creation_ts>
          <short_desc>&amp;HWND should not be used as OLE_HANDLE*</short_desc>
          <delta_ts>2014-02-11 13:19:29 -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>WebKit Misc.</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>Windows 8</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>Blocker</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Alex Christensen">alex.christensen</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>bfulgham</cc>
    
    <cc>commit-queue</cc>
    
    <cc>roger_fong</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>976515</commentid>
    <comment_count>0</comment_count>
    <who name="Alex Christensen">alex.christensen</who>
    <bug_when>2014-02-04 15:06:43 -0800</bug_when>
    <thetext>An OLE_HANDLE is a UINT, which is always a 32-bit integer.  A HWND is a HWND__*, which is 32-bits for Win32 and 64-bits for Win64.  Casting between the two seems to be ok in most cases, and they&apos;re often used interchangeably without a problem.  There are several functions in WebKit that take an OLE_HANDLE* to put something into, and we&apos;re giving it a casted pointer to a HWND.  This does not cause a problem on Win32 because they&apos;re equivalent, but it puts a 32-bit integer at the beginning of a 64-bit integer with my Win64 builds, which causes some crashes sometimes.  This fixes those crashes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>976530</commentid>
    <comment_count>1</comment_count>
      <attachid>223170</attachid>
    <who name="Alex Christensen">alex.christensen</who>
    <bug_when>2014-02-04 15:26:03 -0800</bug_when>
    <thetext>Created attachment 223170
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>976533</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-02-04 15:28:10 -0800</bug_when>
    <thetext>Attachment 223170 did not pass style-queue:


ERROR: Tools/DumpRenderTree/win/TestRunnerWin.cpp:717:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
ERROR: Source/WebKit/win/WebCoreSupport/WebContextMenuClient.cpp:75:  Wrong number of spaces before statement. (expected: 8)  [whitespace/indent] [4]
ERROR: Source/WebKit/win/WebCoreSupport/WebContextMenuClient.cpp:76:  Wrong number of spaces before statement. (expected: 8)  [whitespace/indent] [4]
ERROR: Source/WebKit/win/WebCoreSupport/WebContextMenuClient.cpp:76:  Wrong number of spaces before statement. (expected: 8)  [whitespace/indent] [4]
ERROR: Source/WebKit/win/WebDropSource.cpp:102:  Wrong number of spaces before statement. (expected: 8)  [whitespace/indent] [4]
Total errors found: 5 in 11 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>976556</commentid>
    <comment_count>3</comment_count>
    <who name="Alex Christensen">alex.christensen</who>
    <bug_when>2014-02-04 15:49:32 -0800</bug_when>
    <thetext>I&apos;ll fix the spacing, but is it ok to use (HWND) style casting like everything else in this code, or should I change it to reinterpret_cast?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>977125</commentid>
    <comment_count>4</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2014-02-05 16:25:16 -0800</bug_when>
    <thetext>(In reply to comment #3)
&gt; I&apos;ll fix the spacing, but is it ok to use (HWND) style casting like everything else in this code, or should I change it to reinterpret_cast?

You should use static_cast/reinterpret_cast/const_cast, etc., as necessary to be clear about what&apos;s going on.

Thanks for working on this!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>977213</commentid>
    <comment_count>5</comment_count>
    <who name="Alex Christensen">alex.christensen</who>
    <bug_when>2014-02-05 20:30:36 -0800</bug_when>
    <thetext>Would you be ok with me using helpers like PtrToUInt in windows-specific code?

http://msdn.microsoft.com/en-us/library/windows/desktop/aa384267(v=vs.85).aspx</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>979556</commentid>
    <comment_count>6</comment_count>
      <attachid>223891</attachid>
    <who name="Alex Christensen">alex.christensen</who>
    <bug_when>2014-02-11 12:51:52 -0800</bug_when>
    <thetext>Created attachment 223891
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>979557</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-02-11 12:54:48 -0800</bug_when>
    <thetext>Attachment 223891 did not pass style-queue:


ERROR: Tools/DumpRenderTree/win/TestRunnerWin.cpp:717:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
ERROR: Source/WebKit/win/WebCoreSupport/WebContextMenuClient.cpp:75:  Wrong number of spaces before statement. (expected: 8)  [whitespace/indent] [4]
ERROR: Source/WebKit/win/WebCoreSupport/WebContextMenuClient.cpp:76:  Wrong number of spaces before statement. (expected: 8)  [whitespace/indent] [4]
ERROR: Source/WebKit/win/WebCoreSupport/WebContextMenuClient.cpp:76:  Wrong number of spaces before statement. (expected: 8)  [whitespace/indent] [4]
ERROR: Source/WebKit/win/WebDropSource.cpp:102:  Wrong number of spaces before statement. (expected: 8)  [whitespace/indent] [4]
Total errors found: 5 in 13 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>979558</commentid>
    <comment_count>8</comment_count>
    <who name="Alex Christensen">alex.christensen</who>
    <bug_when>2014-02-11 13:03:30 -0800</bug_when>
    <thetext>I think the style failure is a bug, and I think reinterpret_cast is better than PtrToUInt because it does not assume that a OLE_HANDLE is an unsigned int.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>979559</commentid>
    <comment_count>9</comment_count>
      <attachid>223891</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2014-02-11 13:04:45 -0800</bug_when>
    <thetext>Comment on attachment 223891
patch

View in context: https://bugs.webkit.org/attachment.cgi?id=223891&amp;action=review

Looks good, but I&apos;d like the one C-cast to be changed to a C++ cast, please!  :-)

&gt; Source/WebKit/win/WebCoreSupport/WebContextMenuClient.cpp:66
&gt; +    OLE_HANDLE nativeMenu = (OLE_HANDLE)menu-&gt;platformContextMenu();

reinterpret_cast&lt;OLE_HANDLE&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>979565</commentid>
    <comment_count>10</comment_count>
    <who name="Alex Christensen">alex.christensen</who>
    <bug_when>2014-02-11 13:19:29 -0800</bug_when>
    <thetext>http://trac.webkit.org/changeset/163903 with fixed c-cast and removed duplicate change log entry</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>223170</attachid>
            <date>2014-02-04 15:26:03 -0800</date>
            <delta_ts>2014-02-11 12:51:52 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-128211-20140204162602.patch</filename>
            <type>text/plain</type>
            <size>13427</size>
            <attacher name="Alex Christensen">alex.christensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0L3dpbi9DaGFuZ2VMb2cJKHJldmlzaW9uIDE2MzQwNikKKysrIFNvdXJjZS9XZWJLaXQv
d2luL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMxIEBACisyMDE0LTAyLTA0
ICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAg
Rml4ZWQgcG9pbnRlciB0cnVuY2F0aW9uIG9uIFdpbjY0LgorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI4MjExCisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9FbWJlZGRlZFdpZGdl
dC5jcHA6CisgICAgICAgIChFbWJlZGRlZFdpZGdldDo6Y3JlYXRlV2luZG93KToKKyAgICAgICAg
KiBXZWJDb3JlU3VwcG9ydC9XZWJDb250ZXh0TWVudUNsaWVudC5jcHA6CisgICAgICAgIChXZWJD
b250ZXh0TWVudUNsaWVudDo6Y3VzdG9taXplTWVudSk6CisgICAgICAgICogV2ViQ29yZVN1cHBv
cnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwOgorICAgICAgICAoV2ViRnJhbWVMb2FkZXJDbGll
bnQ6OmNyZWF0ZVBsdWdpbik6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9y
Q2xpZW50LmNwcDoKKyAgICAgICAgKFdlYkluc3BlY3RvckNsaWVudDo6V2ViSW5zcGVjdG9yQ2xp
ZW50KToKKyAgICAgICAgKFdlYkluc3BlY3RvckNsaWVudDo6b3Blbkluc3BlY3RvckZyb250ZW5k
KToKKyAgICAgICAgKFdlYkluc3BlY3RvckNsaWVudDo6aGlnaGxpZ2h0KToKKyAgICAgICAgKFdl
Ykluc3BlY3RvckNsaWVudDo6cmVsZWFzZUZyb250ZW5kKToKKyAgICAgICAgKFdlYkluc3BlY3Rv
ckZyb250ZW5kQ2xpZW50OjpzZXRBdHRhY2hlZFdpbmRvd0hlaWdodCk6CisgICAgICAgIChXZWJJ
bnNwZWN0b3JGcm9udGVuZENsaWVudDo6Y2xvc2VXaW5kb3dXaXRob3V0Tm90aWZpY2F0aW9ucyk6
CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50Lmg6CisgICAgICAg
ICogV2ViRHJvcFNvdXJjZS5jcHA6CisgICAgICAgIChnZW5lcmF0ZU1vdXNlRXZlbnQpOgorICAg
ICAgICAqIFdlYkZyYW1lLmNwcDoKKyAgICAgICAgKFdlYkZyYW1lOjpjcmVhdGVTdWJmcmFtZVdp
dGhPd25lckVsZW1lbnQpOgorICAgICAgICAoV2ViRnJhbWU6OmluaXRXaXRoV2ViVmlldyk6Cisg
ICAgICAgIFJlbW92ZWQgYWxsIGNhc3RzIGZyb20gJkhXTkQgdG8gT0xFX0hBTkRMRSouCisKIDIw
MTQtMDItMDMgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgogCiAgICAgICAgIFRyeSB0
byBmaXggdGhlIFdpbkNhaXJvIGJ1aWxkLgpJbmRleDogU291cmNlL1dlYktpdC93aW4vV2ViRHJv
cFNvdXJjZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC93aW4vV2ViRHJvcFNvdXJj
ZS5jcHAJKHJldmlzaW9uIDE2MzQwNCkKKysrIFNvdXJjZS9XZWJLaXQvd2luL1dlYkRyb3BTb3Vy
Y2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05OCw5ICs5OCw5IEBAIFBsYXRmb3JtTW91c2VFdmVu
dCBnZW5lcmF0ZU1vdXNlRXZlbnQoV2UKICAgICBQT0lOVEwgcHQ7CiAgICAgOjpHZXRDdXJzb3JQ
b3MoKExQUE9JTlQpJnB0KTsKICAgICBQT0lOVEwgbG9jYWxwdCA9IHB0OwotICAgIEhXTkQgdmll
d1dpbmRvdzsKLSAgICBpZiAoU1VDQ0VFREVEKHdlYlZpZXctPnZpZXdXaW5kb3coKE9MRV9IQU5E
TEUqKSZ2aWV3V2luZG93KSkpCi0gICAgICAgIDo6U2NyZWVuVG9DbGllbnQodmlld1dpbmRvdywg
KExQUE9JTlQpJmxvY2FscHQpOworICAgIE9MRV9IQU5ETEUgdmlld1dpbmRvdzsKKyAgICBpZiAo
U1VDQ0VFREVEKHdlYlZpZXctPnZpZXdXaW5kb3coJnZpZXdXaW5kb3cpKSkKKyAgICAgICAgOjpT
Y3JlZW5Ub0NsaWVudCgoSFdORCl2aWV3V2luZG93LCAoTFBQT0lOVCkmbG9jYWxwdCk7CiAgICAg
cmV0dXJuIFBsYXRmb3JtTW91c2VFdmVudChJbnRQb2ludChsb2NhbHB0LngsIGxvY2FscHQueSks
IEludFBvaW50KHB0LngsIHB0LnkpLAogICAgICAgICBpc0RyYWcgPyBMZWZ0QnV0dG9uIDogTm9C
dXR0b24sIFBsYXRmb3JtRXZlbnQ6Ok1vdXNlTW92ZWQsIDAsIGZhbHNlLCBmYWxzZSwgZmFsc2Us
IGZhbHNlLCBjdXJyZW50VGltZSgpKTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQvd2luL1dlYkZy
YW1lLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3dpbi9XZWJGcmFtZS5jcHAJKHJl
dmlzaW9uIDE2MzQwNCkKKysrIFNvdXJjZS9XZWJLaXQvd2luL1dlYkZyYW1lLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMTA3Niw4ICsxMDc2LDggQEAgUGFzc1JlZlB0cjxGcmFtZT4gV2ViRnJhbWU6
OmNyZWF0ZVN1YmZyYQogICAgIHdlYlZpZXctPlF1ZXJ5SW50ZXJmYWNlKCZkLT53ZWJWaWV3KTsK
ICAgICBkLT53ZWJWaWV3LT5SZWxlYXNlKCk7IC8vIGRvbid0IGhvbGQgdGhlIGV4dHJhIHJlZgog
Ci0gICAgSFdORCB2aWV3V2luZG93OwotICAgIGQtPndlYlZpZXctPnZpZXdXaW5kb3coKE9MRV9I
QU5ETEUqKSZ2aWV3V2luZG93KTsKKyAgICBPTEVfSEFORExFIHZpZXdXaW5kb3c7CisgICAgZC0+
d2ViVmlldy0+dmlld1dpbmRvdygmdmlld1dpbmRvdyk7CiAKICAgICB0aGlzLT5BZGRSZWYoKTsg
Ly8gV2UgcmVsZWFzZSB0aGlzIHJlZiBpbiBmcmFtZUxvYWRlckRlc3Ryb3llZCgpCiAgICAgUmVm
UHRyPEZyYW1lPiBmcmFtZSA9IEZyYW1lOjpjcmVhdGUocGFnZSwgb3duZXJFbGVtZW50LCBuZXcg
V2ViRnJhbWVMb2FkZXJDbGllbnQodGhpcykpOwpAQCAtMTA5MCw4ICsxMDkwLDggQEAgdm9pZCBX
ZWJGcmFtZTo6aW5pdFdpdGhXZWJWaWV3KElXZWJWaWV3KgogICAgIHdlYlZpZXctPlF1ZXJ5SW50
ZXJmYWNlKCZkLT53ZWJWaWV3KTsKICAgICBkLT53ZWJWaWV3LT5SZWxlYXNlKCk7IC8vIGRvbid0
IGhvbGQgdGhlIGV4dHJhIHJlZgogCi0gICAgSFdORCB2aWV3V2luZG93OwotICAgIGQtPndlYlZp
ZXctPnZpZXdXaW5kb3coKE9MRV9IQU5ETEUqKSZ2aWV3V2luZG93KTsKKyAgICBPTEVfSEFORExF
IHZpZXdXaW5kb3c7CisgICAgZC0+d2ViVmlldy0+dmlld1dpbmRvdygmdmlld1dpbmRvdyk7CiAK
ICAgICB0aGlzLT5BZGRSZWYoKTsgLy8gV2UgcmVsZWFzZSB0aGlzIHJlZiBpbiBmcmFtZUxvYWRl
ckRlc3Ryb3llZCgpCiAgICAgZC0+ZnJhbWUgPSAmcGFnZS0+bWFpbkZyYW1lKCk7CkluZGV4OiBT
b3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9FbWJlZGRlZFdpZGdldC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvRW1iZWRkZWRXaWRnZXQu
Y3BwCShyZXZpc2lvbiAxNjM0MDQpCisrKyBTb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9y
dC9FbWJlZGRlZFdpZGdldC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU2LDE2ICs1NiwxNiBAQCBi
b29sIEVtYmVkZGVkV2lkZ2V0OjpjcmVhdGVXaW5kb3coSFdORCBwCiB7CiAgICAgQVNTRVJUKCFt
X3dpbmRvdyk7CiAKLSAgICBIV05EIHdpbmRvdzsKKyAgICBPTEVfSEFORExFIHdpbmRvdzsKIAog
ICAgIFNJWkUgcGx1Z2luU2l6ZShzaXplKTsKIAotICAgIEhSRVNVTFQgaHIgPSBtX3ZpZXctPmNy
ZWF0ZVZpZXdXaW5kb3coKE9MRV9IQU5ETEUpcGFyZW50V2luZG93LCAmcGx1Z2luU2l6ZSwgKE9M
RV9IQU5ETEUqKSZ3aW5kb3cpOworICAgIEhSRVNVTFQgaHIgPSBtX3ZpZXctPmNyZWF0ZVZpZXdX
aW5kb3coKE9MRV9IQU5ETEUpcGFyZW50V2luZG93LCAmcGx1Z2luU2l6ZSwgJndpbmRvdyk7CiAg
ICAgICAgIAogICAgIGlmIChGQUlMRUQoaHIpIHx8ICF3aW5kb3cpCiAgICAgICAgIHJldHVybiBm
YWxzZTsKIAotICAgIG1fd2luZG93ID0gd2luZG93OworICAgIG1fd2luZG93ID0gKEhXTkQpd2lu
ZG93OwogICAgIHJldHVybiB0cnVlOwogfQogCkluZGV4OiBTb3VyY2UvV2ViS2l0L3dpbi9XZWJD
b3JlU3VwcG9ydC9XZWJDb250ZXh0TWVudUNsaWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViQ29udGV4dE1lbnVDbGllbnQuY3BwCShyZXZp
c2lvbiAxNjM0MDQpCisrKyBTb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJDb250
ZXh0TWVudUNsaWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTYzLDE3ICs2MywxNyBAQCBQYXNz
T3duUHRyPENvbnRleHRNZW51PiBXZWJDb250ZXh0TWVudUNsCiAKICAgICBBU1NFUlQodWlEZWxl
Z2F0ZSk7CiAKLSAgICBITUVOVSBuYXRpdmVNZW51ID0gbWVudS0+cGxhdGZvcm1Db250ZXh0TWVu
dSgpOworICAgIE9MRV9IQU5ETEUgbmF0aXZlTWVudSA9IChPTEVfSEFORExFKW1lbnUtPnBsYXRm
b3JtQ29udGV4dE1lbnUoKTsKICAgICBDT01QdHI8V2ViRWxlbWVudFByb3BlcnR5QmFnPiBwcm9w
ZXJ0eUJhZzsKICAgICBwcm9wZXJ0eUJhZy5hZG9wdFJlZihXZWJFbGVtZW50UHJvcGVydHlCYWc6
OmNyZWF0ZUluc3RhbmNlKG1fd2ViVmlldy0+cGFnZSgpLT5jb250ZXh0TWVudUNvbnRyb2xsZXIo
KS5oaXRUZXN0UmVzdWx0KCkpKTsKICAgICAvLyBGSVhNRTogV2UgbmVlZCB0byBkZWNpZGUgd2hl
dGhlciB0byBkbyB0aGUgZGVmYXVsdCBiZWZvcmUgY2FsbGluZyB0aGlzIGRlbGVnYXRlIG1ldGhv
ZAotICAgIGlmIChGQUlMRUQodWlEZWxlZ2F0ZS0+Y29udGV4dE1lbnVJdGVtc0ZvckVsZW1lbnQo
bV93ZWJWaWV3LCBwcm9wZXJ0eUJhZy5nZXQoKSwgKE9MRV9IQU5ETEUpKFVMT05HNjQpbmF0aXZl
TWVudSwgKE9MRV9IQU5ETEUqKSZuYXRpdmVNZW51KSkpIHsKLSAgICAgICAgOjpEZXN0cm95TWVu
dShuYXRpdmVNZW51KTsKKyAgICBpZiAoRkFJTEVEKHVpRGVsZWdhdGUtPmNvbnRleHRNZW51SXRl
bXNGb3JFbGVtZW50KG1fd2ViVmlldywgcHJvcGVydHlCYWcuZ2V0KCksIG5hdGl2ZU1lbnUsICZu
YXRpdmVNZW51KSkpIHsKKyAgICAgICAgOjpEZXN0cm95TWVudSgoSE1FTlUpbmF0aXZlTWVudSk7
CiAgICAgICAgIHJldHVybiBtZW51LnJlbGVhc2UoKTsKICAgICB9CiAgICAgCi0gICAgT3duUHRy
PENvbnRleHRNZW51PiBjdXN0b21pemVkTWVudSA9IGFkb3B0UHRyKG5ldyBDb250ZXh0TWVudShu
YXRpdmVNZW51KSk7Ci0gICAgOjpEZXN0cm95TWVudShuYXRpdmVNZW51KTsKKyAgICBPd25QdHI8
Q29udGV4dE1lbnU+IGN1c3RvbWl6ZWRNZW51ID0gYWRvcHRQdHIobmV3IENvbnRleHRNZW51KChI
TUVOVSluYXRpdmVNZW51KSk7CisgICAgOjpEZXN0cm95TWVudSgoSE1FTlUpbmF0aXZlTWVudSk7
CiAKICAgICByZXR1cm4gY3VzdG9taXplZE1lbnUucmVsZWFzZSgpOwogfQpJbmRleDogU291cmNl
L1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVy
Q2xpZW50LmNwcAkocmV2aXNpb24gMTYzNDA0KQorKysgU291cmNlL1dlYktpdC93aW4vV2ViQ29y
ZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTg0
LDExICsxMTg0LDExIEBAIFBhc3NSZWZQdHI8V2lkZ2V0PiBXZWJGcmFtZUxvYWRlckNsaWVudDoK
ICAgICAgICAgICAgIENPTVB0cjxJV2ViRW1iZWRkZWRWaWV3PiB2aWV3OwogICAgICAgICAgICAg
SFJFU1VMVCByZXN1bHQgPSB1aVByaXZhdGUtPmVtYmVkZGVkVmlld1dpdGhBcmd1bWVudHMod2Vi
VmlldywgbV93ZWJGcmFtZSwgYXJndW1lbnRzQmFnLmdldCgpLCAmdmlldyk7CiAgICAgICAgICAg
ICBpZiAoU1VDQ0VFREVEKHJlc3VsdCkpIHsKLSAgICAgICAgICAgICAgICBIV05EIHBhcmVudFdp
bmRvdzsKLSAgICAgICAgICAgICAgICBIUkVTVUxUIGhyID0gd2ViVmlldy0+dmlld1dpbmRvdygo
T0xFX0hBTkRMRSopJnBhcmVudFdpbmRvdyk7CisgICAgICAgICAgICAgICAgT0xFX0hBTkRMRSBw
YXJlbnRXaW5kb3c7CisgICAgICAgICAgICAgICAgSFJFU1VMVCBociA9IHdlYlZpZXctPnZpZXdX
aW5kb3coJnBhcmVudFdpbmRvdyk7CiAgICAgICAgICAgICAgICAgQVNTRVJUKFNVQ0NFRURFRCho
cikpOwogCi0gICAgICAgICAgICAgICAgcmV0dXJuIEVtYmVkZGVkV2lkZ2V0OjpjcmVhdGUodmll
dy5nZXQoKSwgZWxlbWVudCwgcGFyZW50V2luZG93LCBwbHVnaW5TaXplKTsKKyAgICAgICAgICAg
ICAgICByZXR1cm4gRW1iZWRkZWRXaWRnZXQ6OmNyZWF0ZSh2aWV3LmdldCgpLCBlbGVtZW50LCAo
SFdORClwYXJlbnRXaW5kb3csIHBsdWdpblNpemUpOwogICAgICAgICAgICAgfQogICAgICAgICB9
CiAgICAgfQpJbmRleDogU291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVj
dG9yQ2xpZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3Vw
cG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuY3BwCShyZXZpc2lvbiAxNjM0MDQpCisrKyBTb3VyY2Uv
V2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC03MSw3ICs3MSw3IEBAIFdlYkluc3BlY3RvckNsaWVudDo6V2ViSW5zcGVjdG9y
Q2xpZW50KFcKICAgICAsIG1fZnJvbnRlbmRDbGllbnQoMCkKIHsKICAgICBBU1NFUlQobV9pbnNw
ZWN0ZWRXZWJWaWV3KTsKLSAgICBtX2luc3BlY3RlZFdlYlZpZXctPnZpZXdXaW5kb3coKE9MRV9I
QU5ETEUqKSZtX2luc3BlY3RlZFdlYlZpZXdId25kKTsKKyAgICBtX2luc3BlY3RlZFdlYlZpZXct
PnZpZXdXaW5kb3coJm1faW5zcGVjdGVkV2ViVmlld0hhbmRsZSk7CiB9CiAKIFdlYkluc3BlY3Rv
ckNsaWVudDo6fldlYkluc3BlY3RvckNsaWVudCgpCkBAIC0xNzEsMTAgKzE3MSwxMCBAQCBXZWJD
b3JlOjpJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqIFdlYkluCiAgICAgICAgIHJldHVybiAwOwog
CiAgICAgbV9mcm9udGVuZFBhZ2UgPSBjb3JlKGZyb250ZW5kV2ViVmlldy5nZXQoKSk7Ci0gICAg
YXV0byBmcm9udGVuZENsaWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViSW5zcGVjdG9yRnJvbnRl
bmRDbGllbnQ+KG1faW5zcGVjdGVkV2ViVmlldywgbV9pbnNwZWN0ZWRXZWJWaWV3SHduZCwgZnJv
bnRlbmRId25kLCBmcm9udGVuZFdlYlZpZXcsIGZyb250ZW5kV2ViVmlld0h3bmQsIHRoaXMsIGNy
ZWF0ZUZyb250ZW5kU2V0dGluZ3MoKSk7CisgICAgYXV0byBmcm9udGVuZENsaWVudCA9IHN0ZDo6
bWFrZV91bmlxdWU8V2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ+KG1faW5zcGVjdGVkV2ViVmll
dywgKEhXTkQpbV9pbnNwZWN0ZWRXZWJWaWV3SGFuZGxlLCBmcm9udGVuZEh3bmQsIGZyb250ZW5k
V2ViVmlldywgZnJvbnRlbmRXZWJWaWV3SHduZCwgdGhpcywgY3JlYXRlRnJvbnRlbmRTZXR0aW5n
cygpKTsKICAgICBtX2Zyb250ZW5kQ2xpZW50ID0gZnJvbnRlbmRDbGllbnQuZ2V0KCk7CiAgICAg
bV9mcm9udGVuZFBhZ2UtPmluc3BlY3RvckNvbnRyb2xsZXIoKS5zZXRJbnNwZWN0b3JGcm9udGVu
ZENsaWVudChzdGQ6Om1vdmUoZnJvbnRlbmRDbGllbnQpKTsKLSAgICBtX2Zyb250ZW5kSHduZCA9
IGZyb250ZW5kSHduZDsKKyAgICBtX2Zyb250ZW5kSGFuZGxlID0gKE9MRV9IQU5ETEUpZnJvbnRl
bmRId25kOwogICAgIHJldHVybiB0aGlzOwogfQogCkBAIC0yMDEsOCArMjAxLDggQEAgdm9pZCBX
ZWJJbnNwZWN0b3JDbGllbnQ6OmhpZ2hsaWdodCgpCiAgICAgZWxzZQogICAgICAgICBtX2hpZ2hs
aWdodC0+c2V0U2hvd3NXaGlsZVdlYlZpZXdJc1Zpc2libGUodHJ1ZSk7CiAKLSAgICBpZiAoY3Jl
YXRpbmdIaWdobGlnaHQgJiYgSXNXaW5kb3dWaXNpYmxlKG1fZnJvbnRlbmRId25kKSkKLSAgICAg
ICAgbV9oaWdobGlnaHQtPnBsYWNlQmVoaW5kV2luZG93KG1fZnJvbnRlbmRId25kKTsKKyAgICBp
ZiAoY3JlYXRpbmdIaWdobGlnaHQgJiYgSXNXaW5kb3dWaXNpYmxlKChIV05EKW1fZnJvbnRlbmRI
YW5kbGUpKQorICAgICAgICBtX2hpZ2hsaWdodC0+cGxhY2VCZWhpbmRXaW5kb3coKEhXTkQpbV9m
cm9udGVuZEhhbmRsZSk7CiB9CiAKIHZvaWQgV2ViSW5zcGVjdG9yQ2xpZW50OjpoaWRlSGlnaGxp
Z2h0KCkKQEAgLTIyMSw3ICsyMjEsNyBAQCB2b2lkIFdlYkluc3BlY3RvckNsaWVudDo6cmVsZWFz
ZUZyb250ZW5kCiB7CiAgICAgbV9mcm9udGVuZENsaWVudCA9IDA7CiAgICAgbV9mcm9udGVuZFBh
Z2UgPSAwOwotICAgIG1fZnJvbnRlbmRId25kID0gMDsKKyAgICBtX2Zyb250ZW5kSGFuZGxlID0g
MDsKIH0KIAogV2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ6OldlYkluc3BlY3RvckZyb250ZW5k
Q2xpZW50KFdlYlZpZXcqIGluc3BlY3RlZFdlYlZpZXcsIEhXTkQgaW5zcGVjdGVkV2ViVmlld0h3
bmQsIEhXTkQgZnJvbnRlbmRId25kLCBjb25zdCBDT01QdHI8V2ViVmlldz4mIGZyb250ZW5kV2Vi
VmlldywgSFdORCBmcm9udGVuZFdlYlZpZXdId25kLCBXZWJJbnNwZWN0b3JDbGllbnQqIGluc3Bl
Y3RvckNsaWVudCwgUGFzc093blB0cjxTZXR0aW5ncz4gc2V0dGluZ3MpCkBAIC0zMTMsMTIgKzMx
MywxMiBAQCB2b2lkIFdlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50OjpzZXRBdHRhCiAgICAgaWYg
KCFtX2F0dGFjaGVkKQogICAgICAgICByZXR1cm47CiAKLSAgICBIV05EIGhvc3RXaW5kb3c7Ci0g
ICAgaWYgKCFTVUNDRUVERUQobV9pbnNwZWN0ZWRXZWJWaWV3LT5ob3N0V2luZG93KChPTEVfSEFO
RExFKikmaG9zdFdpbmRvdykpKQorICAgIE9MRV9IQU5ETEUgaG9zdFdpbmRvdzsKKyAgICBpZiAo
IVNVQ0NFRURFRChtX2luc3BlY3RlZFdlYlZpZXctPmhvc3RXaW5kb3coJmhvc3RXaW5kb3cpKSkK
ICAgICAgICAgcmV0dXJuOwogCiAgICAgUkVDVCBob3N0V2luZG93UmVjdDsKLSAgICBHZXRDbGll
bnRSZWN0KGhvc3RXaW5kb3csICZob3N0V2luZG93UmVjdCk7CisgICAgR2V0Q2xpZW50UmVjdCgo
SFdORClob3N0V2luZG93LCAmaG9zdFdpbmRvd1JlY3QpOwogCiAgICAgUkVDVCBpbnNwZWN0ZWRS
ZWN0OwogICAgIEdldENsaWVudFJlY3QobV9pbnNwZWN0ZWRXZWJWaWV3SHduZCwgJmluc3BlY3Rl
ZFJlY3QpOwpAQCAtMzc0LDkgKzM3NCw5IEBAIHZvaWQgV2ViSW5zcGVjdG9yRnJvbnRlbmRDbGll
bnQ6OmNsb3NlV2kKICAgICBtX2Zyb250ZW5kV2ViVmlldy0+c2V0SG9zdFdpbmRvdyhyZWludGVy
cHJldF9jYXN0PE9MRV9IQU5ETEU+KG1fZnJvbnRlbmRId25kKSk7CiAKICAgICAvLyBNYWtlIHN1
cmUgZXZlcnl0aGluZyBoYXMgdGhlIHJpZ2h0IHNpemUvcG9zaXRpb24uCi0gICAgSFdORCBob3N0
V2luZG93OwotICAgIGlmIChTVUNDRUVERUQobV9pbnNwZWN0ZWRXZWJWaWV3LT5ob3N0V2luZG93
KChPTEVfSEFORExFKikmaG9zdFdpbmRvdykpKQotICAgICAgICBTZW5kTWVzc2FnZShob3N0V2lu
ZG93LCBXTV9TSVpFLCAwLCAwKTsKKyAgICBPTEVfSEFORExFIGhvc3RXaW5kb3c7CisgICAgaWYg
KFNVQ0NFRURFRChtX2luc3BlY3RlZFdlYlZpZXctPmhvc3RXaW5kb3coJmhvc3RXaW5kb3cpKSkK
KyAgICAgICAgU2VuZE1lc3NhZ2UoKEhXTkQpaG9zdFdpbmRvdywgV01fU0laRSwgMCwgMCk7CiB9
CiAKIHZvaWQgV2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ6OnNob3dXaW5kb3dXaXRob3V0Tm90
aWZpY2F0aW9ucygpCkluZGV4OiBTb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJJ
bnNwZWN0b3JDbGllbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3Jl
U3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuaAkocmV2aXNpb24gMTYzNDA0KQorKysgU291cmNl
L1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50LmgJKHdvcmtpbmcg
Y29weSkKQEAgLTg2LDggKzg2LDggQEAgcHJpdmF0ZToKICAgICBXZWJWaWV3KiBtX2luc3BlY3Rl
ZFdlYlZpZXc7CiAgICAgV2ViQ29yZTo6UGFnZSogbV9mcm9udGVuZFBhZ2U7CiAgICAgV2ViSW5z
cGVjdG9yRnJvbnRlbmRDbGllbnQqIG1fZnJvbnRlbmRDbGllbnQ7Ci0gICAgSFdORCBtX2luc3Bl
Y3RlZFdlYlZpZXdId25kOwotICAgIEhXTkQgbV9mcm9udGVuZEh3bmQ7CisgICAgT0xFX0hBTkRM
RSBtX2luc3BlY3RlZFdlYlZpZXdIYW5kbGU7CisgICAgT0xFX0hBTkRMRSBtX2Zyb250ZW5kSGFu
ZGxlOwogCiAgICAgT3duUHRyPFdlYk5vZGVIaWdobGlnaHQ+IG1faGlnaGxpZ2h0OwogfTsKSW5k
ZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJldmlz
aW9uIDE2MzQwNikKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsx
LDE2IEBACisyMDE0LTAyLTA0ICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtp
dC5vcmc+CisKKyAgICAgICAgRml4ZWQgcG9pbnRlciB0cnVuY2F0aW9uIG9uIFdpbjY0LgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI4MjExCisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBEdW1wUmVuZGVy
VHJlZS93aW4vQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXJXaW4uY3BwOgorICAgICAgICAoQWNjZXNz
aWJpbGl0eUNvbnRyb2xsZXI6OnJvb3RFbGVtZW50KToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJl
ZS93aW4vVGVzdFJ1bm5lcldpbi5jcHA6CisgICAgICAgIChUZXN0UnVubmVyOjpzZXRXaW5kb3dJ
c0tleSk6CisgICAgICAgIFJlbW92ZWQgYWxsIGNhc3RzIGZyb20gJkhXTkQgdG8gT0xFX0hBTkRM
RSouCisKIDIwMTQtMDItMDQgIENhcmxvcyBHYXJuYWNobyAgPGNhcmxvc2dAZ25vbWUub3JnPgog
CiAgICAgICAgIFtBdXRvbWFrZV0gQWRkIG1pc3NpbmcgJChmZWF0dXJlX2RlZmluZXMpIHdoZW4g
Z2VuZXJhdGluZyBJbmplY3RlZEJ1bmRsZSBiaW5kaW5ncwpJbmRleDogVG9vbHMvRHVtcFJlbmRl
clRyZWUvd2luL0FjY2Vzc2liaWxpdHlDb250cm9sbGVyV2luLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBU
b29scy9EdW1wUmVuZGVyVHJlZS93aW4vQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXJXaW4uY3BwCShy
ZXZpc2lvbiAxNjM0MDQpCisrKyBUb29scy9EdW1wUmVuZGVyVHJlZS93aW4vQWNjZXNzaWJpbGl0
eUNvbnRyb2xsZXJXaW4uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNjQsMTQgKzE2NCwxNCBAQCBB
Y2Nlc3NpYmlsaXR5VUlFbGVtZW50IEFjY2Vzc2liaWxpdHlDb250CiAgICAgaWYgKCF2aWV3UHJp
dmF0ZSkKICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICBIV05EIHdlYlZpZXdXaW5kb3c7Ci0gICAg
aWYgKEZBSUxFRCh2aWV3UHJpdmF0ZS0+dmlld1dpbmRvdygoT0xFX0hBTkRMRSopJndlYlZpZXdX
aW5kb3cpKSkKKyAgICBPTEVfSEFORExFIHdlYlZpZXdXaW5kb3c7CisgICAgaWYgKEZBSUxFRCh2
aWV3UHJpdmF0ZS0+dmlld1dpbmRvdygmd2ViVmlld1dpbmRvdykpKQogICAgICAgICByZXR1cm4g
MDsKIAogICAgIC8vIEdldCB0aGUgcm9vdCBhY2Nlc3NpYmxlIG9iamVjdCBieSBxdWVyeWluZyBm
b3IgdGhlIGFjY2Vzc2libGUgb2JqZWN0IGZvciB0aGUKICAgICAvLyBXZWJWaWV3J3Mgd2luZG93
LgogICAgIENPTVB0cjxJQWNjZXNzaWJsZT4gcm9vdEFjY2Vzc2libGU7Ci0gICAgaWYgKEZBSUxF
RChBY2Nlc3NpYmxlT2JqZWN0RnJvbVdpbmRvdyh3ZWJWaWV3V2luZG93LCBzdGF0aWNfY2FzdDxE
V09SRD4oT0JKSURfQ0xJRU5UKSwgX191dWlkb2YoSUFjY2Vzc2libGUpLCByZWludGVycHJldF9j
YXN0PHZvaWQqKj4oJnJvb3RBY2Nlc3NpYmxlKSkpKQorICAgIGlmIChGQUlMRUQoQWNjZXNzaWJs
ZU9iamVjdEZyb21XaW5kb3coKEhXTkQpd2ViVmlld1dpbmRvdywgc3RhdGljX2Nhc3Q8RFdPUkQ+
KE9CSklEX0NMSUVOVCksIF9fdXVpZG9mKElBY2Nlc3NpYmxlKSwgcmVpbnRlcnByZXRfY2FzdDx2
b2lkKio+KCZyb290QWNjZXNzaWJsZSkpKSkKICAgICAgICAgcmV0dXJuIDA7CiAKICAgICByZXR1
cm4gcm9vdEFjY2Vzc2libGU7CkluZGV4OiBUb29scy9EdW1wUmVuZGVyVHJlZS93aW4vVGVzdFJ1
bm5lcldpbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL1Rlc3RS
dW5uZXJXaW4uY3BwCShyZXZpc2lvbiAxNjM0MDQpCisrKyBUb29scy9EdW1wUmVuZGVyVHJlZS93
aW4vVGVzdFJ1bm5lcldpbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTcxMCwxMSArNzEwLDExIEBA
IHZvaWQgVGVzdFJ1bm5lcjo6c2V0V2luZG93SXNLZXkoYm9vbCBmbGEKICAgICBpZiAoRkFJTEVE
KHdlYlZpZXctPlF1ZXJ5SW50ZXJmYWNlKCZ2aWV3UHJpdmF0ZSkpKQogICAgICAgICByZXR1cm47
CiAKLSAgICBIV05EIHdlYlZpZXdXaW5kb3c7Ci0gICAgaWYgKEZBSUxFRCh2aWV3UHJpdmF0ZS0+
dmlld1dpbmRvdygoT0xFX0hBTkRMRSopJndlYlZpZXdXaW5kb3cpKSkKKyAgICBPTEVfSEFORExF
IHdlYlZpZXdXaW5kb3c7CisgICAgaWYgKEZBSUxFRCh2aWV3UHJpdmF0ZS0+dmlld1dpbmRvdygm
d2ViVmlld1dpbmRvdykpKQogICAgICAgICByZXR1cm47CiAKLSAgICA6OlNlbmRNZXNzYWdlKHdl
YlZpZXdXaW5kb3csIGZsYWcgPyBXTV9TRVRGT0NVUyA6IFdNX0tJTExGT0NVUywgKFdQQVJBTSk6
OkdldERlc2t0b3BXaW5kb3coKSwgMCk7CisgICAgOjpTZW5kTWVzc2FnZSgoSFdORCl3ZWJWaWV3
V2luZG93LCBmbGFnID8gV01fU0VURk9DVVMgOiBXTV9LSUxMRk9DVVMsIChXUEFSQU0pOjpHZXRE
ZXNrdG9wV2luZG93KCksIDApOwogfQogCiBzdGF0aWMgY29uc3QgQ0ZUaW1lSW50ZXJ2YWwgd2Fp
dFRvRHVtcFdhdGNoZG9nSW50ZXJ2YWwgPSAzMC4wOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>223891</attachid>
            <date>2014-02-11 12:51:52 -0800</date>
            <delta_ts>2014-02-11 13:04:42 -0800</delta_ts>
            <desc>patch</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>17988</size>
            <attacher name="Alex Christensen">alex.christensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAxNjM4OTgpCisrKyBTb3VyY2UvV2ViS2l0L0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEzIEBACisyMDE0LTAyLTExICBBbGV4IENocmlz
dGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgRml4ZWQgbGlua2lu
ZyBvbiBXaW42NC4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTEyODIxMQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgICogV2ViS2l0LnZjeHByb2ovV2ViS2l0RXhwb3J0R2VuZXJhdG9yL1dlYktpdEV4cG9ydHMu
ZGVmLmluOgorICAgICAgICBDb3JyZWN0ZWQgV2luNjQgbGlua2VyIHN5bWJvbHMuCisKIDIwMTQt
MDItMDkgIE1hcmsgUm93ZSAgPG1yb3dlQGFwcGxlLmNvbT4KIAogICAgICAgICBTdG9wIHJlbGlu
a2luZyBXZWJLaXQgb24gZXZlcnkgYnVpbGQuCkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYktpdC52
Y3hwcm9qL1dlYktpdEV4cG9ydEdlbmVyYXRvci9XZWJLaXRFeHBvcnRzLmRlZi5pbgo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYktpdC52Y3hwcm9qL1dlYktpdEV4cG9ydEdlbmVyYXRv
ci9XZWJLaXRFeHBvcnRzLmRlZi5pbgkocmV2aXNpb24gMTYzODkzKQorKysgU291cmNlL1dlYktp
dC9XZWJLaXQudmN4cHJvai9XZWJLaXRFeHBvcnRHZW5lcmF0b3IvV2ViS2l0RXhwb3J0cy5kZWYu
aW4JKHdvcmtpbmcgY29weSkKQEAgLTE5OCw3ICsxOTgsNyBAQAogICAgICAgICBzeW1ib2xXaXRo
UG9pbnRlcig/YWJzb2x1dGVDYXJldEJvdW5kc0BGcmFtZVNlbGVjdGlvbkBXZWJDb3JlQEBRQUU/
QVZJbnRSZWN0QDJAWFosID9hYnNvbHV0ZUNhcmV0Qm91bmRzQEZyYW1lU2VsZWN0aW9uQFdlYkNv
cmVAQFFFQUE/QVZJbnRSZWN0QDJAWFopCiAgICAgICAgIHN5bWJvbFdpdGhQb2ludGVyKD9hZnRl
clBzZXVkb0VsZW1lbnRARWxlbWVudEBXZWJDb3JlQEBRQkVQQVZQc2V1ZG9FbGVtZW50QDJAWFos
ID9hZnRlclBzZXVkb0VsZW1lbnRARWxlbWVudEBXZWJDb3JlQEBRRUJBUEVBVlBzZXVkb0VsZW1l
bnRAMkBYWikKICAgICAgICAgc3ltYm9sV2l0aFBvaW50ZXIoP2JlZm9yZVBzZXVkb0VsZW1lbnRA
RWxlbWVudEBXZWJDb3JlQEBRQkVQQVZQc2V1ZG9FbGVtZW50QDJAWFosID9iZWZvcmVQc2V1ZG9F
bGVtZW50QEVsZW1lbnRAV2ViQ29yZUBAUUVCQVBFQVZQc2V1ZG9FbGVtZW50QDJAWFopCi0gICAg
ICAgIHN5bWJvbFdpdGhQb2ludGVyKD9zZWxlY3Rpb25Cb3VuZHNARnJhbWVTZWxlY3Rpb25AV2Vi
Q29yZUBAUUJFP0FWRmxvYXRSZWN0QDJAX05AWiwgP2JvdW5kc0BGcmFtZVNlbGVjdGlvbkBXZWJD
b3JlQEBRRUJBP0FWRmxvYXRSZWN0QDJAX05AWikKKyAgICAgICAgc3ltYm9sV2l0aFBvaW50ZXIo
P3NlbGVjdGlvbkJvdW5kc0BGcmFtZVNlbGVjdGlvbkBXZWJDb3JlQEBRQkU/QVZGbG9hdFJlY3RA
MkBfTkBaLCA/c2VsZWN0aW9uQm91bmRzQEZyYW1lU2VsZWN0aW9uQFdlYkNvcmVAQFFFQkE/QVZG
bG9hdFJlY3RAMkBfTkBaKQogICAgICAgICBzeW1ib2xXaXRoUG9pbnRlcig/ZnJvbVVURjhAU3Ry
aW5nQFdURkBAU0E/QVYxMkBQQkVAWiwgP2Zyb21VVEY4QFN0cmluZ0BXVEZAQFNBP0FWMTJAUEVC
RV9LQFopCiAgICAgICAgIHN5bWJvbFdpdGhQb2ludGVyKD9mcm9tVVRGOFdpdGhMYXRpbjFGYWxs
YmFja0BTdHJpbmdAV1RGQEBTQT9BVjEyQFBCRUlAWiwgP2Zyb21VVEY4V2l0aExhdGluMUZhbGxi
YWNrQFN0cmluZ0BXVEZAQFNBP0FWMTJAUEVCRV9LQFopCiAgICAgICAgIHN5bWJvbFdpdGhQb2lu
dGVyKD9nYXJiYWdlQ29sbGVjdERvY3VtZW50UmVzb3VyY2VzQENhY2hlZFJlc291cmNlTG9hZGVy
QFdlYkNvcmVAQFFBRVhYWiwgP2dhcmJhZ2VDb2xsZWN0RG9jdW1lbnRSZXNvdXJjZXNAQ2FjaGVk
UmVzb3VyY2VMb2FkZXJAV2ViQ29yZUBAUUVBQVhYWikKQEAgLTI1MCw4ICsyNTAsOCBAQAogICAg
ICAgICBzeW1ib2xXaXRoUG9pbnRlcig/YWRkUmVzdHJpY3Rpb25ATWVkaWFTZXNzaW9uTWFuYWdl
ckBXZWJDb3JlQEBRQUVYVzRNZWRpYVR5cGVATWVkaWFTZXNzaW9uQDJASUBaLCA/YWRkUmVzdHJp
Y3Rpb25ATWVkaWFTZXNzaW9uTWFuYWdlckBXZWJDb3JlQEBRRUFBWFc0TWVkaWFUeXBlQE1lZGlh
U2Vzc2lvbkAyQElAWikKICAgICAgICAgc3ltYm9sV2l0aFBvaW50ZXIoP3JlbW92ZVJlc3RyaWN0
aW9uQE1lZGlhU2Vzc2lvbk1hbmFnZXJAV2ViQ29yZUBAUUFFWFc0TWVkaWFUeXBlQE1lZGlhU2Vz
c2lvbkAyQElAWiwgP3JlbW92ZVJlc3RyaWN0aW9uQE1lZGlhU2Vzc2lvbk1hbmFnZXJAV2ViQ29y
ZUBAUUVBQVhXNE1lZGlhVHlwZUBNZWRpYVNlc3Npb25AMkBJQFopCiAgICAgICAgIHN5bWJvbFdp
dGhQb2ludGVyKD9yZXN0cmljdGlvbnNATWVkaWFTZXNzaW9uTWFuYWdlckBXZWJDb3JlQEBRQUVJ
VzRNZWRpYVR5cGVATWVkaWFTZXNzaW9uQDJAQFosID9yZXN0cmljdGlvbnNATWVkaWFTZXNzaW9u
TWFuYWdlckBXZWJDb3JlQEBRRUFBSVc0TWVkaWFUeXBlQE1lZGlhU2Vzc2lvbkAyQEBaKQotICAg
ICAgICBzeW1ib2xXaXRoUG9pbnRlcig/YXBwbGljYXRpb25XaWxsRW50ZXJGb3JlZ3JvdW5kQE1l
ZGlhU2Vzc2lvbk1hbmFnZXJAV2ViQ29yZUBAUUJFWFhaLCA/YXBwbGljYXRpb25XaWxsRW50ZXJG
b3JlZ3JvdW5kQE1lZGlhU2Vzc2lvbk1hbmFnZXJAV2ViQ29yZUBAUUJFWFhaKQotICAgICAgICBz
eW1ib2xXaXRoUG9pbnRlcig/YXBwbGljYXRpb25XaWxsRW50ZXJCYWNrZ3JvdW5kQE1lZGlhU2Vz
c2lvbk1hbmFnZXJAV2ViQ29yZUBAUUJFWFhaLCA/YXBwbGljYXRpb25XaWxsRW50ZXJCYWNrZ3Jv
dW5kQE1lZGlhU2Vzc2lvbk1hbmFnZXJAV2ViQ29yZUBAUUJFWFhaKQorICAgICAgICBzeW1ib2xX
aXRoUG9pbnRlcig/YXBwbGljYXRpb25XaWxsRW50ZXJGb3JlZ3JvdW5kQE1lZGlhU2Vzc2lvbk1h
bmFnZXJAV2ViQ29yZUBAUUJFWFhaLCA/YXBwbGljYXRpb25XaWxsRW50ZXJGb3JlZ3JvdW5kQE1l
ZGlhU2Vzc2lvbk1hbmFnZXJAV2ViQ29yZUBAUUVCQVhYWikKKyAgICAgICAgc3ltYm9sV2l0aFBv
aW50ZXIoP2FwcGxpY2F0aW9uV2lsbEVudGVyQmFja2dyb3VuZEBNZWRpYVNlc3Npb25NYW5hZ2Vy
QFdlYkNvcmVAQFFCRVhYWiwgP2FwcGxpY2F0aW9uV2lsbEVudGVyQmFja2dyb3VuZEBNZWRpYVNl
c3Npb25NYW5hZ2VyQFdlYkNvcmVAQFFFQkFYWFopCiAgICAgICAgID9sb2NhbFVzZXJTcGVjaWZp
Y1N0b3JhZ2VEaXJlY3RvcnlAV2ViQ29yZUBAWUE/QVZTdHJpbmdAV1RGQEBYWgogICAgICAgICBz
eW1ib2xXaXRoUG9pbnRlcig/bmFtZWRJdGVtQFN0YXRpY05vZGVMaXN0QFdlYkNvcmVAQFVCRVBB
Vk5vZGVAMkBBQlZBdG9taWNTdHJpbmdAV1RGQEBAWiwgP25hbWVkSXRlbUBTdGF0aWNOb2RlTGlz
dEBXZWJDb3JlQEBVRUJBUEVBVk5vZGVAMkBBRUJWQXRvbWljU3RyaW5nQFdURkBAQFopCiAgICAg
ICAgID9udW1iZXJAU3RyaW5nQFdURkBAU0E/QVYxMkBfSkBaCkluZGV4OiBTb3VyY2UvV2ViS2l0
L3dpbi9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9n
CShyZXZpc2lvbiAxNjM4OTgpCisrKyBTb3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cJKHdvcmtp
bmcgY29weSkKQEAgLTEsMyArMSw1OCBAQAorMjAxNC0wMi0xMSAgQWxleCBDaHJpc3RlbnNlbiAg
PGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgorCisgICAgICAgIE5lZWQgYSBzaG9ydCBkZXNjcmlw
dGlvbiAoT09QUyEpLgorICAgICAgICBOZWVkIHRoZSBidWcgVVJMIChPT1BTISkuCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9y
dC9FbWJlZGRlZFdpZGdldC5jcHA6CisgICAgICAgIChFbWJlZGRlZFdpZGdldDo6Y3JlYXRlV2lu
ZG93KToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJDb250ZXh0TWVudUNsaWVudC5jcHA6
CisgICAgICAgIChXZWJDb250ZXh0TWVudUNsaWVudDo6Y3VzdG9taXplTWVudSk6CisgICAgICAg
ICogV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwOgorICAgICAgICAoV2Vi
RnJhbWVMb2FkZXJDbGllbnQ6OmNyZWF0ZVBsdWdpbik6CisgICAgICAgICogV2ViQ29yZVN1cHBv
cnQvV2ViSW5zcGVjdG9yQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYkluc3BlY3RvckNsaWVudDo6
V2ViSW5zcGVjdG9yQ2xpZW50KToKKyAgICAgICAgKFdlYkluc3BlY3RvckNsaWVudDo6b3Blbklu
c3BlY3RvckZyb250ZW5kKToKKyAgICAgICAgKFdlYkluc3BlY3RvckNsaWVudDo6aGlnaGxpZ2h0
KToKKyAgICAgICAgKFdlYkluc3BlY3RvckNsaWVudDo6cmVsZWFzZUZyb250ZW5kKToKKyAgICAg
ICAgKFdlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50OjpzZXRBdHRhY2hlZFdpbmRvd0hlaWdodCk6
CisgICAgICAgIChXZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudDo6Y2xvc2VXaW5kb3dXaXRob3V0
Tm90aWZpY2F0aW9ucyk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xp
ZW50Lmg6CisgICAgICAgICogV2ViRHJvcFNvdXJjZS5jcHA6CisgICAgICAgIChnZW5lcmF0ZU1v
dXNlRXZlbnQpOgorICAgICAgICAqIFdlYkZyYW1lLmNwcDoKKyAgICAgICAgKFdlYkZyYW1lOjpj
cmVhdGVTdWJmcmFtZVdpdGhPd25lckVsZW1lbnQpOgorICAgICAgICAoV2ViRnJhbWU6OmluaXRX
aXRoV2ViVmlldyk6CisKKzIwMTQtMDItMTEgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5z
ZW5Ad2Via2l0Lm9yZz4KKworICAgICAgICBGaXhlZCBwb2ludGVyIHRydW5jYXRpb24gb24gV2lu
NjQuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjgy
MTEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdl
YkNvcmVTdXBwb3J0L0VtYmVkZGVkV2lkZ2V0LmNwcDoKKyAgICAgICAgKEVtYmVkZGVkV2lkZ2V0
OjpjcmVhdGVXaW5kb3cpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkNvbnRleHRNZW51
Q2xpZW50LmNwcDoKKyAgICAgICAgKFdlYkNvbnRleHRNZW51Q2xpZW50OjpjdXN0b21pemVNZW51
KToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHA6Cisg
ICAgICAgIChXZWJGcmFtZUxvYWRlckNsaWVudDo6Y3JlYXRlUGx1Z2luKToKKyAgICAgICAgKiBX
ZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuY3BwOgorICAgICAgICAoV2ViSW5zcGVj
dG9yQ2xpZW50OjpXZWJJbnNwZWN0b3JDbGllbnQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yQ2xp
ZW50OjpvcGVuSW5zcGVjdG9yRnJvbnRlbmQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yQ2xpZW50
OjpoaWdobGlnaHQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yQ2xpZW50OjpyZWxlYXNlRnJvbnRl
bmQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ6OnNldEF0dGFjaGVkV2lu
ZG93SGVpZ2h0KToKKyAgICAgICAgKFdlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50OjpjbG9zZVdp
bmRvd1dpdGhvdXROb3RpZmljYXRpb25zKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJJ
bnNwZWN0b3JDbGllbnQuaDoKKyAgICAgICAgKiBXZWJEcm9wU291cmNlLmNwcDoKKyAgICAgICAg
KGdlbmVyYXRlTW91c2VFdmVudCk6CisgICAgICAgICogV2ViRnJhbWUuY3BwOgorICAgICAgICAo
V2ViRnJhbWU6OmNyZWF0ZVN1YmZyYW1lV2l0aE93bmVyRWxlbWVudCk6CisgICAgICAgIChXZWJG
cmFtZTo6aW5pdFdpdGhXZWJWaWV3KToKKyAgICAgICAgUmVtb3ZlZCBhbGwgY2FzdHMgZnJvbSAm
SFdORCB0byBPTEVfSEFORExFKi4KKwogMjAxNC0wMi0xMSAgcGVhdm9Ab3V0bG9vay5jb20gIDxw
ZWF2b0BvdXRsb29rLmNvbT4KIAogICAgICAgICBbV2luQ2Fpcm9dIENvbXBpbGUgZXJyb3IgcmVs
YXRlZCB0byB0b1N0cmluZyBmdW5jdGlvbi4KSW5kZXg6IFNvdXJjZS9XZWJLaXQvd2luL1dlYkNv
cmVTdXBwb3J0L0VtYmVkZGVkV2lkZ2V0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
L3dpbi9XZWJDb3JlU3VwcG9ydC9FbWJlZGRlZFdpZGdldC5jcHAJKHJldmlzaW9uIDE2Mzg5MykK
KysrIFNvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L0VtYmVkZGVkV2lkZ2V0LmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNTYsMTYgKzU2LDE2IEBACiB7CiAgICAgQVNTRVJUKCFtX3dpbmRv
dyk7CiAKLSAgICBIV05EIHdpbmRvdzsKKyAgICBPTEVfSEFORExFIHdpbmRvdzsKIAogICAgIFNJ
WkUgcGx1Z2luU2l6ZShzaXplKTsKIAotICAgIEhSRVNVTFQgaHIgPSBtX3ZpZXctPmNyZWF0ZVZp
ZXdXaW5kb3coKE9MRV9IQU5ETEUpcGFyZW50V2luZG93LCAmcGx1Z2luU2l6ZSwgKE9MRV9IQU5E
TEUqKSZ3aW5kb3cpOworICAgIEhSRVNVTFQgaHIgPSBtX3ZpZXctPmNyZWF0ZVZpZXdXaW5kb3co
cmVpbnRlcnByZXRfY2FzdDxPTEVfSEFORExFPihwYXJlbnRXaW5kb3cpLCAmcGx1Z2luU2l6ZSwg
JndpbmRvdyk7CiAgICAgICAgIAogICAgIGlmIChGQUlMRUQoaHIpIHx8ICF3aW5kb3cpCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKIAotICAgIG1fd2luZG93ID0gd2luZG93OworICAgIG1fd2luZG93
ID0gcmVpbnRlcnByZXRfY2FzdDxIV05EPih3aW5kb3cpOwogICAgIHJldHVybiB0cnVlOwogfQog
CkluZGV4OiBTb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJDb250ZXh0TWVudUNs
aWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQv
V2ViQ29udGV4dE1lbnVDbGllbnQuY3BwCShyZXZpc2lvbiAxNjM4OTMpCisrKyBTb3VyY2UvV2Vi
S2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJDb250ZXh0TWVudUNsaWVudC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTYzLDE3ICs2MywxNyBAQAogCiAgICAgQVNTRVJUKHVpRGVsZWdhdGUpOwogCi0g
ICAgSE1FTlUgbmF0aXZlTWVudSA9IG1lbnUtPnBsYXRmb3JtQ29udGV4dE1lbnUoKTsKKyAgICBP
TEVfSEFORExFIG5hdGl2ZU1lbnUgPSAoT0xFX0hBTkRMRSltZW51LT5wbGF0Zm9ybUNvbnRleHRN
ZW51KCk7CiAgICAgQ09NUHRyPFdlYkVsZW1lbnRQcm9wZXJ0eUJhZz4gcHJvcGVydHlCYWc7CiAg
ICAgcHJvcGVydHlCYWcuYWRvcHRSZWYoV2ViRWxlbWVudFByb3BlcnR5QmFnOjpjcmVhdGVJbnN0
YW5jZShtX3dlYlZpZXctPnBhZ2UoKS0+Y29udGV4dE1lbnVDb250cm9sbGVyKCkuaGl0VGVzdFJl
c3VsdCgpKSk7CiAgICAgLy8gRklYTUU6IFdlIG5lZWQgdG8gZGVjaWRlIHdoZXRoZXIgdG8gZG8g
dGhlIGRlZmF1bHQgYmVmb3JlIGNhbGxpbmcgdGhpcyBkZWxlZ2F0ZSBtZXRob2QKLSAgICBpZiAo
RkFJTEVEKHVpRGVsZWdhdGUtPmNvbnRleHRNZW51SXRlbXNGb3JFbGVtZW50KG1fd2ViVmlldywg
cHJvcGVydHlCYWcuZ2V0KCksIChPTEVfSEFORExFKShVTE9ORzY0KW5hdGl2ZU1lbnUsIChPTEVf
SEFORExFKikmbmF0aXZlTWVudSkpKSB7Ci0gICAgICAgIDo6RGVzdHJveU1lbnUobmF0aXZlTWVu
dSk7CisgICAgaWYgKEZBSUxFRCh1aURlbGVnYXRlLT5jb250ZXh0TWVudUl0ZW1zRm9yRWxlbWVu
dChtX3dlYlZpZXcsIHByb3BlcnR5QmFnLmdldCgpLCBuYXRpdmVNZW51LCAmbmF0aXZlTWVudSkp
KSB7CisgICAgICAgIDo6RGVzdHJveU1lbnUocmVpbnRlcnByZXRfY2FzdDxITUVOVT4obmF0aXZl
TWVudSkpOwogICAgICAgICByZXR1cm4gbWVudS5yZWxlYXNlKCk7CiAgICAgfQogICAgIAotICAg
IE93blB0cjxDb250ZXh0TWVudT4gY3VzdG9taXplZE1lbnUgPSBhZG9wdFB0cihuZXcgQ29udGV4
dE1lbnUobmF0aXZlTWVudSkpOwotICAgIDo6RGVzdHJveU1lbnUobmF0aXZlTWVudSk7CisgICAg
T3duUHRyPENvbnRleHRNZW51PiBjdXN0b21pemVkTWVudSA9IGFkb3B0UHRyKG5ldyBDb250ZXh0
TWVudShyZWludGVycHJldF9jYXN0PEhNRU5VPihuYXRpdmVNZW51KSkpOworICAgIDo6RGVzdHJv
eU1lbnUocmVpbnRlcnByZXRfY2FzdDxITUVOVT4obmF0aXZlTWVudSkpOwogCiAgICAgcmV0dXJu
IGN1c3RvbWl6ZWRNZW51LnJlbGVhc2UoKTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQvd2luL1dl
YkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAJKHJl
dmlzaW9uIDE2Mzg5MykKKysrIFNvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkZy
YW1lTG9hZGVyQ2xpZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTE4NCwxMSArMTE4NCwxMSBA
QAogICAgICAgICAgICAgQ09NUHRyPElXZWJFbWJlZGRlZFZpZXc+IHZpZXc7CiAgICAgICAgICAg
ICBIUkVTVUxUIHJlc3VsdCA9IHVpUHJpdmF0ZS0+ZW1iZWRkZWRWaWV3V2l0aEFyZ3VtZW50cyh3
ZWJWaWV3LCBtX3dlYkZyYW1lLCBhcmd1bWVudHNCYWcuZ2V0KCksICZ2aWV3KTsKICAgICAgICAg
ICAgIGlmIChTVUNDRUVERUQocmVzdWx0KSkgewotICAgICAgICAgICAgICAgIEhXTkQgcGFyZW50
V2luZG93OwotICAgICAgICAgICAgICAgIEhSRVNVTFQgaHIgPSB3ZWJWaWV3LT52aWV3V2luZG93
KChPTEVfSEFORExFKikmcGFyZW50V2luZG93KTsKKyAgICAgICAgICAgICAgICBPTEVfSEFORExF
IHBhcmVudFdpbmRvdzsKKyAgICAgICAgICAgICAgICBIUkVTVUxUIGhyID0gd2ViVmlldy0+dmll
d1dpbmRvdygmcGFyZW50V2luZG93KTsKICAgICAgICAgICAgICAgICBBU1NFUlQoU1VDQ0VFREVE
KGhyKSk7CiAKLSAgICAgICAgICAgICAgICByZXR1cm4gRW1iZWRkZWRXaWRnZXQ6OmNyZWF0ZSh2
aWV3LmdldCgpLCBlbGVtZW50LCBwYXJlbnRXaW5kb3csIHBsdWdpblNpemUpOworICAgICAgICAg
ICAgICAgIHJldHVybiBFbWJlZGRlZFdpZGdldDo6Y3JlYXRlKHZpZXcuZ2V0KCksIGVsZW1lbnQs
IHJlaW50ZXJwcmV0X2Nhc3Q8SFdORD4ocGFyZW50V2luZG93KSwgcGx1Z2luU2l6ZSk7CiAgICAg
ICAgICAgICB9CiAgICAgICAgIH0KICAgICB9CkluZGV4OiBTb3VyY2UvV2ViS2l0L3dpbi9XZWJD
b3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5jcHAJKHJldmlzaW9u
IDE2Mzg5MykKKysrIFNvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3Rv
ckNsaWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTcxLDcgKzcxLDcgQEAKICAgICAsIG1fZnJv
bnRlbmRDbGllbnQoMCkKIHsKICAgICBBU1NFUlQobV9pbnNwZWN0ZWRXZWJWaWV3KTsKLSAgICBt
X2luc3BlY3RlZFdlYlZpZXctPnZpZXdXaW5kb3coKE9MRV9IQU5ETEUqKSZtX2luc3BlY3RlZFdl
YlZpZXdId25kKTsKKyAgICBtX2luc3BlY3RlZFdlYlZpZXctPnZpZXdXaW5kb3coJm1faW5zcGVj
dGVkV2ViVmlld0hhbmRsZSk7CiB9CiAKIFdlYkluc3BlY3RvckNsaWVudDo6fldlYkluc3BlY3Rv
ckNsaWVudCgpCkBAIC0xNzEsMTAgKzE3MSwxMCBAQAogICAgICAgICByZXR1cm4gMDsKIAogICAg
IG1fZnJvbnRlbmRQYWdlID0gY29yZShmcm9udGVuZFdlYlZpZXcuZ2V0KCkpOwotICAgIGF1dG8g
ZnJvbnRlbmRDbGllbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYkluc3BlY3RvckZyb250ZW5kQ2xp
ZW50PihtX2luc3BlY3RlZFdlYlZpZXcsIG1faW5zcGVjdGVkV2ViVmlld0h3bmQsIGZyb250ZW5k
SHduZCwgZnJvbnRlbmRXZWJWaWV3LCBmcm9udGVuZFdlYlZpZXdId25kLCB0aGlzLCBjcmVhdGVG
cm9udGVuZFNldHRpbmdzKCkpOworICAgIGF1dG8gZnJvbnRlbmRDbGllbnQgPSBzdGQ6Om1ha2Vf
dW5pcXVlPFdlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50PihtX2luc3BlY3RlZFdlYlZpZXcsIHJl
aW50ZXJwcmV0X2Nhc3Q8SFdORD4obV9pbnNwZWN0ZWRXZWJWaWV3SGFuZGxlKSwgZnJvbnRlbmRI
d25kLCBmcm9udGVuZFdlYlZpZXcsIGZyb250ZW5kV2ViVmlld0h3bmQsIHRoaXMsIGNyZWF0ZUZy
b250ZW5kU2V0dGluZ3MoKSk7CiAgICAgbV9mcm9udGVuZENsaWVudCA9IGZyb250ZW5kQ2xpZW50
LmdldCgpOwogICAgIG1fZnJvbnRlbmRQYWdlLT5pbnNwZWN0b3JDb250cm9sbGVyKCkuc2V0SW5z
cGVjdG9yRnJvbnRlbmRDbGllbnQoc3RkOjptb3ZlKGZyb250ZW5kQ2xpZW50KSk7Ci0gICAgbV9m
cm9udGVuZEh3bmQgPSBmcm9udGVuZEh3bmQ7CisgICAgbV9mcm9udGVuZEhhbmRsZSA9IHJlaW50
ZXJwcmV0X2Nhc3Q8T0xFX0hBTkRMRT4oZnJvbnRlbmRId25kKTsKICAgICByZXR1cm4gdGhpczsK
IH0KIApAQCAtMjAxLDggKzIwMSw4IEBACiAgICAgZWxzZQogICAgICAgICBtX2hpZ2hsaWdodC0+
c2V0U2hvd3NXaGlsZVdlYlZpZXdJc1Zpc2libGUodHJ1ZSk7CiAKLSAgICBpZiAoY3JlYXRpbmdI
aWdobGlnaHQgJiYgSXNXaW5kb3dWaXNpYmxlKG1fZnJvbnRlbmRId25kKSkKLSAgICAgICAgbV9o
aWdobGlnaHQtPnBsYWNlQmVoaW5kV2luZG93KG1fZnJvbnRlbmRId25kKTsKKyAgICBpZiAoY3Jl
YXRpbmdIaWdobGlnaHQgJiYgSXNXaW5kb3dWaXNpYmxlKChIV05EKW1fZnJvbnRlbmRIYW5kbGUp
KQorICAgICAgICBtX2hpZ2hsaWdodC0+cGxhY2VCZWhpbmRXaW5kb3cocmVpbnRlcnByZXRfY2Fz
dDxIV05EPihtX2Zyb250ZW5kSGFuZGxlKSk7CiB9CiAKIHZvaWQgV2ViSW5zcGVjdG9yQ2xpZW50
OjpoaWRlSGlnaGxpZ2h0KCkKQEAgLTIyMSw3ICsyMjEsNyBAQAogewogICAgIG1fZnJvbnRlbmRD
bGllbnQgPSAwOwogICAgIG1fZnJvbnRlbmRQYWdlID0gMDsKLSAgICBtX2Zyb250ZW5kSHduZCA9
IDA7CisgICAgbV9mcm9udGVuZEhhbmRsZSA9IDA7CiB9CiAKIFdlYkluc3BlY3RvckZyb250ZW5k
Q2xpZW50OjpXZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudChXZWJWaWV3KiBpbnNwZWN0ZWRXZWJW
aWV3LCBIV05EIGluc3BlY3RlZFdlYlZpZXdId25kLCBIV05EIGZyb250ZW5kSHduZCwgY29uc3Qg
Q09NUHRyPFdlYlZpZXc+JiBmcm9udGVuZFdlYlZpZXcsIEhXTkQgZnJvbnRlbmRXZWJWaWV3SHdu
ZCwgV2ViSW5zcGVjdG9yQ2xpZW50KiBpbnNwZWN0b3JDbGllbnQsIFBhc3NPd25QdHI8U2V0dGlu
Z3M+IHNldHRpbmdzKQpAQCAtMzEzLDEyICszMTMsMTIgQEAKICAgICBpZiAoIW1fYXR0YWNoZWQp
CiAgICAgICAgIHJldHVybjsKIAotICAgIEhXTkQgaG9zdFdpbmRvdzsKLSAgICBpZiAoIVNVQ0NF
RURFRChtX2luc3BlY3RlZFdlYlZpZXctPmhvc3RXaW5kb3coKE9MRV9IQU5ETEUqKSZob3N0V2lu
ZG93KSkpCisgICAgT0xFX0hBTkRMRSBob3N0V2luZG93OworICAgIGlmICghU1VDQ0VFREVEKG1f
aW5zcGVjdGVkV2ViVmlldy0+aG9zdFdpbmRvdygmaG9zdFdpbmRvdykpKQogICAgICAgICByZXR1
cm47CiAKICAgICBSRUNUIGhvc3RXaW5kb3dSZWN0OwotICAgIEdldENsaWVudFJlY3QoaG9zdFdp
bmRvdywgJmhvc3RXaW5kb3dSZWN0KTsKKyAgICBHZXRDbGllbnRSZWN0KHJlaW50ZXJwcmV0X2Nh
c3Q8SFdORD4oaG9zdFdpbmRvdyksICZob3N0V2luZG93UmVjdCk7CiAKICAgICBSRUNUIGluc3Bl
Y3RlZFJlY3Q7CiAgICAgR2V0Q2xpZW50UmVjdChtX2luc3BlY3RlZFdlYlZpZXdId25kLCAmaW5z
cGVjdGVkUmVjdCk7CkBAIC0zNzQsOSArMzc0LDkgQEAKICAgICBtX2Zyb250ZW5kV2ViVmlldy0+
c2V0SG9zdFdpbmRvdyhyZWludGVycHJldF9jYXN0PE9MRV9IQU5ETEU+KG1fZnJvbnRlbmRId25k
KSk7CiAKICAgICAvLyBNYWtlIHN1cmUgZXZlcnl0aGluZyBoYXMgdGhlIHJpZ2h0IHNpemUvcG9z
aXRpb24uCi0gICAgSFdORCBob3N0V2luZG93OwotICAgIGlmIChTVUNDRUVERUQobV9pbnNwZWN0
ZWRXZWJWaWV3LT5ob3N0V2luZG93KChPTEVfSEFORExFKikmaG9zdFdpbmRvdykpKQotICAgICAg
ICBTZW5kTWVzc2FnZShob3N0V2luZG93LCBXTV9TSVpFLCAwLCAwKTsKKyAgICBPTEVfSEFORExF
IGhvc3RXaW5kb3c7CisgICAgaWYgKFNVQ0NFRURFRChtX2luc3BlY3RlZFdlYlZpZXctPmhvc3RX
aW5kb3coJmhvc3RXaW5kb3cpKSkKKyAgICAgICAgU2VuZE1lc3NhZ2UocmVpbnRlcnByZXRfY2Fz
dDxIV05EPihob3N0V2luZG93KSwgV01fU0laRSwgMCwgMCk7CiB9CiAKIHZvaWQgV2ViSW5zcGVj
dG9yRnJvbnRlbmRDbGllbnQ6OnNob3dXaW5kb3dXaXRob3V0Tm90aWZpY2F0aW9ucygpCkluZGV4
OiBTb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0
b3JDbGllbnQuaAkocmV2aXNpb24gMTYzODkzKQorKysgU291cmNlL1dlYktpdC93aW4vV2ViQ29y
ZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTg2LDggKzg2
LDggQEAKICAgICBXZWJWaWV3KiBtX2luc3BlY3RlZFdlYlZpZXc7CiAgICAgV2ViQ29yZTo6UGFn
ZSogbV9mcm9udGVuZFBhZ2U7CiAgICAgV2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQqIG1fZnJv
bnRlbmRDbGllbnQ7Ci0gICAgSFdORCBtX2luc3BlY3RlZFdlYlZpZXdId25kOwotICAgIEhXTkQg
bV9mcm9udGVuZEh3bmQ7CisgICAgT0xFX0hBTkRMRSBtX2luc3BlY3RlZFdlYlZpZXdIYW5kbGU7
CisgICAgT0xFX0hBTkRMRSBtX2Zyb250ZW5kSGFuZGxlOwogCiAgICAgT3duUHRyPFdlYk5vZGVI
aWdobGlnaHQ+IG1faGlnaGxpZ2h0OwogfTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvd2luL1dlYkRy
b3BTb3VyY2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvd2luL1dlYkRyb3BTb3Vy
Y2UuY3BwCShyZXZpc2lvbiAxNjM4OTMpCisrKyBTb3VyY2UvV2ViS2l0L3dpbi9XZWJEcm9wU291
cmNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTgsOSArOTgsOSBAQAogICAgIFBPSU5UTCBwdDsK
ICAgICA6OkdldEN1cnNvclBvcygoTFBQT0lOVCkmcHQpOwogICAgIFBPSU5UTCBsb2NhbHB0ID0g
cHQ7Ci0gICAgSFdORCB2aWV3V2luZG93OwotICAgIGlmIChTVUNDRUVERUQod2ViVmlldy0+dmll
d1dpbmRvdygoT0xFX0hBTkRMRSopJnZpZXdXaW5kb3cpKSkKLSAgICAgICAgOjpTY3JlZW5Ub0Ns
aWVudCh2aWV3V2luZG93LCAoTFBQT0lOVCkmbG9jYWxwdCk7CisgICAgT0xFX0hBTkRMRSB2aWV3
V2luZG93OworICAgIGlmIChTVUNDRUVERUQod2ViVmlldy0+dmlld1dpbmRvdygmdmlld1dpbmRv
dykpKQorICAgICAgICA6OlNjcmVlblRvQ2xpZW50KHJlaW50ZXJwcmV0X2Nhc3Q8SFdORD4odmll
d1dpbmRvdyksIHJlaW50ZXJwcmV0X2Nhc3Q8TFBQT0lOVD4oJmxvY2FscHQpKTsKICAgICByZXR1
cm4gUGxhdGZvcm1Nb3VzZUV2ZW50KEludFBvaW50KGxvY2FscHQueCwgbG9jYWxwdC55KSwgSW50
UG9pbnQocHQueCwgcHQueSksCiAgICAgICAgIGlzRHJhZyA/IExlZnRCdXR0b24gOiBOb0J1dHRv
biwgUGxhdGZvcm1FdmVudDo6TW91c2VNb3ZlZCwgMCwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFs
c2UsIGN1cnJlbnRUaW1lKCkpOwogfQpJbmRleDogU291cmNlL1dlYktpdC93aW4vV2ViRnJhbWUu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvd2luL1dlYkZyYW1lLmNwcAkocmV2aXNp
b24gMTYzODkzKQorKysgU291cmNlL1dlYktpdC93aW4vV2ViRnJhbWUuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0xMDc2LDggKzEwNzYsOCBAQAogICAgIHdlYlZpZXctPlF1ZXJ5SW50ZXJmYWNlKCZk
LT53ZWJWaWV3KTsKICAgICBkLT53ZWJWaWV3LT5SZWxlYXNlKCk7IC8vIGRvbid0IGhvbGQgdGhl
IGV4dHJhIHJlZgogCi0gICAgSFdORCB2aWV3V2luZG93OwotICAgIGQtPndlYlZpZXctPnZpZXdX
aW5kb3coKE9MRV9IQU5ETEUqKSZ2aWV3V2luZG93KTsKKyAgICBPTEVfSEFORExFIHZpZXdXaW5k
b3c7CisgICAgZC0+d2ViVmlldy0+dmlld1dpbmRvdygmdmlld1dpbmRvdyk7CiAKICAgICB0aGlz
LT5BZGRSZWYoKTsgLy8gV2UgcmVsZWFzZSB0aGlzIHJlZiBpbiBmcmFtZUxvYWRlckRlc3Ryb3ll
ZCgpCiAgICAgUmVmUHRyPEZyYW1lPiBmcmFtZSA9IEZyYW1lOjpjcmVhdGUocGFnZSwgb3duZXJF
bGVtZW50LCBuZXcgV2ViRnJhbWVMb2FkZXJDbGllbnQodGhpcykpOwpAQCAtMTA5MCw4ICsxMDkw
LDggQEAKICAgICB3ZWJWaWV3LT5RdWVyeUludGVyZmFjZSgmZC0+d2ViVmlldyk7CiAgICAgZC0+
d2ViVmlldy0+UmVsZWFzZSgpOyAvLyBkb24ndCBob2xkIHRoZSBleHRyYSByZWYKIAotICAgIEhX
TkQgdmlld1dpbmRvdzsKLSAgICBkLT53ZWJWaWV3LT52aWV3V2luZG93KChPTEVfSEFORExFKikm
dmlld1dpbmRvdyk7CisgICAgT0xFX0hBTkRMRSB2aWV3V2luZG93OworICAgIGQtPndlYlZpZXct
PnZpZXdXaW5kb3coJnZpZXdXaW5kb3cpOwogCiAgICAgdGhpcy0+QWRkUmVmKCk7IC8vIFdlIHJl
bGVhc2UgdGhpcyByZWYgaW4gZnJhbWVMb2FkZXJEZXN0cm95ZWQoKQogICAgIGQtPmZyYW1lID0g
JnBhZ2UtPm1haW5GcmFtZSgpOwpJbmRleDogVG9vbHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFRvb2xzL0NoYW5nZUxvZwkocmV2aXNpb24gMTYzNDA2KQorKysgVG9vbHMvQ2hhbmdlTG9nCSh3
b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTQtMDItMDQgIEFsZXggQ2hyaXN0ZW5z
ZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KKworICAgICAgICBGaXhlZCBwb2ludGVyIHRy
dW5jYXRpb24gb24gV2luNjQuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xMjgyMTEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICAqIER1bXBSZW5kZXJUcmVlL3dpbi9BY2Nlc3NpYmlsaXR5Q29udHJvbGxlcldp
bi5jcHA6CisgICAgICAgIChBY2Nlc3NpYmlsaXR5Q29udHJvbGxlcjo6cm9vdEVsZW1lbnQpOgor
ICAgICAgICAqIER1bXBSZW5kZXJUcmVlL3dpbi9UZXN0UnVubmVyV2luLmNwcDoKKyAgICAgICAg
KFRlc3RSdW5uZXI6OnNldFdpbmRvd0lzS2V5KToKKyAgICAgICAgUmVtb3ZlZCBhbGwgY2FzdHMg
ZnJvbSAmSFdORCB0byBPTEVfSEFORExFKi4KKwogMjAxNC0wMi0wNCAgQ2FybG9zIEdhcm5hY2hv
ICA8Y2FybG9zZ0Bnbm9tZS5vcmc+CiAKICAgICAgICAgW0F1dG9tYWtlXSBBZGQgbWlzc2luZyAk
KGZlYXR1cmVfZGVmaW5lcykgd2hlbiBnZW5lcmF0aW5nIEluamVjdGVkQnVuZGxlIGJpbmRpbmdz
CkluZGV4OiBUb29scy9EdW1wUmVuZGVyVHJlZS93aW4vQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXJX
aW4uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9BY2Nlc3NpYmls
aXR5Q29udHJvbGxlcldpbi5jcHAJKHJldmlzaW9uIDE2MzQwNCkKKysrIFRvb2xzL0R1bXBSZW5k
ZXJUcmVlL3dpbi9BY2Nlc3NpYmlsaXR5Q29udHJvbGxlcldpbi5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTE2NCwxNCArMTY0LDE0IEBAIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQgQWNjZXNzaWJpbGl0
eUNvbnQKICAgICBpZiAoIXZpZXdQcml2YXRlKQogICAgICAgICByZXR1cm4gMDsKIAotICAgIEhX
TkQgd2ViVmlld1dpbmRvdzsKLSAgICBpZiAoRkFJTEVEKHZpZXdQcml2YXRlLT52aWV3V2luZG93
KChPTEVfSEFORExFKikmd2ViVmlld1dpbmRvdykpKQorICAgIE9MRV9IQU5ETEUgd2ViVmlld1dp
bmRvdzsKKyAgICBpZiAoRkFJTEVEKHZpZXdQcml2YXRlLT52aWV3V2luZG93KCZ3ZWJWaWV3V2lu
ZG93KSkpCiAgICAgICAgIHJldHVybiAwOwogCiAgICAgLy8gR2V0IHRoZSByb290IGFjY2Vzc2li
bGUgb2JqZWN0IGJ5IHF1ZXJ5aW5nIGZvciB0aGUgYWNjZXNzaWJsZSBvYmplY3QgZm9yIHRoZQog
ICAgIC8vIFdlYlZpZXcncyB3aW5kb3cuCiAgICAgQ09NUHRyPElBY2Nlc3NpYmxlPiByb290QWNj
ZXNzaWJsZTsKLSAgICBpZiAoRkFJTEVEKEFjY2Vzc2libGVPYmplY3RGcm9tV2luZG93KHdlYlZp
ZXdXaW5kb3csIHN0YXRpY19jYXN0PERXT1JEPihPQkpJRF9DTElFTlQpLCBfX3V1aWRvZihJQWNj
ZXNzaWJsZSksIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCoqPigmcm9vdEFjY2Vzc2libGUpKSkpCisg
ICAgaWYgKEZBSUxFRChBY2Nlc3NpYmxlT2JqZWN0RnJvbVdpbmRvdyhyZWludGVycHJldF9jYXN0
PEhXTkQ+KHdlYlZpZXdXaW5kb3cpLCBzdGF0aWNfY2FzdDxEV09SRD4oT0JKSURfQ0xJRU5UKSwg
X191dWlkb2YoSUFjY2Vzc2libGUpLCByZWludGVycHJldF9jYXN0PHZvaWQqKj4oJnJvb3RBY2Nl
c3NpYmxlKSkpKQogICAgICAgICByZXR1cm4gMDsKIAogICAgIHJldHVybiByb290QWNjZXNzaWJs
ZTsKSW5kZXg6IFRvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9UZXN0UnVubmVyV2luLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBUb29scy9EdW1wUmVuZGVyVHJlZS93aW4vVGVzdFJ1bm5lcldpbi5jcHAJKHJl
dmlzaW9uIDE2MzQwNCkKKysrIFRvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9UZXN0UnVubmVyV2lu
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzEwLDExICs3MTAsMTEgQEAgdm9pZCBUZXN0UnVubmVy
OjpzZXRXaW5kb3dJc0tleShib29sIGZsYQogICAgIGlmIChGQUlMRUQod2ViVmlldy0+UXVlcnlJ
bnRlcmZhY2UoJnZpZXdQcml2YXRlKSkpCiAgICAgICAgIHJldHVybjsKIAotICAgIEhXTkQgd2Vi
Vmlld1dpbmRvdzsKLSAgICBpZiAoRkFJTEVEKHZpZXdQcml2YXRlLT52aWV3V2luZG93KChPTEVf
SEFORExFKikmd2ViVmlld1dpbmRvdykpKQorICAgIE9MRV9IQU5ETEUgd2ViVmlld1dpbmRvdzsK
KyAgICBpZiAoRkFJTEVEKHZpZXdQcml2YXRlLT52aWV3V2luZG93KCZ3ZWJWaWV3V2luZG93KSkp
CiAgICAgICAgIHJldHVybjsKIAotICAgIDo6U2VuZE1lc3NhZ2Uod2ViVmlld1dpbmRvdywgZmxh
ZyA/IFdNX1NFVEZPQ1VTIDogV01fS0lMTEZPQ1VTLCAoV1BBUkFNKTo6R2V0RGVza3RvcFdpbmRv
dygpLCAwKTsKKyAgICA6OlNlbmRNZXNzYWdlKHJlaW50ZXJwcmV0X2Nhc3Q8SFdORD4od2ViVmll
d1dpbmRvdyksIGZsYWcgPyBXTV9TRVRGT0NVUyA6IFdNX0tJTExGT0NVUywgKFdQQVJBTSk6Okdl
dERlc2t0b3BXaW5kb3coKSwgMCk7CiB9CiAKIHN0YXRpYyBjb25zdCBDRlRpbWVJbnRlcnZhbCB3
YWl0VG9EdW1wV2F0Y2hkb2dJbnRlcnZhbCA9IDMwLjA7
</data>
<flag name="review"
          id="247958"
          type_id="1"
          status="+"
          setter="bfulgham"
    />
          </attachment>
      

    </bug>

</bugzilla>