<?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>20095</bug_id>
          
          <creation_ts>2008-07-18 09:16:58 -0700</creation_ts>
          <short_desc>[Qt] Windowless plugin does not work on Qt port for Windows</short_desc>
          <delta_ts>2014-02-03 03:12:53 -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>Plug-ins</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>Windows XP</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>INVALID</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>Qt, QtTriaged</keywords>
          <priority>P2</priority>
          <bug_severity>Major</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>35962</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Chris Kurecka">ckurecka</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>girish</cc>
    
    <cc>jturcotte</cc>
    
    <cc>tonikitoo</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>86339</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Kurecka">ckurecka</who>
    <bug_when>2008-07-18 09:16:58 -0700</bug_when>
    <thetext>It seems the changes for windowed mode to work in QtWebKit/Win broke nonwindowed mode in svn trunk.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>86352</commentid>
    <comment_count>1</comment_count>
    <who name="Chris Kurecka">ckurecka</who>
    <bug_when>2008-07-18 12:04:48 -0700</bug_when>
    <thetext>We&apos;ve been working independently on getting both working, and though I&apos;m sure some of this might not be ideal for a final product, I&apos;m attaching the code we wrote to make both modes work.  The gist of it is that it uses WHND instead of PlatformWidget in most places, and some other changes happened accordingly.

</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>86355</commentid>
    <comment_count>2</comment_count>
      <attachid>22369</attachid>
    <who name="Chris Kurecka">ckurecka</who>
    <bug_when>2008-07-18 12:06:49 -0700</bug_when>
    <thetext>Created attachment 22369
Zattoo&apos;s modified PluginViewWin.cpp file</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>86356</commentid>
    <comment_count>3</comment_count>
      <attachid>22370</attachid>
    <who name="Chris Kurecka">ckurecka</who>
    <bug_when>2008-07-18 12:07:08 -0700</bug_when>
    <thetext>Created attachment 22370
Zattoo&apos;s modified PluginView.h file</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>156769</commentid>
    <comment_count>4</comment_count>
    <who name="Antonio Gomes">tonikitoo</who>
    <bug_when>2009-10-21 20:38:43 -0700</bug_when>
    <thetext>girish no one better than girish to move forward on this i believe.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>156772</commentid>
    <comment_count>5</comment_count>
    <who name="Girish Ramakrishnan">girish</who>
    <bug_when>2009-10-21 20:41:56 -0700</bug_when>
    <thetext>(In reply to comment #0)
&gt; It seems the changes for windowed mode to work in QtWebKit/Win broke
&gt; nonwindowed mode in svn trunk.

What are these changes?

Is this a 4.6 blocker? I will prioritize accordingly.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>161117</commentid>
    <comment_count>6</comment_count>
    <who name="Girish Ramakrishnan">girish</who>
    <bug_when>2009-11-06 03:43:10 -0800</bug_when>
    <thetext>I won&apos;t be able to work on this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>267134</commentid>
    <comment_count>7</comment_count>
    <who name="Girish Ramakrishnan">girish</who>
    <bug_when>2010-08-19 22:26:55 -0700</bug_when>
    <thetext>This should be fixed by now. Can we close this?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>975009</commentid>
    <comment_count>8</comment_count>
    <who name="Jocelyn Turcotte">jturcotte</who>
    <bug_when>2014-02-03 03:12:53 -0800</bug_when>
    <thetext>=== Bulk closing of Qt bugs ===

If you believe that this bug report is still relevant for a non-Qt port of webkit.org, please re-open it and remove [Qt] from the summary.

If you believe that this is still an important QtWebKit bug, please fill a new report at https://bugreports.qt-project.org and add a link to this issue. See http://qt-project.org/wiki/ReportingBugsInQt for additional guidelines.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>22369</attachid>
            <date>2008-07-18 12:06:49 -0700</date>
            <delta_ts>2008-07-18 12:06:49 -0700</delta_ts>
            <desc>Zattoo&apos;s modified PluginViewWin.cpp file</desc>
            <filename>PluginViewWin.cpp</filename>
            <type>text/x-c++src</type>
            <size>26793</size>
            <attacher name="Chris Kurecka">ckurecka</attacher>
            
              <data encoding="base64">LyoKICogQ29weXJpZ2h0IChDKSAyMDA2LCAyMDA3LCAyMDA4IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KICogQ29weXJpZ2h0IChDKSAyMDA4IENvbGxhYm9yYSBMdGQuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCiAqIENvcHlyaWdodCAoQykgMjAwOCBaYXR0b28gSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLiAKICoKICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwogKiBhcmUgbWV0OgogKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAogKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCiAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CiAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KICoKICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01Q
VVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQogKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQogKiBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVS
LCBJTkMuIE9SCiAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAogKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCiAqIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgogKiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZCiAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAogKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCiAqLwoKI2lu
Y2x1ZGUgImNvbmZpZy5oIgoKI2RlZmluZSBET19UUkFDRQojaWZkZWYgRE9fVFJBQ0UKI2luY2x1
ZGUgPGNzdGRpbz4KI2RlZmluZSBUUkFDRSBxRGVidWcKI2VuZGlmCgojaWYgUExBVEZPUk0oUVQp
CiNpbmNsdWRlIDx3aW5kb3dzLmg+CgojaW5jbHVkZSA8UUFwcGxpY2F0aW9uLmg+CiNpbmNsdWRl
IDxRV2lkZ2V0Lmg+CgojaW5jbHVkZSA8V2lkZ2V0Lmg+CgpleHRlcm4gUV9DT1JFX0VYUE9SVCBI
SU5TVEFOQ0UgcVdpbkFwcEluc3QoKTsKCnZvaWQgU2V0V2luZG93UmduKFBsYXRmb3JtV2lkZ2V0
IHdpZGdldCwgSFJHTiByZ24sIEJPT0wgcmVkcmF3KQp7CiAgICA6OlNldFdpbmRvd1Jnbih3aWRn
ZXQtPndpbklkKCksIHJnbiwgcmVkcmF3KTsKfQoKdm9pZCBNb3ZlV2luZG93KFBsYXRmb3JtV2lk
Z2V0IHdpZGdldCwgaW50IG5YLCBpbnQgblksIGludCBuV2lkdGgsIGludCBuSGVpZ2h0LCBCT09M
IGJSZXBhaW50KQp7CiAgICA6Ok1vdmVXaW5kb3cod2lkZ2V0LT53aW5JZCgpLCBuWCwgblksIG5X
aWR0aCwgbkhlaWdodCwgYlJlcGFpbnQpOwp9Cgp2b2lkIFNldEZvY3VzKFBsYXRmb3JtV2lkZ2V0
IHdpZGdldCkKewogICAgOjpTZXRGb2N1cyh3aWRnZXQtPndpbklkKCkpOwp9Cgp2b2lkIFNob3dX
aW5kb3coUGxhdGZvcm1XaWRnZXQgd2lkZ2V0LCBpbnQgbkNtZFNob3cpCnsKICAgIDo6U2hvd1dp
bmRvdyh3aWRnZXQtPndpbklkKCksIG5DbWRTaG93KTsKfQoKdm9pZCBVcGRhdGVXaW5kb3coUGxh
dGZvcm1XaWRnZXQgd2lkZ2V0KQp7CiAgICA6OlVwZGF0ZVdpbmRvdyh3aWRnZXQtPndpbklkKCkp
Owp9Cgp2b2lkIERlc3Ryb3lXaW5kb3coUGxhdGZvcm1XaWRnZXQgd2lkZ2V0KQp7CiAgICA6OkRl
c3Ryb3lXaW5kb3cod2lkZ2V0LT53aW5JZCgpKTsKfQoKQk9PTCBTZXRQcm9wKFBsYXRmb3JtV2lk
Z2V0IHdpZGdldCwgTFBDVFNUUiBscFN0cmluZywgSEFORExFIGhEYXRhKQp7CiAgICByZXR1cm4g
OjpTZXRQcm9wKHdpZGdldC0+d2luSWQoKSwgbHBTdHJpbmcsIGhEYXRhKTsKfQoKTE9OR19QVFIg
R2V0V2luZG93TG9uZ1B0cihQbGF0Zm9ybVdpZGdldCB3aWRnZXQsIGludCBuSW5kZXgpCnsKICAg
IHJldHVybiA6OkdldFdpbmRvd0xvbmdQdHIod2lkZ2V0LT53aW5JZCgpLCBuSW5kZXgpOwp9CgpM
T05HX1BUUiBTZXRXaW5kb3dMb25nUHRyKFBsYXRmb3JtV2lkZ2V0IHdpZGdldCwgaW50IG5JbmRl
eCwgTE9OR19QVFIgZHdOZXdMb25nKQp7CiAgICByZXR1cm4gOjpTZXRXaW5kb3dMb25nUHRyKHdp
ZGdldC0+d2luSWQoKSwgbkluZGV4LCBkd05ld0xvbmcpOwp9CgpMT05HX1BUUiBTZXRXaW5kb3dM
b25nUHRyQShQbGF0Zm9ybVdpZGdldCB3aWRnZXQsIGludCBuSW5kZXgsIExPTkdfUFRSIGR3TmV3
TG9uZykKewogICAgcmV0dXJuIDo6U2V0V2luZG93TG9uZ1B0ckEod2lkZ2V0LT53aW5JZCgpLCBu
SW5kZXgsIGR3TmV3TG9uZyk7Cn0KCkJPT0wgSW52YWxpZGF0ZVJlY3QoUGxhdGZvcm1XaWRnZXQg
d2lkZ2V0LCBDT05TVCBSRUNUKiBscFJlY3QsIEJPT0wgYkVyYXNlKQp7CiAgICByZXR1cm4gOjpJ
bnZhbGlkYXRlUmVjdCh3aWRnZXQtPndpbklkKCksIGxwUmVjdCwgYkVyYXNlKTsKfQoKSFdORCBD
cmVhdGVXaW5kb3dFeChEV09SRCBkd0V4U3R5bGUsIExQQ1RTVFIgbHBDbGFzc05hbWUsIExQQ1RT
VFIgbHBXaW5kb3dOYW1lLAoJCURXT1JEIGR3U3R5bGUsIGludCB4LCBpbnQgeSwgaW50IG5XaWR0
aCwgaW50IG5IZWlnaHQsCgkJUGxhdGZvcm1XaWRnZXQgcGFyZW50V2lkZ2V0LCBITUVOVSBoTWVu
dSwgSElOU1RBTkNFIGhJbnN0YW5jZSwgTFBWT0lEIGxwUGFyYW0pCnsKICAgIHJldHVybiA6OkNy
ZWF0ZVdpbmRvd0V4KGR3RXhTdHlsZSwgbHBDbGFzc05hbWUsIGxwV2luZG93TmFtZSwgZHdTdHls
ZSwgeCwgeSwKICAgICAgICAgICAgbldpZHRoLCBuSGVpZ2h0LCBwYXJlbnRXaWRnZXQtPndpbklk
KCksIGhNZW51LCBoSW5zdGFuY2UsIGxwUGFyYW0pOwp9CgojZW5kaWYKCiNpbmNsdWRlICJQbHVn
aW5WaWV3LmgiCgojaW5jbHVkZSAiRG9jdW1lbnQuaCIKI2luY2x1ZGUgIkRvY3VtZW50TG9hZGVy
LmgiCiNpbmNsdWRlICJFbGVtZW50LmgiCiNpbmNsdWRlICJFdmVudE5hbWVzLmgiCiNpbmNsdWRl
ICJGcmFtZUxvYWRlci5oIgojaW5jbHVkZSAiRnJhbWVMb2FkUmVxdWVzdC5oIgojaW5jbHVkZSAi
RnJhbWVUcmVlLmgiCiNpbmNsdWRlICJGcmFtZS5oIgojaW5jbHVkZSAiRnJhbWVWaWV3LmgiCiNp
bmNsdWRlICJHcmFwaGljc0NvbnRleHQuaCIKI2luY2x1ZGUgIkltYWdlLmgiCiNpbmNsdWRlICJI
VE1MTmFtZXMuaCIKI2luY2x1ZGUgIkhUTUxQbHVnSW5FbGVtZW50LmgiCiNpbmNsdWRlICJKU0RP
TVdpbmRvdy5oIgojaW5jbHVkZSAiS2V5Ym9hcmRFdmVudC5oIgojaW5jbHVkZSAiTUlNRVR5cGVS
ZWdpc3RyeS5oIgojaW5jbHVkZSAiTW91c2VFdmVudC5oIgojaW5jbHVkZSAiTm90SW1wbGVtZW50
ZWQuaCIKI2luY2x1ZGUgIlBhZ2UuaCIKI2luY2x1ZGUgIkZvY3VzQ29udHJvbGxlci5oIgojaW5j
bHVkZSAiUGxhdGZvcm1Nb3VzZUV2ZW50LmgiCiNpbmNsdWRlICJQbHVnaW5NZXNzYWdlVGhyb3R0
bGVyV2luLmgiCiNpbmNsdWRlICJQbHVnaW5QYWNrYWdlLmgiCiNpbmNsdWRlICJKU0RPTUJpbmRp
bmcuaCIKI2luY2x1ZGUgIlNjcmlwdENvbnRyb2xsZXIuaCIKI2luY2x1ZGUgIlBsdWdpbkRhdGFi
YXNlLmgiCiNpbmNsdWRlICJQbHVnaW5EZWJ1Zy5oIgojaW5jbHVkZSAiUGx1Z2luUGFja2FnZS5o
IgojaW5jbHVkZSAiY19pbnN0YW5jZS5oIgojaW5jbHVkZSAibnBydW50aW1lX2ltcGwuaCIKI2lu
Y2x1ZGUgInJ1bnRpbWVfcm9vdC5oIgojaW5jbHVkZSAiU2V0dGluZ3MuaCIKI2luY2x1ZGUgInJ1
bnRpbWUuaCIKI2luY2x1ZGUgPGtqcy9KU0xvY2suaD4KI2luY2x1ZGUgPGtqcy9KU1ZhbHVlLmg+
CiNpbmNsdWRlIDx3dGYvQVNDSUlDVHlwZS5oPgoKdXNpbmcgS0pTOjpFeGVjU3RhdGU7CnVzaW5n
IEtKUzo6SlNMb2NrOwp1c2luZyBLSlM6OkpTT2JqZWN0Owp1c2luZyBLSlM6OkpTVmFsdWU7CnVz
aW5nIEtKUzo6VVN0cmluZzsKCnVzaW5nIHN0ZDo6bWluOwoKdXNpbmcgbmFtZXNwYWNlIFdURjsK
Cm5hbWVzcGFjZSBXZWJDb3JlIHsKCnVzaW5nIG5hbWVzcGFjZSBFdmVudE5hbWVzOwp1c2luZyBu
YW1lc3BhY2UgSFRNTE5hbWVzOwoKY29uc3QgTFBDV1NUUiBrV2ViUGx1Z2luVmlld2Rvd0NsYXNz
TmFtZSA9IEwiV2ViUGx1Z2luVmlldyI7CmNvbnN0IExQQ1dTVFIga1dlYlBsdWdpblZpZXdQcm9w
ZXJ0eSA9IEwiV2ViUGx1Z2luVmlld1Byb3BlcnR5IjsKCnN0YXRpYyBjb25zdCBjaGFyKiBNb3pp
bGxhVXNlckFnZW50ID0gIk1vemlsbGEvNS4wIChXaW5kb3dzOyBVOyBXaW5kb3dzIE5UIDUuMTsg
ZW4tVVM7IHJ2OjEuOC4xKSBHZWNrby8yMDA2MTAxMCBGaXJlZm94LzIuMCI7CgpzdGF0aWMgYm9v
bCByZWdpc3RlclBsdWdpblZpZXcoKQp7CglUUkFDRSgicmVnaXN0ZXJQbHVnaW5WaWV3Iik7CiAg
ICBzdGF0aWMgYm9vbCBoYXZlUmVnaXN0ZXJlZFdpbmRvd0NsYXNzID0gZmFsc2U7CiAgICBpZiAo
aGF2ZVJlZ2lzdGVyZWRXaW5kb3dDbGFzcykKICAgICAgICByZXR1cm4gdHJ1ZTsKCiAgICBoYXZl
UmVnaXN0ZXJlZFdpbmRvd0NsYXNzID0gdHJ1ZTsKCiNpZiBQTEFURk9STShRVCkKICAgIFBhZ2U6
OnNldEluc3RhbmNlSGFuZGxlKChISU5TVEFOQ0UpKHFXaW5BcHBJbnN0KCkpKTsKI2VuZGlmCgog
ICAgQVNTRVJUKFBhZ2U6Omluc3RhbmNlSGFuZGxlKCkpOwoKICAgIFdORENMQVNTRVggd2NleDsK
CiAgICB3Y2V4LmNiU2l6ZSA9IHNpemVvZihXTkRDTEFTU0VYKTsKCiAgICB3Y2V4LnN0eWxlICAg
ICAgICAgID0gQ1NfREJMQ0xLUzsKICAgIHdjZXgubHBmblduZFByb2MgICAgPSBEZWZXaW5kb3dQ
cm9jOwogICAgd2NleC5jYkNsc0V4dHJhICAgICA9IDA7CiAgICB3Y2V4LmNiV25kRXh0cmEgICAg
ID0gMDsKICAgIHdjZXguaEluc3RhbmNlICAgICAgPSBQYWdlOjppbnN0YW5jZUhhbmRsZSgpOwog
ICAgd2NleC5oSWNvbiAgICAgICAgICA9IDA7CiAgICB3Y2V4LmhDdXJzb3IgICAgICAgID0gTG9h
ZEN1cnNvcigwLCBJRENfQVJST1cpOwogICAgd2NleC5oYnJCYWNrZ3JvdW5kICA9IChIQlJVU0gp
Q09MT1JfV0lORE9XOwogICAgd2NleC5scHN6TWVudU5hbWUgICA9IDA7CiAgICB3Y2V4Lmxwc3pD
bGFzc05hbWUgID0ga1dlYlBsdWdpblZpZXdkb3dDbGFzc05hbWU7CiAgICB3Y2V4LmhJY29uU20g
ICAgICAgID0gMDsKCiAgICByZXR1cm4gISFSZWdpc3RlckNsYXNzRXgoJndjZXgpOwp9CgpMUkVT
VUxUIENBTExCQUNLIFBsdWdpblZpZXc6OlBsdWdpblZpZXdXbmRQcm9jKEhXTkQgaFduZCwgVUlO
VCBtZXNzYWdlLCBXUEFSQU0gd1BhcmFtLCBMUEFSQU0gbFBhcmFtKQp7CglUUkFDRSgiUGx1Z2lu
Vmlld1dpbmRQcm9jIik7CiAgICBQbHVnaW5WaWV3KiBwbHVnaW5WaWV3ID0gcmVpbnRlcnByZXRf
Y2FzdDxQbHVnaW5WaWV3Kj4oR2V0UHJvcChoV25kLCBrV2ViUGx1Z2luVmlld1Byb3BlcnR5KSk7
CgogICAgcmV0dXJuIHBsdWdpblZpZXctPnduZFByb2MoaFduZCwgbWVzc2FnZSwgd1BhcmFtLCBs
UGFyYW0pOwp9CgpzdGF0aWMgYm9vbCBpc1dpbmRvd3NNZXNzYWdlVXNlckdlc3R1cmUoVUlOVCBt
ZXNzYWdlKQp7CiAgICBzd2l0Y2ggKG1lc3NhZ2UpIHsKICAgICAgICBjYXNlIFdNX0xCVVRUT05V
UDoKICAgICAgICBjYXNlIFdNX01CVVRUT05VUDoKICAgICAgICBjYXNlIFdNX1JCVVRUT05VUDoK
ICAgICAgICBjYXNlIFdNX0tFWVVQOgogICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICBk
ZWZhdWx0OgogICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICB9Cn0KCkxSRVNVTFQKUGx1Z2lu
Vmlldzo6d25kUHJvYyhIV05EIGhXbmQsIFVJTlQgbWVzc2FnZSwgV1BBUkFNIHdQYXJhbSwgTFBB
UkFNIGxQYXJhbSkKewoJVFJBQ0UoInduZFByb2MiKTsKCgkvLyA8cmRhcjovLzU3MTExMzY+IFNv
bWV0aW1lcyBGbGFzaCB3aWxsIGNhbGwgU2V0Q2FwdHVyZSBiZWZvcmUgY3JlYXRpbmcKICAgIC8v
IGEgZnVsbC1zY3JlZW4gd2luZG93IGFuZCB3aWxsIG5vdCByZWxlYXNlIGl0LCB3aGljaCBjYXVz
ZXMgdGhlCiAgICAvLyBmdWxsLXNjcmVlbiB3aW5kb3cgdG8gbmV2ZXIgcmVjZWl2ZSBtb3VzZSBl
dmVudHMuIFdlIHNldC9yZWxlYXNlIGNhcHR1cmUKICAgIC8vIG9uIG1vdXNlIGRvd24vdXAgYmVm
b3JlIHNlbmRpbmcgdGhlIGV2ZW50IHRvIHRoZSBwbHVnLWluIHRvIHByZXZlbnQgdGhhdC4KICAg
IHN3aXRjaCAobWVzc2FnZSkgewogICAgICAgIGNhc2UgV01fTEJVVFRPTkRPV046CiAgICAgICAg
Y2FzZSBXTV9NQlVUVE9ORE9XTjoKICAgICAgICBjYXNlIFdNX1JCVVRUT05ET1dOOgogICAgICAg
ICAgICA6OlNldENhcHR1cmUoaFduZCk7CiAgICAgICAgICAgIGJyZWFrOwogICAgICAgIGNhc2Ug
V01fTEJVVFRPTlVQOgogICAgICAgIGNhc2UgV01fTUJVVFRPTlVQOgogICAgICAgIGNhc2UgV01f
UkJVVFRPTlVQOgogICAgICAgICAgICA6OlJlbGVhc2VDYXB0dXJlKCk7CiAgICAgICAgICAgIGJy
ZWFrOwogICAgfQoKICAgIGlmIChtZXNzYWdlID09IG1fbGFzdE1lc3NhZ2UgJiYKICAgICAgICBt
X3BsdWdpbi0+cXVpcmtzKCkuY29udGFpbnMoUGx1Z2luUXVpcmtEb250Q2FsbFduZFByb2NGb3JT
YW1lTWVzc2FnZVJlY3Vyc2l2ZWx5KSAmJiAKICAgICAgICBtX2lzQ2FsbGluZ1BsdWdpblduZFBy
b2MpCiAgICAgICAgcmV0dXJuIDE7CgogICAgaWYgKG1lc3NhZ2UgPT0gV01fVVNFUiArIDEgJiYK
ICAgICAgICBtX3BsdWdpbi0+cXVpcmtzKCkuY29udGFpbnMoUGx1Z2luUXVpcmtUaHJvdHRsZVdN
VXNlclBsdXNPbmVNZXNzYWdlcykpIHsKICAgICAgICBpZiAoIW1fbWVzc2FnZVRocm90dGxlcikK
ICAgICAgICAgICAgbV9tZXNzYWdlVGhyb3R0bGVyLnNldChuZXcgUGx1Z2luTWVzc2FnZVRocm90
dGxlcldpbih0aGlzKSk7CgogICAgICAgIG1fbWVzc2FnZVRocm90dGxlci0+YXBwZW5kTWVzc2Fn
ZShoV25kLCBtZXNzYWdlLCB3UGFyYW0sIGxQYXJhbSk7CiAgICAgICAgcmV0dXJuIDA7CiAgICB9
CgogICAgbV9sYXN0TWVzc2FnZSA9IG1lc3NhZ2U7CiAgICBtX2lzQ2FsbGluZ1BsdWdpblduZFBy
b2MgPSB0cnVlOwoKICAgIC8vIElmIHRoZSBwbHVnLWluIGRvZXNuJ3QgZXhwbGljaXRseSBzdXBw
b3J0IGNoYW5naW5nIHRoZSBwb3AtdXAgc3RhdGUsIHdlIGVuYWJsZQogICAgLy8gcG9wdXBzIGZv
ciBhbGwgdXNlciBnZXN0dXJlcy4KICAgIC8vIE5vdGUgdGhhdCB3ZSBuZWVkIHRvIHBvcCB0aGUg
c3RhdGUgaW4gYSB0aW1lciwgYmVjYXVzZSB0aGUgRmxhc2ggcGx1Zy1pbiAKICAgIC8vIHBvcHMg
dXAgd2luZG93cyBpbiByZXNwb25zZSB0byBhIHBvc3RlZCBtZXNzYWdlLgogICAgaWYgKG1fcGx1
Z2luLT5wbHVnaW5GdW5jcygpLT52ZXJzaW9uIDwgTlBWRVJTX0hBU19QT1BVUFNfRU5BQkxFRF9T
VEFURSAmJgogICAgICAgIGlzV2luZG93c01lc3NhZ2VVc2VyR2VzdHVyZShtZXNzYWdlKSAmJiAh
bV9wb3BQb3B1cHNTdGF0ZVRpbWVyLmlzQWN0aXZlKCkpIHsKCiAgICAgICAgcHVzaFBvcHVwc0Vu
YWJsZWRTdGF0ZSh0cnVlKTsKCiAgICAgICAgbV9wb3BQb3B1cHNTdGF0ZVRpbWVyLnN0YXJ0T25l
U2hvdCgwKTsKICAgIH0KCiAgICAvLyBDYWxsIHRoZSBwbHVnLWluJ3Mgd2luZG93IHByb2MuCiAg
ICBMUkVTVUxUIHJlc3VsdCA9IDo6Q2FsbFdpbmRvd1Byb2MobV9wbHVnaW5XbmRQcm9jLCBoV25k
LCBtZXNzYWdlLCB3UGFyYW0sIGxQYXJhbSk7CgogICAgbV9pc0NhbGxpbmdQbHVnaW5XbmRQcm9j
ID0gZmFsc2U7CgogICAgcmV0dXJuIHJlc3VsdDsKfQoKdm9pZCBQbHVnaW5WaWV3Ojp1cGRhdGVX
aW5kb3coKSBjb25zdAp7CglUUkFDRSgidXBkYXRlV2luZG93Iik7CiAgICBpZiAoIXBhcmVudCgp
KQogICAgICAgIHJldHVybjsKCiAgICBBU1NFUlQocGFyZW50KCktPmlzRnJhbWVWaWV3KCkpOwog
ICAgRnJhbWVWaWV3KiBmcmFtZVZpZXcgPSBzdGF0aWNfY2FzdDxGcmFtZVZpZXcqPihwYXJlbnQo
KSk7CgogICAgSW50UmVjdCBvbGRXaW5kb3dSZWN0ID0gbV93aW5kb3dSZWN0OwogICAgSW50UmVj
dCBvbGRDbGlwUmVjdCA9IG1fY2xpcFJlY3Q7CgogICAgbV93aW5kb3dSZWN0ID0gSW50UmVjdChm
cmFtZVZpZXctPmNvbnRlbnRzVG9XaW5kb3coZnJhbWVHZW9tZXRyeSgpLmxvY2F0aW9uKCkpLCBm
cmFtZUdlb21ldHJ5KCkuc2l6ZSgpKTsKICAgIG1fY2xpcFJlY3QgPSB3aW5kb3dDbGlwUmVjdCgp
OwogICAgbV9jbGlwUmVjdC5tb3ZlKC1tX3dpbmRvd1JlY3QueCgpLCAtbV93aW5kb3dSZWN0Lnko
KSk7CgogICAgaWYgKG1fd2luZG93ICYmIChtX3dpbmRvd1JlY3QgIT0gb2xkV2luZG93UmVjdCB8
fCBtX2NsaXBSZWN0ICE9IG9sZENsaXBSZWN0KSkgewogICAgICAgIEhSR04gcmduOwoKICAgICAg
ICBzZXRDYWxsaW5nUGx1Z2luKHRydWUpOwoKICAgICAgICAvLyBUbyBwcmV2ZW50IGZsYXNoZXMg
d2hpbGUgc2Nyb2xsaW5nLCB3ZSBkaXNhYmxlIGRyYXdpbmcgZHVyaW5nIHRoZSB3aW5kb3cKICAg
ICAgICAvLyB1cGRhdGUgcHJvY2VzcyBieSBjbGlwcGluZyB0aGUgd2luZG93IHRvIHRoZSB6ZXJv
IHJlY3QuCgogICAgICAgIGJvb2wgY2xpcFRvWmVyb1JlY3QgPSAhbV9wbHVnaW4tPnF1aXJrcygp
LmNvbnRhaW5zKFBsdWdpblF1aXJrRG9udENsaXBUb1plcm9SZWN0V2hlblNjcm9sbGluZyk7Cgog
ICAgICAgIGlmIChjbGlwVG9aZXJvUmVjdCkgewogICAgICAgICAgICByZ24gPSBDcmVhdGVSZWN0
UmduKDAsIDAsIDAsIDApOwoJCQk6OlNldFdpbmRvd1JnbihtX3dpbmRvdywgcmduLCBGQUxTRSk7
CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgcmduID0gQ3JlYXRlUmVjdFJnbihtX2NsaXBS
ZWN0LngoKSwgbV9jbGlwUmVjdC55KCksIG1fY2xpcFJlY3QucmlnaHQoKSwgbV9jbGlwUmVjdC5i
b3R0b20oKSk7CgkJCTo6U2V0V2luZG93UmduKG1fd2luZG93LCByZ24sIFRSVUUpOwogICAgICAg
IH0KCiAgICAgICAgaWYgKG1fd2luZG93UmVjdCAhPSBvbGRXaW5kb3dSZWN0KQoJCQk6Ok1vdmVX
aW5kb3cobV93aW5kb3csIG1fd2luZG93UmVjdC54KCksIG1fd2luZG93UmVjdC55KCksIG1fd2lu
ZG93UmVjdC53aWR0aCgpLCBtX3dpbmRvd1JlY3QuaGVpZ2h0KCksIFRSVUUpOwoKICAgICAgICBp
ZiAoY2xpcFRvWmVyb1JlY3QpIHsKICAgICAgICAgICAgcmduID0gQ3JlYXRlUmVjdFJnbihtX2Ns
aXBSZWN0LngoKSwgbV9jbGlwUmVjdC55KCksIG1fY2xpcFJlY3QucmlnaHQoKSwgbV9jbGlwUmVj
dC5ib3R0b20oKSk7CgkJCTo6U2V0V2luZG93UmduKG1fd2luZG93LCByZ24sIFRSVUUpOwogICAg
ICAgIH0KCiAgICAgICAgc2V0Q2FsbGluZ1BsdWdpbihmYWxzZSk7CiAgICB9Cn0KCnZvaWQgUGx1
Z2luVmlldzo6c2V0Rm9jdXMoKQp7CglUUkFDRSgic2V0Rm9jdXMiKTsKICAgIGlmIChtX3dpbmRv
dykKCQk6OlNldEZvY3VzKG1fd2luZG93KTsKCiAgICBXaWRnZXQ6OnNldEZvY3VzKCk7Cn0KCnZv
aWQgUGx1Z2luVmlldzo6c2hvdygpCnsKIAlUUkFDRSgic2hvdyIpOwogICAgbV9pc1Zpc2libGUg
PSB0cnVlOwoKICAgIGlmIChtX2F0dGFjaGVkVG9XaW5kb3cgJiYgbV93aW5kb3cpCgkJOjpTaG93
V2luZG93KG1fd2luZG93LCBTV19TSE9XTkEpOwoKICAgIFdpZGdldDo6c2hvdygpOwp9Cgp2b2lk
IFBsdWdpblZpZXc6OmhpZGUoKQp7CiAJVFJBQ0UoImhpZGUiKTsKICAgIG1faXNWaXNpYmxlID0g
ZmFsc2U7CgogICAgaWYgKG1fYXR0YWNoZWRUb1dpbmRvdyAmJiBtX3dpbmRvdykKCQk6OlNob3dX
aW5kb3cobV93aW5kb3csIFNXX0hJREUpOwoKICAgIFdpZGdldDo6aGlkZSgpOwp9Cgp2b2lkIFBs
dWdpblZpZXc6OnBhaW50TWlzc2luZ1BsdWdpbkljb24oR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0
LCBjb25zdCBJbnRSZWN0JiByZWN0KQp7CglUUkFDRSgicGFpbnRNaXNzaW5nUGx1Z2luSWNvbiIp
OwogICAgc3RhdGljIEltYWdlKiBudWxsUGx1Z2luSW1hZ2U7CiAgICBpZiAoIW51bGxQbHVnaW5J
bWFnZSkKICAgICAgICBudWxsUGx1Z2luSW1hZ2UgPSBJbWFnZTo6bG9hZFBsYXRmb3JtUmVzb3Vy
Y2UoIm51bGxQbHVnaW4iKTsKCiAgICBJbnRSZWN0IGltYWdlUmVjdChmcmFtZUdlb21ldHJ5KCku
eCgpLCBmcmFtZUdlb21ldHJ5KCkueSgpLCBudWxsUGx1Z2luSW1hZ2UtPndpZHRoKCksIG51bGxQ
bHVnaW5JbWFnZS0+aGVpZ2h0KCkpOwoKICAgIGludCB4T2Zmc2V0ID0gKGZyYW1lR2VvbWV0cnko
KS53aWR0aCgpIC0gaW1hZ2VSZWN0LndpZHRoKCkpIC8gMjsKICAgIGludCB5T2Zmc2V0ID0gKGZy
YW1lR2VvbWV0cnkoKS5oZWlnaHQoKSAtIGltYWdlUmVjdC5oZWlnaHQoKSkgLyAyOwoKICAgIGlt
YWdlUmVjdC5tb3ZlKHhPZmZzZXQsIHlPZmZzZXQpOwoKICAgIGlmICghcmVjdC5pbnRlcnNlY3Rz
KGltYWdlUmVjdCkpCiAgICAgICAgcmV0dXJuOwoKICAgIGNvbnRleHQtPnNhdmUoKTsKICAgIGNv
bnRleHQtPmNsaXAod2luZG93Q2xpcFJlY3QoKSk7CiAgICBjb250ZXh0LT5kcmF3SW1hZ2UobnVs
bFBsdWdpbkltYWdlLCBpbWFnZVJlY3QubG9jYXRpb24oKSk7CiAgICBjb250ZXh0LT5yZXN0b3Jl
KCk7Cn0KCmJvb2wgUGx1Z2luVmlldzo6ZGlzcGF0Y2hOUEV2ZW50KE5QRXZlbnQmIG5wRXZlbnQp
CnsKCVRSQUNFKCJkaXNwYXRjaE5QRXZlbnQiKTsKICAgIGlmICghbV9wbHVnaW4tPnBsdWdpbkZ1
bmNzKCktPmV2ZW50KQogICAgICAgIHJldHVybiB0cnVlOwoKICAgIGJvb2wgc2hvdWxkUG9wID0g
ZmFsc2U7CgogICAgaWYgKG1fcGx1Z2luLT5wbHVnaW5GdW5jcygpLT52ZXJzaW9uIDwgTlBWRVJT
X0hBU19QT1BVUFNfRU5BQkxFRF9TVEFURSAmJiBpc1dpbmRvd3NNZXNzYWdlVXNlckdlc3R1cmUo
bnBFdmVudC5ldmVudCkpIHsKICAgICAgICBwdXNoUG9wdXBzRW5hYmxlZFN0YXRlKHRydWUpOwog
ICAgICAgIHNob3VsZFBvcCA9IHRydWU7CiAgICB9CgogICAgS0pTOjpKU0xvY2s6OkRyb3BBbGxM
b2NrcyBkcm9wQWxsTG9ja3M7CiAgICBzZXRDYWxsaW5nUGx1Z2luKHRydWUpOwogICAgYm9vbCBy
ZXN1bHQgPSBtX3BsdWdpbi0+cGx1Z2luRnVuY3MoKS0+ZXZlbnQobV9pbnN0YW5jZSwgJm5wRXZl
bnQpOwogICAgc2V0Q2FsbGluZ1BsdWdpbihmYWxzZSk7CgogICAgaWYgKHNob3VsZFBvcCkgCiAg
ICAgICAgcG9wUG9wdXBzRW5hYmxlZFN0YXRlKCk7CgogICAgcmV0dXJuIHJlc3VsdDsKfQoKdm9p
ZCBQbHVnaW5WaWV3OjpwYWludChHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEludFJl
Y3QmIHJlY3QpCnsKCVRSQUNFKCJwYWludCIpOwogICAgaWYgKCFtX2lzU3RhcnRlZCkgewogICAg
ICAgIC8vIERyYXcgdGhlICJtaXNzaW5nIHBsdWdpbiIgaW1hZ2UKICAgICAgICBwYWludE1pc3Np
bmdQbHVnaW5JY29uKGNvbnRleHQsIHJlY3QpOwogICAgICAgIHJldHVybjsKICAgIH0KCiAgICBp
ZiAobV9pc1dpbmRvd2VkIHx8IGNvbnRleHQtPnBhaW50aW5nRGlzYWJsZWQoKSkKICAgICAgICBy
ZXR1cm47CgogICAgQVNTRVJUKHBhcmVudCgpLT5pc0ZyYW1lVmlldygpKTsKICAgIEludFJlY3Qg
cmVjdEluV2luZG93ID0gc3RhdGljX2Nhc3Q8RnJhbWVWaWV3Kj4ocGFyZW50KCkpLT5jb250ZW50
c1RvV2luZG93KGZyYW1lR2VvbWV0cnkoKSk7CiAgICBIREMgaGRjID0gY29udGV4dC0+Z2V0V2lu
ZG93c0NvbnRleHQocmVjdEluV2luZG93LCBtX2lzVHJhbnNwYXJlbnQpOwogICAgTlBFdmVudCBu
cEV2ZW50OwoKI2lmIFBMQVRGT1JNKFdJTikKICAgIGlmICghY29udGV4dC0+aW5UcmFuc3BhcmVu
Y3lMYXllcigpKSB7CiAgICAgICAgLy8gVGhlIHBsdWdpbiBleHBlY3RzIHRoYXQgdGhlIHBhc3Nl
ZCBpbiBEQyBoYXMgd2luZG93IGNvb3JkaW5hdGVzLgogICAgICAgIFhGT1JNIHRyYW5zZm9ybTsK
ICAgICAgICBHZXRXb3JsZFRyYW5zZm9ybShoZGMsICZ0cmFuc2Zvcm0pOwogICAgICAgIHRyYW5z
Zm9ybS5lRHggPSAwOwogICAgICAgIHRyYW5zZm9ybS5lRHkgPSAwOwogICAgICAgIFNldFdvcmxk
VHJhbnNmb3JtKGhkYywgJnRyYW5zZm9ybSk7CiAgICB9CiNlbmRpZgoKICAgIG1fbnBXaW5kb3cu
dHlwZSA9IE5QV2luZG93VHlwZURyYXdhYmxlOwogICAgbV9ucFdpbmRvdy53aW5kb3cgPSBoZGM7
CgogICAgSW50UG9pbnQgcCA9IHN0YXRpY19jYXN0PEZyYW1lVmlldyo+KHBhcmVudCgpKS0+Y29u
dGVudHNUb1dpbmRvdyhmcmFtZUdlb21ldHJ5KCkubG9jYXRpb24oKSk7CiAgICAKICAgIFdJTkRP
V1BPUyB3aW5kb3dwb3M7CiAgICBtZW1zZXQoJndpbmRvd3BvcywgMCwgc2l6ZW9mKHdpbmRvd3Bv
cykpOwoKICAgIHdpbmRvd3Bvcy54ID0gcC54KCk7CiAgICB3aW5kb3dwb3MueSA9IHAueSgpOwog
ICAgd2luZG93cG9zLmN4ID0gZnJhbWVHZW9tZXRyeSgpLndpZHRoKCk7CiAgICB3aW5kb3dwb3Mu
Y3kgPSBmcmFtZUdlb21ldHJ5KCkuaGVpZ2h0KCk7CgogICAgbnBFdmVudC5ldmVudCA9IFdNX1dJ
TkRPV1BPU0NIQU5HRUQ7CiAgICBucEV2ZW50LmxQYXJhbSA9IHJlaW50ZXJwcmV0X2Nhc3Q8dWlu
dDMyPigmd2luZG93cG9zKTsKICAgIG5wRXZlbnQud1BhcmFtID0gMDsKCiAgICBkaXNwYXRjaE5Q
RXZlbnQobnBFdmVudCk7CgogICAgc2V0TlBXaW5kb3dSZWN0KGZyYW1lR2VvbWV0cnkoKSk7Cgog
ICAgbnBFdmVudC5ldmVudCA9IFdNX1BBSU5UOwogICAgbnBFdmVudC53UGFyYW0gPSByZWludGVy
cHJldF9jYXN0PHVpbnQzMj4oaGRjKTsKCiAgICAvLyBUaGlzIGlzIHN1cHBvc2VkIHRvIGJlIGEg
cG9pbnRlciB0byB0aGUgZGlydHkgcmVjdCwgYnV0IGl0IHNlZW1zIHRoYXQgdGhlIEZsYXNoIHBs
dWdpbgogICAgLy8gaWdub3JlcyBpdCBzbyB3ZSBqdXN0IHBhc3MgbnVsbC4KICAgIG5wRXZlbnQu
bFBhcmFtID0gMDsKCiAgICBkaXNwYXRjaE5QRXZlbnQobnBFdmVudCk7CgogICAgY29udGV4dC0+
cmVsZWFzZVdpbmRvd3NDb250ZXh0KGhkYywgZnJhbWVHZW9tZXRyeSgpLCBtX2lzVHJhbnNwYXJl
bnQpOwp9Cgp2b2lkIFBsdWdpblZpZXc6OmhhbmRsZUtleWJvYXJkRXZlbnQoS2V5Ym9hcmRFdmVu
dCogZXZlbnQpCnsKCVRSQUNFKCJrZXlib2FyZEV2ZW50Iik7CiAgICBOUEV2ZW50IG5wRXZlbnQ7
CgogICAgbnBFdmVudC53UGFyYW0gPSBldmVudC0+a2V5Q29kZSgpOyAgICAKCiAgICBpZiAoZXZl
bnQtPnR5cGUoKSA9PSBrZXlkb3duRXZlbnQpIHsKICAgICAgICBucEV2ZW50LmV2ZW50ID0gV01f
S0VZRE9XTjsKICAgICAgICBucEV2ZW50LmxQYXJhbSA9IDA7CiAgICB9IGVsc2UgaWYgKGV2ZW50
LT50eXBlKCkgPT0ga2V5dXBFdmVudCkgewogICAgICAgIG5wRXZlbnQuZXZlbnQgPSBXTV9LRVlV
UDsKICAgICAgICBucEV2ZW50LmxQYXJhbSA9IDB4ODAwMDsKICAgIH0KCiNpZiAhQ09NUElMRVIo
TUlOR1cpCiAgICBLSlM6OkpTTG9jazo6RHJvcEFsbExvY2tzOwojZW5kaWYKICAgIGlmICghZGlz
cGF0Y2hOUEV2ZW50KG5wRXZlbnQpKQogICAgICAgIGV2ZW50LT5zZXREZWZhdWx0SGFuZGxlZCgp
Owp9CgpleHRlcm4gSENVUlNPUiBsYXN0U2V0Q3Vyc29yOwpleHRlcm4gYm9vbCBpZ25vcmVOZXh0
U2V0Q3Vyc29yOwoKdm9pZCBQbHVnaW5WaWV3OjpoYW5kbGVNb3VzZUV2ZW50KE1vdXNlRXZlbnQq
IGV2ZW50KQp7CglUUkFDRSgiaGFuZGxlTW91c2VFdmVudCIpOwogICAgTlBFdmVudCBucEV2ZW50
OwoKICAgIEludFBvaW50IHAgPSBzdGF0aWNfY2FzdDxGcmFtZVZpZXcqPihwYXJlbnQoKSktPmNv
bnRlbnRzVG9XaW5kb3coSW50UG9pbnQoZXZlbnQtPnBhZ2VYKCksIGV2ZW50LT5wYWdlWSgpKSk7
CgogICAgbnBFdmVudC5sUGFyYW0gPSBNQUtFTFBBUkFNKHAueCgpLCBwLnkoKSk7CiAgICBucEV2
ZW50LndQYXJhbSA9IDA7CgogICAgaWYgKGV2ZW50LT5jdHJsS2V5KCkpCiAgICAgICAgbnBFdmVu
dC53UGFyYW0gfD0gTUtfQ09OVFJPTDsKICAgIGlmIChldmVudC0+c2hpZnRLZXkoKSkKICAgICAg
ICBucEV2ZW50LndQYXJhbSB8PSBNS19TSElGVDsKCiAgICBpZiAoZXZlbnQtPnR5cGUoKSA9PSBt
b3VzZW1vdmVFdmVudCB8fAogICAgICAgIGV2ZW50LT50eXBlKCkgPT0gbW91c2VvdXRFdmVudCB8
fCAKICAgICAgICBldmVudC0+dHlwZSgpID09IG1vdXNlb3ZlckV2ZW50KSB7CiAgICAgICAgbnBF
dmVudC5ldmVudCA9IFdNX01PVVNFTU9WRTsKICAgICAgICBpZiAoZXZlbnQtPmJ1dHRvbkRvd24o
KSkKICAgICAgICAgICAgc3dpdGNoIChldmVudC0+YnV0dG9uKCkpIHsKICAgICAgICAgICAgICAg
IGNhc2UgTGVmdEJ1dHRvbjoKICAgICAgICAgICAgICAgICAgICBucEV2ZW50LndQYXJhbSB8PSBN
S19MQlVUVE9OOwogICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgY2Fz
ZSBNaWRkbGVCdXR0b246CiAgICAgICAgICAgICAgICAgICAgbnBFdmVudC53UGFyYW0gfD0gTUtf
TUJVVFRPTjsKICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgIGNhc2Ug
UmlnaHRCdXR0b246CiAgICAgICAgICAgICAgICAgICAgbnBFdmVudC53UGFyYW0gfD0gTUtfUkJV
VFRPTjsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICB9CiAgICB9CiAgICBlbHNl
IGlmIChldmVudC0+dHlwZSgpID09IG1vdXNlZG93bkV2ZW50KSB7CiAgICAgICAgLy8gRm9jdXMg
dGhlIHBsdWdpbgogICAgICAgIGlmIChQYWdlKiBwYWdlID0gbV9wYXJlbnRGcmFtZS0+cGFnZSgp
KQogICAgICAgICAgICBwYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS0+c2V0Rm9jdXNlZEZyYW1lKG1f
cGFyZW50RnJhbWUpOwogICAgICAgIG1fcGFyZW50RnJhbWUtPmRvY3VtZW50KCktPnNldEZvY3Vz
ZWROb2RlKG1fZWxlbWVudCk7CiAgICAgICAgc3dpdGNoIChldmVudC0+YnV0dG9uKCkpIHsKICAg
ICAgICAgICAgY2FzZSAwOgogICAgICAgICAgICAgICAgbnBFdmVudC5ldmVudCA9IFdNX0xCVVRU
T05ET1dOOwogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIGNhc2UgMToKICAgICAg
ICAgICAgICAgIG5wRXZlbnQuZXZlbnQgPSBXTV9NQlVUVE9ORE9XTjsKICAgICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICAgICBjYXNlIDI6CiAgICAgICAgICAgICAgICBucEV2ZW50LmV2ZW50
ID0gV01fUkJVVFRPTkRPV047CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICB9CiAgICB9
IGVsc2UgaWYgKGV2ZW50LT50eXBlKCkgPT0gbW91c2V1cEV2ZW50KSB7CiAgICAgICAgc3dpdGNo
IChldmVudC0+YnV0dG9uKCkpIHsKICAgICAgICAgICAgY2FzZSAwOgogICAgICAgICAgICAgICAg
bnBFdmVudC5ldmVudCA9IFdNX0xCVVRUT05VUDsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICAgICBjYXNlIDE6CiAgICAgICAgICAgICAgICBucEV2ZW50LmV2ZW50ID0gV01fTUJVVFRP
TlVQOwogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIGNhc2UgMjoKICAgICAgICAg
ICAgICAgIG5wRXZlbnQuZXZlbnQgPSBXTV9SQlVUVE9OVVA7CiAgICAgICAgICAgICAgICBicmVh
azsKICAgICAgICB9CiAgICB9IGVsc2UKICAgICAgICByZXR1cm47CgogICAgSENVUlNPUiBjdXJy
ZW50Q3Vyc29yID0gOjpHZXRDdXJzb3IoKTsKCiNpZiAhQ09NUElMRVIoTUlOR1cpCiAgICBLSlM6
OkpTTG9jazo6RHJvcEFsbExvY2tzOwojZW5kaWYKICAgIGlmICghZGlzcGF0Y2hOUEV2ZW50KG5w
RXZlbnQpKQogICAgICAgIGV2ZW50LT5zZXREZWZhdWx0SGFuZGxlZCgpOwoKI2lmIFBMQVRGT1JN
KFdJTikKICAgIC8vIEN1cnJlbnRseSwgV2lkZ2V0OjpzZXRDdXJzb3IgaXMgYWx3YXlzIGNhbGxl
ZCBhZnRlciB0aGlzIGZ1bmN0aW9uIGluIEV2ZW50SGFuZGxlci5jcHAKICAgIC8vIGFuZCBzaW5j
ZSB3ZSBkb24ndCB3YW50IHRoYXQgd2Ugc2V0IGlnbm9yZU5leHRTZXRDdXJzb3IgdG8gdHJ1ZSBo
ZXJlIHRvIHByZXZlbnQgdGhhdC4KICAgIGlnbm9yZU5leHRTZXRDdXJzb3IgPSB0cnVlOyAgICAg
CiAgICBsYXN0U2V0Q3Vyc29yID0gOjpHZXRDdXJzb3IoKTsKI2VuZGlmCn0KCnZvaWQgUGx1Z2lu
Vmlldzo6c2V0UGFyZW50KFNjcm9sbFZpZXcqIHBhcmVudCkKewoJVFJBQ0UoInNldFBhcmVudCIp
OwogICAgV2lkZ2V0OjpzZXRQYXJlbnQocGFyZW50KTsKCiAgICBpZiAocGFyZW50KQogICAgICAg
IGluaXQoKTsKICAgIGVsc2UgewogICAgICAgIGlmICghbV93aW5kb3cpCiAgICAgICAgICAgIHJl
dHVybjsKCiAgICAgICAgLy8gSWYgdGhlIHBsdWctaW4gd2luZG93IG9yIG9uZSBvZiBpdHMgY2hp
bGRyZW4gaGF2ZSB0aGUgZm9jdXMsIHdlIG5lZWQgdG8gCiAgICAgICAgLy8gY2xlYXIgaXQgdG8g
cHJldmVudCB0aGUgd2ViIHZpZXcgd2luZG93IGZyb20gYmVpbmcgZm9jdXNlZCBiZWNhdXNlIHRo
YXQgY2FuCiAgICAgICAgLy8gdHJpZ2dlciBhIGxheW91dCB3aGlsZSB0aGUgcGx1Z2luIGVsZW1l
bnQgaXMgYmVpbmcgZGV0YWNoZWQuCiAgICAgICAgSFdORCBmb2N1c2VkV2luZG93ID0gOjpHZXRG
b2N1cygpOwovLyNpZiBQTEFURk9STShXSU4pCi8vICAgICAgICBIV05EIGN1cnJlbnRXaW5kb3cg
PSBtX3dpbmRvdzsKLy8jZW5kaWYKCQlIV05EIGN1cnJlbnRXaW5kb3cgPSBtX3dpbmRvdzsKLy8j
aWYgUExBVEZPUk0oUVQpCi8vICAgICAgICBIV05EIGN1cnJlbnRXaW5kb3cgPSBtX3dpbmRvdy0+
d2luSWQoKTsKLy8jZW5kaWYKCQlpZiAoY3VycmVudFdpbmRvdyA9PSBmb2N1c2VkV2luZG93IHx8
IElzQ2hpbGQoY3VycmVudFdpbmRvdywgZm9jdXNlZFdpbmRvdykpewoJCQlpZiAobV9pc1Zpc2li
bGUgJiYgbV93aW5kb3cpCgkJCQk6OlNldEZvY3VzKChIV05EKTApOwoJCQllbHNlCgkJCQlTZXRG
b2N1cygoUGxhdGZvcm1XaWRnZXQpMCk7CgkJfQogICAgfQoKfQoKdm9pZCBQbHVnaW5WaWV3Ojph
dHRhY2hUb1dpbmRvdygpCnsKCVRSQUNFKCJhdHRhY2hUb1dpbmRvdyIpOwogICAgaWYgKG1fYXR0
YWNoZWRUb1dpbmRvdykKICAgICAgICByZXR1cm47CgogICAgbV9hdHRhY2hlZFRvV2luZG93ID0g
dHJ1ZTsKICAgIGlmIChtX2lzVmlzaWJsZSAmJiBtX3dpbmRvdykKCQk6OlNob3dXaW5kb3cobV93
aW5kb3csIFNXX1NIT1dOQSk7Cn0KCnZvaWQgUGx1Z2luVmlldzo6ZGV0YWNoRnJvbVdpbmRvdygp
CnsKCVRSQUNFKCJkZXRhY2hGcm9tV2luZG93Iik7CiAgICBpZiAoIW1fYXR0YWNoZWRUb1dpbmRv
dykKICAgICAgICByZXR1cm47CgogICAgaWYgKG1faXNWaXNpYmxlICYmIG1fd2luZG93KQoJCTo6
U2hvd1dpbmRvdyhtX3dpbmRvdywgU1dfSElERSk7CiAgICBtX2F0dGFjaGVkVG9XaW5kb3cgPSBm
YWxzZTsKfQoKdm9pZCBQbHVnaW5WaWV3OjpzZXROUFdpbmRvd1JlY3QoY29uc3QgSW50UmVjdCYg
cmVjdCkKewoJVFJBQ0UoInNldE5QV2luZG93UmVjdCIpOwogICAgaWYgKCFtX2lzU3RhcnRlZCkK
ICAgICAgICByZXR1cm47CgogICAgSW50UG9pbnQgcCA9IHN0YXRpY19jYXN0PEZyYW1lVmlldyo+
KHBhcmVudCgpKS0+Y29udGVudHNUb1dpbmRvdyhyZWN0LmxvY2F0aW9uKCkpOwogICAgbV9ucFdp
bmRvdy54ID0gcC54KCk7CiAgICBtX25wV2luZG93LnkgPSBwLnkoKTsKCiAgICBtX25wV2luZG93
LndpZHRoID0gcmVjdC53aWR0aCgpOwogICAgbV9ucFdpbmRvdy5oZWlnaHQgPSByZWN0LmhlaWdo
dCgpOwoKICAgIG1fbnBXaW5kb3cuY2xpcFJlY3QubGVmdCA9IDA7CiAgICBtX25wV2luZG93LmNs
aXBSZWN0LnRvcCA9IDA7CiAgICBtX25wV2luZG93LmNsaXBSZWN0LnJpZ2h0ID0gcmVjdC53aWR0
aCgpOwogICAgbV9ucFdpbmRvdy5jbGlwUmVjdC5ib3R0b20gPSByZWN0LmhlaWdodCgpOwoKICAg
IGlmIChtX3BsdWdpbi0+cGx1Z2luRnVuY3MoKS0+c2V0d2luZG93KSB7CiAgICAgICAgS0pTOjpK
U0xvY2s6OkRyb3BBbGxMb2NrcyBkcm9wQWxsTG9ja3M7CiAgICAgICAgc2V0Q2FsbGluZ1BsdWdp
bih0cnVlKTsKICAgICAgICBtX3BsdWdpbi0+cGx1Z2luRnVuY3MoKS0+c2V0d2luZG93KG1faW5z
dGFuY2UsICZtX25wV2luZG93KTsKICAgICAgICBzZXRDYWxsaW5nUGx1Z2luKGZhbHNlKTsKCiAg
ICAgICAgaWYgKCFtX2lzV2luZG93ZWQpCiAgICAgICAgICAgIHJldHVybjsKCiAgICAgICAgQVNT
RVJUKG1fd2luZG93KTsKCgkJSFdORCB3aW5kOwogICAgICAgIFdORFBST0MgY3VycmVudFduZFBy
b2MgPSAoV05EUFJPQylHZXRXaW5kb3dMb25nUHRyKG1fd2luZG93LCBHV0xQX1dORFBST0MpOwog
ICAgICAgIGlmIChjdXJyZW50V25kUHJvYyAhPSBQbHVnaW5WaWV3V25kUHJvYykKICAgICAgICAg
ICAgbV9wbHVnaW5XbmRQcm9jID0gKFdORFBST0MpU2V0V2luZG93TG9uZ1B0cihtX3dpbmRvdywg
R1dMUF9XTkRQUk9DLCAoTE9ORylQbHVnaW5WaWV3V25kUHJvYyk7CiAgICB9Cn0KCnZvaWQgUGx1
Z2luVmlldzo6c3RvcCgpCnsKCVRSQUNFKCJzdG9wIik7CiAgICBpZiAoIW1faXNTdGFydGVkKQog
ICAgICAgIHJldHVybjsKCiAgICBIYXNoU2V0PFJlZlB0cjxQbHVnaW5TdHJlYW0+ID4gc3RyZWFt
cyA9IG1fc3RyZWFtczsKICAgIEhhc2hTZXQ8UmVmUHRyPFBsdWdpblN0cmVhbT4gPjo6aXRlcmF0
b3IgZW5kID0gc3RyZWFtcy5lbmQoKTsKICAgIGZvciAoSGFzaFNldDxSZWZQdHI8UGx1Z2luU3Ry
ZWFtPiA+OjppdGVyYXRvciBpdCA9IHN0cmVhbXMuYmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KSB7
CiAgICAgICAgKCppdCktPnN0b3AoKTsKICAgICAgICBkaXNjb25uZWN0U3RyZWFtKCgqaXQpLmdl
dCgpKTsKICAgIH0KCiAgICBBU1NFUlQobV9zdHJlYW1zLmlzRW1wdHkoKSk7CgogICAgbV9pc1N0
YXJ0ZWQgPSBmYWxzZTsKCiAgICAvLyBVbnN1YmNsYXNzIHRoZSB3aW5kb3cKICAgIGlmIChtX2lz
V2luZG93ZWQpIHsKICAgICAgICBXTkRQUk9DIGN1cnJlbnRXbmRQcm9jID0gKFdORFBST0MpR2V0
V2luZG93TG9uZ1B0cihtX3dpbmRvdywgR1dMUF9XTkRQUk9DKTsKICAgICAgICAKICAgICAgICBp
ZiAoY3VycmVudFduZFByb2MgPT0gUGx1Z2luVmlld1duZFByb2MpCiAgICAgICAgICAgIFNldFdp
bmRvd0xvbmdQdHIobV93aW5kb3csIEdXTFBfV05EUFJPQywgKExPTkcpbV9wbHVnaW5XbmRQcm9j
KTsKICAgIH0KCiAgICBLSlM6OkpTTG9jazo6RHJvcEFsbExvY2tzIGRyb3BBbGxMb2NrczsKCiAg
ICAvLyBDbGVhciB0aGUgd2luZG93CiAgICBtX25wV2luZG93LndpbmRvdyA9IDA7CiAgICBpZiAo
bV9wbHVnaW4tPnBsdWdpbkZ1bmNzKCktPnNldHdpbmRvdyAmJiAhbV9wbHVnaW4tPnF1aXJrcygp
LmNvbnRhaW5zKFBsdWdpblF1aXJrRG9udFNldE51bGxXaW5kb3dIYW5kbGVPbkRlc3Ryb3kpKSB7
CiAgICAgICAgc2V0Q2FsbGluZ1BsdWdpbih0cnVlKTsKICAgICAgICBtX3BsdWdpbi0+cGx1Z2lu
RnVuY3MoKS0+c2V0d2luZG93KG1faW5zdGFuY2UsICZtX25wV2luZG93KTsKICAgICAgICBzZXRD
YWxsaW5nUGx1Z2luKGZhbHNlKTsKICAgIH0KCiAgICAvLyBEZXN0cm95IHRoZSBwbHVnaW4KICAg
IE5QU2F2ZWREYXRhKiBzYXZlZERhdGEgPSAwOwogICAgc2V0Q2FsbGluZ1BsdWdpbih0cnVlKTsK
ICAgIE5QRXJyb3IgbnBFcnIgPSBtX3BsdWdpbi0+cGx1Z2luRnVuY3MoKS0+ZGVzdHJveShtX2lu
c3RhbmNlLCAmc2F2ZWREYXRhKTsKICAgIHNldENhbGxpbmdQbHVnaW4oZmFsc2UpOwogICAgTE9H
X05QRVJST1IobnBFcnIpOwoKICAgIGlmIChzYXZlZERhdGEpIHsKICAgICAgICBpZiAoc2F2ZWRE
YXRhLT5idWYpCiAgICAgICAgICAgIE5QTl9NZW1GcmVlKHNhdmVkRGF0YS0+YnVmKTsKICAgICAg
ICBOUE5fTWVtRnJlZShzYXZlZERhdGEpOwogICAgfQoKICAgIG1faW5zdGFuY2UtPnBkYXRhID0g
MDsKfQoKY29uc3QgY2hhciogUGx1Z2luVmlldzo6dXNlckFnZW50U3RhdGljKCkKewoJVFJBQ0Uo
InVzZXJBZ2VudFN0YXRpYyIpOwogICAgcmV0dXJuIDA7Cn0KCmNvbnN0IGNoYXIqIFBsdWdpblZp
ZXc6OnVzZXJBZ2VudCgpCnsKCVRSQUNFKCJ1c2VyQWdlbnQiKTsKICAgIGlmIChtX3BsdWdpbi0+
cXVpcmtzKCkuY29udGFpbnMoUGx1Z2luUXVpcmtXYW50c01vemlsbGFVc2VyQWdlbnQpKQogICAg
ICAgIHJldHVybiBNb3ppbGxhVXNlckFnZW50OwoKICAgIGlmIChtX3VzZXJBZ2VudC5pc051bGwo
KSkKICAgICAgICBtX3VzZXJBZ2VudCA9IG1fcGFyZW50RnJhbWUtPmxvYWRlcigpLT51c2VyQWdl
bnQobV91cmwpLnV0ZjgoKTsKICAgIHJldHVybiBtX3VzZXJBZ2VudC5kYXRhKCk7Cn0KCk5QRXJy
b3IgUGx1Z2luVmlldzo6aGFuZGxlUG9zdFJlYWRGaWxlKFZlY3RvcjxjaGFyPiYgYnVmZmVyLCB1
aW50MzIgbGVuLCBjb25zdCBjaGFyKiBidWYpCnsKCVRSQUNFKCJoYW5kbGVQb3N0UmVhZEZpbGUi
KTsKICAgIFN0cmluZyBmaWxlbmFtZShidWYsIGxlbik7CgogICAgaWYgKGZpbGVuYW1lLnN0YXJ0
c1dpdGgoImZpbGU6Ly8vIikpCiAgICAgICAgZmlsZW5hbWUgPSBmaWxlbmFtZS5zdWJzdHJpbmco
OCk7CgogICAgLy8gR2V0IGZpbGUgaW5mbwogICAgV0lOMzJfRklMRV9BVFRSSUJVVEVfREFUQSBh
dHRyczsKICAgIGlmIChHZXRGaWxlQXR0cmlidXRlc0V4VyhmaWxlbmFtZS5jaGFyYWN0ZXJzV2l0
aE51bGxUZXJtaW5hdGlvbigpLCBHZXRGaWxlRXhJbmZvU3RhbmRhcmQsICZhdHRycykgPT0gMCkK
ICAgICAgICByZXR1cm4gTlBFUlJfRklMRV9OT1RfRk9VTkQ7CgogICAgaWYgKGF0dHJzLmR3Rmls
ZUF0dHJpYnV0ZXMgJiBGSUxFX0FUVFJJQlVURV9ESVJFQ1RPUlkpCiAgICAgICAgcmV0dXJuIE5Q
RVJSX0ZJTEVfTk9UX0ZPVU5EOwoKICAgIEhBTkRMRSBmaWxlSGFuZGxlID0gQ3JlYXRlRmlsZVco
ZmlsZW5hbWUuY2hhcmFjdGVyc1dpdGhOdWxsVGVybWluYXRpb24oKSwgRklMRV9SRUFEX0RBVEEs
IEZJTEVfU0hBUkVfUkVBRCwgMCwgT1BFTl9FWElTVElORywgMCwgMCk7CiAgICAKICAgIGlmIChm
aWxlSGFuZGxlID09IElOVkFMSURfSEFORExFX1ZBTFVFKQogICAgICAgIHJldHVybiBOUEVSUl9G
SUxFX05PVF9GT1VORDsKCiAgICBidWZmZXIucmVzaXplKGF0dHJzLm5GaWxlU2l6ZUxvdyk7Cgog
ICAgRFdPUkQgYnl0ZXNSZWFkOwogICAgaW50IHJldHZhbCA9IFJlYWRGaWxlKGZpbGVIYW5kbGUs
IGJ1ZmZlci5kYXRhKCksIGF0dHJzLm5GaWxlU2l6ZUxvdywgJmJ5dGVzUmVhZCwgMCk7CgogICAg
Q2xvc2VIYW5kbGUoZmlsZUhhbmRsZSk7CgogICAgaWYgKHJldHZhbCA9PSAwIHx8IGJ5dGVzUmVh
ZCAhPSBhdHRycy5uRmlsZVNpemVMb3cpCiAgICAgICAgcmV0dXJuIE5QRVJSX0ZJTEVfTk9UX0ZP
VU5EOwoKICAgIHJldHVybiBOUEVSUl9OT19FUlJPUjsKfQoKTlBFcnJvciBQbHVnaW5WaWV3Ojpn
ZXRWYWx1ZVN0YXRpYyhOUE5WYXJpYWJsZSB2YXJpYWJsZSwgdm9pZCogdmFsdWUpCnsKCVRSQUNF
KCJnZXRWYWx1ZVN0YXRpYyIpOwogICAgcmV0dXJuIE5QRVJSX0dFTkVSSUNfRVJST1I7Cn0KCk5Q
RXJyb3IgUGx1Z2luVmlldzo6Z2V0VmFsdWUoTlBOVmFyaWFibGUgdmFyaWFibGUsIHZvaWQqIHZh
bHVlKQp7CglUUkFDRSgiZ2V0VmFsdWUiKTsKICAgIHN3aXRjaCAodmFyaWFibGUpIHsKI2lmIEVO
QUJMRShORVRTQ0FQRV9QTFVHSU5fQVBJKQogICAgICAgIGNhc2UgTlBOVldpbmRvd05QT2JqZWN0
OiB7CiAgICAgICAgICAgIGlmIChtX2lzSmF2YVNjcmlwdFBhdXNlZCkKICAgICAgICAgICAgICAg
IHJldHVybiBOUEVSUl9HRU5FUklDX0VSUk9SOwoKICAgICAgICAgICAgTlBPYmplY3QqIHdpbmRv
d1NjcmlwdE9iamVjdCA9IG1fcGFyZW50RnJhbWUtPndpbmRvd1NjcmlwdE5QT2JqZWN0KCk7Cgog
ICAgICAgICAgICAvLyBSZXR1cm4gdmFsdWUgaXMgZXhwZWN0ZWQgdG8gYmUgcmV0YWluZWQsIGFz
IGRlc2NyaWJlZCBoZXJlOiA8aHR0cDovL3d3dy5tb3ppbGxhLm9yZy9wcm9qZWN0cy9wbHVnaW4v
bnBydW50aW1lLmh0bWw+CiAgICAgICAgICAgIGlmICh3aW5kb3dTY3JpcHRPYmplY3QpCiAgICAg
ICAgICAgICAgICBfTlBOX1JldGFpbk9iamVjdCh3aW5kb3dTY3JpcHRPYmplY3QpOwoKICAgICAg
ICAgICAgdm9pZCoqIHYgPSAodm9pZCoqKXZhbHVlOwogICAgICAgICAgICAqdiA9IHdpbmRvd1Nj
cmlwdE9iamVjdDsKCiAgICAgICAgICAgIHJldHVybiBOUEVSUl9OT19FUlJPUjsKICAgICAgICB9
CgogICAgICAgIGNhc2UgTlBOVlBsdWdpbkVsZW1lbnROUE9iamVjdDogewogICAgICAgICAgICBp
ZiAobV9pc0phdmFTY3JpcHRQYXVzZWQpCiAgICAgICAgICAgICAgICByZXR1cm4gTlBFUlJfR0VO
RVJJQ19FUlJPUjsKCiAgICAgICAgICAgIE5QT2JqZWN0KiBwbHVnaW5TY3JpcHRPYmplY3QgPSAw
OwoKICAgICAgICAgICAgaWYgKG1fZWxlbWVudC0+aGFzVGFnTmFtZShhcHBsZXRUYWcpIHx8IG1f
ZWxlbWVudC0+aGFzVGFnTmFtZShlbWJlZFRhZykgfHwgbV9lbGVtZW50LT5oYXNUYWdOYW1lKG9i
amVjdFRhZykpCiAgICAgICAgICAgICAgICBwbHVnaW5TY3JpcHRPYmplY3QgPSBzdGF0aWNfY2Fz
dDxIVE1MUGx1Z0luRWxlbWVudCo+KG1fZWxlbWVudCktPmdldE5QT2JqZWN0KCk7CgogICAgICAg
ICAgICAvLyBSZXR1cm4gdmFsdWUgaXMgZXhwZWN0ZWQgdG8gYmUgcmV0YWluZWQsIGFzIGRlc2Ny
aWJlZCBoZXJlOiA8aHR0cDovL3d3dy5tb3ppbGxhLm9yZy9wcm9qZWN0cy9wbHVnaW4vbnBydW50
aW1lLmh0bWw+CiAgICAgICAgICAgIGlmIChwbHVnaW5TY3JpcHRPYmplY3QpCiAgICAgICAgICAg
ICAgICBfTlBOX1JldGFpbk9iamVjdChwbHVnaW5TY3JpcHRPYmplY3QpOwoKICAgICAgICAgICAg
dm9pZCoqIHYgPSAodm9pZCoqKXZhbHVlOwogICAgICAgICAgICAqdiA9IHBsdWdpblNjcmlwdE9i
amVjdDsKCiAgICAgICAgICAgIHJldHVybiBOUEVSUl9OT19FUlJPUjsKICAgICAgICB9CiNlbmRp
ZgoKICAgICAgICBjYXNlIE5QTlZuZXRzY2FwZVdpbmRvdzogewogICAgICAgICAgICBQbGF0Zm9y
bVdpZGdldCogdyA9IHJlaW50ZXJwcmV0X2Nhc3Q8UGxhdGZvcm1XaWRnZXQqPih2YWx1ZSk7Cgog
ICAgICAgICAgICAqdyA9IGNvbnRhaW5pbmdXaW5kb3coKTsKCiAgICAgICAgICAgIHJldHVybiBO
UEVSUl9OT19FUlJPUjsKICAgICAgICB9CiAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgcmV0
dXJuIE5QRVJSX0dFTkVSSUNfRVJST1I7CiAgICB9Cn0KCnZvaWQgUGx1Z2luVmlldzo6aW52YWxp
ZGF0ZVJlY3QoTlBSZWN0KiByZWN0KQp7CglUUkFDRSgiaW52YWxpZGF0ZVJlY3QiKTsKICAgIGlm
ICghcmVjdCkgewogICAgICAgIGludmFsaWRhdGUoKTsKICAgICAgICByZXR1cm47CiAgICB9Cgog
ICAgSW50UmVjdCByKHJlY3QtPmxlZnQsIHJlY3QtPnRvcCwgcmVjdC0+cmlnaHQgLSByZWN0LT5s
ZWZ0LCByZWN0LT5ib3R0b20gLSByZWN0LT50b3ApOwoKICAgIGlmIChtX2lzV2luZG93ZWQpIHsK
ICAgICAgICBSRUNUIGludmFsaWRSZWN0ID0geyByLngoKSwgci55KCksIHIucmlnaHQoKSwgci5i
b3R0b20oKSB9OwoJCTo6SW52YWxpZGF0ZVJlY3QobV93aW5kb3csICZpbnZhbGlkUmVjdCwgRkFM
U0UpOwogICAgfSBlbHNlIHsKICAgICAgICBpZiAobV9wbHVnaW4tPnF1aXJrcygpLmNvbnRhaW5z
KFBsdWdpblF1aXJrVGhyb3R0bGVJbnZhbGlkYXRlKSkgewogICAgICAgICAgICBtX2ludmFsaWRS
ZWN0cy5hcHBlbmQocik7CiAgICAgICAgICAgIGlmICghbV9pbnZhbGlkYXRlVGltZXIuaXNBY3Rp
dmUoKSkKICAgICAgICAgICAgICAgIG1faW52YWxpZGF0ZVRpbWVyLnN0YXJ0T25lU2hvdCgwLjAw
MSk7CiAgICAgICAgfSBlbHNlCiAgICAgICAgICAgIFdpZGdldDo6aW52YWxpZGF0ZVJlY3Qocik7
CiAgICB9Cn0KCnZvaWQgUGx1Z2luVmlldzo6aW52YWxpZGF0ZVJlZ2lvbihOUFJlZ2lvbiByZWdp
b24pCnsKCVRSQUNFKCJpbnZhbGlkYXRlUmVnaW9uIik7CiAgICBpZiAobV9pc1dpbmRvd2VkKQog
ICAgICAgIHJldHVybjsKCiAgICBSRUNUIHI7CgogICAgaWYgKEdldFJnbkJveChyZWdpb24sICZy
KSA9PSAwKSB7CiAgICAgICAgaW52YWxpZGF0ZSgpOwogICAgICAgIHJldHVybjsKICAgIH0KCiAg
ICBJbnRSZWN0IHJlY3QoSW50UG9pbnQoci5sZWZ0LCByLnRvcCksIEludFNpemUoci5yaWdodC1y
LmxlZnQsIHIuYm90dG9tLXIudG9wKSk7CiAgICBXaWRnZXQ6OmludmFsaWRhdGVSZWN0KHJlY3Qp
Owp9Cgp2b2lkIFBsdWdpblZpZXc6OmZvcmNlUmVkcmF3KCkKewoJVFJBQ0UoImZvcmNlUmVkcmF3
Iik7CiAgICBpZiAobV9pc1dpbmRvd2VkKQogICAgICAgIFVwZGF0ZVdpbmRvdyhtX3dpbmRvdyk7
CiAgICBlbHNlCiAgICAgICAgVXBkYXRlV2luZG93KGNvbnRhaW5pbmdXaW5kb3coKSk7Cn0KClBs
dWdpblZpZXc6On5QbHVnaW5WaWV3KCkKewoJVFJBQ0UoImRlc3RydWN0b3IiKTsKICAgIHN0b3Ao
KTsKCiAgICBkZWxldGVBbGxWYWx1ZXMobV9yZXF1ZXN0cyk7CgogICAgZnJlZVN0cmluZ0FycmF5
KG1fcGFyYW1OYW1lcywgbV9wYXJhbUNvdW50KTsKICAgIGZyZWVTdHJpbmdBcnJheShtX3BhcmFt
VmFsdWVzLCBtX3BhcmFtQ291bnQpOwoKICAgIGlmIChtX3dpbmRvdykKICAgICAgICBEZXN0cm95
V2luZG93KG1fd2luZG93KTsKCiAgICBtX3BhcmVudEZyYW1lLT5jbGVhbnVwU2NyaXB0T2JqZWN0
c0ZvclBsdWdpbih0aGlzKTsKCiAgICBpZiAobV9wbHVnaW4gJiYgIW1fcGx1Z2luLT5xdWlya3Mo
KS5jb250YWlucyhQbHVnaW5RdWlya0RvbnRVbmxvYWRQbHVnaW4pKQogICAgICAgIG1fcGx1Z2lu
LT51bmxvYWQoKTsKfQoKdm9pZCBQbHVnaW5WaWV3Ojppbml0KCkKewoJVFJBQ0UoImluaXQiKTsK
ICAgIGlmIChtX2hhdmVJbml0aWFsaXplZCkKICAgICAgICByZXR1cm47CiAgICBtX2hhdmVJbml0
aWFsaXplZCA9IHRydWU7CgogICAgaWYgKCFtX3BsdWdpbikgewogICAgICAgIEFTU0VSVChtX3N0
YXR1cyA9PSBQbHVnaW5TdGF0dXNDYW5Ob3RGaW5kUGx1Z2luKTsKICAgICAgICByZXR1cm47CiAg
ICB9CgogICAgaWYgKCFtX3BsdWdpbi0+bG9hZCgpKSB7CiAgICAgICAgbV9wbHVnaW4gPSAwOwog
ICAgICAgIG1fc3RhdHVzID0gUGx1Z2luU3RhdHVzQ2FuTm90TG9hZFBsdWdpbjsKICAgICAgICBy
ZXR1cm47CiAgICB9CgogICAgaWYgKCFzdGFydCgpKSB7CiAgICAgICAgbV9zdGF0dXMgPSBQbHVn
aW5TdGF0dXNDYW5Ob3RMb2FkUGx1Z2luOwogICAgICAgIHJldHVybjsKICAgIH0KCiAgICBpZiAo
bV9pc1dpbmRvd2VkKSB7CiAgICAgICAgcmVnaXN0ZXJQbHVnaW5WaWV3KCk7CgogICAgICAgIERX
T1JEIGZsYWdzID0gV1NfQ0hJTEQ7CiAgICAgICAgaWYgKG1faXNWaXNpYmxlKQogICAgICAgICAg
ICBmbGFncyB8PSBXU19WSVNJQkxFOwoKI2lmIFBMQVRGT1JNKFFUKQogICAgICAgIC8vbV93aW5k
b3cgPSBuZXcgUVdpZGdldChtX3BhcmVudEZyYW1lLT52aWV3KCktPmNvbnRhaW5pbmdXaW5kb3co
KSk7CgkJbV93aW5kb3cgPSA6OkNyZWF0ZVdpbmRvd0V4KDAsIGtXZWJQbHVnaW5WaWV3ZG93Q2xh
c3NOYW1lLCAwLCBmbGFncywgMCwgMCwgMCwgMCwgbV9wYXJlbnRGcmFtZS0+dmlldygpLT5jb250
YWluaW5nV2luZG93KCktPndpbklkKCksIDAsIFBhZ2U6Omluc3RhbmNlSGFuZGxlKCksIDApOwoj
ZWxzZQogICAgICAgIG1fd2luZG93ID0gOjpDcmVhdGVXaW5kb3dFeCgwLCBrV2ViUGx1Z2luVmll
d2Rvd0NsYXNzTmFtZSwgMCwgZmxhZ3MsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAwLCAwLCAwLCAwLCBtX3BhcmVudEZyYW1lLT52aWV3KCktPmNvbnRhaW5pbmdXaW5kb3coKSwg
MCwgUGFnZTo6aW5zdGFuY2VIYW5kbGUoKSwgMCk7CiNlbmRpZgoKICAgICAgICAvLyBDYWxsaW5n
IFNldFdpbmRvd0xvbmdQdHJBIGhlcmUgbWFrZXMgdGhlIHdpbmRvdyBwcm9jIEFTQ0lJLCB3aGlj
aCBpcyByZXF1aXJlZCBieSBhdCBsZWFzdAogICAgICAgIC8vIHRoZSBTaG9ja3dhdmUgRGlyZWN0
b3IgcGx1Zy1pbi4KICAgICAgICBTZXRXaW5kb3dMb25nUHRyQShtX3dpbmRvdywgR1dMX1dORFBS
T0MsIChMT05HKURlZldpbmRvd1Byb2NBKTsKCiAgICAgICAgU2V0UHJvcChtX3dpbmRvdywga1dl
YlBsdWdpblZpZXdQcm9wZXJ0eSwgdGhpcyk7CgogICAgICAgIG1fbnBXaW5kb3cudHlwZSA9IE5Q
V2luZG93VHlwZVdpbmRvdzsKICAgICAgICBtX25wV2luZG93LndpbmRvdyA9IG1fd2luZG93Owog
ICAgfSBlbHNlIHsKICAgICAgICBtX25wV2luZG93LnR5cGUgPSBOUFdpbmRvd1R5cGVEcmF3YWJs
ZTsKICAgICAgICBtX25wV2luZG93LndpbmRvdyA9IDA7CiAgICB9CgogICAgaWYgKCFtX3BsdWdp
bi0+cXVpcmtzKCkuY29udGFpbnMoUGx1Z2luUXVpcmtEZWZlckZpcnN0U2V0V2luZG93Q2FsbCkp
CiAgICAgICAgc2V0TlBXaW5kb3dSZWN0KGZyYW1lR2VvbWV0cnkoKSk7CgogICAgbV9zdGF0dXMg
PSBQbHVnaW5TdGF0dXNMb2FkZWRTdWNjZXNzZnVsbHk7Cn0KCn0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>22370</attachid>
            <date>2008-07-18 12:07:08 -0700</date>
            <delta_ts>2008-07-18 12:07:08 -0700</delta_ts>
            <desc>Zattoo&apos;s modified PluginView.h file</desc>
            <filename>PluginView.h</filename>
            <type>text/x-chdr</type>
            <size>9473</size>
            <attacher name="Chris Kurecka">ckurecka</attacher>
            
              <data encoding="base64">LyoKICogQ29weXJpZ2h0IChDKSAyMDA2LCAyMDA3LCAyMDA4IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KICogQ29weXJpZ2h0IChDKSAyMDA4IENvbGxhYm9yYSBMdGQuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCiAqIENvcHlyaWdodCAoQykgMjAwOCBaYXR0b28gSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLiAKICoKICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwogKiBhcmUgbWV0OgogKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAogKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCiAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CiAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KICoKICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01Q
VVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQogKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQogKiBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVS
LCBJTkMuIE9SCiAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAogKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCiAqIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgogKiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZCiAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAogKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCiAqLwoKI2lm
bmRlZiBQbHVnaW5WaWV3X0gKI2RlZmluZSBQbHVnaW5WaWV3X0gKCiNpbmNsdWRlICJDU3RyaW5n
LmgiCiNpbmNsdWRlICJGcmFtZUxvYWRSZXF1ZXN0LmgiCiNpbmNsdWRlICJJbnRSZWN0LmgiCiNp
bmNsdWRlICJLVVJMLmgiCiNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgojaW5jbHVkZSAiUGx1
Z2luU3RyZWFtLmgiCiNpbmNsdWRlICJSZXNvdXJjZVJlcXVlc3QuaCIKI2luY2x1ZGUgIlRpbWVy
LmgiCiNpbmNsdWRlICJXaWRnZXQuaCIKI2luY2x1ZGUgIm5wcnVudGltZV9pbnRlcm5hbC5oIgoj
aW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CiNpbmNsdWRl
IDx3dGYvT3duUHRyLmg+CiNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgojaW5jbHVkZSA8d3Rm
L1JlZlB0ci5oPgojaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgoKbmFtZXNwYWNlIEtKUyB7CiAgICBu
YW1lc3BhY2UgQmluZGluZ3MgewogICAgICAgIGNsYXNzIEluc3RhbmNlOwogICAgfQp9CgpuYW1l
c3BhY2UgV2ViQ29yZSB7CiAgICBjbGFzcyBFbGVtZW50OwogICAgY2xhc3MgRnJhbWU7CiAgICBj
bGFzcyBLZXlib2FyZEV2ZW50OwogICAgY2xhc3MgTW91c2VFdmVudDsKICAgIGNsYXNzIEtVUkw7
CiNpZiBQTEFURk9STShXSU5fT1MpCiAgICBjbGFzcyBQbHVnaW5NZXNzYWdlVGhyb3R0bGVyV2lu
OwojZW5kaWYKICAgIGNsYXNzIFBsdWdpblBhY2thZ2U7CiAgICBjbGFzcyBQbHVnaW5SZXF1ZXN0
OwogICAgY2xhc3MgUGx1Z2luU3RyZWFtOwogICAgY2xhc3MgUmVzb3VyY2VFcnJvcjsKICAgIGNs
YXNzIFJlc291cmNlUmVzcG9uc2U7CgogICAgZW51bSBQbHVnaW5TdGF0dXMgewogICAgICAgIFBs
dWdpblN0YXR1c0Nhbk5vdEZpbmRQbHVnaW4sCiAgICAgICAgUGx1Z2luU3RhdHVzQ2FuTm90TG9h
ZFBsdWdpbiwKICAgICAgICBQbHVnaW5TdGF0dXNMb2FkZWRTdWNjZXNzZnVsbHkKICAgIH07Cgog
ICAgY2xhc3MgUGx1Z2luUmVxdWVzdCB7CiAgICBwdWJsaWM6CiAgICAgICAgUGx1Z2luUmVxdWVz
dChjb25zdCBGcmFtZUxvYWRSZXF1ZXN0JiBmcmFtZUxvYWRSZXF1ZXN0LCBib29sIHNlbmROb3Rp
ZmljYXRpb24sIHZvaWQqIG5vdGlmeURhdGEsIGJvb2wgc2hvdWxkQWxsb3dQb3B1cHMpCiAgICAg
ICAgICAgIDogbV9mcmFtZUxvYWRSZXF1ZXN0KGZyYW1lTG9hZFJlcXVlc3QpCiAgICAgICAgICAg
ICwgbV9ub3RpZnlEYXRhKG5vdGlmeURhdGEpCiAgICAgICAgICAgICwgbV9zZW5kTm90aWZpY2F0
aW9uKHNlbmROb3RpZmljYXRpb24pCiAgICAgICAgICAgICwgbV9zaG91bGRBbGxvd1BvcHVwcyhz
aG91bGRBbGxvd1BvcHVwcykgeyB9CiAgICBwdWJsaWM6CiAgICAgICAgY29uc3QgRnJhbWVMb2Fk
UmVxdWVzdCYgZnJhbWVMb2FkUmVxdWVzdCgpIGNvbnN0IHsgcmV0dXJuIG1fZnJhbWVMb2FkUmVx
dWVzdDsgfQogICAgICAgIHZvaWQqIG5vdGlmeURhdGEoKSBjb25zdCB7IHJldHVybiBtX25vdGlm
eURhdGE7IH0KICAgICAgICBib29sIHNlbmROb3RpZmljYXRpb24oKSBjb25zdCB7IHJldHVybiBt
X3NlbmROb3RpZmljYXRpb247IH0KICAgICAgICBib29sIHNob3VsZEFsbG93UG9wdXBzKCkgY29u
c3QgeyByZXR1cm4gbV9zaG91bGRBbGxvd1BvcHVwczsgfQogICAgcHJpdmF0ZToKICAgICAgICBG
cmFtZUxvYWRSZXF1ZXN0IG1fZnJhbWVMb2FkUmVxdWVzdDsKICAgICAgICB2b2lkKiBtX25vdGlm
eURhdGE7CiAgICAgICAgYm9vbCBtX3NlbmROb3RpZmljYXRpb247CiAgICAgICAgYm9vbCBtX3No
b3VsZEFsbG93UG9wdXBzOwogICAgfTsKCiAgICBjbGFzcyBQbHVnaW5WaWV3IDogcHVibGljIFdp
ZGdldCwgcHJpdmF0ZSBQbHVnaW5TdHJlYW1DbGllbnQgewogICAgcHVibGljOgogICAgICAgIHN0
YXRpYyBQbHVnaW5WaWV3KiBjcmVhdGUoRnJhbWUqIHBhcmVudEZyYW1lLCBjb25zdCBJbnRTaXpl
JiwgRWxlbWVudCosIGNvbnN0IEtVUkwmLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGFyYW1OYW1l
cywgY29uc3QgVmVjdG9yPFN0cmluZz4mIHBhcmFtVmFsdWVzLCBjb25zdCBTdHJpbmcmIG1pbWVU
eXBlLCBib29sIGxvYWRNYW51YWxseSk7CiAgICAgICAgdmlydHVhbCB+UGx1Z2luVmlldygpOwoK
ICAgICAgICBQbHVnaW5QYWNrYWdlKiBwbHVnaW4oKSBjb25zdCB7IHJldHVybiBtX3BsdWdpbi5n
ZXQoKTsgfQogICAgICAgIE5QUCBpbnN0YW5jZSgpIGNvbnN0IHsgcmV0dXJuIG1faW5zdGFuY2U7
IH0KCiAgICAgICAgdm9pZCBzZXROUFdpbmRvd1JlY3QoY29uc3QgSW50UmVjdCYpOwogICAgICAg
IHN0YXRpYyBQbHVnaW5WaWV3KiBjdXJyZW50UGx1Z2luVmlldygpOwoKICAgICAgICBQYXNzUmVm
UHRyPEtKUzo6QmluZGluZ3M6Okluc3RhbmNlPiBiaW5kaW5nSW5zdGFuY2UoKTsKCiAgICAgICAg
UGx1Z2luU3RhdHVzIHN0YXR1cygpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdHVzOyB9CgogICAgICAg
IC8vIE5QTiBmdW5jdGlvbnMKICAgICAgICBOUEVycm9yIGdldFVSTE5vdGlmeShjb25zdCBjaGFy
KiB1cmwsIGNvbnN0IGNoYXIqIHRhcmdldCwgdm9pZCogbm90aWZ5RGF0YSk7CiAgICAgICAgTlBF
cnJvciBnZXRVUkwoY29uc3QgY2hhciogdXJsLCBjb25zdCBjaGFyKiB0YXJnZXQpOwogICAgICAg
IE5QRXJyb3IgcG9zdFVSTE5vdGlmeShjb25zdCBjaGFyKiB1cmwsIGNvbnN0IGNoYXIqIHRhcmdl
dCwgdWludDMyIGxlbiwgY29uc3QgY2hhciogYnV0LCBOUEJvb2wgZmlsZSwgdm9pZCogbm90aWZ5
RGF0YSk7CiAgICAgICAgTlBFcnJvciBwb3N0VVJMKGNvbnN0IGNoYXIqIHVybCwgY29uc3QgY2hh
ciogdGFyZ2V0LCB1aW50MzIgbGVuLCBjb25zdCBjaGFyKiBidXQsIE5QQm9vbCBmaWxlKTsKICAg
ICAgICBOUEVycm9yIG5ld1N0cmVhbShOUE1JTUVUeXBlIHR5cGUsIGNvbnN0IGNoYXIqIHRhcmdl
dCwgTlBTdHJlYW0qKiBzdHJlYW0pOwogICAgICAgIGludDMyIHdyaXRlKE5QU3RyZWFtKiBzdHJl
YW0sIGludDMyIGxlbiwgdm9pZCogYnVmZmVyKTsKICAgICAgICBOUEVycm9yIGRlc3Ryb3lTdHJl
YW0oTlBTdHJlYW0qIHN0cmVhbSwgTlBSZWFzb24gcmVhc29uKTsKICAgICAgICBjb25zdCBjaGFy
KiB1c2VyQWdlbnQoKTsKI2lmIEVOQUJMRShORVRTQ0FQRV9QTFVHSU5fQVBJKQogICAgICAgIHN0
YXRpYyBjb25zdCBjaGFyKiB1c2VyQWdlbnRTdGF0aWMoKTsKI2VuZGlmCiAgICAgICAgdm9pZCBz
dGF0dXMoY29uc3QgY2hhciogbWVzc2FnZSk7CiAgICAgICAgTlBFcnJvciBnZXRWYWx1ZShOUE5W
YXJpYWJsZSB2YXJpYWJsZSwgdm9pZCogdmFsdWUpOwojaWYgRU5BQkxFKE5FVFNDQVBFX1BMVUdJ
Tl9BUEkpCiAgICAgICAgc3RhdGljIE5QRXJyb3IgZ2V0VmFsdWVTdGF0aWMoTlBOVmFyaWFibGUg
dmFyaWFibGUsIHZvaWQqIHZhbHVlKTsKI2VuZGlmCiAgICAgICAgTlBFcnJvciBzZXRWYWx1ZShO
UFBWYXJpYWJsZSB2YXJpYWJsZSwgdm9pZCogdmFsdWUpOwogICAgICAgIHZvaWQgaW52YWxpZGF0
ZVJlY3QoTlBSZWN0Kik7CiAgICAgICAgdm9pZCBpbnZhbGlkYXRlUmVnaW9uKE5QUmVnaW9uKTsK
ICAgICAgICB2b2lkIGZvcmNlUmVkcmF3KCk7CiAgICAgICAgdm9pZCBwdXNoUG9wdXBzRW5hYmxl
ZFN0YXRlKGJvb2wgc3RhdGUpOwogICAgICAgIHZvaWQgcG9wUG9wdXBzRW5hYmxlZFN0YXRlKCk7
CgogICAgICAgIGJvb2wgYXJlUG9wdXBzQWxsb3dlZCgpIGNvbnN0OwoKICAgICAgICB2b2lkIHNl
dEphdmFTY3JpcHRQYXVzZWQoYm9vbCk7CgogICAgICAgIHZvaWQgZGlzY29ubmVjdFN0cmVhbShQ
bHVnaW5TdHJlYW0qKTsKICAgICAgICB2b2lkIHN0cmVhbURpZEZpbmlzaExvYWRpbmcoUGx1Z2lu
U3RyZWFtKiBzdHJlYW0pIHsgZGlzY29ubmVjdFN0cmVhbShzdHJlYW0pOyB9CgogICAgICAgIC8v
IFdpZGdldCBmdW5jdGlvbnMKICAgICAgICB2aXJ0dWFsIHZvaWQgc2V0RnJhbWVHZW9tZXRyeShj
b25zdCBJbnRSZWN0Jik7CiAgICAgICAgdmlydHVhbCB2b2lkIGdlb21ldHJ5Q2hhbmdlZCgpIGNv
bnN0OwogICAgICAgIHZpcnR1YWwgdm9pZCBzZXRGb2N1cygpOwogICAgICAgIHZpcnR1YWwgdm9p
ZCBzaG93KCk7CiAgICAgICAgdmlydHVhbCB2b2lkIGhpZGUoKTsKICAgICAgICB2aXJ0dWFsIHZv
aWQgcGFpbnQoR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgSW50UmVjdCYpOwogICAgICAgIHZpcnR1
YWwgSW50UmVjdCB3aW5kb3dDbGlwUmVjdCgpIGNvbnN0OwogICAgICAgIHZpcnR1YWwgdm9pZCBo
YW5kbGVFdmVudChFdmVudCopOwogICAgICAgIHZpcnR1YWwgdm9pZCBzZXRQYXJlbnQoU2Nyb2xs
VmlldyopOwoKICAgICAgICB2aXJ0dWFsIHZvaWQgYXR0YWNoVG9XaW5kb3coKTsKICAgICAgICB2
aXJ0dWFsIHZvaWQgZGV0YWNoRnJvbVdpbmRvdygpOwoKICAgICAgICB2aXJ0dWFsIGJvb2wgaXNQ
bHVnaW5WaWV3KCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQoKI2lmIFBMQVRGT1JNKFdJTl9PUykK
ICAgICAgICBzdGF0aWMgTFJFU1VMVCBDQUxMQkFDSyBQbHVnaW5WaWV3V25kUHJvYyhIV05ELCBV
SU5ULCBXUEFSQU0sIExQQVJBTSk7CiAgICAgICAgTFJFU1VMVCB3bmRQcm9jKEhXTkQgaFduZCwg
VUlOVCBtZXNzYWdlLCBXUEFSQU0gd1BhcmFtLCBMUEFSQU0gbFBhcmFtKTsKICAgICAgICBXTkRQ
Uk9DIHBsdWdpblduZFByb2MoKSBjb25zdCB7IHJldHVybiBtX3BsdWdpblduZFByb2M7IH0KI2Vu
ZGlmCgogICAgICAgIC8vIFVzZWQgZm9yIG1hbnVhbCBsb2FkaW5nCiAgICAgICAgdm9pZCBkaWRS
ZWNlaXZlUmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpOwogICAgICAgIHZvaWQgZGlk
UmVjZWl2ZURhdGEoY29uc3QgY2hhciosIGludCk7CiAgICAgICAgdm9pZCBkaWRGaW5pc2hMb2Fk
aW5nKCk7CiAgICAgICAgdm9pZCBkaWRGYWlsKGNvbnN0IFJlc291cmNlRXJyb3ImKTsKCiAgICAg
ICAgc3RhdGljIGJvb2wgaXNDYWxsaW5nUGx1Z2luKCk7CgogICAgcHJpdmF0ZToKICAgICAgICBQ
bHVnaW5WaWV3KEZyYW1lKiBwYXJlbnRGcmFtZSwgY29uc3QgSW50U2l6ZSYsIFBsdWdpblBhY2th
Z2UqLCBFbGVtZW50KiwgY29uc3QgS1VSTCYsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXJhbU5h
bWVzLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGFyYW1WYWx1ZXMsIGNvbnN0IFN0cmluZyYgbWlt
ZVR5cGUsIGJvb2wgbG9hZE1hbnVhbGx5KTsKCiAgICAgICAgdm9pZCBzZXRQYXJhbWV0ZXJzKGNv
bnN0IFZlY3RvcjxTdHJpbmc+JiBwYXJhbU5hbWVzLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGFy
YW1WYWx1ZXMpOwogICAgICAgIHZvaWQgaW5pdCgpOwogICAgICAgIGJvb2wgc3RhcnQoKTsKICAg
ICAgICB2b2lkIHN0b3AoKTsKICAgICAgICBzdGF0aWMgdm9pZCBzZXRDdXJyZW50UGx1Z2luVmll
dyhQbHVnaW5WaWV3Kik7CiAgICAgICAgTlBFcnJvciBsb2FkKGNvbnN0IEZyYW1lTG9hZFJlcXVl
c3QmLCBib29sIHNlbmROb3RpZmljYXRpb24sIHZvaWQqIG5vdGlmeURhdGEpOwogICAgICAgIE5Q
RXJyb3IgaGFuZGxlUG9zdChjb25zdCBjaGFyKiB1cmwsIGNvbnN0IGNoYXIqIHRhcmdldCwgdWlu
dDMyIGxlbiwgY29uc3QgY2hhciogYnVmLCBib29sIGZpbGUsIHZvaWQqIG5vdGlmeURhdGEsIGJv
b2wgc2VuZE5vdGlmaWNhdGlvbiwgYm9vbCBhbGxvd0hlYWRlcnMpOwogICAgICAgIE5QRXJyb3Ig
aGFuZGxlUG9zdFJlYWRGaWxlKFZlY3RvcjxjaGFyPiYgYnVmZmVyLCB1aW50MzIgbGVuLCBjb25z
dCBjaGFyKiBidWYpOwogICAgICAgIHN0YXRpYyB2b2lkIGZyZWVTdHJpbmdBcnJheShjaGFyKiog
c3RyaW5nQXJyYXksIGludCBsZW5ndGgpOwogICAgICAgIHZvaWQgc2V0Q2FsbGluZ1BsdWdpbihi
b29sKSBjb25zdDsKCiAgICAgICAgRnJhbWUqIG1fcGFyZW50RnJhbWU7CiAgICAgICAgUmVmUHRy
PFBsdWdpblBhY2thZ2U+IG1fcGx1Z2luOwogICAgICAgIEVsZW1lbnQqIG1fZWxlbWVudDsKICAg
ICAgICBib29sIG1faXNTdGFydGVkOwogICAgICAgIEtVUkwgbV91cmw7CiAgICAgICAgS1VSTCBt
X2Jhc2VVUkw7CiAgICAgICAgUGx1Z2luU3RhdHVzIG1fc3RhdHVzOwogICAgICAgIFZlY3RvcjxJ
bnRSZWN0PiBtX2ludmFsaWRSZWN0czsKCiAgICAgICAgdm9pZCBwZXJmb3JtUmVxdWVzdChQbHVn
aW5SZXF1ZXN0Kik7CiAgICAgICAgdm9pZCBzY2hlZHVsZVJlcXVlc3QoUGx1Z2luUmVxdWVzdCop
OwogICAgICAgIHZvaWQgcmVxdWVzdFRpbWVyRmlyZWQoVGltZXI8UGx1Z2luVmlldz4qKTsKICAg
ICAgICB2b2lkIGludmFsaWRhdGVUaW1lckZpcmVkKFRpbWVyPFBsdWdpblZpZXc+Kik7CiAgICAg
ICAgVGltZXI8UGx1Z2luVmlldz4gbV9yZXF1ZXN0VGltZXI7CiAgICAgICAgVGltZXI8UGx1Z2lu
Vmlldz4gbV9pbnZhbGlkYXRlVGltZXI7CgogICAgICAgIHZvaWQgcG9wUG9wdXBzU3RhdGVUaW1l
ckZpcmVkKFRpbWVyPFBsdWdpblZpZXc+Kik7CiAgICAgICAgVGltZXI8UGx1Z2luVmlldz4gbV9w
b3BQb3B1cHNTdGF0ZVRpbWVyOwoKI2lmbmRlZiBOUF9OT19DQVJCT04KICAgICAgICBib29sIGRp
c3BhdGNoTlBFdmVudChOUEV2ZW50Jik7CiNlbmRpZgogICAgICAgIHZvaWQgdXBkYXRlV2luZG93
KCkgY29uc3Q7CiAgICAgICAgdm9pZCBwYWludE1pc3NpbmdQbHVnaW5JY29uKEdyYXBoaWNzQ29u
dGV4dCosIGNvbnN0IEludFJlY3QmKTsKCiAgICAgICAgdm9pZCBoYW5kbGVLZXlib2FyZEV2ZW50
KEtleWJvYXJkRXZlbnQqKTsKICAgICAgICB2b2lkIGhhbmRsZU1vdXNlRXZlbnQoTW91c2VFdmVu
dCopOwoKICAgICAgICBpbnQgbV9tb2RlOwogICAgICAgIGludCBtX3BhcmFtQ291bnQ7CiAgICAg
ICAgY2hhcioqIG1fcGFyYW1OYW1lczsKICAgICAgICBjaGFyKiogbV9wYXJhbVZhbHVlczsKCiAg
ICAgICAgQ1N0cmluZyBtX21pbWVUeXBlOwogICAgICAgIENTdHJpbmcgbV91c2VyQWdlbnQ7CiAg
ICAgICAgCiAgICAgICAgTlBQIG1faW5zdGFuY2U7CiAgICAgICAgTlBQX3QgbV9pbnN0YW5jZVN0
cnVjdDsKICAgICAgICBOUFdpbmRvdyBtX25wV2luZG93OwoKICAgICAgICBWZWN0b3I8Ym9vbCwg
ND4gbV9wb3B1cFN0YXRlU3RhY2s7CgogICAgICAgIEhhc2hTZXQ8UmVmUHRyPFBsdWdpblN0cmVh
bT4gPiBtX3N0cmVhbXM7CiAgICAgICAgVmVjdG9yPFBsdWdpblJlcXVlc3QqPiBtX3JlcXVlc3Rz
OwoKICAgICAgICBib29sIG1faXNXaW5kb3dlZDsKICAgICAgICBib29sIG1faXNUcmFuc3BhcmVu
dDsKICAgICAgICBib29sIG1faXNWaXNpYmxlOwogICAgICAgIGJvb2wgbV9hdHRhY2hlZFRvV2lu
ZG93OwogICAgICAgIGJvb2wgbV9oYXZlSW5pdGlhbGl6ZWQ7CgojaWYgUExBVEZPUk0oR1RLKSB8
fCBkZWZpbmVkKFFfV1NfWDExKQogICAgICAgIGJvb2wgbV9uZWVkc1hFbWJlZDsKI2VuZGlmCgoj
aWYgUExBVEZPUk0oV0lOX09TKQogICAgICAgIE93blB0cjxQbHVnaW5NZXNzYWdlVGhyb3R0bGVy
V2luPiBtX21lc3NhZ2VUaHJvdHRsZXI7CiAgICAgICAgV05EUFJPQyBtX3BsdWdpblduZFByb2M7
CiAgICAgICAgdW5zaWduZWQgbV9sYXN0TWVzc2FnZTsKICAgICAgICBib29sIG1faXNDYWxsaW5n
UGx1Z2luV25kUHJvYzsKI2VuZGlmCgogICAgICAgIC8vUGxhdGZvcm1XaWRnZXQgbV93aW5kb3c7
IC8vIGZvciB3aW5kb3dlZCBwbHVnLWlucwoJCUhXTkQgbV93aW5kb3c7IC8vIGZvciB3aW5kb3dl
ZCBwbHVnLWlucwogICAgICAgIG11dGFibGUgSW50UmVjdCBtX2NsaXBSZWN0OyAvLyBUaGUgY2xp
cCByZWN0IHRvIGFwcGx5IHRvIGEgd2luZG93ZWQgcGx1Zy1pbgogICAgICAgIG11dGFibGUgSW50
UmVjdCBtX3dpbmRvd1JlY3Q7IC8vIE91ciB3aW5kb3cgcmVjdC4KCiAgICAgICAgYm9vbCBtX2xv
YWRNYW51YWxseTsKICAgICAgICBSZWZQdHI8UGx1Z2luU3RyZWFtPiBtX21hbnVhbFN0cmVhbTsK
CiAgICAgICAgYm9vbCBtX2lzSmF2YVNjcmlwdFBhdXNlZDsKCiAgICAgICAgc3RhdGljIFBsdWdp
blZpZXcqIHNfY3VycmVudFBsdWdpblZpZXc7CiAgICB9OwoKfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQoKI2VuZGlmIAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>