<?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>32826</bug_id>
          
          <creation_ts>2009-12-21 08:03:25 -0800</creation_ts>
          <short_desc>[Qt] Delegation client</short_desc>
          <delta_ts>2010-01-11 06:21:15 -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>Platform</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P3</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>0</everconfirmed>
          <reporter name="Luiz Agostini">luiz</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>hausmann</cc>
    
    <cc>kenneth</cc>
    
    <cc>laszlo.gombos</cc>
    
    <cc>tonikitoo</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>173968</commentid>
    <comment_count>0</comment_count>
    <who name="Luiz Agostini">luiz</who>
    <bug_when>2009-12-21 08:03:25 -0800</bug_when>
    <thetext>The objective is to implement a delegation client class that will be provided by the WebKit layer and accessible in WebCore layer.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>173969</commentid>
    <comment_count>1</comment_count>
      <attachid>45329</attachid>
    <who name="Luiz Agostini">luiz</who>
    <bug_when>2009-12-21 08:15:14 -0800</bug_when>
    <thetext>Created attachment 45329
Qt delegation client

The new class QtPlatformPageClient replaced the class QWebPageClient
as type PlataformPageClient (Widget.h 79). QtPlatformPageClient is composed
by an instance of QWebPageClient and an instance of the new class
QtDelegationClient. This way an object of class QtDelegationClient provided by
the WebKit layer is easily accessible in WebCore layer through the
HostWindow intreface.
    
All related changes have been made in WebCore and WebKit layers.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>173970</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2009-12-21 08:20:33 -0800</bug_when>
    <thetext>Attachment 45329 did not pass style-queue:

Failed to run &quot;WebKitTools/Scripts/check-webkit-style&quot; exit_code: 1
WebCore/platform/qt/QtDelegationClient.h:1:  #ifndef header guard has wrong style, please use: QtDelegationClient_h  [build/header_guard] [5]
WebCore/platform/qt/QtDelegationClient.h:14:  #endif line should be &quot;#endif // QtDelegationClient_h&quot;  [build/header_guard] [5]
WebCore/platform/qt/QtFallbackWebPopup.cpp:52:  Boolean expressions that span multiple lines should have their operators on the left side of the line instead of the right side.  [whitespace/operators] [4]
Total errors found: 3</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>173974</commentid>
    <comment_count>3</comment_count>
      <attachid>45332</attachid>
    <who name="Luiz Agostini">luiz</who>
    <bug_when>2009-12-21 08:33:46 -0800</bug_when>
    <thetext>Created attachment 45332
Qt delegation client

The new class QtPlatformPageClient replaced the class QWebPageClient
as type PlataformPageClient (Widget.h 79). QtPlatformPageClient is composed
by an instance of QWebPageClient and an instance of the new class
QtDelegationClient. This way an object of class QtDelegationClient provided by
the WebKit layer is easily accessible in WebCore layer through the
HostWindow intreface.

All related changes have been made in WebCore and WebKit layers.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>173975</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2009-12-21 08:36:26 -0800</bug_when>
    <thetext>style-queue ran check-webkit-style on attachment 45332 without any errors.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>175533</commentid>
    <comment_count>5</comment_count>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2009-12-29 06:20:03 -0800</bug_when>
    <thetext>I didn&apos;t like this change very much. It seems a bit the wrong way around. You could have added a new delegate() method or so to our QWebPageClient, but I&apos;m not sure this is really the right place for it.

For me, the delegates belong to the chrome, so I would just add a Qt special method for creating combos etc, like ::createSelectionPopup() or so. You could make it Qt specific and do a cast to ChromeClientQt when creating the combos.

What do you think Simon?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>175721</commentid>
    <comment_count>6</comment_count>
    <who name="Luiz Agostini">luiz</who>
    <bug_when>2009-12-29 15:05:02 -0800</bug_when>
    <thetext>The first idea was to put new methods in class QWebPageClient but after a talk with you Kenneth I was convinced that it was not the place for it.

I did not use the cast because at the point where the methods are needed I just have access to an instance of the abstract class HostWindow. I know it is indeed an instance of chrome but using this information I would be throwing away the HostWindow abstraction.

I think that chrome has a standard way to provide this kind of service through the method platformPageClient of the HostWindow interface. Today platformPageClient is returning an instance of the class QWebPageClient. The proposal is to return an instance of a new class (QtPlatformPageClient) that aggregates an instance of QWebPageClient and an instance of another new class (QtDelegationClient) responsible for delegates. I believe that chrome would be then providing the desired functionality in a standard way without messing with QWebPageClient&apos;s scope or responsibilities.

This solution is Qt specific. Although the patch makes changes in several files the changes are all very simple. QWebPageClient is still available and QtDelegationClient can be used for combobox popups and for the delegates that will come in future.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>175857</commentid>
    <comment_count>7</comment_count>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2009-12-30 02:03:10 -0800</bug_when>
    <thetext>Why return another class returning the original one plus the delegate. Why not just add a new method to OUR QWebPageClient class in QWebPageClient.h. We are free to do so. 

(In reply to comment #6)
&gt; The first idea was to put new methods in class QWebPageClient but after a talk
&gt; with you Kenneth I was convinced that it was not the place for it.
&gt; 
&gt; I did not use the cast because at the point where the methods are needed I just
&gt; have access to an instance of the abstract class HostWindow. I know it is
&gt; indeed an instance of chrome but using this information I would be throwing
&gt; away the HostWindow abstraction.
&gt; 
&gt; I think that chrome has a standard way to provide this kind of service through
&gt; the method platformPageClient of the HostWindow interface. Today
&gt; platformPageClient is returning an instance of the class QWebPageClient. The
&gt; proposal is to return an instance of a new class (QtPlatformPageClient) that
&gt; aggregates an instance of QWebPageClient and an instance of another new class
&gt; (QtDelegationClient) responsible for delegates. I believe that chrome would be
&gt; then providing the desired functionality in a standard way without messing with
&gt; QWebPageClient&apos;s scope or responsibilities.
&gt; 
&gt; This solution is Qt specific. Although the patch makes changes in several files
&gt; the changes are all very simple. QWebPageClient is still available and
&gt; QtDelegationClient can be used for combobox popups and for the delegates that
&gt; will come in future.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>175907</commentid>
    <comment_count>8</comment_count>
    <who name="Simon Hausmann">hausmann</who>
    <bug_when>2009-12-30 06:53:16 -0800</bug_when>
    <thetext>(In reply to comment #5)
&gt; I didn&apos;t like this change very much. It seems a bit the wrong way around. You
&gt; could have added a new delegate() method or so to our QWebPageClient, but I&apos;m
&gt; not sure this is really the right place for it.
&gt; 
&gt; For me, the delegates belong to the chrome, so I would just add a Qt special
&gt; method for creating combos etc, like ::createSelectionPopup() or so. You could
&gt; make it Qt specific and do a cast to ChromeClientQt when creating the combos.
&gt; 
&gt; What do you think Simon?

I agree, this should go through the chrome layer.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>178759</commentid>
    <comment_count>9</comment_count>
      <attachid>46152</attachid>
    <who name="Luiz Agostini">luiz</who>
    <bug_when>2010-01-08 13:25:21 -0800</bug_when>
    <thetext>Created attachment 46152
Qt delegation client second try</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>178761</commentid>
    <comment_count>10</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-01-08 13:27:35 -0800</bug_when>
    <thetext>style-queue ran check-webkit-style on attachment 46152 without any errors.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>178780</commentid>
    <comment_count>11</comment_count>
      <attachid>46152</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-01-08 13:48:11 -0800</bug_when>
    <thetext>Comment on attachment 46152
Qt delegation client second try

Clearing flags on attachment: 46152

Committed r53005: &lt;http://trac.webkit.org/changeset/53005&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>178781</commentid>
    <comment_count>12</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-01-08 13:48:19 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>45329</attachid>
            <date>2009-12-21 08:15:14 -0800</date>
            <delta_ts>2009-12-21 08:33:46 -0800</delta_ts>
            <desc>Qt delegation client</desc>
            <filename>0001-Qt-Delegation-client.patch</filename>
            <type>text/plain</type>
            <size>27298</size>
            <attacher name="Luiz Agostini">luiz</attacher>
            
              <data encoding="base64">RnJvbSA1MGU2ZGIyYjllZTJmZDkwMDY2M2YwOTFjOWQ1M2FjZGUwZDEwNzhhIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBMdWl6IEFnb3N0aW5pIDxsdWl6LmFnb3N0aW5pQG9wZW5ib3Nz
YS5vcmc+CkRhdGU6IE1vbiwgMjEgRGVjIDIwMDkgMTM6MTA6NDcgLTAzMDAKU3ViamVjdDogW1BB
VENIXSBbUXRdIERlbGVnYXRpb24gY2xpZW50CiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MzI4MjYKClJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgoKUXQgZGVsZWdh
dGlvbiBjbGllbnQuCgpUaGUgbmV3IGNsYXNzIFF0UGxhdGZvcm1QYWdlQ2xpZW50IHJlcGxhY2Vk
IHRoZSBjbGFzcyBRV2ViUGFnZUNsaWVudAphcyB0eXBlIFBsYXRhZm9ybVBhZ2VDbGllbnQgKFdp
ZGdldC5oIDc5KS4gUXRQbGF0Zm9ybVBhZ2VDbGllbnQgaXMgY29tcG9zZWQKYnkgYW4gaW5zdGFu
Y2Ugb2YgUVdlYlBhZ2VDbGllbnQgYW5kIGFuIGluc3RhbmNlIG9mIHRoZSBuZXcgY2xhc3MKUXRE
ZWxlZ2F0aW9uQ2xpZW50LiBUaGlzIHdheSBhbiBvYmplY3Qgb2YgY2xhc3MgUXREZWxlZ2F0aW9u
Q2xpZW50IHByb3ZpZGVkIGJ5CnRoZSBXZWJLaXQgbGF5ZXIgaXMgZWFzaWx5IGFjY2Vzc2libGUg
aW4gV2ViQ29yZSBsYXllciB0aHJvdWdoIHRoZQpIb3N0V2luZG93IGludHJlZmFjZS4KCkFsbCBy
ZWxhdGVkIGNoYW5nZXMgaGF2ZSBiZWVuIG1hZGUgaW4gV2ViQ29yZSBhbmQgV2ViS2l0IGxheWVy
cy4KCldlYkNvcmU6CgoqIFdlYkNvcmUucHJvOgoqIHBsYXRmb3JtL1dpZGdldC5oOgoqIHBsYXRm
b3JtL3F0L1BsYXRmb3JtU2NyZWVuUXQuY3BwOgooV2ViQ29yZTo6c2NyZWVuTnVtYmVyKToKKFdl
YkNvcmU6OnNjcmVlbkRlcHRoUGVyQ29tcG9uZW50KToKKiBwbGF0Zm9ybS9xdC9RdEFic3RyYWN0
Q29tYm9Qb3B1cC5oOiBBZGRlZC4KKFdlYkNvcmU6OlF0QWJzdHJhY3RDb21ib1BvcHVwOjpRdEFi
c3RyYWN0Q29tYm9Qb3B1cCk6CihXZWJDb3JlOjpRdEFic3RyYWN0Q29tYm9Qb3B1cDo6flF0QWJz
dHJhY3RXZWJQb3B1cCk6CihXZWJDb3JlOjpRdEFic3RyYWN0Q29tYm9Qb3B1cDo6Y2xpZW50KToK
KiBwbGF0Zm9ybS9xdC9RdERlbGVnYXRpb25DbGllbnQuaDogQWRkZWQuCiogcGxhdGZvcm0vcXQv
UXRGYWxsYmFja1dlYlBvcHVwLmNwcDoKKFdlYkNvcmU6OlF0RmFsbGJhY2tXZWJQb3B1cDo6c2hv
dyk6CiogcGxhdGZvcm0vcXQvUXRQbGF0Zm9ybVBhZ2VDbGllbnQuaDogQWRkZWQuCiogcGxhdGZv
cm0vcXQvUmVuZGVyVGhlbWVRdC5jcHA6CihXZWJDb3JlOjpSZW5kZXJUaGVtZVF0OjphcHBseVRo
ZW1lKToKKiBwbGF0Zm9ybS9xdC9XaWRnZXRRdC5jcHA6CihXZWJDb3JlOjpXaWRnZXQ6OnNldEN1
cnNvcik6CiogcGx1Z2lucy9xdC9QbHVnaW5WaWV3UXQuY3BwOgooV2ViQ29yZTo6UGx1Z2luVmll
dzo6cGFpbnQpOgooV2ViQ29yZTo6UGx1Z2luVmlldzo6aW5pdFhFdmVudCk6CihXZWJDb3JlOjpQ
bHVnaW5WaWV3OjpnZXRWYWx1ZSk6CihXZWJDb3JlOjpQbHVnaW5WaWV3OjpwbGF0Zm9ybVN0YXJ0
KToKCldlYktpdC9xdDoKCiogQXBpL3FncmFwaGljc3dlYnZpZXcuY3BwOgooUUdyYXBoaWNzV2Vi
Vmlldzo6flFHcmFwaGljc1dlYlZpZXcpOgooUUdyYXBoaWNzV2ViVmlldzo6c2V0UGFnZSk6Ciog
QXBpL3F3ZWJwYWdlLmNwcDoKKFFXZWJQYWdlUHJpdmF0ZTo6UVdlYlBhZ2VQcml2YXRlKToKKFFX
ZWJQYWdlUHJpdmF0ZTo6flFXZWJQYWdlUHJpdmF0ZSk6CihRV2ViUGFnZVByaXZhdGU6OmhhbmRs
ZVNvZnR3YXJlSW5wdXRQYW5lbCk6CihRV2ViUGFnZTo6c2V0Vmlldyk6CiogQXBpL3F3ZWJwYWdl
X3AuaDoKKFBsYXRmb3JtQ2xpZW50OjpQbGF0Zm9ybUNsaWVudCk6CihQbGF0Zm9ybUNsaWVudDo6
d2ViUGFnZUNsaWVudCk6CihQbGF0Zm9ybUNsaWVudDo6ZGVsZWdhdGlvbkNsaWVudCk6CihQbGF0
Zm9ybUNsaWVudDo6c2V0UGFnZUNsaWVudCk6CiogQXBpL3F3ZWJ2aWV3LmNwcDoKKFFXZWJWaWV3
Ojp+UVdlYlZpZXcpOgooUVdlYlZpZXc6OnNldFBhZ2UpOgooUVdlYlZpZXc6OmV2ZW50KToKKiBX
ZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRRdC5jcHA6CihXZWJDb3JlOjpDaHJvbWVDbGllbnRR
dDo6cmVwYWludCk6CihXZWJDb3JlOjpDaHJvbWVDbGllbnRRdDo6c2Nyb2xsKToKKFdlYkNvcmU6
OkNocm9tZUNsaWVudFF0OjpwbGF0Zm9ybVBhZ2VDbGllbnQpOgoqIFdlYkNvcmVTdXBwb3J0L0Vk
aXRvckNsaWVudFF0LmNwcDoKKFdlYkNvcmU6OkVkaXRvckNsaWVudFF0OjpzZXRJbnB1dE1ldGhv
ZFN0YXRlKToKKiBXZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFF0LmNwcDoKKFdlYkNv
cmU6OkZyYW1lTG9hZGVyQ2xpZW50UXQ6OmNyZWF0ZVBsdWdpbik6Ci0tLQogV2ViQ29yZS9DaGFu
Z2VMb2cgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICA0MSArKysrKysrKysrKysr
KysrKysrKwogV2ViQ29yZS9XZWJDb3JlLnBybyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHwgICAgMyArCiBXZWJDb3JlL3BsYXRmb3JtL1dpZGdldC5oICAgICAgICAgICAgICAgICAgICAg
ICAgfCAgICA0ICstCiBXZWJDb3JlL3BsYXRmb3JtL3F0L1BsYXRmb3JtU2NyZWVuUXQuY3BwICAg
ICAgICAgfCAgICA3ICsrLQogV2ViQ29yZS9wbGF0Zm9ybS9xdC9RdEFic3RyYWN0Q29tYm9Qb3B1
cC5oICAgICAgIHwgICAyNyArKysrKysrKysrKysrCiBXZWJDb3JlL3BsYXRmb3JtL3F0L1F0RGVs
ZWdhdGlvbkNsaWVudC5oICAgICAgICAgfCAgIDE0ICsrKysrKysKIFdlYkNvcmUvcGxhdGZvcm0v
cXQvUXRGYWxsYmFja1dlYlBvcHVwLmNwcCAgICAgICB8ICAgIDUgKy0KIFdlYkNvcmUvcGxhdGZv
cm0vcXQvUXRQbGF0Zm9ybVBhZ2VDbGllbnQuaCAgICAgICB8ICAgMTYgKysrKysrKysKIFdlYkNv
cmUvcGxhdGZvcm0vcXQvUmVuZGVyVGhlbWVRdC5jcHAgICAgICAgICAgICB8ICAgIDMgKy0KIFdl
YkNvcmUvcGxhdGZvcm0vcXQvV2lkZ2V0UXQuY3BwICAgICAgICAgICAgICAgICB8ICAgIDMgKy0K
IFdlYkNvcmUvcGx1Z2lucy9xdC9QbHVnaW5WaWV3UXQuY3BwICAgICAgICAgICAgICB8ICAgMTIg
KysrKy0tCiBXZWJLaXQvcXQvQXBpL3FncmFwaGljc3dlYnZpZXcuY3BwICAgICAgICAgICAgICAg
fCAgICA2ICstCiBXZWJLaXQvcXQvQXBpL3F3ZWJwYWdlLmNwcCAgICAgICAgICAgICAgICAgICAg
ICAgfCAgIDE2ICsrKysrLS0tCiBXZWJLaXQvcXQvQXBpL3F3ZWJwYWdlX3AuaCAgICAgICAgICAg
ICAgICAgICAgICAgfCAgIDE3ICsrKysrKysrLQogV2ViS2l0L3F0L0FwaS9xd2Vidmlldy5jcHAg
ICAgICAgICAgICAgICAgICAgICAgIHwgICAgOCArKy0tCiBXZWJLaXQvcXQvQ2hhbmdlTG9nICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDQ0ICsrKysrKysrKysrKysrKysrKysrKysK
IFdlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRRdC5jcHAgICAgICB8ICAgMTAg
KystLQogV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudFF0LmNwcCAgICAgIHwg
ICAgMiArLQogV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50UXQuY3Bw
IHwgICAxMiArKystLQogMTkgZmlsZXMgY2hhbmdlZCwgMjEzIGluc2VydGlvbnMoKyksIDM3IGRl
bGV0aW9ucygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IFdlYkNvcmUvcGxhdGZvcm0vcXQvUXRBYnN0
cmFjdENvbWJvUG9wdXAuaAogY3JlYXRlIG1vZGUgMTAwNjQ0IFdlYkNvcmUvcGxhdGZvcm0vcXQv
UXREZWxlZ2F0aW9uQ2xpZW50LmgKIGNyZWF0ZSBtb2RlIDEwMDY0NCBXZWJDb3JlL3BsYXRmb3Jt
L3F0L1F0UGxhdGZvcm1QYWdlQ2xpZW50LmgKCmRpZmYgLS1naXQgYS9XZWJDb3JlL0NoYW5nZUxv
ZyBiL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDYwNTQ1NzUuLjA3MzljMTUgMTAwNjQ0Ci0tLSBh
L1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDQg
QEAKKzIwMDktMTItMjEgIEx1aXogQWdvc3RpbmkgIDxsdWl6LmFnb3N0aW5pQG9wZW5ib3NzYS5v
cmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgW1F0
XSBEZWxlZ2F0aW9uIGNsaWVudAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MzI4MjYKKworICAgICAgICBRdCBkZWxlZ2F0aW9uIGNsaWVudC4KKworICAg
ICAgICBUaGUgbmV3IGNsYXNzIFF0UGxhdGZvcm1QYWdlQ2xpZW50IHJlcGxhY2VkIHRoZSBjbGFz
cyBRV2ViUGFnZUNsaWVudAorICAgICAgICBhcyB0eXBlIFBsYXRhZm9ybVBhZ2VDbGllbnQgKFdp
ZGdldC5oIDc5KS4gUXRQbGF0Zm9ybVBhZ2VDbGllbnQgaXMgY29tcG9zZWQKKyAgICAgICAgYnkg
YW4gaW5zdGFuY2Ugb2YgUVdlYlBhZ2VDbGllbnQgYW5kIGFuIGluc3RhbmNlIG9mIHRoZSBuZXcg
Y2xhc3MKKyAgICAgICAgUXREZWxlZ2F0aW9uQ2xpZW50LiBUaGlzIHdheSBhbiBvYmplY3Qgb2Yg
Y2xhc3MgUXREZWxlZ2F0aW9uQ2xpZW50IHByb3ZpZGVkIGJ5CisgICAgICAgIHRoZSBXZWJLaXQg
bGF5ZXIgaXMgZWFzaWx5IGFjY2Vzc2libGUgaW4gV2ViQ29yZSBsYXllciB0aHJvdWdoIHRoZQor
ICAgICAgICBIb3N0V2luZG93IGludHJlZmFjZS4KKworICAgICAgICBBbGwgcmVsYXRlZCBjaGFu
Z2VzIGhhdmUgYmVlbiBtYWRlIGluIFdlYkNvcmUgYW5kIFdlYktpdCBsYXllcnMuCisKKyAgICAg
ICAgKiBXZWJDb3JlLnBybzoKKyAgICAgICAgKiBwbGF0Zm9ybS9XaWRnZXQuaDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9xdC9QbGF0Zm9ybVNjcmVlblF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnNj
cmVlbk51bWJlcik6CisgICAgICAgIChXZWJDb3JlOjpzY3JlZW5EZXB0aFBlckNvbXBvbmVudCk6
CisgICAgICAgICogcGxhdGZvcm0vcXQvUXRBYnN0cmFjdENvbWJvUG9wdXAuaDogQWRkZWQuCisg
ICAgICAgIChXZWJDb3JlOjpRdEFic3RyYWN0Q29tYm9Qb3B1cDo6UXRBYnN0cmFjdENvbWJvUG9w
dXApOgorICAgICAgICAoV2ViQ29yZTo6UXRBYnN0cmFjdENvbWJvUG9wdXA6On5RdEFic3RyYWN0
V2ViUG9wdXApOgorICAgICAgICAoV2ViQ29yZTo6UXRBYnN0cmFjdENvbWJvUG9wdXA6OmNsaWVu
dCk6CisgICAgICAgICogcGxhdGZvcm0vcXQvUXREZWxlZ2F0aW9uQ2xpZW50Lmg6IEFkZGVkLgor
ICAgICAgICAqIHBsYXRmb3JtL3F0L1F0RmFsbGJhY2tXZWJQb3B1cC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpRdEZhbGxiYWNrV2ViUG9wdXA6OnNob3cpOgorICAgICAgICAqIHBsYXRmb3JtL3F0
L1F0UGxhdGZvcm1QYWdlQ2xpZW50Lmg6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL3F0L1Jl
bmRlclRoZW1lUXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVRdDo6YXBwbHlU
aGVtZSk6CisgICAgICAgICogcGxhdGZvcm0vcXQvV2lkZ2V0UXQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6V2lkZ2V0OjpzZXRDdXJzb3IpOgorICAgICAgICAqIHBsdWdpbnMvcXQvUGx1Z2luVmll
d1F0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBsdWdpblZpZXc6OnBhaW50KToKKyAgICAgICAg
KFdlYkNvcmU6OlBsdWdpblZpZXc6OmluaXRYRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6UGx1
Z2luVmlldzo6Z2V0VmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6UGx1Z2luVmlldzo6cGxhdGZv
cm1TdGFydCk6CisKIDIwMDktMTItMTkgIERhbiBCZXJuc3RlaW4gIDxtaXR6QGFwcGxlLmNvbT4K
IAogICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KZGlmZiAtLWdpdCBhL1dlYkNvcmUv
V2ViQ29yZS5wcm8gYi9XZWJDb3JlL1dlYkNvcmUucHJvCmluZGV4IDZkM2Q1ZGUuLjBiYjJhNzcg
MTAwNjQ0Ci0tLSBhL1dlYkNvcmUvV2ViQ29yZS5wcm8KKysrIGIvV2ViQ29yZS9XZWJDb3JlLnBy
bwpAQCAtMTk4NCw2ICsxOTg0LDkgQEAgSEVBREVSUyArPSBcCiAgICAgcGxhdGZvcm0vUGxhdGZv
cm1Ub3VjaFBvaW50LmggXAogICAgIHBsYXRmb3JtL3F0L0NsaXBib2FyZFF0LmggXAogICAgIHBs
YXRmb3JtL3F0L1FXZWJQYWdlQ2xpZW50LmggXAorICAgIHBsYXRmb3JtL3F0L1F0UGxhdGZvcm1Q
YWdlQ2xpZW50LmggXAorICAgIHBsYXRmb3JtL3F0L1F0RGVsZWdhdGlvbkNsaWVudC5oIFwKKyAg
ICBwbGF0Zm9ybS9xdC9RdEFic3RyYWN0Q29tYm9Qb3B1cC5oIFwKICAgICBwbGF0Zm9ybS9xdC9R
dEFic3RyYWN0V2ViUG9wdXAuaCBcCiAgICAgcGxhdGZvcm0vcXQvUXRGYWxsYmFja1dlYlBvcHVw
LmggXAogICAgIHBsYXRmb3JtL3F0L1JlbmRlclRoZW1lUXQuaCBcCmRpZmYgLS1naXQgYS9XZWJD
b3JlL3BsYXRmb3JtL1dpZGdldC5oIGIvV2ViQ29yZS9wbGF0Zm9ybS9XaWRnZXQuaAppbmRleCA3
MmY5OWIzLi40ODgzZGI0IDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL1dpZGdldC5oCisr
KyBiL1dlYkNvcmUvcGxhdGZvcm0vV2lkZ2V0LmgKQEAgLTc1LDggKzc1LDggQEAgdHlwZWRlZiBC
VmlldyogUGxhdGZvcm1XaWRnZXQ7CiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKFFUKQotY2xhc3Mg
UVdlYlBhZ2VDbGllbnQ7Ci10eXBlZGVmIFFXZWJQYWdlQ2xpZW50KiBQbGF0Zm9ybVBhZ2VDbGll
bnQ7CisjaW5jbHVkZSAiUXRQbGF0Zm9ybVBhZ2VDbGllbnQuaCIKK3R5cGVkZWYgUXRQbGF0Zm9y
bVBhZ2VDbGllbnQqIFBsYXRmb3JtUGFnZUNsaWVudDsKICNlbHNlCiB0eXBlZGVmIFBsYXRmb3Jt
V2lkZ2V0IFBsYXRmb3JtUGFnZUNsaWVudDsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9w
bGF0Zm9ybS9xdC9QbGF0Zm9ybVNjcmVlblF0LmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0vcXQvUGxh
dGZvcm1TY3JlZW5RdC5jcHAKaW5kZXggODIyMTc2MC4uZmY3MGExMiAxMDA2NDQKLS0tIGEvV2Vi
Q29yZS9wbGF0Zm9ybS9xdC9QbGF0Zm9ybVNjcmVlblF0LmNwcAorKysgYi9XZWJDb3JlL3BsYXRm
b3JtL3F0L1BsYXRmb3JtU2NyZWVuUXQuY3BwCkBAIC00Nyw3ICs0Nyw4IEBAIHN0YXRpYyBpbnQg
c2NyZWVuTnVtYmVyKFdpZGdldCogdykKICAgICBpZiAoIXcpCiAgICAgICAgIHJldHVybiAwOwog
Ci0gICAgUVdlYlBhZ2VDbGllbnQqIGNsaWVudCA9IHctPnJvb3QoKS0+aG9zdFdpbmRvdygpLT5w
bGF0Zm9ybVBhZ2VDbGllbnQoKTsKKyAgICBQbGF0Zm9ybVBhZ2VDbGllbnQgcGxhdGFmb3JtQ2xp
ZW50ID0gdy0+cm9vdCgpLT5ob3N0V2luZG93KCktPnBsYXRmb3JtUGFnZUNsaWVudCgpOworICAg
IFFXZWJQYWdlQ2xpZW50KiBjbGllbnQgPSBwbGF0YWZvcm1DbGllbnQgPyBwbGF0YWZvcm1DbGll
bnQtPndlYlBhZ2VDbGllbnQoKSA6IDA7CiAgICAgcmV0dXJuIGNsaWVudCA/IGNsaWVudC0+c2Ny
ZWVuTnVtYmVyKCkgOiAwOwogfQogCkBAIC01OSw3ICs2MCw5IEBAIGludCBzY3JlZW5EZXB0aChX
aWRnZXQqIHcpCiBpbnQgc2NyZWVuRGVwdGhQZXJDb21wb25lbnQoV2lkZ2V0KiB3KQogewogICAg
IGlmICh3KSB7Ci0gICAgICAgIFFXZWJQYWdlQ2xpZW50KiBjbGllbnQgPSB3LT5yb290KCktPmhv
c3RXaW5kb3coKS0+cGxhdGZvcm1QYWdlQ2xpZW50KCk7CisgICAgICAgIFBsYXRmb3JtUGFnZUNs
aWVudCBwbGF0YWZvcm1DbGllbnQgPSB3LT5yb290KCktPmhvc3RXaW5kb3coKS0+cGxhdGZvcm1Q
YWdlQ2xpZW50KCk7CisgICAgICAgIFFXZWJQYWdlQ2xpZW50KiBjbGllbnQgPSBwbGF0YWZvcm1D
bGllbnQgPyBwbGF0YWZvcm1DbGllbnQtPndlYlBhZ2VDbGllbnQoKSA6IDA7CisKIAogICAgICAg
ICBpZiAoY2xpZW50KSB7CiAgICAgICAgICAgICBRV2lkZ2V0KiB2aWV3ID0gY2xpZW50LT5vd25l
cldpZGdldCgpOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9xdC9RdEFic3RyYWN0Q29t
Ym9Qb3B1cC5oIGIvV2ViQ29yZS9wbGF0Zm9ybS9xdC9RdEFic3RyYWN0Q29tYm9Qb3B1cC5oCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmMxODlhYWEKLS0tIC9kZXYvbnVsbAor
KysgYi9XZWJDb3JlL3BsYXRmb3JtL3F0L1F0QWJzdHJhY3RDb21ib1BvcHVwLmgKQEAgLTAsMCAr
MSwyNyBAQAorI2lmbmRlZiBRdEFic3RyYWN0Q29tYm9Qb3B1cF9oCisjZGVmaW5lIFF0QWJzdHJh
Y3RDb21ib1BvcHVwX2gKKworI2luY2x1ZGUgPFFSZWN0PgorCituYW1lc3BhY2UgV2ViQ29yZSB7
CisKK2NsYXNzIFBvcHVwTWVudUNsaWVudDsKKworY2xhc3MgUXRBYnN0cmFjdENvbWJvUG9wdXAg
eworcHVibGljOgorICAgIFF0QWJzdHJhY3RDb21ib1BvcHVwKFBvcHVwTWVudUNsaWVudCogY2xp
ZW50KSA6IG1fY2xpZW50KGNsaWVudCkge30KKyAgICB2aXJ0dWFsIH5RdEFic3RyYWN0V2ViUG9w
dXAoKSB7fQorCisgICAgdmlydHVhbCB2b2lkIHNob3coY29uc3QgUVJlY3QmIGdlb21ldHJ5LCBp
bnQgc2VsZWN0ZWRJbmRleCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBoaWRlKCkgPSAwOworCitw
cm90ZWN0ZWQ6CisgICAgUG9wdXBNZW51Q2xpZW50KiBjbGllbnQoKSB7IHJldHVybiBtX2NsaWVu
dDsgfQorCitwcml2YXRlOgorICAgIFBvcHVwTWVudUNsaWVudCogbV9jbGllbnQ7Cit9OworCit9
CisKKyNlbmRpZiAvLyBRdEFic3RyYWN0Q29tYm9Qb3B1cF9oCmRpZmYgLS1naXQgYS9XZWJDb3Jl
L3BsYXRmb3JtL3F0L1F0RGVsZWdhdGlvbkNsaWVudC5oIGIvV2ViQ29yZS9wbGF0Zm9ybS9xdC9R
dERlbGVnYXRpb25DbGllbnQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42
ZDlkZDM3Ci0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9xdC9RdERlbGVnYXRp
b25DbGllbnQuaApAQCAtMCwwICsxLDE0IEBACisjaWZuZGVmIFFEZWxlZ2F0aW9uQ2xpZW50X2gK
KyNkZWZpbmUgUURlbGVnYXRpb25DbGllbnRfaAorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2Ns
YXNzIFF0QWJzdHJhY3RDb21ib1BvcHVwOworCitjbGFzcyBRdERlbGVnYXRpb25DbGllbnQgewor
ICAgIHZpcnR1YWwgUXRBYnN0cmFjdENvbWJvUG9wdXAqIGNyZWF0ZUNvbWJvUG9wdXAoKSA9IDA7
Cit9OworCit9CisKKyNlbmRpZiAvLyBRRGVsZWdhdGlvbkNsaWVudF9oCmRpZmYgLS1naXQgYS9X
ZWJDb3JlL3BsYXRmb3JtL3F0L1F0RmFsbGJhY2tXZWJQb3B1cC5jcHAgYi9XZWJDb3JlL3BsYXRm
b3JtL3F0L1F0RmFsbGJhY2tXZWJQb3B1cC5jcHAKaW5kZXggMDA2ZDA2YS4uODM1ZWZmZSAxMDA2
NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9xdC9RdEZhbGxiYWNrV2ViUG9wdXAuY3BwCisrKyBi
L1dlYkNvcmUvcGxhdGZvcm0vcXQvUXRGYWxsYmFja1dlYlBvcHVwLmNwcApAQCAtNDksOCArNDks
OSBAQCB2b2lkIFF0RmFsbGJhY2tXZWJQb3B1cDo6c2hvdyhjb25zdCBRUmVjdCYgZ2VvbWV0cnks
IGludCBzZWxlY3RlZEluZGV4KQogICAgIHNldEN1cnJlbnRJbmRleChzZWxlY3RlZEluZGV4KTsK
IAogICAgIFFXaWRnZXQqIHBhcmVudCA9IDA7Ci0gICAgaWYgKGNsaWVudCgpLT5ob3N0V2luZG93
KCkgJiYgY2xpZW50KCktPmhvc3RXaW5kb3coKS0+cGxhdGZvcm1QYWdlQ2xpZW50KCkpCi0gICAg
ICAgcGFyZW50ID0gY2xpZW50KCktPmhvc3RXaW5kb3coKS0+cGxhdGZvcm1QYWdlQ2xpZW50KCkt
Pm93bmVyV2lkZ2V0KCk7CisgICAgaWYgKGNsaWVudCgpLT5ob3N0V2luZG93KCkgJiYgY2xpZW50
KCktPmhvc3RXaW5kb3coKS0+cGxhdGZvcm1QYWdlQ2xpZW50KCkgJiYKKyAgICAgICAgY2xpZW50
KCktPmhvc3RXaW5kb3coKS0+cGxhdGZvcm1QYWdlQ2xpZW50KCktPndlYlBhZ2VDbGllbnQoKSkK
KyAgICAgICBwYXJlbnQgPSBjbGllbnQoKS0+aG9zdFdpbmRvdygpLT5wbGF0Zm9ybVBhZ2VDbGll
bnQoKS0+d2ViUGFnZUNsaWVudCgpLT5vd25lcldpZGdldCgpOwogCiAgICAgc2V0UGFyZW50KHBh
cmVudCk7CiAgICAgc2V0R2VvbWV0cnkoUVJlY3QoZ2VvbWV0cnkubGVmdCgpLCBnZW9tZXRyeS50
b3AoKSwgZ2VvbWV0cnkud2lkdGgoKSwgc2l6ZUhpbnQoKS5oZWlnaHQoKSkpOwpkaWZmIC0tZ2l0
IGEvV2ViQ29yZS9wbGF0Zm9ybS9xdC9RdFBsYXRmb3JtUGFnZUNsaWVudC5oIGIvV2ViQ29yZS9w
bGF0Zm9ybS9xdC9RdFBsYXRmb3JtUGFnZUNsaWVudC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAuLmFiZDFhMTcKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb3JlL3BsYXRmb3Jt
L3F0L1F0UGxhdGZvcm1QYWdlQ2xpZW50LmgKQEAgLTAsMCArMSwxNiBAQAorI2lmbmRlZiBRdFBs
YXRmb3JtUGFnZUNsaWVudF9oCisjZGVmaW5lIFF0UGxhdGZvcm1QYWdlQ2xpZW50X2gKKworY2xh
c3MgUVdlYlBhZ2VDbGllbnQ7CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNzIFF0RGVsZWdh
dGlvbkNsaWVudDsKK30KKworY2xhc3MgUXRQbGF0Zm9ybVBhZ2VDbGllbnQgeworcHVibGljOgor
ICAgIHZpcnR1YWwgUVdlYlBhZ2VDbGllbnQqIHdlYlBhZ2VDbGllbnQoKSA9IDA7CisgICAgdmly
dHVhbCBXZWJDb3JlOjpRdERlbGVnYXRpb25DbGllbnQqIGRlbGVnYXRpb25DbGllbnQoKSA9IDA7
Cit9OworCisjZW5kaWYgLy8gUXRQbGF0Zm9ybVBhZ2VDbGllbnRfaApkaWZmIC0tZ2l0IGEvV2Vi
Q29yZS9wbGF0Zm9ybS9xdC9SZW5kZXJUaGVtZVF0LmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0vcXQv
UmVuZGVyVGhlbWVRdC5jcHAKaW5kZXggNzQxMjBkMy4uOTljMGVlOSAxMDA2NDQKLS0tIGEvV2Vi
Q29yZS9wbGF0Zm9ybS9xdC9SZW5kZXJUaGVtZVF0LmNwcAorKysgYi9XZWJDb3JlL3BsYXRmb3Jt
L3F0L1JlbmRlclRoZW1lUXQuY3BwCkBAIC03NjMsNyArNzYzLDggQEAgQ29udHJvbFBhcnQgUmVu
ZGVyVGhlbWVRdDo6YXBwbHlUaGVtZShRU3R5bGVPcHRpb24mIG9wdGlvbiwgUmVuZGVyT2JqZWN0
KiBvKSBjb24KICAgICBQYWdlKiBwYWdlID0gby0+ZG9jdW1lbnQoKS0+cGFnZSgpOwogICAgIGlm
IChwYWdlKSB7CiAgICAgICAgIENocm9tZUNsaWVudCogY2xpZW50ID0gcGFnZS0+Y2hyb21lKCkt
PmNsaWVudCgpOwotICAgICAgICBRV2ViUGFnZUNsaWVudCogcGFnZUNsaWVudCA9IGNsaWVudC0+
cGxhdGZvcm1QYWdlQ2xpZW50KCk7CisgICAgICAgIFBsYXRmb3JtUGFnZUNsaWVudCBwbGF0Zm9y
bUNsaWVudCA9IGNsaWVudC0+cGxhdGZvcm1QYWdlQ2xpZW50KCk7CisgICAgICAgIFFXZWJQYWdl
Q2xpZW50KiBwYWdlQ2xpZW50ID0gcGxhdGZvcm1DbGllbnQgPyBwbGF0Zm9ybUNsaWVudC0+d2Vi
UGFnZUNsaWVudCgpIDogMDsKICAgICAgICAgaWYgKHBhZ2VDbGllbnQpCiAgICAgICAgICAgICBv
cHRpb24ucGFsZXR0ZSA9IHBhZ2VDbGllbnQtPnBhbGV0dGUoKTsKICAgICB9CmRpZmYgLS1naXQg
YS9XZWJDb3JlL3BsYXRmb3JtL3F0L1dpZGdldFF0LmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0vcXQv
V2lkZ2V0UXQuY3BwCmluZGV4IDI1MmJkYjQuLjg0OGQ0NGEgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUv
cGxhdGZvcm0vcXQvV2lkZ2V0UXQuY3BwCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vcXQvV2lkZ2V0
UXQuY3BwCkBAIC04Miw3ICs4Miw4IEBAIHZvaWQgV2lkZ2V0OjpzZXRGb2N1cygpCiB2b2lkIFdp
ZGdldDo6c2V0Q3Vyc29yKGNvbnN0IEN1cnNvciYgY3Vyc29yKQogewogI2lmbmRlZiBRVF9OT19D
VVJTT1IKLSAgICBRV2ViUGFnZUNsaWVudCogcGFnZUNsaWVudCA9IHJvb3QoKS0+aG9zdFdpbmRv
dygpLT5wbGF0Zm9ybVBhZ2VDbGllbnQoKTsKKyAgICBQbGF0Zm9ybVBhZ2VDbGllbnQgcGxhdGZv
cm1DbGllbnQgPSByb290KCktPmhvc3RXaW5kb3coKS0+cGxhdGZvcm1QYWdlQ2xpZW50KCk7Cisg
ICAgUVdlYlBhZ2VDbGllbnQqIHBhZ2VDbGllbnQgPSBwbGF0Zm9ybUNsaWVudCA/IHBsYXRmb3Jt
Q2xpZW50LT53ZWJQYWdlQ2xpZW50KCkgOiAwOwogCiAgICAgaWYgKHBhZ2VDbGllbnQpCiAgICAg
ICAgIHBhZ2VDbGllbnQtPnNldEN1cnNvcihjdXJzb3IuaW1wbCgpKTsKZGlmZiAtLWdpdCBhL1dl
YkNvcmUvcGx1Z2lucy9xdC9QbHVnaW5WaWV3UXQuY3BwIGIvV2ViQ29yZS9wbHVnaW5zL3F0L1Bs
dWdpblZpZXdRdC5jcHAKaW5kZXggYjRlZTQ4ZS4uYjc1MGZlNSAxMDA2NDQKLS0tIGEvV2ViQ29y
ZS9wbHVnaW5zL3F0L1BsdWdpblZpZXdRdC5jcHAKKysrIGIvV2ViQ29yZS9wbHVnaW5zL3F0L1Bs
dWdpblZpZXdRdC5jcHAKQEAgLTE5Myw3ICsxOTMsOCBAQCB2b2lkIFBsdWdpblZpZXc6OnBhaW50
KEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgSW50UmVjdCYgcmVjdCkKICAgICAgICAg
Ly8gV2UgY2Fubm90IGdyYWIgY29udGVudHMgZnJvbSB0aGUgYmFja2luZyBzdG9yZSB3aGVuIHBh
aW50aW5nIG9uIFFHcmFwaGljc1ZpZXcgaXRlbXMKICAgICAgICAgLy8gKGJlY2F1c2UgYmFja2lu
ZyBzdG9yZSBjb250ZW50cyBhcmUgYWxyZWFkeSB0cmFuc2Zvcm1lZCkuIFdoYXQgd2UgcmVhbGx5
IG1lYW4gdG8gZG8gCiAgICAgICAgIC8vIGhlcmUgaXMgdG8gY2hlY2sgaWYgd2UgYXJlIHBhaW50
aW5nIG9uIFFXZWJWaWV3LCBidXQgbGV0J3MgYmUgYSBsaXR0bGUgcGVybWlzc2l2ZSA6KQotICAg
ICAgICBRV2ViUGFnZUNsaWVudCogY2xpZW50ID0gbV9wYXJlbnRGcmFtZS0+dmlldygpLT5ob3N0
V2luZG93KCktPnBsYXRmb3JtUGFnZUNsaWVudCgpOworICAgICAgICBQbGF0Zm9ybVBhZ2VDbGll
bnQgcGxhdGZvcm1DbGllbnQgPSBtX3BhcmVudEZyYW1lLT52aWV3KCktPmhvc3RXaW5kb3coKS0+
cGxhdGZvcm1QYWdlQ2xpZW50KCk7CisgICAgICAgIFFXZWJQYWdlQ2xpZW50KiBjbGllbnQgPSBw
bGF0Zm9ybUNsaWVudCA/IHBsYXRmb3JtQ2xpZW50LT53ZWJQYWdlQ2xpZW50KCkgOiAwOwogICAg
ICAgICBjb25zdCBib29sIGJhY2tpbmdTdG9yZUhhc1VudHJhbnNmb3JtZWRDb250ZW50cyA9IGNs
aWVudCAmJiBxb2JqZWN0X2Nhc3Q8UVdpZGdldCo+KGNsaWVudC0+cGx1Z2luUGFyZW50KCkpOwog
CiAgICAgICAgIGlmIChoYXNWYWxpZEJhY2tpbmdTdG9yZSAmJiBiYWNraW5nU3RvcmVQaXhtYXAt
PmRlcHRoKCkgPT0gZHJhd2FibGVEZXB0aCAKQEAgLTI2Miw3ICsyNjMsOCBAQCB2b2lkIFBsdWdp
blZpZXc6OmluaXRYRXZlbnQoWEV2ZW50KiB4RXZlbnQpCiB7CiAgICAgbWVtc2V0KHhFdmVudCwg
MCwgc2l6ZW9mKFhFdmVudCkpOwogCi0gICAgUVdlYlBhZ2VDbGllbnQqIGNsaWVudCA9IG1fcGFy
ZW50RnJhbWUtPnZpZXcoKS0+aG9zdFdpbmRvdygpLT5wbGF0Zm9ybVBhZ2VDbGllbnQoKTsKKyAg
ICBQbGF0Zm9ybVBhZ2VDbGllbnQgcGxhdGZvcm1DbGllbnQgPSBtX3BhcmVudEZyYW1lLT52aWV3
KCktPmhvc3RXaW5kb3coKS0+cGxhdGZvcm1QYWdlQ2xpZW50KCk7CisgICAgUVdlYlBhZ2VDbGll
bnQqIGNsaWVudCA9IHBsYXRmb3JtQ2xpZW50ID8gcGxhdGZvcm1DbGllbnQtPndlYlBhZ2VDbGll
bnQoKSA6IDA7CiAgICAgUVdpZGdldCogb3duZXJXaWRnZXQgPSBjbGllbnQgPyBjbGllbnQtPm93
bmVyV2lkZ2V0KCkgOiAwOwogICAgIHNldFNoYXJlZFhFdmVudEZpZWxkcyh4RXZlbnQsIG93bmVy
V2lkZ2V0KTsKIH0KQEAgLTYyNyw3ICs2MjksOCBAQCBOUEVycm9yIFBsdWdpblZpZXc6OmdldFZh
bHVlKE5QTlZhcmlhYmxlIHZhcmlhYmxlLCB2b2lkKiB2YWx1ZSkKIAogICAgIGNhc2UgTlBOVm5l
dHNjYXBlV2luZG93OiB7CiAgICAgICAgIHZvaWQqIHcgPSByZWludGVycHJldF9jYXN0PHZvaWQq
Pih2YWx1ZSk7Ci0gICAgICAgIFFXZWJQYWdlQ2xpZW50KiBjbGllbnQgPSBtX3BhcmVudEZyYW1l
LT52aWV3KCktPmhvc3RXaW5kb3coKS0+cGxhdGZvcm1QYWdlQ2xpZW50KCk7CisgICAgICAgIFBs
YXRmb3JtUGFnZUNsaWVudCBwbGF0Zm9ybUNsaWVudCA9IG1fcGFyZW50RnJhbWUtPnZpZXcoKS0+
aG9zdFdpbmRvdygpLT5wbGF0Zm9ybVBhZ2VDbGllbnQoKTsKKyAgICAgICAgUVdlYlBhZ2VDbGll
bnQqIGNsaWVudCA9IHBsYXRmb3JtQ2xpZW50ID8gcGxhdGZvcm1DbGllbnQtPndlYlBhZ2VDbGll
bnQoKSA6IDA7CiAgICAgICAgICooKFhJRCAqKXcpID0gY2xpZW50ID8gY2xpZW50LT5vd25lcldp
ZGdldCgpLT53aW5kb3coKS0+d2luSWQoKSA6IDA7CiAgICAgICAgIHJldHVybiBOUEVSUl9OT19F
UlJPUjsKICAgICB9CkBAIC03NTQsNyArNzU3LDggQEAgYm9vbCBQbHVnaW5WaWV3OjpwbGF0Zm9y
bVN0YXJ0KCkKICAgICB9CiAKICAgICBpZiAobV9pc1dpbmRvd2VkKSB7Ci0gICAgICAgIFFXZWJQ
YWdlQ2xpZW50KiBjbGllbnQgPSBtX3BhcmVudEZyYW1lLT52aWV3KCktPmhvc3RXaW5kb3coKS0+
cGxhdGZvcm1QYWdlQ2xpZW50KCk7CisgICAgICAgIFBsYXRmb3JtUGFnZUNsaWVudCBwbGF0Zm9y
bUNsaWVudCA9IG1fcGFyZW50RnJhbWUtPnZpZXcoKS0+aG9zdFdpbmRvdygpLT5wbGF0Zm9ybVBh
Z2VDbGllbnQoKTsKKyAgICAgICAgUVdlYlBhZ2VDbGllbnQqIGNsaWVudCA9IHBsYXRmb3JtQ2xp
ZW50ID8gcGxhdGZvcm1DbGllbnQtPndlYlBhZ2VDbGllbnQoKSA6IDA7CiAgICAgICAgIGlmICht
X25lZWRzWEVtYmVkICYmIGNsaWVudCkgewogICAgICAgICAgICAgc2V0UGxhdGZvcm1XaWRnZXQo
bmV3IFBsdWdpbkNvbnRhaW5lclF0KHRoaXMsIGNsaWVudC0+b3duZXJXaWRnZXQoKSkpOwogICAg
ICAgICAgICAgLy8gc3luYyBvdXIgWEVtYmVkIGNvbnRhaW5lciB3aW5kb3cgY3JlYXRpb24gYmVm
b3JlIHNlbmRpbmcgdGhlIHhpZCB0byBwbHVnaW5zLgpkaWZmIC0tZ2l0IGEvV2ViS2l0L3F0L0Fw
aS9xZ3JhcGhpY3N3ZWJ2aWV3LmNwcCBiL1dlYktpdC9xdC9BcGkvcWdyYXBoaWNzd2Vidmlldy5j
cHAKaW5kZXggMDMxZDhmOC4uNjJlOTdkMiAxMDA2NDQKLS0tIGEvV2ViS2l0L3F0L0FwaS9xZ3Jh
cGhpY3N3ZWJ2aWV3LmNwcAorKysgYi9XZWJLaXQvcXQvQXBpL3FncmFwaGljc3dlYnZpZXcuY3Bw
CkBAIC0yNjEsNyArMjYxLDcgQEAgUUdyYXBoaWNzV2ViVmlldzo6flFHcmFwaGljc1dlYlZpZXco
KQogI2Vsc2UKICAgICAgICAgZC0+cGFnZS0+ZC0+dmlldyA9IDA7CiAjZW5kaWYKLSAgICAgICAg
ZC0+cGFnZS0+ZC0+Y2xpZW50ID0gMDsgLy8gdW5zZXQgdGhlIHBhZ2UgY2xpZW50CisgICAgICAg
IGQtPnBhZ2UtPmQtPnBsYXRmb3JtQ2xpZW50LT5zZXRQYWdlQ2xpZW50KDApOyAvLyB1bnNldCB0
aGUgcGFnZSBjbGllbnQKICAgICB9CiAKICAgICBpZiAoZC0+cGFnZSAmJiBkLT5wYWdlLT5wYXJl
bnQoKSA9PSB0aGlzKQpAQCAtNDE1LDcgKzQxNSw3IEBAIHZvaWQgUUdyYXBoaWNzV2ViVmlldzo6
c2V0UGFnZShRV2ViUGFnZSogcGFnZSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKGQtPnBh
Z2UpIHsKLSAgICAgICAgZC0+cGFnZS0+ZC0+Y2xpZW50ID0gMDsgLy8gdW5zZXQgdGhlIHBhZ2Ug
Y2xpZW50CisgICAgICAgIGQtPnBhZ2UtPmQtPnBsYXRmb3JtQ2xpZW50LT5zZXRQYWdlQ2xpZW50
KDApOyAvLyB1bnNldCB0aGUgcGFnZSBjbGllbnQKICAgICAgICAgaWYgKGQtPnBhZ2UtPnBhcmVu
dCgpID09IHRoaXMpCiAgICAgICAgICAgICBkZWxldGUgZC0+cGFnZTsKICAgICAgICAgZWxzZQpA
QCAtNDI1LDcgKzQyNSw3IEBAIHZvaWQgUUdyYXBoaWNzV2ViVmlldzo6c2V0UGFnZShRV2ViUGFn
ZSogcGFnZSkKICAgICBkLT5wYWdlID0gcGFnZTsKICAgICBpZiAoIWQtPnBhZ2UpCiAgICAgICAg
IHJldHVybjsKLSAgICBkLT5wYWdlLT5kLT5jbGllbnQgPSBkOyAvLyBzZXQgdGhlIHBhZ2UgY2xp
ZW50CisgICAgZC0+cGFnZS0+ZC0+cGxhdGZvcm1DbGllbnQtPnNldFBhZ2VDbGllbnQoZCk7IC8v
IHNldCB0aGUgcGFnZSBjbGllbnQKIAogICAgIFFTaXplIHNpemUgPSBnZW9tZXRyeSgpLnNpemUo
KS50b1NpemUoKTsKICAgICBwYWdlLT5zZXRWaWV3cG9ydFNpemUoc2l6ZSk7CmRpZmYgLS1naXQg
YS9XZWJLaXQvcXQvQXBpL3F3ZWJwYWdlLmNwcCBiL1dlYktpdC9xdC9BcGkvcXdlYnBhZ2UuY3Bw
CmluZGV4IDYyOTY0ODQuLjhjNGU1NTMgMTAwNjQ0Ci0tLSBhL1dlYktpdC9xdC9BcGkvcXdlYnBh
Z2UuY3BwCisrKyBiL1dlYktpdC9xdC9BcGkvcXdlYnBhZ2UuY3BwCkBAIC0zNjUsNyArMzY1LDYg
QEAgc3RhdGljIGlubGluZSBRdDo6RHJvcEFjdGlvbiBkcmFnT3BUb0Ryb3BBY3Rpb24odW5zaWdu
ZWQgYWN0aW9ucykKIAogUVdlYlBhZ2VQcml2YXRlOjpRV2ViUGFnZVByaXZhdGUoUVdlYlBhZ2Ug
KnFxKQogICAgIDogcShxcSkKLSAgICAsIGNsaWVudCgwKQogI2lmIFFUX1ZFUlNJT04gPCAweDA0
MDYwMAogICAgICwgdmlldygwKQogI2VuZGlmCkBAIC0zODcsNiArMzg2LDggQEAgUVdlYlBhZ2VQ
cml2YXRlOjpRV2ViUGFnZVByaXZhdGUoUVdlYlBhZ2UgKnFxKQogCiAgICAgc2V0dGluZ3MgPSBu
ZXcgUVdlYlNldHRpbmdzKHBhZ2UtPnNldHRpbmdzKCkpOwogCisgICAgcGxhdGZvcm1DbGllbnQg
PSBuZXcgUGxhdGZvcm1DbGllbnQoKTsKKwogI2lmbmRlZiBRVF9OT19VTkRPU1RBQ0sKICAgICB1
bmRvU3RhY2sgPSAwOwogI2VuZGlmCkBAIC00MTgsNiArNDE5LDcgQEAgUVdlYlBhZ2VQcml2YXRl
Ojp+UVdlYlBhZ2VQcml2YXRlKCkKICNlbmRpZgogICAgIGRlbGV0ZSBzZXR0aW5nczsKICAgICBk
ZWxldGUgcGFnZTsKKyAgICBkZWxldGUgcGxhdGZvcm1DbGllbnQ7CiB9CiAKIGJvb2wgUVdlYlBh
Z2VQcml2YXRlOjphY2NlcHROYXZpZ2F0aW9uUmVxdWVzdChRV2ViRnJhbWUgKmZyYW1lLCBjb25z
dCBRTmV0d29ya1JlcXVlc3QgJnJlcXVlc3QsIFFXZWJQYWdlOjpOYXZpZ2F0aW9uVHlwZSB0eXBl
KQpAQCAtODU3LDYgKzg1OSw4IEBAIHZvaWQgUVdlYlBhZ2VQcml2YXRlOjpoYW5kbGVTb2Z0d2Fy
ZUlucHV0UGFuZWwoUXQ6Ok1vdXNlQnV0dG9uIGJ1dHRvbikKICAgICBpZiAoIWZyYW1lKQogICAg
ICAgICByZXR1cm47CiAKKyAgICBRV2ViUGFnZUNsaWVudCogY2xpZW50ID0gcGxhdGZvcm1DbGll
bnQtPndlYlBhZ2VDbGllbnQoKTsKKwogICAgIGlmIChjbGllbnQgJiYgY2xpZW50LT5pbnB1dE1l
dGhvZEVuYWJsZWQoKQogICAgICAgICAmJiBmcmFtZS0+ZG9jdW1lbnQoKS0+Zm9jdXNlZE5vZGUo
KQogICAgICAgICAmJiBidXR0b24gPT0gUXQ6OkxlZnRCdXR0b24gJiYgcUFwcC0+YXV0b1NpcEVu
YWJsZWQoKSkgewpAQCAtMTc4MSwxMyArMTc4NSwxMyBAQCB2b2lkIFFXZWJQYWdlOjpzZXRWaWV3
KFFXaWRnZXQgKnZpZXcpCiAgICAgaWYgKHRoaXMtPnZpZXcoKSAhPSB2aWV3KSB7CiAgICAgICAg
IGQtPnZpZXcgPSB2aWV3OwogICAgICAgICBpZiAoIXZpZXcpIHsKLSAgICAgICAgICAgIGRlbGV0
ZSBkLT5jbGllbnQ7Ci0gICAgICAgICAgICBkLT5jbGllbnQgPSAwOworICAgICAgICAgICAgZGVs
ZXRlIGQtPnBsYXRmb3JtQ2xpZW50LT53ZWJQYWdlQ2xpZW50KCk7CisgICAgICAgICAgICBkLT5w
bGF0Zm9ybUNsaWVudC0+c2V0UGFnZUNsaWVudCgwKTsKICAgICAgICAgfSBlbHNlIHsKLSAgICAg
ICAgICAgIGlmICghZC0+Y2xpZW50KSAKLSAgICAgICAgICAgICAgICBkLT5jbGllbnQgPSBuZXcg
UVdlYlBhZ2VXaWRnZXRDbGllbnQodmlldyk7CisgICAgICAgICAgICBpZiAoIWQtPnBsYXRmb3Jt
Q2xpZW50LT53ZWJQYWdlQ2xpZW50KCkpCisgICAgICAgICAgICAgICAgZC0+cGxhdGZvcm1DbGll
bnQtPnNldFBhZ2VDbGllbnQobmV3IFFXZWJQYWdlV2lkZ2V0Q2xpZW50KHZpZXcpKTsKICAgICAg
ICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBzdGF0aWNfY2FzdDxRV2ViUGFnZVdpZGdldENs
aWVudCo+KGQtPmNsaWVudCktPnZpZXcgPSB2aWV3OworICAgICAgICAgICAgICAgIHN0YXRpY19j
YXN0PFFXZWJQYWdlV2lkZ2V0Q2xpZW50Kj4oZC0+cGxhdGZvcm1DbGllbnQtPndlYlBhZ2VDbGll
bnQoKSktPnZpZXcgPSB2aWV3OwogICAgICAgICB9CiAgICAgICAgIHNldFZpZXdwb3J0U2l6ZSh2
aWV3ID8gdmlldy0+c2l6ZSgpIDogUVNpemUoMCwgMCkpOwogICAgIH0KZGlmZiAtLWdpdCBhL1dl
YktpdC9xdC9BcGkvcXdlYnBhZ2VfcC5oIGIvV2ViS2l0L3F0L0FwaS9xd2VicGFnZV9wLmgKaW5k
ZXggZmZiZGQ1MS4uODE1Y2E2NyAxMDA2NDQKLS0tIGEvV2ViS2l0L3F0L0FwaS9xd2VicGFnZV9w
LmgKKysrIGIvV2ViS2l0L3F0L0FwaS9xd2VicGFnZV9wLmgKQEAgLTMxLDggKzMxLDEwIEBACiAj
aW5jbHVkZSAicXdlYmhpc3RvcnkuaCIKICNpbmNsdWRlICJxd2ViZnJhbWUuaCIKIAorCiAjaW5j
bHVkZSAiS1VSTC5oIgogI2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCisjaW5jbHVkZSAiUXRQ
bGF0Zm9ybVBhZ2VDbGllbnQuaCIKIAogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KIApAQCAtNTgs
NiArNjAsMTggQEAgUVRfRU5EX05BTUVTUEFDRQogY2xhc3MgUVdlYkluc3BlY3RvcjsKIGNsYXNz
IFFXZWJQYWdlQ2xpZW50OwogCitjbGFzcyBQbGF0Zm9ybUNsaWVudCA6IHB1YmxpYyBRdFBsYXRm
b3JtUGFnZUNsaWVudCB7CitwdWJsaWM6CisgICAgUGxhdGZvcm1DbGllbnQoKSA6IG1fcGFnZUNs
aWVudCgwKSB7fQorICAgIHZpcnR1YWwgUVdlYlBhZ2VDbGllbnQqIHdlYlBhZ2VDbGllbnQoKSB7
IHJldHVybiBtX3BhZ2VDbGllbnQ7IH0KKyAgICB2aXJ0dWFsIFdlYkNvcmU6OlF0RGVsZWdhdGlv
bkNsaWVudCogZGVsZWdhdGlvbkNsaWVudCgpIHsgcmV0dXJuIDA7IH0KKworICAgIHZvaWQgc2V0
UGFnZUNsaWVudChRV2ViUGFnZUNsaWVudCogcGFnZUNsaWVudCkgeyBtX3BhZ2VDbGllbnQgPSBw
YWdlQ2xpZW50OyB9CisKK3ByaXZhdGU6CisgICAgUVdlYlBhZ2VDbGllbnQqIG1fcGFnZUNsaWVu
dDsKK307CisKIGNsYXNzIFFXZWJQYWdlUHJpdmF0ZSB7CiBwdWJsaWM6CiAgICAgUVdlYlBhZ2VQ
cml2YXRlKFFXZWJQYWdlKik7CkBAIC0xMzUsNyArMTQ5LDYgQEAgcHVibGljOgogICAgIFFQb2lu
dGVyPFFXZWJGcmFtZT4gbWFpbkZyYW1lOwogCiAgICAgUVdlYlBhZ2UgKnE7Ci0gICAgUVdlYlBh
Z2VDbGllbnQqIGNsaWVudDsKICNpZm5kZWYgUVRfTk9fVU5ET1NUQUNLCiAgICAgUVVuZG9TdGFj
ayAqdW5kb1N0YWNrOwogI2VuZGlmCkBAIC0xODIsNiArMTk1LDggQEAgcHVibGljOgogICAgIGJv
b2wgaW5zcGVjdG9ySXNJbnRlcm5hbE9ubHk7IC8vIFRydWUgaWYgY3JlYXRlZCB0aHJvdWdoIHRo
ZSBJbnNwZWN0IGNvbnRleHQgbWVudSBhY3Rpb24KIAogICAgIHN0YXRpYyBib29sIGRydFJ1bjsK
KworICAgIFBsYXRmb3JtQ2xpZW50KiBwbGF0Zm9ybUNsaWVudDsKIH07CiAKICNlbmRpZgpkaWZm
IC0tZ2l0IGEvV2ViS2l0L3F0L0FwaS9xd2Vidmlldy5jcHAgYi9XZWJLaXQvcXQvQXBpL3F3ZWJ2
aWV3LmNwcAppbmRleCAyNzVmMjA4Li5mYjU1NWRmIDEwMDY0NAotLS0gYS9XZWJLaXQvcXQvQXBp
L3F3ZWJ2aWV3LmNwcAorKysgYi9XZWJLaXQvcXQvQXBpL3F3ZWJ2aWV3LmNwcApAQCAtMTc0LDgg
KzE3NCw4IEBAIFFXZWJWaWV3Ojp+UVdlYlZpZXcoKQogI2Vsc2UKICAgICAgICAgZC0+cGFnZS0+
ZC0+dmlldyA9IDA7CiAjZW5kaWYKLSAgICAgICAgZGVsZXRlIGQtPnBhZ2UtPmQtPmNsaWVudDsK
LSAgICAgICAgZC0+cGFnZS0+ZC0+Y2xpZW50ID0gMDsKKyAgICAgICAgZGVsZXRlIGQtPnBhZ2Ut
PmQtPnBsYXRmb3JtQ2xpZW50LT53ZWJQYWdlQ2xpZW50KCk7CisgICAgICAgIGQtPnBhZ2UtPmQt
PnBsYXRmb3JtQ2xpZW50LT5zZXRQYWdlQ2xpZW50KDApOwogICAgIH0KIAogICAgIGlmIChkLT5w
YWdlICYmIGQtPnBhZ2UtPnBhcmVudCgpID09IHRoaXMpCkBAIC0yMTEsNyArMjExLDcgQEAgdm9p
ZCBRV2ViVmlldzo6c2V0UGFnZShRV2ViUGFnZSogcGFnZSkKICAgICBpZiAoZC0+cGFnZSA9PSBw
YWdlKQogICAgICAgICByZXR1cm47CiAgICAgaWYgKGQtPnBhZ2UpIHsKLSAgICAgICAgZC0+cGFn
ZS0+ZC0+Y2xpZW50ID0gMDsgLy8gdW5zZXQgdGhlIHBhZ2UgY2xpZW50CisgICAgICAgIGQtPnBh
Z2UtPmQtPnBsYXRmb3JtQ2xpZW50LT5zZXRQYWdlQ2xpZW50KDApOyAvLyB1bnNldCB0aGUgcGFn
ZSBjbGllbnQKICAgICAgICAgaWYgKGQtPnBhZ2UtPnBhcmVudCgpID09IHRoaXMpCiAgICAgICAg
ICAgICBkZWxldGUgZC0+cGFnZTsKICAgICAgICAgZWxzZQpAQCAtNjQyLDcgKzY0Miw3IEBAIGJv
b2wgUVdlYlZpZXc6OmV2ZW50KFFFdmVudCAqZSkKICAgICAgICAgICAgIC8vIFdlYkNvcmUuCiAg
ICAgICAgICAgICAvLyBGSVhNRTogQWRkIGEgUUV2ZW50OjpDdXJzb3JVbnNldCBvciBzaW1pbGFy
IHRvIFF0LgogICAgICAgICAgICAgaWYgKGN1cnNvcigpLnNoYXBlKCkgPT0gUXQ6OkFycm93Q3Vy
c29yKQotICAgICAgICAgICAgICAgIGQtPnBhZ2UtPmQtPmNsaWVudC0+cmVzZXRDdXJzb3IoKTsK
KyAgICAgICAgICAgICAgICBkLT5wYWdlLT5kLT5wbGF0Zm9ybUNsaWVudC0+d2ViUGFnZUNsaWVu
dCgpLT5yZXNldEN1cnNvcigpOwogI2VuZGlmCiAjaWYgUVRfVkVSU0lPTiA+PSBRVF9WRVJTSU9O
X0NIRUNLKDQsIDYsIDApCiAgICAgICAgIH0gZWxzZSBpZiAoZS0+dHlwZSgpID09IFFFdmVudDo6
VG91Y2hCZWdpbiAKZGlmZiAtLWdpdCBhL1dlYktpdC9xdC9DaGFuZ2VMb2cgYi9XZWJLaXQvcXQv
Q2hhbmdlTG9nCmluZGV4IDhkZmFiNjkuLjNhZDE5MzcgMTAwNjQ0Ci0tLSBhL1dlYktpdC9xdC9D
aGFuZ2VMb2cKKysrIGIvV2ViS2l0L3F0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ3IEBACisyMDA5
LTEyLTIxICBMdWl6IEFnb3N0aW5pICA8bHVpei5hZ29zdGluaUBvcGVuYm9zc2Eub3JnPgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFtRdF0gRGVsZWdh
dGlvbiBjbGllbnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTMyODI2CisKKyAgICAgICAgUXQgZGVsZWdhdGlvbiBjbGllbnQuCisKKyAgICAgICAgVGhl
IG5ldyBjbGFzcyBRdFBsYXRmb3JtUGFnZUNsaWVudCByZXBsYWNlZCB0aGUgY2xhc3MgUVdlYlBh
Z2VDbGllbnQKKyAgICAgICAgYXMgdHlwZSBQbGF0YWZvcm1QYWdlQ2xpZW50IChXaWRnZXQuaCA3
OSkuIFF0UGxhdGZvcm1QYWdlQ2xpZW50IGlzIGNvbXBvc2VkCisgICAgICAgIGJ5IGFuIGluc3Rh
bmNlIG9mIFFXZWJQYWdlQ2xpZW50IGFuZCBhbiBpbnN0YW5jZSBvZiB0aGUgbmV3IGNsYXNzCisg
ICAgICAgIFF0RGVsZWdhdGlvbkNsaWVudC4gVGhpcyB3YXkgYW4gb2JqZWN0IG9mIGNsYXNzIFF0
RGVsZWdhdGlvbkNsaWVudCBwcm92aWRlZCBieQorICAgICAgICB0aGUgV2ViS2l0IGxheWVyIGlz
IGVhc2lseSBhY2Nlc3NpYmxlIGluIFdlYkNvcmUgbGF5ZXIgdGhyb3VnaCB0aGUKKyAgICAgICAg
SG9zdFdpbmRvdyBpbnRyZWZhY2UuCisKKyAgICAgICAgQWxsIHJlbGF0ZWQgY2hhbmdlcyBoYXZl
IGJlZW4gbWFkZSBpbiBXZWJDb3JlIGFuZCBXZWJLaXQgbGF5ZXJzLgorCisgICAgICAgICogQXBp
L3FncmFwaGljc3dlYnZpZXcuY3BwOgorICAgICAgICAoUUdyYXBoaWNzV2ViVmlldzo6flFHcmFw
aGljc1dlYlZpZXcpOgorICAgICAgICAoUUdyYXBoaWNzV2ViVmlldzo6c2V0UGFnZSk6CisgICAg
ICAgICogQXBpL3F3ZWJwYWdlLmNwcDoKKyAgICAgICAgKFFXZWJQYWdlUHJpdmF0ZTo6UVdlYlBh
Z2VQcml2YXRlKToKKyAgICAgICAgKFFXZWJQYWdlUHJpdmF0ZTo6flFXZWJQYWdlUHJpdmF0ZSk6
CisgICAgICAgIChRV2ViUGFnZVByaXZhdGU6OmhhbmRsZVNvZnR3YXJlSW5wdXRQYW5lbCk6Cisg
ICAgICAgIChRV2ViUGFnZTo6c2V0Vmlldyk6CisgICAgICAgICogQXBpL3F3ZWJwYWdlX3AuaDoK
KyAgICAgICAgKFBsYXRmb3JtQ2xpZW50OjpQbGF0Zm9ybUNsaWVudCk6CisgICAgICAgIChQbGF0
Zm9ybUNsaWVudDo6d2ViUGFnZUNsaWVudCk6CisgICAgICAgIChQbGF0Zm9ybUNsaWVudDo6ZGVs
ZWdhdGlvbkNsaWVudCk6CisgICAgICAgIChQbGF0Zm9ybUNsaWVudDo6c2V0UGFnZUNsaWVudCk6
CisgICAgICAgICogQXBpL3F3ZWJ2aWV3LmNwcDoKKyAgICAgICAgKFFXZWJWaWV3Ojp+UVdlYlZp
ZXcpOgorICAgICAgICAoUVdlYlZpZXc6OnNldFBhZ2UpOgorICAgICAgICAoUVdlYlZpZXc6OmV2
ZW50KToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRRdC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpDaHJvbWVDbGllbnRRdDo6cmVwYWludCk6CisgICAgICAgIChXZWJDb3Jl
OjpDaHJvbWVDbGllbnRRdDo6c2Nyb2xsKToKKyAgICAgICAgKFdlYkNvcmU6OkNocm9tZUNsaWVu
dFF0OjpwbGF0Zm9ybVBhZ2VDbGllbnQpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0VkaXRv
ckNsaWVudFF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvckNsaWVudFF0OjpzZXRJbnB1
dE1ldGhvZFN0YXRlKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVu
dFF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50UXQ6OmNyZWF0ZVBs
dWdpbik6CisKIDIwMDktMTItMTggIEFyaXlhIEhpZGF5YXQgIDxhcml5YS5oaWRheWF0QGdtYWls
LmNvbT4KIAogICAgICAgICBCdWlsZCBmaXgsIG5vdCByZXZpZXdlZC4KZGlmZiAtLWdpdCBhL1dl
YktpdC9xdC9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRRdC5jcHAgYi9XZWJLaXQvcXQvV2Vi
Q29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50UXQuY3BwCmluZGV4IDczY2I0ZDcuLmJjOWM0ZWQgMTAw
NjQ0Ci0tLSBhL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRRdC5jcHAKKysr
IGIvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudFF0LmNwcApAQCAtMzI0LDgg
KzMyNCw4IEBAIHZvaWQgQ2hyb21lQ2xpZW50UXQ6OnJlcGFpbnQoY29uc3QgSW50UmVjdCYgd2lu
ZG93UmVjdCwgYm9vbCBjb250ZW50Q2hhbmdlZCwgYm9vCiAgICAgICAgIGlmIChwbGF0Zm9ybVBh
Z2VDbGllbnQoKSkgewogICAgICAgICAgICAgUVJlY3QgcmVjdCh3aW5kb3dSZWN0KTsKICAgICAg
ICAgICAgIHJlY3QgPSByZWN0LmludGVyc2VjdGVkKFFSZWN0KFFQb2ludCgwLCAwKSwgbV93ZWJQ
YWdlLT52aWV3cG9ydFNpemUoKSkpOwotICAgICAgICAgICAgaWYgKCFyZWN0LmlzRW1wdHkoKSkK
LSAgICAgICAgICAgICAgICBwbGF0Zm9ybVBhZ2VDbGllbnQoKS0+dXBkYXRlKHJlY3QpOworICAg
ICAgICAgICAgaWYgKCFyZWN0LmlzRW1wdHkoKSAmJiBwbGF0Zm9ybVBhZ2VDbGllbnQoKS0+d2Vi
UGFnZUNsaWVudCgpKQorICAgICAgICAgICAgICAgIHBsYXRmb3JtUGFnZUNsaWVudCgpLT53ZWJQ
YWdlQ2xpZW50KCktPnVwZGF0ZShyZWN0KTsKICAgICAgICAgfQogICAgICAgICBlbWl0IG1fd2Vi
UGFnZS0+cmVwYWludFJlcXVlc3RlZCh3aW5kb3dSZWN0KTsKICAgICB9CkBAIC0zMzYsOCArMzM2
LDggQEAgdm9pZCBDaHJvbWVDbGllbnRRdDo6cmVwYWludChjb25zdCBJbnRSZWN0JiB3aW5kb3dS
ZWN0LCBib29sIGNvbnRlbnRDaGFuZ2VkLCBib28KIAogdm9pZCBDaHJvbWVDbGllbnRRdDo6c2Ny
b2xsKGNvbnN0IEludFNpemUmIGRlbHRhLCBjb25zdCBJbnRSZWN0JiBzY3JvbGxWaWV3UmVjdCwg
Y29uc3QgSW50UmVjdCYpCiB7Ci0gICAgaWYgKHBsYXRmb3JtUGFnZUNsaWVudCgpKQotICAgICAg
ICBwbGF0Zm9ybVBhZ2VDbGllbnQoKS0+c2Nyb2xsKGRlbHRhLndpZHRoKCksIGRlbHRhLmhlaWdo
dCgpLCBzY3JvbGxWaWV3UmVjdCk7CisgICAgaWYgKHBsYXRmb3JtUGFnZUNsaWVudCgpICYmIHBs
YXRmb3JtUGFnZUNsaWVudCgpLT53ZWJQYWdlQ2xpZW50KCkpCisgICAgICAgIHBsYXRmb3JtUGFn
ZUNsaWVudCgpLT53ZWJQYWdlQ2xpZW50KCktPnNjcm9sbChkZWx0YS53aWR0aCgpLCBkZWx0YS5o
ZWlnaHQoKSwgc2Nyb2xsVmlld1JlY3QpOwogICAgIGVtaXQgbV93ZWJQYWdlLT5zY3JvbGxSZXF1
ZXN0ZWQoZGVsdGEud2lkdGgoKSwgZGVsdGEuaGVpZ2h0KCksIHNjcm9sbFZpZXdSZWN0KTsKIH0K
IApAQCAtMzU1LDcgKzM1NSw3IEBAIEludFBvaW50IENocm9tZUNsaWVudFF0OjpzY3JlZW5Ub1dp
bmRvdyhjb25zdCBJbnRQb2ludCYgcG9pbnQpIGNvbnN0CiAKIFBsYXRmb3JtUGFnZUNsaWVudCBD
aHJvbWVDbGllbnRRdDo6cGxhdGZvcm1QYWdlQ2xpZW50KCkgY29uc3QKIHsKLSAgICByZXR1cm4g
bV93ZWJQYWdlLT5kLT5jbGllbnQ7CisgICAgcmV0dXJuIG1fd2ViUGFnZS0+ZC0+cGxhdGZvcm1D
bGllbnQ7CiB9CiAKIHZvaWQgQ2hyb21lQ2xpZW50UXQ6OmNvbnRlbnRzU2l6ZUNoYW5nZWQoRnJh
bWUqIGZyYW1lLCBjb25zdCBJbnRTaXplJiBzaXplKSBjb25zdApkaWZmIC0tZ2l0IGEvV2ViS2l0
L3F0L1dlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudFF0LmNwcCBiL1dlYktpdC9xdC9XZWJDb3Jl
U3VwcG9ydC9FZGl0b3JDbGllbnRRdC5jcHAKaW5kZXggMzA5MWE0My4uNGViODFjMSAxMDA2NDQK
LS0tIGEvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudFF0LmNwcAorKysgYi9X
ZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50UXQuY3BwCkBAIC02MDgsNyArNjA4
LDcgQEAgYm9vbCBFZGl0b3JDbGllbnRRdDo6aXNFZGl0aW5nKCkgY29uc3QKIAogdm9pZCBFZGl0
b3JDbGllbnRRdDo6c2V0SW5wdXRNZXRob2RTdGF0ZShib29sIGFjdGl2ZSkKIHsKLSAgICBRV2Vi
UGFnZUNsaWVudCogd2ViUGFnZUNsaWVudCA9IG1fcGFnZS0+ZC0+Y2xpZW50OworICAgIFFXZWJQ
YWdlQ2xpZW50KiB3ZWJQYWdlQ2xpZW50ID0gbV9wYWdlLT5kLT5wbGF0Zm9ybUNsaWVudC0+d2Vi
UGFnZUNsaWVudCgpOwogICAgIGlmICh3ZWJQYWdlQ2xpZW50KSB7CiAjaWYgUVRfVkVSU0lPTiA+
PSAweDA0MDYwMAogICAgICAgICBib29sIGlzUGFzc3dvcmRGaWVsZCA9IGZhbHNlOwpkaWZmIC0t
Z2l0IGEvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50UXQuY3BwIGIv
V2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50UXQuY3BwCmluZGV4IDNj
MzBhYjUuLjhjNTM4MjAgMTAwNjQ0Ci0tLSBhL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9GcmFt
ZUxvYWRlckNsaWVudFF0LmNwcAorKysgYi9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRnJhbWVM
b2FkZXJDbGllbnRRdC5jcHAKQEAgLTEyNzIsOCArMTI3Miw5IEBAIFBhc3NSZWZQdHI8V2lkZ2V0
PiBGcmFtZUxvYWRlckNsaWVudFF0OjpjcmVhdGVQbHVnaW4oY29uc3QgSW50U2l6ZSYgcGx1Z2lu
U2l6ZSwKICAgICAgICAgICAgIFFXaWRnZXQqIHdpZGdldCA9IHFvYmplY3RfY2FzdDxRV2lkZ2V0
Kj4ob2JqZWN0KTsKICAgICAgICAgICAgIGlmICh3aWRnZXQpIHsKICAgICAgICAgICAgICAgICBR
V2lkZ2V0KiBwYXJlbnRXaWRnZXQgPSAwOwotICAgICAgICAgICAgICAgIGlmIChtX3dlYkZyYW1l
LT5wYWdlKCktPmQtPmNsaWVudCkKLSAgICAgICAgICAgICAgICAgICAgcGFyZW50V2lkZ2V0ID0g
cW9iamVjdF9jYXN0PFFXaWRnZXQqPihtX3dlYkZyYW1lLT5wYWdlKCktPmQtPmNsaWVudC0+cGx1
Z2luUGFyZW50KCkpOworICAgICAgICAgICAgICAgIFFXZWJQYWdlQ2xpZW50KiBjbGllbnQgPSBt
X3dlYkZyYW1lLT5wYWdlKCktPmQtPnBsYXRmb3JtQ2xpZW50LT53ZWJQYWdlQ2xpZW50KCk7Cisg
ICAgICAgICAgICAgICAgaWYgKGNsaWVudCkKKyAgICAgICAgICAgICAgICAgICAgcGFyZW50V2lk
Z2V0ID0gcW9iamVjdF9jYXN0PFFXaWRnZXQqPihjbGllbnQtPnBsdWdpblBhcmVudCgpKTsKICAg
ICAgICAgICAgICAgICBpZiAocGFyZW50V2lkZ2V0KSAvLyBkb24ndCByZXBhcmVudCB0byBub3Ro
aW5nIChpLmUuIGtlZXAgd2hhdGV2ZXIgcGFyZW50IFFXZWJQYWdlOjpjcmVhdGVQbHVnaW4oKSBj
aG9zZS4KICAgICAgICAgICAgICAgICAgICAgd2lkZ2V0LT5zZXRQYXJlbnQocGFyZW50V2lkZ2V0
KTsKICAgICAgICAgICAgICAgICB3aWRnZXQtPmhpZGUoKTsKQEAgLTEyODcsOCArMTI4OCw5IEBA
IFBhc3NSZWZQdHI8V2lkZ2V0PiBGcmFtZUxvYWRlckNsaWVudFF0OjpjcmVhdGVQbHVnaW4oY29u
c3QgSW50U2l6ZSYgcGx1Z2luU2l6ZSwKICAgICAgICAgICAgIFFHcmFwaGljc1dpZGdldCogZ3Jh
cGhpY3NXaWRnZXQgPSBxb2JqZWN0X2Nhc3Q8UUdyYXBoaWNzV2lkZ2V0Kj4ob2JqZWN0KTsKICAg
ICAgICAgICAgIGlmIChncmFwaGljc1dpZGdldCkgewogICAgICAgICAgICAgICAgIFFHcmFwaGlj
c09iamVjdCogcGFyZW50V2lkZ2V0ID0gMDsKLSAgICAgICAgICAgICAgICBpZiAobV93ZWJGcmFt
ZS0+cGFnZSgpLT5kLT5jbGllbnQpCi0gICAgICAgICAgICAgICAgICAgIHBhcmVudFdpZGdldCA9
IHFvYmplY3RfY2FzdDxRR3JhcGhpY3NPYmplY3QqPihtX3dlYkZyYW1lLT5wYWdlKCktPmQtPmNs
aWVudC0+cGx1Z2luUGFyZW50KCkpOworICAgICAgICAgICAgICAgIFFXZWJQYWdlQ2xpZW50KiBj
bGllbnQgPSBtX3dlYkZyYW1lLT5wYWdlKCktPmQtPnBsYXRmb3JtQ2xpZW50LT53ZWJQYWdlQ2xp
ZW50KCk7CisgICAgICAgICAgICAgICAgaWYgKGNsaWVudCkKKyAgICAgICAgICAgICAgICAgICAg
cGFyZW50V2lkZ2V0ID0gcW9iamVjdF9jYXN0PFFHcmFwaGljc09iamVjdCo+KGNsaWVudC0+cGx1
Z2luUGFyZW50KCkpOwogICAgICAgICAgICAgICAgIGdyYXBoaWNzV2lkZ2V0LT5oaWRlKCk7CiAg
ICAgICAgICAgICAgICAgaWYgKHBhcmVudFdpZGdldCkgLy8gZG9uJ3QgcmVwYXJlbnQgdG8gbm90
aGluZyAoaS5lLiBrZWVwIHdoYXRldmVyIHBhcmVudCBRV2ViUGFnZTo6Y3JlYXRlUGx1Z2luKCkg
Y2hvc2UuCiAgICAgICAgICAgICAgICAgICAgIGdyYXBoaWNzV2lkZ2V0LT5zZXRQYXJlbnRJdGVt
KHBhcmVudFdpZGdldCk7CkBAIC0xMzA0LDcgKzEzMDYsNyBAQCBQYXNzUmVmUHRyPFdpZGdldD4g
RnJhbWVMb2FkZXJDbGllbnRRdDo6Y3JlYXRlUGx1Z2luKGNvbnN0IEludFNpemUmIHBsdWdpblNp
emUsCiAgICAgICAgIFZlY3RvcjxTdHJpbmc+IHBhcmFtcyA9IHBhcmFtTmFtZXM7CiAgICAgICAg
IFZlY3RvcjxTdHJpbmc+IHZhbHVlcyA9IHBhcmFtVmFsdWVzOwogICAgICAgICBpZiAobWltZVR5
cGUgPT0gImFwcGxpY2F0aW9uL3gtc2hvY2t3YXZlLWZsYXNoIikgewotICAgICAgICAgICAgUVdl
YlBhZ2VDbGllbnQqIGNsaWVudCA9IG1fd2ViRnJhbWUtPnBhZ2UoKS0+ZC0+Y2xpZW50OworICAg
ICAgICAgICAgUVdlYlBhZ2VDbGllbnQqIGNsaWVudCA9IG1fd2ViRnJhbWUtPnBhZ2UoKS0+ZC0+
cGxhdGZvcm1DbGllbnQtPndlYlBhZ2VDbGllbnQoKTsKICAgICAgICAgICAgIGlmICghY2xpZW50
IHx8ICFxb2JqZWN0X2Nhc3Q8UVdpZGdldCo+KGNsaWVudC0+cGx1Z2luUGFyZW50KCkpKSB7CiAg
ICAgICAgICAgICAgICAgLy8gaW5qZWN0IHdtb2RlPW9wYXF1ZSB3aGVuIHRoZXJlIGlzIG5vIGNs
aWVudCBvciB0aGUgY2xpZW50IGlzIG5vdCBhIFFXZWJWaWV3CiAgICAgICAgICAgICAgICAgc2l6
ZV90IHdtb2RlSW5kZXggPSBwYXJhbXMuZmluZCgid21vZGUiKTsKLS0gCjEuNi4zLjMKCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>45332</attachid>
            <date>2009-12-21 08:33:46 -0800</date>
            <delta_ts>2010-01-08 13:25:21 -0800</delta_ts>
            <desc>Qt delegation client</desc>
            <filename>0001-Qt-Delegation-client.patch</filename>
            <type>text/plain</type>
            <size>29939</size>
            <attacher name="Luiz Agostini">luiz</attacher>
            
              <data encoding="base64">RnJvbSBmZjQ5YjFhMTJmYTU2NWQ4OWI2OWRlMmQwYzE2YjEzZWRiMDEwNGRjIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBMdWl6IEFnb3N0aW5pIDxsdWl6LmFnb3N0aW5pQG9wZW5ib3Nz
YS5vcmc+CkRhdGU6IE1vbiwgMjEgRGVjIDIwMDkgMTM6Mjc6NTAgLTAzMDAKU3ViamVjdDogW1BB
VENIXSBbUXRdIERlbGVnYXRpb24gY2xpZW50CiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MzI4MjYKClJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgoKUXQgZGVsZWdh
dGlvbiBjbGllbnQuCgpUaGUgbmV3IGNsYXNzIFF0UGxhdGZvcm1QYWdlQ2xpZW50IHJlcGxhY2Vk
IHRoZSBjbGFzcyBRV2ViUGFnZUNsaWVudAphcyB0eXBlIFBsYXRhZm9ybVBhZ2VDbGllbnQgKFdp
ZGdldC5oIDc5KS4gUXRQbGF0Zm9ybVBhZ2VDbGllbnQgaXMgY29tcG9zZWQKYnkgYW4gaW5zdGFu
Y2Ugb2YgUVdlYlBhZ2VDbGllbnQgYW5kIGFuIGluc3RhbmNlIG9mIHRoZSBuZXcgY2xhc3MKUXRE
ZWxlZ2F0aW9uQ2xpZW50LiBUaGlzIHdheSBhbiBvYmplY3Qgb2YgY2xhc3MgUXREZWxlZ2F0aW9u
Q2xpZW50IHByb3ZpZGVkIGJ5CnRoZSBXZWJLaXQgbGF5ZXIgaXMgZWFzaWx5IGFjY2Vzc2libGUg
aW4gV2ViQ29yZSBsYXllciB0aHJvdWdoIHRoZQpIb3N0V2luZG93IGludHJlZmFjZS4KCkFsbCBy
ZWxhdGVkIGNoYW5nZXMgaGF2ZSBiZWVuIG1hZGUgaW4gV2ViQ29yZSBhbmQgV2ViS2l0IGxheWVy
cy4KCldlYkNvcmU6CgoqIFdlYkNvcmUucHJvOgoqIHBsYXRmb3JtL1dpZGdldC5oOgoqIHBsYXRm
b3JtL3F0L1BsYXRmb3JtU2NyZWVuUXQuY3BwOgooV2ViQ29yZTo6c2NyZWVuTnVtYmVyKToKKFdl
YkNvcmU6OnNjcmVlbkRlcHRoUGVyQ29tcG9uZW50KToKKiBwbGF0Zm9ybS9xdC9RdEFic3RyYWN0
Q29tYm9Qb3B1cC5oOiBBZGRlZC4KKFdlYkNvcmU6OlF0QWJzdHJhY3RDb21ib1BvcHVwOjpRdEFi
c3RyYWN0Q29tYm9Qb3B1cCk6CihXZWJDb3JlOjpRdEFic3RyYWN0Q29tYm9Qb3B1cDo6flF0QWJz
dHJhY3RXZWJQb3B1cCk6CihXZWJDb3JlOjpRdEFic3RyYWN0Q29tYm9Qb3B1cDo6Y2xpZW50KToK
KiBwbGF0Zm9ybS9xdC9RdERlbGVnYXRpb25DbGllbnQuaDogQWRkZWQuCiogcGxhdGZvcm0vcXQv
UXRGYWxsYmFja1dlYlBvcHVwLmNwcDoKKFdlYkNvcmU6OlF0RmFsbGJhY2tXZWJQb3B1cDo6c2hv
dyk6CiogcGxhdGZvcm0vcXQvUXRQbGF0Zm9ybVBhZ2VDbGllbnQuaDogQWRkZWQuCiogcGxhdGZv
cm0vcXQvUmVuZGVyVGhlbWVRdC5jcHA6CihXZWJDb3JlOjpSZW5kZXJUaGVtZVF0OjphcHBseVRo
ZW1lKToKKiBwbGF0Zm9ybS9xdC9XaWRnZXRRdC5jcHA6CihXZWJDb3JlOjpXaWRnZXQ6OnNldEN1
cnNvcik6CiogcGx1Z2lucy9xdC9QbHVnaW5WaWV3UXQuY3BwOgooV2ViQ29yZTo6UGx1Z2luVmll
dzo6cGFpbnQpOgooV2ViQ29yZTo6UGx1Z2luVmlldzo6aW5pdFhFdmVudCk6CihXZWJDb3JlOjpQ
bHVnaW5WaWV3OjpnZXRWYWx1ZSk6CihXZWJDb3JlOjpQbHVnaW5WaWV3OjpwbGF0Zm9ybVN0YXJ0
KToKCldlYktpdC9xdDoKCiogQXBpL3FncmFwaGljc3dlYnZpZXcuY3BwOgooUUdyYXBoaWNzV2Vi
Vmlldzo6flFHcmFwaGljc1dlYlZpZXcpOgooUUdyYXBoaWNzV2ViVmlldzo6c2V0UGFnZSk6Ciog
QXBpL3F3ZWJwYWdlLmNwcDoKKFFXZWJQYWdlUHJpdmF0ZTo6UVdlYlBhZ2VQcml2YXRlKToKKFFX
ZWJQYWdlUHJpdmF0ZTo6flFXZWJQYWdlUHJpdmF0ZSk6CihRV2ViUGFnZVByaXZhdGU6OmhhbmRs
ZVNvZnR3YXJlSW5wdXRQYW5lbCk6CihRV2ViUGFnZTo6c2V0Vmlldyk6CiogQXBpL3F3ZWJwYWdl
X3AuaDoKKFBsYXRmb3JtQ2xpZW50OjpQbGF0Zm9ybUNsaWVudCk6CihQbGF0Zm9ybUNsaWVudDo6
d2ViUGFnZUNsaWVudCk6CihQbGF0Zm9ybUNsaWVudDo6ZGVsZWdhdGlvbkNsaWVudCk6CihQbGF0
Zm9ybUNsaWVudDo6c2V0UGFnZUNsaWVudCk6CiogQXBpL3F3ZWJ2aWV3LmNwcDoKKFFXZWJWaWV3
Ojp+UVdlYlZpZXcpOgooUVdlYlZpZXc6OnNldFBhZ2UpOgooUVdlYlZpZXc6OmV2ZW50KToKKiBX
ZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRRdC5jcHA6CihXZWJDb3JlOjpDaHJvbWVDbGllbnRR
dDo6cmVwYWludCk6CihXZWJDb3JlOjpDaHJvbWVDbGllbnRRdDo6c2Nyb2xsKToKKFdlYkNvcmU6
OkNocm9tZUNsaWVudFF0OjpwbGF0Zm9ybVBhZ2VDbGllbnQpOgoqIFdlYkNvcmVTdXBwb3J0L0Vk
aXRvckNsaWVudFF0LmNwcDoKKFdlYkNvcmU6OkVkaXRvckNsaWVudFF0OjpzZXRJbnB1dE1ldGhv
ZFN0YXRlKToKKiBXZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFF0LmNwcDoKKFdlYkNv
cmU6OkZyYW1lTG9hZGVyQ2xpZW50UXQ6OmNyZWF0ZVBsdWdpbik6Ci0tLQogV2ViQ29yZS9DaGFu
Z2VMb2cgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICA0MSArKysrKysrKysrKysr
KysrKysrCiBXZWJDb3JlL1dlYkNvcmUucHJvICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
fCAgICAzICsKIFdlYkNvcmUvcGxhdGZvcm0vV2lkZ2V0LmggICAgICAgICAgICAgICAgICAgICAg
ICB8ICAgIDQgKy0KIFdlYkNvcmUvcGxhdGZvcm0vcXQvUGxhdGZvcm1TY3JlZW5RdC5jcHAgICAg
ICAgICB8ICAgIDcgKystCiBXZWJDb3JlL3BsYXRmb3JtL3F0L1F0QWJzdHJhY3RDb21ib1BvcHVw
LmggICAgICAgfCAgIDQ2ICsrKysrKysrKysrKysrKysrKysrKysKIFdlYkNvcmUvcGxhdGZvcm0v
cXQvUXREZWxlZ2F0aW9uQ2xpZW50LmggICAgICAgICB8ICAgMzMgKysrKysrKysrKysrKysrCiBX
ZWJDb3JlL3BsYXRmb3JtL3F0L1F0RmFsbGJhY2tXZWJQb3B1cC5jcHAgICAgICAgfCAgICA1ICst
CiBXZWJDb3JlL3BsYXRmb3JtL3F0L1F0UGxhdGZvcm1QYWdlQ2xpZW50LmggICAgICAgfCAgIDM1
ICsrKysrKysrKysrKysrKysKIFdlYkNvcmUvcGxhdGZvcm0vcXQvUmVuZGVyVGhlbWVRdC5jcHAg
ICAgICAgICAgICB8ICAgIDMgKy0KIFdlYkNvcmUvcGxhdGZvcm0vcXQvV2lkZ2V0UXQuY3BwICAg
ICAgICAgICAgICAgICB8ICAgIDMgKy0KIFdlYkNvcmUvcGx1Z2lucy9xdC9QbHVnaW5WaWV3UXQu
Y3BwICAgICAgICAgICAgICB8ICAgMTIgKysrKy0tCiBXZWJLaXQvcXQvQXBpL3FncmFwaGljc3dl
YnZpZXcuY3BwICAgICAgICAgICAgICAgfCAgICA2ICstCiBXZWJLaXQvcXQvQXBpL3F3ZWJwYWdl
LmNwcCAgICAgICAgICAgICAgICAgICAgICAgfCAgIDE2ICsrKysrLS0tCiBXZWJLaXQvcXQvQXBp
L3F3ZWJwYWdlX3AuaCAgICAgICAgICAgICAgICAgICAgICAgfCAgIDE3ICsrKysrKysrLQogV2Vi
S2l0L3F0L0FwaS9xd2Vidmlldy5jcHAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgOCArKy0t
CiBXZWJLaXQvcXQvQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDQ0
ICsrKysrKysrKysrKysrKysrKysrKwogV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNs
aWVudFF0LmNwcCAgICAgIHwgICAxMCArKy0tCiBXZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRWRp
dG9yQ2xpZW50UXQuY3BwICAgICAgfCAgICAyICstCiBXZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQv
RnJhbWVMb2FkZXJDbGllbnRRdC5jcHAgfCAgIDEyICsrKy0tCiAxOSBmaWxlcyBjaGFuZ2VkLCAy
NzAgaW5zZXJ0aW9ucygrKSwgMzcgZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgV2Vi
Q29yZS9wbGF0Zm9ybS9xdC9RdEFic3RyYWN0Q29tYm9Qb3B1cC5oCiBjcmVhdGUgbW9kZSAxMDA2
NDQgV2ViQ29yZS9wbGF0Zm9ybS9xdC9RdERlbGVnYXRpb25DbGllbnQuaAogY3JlYXRlIG1vZGUg
MTAwNjQ0IFdlYkNvcmUvcGxhdGZvcm0vcXQvUXRQbGF0Zm9ybVBhZ2VDbGllbnQuaAoKZGlmZiAt
LWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjA1NDU3
NS4uMDczOWMxNSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2ViQ29yZS9D
aGFuZ2VMb2cKQEAgLTEsMyArMSw0NCBAQAorMjAwOS0xMi0yMSAgTHVpeiBBZ29zdGluaSAgPGx1
aXouYWdvc3RpbmlAb3BlbmJvc3NhLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBbUXRdIERlbGVnYXRpb24gY2xpZW50CisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zMjgyNgorCisgICAgICAgIFF0IGRl
bGVnYXRpb24gY2xpZW50LgorCisgICAgICAgIFRoZSBuZXcgY2xhc3MgUXRQbGF0Zm9ybVBhZ2VD
bGllbnQgcmVwbGFjZWQgdGhlIGNsYXNzIFFXZWJQYWdlQ2xpZW50CisgICAgICAgIGFzIHR5cGUg
UGxhdGFmb3JtUGFnZUNsaWVudCAoV2lkZ2V0LmggNzkpLiBRdFBsYXRmb3JtUGFnZUNsaWVudCBp
cyBjb21wb3NlZAorICAgICAgICBieSBhbiBpbnN0YW5jZSBvZiBRV2ViUGFnZUNsaWVudCBhbmQg
YW4gaW5zdGFuY2Ugb2YgdGhlIG5ldyBjbGFzcworICAgICAgICBRdERlbGVnYXRpb25DbGllbnQu
IFRoaXMgd2F5IGFuIG9iamVjdCBvZiBjbGFzcyBRdERlbGVnYXRpb25DbGllbnQgcHJvdmlkZWQg
YnkKKyAgICAgICAgdGhlIFdlYktpdCBsYXllciBpcyBlYXNpbHkgYWNjZXNzaWJsZSBpbiBXZWJD
b3JlIGxheWVyIHRocm91Z2ggdGhlCisgICAgICAgIEhvc3RXaW5kb3cgaW50cmVmYWNlLgorCisg
ICAgICAgIEFsbCByZWxhdGVkIGNoYW5nZXMgaGF2ZSBiZWVuIG1hZGUgaW4gV2ViQ29yZSBhbmQg
V2ViS2l0IGxheWVycy4KKworICAgICAgICAqIFdlYkNvcmUucHJvOgorICAgICAgICAqIHBsYXRm
b3JtL1dpZGdldC5oOgorICAgICAgICAqIHBsYXRmb3JtL3F0L1BsYXRmb3JtU2NyZWVuUXQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6c2NyZWVuTnVtYmVyKToKKyAgICAgICAgKFdlYkNvcmU6OnNj
cmVlbkRlcHRoUGVyQ29tcG9uZW50KToKKyAgICAgICAgKiBwbGF0Zm9ybS9xdC9RdEFic3RyYWN0
Q29tYm9Qb3B1cC5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlF0QWJzdHJhY3RDb21ib1Bv
cHVwOjpRdEFic3RyYWN0Q29tYm9Qb3B1cCk6CisgICAgICAgIChXZWJDb3JlOjpRdEFic3RyYWN0
Q29tYm9Qb3B1cDo6flF0QWJzdHJhY3RXZWJQb3B1cCk6CisgICAgICAgIChXZWJDb3JlOjpRdEFi
c3RyYWN0Q29tYm9Qb3B1cDo6Y2xpZW50KToKKyAgICAgICAgKiBwbGF0Zm9ybS9xdC9RdERlbGVn
YXRpb25DbGllbnQuaDogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vcXQvUXRGYWxsYmFja1dl
YlBvcHVwLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlF0RmFsbGJhY2tXZWJQb3B1cDo6c2hvdyk6
CisgICAgICAgICogcGxhdGZvcm0vcXQvUXRQbGF0Zm9ybVBhZ2VDbGllbnQuaDogQWRkZWQuCisg
ICAgICAgICogcGxhdGZvcm0vcXQvUmVuZGVyVGhlbWVRdC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJUaGVtZVF0OjphcHBseVRoZW1lKToKKyAgICAgICAgKiBwbGF0Zm9ybS9xdC9XaWRn
ZXRRdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXaWRnZXQ6OnNldEN1cnNvcik6CisgICAgICAg
ICogcGx1Z2lucy9xdC9QbHVnaW5WaWV3UXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGx1Z2lu
Vmlldzo6cGFpbnQpOgorICAgICAgICAoV2ViQ29yZTo6UGx1Z2luVmlldzo6aW5pdFhFdmVudCk6
CisgICAgICAgIChXZWJDb3JlOjpQbHVnaW5WaWV3OjpnZXRWYWx1ZSk6CisgICAgICAgIChXZWJD
b3JlOjpQbHVnaW5WaWV3OjpwbGF0Zm9ybVN0YXJ0KToKKwogMjAwOS0xMi0xOSAgRGFuIEJlcm5z
dGVpbiAgPG1pdHpAYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVy
LgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9XZWJDb3JlLnBybyBiL1dlYkNvcmUvV2ViQ29yZS5wcm8K
aW5kZXggNmQzZDVkZS4uMGJiMmE3NyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9XZWJDb3JlLnBybwor
KysgYi9XZWJDb3JlL1dlYkNvcmUucHJvCkBAIC0xOTg0LDYgKzE5ODQsOSBAQCBIRUFERVJTICs9
IFwKICAgICBwbGF0Zm9ybS9QbGF0Zm9ybVRvdWNoUG9pbnQuaCBcCiAgICAgcGxhdGZvcm0vcXQv
Q2xpcGJvYXJkUXQuaCBcCiAgICAgcGxhdGZvcm0vcXQvUVdlYlBhZ2VDbGllbnQuaCBcCisgICAg
cGxhdGZvcm0vcXQvUXRQbGF0Zm9ybVBhZ2VDbGllbnQuaCBcCisgICAgcGxhdGZvcm0vcXQvUXRE
ZWxlZ2F0aW9uQ2xpZW50LmggXAorICAgIHBsYXRmb3JtL3F0L1F0QWJzdHJhY3RDb21ib1BvcHVw
LmggXAogICAgIHBsYXRmb3JtL3F0L1F0QWJzdHJhY3RXZWJQb3B1cC5oIFwKICAgICBwbGF0Zm9y
bS9xdC9RdEZhbGxiYWNrV2ViUG9wdXAuaCBcCiAgICAgcGxhdGZvcm0vcXQvUmVuZGVyVGhlbWVR
dC5oIFwKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vV2lkZ2V0LmggYi9XZWJDb3JlL3Bs
YXRmb3JtL1dpZGdldC5oCmluZGV4IDcyZjk5YjMuLjQ4ODNkYjQgMTAwNjQ0Ci0tLSBhL1dlYkNv
cmUvcGxhdGZvcm0vV2lkZ2V0LmgKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9XaWRnZXQuaApAQCAt
NzUsOCArNzUsOCBAQCB0eXBlZGVmIEJWaWV3KiBQbGF0Zm9ybVdpZGdldDsKICNlbmRpZgogCiAj
aWYgUExBVEZPUk0oUVQpCi1jbGFzcyBRV2ViUGFnZUNsaWVudDsKLXR5cGVkZWYgUVdlYlBhZ2VD
bGllbnQqIFBsYXRmb3JtUGFnZUNsaWVudDsKKyNpbmNsdWRlICJRdFBsYXRmb3JtUGFnZUNsaWVu
dC5oIgordHlwZWRlZiBRdFBsYXRmb3JtUGFnZUNsaWVudCogUGxhdGZvcm1QYWdlQ2xpZW50Owog
I2Vsc2UKIHR5cGVkZWYgUGxhdGZvcm1XaWRnZXQgUGxhdGZvcm1QYWdlQ2xpZW50OwogI2VuZGlm
CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL3F0L1BsYXRmb3JtU2NyZWVuUXQuY3BwIGIv
V2ViQ29yZS9wbGF0Zm9ybS9xdC9QbGF0Zm9ybVNjcmVlblF0LmNwcAppbmRleCA4MjIxNzYwLi5m
ZjcwYTEyIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL3F0L1BsYXRmb3JtU2NyZWVuUXQu
Y3BwCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vcXQvUGxhdGZvcm1TY3JlZW5RdC5jcHAKQEAgLTQ3
LDcgKzQ3LDggQEAgc3RhdGljIGludCBzY3JlZW5OdW1iZXIoV2lkZ2V0KiB3KQogICAgIGlmICgh
dykKICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICBRV2ViUGFnZUNsaWVudCogY2xpZW50ID0gdy0+
cm9vdCgpLT5ob3N0V2luZG93KCktPnBsYXRmb3JtUGFnZUNsaWVudCgpOworICAgIFBsYXRmb3Jt
UGFnZUNsaWVudCBwbGF0YWZvcm1DbGllbnQgPSB3LT5yb290KCktPmhvc3RXaW5kb3coKS0+cGxh
dGZvcm1QYWdlQ2xpZW50KCk7CisgICAgUVdlYlBhZ2VDbGllbnQqIGNsaWVudCA9IHBsYXRhZm9y
bUNsaWVudCA/IHBsYXRhZm9ybUNsaWVudC0+d2ViUGFnZUNsaWVudCgpIDogMDsKICAgICByZXR1
cm4gY2xpZW50ID8gY2xpZW50LT5zY3JlZW5OdW1iZXIoKSA6IDA7CiB9CiAKQEAgLTU5LDcgKzYw
LDkgQEAgaW50IHNjcmVlbkRlcHRoKFdpZGdldCogdykKIGludCBzY3JlZW5EZXB0aFBlckNvbXBv
bmVudChXaWRnZXQqIHcpCiB7CiAgICAgaWYgKHcpIHsKLSAgICAgICAgUVdlYlBhZ2VDbGllbnQq
IGNsaWVudCA9IHctPnJvb3QoKS0+aG9zdFdpbmRvdygpLT5wbGF0Zm9ybVBhZ2VDbGllbnQoKTsK
KyAgICAgICAgUGxhdGZvcm1QYWdlQ2xpZW50IHBsYXRhZm9ybUNsaWVudCA9IHctPnJvb3QoKS0+
aG9zdFdpbmRvdygpLT5wbGF0Zm9ybVBhZ2VDbGllbnQoKTsKKyAgICAgICAgUVdlYlBhZ2VDbGll
bnQqIGNsaWVudCA9IHBsYXRhZm9ybUNsaWVudCA/IHBsYXRhZm9ybUNsaWVudC0+d2ViUGFnZUNs
aWVudCgpIDogMDsKKwogCiAgICAgICAgIGlmIChjbGllbnQpIHsKICAgICAgICAgICAgIFFXaWRn
ZXQqIHZpZXcgPSBjbGllbnQtPm93bmVyV2lkZ2V0KCk7CmRpZmYgLS1naXQgYS9XZWJDb3JlL3Bs
YXRmb3JtL3F0L1F0QWJzdHJhY3RDb21ib1BvcHVwLmggYi9XZWJDb3JlL3BsYXRmb3JtL3F0L1F0
QWJzdHJhY3RDb21ib1BvcHVwLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4u
ZTM4ODg0ZQotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vcXQvUXRBYnN0cmFj
dENvbWJvUG9wdXAuaApAQCAtMCwwICsxLDQ2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA5
IE5va2lhIENvcnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVzKQorICoKKyAqIFRo
aXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQv
b3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVy
YWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBG
b3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlv
dXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlz
dHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRI
T1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisg
KiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBT
ZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRl
dGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05V
IExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIGxpYnJh
cnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBG
cmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGgg
Rmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqCisgKi8KKyNpZm5kZWYg
UXRBYnN0cmFjdENvbWJvUG9wdXBfaAorI2RlZmluZSBRdEFic3RyYWN0Q29tYm9Qb3B1cF9oCisK
KyNpbmNsdWRlIDxRUmVjdD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBQb3B1cE1l
bnVDbGllbnQ7CisKK2NsYXNzIFF0QWJzdHJhY3RDb21ib1BvcHVwIHsKK3B1YmxpYzoKKyAgICBR
dEFic3RyYWN0Q29tYm9Qb3B1cChQb3B1cE1lbnVDbGllbnQqIGNsaWVudCkgOiBtX2NsaWVudChj
bGllbnQpIHt9CisgICAgdmlydHVhbCB+UXRBYnN0cmFjdFdlYlBvcHVwKCkge30KKworICAgIHZp
cnR1YWwgdm9pZCBzaG93KGNvbnN0IFFSZWN0JiBnZW9tZXRyeSwgaW50IHNlbGVjdGVkSW5kZXgp
ID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgaGlkZSgpID0gMDsKKworcHJvdGVjdGVkOgorICAgIFBv
cHVwTWVudUNsaWVudCogY2xpZW50KCkgeyByZXR1cm4gbV9jbGllbnQ7IH0KKworcHJpdmF0ZToK
KyAgICBQb3B1cE1lbnVDbGllbnQqIG1fY2xpZW50OworfTsKKworfQorCisjZW5kaWYgLy8gUXRB
YnN0cmFjdENvbWJvUG9wdXBfaApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9xdC9RdERl
bGVnYXRpb25DbGllbnQuaCBiL1dlYkNvcmUvcGxhdGZvcm0vcXQvUXREZWxlZ2F0aW9uQ2xpZW50
LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzYyNWI1YgotLS0gL2Rldi9u
dWxsCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vcXQvUXREZWxlZ2F0aW9uQ2xpZW50LmgKQEAgLTAs
MCArMSwzMyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOSBOb2tpYSBDb3Jwb3JhdGlvbiBh
bmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykKKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBz
b2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5k
ZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5z
ZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisg
KiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVy
IHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3Bl
IHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdp
dGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9y
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJh
cnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBz
aG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVi
bGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09Q
WUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0
aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBN
QSAwMjExMC0xMzAxLCBVU0EuCisgKgorICovCisjaWZuZGVmIFF0RGVsZWdhdGlvbkNsaWVudF9o
CisjZGVmaW5lIFF0RGVsZWdhdGlvbkNsaWVudF9oCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwor
Y2xhc3MgUXRBYnN0cmFjdENvbWJvUG9wdXA7CisKK2NsYXNzIFF0RGVsZWdhdGlvbkNsaWVudCB7
CisgICAgdmlydHVhbCBRdEFic3RyYWN0Q29tYm9Qb3B1cCogY3JlYXRlQ29tYm9Qb3B1cCgpID0g
MDsKK307CisKK30KKworI2VuZGlmIC8vIFF0RGVsZWdhdGlvbkNsaWVudF9oCmRpZmYgLS1naXQg
YS9XZWJDb3JlL3BsYXRmb3JtL3F0L1F0RmFsbGJhY2tXZWJQb3B1cC5jcHAgYi9XZWJDb3JlL3Bs
YXRmb3JtL3F0L1F0RmFsbGJhY2tXZWJQb3B1cC5jcHAKaW5kZXggMDA2ZDA2YS4uYmIyMmYwYSAx
MDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9xdC9RdEZhbGxiYWNrV2ViUG9wdXAuY3BwCisr
KyBiL1dlYkNvcmUvcGxhdGZvcm0vcXQvUXRGYWxsYmFja1dlYlBvcHVwLmNwcApAQCAtNDksOCAr
NDksOSBAQCB2b2lkIFF0RmFsbGJhY2tXZWJQb3B1cDo6c2hvdyhjb25zdCBRUmVjdCYgZ2VvbWV0
cnksIGludCBzZWxlY3RlZEluZGV4KQogICAgIHNldEN1cnJlbnRJbmRleChzZWxlY3RlZEluZGV4
KTsKIAogICAgIFFXaWRnZXQqIHBhcmVudCA9IDA7Ci0gICAgaWYgKGNsaWVudCgpLT5ob3N0V2lu
ZG93KCkgJiYgY2xpZW50KCktPmhvc3RXaW5kb3coKS0+cGxhdGZvcm1QYWdlQ2xpZW50KCkpCi0g
ICAgICAgcGFyZW50ID0gY2xpZW50KCktPmhvc3RXaW5kb3coKS0+cGxhdGZvcm1QYWdlQ2xpZW50
KCktPm93bmVyV2lkZ2V0KCk7CisgICAgaWYgKGNsaWVudCgpLT5ob3N0V2luZG93KCkgJiYgY2xp
ZW50KCktPmhvc3RXaW5kb3coKS0+cGxhdGZvcm1QYWdlQ2xpZW50KCkKKyAgICAgICAmJiBjbGll
bnQoKS0+aG9zdFdpbmRvdygpLT5wbGF0Zm9ybVBhZ2VDbGllbnQoKS0+d2ViUGFnZUNsaWVudCgp
KQorICAgICAgIHBhcmVudCA9IGNsaWVudCgpLT5ob3N0V2luZG93KCktPnBsYXRmb3JtUGFnZUNs
aWVudCgpLT53ZWJQYWdlQ2xpZW50KCktPm93bmVyV2lkZ2V0KCk7CiAKICAgICBzZXRQYXJlbnQo
cGFyZW50KTsKICAgICBzZXRHZW9tZXRyeShRUmVjdChnZW9tZXRyeS5sZWZ0KCksIGdlb21ldHJ5
LnRvcCgpLCBnZW9tZXRyeS53aWR0aCgpLCBzaXplSGludCgpLmhlaWdodCgpKSk7CmRpZmYgLS1n
aXQgYS9XZWJDb3JlL3BsYXRmb3JtL3F0L1F0UGxhdGZvcm1QYWdlQ2xpZW50LmggYi9XZWJDb3Jl
L3BsYXRmb3JtL3F0L1F0UGxhdGZvcm1QYWdlQ2xpZW50LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMC4uMDcwOWUzNwotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvcmUvcGxhdGZv
cm0vcXQvUXRQbGF0Zm9ybVBhZ2VDbGllbnQuaApAQCAtMCwwICsxLDM1IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDA5IE5va2lhIENvcnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vic2lkaWFyeSgt
aWVzKQorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlz
dHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdO
VSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUg
RnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGlj
ZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlz
IGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1
bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVk
IHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNl
bnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEg
Y29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcg
d2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3Jp
dGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGlu
IFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAq
CisgKi8KKyNpZm5kZWYgUXRQbGF0Zm9ybVBhZ2VDbGllbnRfaAorI2RlZmluZSBRdFBsYXRmb3Jt
UGFnZUNsaWVudF9oCisKK2NsYXNzIFFXZWJQYWdlQ2xpZW50OworCituYW1lc3BhY2UgV2ViQ29y
ZSB7CitjbGFzcyBRdERlbGVnYXRpb25DbGllbnQ7Cit9CisKK2NsYXNzIFF0UGxhdGZvcm1QYWdl
Q2xpZW50IHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIFFXZWJQYWdlQ2xpZW50KiB3ZWJQYWdlQ2xp
ZW50KCkgPSAwOworICAgIHZpcnR1YWwgV2ViQ29yZTo6UXREZWxlZ2F0aW9uQ2xpZW50KiBkZWxl
Z2F0aW9uQ2xpZW50KCkgPSAwOworfTsKKworI2VuZGlmIC8vIFF0UGxhdGZvcm1QYWdlQ2xpZW50
X2gKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vcXQvUmVuZGVyVGhlbWVRdC5jcHAgYi9X
ZWJDb3JlL3BsYXRmb3JtL3F0L1JlbmRlclRoZW1lUXQuY3BwCmluZGV4IDc0MTIwZDMuLjk5YzBl
ZTkgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vcXQvUmVuZGVyVGhlbWVRdC5jcHAKKysr
IGIvV2ViQ29yZS9wbGF0Zm9ybS9xdC9SZW5kZXJUaGVtZVF0LmNwcApAQCAtNzYzLDcgKzc2Myw4
IEBAIENvbnRyb2xQYXJ0IFJlbmRlclRoZW1lUXQ6OmFwcGx5VGhlbWUoUVN0eWxlT3B0aW9uJiBv
cHRpb24sIFJlbmRlck9iamVjdCogbykgY29uCiAgICAgUGFnZSogcGFnZSA9IG8tPmRvY3VtZW50
KCktPnBhZ2UoKTsKICAgICBpZiAocGFnZSkgewogICAgICAgICBDaHJvbWVDbGllbnQqIGNsaWVu
dCA9IHBhZ2UtPmNocm9tZSgpLT5jbGllbnQoKTsKLSAgICAgICAgUVdlYlBhZ2VDbGllbnQqIHBh
Z2VDbGllbnQgPSBjbGllbnQtPnBsYXRmb3JtUGFnZUNsaWVudCgpOworICAgICAgICBQbGF0Zm9y
bVBhZ2VDbGllbnQgcGxhdGZvcm1DbGllbnQgPSBjbGllbnQtPnBsYXRmb3JtUGFnZUNsaWVudCgp
OworICAgICAgICBRV2ViUGFnZUNsaWVudCogcGFnZUNsaWVudCA9IHBsYXRmb3JtQ2xpZW50ID8g
cGxhdGZvcm1DbGllbnQtPndlYlBhZ2VDbGllbnQoKSA6IDA7CiAgICAgICAgIGlmIChwYWdlQ2xp
ZW50KQogICAgICAgICAgICAgb3B0aW9uLnBhbGV0dGUgPSBwYWdlQ2xpZW50LT5wYWxldHRlKCk7
CiAgICAgfQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9xdC9XaWRnZXRRdC5jcHAgYi9X
ZWJDb3JlL3BsYXRmb3JtL3F0L1dpZGdldFF0LmNwcAppbmRleCAyNTJiZGI0Li44NDhkNDRhIDEw
MDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL3F0L1dpZGdldFF0LmNwcAorKysgYi9XZWJDb3Jl
L3BsYXRmb3JtL3F0L1dpZGdldFF0LmNwcApAQCAtODIsNyArODIsOCBAQCB2b2lkIFdpZGdldDo6
c2V0Rm9jdXMoKQogdm9pZCBXaWRnZXQ6OnNldEN1cnNvcihjb25zdCBDdXJzb3ImIGN1cnNvcikK
IHsKICNpZm5kZWYgUVRfTk9fQ1VSU09SCi0gICAgUVdlYlBhZ2VDbGllbnQqIHBhZ2VDbGllbnQg
PSByb290KCktPmhvc3RXaW5kb3coKS0+cGxhdGZvcm1QYWdlQ2xpZW50KCk7CisgICAgUGxhdGZv
cm1QYWdlQ2xpZW50IHBsYXRmb3JtQ2xpZW50ID0gcm9vdCgpLT5ob3N0V2luZG93KCktPnBsYXRm
b3JtUGFnZUNsaWVudCgpOworICAgIFFXZWJQYWdlQ2xpZW50KiBwYWdlQ2xpZW50ID0gcGxhdGZv
cm1DbGllbnQgPyBwbGF0Zm9ybUNsaWVudC0+d2ViUGFnZUNsaWVudCgpIDogMDsKIAogICAgIGlm
IChwYWdlQ2xpZW50KQogICAgICAgICBwYWdlQ2xpZW50LT5zZXRDdXJzb3IoY3Vyc29yLmltcGwo
KSk7CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsdWdpbnMvcXQvUGx1Z2luVmlld1F0LmNwcCBiL1dl
YkNvcmUvcGx1Z2lucy9xdC9QbHVnaW5WaWV3UXQuY3BwCmluZGV4IGI0ZWU0OGUuLmI3NTBmZTUg
MTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGx1Z2lucy9xdC9QbHVnaW5WaWV3UXQuY3BwCisrKyBiL1dl
YkNvcmUvcGx1Z2lucy9xdC9QbHVnaW5WaWV3UXQuY3BwCkBAIC0xOTMsNyArMTkzLDggQEAgdm9p
ZCBQbHVnaW5WaWV3OjpwYWludChHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEludFJl
Y3QmIHJlY3QpCiAgICAgICAgIC8vIFdlIGNhbm5vdCBncmFiIGNvbnRlbnRzIGZyb20gdGhlIGJh
Y2tpbmcgc3RvcmUgd2hlbiBwYWludGluZyBvbiBRR3JhcGhpY3NWaWV3IGl0ZW1zCiAgICAgICAg
IC8vIChiZWNhdXNlIGJhY2tpbmcgc3RvcmUgY29udGVudHMgYXJlIGFscmVhZHkgdHJhbnNmb3Jt
ZWQpLiBXaGF0IHdlIHJlYWxseSBtZWFuIHRvIGRvIAogICAgICAgICAvLyBoZXJlIGlzIHRvIGNo
ZWNrIGlmIHdlIGFyZSBwYWludGluZyBvbiBRV2ViVmlldywgYnV0IGxldCdzIGJlIGEgbGl0dGxl
IHBlcm1pc3NpdmUgOikKLSAgICAgICAgUVdlYlBhZ2VDbGllbnQqIGNsaWVudCA9IG1fcGFyZW50
RnJhbWUtPnZpZXcoKS0+aG9zdFdpbmRvdygpLT5wbGF0Zm9ybVBhZ2VDbGllbnQoKTsKKyAgICAg
ICAgUGxhdGZvcm1QYWdlQ2xpZW50IHBsYXRmb3JtQ2xpZW50ID0gbV9wYXJlbnRGcmFtZS0+dmll
dygpLT5ob3N0V2luZG93KCktPnBsYXRmb3JtUGFnZUNsaWVudCgpOworICAgICAgICBRV2ViUGFn
ZUNsaWVudCogY2xpZW50ID0gcGxhdGZvcm1DbGllbnQgPyBwbGF0Zm9ybUNsaWVudC0+d2ViUGFn
ZUNsaWVudCgpIDogMDsKICAgICAgICAgY29uc3QgYm9vbCBiYWNraW5nU3RvcmVIYXNVbnRyYW5z
Zm9ybWVkQ29udGVudHMgPSBjbGllbnQgJiYgcW9iamVjdF9jYXN0PFFXaWRnZXQqPihjbGllbnQt
PnBsdWdpblBhcmVudCgpKTsKIAogICAgICAgICBpZiAoaGFzVmFsaWRCYWNraW5nU3RvcmUgJiYg
YmFja2luZ1N0b3JlUGl4bWFwLT5kZXB0aCgpID09IGRyYXdhYmxlRGVwdGggCkBAIC0yNjIsNyAr
MjYzLDggQEAgdm9pZCBQbHVnaW5WaWV3Ojppbml0WEV2ZW50KFhFdmVudCogeEV2ZW50KQogewog
ICAgIG1lbXNldCh4RXZlbnQsIDAsIHNpemVvZihYRXZlbnQpKTsKIAotICAgIFFXZWJQYWdlQ2xp
ZW50KiBjbGllbnQgPSBtX3BhcmVudEZyYW1lLT52aWV3KCktPmhvc3RXaW5kb3coKS0+cGxhdGZv
cm1QYWdlQ2xpZW50KCk7CisgICAgUGxhdGZvcm1QYWdlQ2xpZW50IHBsYXRmb3JtQ2xpZW50ID0g
bV9wYXJlbnRGcmFtZS0+dmlldygpLT5ob3N0V2luZG93KCktPnBsYXRmb3JtUGFnZUNsaWVudCgp
OworICAgIFFXZWJQYWdlQ2xpZW50KiBjbGllbnQgPSBwbGF0Zm9ybUNsaWVudCA/IHBsYXRmb3Jt
Q2xpZW50LT53ZWJQYWdlQ2xpZW50KCkgOiAwOwogICAgIFFXaWRnZXQqIG93bmVyV2lkZ2V0ID0g
Y2xpZW50ID8gY2xpZW50LT5vd25lcldpZGdldCgpIDogMDsKICAgICBzZXRTaGFyZWRYRXZlbnRG
aWVsZHMoeEV2ZW50LCBvd25lcldpZGdldCk7CiB9CkBAIC02MjcsNyArNjI5LDggQEAgTlBFcnJv
ciBQbHVnaW5WaWV3OjpnZXRWYWx1ZShOUE5WYXJpYWJsZSB2YXJpYWJsZSwgdm9pZCogdmFsdWUp
CiAKICAgICBjYXNlIE5QTlZuZXRzY2FwZVdpbmRvdzogewogICAgICAgICB2b2lkKiB3ID0gcmVp
bnRlcnByZXRfY2FzdDx2b2lkKj4odmFsdWUpOwotICAgICAgICBRV2ViUGFnZUNsaWVudCogY2xp
ZW50ID0gbV9wYXJlbnRGcmFtZS0+dmlldygpLT5ob3N0V2luZG93KCktPnBsYXRmb3JtUGFnZUNs
aWVudCgpOworICAgICAgICBQbGF0Zm9ybVBhZ2VDbGllbnQgcGxhdGZvcm1DbGllbnQgPSBtX3Bh
cmVudEZyYW1lLT52aWV3KCktPmhvc3RXaW5kb3coKS0+cGxhdGZvcm1QYWdlQ2xpZW50KCk7Cisg
ICAgICAgIFFXZWJQYWdlQ2xpZW50KiBjbGllbnQgPSBwbGF0Zm9ybUNsaWVudCA/IHBsYXRmb3Jt
Q2xpZW50LT53ZWJQYWdlQ2xpZW50KCkgOiAwOwogICAgICAgICAqKChYSUQgKil3KSA9IGNsaWVu
dCA/IGNsaWVudC0+b3duZXJXaWRnZXQoKS0+d2luZG93KCktPndpbklkKCkgOiAwOwogICAgICAg
ICByZXR1cm4gTlBFUlJfTk9fRVJST1I7CiAgICAgfQpAQCAtNzU0LDcgKzc1Nyw4IEBAIGJvb2wg
UGx1Z2luVmlldzo6cGxhdGZvcm1TdGFydCgpCiAgICAgfQogCiAgICAgaWYgKG1faXNXaW5kb3dl
ZCkgewotICAgICAgICBRV2ViUGFnZUNsaWVudCogY2xpZW50ID0gbV9wYXJlbnRGcmFtZS0+dmll
dygpLT5ob3N0V2luZG93KCktPnBsYXRmb3JtUGFnZUNsaWVudCgpOworICAgICAgICBQbGF0Zm9y
bVBhZ2VDbGllbnQgcGxhdGZvcm1DbGllbnQgPSBtX3BhcmVudEZyYW1lLT52aWV3KCktPmhvc3RX
aW5kb3coKS0+cGxhdGZvcm1QYWdlQ2xpZW50KCk7CisgICAgICAgIFFXZWJQYWdlQ2xpZW50KiBj
bGllbnQgPSBwbGF0Zm9ybUNsaWVudCA/IHBsYXRmb3JtQ2xpZW50LT53ZWJQYWdlQ2xpZW50KCkg
OiAwOwogICAgICAgICBpZiAobV9uZWVkc1hFbWJlZCAmJiBjbGllbnQpIHsKICAgICAgICAgICAg
IHNldFBsYXRmb3JtV2lkZ2V0KG5ldyBQbHVnaW5Db250YWluZXJRdCh0aGlzLCBjbGllbnQtPm93
bmVyV2lkZ2V0KCkpKTsKICAgICAgICAgICAgIC8vIHN5bmMgb3VyIFhFbWJlZCBjb250YWluZXIg
d2luZG93IGNyZWF0aW9uIGJlZm9yZSBzZW5kaW5nIHRoZSB4aWQgdG8gcGx1Z2lucy4KZGlmZiAt
LWdpdCBhL1dlYktpdC9xdC9BcGkvcWdyYXBoaWNzd2Vidmlldy5jcHAgYi9XZWJLaXQvcXQvQXBp
L3FncmFwaGljc3dlYnZpZXcuY3BwCmluZGV4IDAzMWQ4ZjguLjYyZTk3ZDIgMTAwNjQ0Ci0tLSBh
L1dlYktpdC9xdC9BcGkvcWdyYXBoaWNzd2Vidmlldy5jcHAKKysrIGIvV2ViS2l0L3F0L0FwaS9x
Z3JhcGhpY3N3ZWJ2aWV3LmNwcApAQCAtMjYxLDcgKzI2MSw3IEBAIFFHcmFwaGljc1dlYlZpZXc6
On5RR3JhcGhpY3NXZWJWaWV3KCkKICNlbHNlCiAgICAgICAgIGQtPnBhZ2UtPmQtPnZpZXcgPSAw
OwogI2VuZGlmCi0gICAgICAgIGQtPnBhZ2UtPmQtPmNsaWVudCA9IDA7IC8vIHVuc2V0IHRoZSBw
YWdlIGNsaWVudAorICAgICAgICBkLT5wYWdlLT5kLT5wbGF0Zm9ybUNsaWVudC0+c2V0UGFnZUNs
aWVudCgwKTsgLy8gdW5zZXQgdGhlIHBhZ2UgY2xpZW50CiAgICAgfQogCiAgICAgaWYgKGQtPnBh
Z2UgJiYgZC0+cGFnZS0+cGFyZW50KCkgPT0gdGhpcykKQEAgLTQxNSw3ICs0MTUsNyBAQCB2b2lk
IFFHcmFwaGljc1dlYlZpZXc6OnNldFBhZ2UoUVdlYlBhZ2UqIHBhZ2UpCiAgICAgICAgIHJldHVy
bjsKIAogICAgIGlmIChkLT5wYWdlKSB7Ci0gICAgICAgIGQtPnBhZ2UtPmQtPmNsaWVudCA9IDA7
IC8vIHVuc2V0IHRoZSBwYWdlIGNsaWVudAorICAgICAgICBkLT5wYWdlLT5kLT5wbGF0Zm9ybUNs
aWVudC0+c2V0UGFnZUNsaWVudCgwKTsgLy8gdW5zZXQgdGhlIHBhZ2UgY2xpZW50CiAgICAgICAg
IGlmIChkLT5wYWdlLT5wYXJlbnQoKSA9PSB0aGlzKQogICAgICAgICAgICAgZGVsZXRlIGQtPnBh
Z2U7CiAgICAgICAgIGVsc2UKQEAgLTQyNSw3ICs0MjUsNyBAQCB2b2lkIFFHcmFwaGljc1dlYlZp
ZXc6OnNldFBhZ2UoUVdlYlBhZ2UqIHBhZ2UpCiAgICAgZC0+cGFnZSA9IHBhZ2U7CiAgICAgaWYg
KCFkLT5wYWdlKQogICAgICAgICByZXR1cm47Ci0gICAgZC0+cGFnZS0+ZC0+Y2xpZW50ID0gZDsg
Ly8gc2V0IHRoZSBwYWdlIGNsaWVudAorICAgIGQtPnBhZ2UtPmQtPnBsYXRmb3JtQ2xpZW50LT5z
ZXRQYWdlQ2xpZW50KGQpOyAvLyBzZXQgdGhlIHBhZ2UgY2xpZW50CiAKICAgICBRU2l6ZSBzaXpl
ID0gZ2VvbWV0cnkoKS5zaXplKCkudG9TaXplKCk7CiAgICAgcGFnZS0+c2V0Vmlld3BvcnRTaXpl
KHNpemUpOwpkaWZmIC0tZ2l0IGEvV2ViS2l0L3F0L0FwaS9xd2VicGFnZS5jcHAgYi9XZWJLaXQv
cXQvQXBpL3F3ZWJwYWdlLmNwcAppbmRleCA2Mjk2NDg0Li44YzRlNTUzIDEwMDY0NAotLS0gYS9X
ZWJLaXQvcXQvQXBpL3F3ZWJwYWdlLmNwcAorKysgYi9XZWJLaXQvcXQvQXBpL3F3ZWJwYWdlLmNw
cApAQCAtMzY1LDcgKzM2NSw2IEBAIHN0YXRpYyBpbmxpbmUgUXQ6OkRyb3BBY3Rpb24gZHJhZ09w
VG9Ecm9wQWN0aW9uKHVuc2lnbmVkIGFjdGlvbnMpCiAKIFFXZWJQYWdlUHJpdmF0ZTo6UVdlYlBh
Z2VQcml2YXRlKFFXZWJQYWdlICpxcSkKICAgICA6IHEocXEpCi0gICAgLCBjbGllbnQoMCkKICNp
ZiBRVF9WRVJTSU9OIDwgMHgwNDA2MDAKICAgICAsIHZpZXcoMCkKICNlbmRpZgpAQCAtMzg3LDYg
KzM4Niw4IEBAIFFXZWJQYWdlUHJpdmF0ZTo6UVdlYlBhZ2VQcml2YXRlKFFXZWJQYWdlICpxcSkK
IAogICAgIHNldHRpbmdzID0gbmV3IFFXZWJTZXR0aW5ncyhwYWdlLT5zZXR0aW5ncygpKTsKIAor
ICAgIHBsYXRmb3JtQ2xpZW50ID0gbmV3IFBsYXRmb3JtQ2xpZW50KCk7CisKICNpZm5kZWYgUVRf
Tk9fVU5ET1NUQUNLCiAgICAgdW5kb1N0YWNrID0gMDsKICNlbmRpZgpAQCAtNDE4LDYgKzQxOSw3
IEBAIFFXZWJQYWdlUHJpdmF0ZTo6flFXZWJQYWdlUHJpdmF0ZSgpCiAjZW5kaWYKICAgICBkZWxl
dGUgc2V0dGluZ3M7CiAgICAgZGVsZXRlIHBhZ2U7CisgICAgZGVsZXRlIHBsYXRmb3JtQ2xpZW50
OwogfQogCiBib29sIFFXZWJQYWdlUHJpdmF0ZTo6YWNjZXB0TmF2aWdhdGlvblJlcXVlc3QoUVdl
YkZyYW1lICpmcmFtZSwgY29uc3QgUU5ldHdvcmtSZXF1ZXN0ICZyZXF1ZXN0LCBRV2ViUGFnZTo6
TmF2aWdhdGlvblR5cGUgdHlwZSkKQEAgLTg1Nyw2ICs4NTksOCBAQCB2b2lkIFFXZWJQYWdlUHJp
dmF0ZTo6aGFuZGxlU29mdHdhcmVJbnB1dFBhbmVsKFF0OjpNb3VzZUJ1dHRvbiBidXR0b24pCiAg
ICAgaWYgKCFmcmFtZSkKICAgICAgICAgcmV0dXJuOwogCisgICAgUVdlYlBhZ2VDbGllbnQqIGNs
aWVudCA9IHBsYXRmb3JtQ2xpZW50LT53ZWJQYWdlQ2xpZW50KCk7CisKICAgICBpZiAoY2xpZW50
ICYmIGNsaWVudC0+aW5wdXRNZXRob2RFbmFibGVkKCkKICAgICAgICAgJiYgZnJhbWUtPmRvY3Vt
ZW50KCktPmZvY3VzZWROb2RlKCkKICAgICAgICAgJiYgYnV0dG9uID09IFF0OjpMZWZ0QnV0dG9u
ICYmIHFBcHAtPmF1dG9TaXBFbmFibGVkKCkpIHsKQEAgLTE3ODEsMTMgKzE3ODUsMTMgQEAgdm9p
ZCBRV2ViUGFnZTo6c2V0VmlldyhRV2lkZ2V0ICp2aWV3KQogICAgIGlmICh0aGlzLT52aWV3KCkg
IT0gdmlldykgewogICAgICAgICBkLT52aWV3ID0gdmlldzsKICAgICAgICAgaWYgKCF2aWV3KSB7
Ci0gICAgICAgICAgICBkZWxldGUgZC0+Y2xpZW50OwotICAgICAgICAgICAgZC0+Y2xpZW50ID0g
MDsKKyAgICAgICAgICAgIGRlbGV0ZSBkLT5wbGF0Zm9ybUNsaWVudC0+d2ViUGFnZUNsaWVudCgp
OworICAgICAgICAgICAgZC0+cGxhdGZvcm1DbGllbnQtPnNldFBhZ2VDbGllbnQoMCk7CiAgICAg
ICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBpZiAoIWQtPmNsaWVudCkgCi0gICAgICAgICAgICAg
ICAgZC0+Y2xpZW50ID0gbmV3IFFXZWJQYWdlV2lkZ2V0Q2xpZW50KHZpZXcpOworICAgICAgICAg
ICAgaWYgKCFkLT5wbGF0Zm9ybUNsaWVudC0+d2ViUGFnZUNsaWVudCgpKQorICAgICAgICAgICAg
ICAgIGQtPnBsYXRmb3JtQ2xpZW50LT5zZXRQYWdlQ2xpZW50KG5ldyBRV2ViUGFnZVdpZGdldENs
aWVudCh2aWV3KSk7CiAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgc3RhdGljX2Nh
c3Q8UVdlYlBhZ2VXaWRnZXRDbGllbnQqPihkLT5jbGllbnQpLT52aWV3ID0gdmlldzsKKyAgICAg
ICAgICAgICAgICBzdGF0aWNfY2FzdDxRV2ViUGFnZVdpZGdldENsaWVudCo+KGQtPnBsYXRmb3Jt
Q2xpZW50LT53ZWJQYWdlQ2xpZW50KCkpLT52aWV3ID0gdmlldzsKICAgICAgICAgfQogICAgICAg
ICBzZXRWaWV3cG9ydFNpemUodmlldyA/IHZpZXctPnNpemUoKSA6IFFTaXplKDAsIDApKTsKICAg
ICB9CmRpZmYgLS1naXQgYS9XZWJLaXQvcXQvQXBpL3F3ZWJwYWdlX3AuaCBiL1dlYktpdC9xdC9B
cGkvcXdlYnBhZ2VfcC5oCmluZGV4IGZmYmRkNTEuLjgxNWNhNjcgMTAwNjQ0Ci0tLSBhL1dlYktp
dC9xdC9BcGkvcXdlYnBhZ2VfcC5oCisrKyBiL1dlYktpdC9xdC9BcGkvcXdlYnBhZ2VfcC5oCkBA
IC0zMSw4ICszMSwxMCBAQAogI2luY2x1ZGUgInF3ZWJoaXN0b3J5LmgiCiAjaW5jbHVkZSAicXdl
YmZyYW1lLmgiCiAKKwogI2luY2x1ZGUgIktVUkwuaCIKICNpbmNsdWRlICJQbGF0Zm9ybVN0cmlu
Zy5oIgorI2luY2x1ZGUgIlF0UGxhdGZvcm1QYWdlQ2xpZW50LmgiCiAKICNpbmNsdWRlIDx3dGYv
UmVmUHRyLmg+CiAKQEAgLTU4LDYgKzYwLDE4IEBAIFFUX0VORF9OQU1FU1BBQ0UKIGNsYXNzIFFX
ZWJJbnNwZWN0b3I7CiBjbGFzcyBRV2ViUGFnZUNsaWVudDsKIAorY2xhc3MgUGxhdGZvcm1DbGll
bnQgOiBwdWJsaWMgUXRQbGF0Zm9ybVBhZ2VDbGllbnQgeworcHVibGljOgorICAgIFBsYXRmb3Jt
Q2xpZW50KCkgOiBtX3BhZ2VDbGllbnQoMCkge30KKyAgICB2aXJ0dWFsIFFXZWJQYWdlQ2xpZW50
KiB3ZWJQYWdlQ2xpZW50KCkgeyByZXR1cm4gbV9wYWdlQ2xpZW50OyB9CisgICAgdmlydHVhbCBX
ZWJDb3JlOjpRdERlbGVnYXRpb25DbGllbnQqIGRlbGVnYXRpb25DbGllbnQoKSB7IHJldHVybiAw
OyB9CisKKyAgICB2b2lkIHNldFBhZ2VDbGllbnQoUVdlYlBhZ2VDbGllbnQqIHBhZ2VDbGllbnQp
IHsgbV9wYWdlQ2xpZW50ID0gcGFnZUNsaWVudDsgfQorCitwcml2YXRlOgorICAgIFFXZWJQYWdl
Q2xpZW50KiBtX3BhZ2VDbGllbnQ7Cit9OworCiBjbGFzcyBRV2ViUGFnZVByaXZhdGUgewogcHVi
bGljOgogICAgIFFXZWJQYWdlUHJpdmF0ZShRV2ViUGFnZSopOwpAQCAtMTM1LDcgKzE0OSw2IEBA
IHB1YmxpYzoKICAgICBRUG9pbnRlcjxRV2ViRnJhbWU+IG1haW5GcmFtZTsKIAogICAgIFFXZWJQ
YWdlICpxOwotICAgIFFXZWJQYWdlQ2xpZW50KiBjbGllbnQ7CiAjaWZuZGVmIFFUX05PX1VORE9T
VEFDSwogICAgIFFVbmRvU3RhY2sgKnVuZG9TdGFjazsKICNlbmRpZgpAQCAtMTgyLDYgKzE5NSw4
IEBAIHB1YmxpYzoKICAgICBib29sIGluc3BlY3RvcklzSW50ZXJuYWxPbmx5OyAvLyBUcnVlIGlm
IGNyZWF0ZWQgdGhyb3VnaCB0aGUgSW5zcGVjdCBjb250ZXh0IG1lbnUgYWN0aW9uCiAKICAgICBz
dGF0aWMgYm9vbCBkcnRSdW47CisKKyAgICBQbGF0Zm9ybUNsaWVudCogcGxhdGZvcm1DbGllbnQ7
CiB9OwogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1dlYktpdC9xdC9BcGkvcXdlYnZpZXcuY3BwIGIv
V2ViS2l0L3F0L0FwaS9xd2Vidmlldy5jcHAKaW5kZXggMjc1ZjIwOC4uZmI1NTVkZiAxMDA2NDQK
LS0tIGEvV2ViS2l0L3F0L0FwaS9xd2Vidmlldy5jcHAKKysrIGIvV2ViS2l0L3F0L0FwaS9xd2Vi
dmlldy5jcHAKQEAgLTE3NCw4ICsxNzQsOCBAQCBRV2ViVmlldzo6flFXZWJWaWV3KCkKICNlbHNl
CiAgICAgICAgIGQtPnBhZ2UtPmQtPnZpZXcgPSAwOwogI2VuZGlmCi0gICAgICAgIGRlbGV0ZSBk
LT5wYWdlLT5kLT5jbGllbnQ7Ci0gICAgICAgIGQtPnBhZ2UtPmQtPmNsaWVudCA9IDA7CisgICAg
ICAgIGRlbGV0ZSBkLT5wYWdlLT5kLT5wbGF0Zm9ybUNsaWVudC0+d2ViUGFnZUNsaWVudCgpOwor
ICAgICAgICBkLT5wYWdlLT5kLT5wbGF0Zm9ybUNsaWVudC0+c2V0UGFnZUNsaWVudCgwKTsKICAg
ICB9CiAKICAgICBpZiAoZC0+cGFnZSAmJiBkLT5wYWdlLT5wYXJlbnQoKSA9PSB0aGlzKQpAQCAt
MjExLDcgKzIxMSw3IEBAIHZvaWQgUVdlYlZpZXc6OnNldFBhZ2UoUVdlYlBhZ2UqIHBhZ2UpCiAg
ICAgaWYgKGQtPnBhZ2UgPT0gcGFnZSkKICAgICAgICAgcmV0dXJuOwogICAgIGlmIChkLT5wYWdl
KSB7Ci0gICAgICAgIGQtPnBhZ2UtPmQtPmNsaWVudCA9IDA7IC8vIHVuc2V0IHRoZSBwYWdlIGNs
aWVudAorICAgICAgICBkLT5wYWdlLT5kLT5wbGF0Zm9ybUNsaWVudC0+c2V0UGFnZUNsaWVudCgw
KTsgLy8gdW5zZXQgdGhlIHBhZ2UgY2xpZW50CiAgICAgICAgIGlmIChkLT5wYWdlLT5wYXJlbnQo
KSA9PSB0aGlzKQogICAgICAgICAgICAgZGVsZXRlIGQtPnBhZ2U7CiAgICAgICAgIGVsc2UKQEAg
LTY0Miw3ICs2NDIsNyBAQCBib29sIFFXZWJWaWV3OjpldmVudChRRXZlbnQgKmUpCiAgICAgICAg
ICAgICAvLyBXZWJDb3JlLgogICAgICAgICAgICAgLy8gRklYTUU6IEFkZCBhIFFFdmVudDo6Q3Vy
c29yVW5zZXQgb3Igc2ltaWxhciB0byBRdC4KICAgICAgICAgICAgIGlmIChjdXJzb3IoKS5zaGFw
ZSgpID09IFF0OjpBcnJvd0N1cnNvcikKLSAgICAgICAgICAgICAgICBkLT5wYWdlLT5kLT5jbGll
bnQtPnJlc2V0Q3Vyc29yKCk7CisgICAgICAgICAgICAgICAgZC0+cGFnZS0+ZC0+cGxhdGZvcm1D
bGllbnQtPndlYlBhZ2VDbGllbnQoKS0+cmVzZXRDdXJzb3IoKTsKICNlbmRpZgogI2lmIFFUX1ZF
UlNJT04gPj0gUVRfVkVSU0lPTl9DSEVDSyg0LCA2LCAwKQogICAgICAgICB9IGVsc2UgaWYgKGUt
PnR5cGUoKSA9PSBRRXZlbnQ6OlRvdWNoQmVnaW4gCmRpZmYgLS1naXQgYS9XZWJLaXQvcXQvQ2hh
bmdlTG9nIGIvV2ViS2l0L3F0L0NoYW5nZUxvZwppbmRleCA4ZGZhYjY5Li4zYWQxOTM3IDEwMDY0
NAotLS0gYS9XZWJLaXQvcXQvQ2hhbmdlTG9nCisrKyBiL1dlYktpdC9xdC9DaGFuZ2VMb2cKQEAg
LTEsMyArMSw0NyBAQAorMjAwOS0xMi0yMSAgTHVpeiBBZ29zdGluaSAgPGx1aXouYWdvc3RpbmlA
b3BlbmJvc3NhLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBbUXRdIERlbGVnYXRpb24gY2xpZW50CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zMjgyNgorCisgICAgICAgIFF0IGRlbGVnYXRpb24gY2xp
ZW50LgorCisgICAgICAgIFRoZSBuZXcgY2xhc3MgUXRQbGF0Zm9ybVBhZ2VDbGllbnQgcmVwbGFj
ZWQgdGhlIGNsYXNzIFFXZWJQYWdlQ2xpZW50CisgICAgICAgIGFzIHR5cGUgUGxhdGFmb3JtUGFn
ZUNsaWVudCAoV2lkZ2V0LmggNzkpLiBRdFBsYXRmb3JtUGFnZUNsaWVudCBpcyBjb21wb3NlZAor
ICAgICAgICBieSBhbiBpbnN0YW5jZSBvZiBRV2ViUGFnZUNsaWVudCBhbmQgYW4gaW5zdGFuY2Ug
b2YgdGhlIG5ldyBjbGFzcworICAgICAgICBRdERlbGVnYXRpb25DbGllbnQuIFRoaXMgd2F5IGFu
IG9iamVjdCBvZiBjbGFzcyBRdERlbGVnYXRpb25DbGllbnQgcHJvdmlkZWQgYnkKKyAgICAgICAg
dGhlIFdlYktpdCBsYXllciBpcyBlYXNpbHkgYWNjZXNzaWJsZSBpbiBXZWJDb3JlIGxheWVyIHRo
cm91Z2ggdGhlCisgICAgICAgIEhvc3RXaW5kb3cgaW50cmVmYWNlLgorCisgICAgICAgIEFsbCBy
ZWxhdGVkIGNoYW5nZXMgaGF2ZSBiZWVuIG1hZGUgaW4gV2ViQ29yZSBhbmQgV2ViS2l0IGxheWVy
cy4KKworICAgICAgICAqIEFwaS9xZ3JhcGhpY3N3ZWJ2aWV3LmNwcDoKKyAgICAgICAgKFFHcmFw
aGljc1dlYlZpZXc6On5RR3JhcGhpY3NXZWJWaWV3KToKKyAgICAgICAgKFFHcmFwaGljc1dlYlZp
ZXc6OnNldFBhZ2UpOgorICAgICAgICAqIEFwaS9xd2VicGFnZS5jcHA6CisgICAgICAgIChRV2Vi
UGFnZVByaXZhdGU6OlFXZWJQYWdlUHJpdmF0ZSk6CisgICAgICAgIChRV2ViUGFnZVByaXZhdGU6
On5RV2ViUGFnZVByaXZhdGUpOgorICAgICAgICAoUVdlYlBhZ2VQcml2YXRlOjpoYW5kbGVTb2Z0
d2FyZUlucHV0UGFuZWwpOgorICAgICAgICAoUVdlYlBhZ2U6OnNldFZpZXcpOgorICAgICAgICAq
IEFwaS9xd2VicGFnZV9wLmg6CisgICAgICAgIChQbGF0Zm9ybUNsaWVudDo6UGxhdGZvcm1DbGll
bnQpOgorICAgICAgICAoUGxhdGZvcm1DbGllbnQ6OndlYlBhZ2VDbGllbnQpOgorICAgICAgICAo
UGxhdGZvcm1DbGllbnQ6OmRlbGVnYXRpb25DbGllbnQpOgorICAgICAgICAoUGxhdGZvcm1DbGll
bnQ6OnNldFBhZ2VDbGllbnQpOgorICAgICAgICAqIEFwaS9xd2Vidmlldy5jcHA6CisgICAgICAg
IChRV2ViVmlldzo6flFXZWJWaWV3KToKKyAgICAgICAgKFFXZWJWaWV3OjpzZXRQYWdlKToKKyAg
ICAgICAgKFFXZWJWaWV3OjpldmVudCk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvQ2hyb21l
Q2xpZW50UXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2hyb21lQ2xpZW50UXQ6OnJlcGFpbnQp
OgorICAgICAgICAoV2ViQ29yZTo6Q2hyb21lQ2xpZW50UXQ6OnNjcm9sbCk6CisgICAgICAgIChX
ZWJDb3JlOjpDaHJvbWVDbGllbnRRdDo6cGxhdGZvcm1QYWdlQ2xpZW50KToKKyAgICAgICAgKiBX
ZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRRdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFZGl0
b3JDbGllbnRRdDo6c2V0SW5wdXRNZXRob2RTdGF0ZSk6CisgICAgICAgICogV2ViQ29yZVN1cHBv
cnQvRnJhbWVMb2FkZXJDbGllbnRRdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRl
ckNsaWVudFF0OjpjcmVhdGVQbHVnaW4pOgorCiAyMDA5LTEyLTE4ICBBcml5YSBIaWRheWF0ICA8
YXJpeWEuaGlkYXlhdEBnbWFpbC5jb20+CiAKICAgICAgICAgQnVpbGQgZml4LCBub3QgcmV2aWV3
ZWQuCmRpZmYgLS1naXQgYS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50UXQu
Y3BwIGIvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudFF0LmNwcAppbmRleCA3
M2NiNGQ3Li5iYzljNGVkIDEwMDY0NAotLS0gYS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvQ2hy
b21lQ2xpZW50UXQuY3BwCisrKyBiL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGll
bnRRdC5jcHAKQEAgLTMyNCw4ICszMjQsOCBAQCB2b2lkIENocm9tZUNsaWVudFF0OjpyZXBhaW50
KGNvbnN0IEludFJlY3QmIHdpbmRvd1JlY3QsIGJvb2wgY29udGVudENoYW5nZWQsIGJvbwogICAg
ICAgICBpZiAocGxhdGZvcm1QYWdlQ2xpZW50KCkpIHsKICAgICAgICAgICAgIFFSZWN0IHJlY3Qo
d2luZG93UmVjdCk7CiAgICAgICAgICAgICByZWN0ID0gcmVjdC5pbnRlcnNlY3RlZChRUmVjdChR
UG9pbnQoMCwgMCksIG1fd2ViUGFnZS0+dmlld3BvcnRTaXplKCkpKTsKLSAgICAgICAgICAgIGlm
ICghcmVjdC5pc0VtcHR5KCkpCi0gICAgICAgICAgICAgICAgcGxhdGZvcm1QYWdlQ2xpZW50KCkt
PnVwZGF0ZShyZWN0KTsKKyAgICAgICAgICAgIGlmICghcmVjdC5pc0VtcHR5KCkgJiYgcGxhdGZv
cm1QYWdlQ2xpZW50KCktPndlYlBhZ2VDbGllbnQoKSkKKyAgICAgICAgICAgICAgICBwbGF0Zm9y
bVBhZ2VDbGllbnQoKS0+d2ViUGFnZUNsaWVudCgpLT51cGRhdGUocmVjdCk7CiAgICAgICAgIH0K
ICAgICAgICAgZW1pdCBtX3dlYlBhZ2UtPnJlcGFpbnRSZXF1ZXN0ZWQod2luZG93UmVjdCk7CiAg
ICAgfQpAQCAtMzM2LDggKzMzNiw4IEBAIHZvaWQgQ2hyb21lQ2xpZW50UXQ6OnJlcGFpbnQoY29u
c3QgSW50UmVjdCYgd2luZG93UmVjdCwgYm9vbCBjb250ZW50Q2hhbmdlZCwgYm9vCiAKIHZvaWQg
Q2hyb21lQ2xpZW50UXQ6OnNjcm9sbChjb25zdCBJbnRTaXplJiBkZWx0YSwgY29uc3QgSW50UmVj
dCYgc2Nyb2xsVmlld1JlY3QsIGNvbnN0IEludFJlY3QmKQogewotICAgIGlmIChwbGF0Zm9ybVBh
Z2VDbGllbnQoKSkKLSAgICAgICAgcGxhdGZvcm1QYWdlQ2xpZW50KCktPnNjcm9sbChkZWx0YS53
aWR0aCgpLCBkZWx0YS5oZWlnaHQoKSwgc2Nyb2xsVmlld1JlY3QpOworICAgIGlmIChwbGF0Zm9y
bVBhZ2VDbGllbnQoKSAmJiBwbGF0Zm9ybVBhZ2VDbGllbnQoKS0+d2ViUGFnZUNsaWVudCgpKQor
ICAgICAgICBwbGF0Zm9ybVBhZ2VDbGllbnQoKS0+d2ViUGFnZUNsaWVudCgpLT5zY3JvbGwoZGVs
dGEud2lkdGgoKSwgZGVsdGEuaGVpZ2h0KCksIHNjcm9sbFZpZXdSZWN0KTsKICAgICBlbWl0IG1f
d2ViUGFnZS0+c2Nyb2xsUmVxdWVzdGVkKGRlbHRhLndpZHRoKCksIGRlbHRhLmhlaWdodCgpLCBz
Y3JvbGxWaWV3UmVjdCk7CiB9CiAKQEAgLTM1NSw3ICszNTUsNyBAQCBJbnRQb2ludCBDaHJvbWVD
bGllbnRRdDo6c2NyZWVuVG9XaW5kb3coY29uc3QgSW50UG9pbnQmIHBvaW50KSBjb25zdAogCiBQ
bGF0Zm9ybVBhZ2VDbGllbnQgQ2hyb21lQ2xpZW50UXQ6OnBsYXRmb3JtUGFnZUNsaWVudCgpIGNv
bnN0CiB7Ci0gICAgcmV0dXJuIG1fd2ViUGFnZS0+ZC0+Y2xpZW50OworICAgIHJldHVybiBtX3dl
YlBhZ2UtPmQtPnBsYXRmb3JtQ2xpZW50OwogfQogCiB2b2lkIENocm9tZUNsaWVudFF0Ojpjb250
ZW50c1NpemVDaGFuZ2VkKEZyYW1lKiBmcmFtZSwgY29uc3QgSW50U2l6ZSYgc2l6ZSkgY29uc3QK
ZGlmZiAtLWdpdCBhL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRRdC5jcHAg
Yi9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50UXQuY3BwCmluZGV4IDMwOTFh
NDMuLjRlYjgxYzEgMTAwNjQ0Ci0tLSBhL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9FZGl0b3JD
bGllbnRRdC5jcHAKKysrIGIvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudFF0
LmNwcApAQCAtNjA4LDcgKzYwOCw3IEBAIGJvb2wgRWRpdG9yQ2xpZW50UXQ6OmlzRWRpdGluZygp
IGNvbnN0CiAKIHZvaWQgRWRpdG9yQ2xpZW50UXQ6OnNldElucHV0TWV0aG9kU3RhdGUoYm9vbCBh
Y3RpdmUpCiB7Ci0gICAgUVdlYlBhZ2VDbGllbnQqIHdlYlBhZ2VDbGllbnQgPSBtX3BhZ2UtPmQt
PmNsaWVudDsKKyAgICBRV2ViUGFnZUNsaWVudCogd2ViUGFnZUNsaWVudCA9IG1fcGFnZS0+ZC0+
cGxhdGZvcm1DbGllbnQtPndlYlBhZ2VDbGllbnQoKTsKICAgICBpZiAod2ViUGFnZUNsaWVudCkg
ewogI2lmIFFUX1ZFUlNJT04gPj0gMHgwNDA2MDAKICAgICAgICAgYm9vbCBpc1Bhc3N3b3JkRmll
bGQgPSBmYWxzZTsKZGlmZiAtLWdpdCBhL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9GcmFtZUxv
YWRlckNsaWVudFF0LmNwcCBiL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNs
aWVudFF0LmNwcAppbmRleCAzYzMwYWI1Li44YzUzODIwIDEwMDY0NAotLS0gYS9XZWJLaXQvcXQv
V2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRRdC5jcHAKKysrIGIvV2ViS2l0L3F0L1dl
YkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50UXQuY3BwCkBAIC0xMjcyLDggKzEyNzIsOSBA
QCBQYXNzUmVmUHRyPFdpZGdldD4gRnJhbWVMb2FkZXJDbGllbnRRdDo6Y3JlYXRlUGx1Z2luKGNv
bnN0IEludFNpemUmIHBsdWdpblNpemUsCiAgICAgICAgICAgICBRV2lkZ2V0KiB3aWRnZXQgPSBx
b2JqZWN0X2Nhc3Q8UVdpZGdldCo+KG9iamVjdCk7CiAgICAgICAgICAgICBpZiAod2lkZ2V0KSB7
CiAgICAgICAgICAgICAgICAgUVdpZGdldCogcGFyZW50V2lkZ2V0ID0gMDsKLSAgICAgICAgICAg
ICAgICBpZiAobV93ZWJGcmFtZS0+cGFnZSgpLT5kLT5jbGllbnQpCi0gICAgICAgICAgICAgICAg
ICAgIHBhcmVudFdpZGdldCA9IHFvYmplY3RfY2FzdDxRV2lkZ2V0Kj4obV93ZWJGcmFtZS0+cGFn
ZSgpLT5kLT5jbGllbnQtPnBsdWdpblBhcmVudCgpKTsKKyAgICAgICAgICAgICAgICBRV2ViUGFn
ZUNsaWVudCogY2xpZW50ID0gbV93ZWJGcmFtZS0+cGFnZSgpLT5kLT5wbGF0Zm9ybUNsaWVudC0+
d2ViUGFnZUNsaWVudCgpOworICAgICAgICAgICAgICAgIGlmIChjbGllbnQpCisgICAgICAgICAg
ICAgICAgICAgIHBhcmVudFdpZGdldCA9IHFvYmplY3RfY2FzdDxRV2lkZ2V0Kj4oY2xpZW50LT5w
bHVnaW5QYXJlbnQoKSk7CiAgICAgICAgICAgICAgICAgaWYgKHBhcmVudFdpZGdldCkgLy8gZG9u
J3QgcmVwYXJlbnQgdG8gbm90aGluZyAoaS5lLiBrZWVwIHdoYXRldmVyIHBhcmVudCBRV2ViUGFn
ZTo6Y3JlYXRlUGx1Z2luKCkgY2hvc2UuCiAgICAgICAgICAgICAgICAgICAgIHdpZGdldC0+c2V0
UGFyZW50KHBhcmVudFdpZGdldCk7CiAgICAgICAgICAgICAgICAgd2lkZ2V0LT5oaWRlKCk7CkBA
IC0xMjg3LDggKzEyODgsOSBAQCBQYXNzUmVmUHRyPFdpZGdldD4gRnJhbWVMb2FkZXJDbGllbnRR
dDo6Y3JlYXRlUGx1Z2luKGNvbnN0IEludFNpemUmIHBsdWdpblNpemUsCiAgICAgICAgICAgICBR
R3JhcGhpY3NXaWRnZXQqIGdyYXBoaWNzV2lkZ2V0ID0gcW9iamVjdF9jYXN0PFFHcmFwaGljc1dp
ZGdldCo+KG9iamVjdCk7CiAgICAgICAgICAgICBpZiAoZ3JhcGhpY3NXaWRnZXQpIHsKICAgICAg
ICAgICAgICAgICBRR3JhcGhpY3NPYmplY3QqIHBhcmVudFdpZGdldCA9IDA7Ci0gICAgICAgICAg
ICAgICAgaWYgKG1fd2ViRnJhbWUtPnBhZ2UoKS0+ZC0+Y2xpZW50KQotICAgICAgICAgICAgICAg
ICAgICBwYXJlbnRXaWRnZXQgPSBxb2JqZWN0X2Nhc3Q8UUdyYXBoaWNzT2JqZWN0Kj4obV93ZWJG
cmFtZS0+cGFnZSgpLT5kLT5jbGllbnQtPnBsdWdpblBhcmVudCgpKTsKKyAgICAgICAgICAgICAg
ICBRV2ViUGFnZUNsaWVudCogY2xpZW50ID0gbV93ZWJGcmFtZS0+cGFnZSgpLT5kLT5wbGF0Zm9y
bUNsaWVudC0+d2ViUGFnZUNsaWVudCgpOworICAgICAgICAgICAgICAgIGlmIChjbGllbnQpCisg
ICAgICAgICAgICAgICAgICAgIHBhcmVudFdpZGdldCA9IHFvYmplY3RfY2FzdDxRR3JhcGhpY3NP
YmplY3QqPihjbGllbnQtPnBsdWdpblBhcmVudCgpKTsKICAgICAgICAgICAgICAgICBncmFwaGlj
c1dpZGdldC0+aGlkZSgpOwogICAgICAgICAgICAgICAgIGlmIChwYXJlbnRXaWRnZXQpIC8vIGRv
bid0IHJlcGFyZW50IHRvIG5vdGhpbmcgKGkuZS4ga2VlcCB3aGF0ZXZlciBwYXJlbnQgUVdlYlBh
Z2U6OmNyZWF0ZVBsdWdpbigpIGNob3NlLgogICAgICAgICAgICAgICAgICAgICBncmFwaGljc1dp
ZGdldC0+c2V0UGFyZW50SXRlbShwYXJlbnRXaWRnZXQpOwpAQCAtMTMwNCw3ICsxMzA2LDcgQEAg
UGFzc1JlZlB0cjxXaWRnZXQ+IEZyYW1lTG9hZGVyQ2xpZW50UXQ6OmNyZWF0ZVBsdWdpbihjb25z
dCBJbnRTaXplJiBwbHVnaW5TaXplLAogICAgICAgICBWZWN0b3I8U3RyaW5nPiBwYXJhbXMgPSBw
YXJhbU5hbWVzOwogICAgICAgICBWZWN0b3I8U3RyaW5nPiB2YWx1ZXMgPSBwYXJhbVZhbHVlczsK
ICAgICAgICAgaWYgKG1pbWVUeXBlID09ICJhcHBsaWNhdGlvbi94LXNob2Nrd2F2ZS1mbGFzaCIp
IHsKLSAgICAgICAgICAgIFFXZWJQYWdlQ2xpZW50KiBjbGllbnQgPSBtX3dlYkZyYW1lLT5wYWdl
KCktPmQtPmNsaWVudDsKKyAgICAgICAgICAgIFFXZWJQYWdlQ2xpZW50KiBjbGllbnQgPSBtX3dl
YkZyYW1lLT5wYWdlKCktPmQtPnBsYXRmb3JtQ2xpZW50LT53ZWJQYWdlQ2xpZW50KCk7CiAgICAg
ICAgICAgICBpZiAoIWNsaWVudCB8fCAhcW9iamVjdF9jYXN0PFFXaWRnZXQqPihjbGllbnQtPnBs
dWdpblBhcmVudCgpKSkgewogICAgICAgICAgICAgICAgIC8vIGluamVjdCB3bW9kZT1vcGFxdWUg
d2hlbiB0aGVyZSBpcyBubyBjbGllbnQgb3IgdGhlIGNsaWVudCBpcyBub3QgYSBRV2ViVmlldwog
ICAgICAgICAgICAgICAgIHNpemVfdCB3bW9kZUluZGV4ID0gcGFyYW1zLmZpbmQoIndtb2RlIik7
Ci0tIAoxLjYuMy4zCgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>46152</attachid>
            <date>2010-01-08 13:25:21 -0800</date>
            <delta_ts>2010-01-08 13:48:11 -0800</delta_ts>
            <desc>Qt delegation client second try</desc>
            <filename>0001-Qt-Delegation-client.patch</filename>
            <type>text/plain</type>
            <size>25096</size>
            <attacher name="Luiz Agostini">luiz</attacher>
            
              <data encoding="base64">RnJvbSBkNTMxZWNhOGY4YzRmOTRjNDQ4NGJmZDRlYTE1NzY2ZTcyMTBkZTRhIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBMdWl6IEFnb3N0aW5pIDxsdWl6LmFnb3N0aW5pQG9wZW5ib3Nz
YS5vcmc+CkRhdGU6IEZyaSwgOCBKYW4gMjAxMCAxODoxOTowOCAtMDMwMApTdWJqZWN0OiBbUEFU
Q0hdIFtRdF0gRGVsZWdhdGlvbiBjbGllbnQKIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0zMjgyNgoKUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCgpXZWJDb3JlOgoK
RmFjdG9yeSByZWxhdGVkIGNvZGUgcmVtb3ZlZCBmcm9tIFF0QWJzdHJhY3RXZWJQb3B1cC4gUG9w
dXBzIGFyZSBub3cgY3JlYXRlZApieSBDaHJvbWVDbGllbnRRdC4KUG9wdXAgY29udGVudCBpbmZv
cm1hdGlvbiBzdHJ1Y3QgYWRkZWQgdG8gY2xhc3MgUXRBYnN0cmFjdFdlYlBvcHVwLgpQb3B1cE1l
bnVDbGllbnQgaXMgbm93IGhpZGRlbiBmcm9tIGhpZ2hlciBsYXllcnMuClF0QWJzdHJhY3RXZWJQ
b3B1cCBub3cgcmVjZWl2ZXMgY29udGVudCBpbmZvcm1hdGlvbiBhbmQgZm9udCBhcyBwYXJhbWV0
ZXJzCm9mIG1ldGhvZCBwb3B1bGF0ZS4KUXRGYWxsYmFja1dlYlBvcHVwIG1vdmVkIHRvIFdlYktp
dC9xdC9XZWJDb3JlU3VwcG9ydC4KCiogV2ViQ29yZS5wcm86CiogcGxhdGZvcm0vcXQvUG9wdXBN
ZW51UXQuY3BwOgooV2ViQ29yZTo6UG9wdXBNZW51OjpQb3B1cE1lbnUpOgooV2ViQ29yZTo6Z2V0
SXRlbXMpOgooV2ViQ29yZTo6UG9wdXBNZW51OjpzaG93KToKKiBwbGF0Zm9ybS9xdC9RdEFic3Ry
YWN0V2ViUG9wdXAuY3BwOgooV2ViQ29yZTo6UXRBYnN0cmFjdFdlYlBvcHVwOjpRdEFic3RyYWN0
V2ViUG9wdXApOgooV2ViQ29yZTo6UXRBYnN0cmFjdFdlYlBvcHVwOjpwb3B1cERpZEhpZGUpOgoo
V2ViQ29yZTo6UXRBYnN0cmFjdFdlYlBvcHVwOjp2YWx1ZUNoYW5nZWQpOgoqIHBsYXRmb3JtL3F0
L1F0QWJzdHJhY3RXZWJQb3B1cC5oOgooV2ViQ29yZTo6UXRBYnN0cmFjdFdlYlBvcHVwOjpJdGVt
OjopOgoqIHBsYXRmb3JtL3F0L1F0RmFsbGJhY2tXZWJQb3B1cC5jcHA6IFJlbW92ZWQuCiogcGxh
dGZvcm0vcXQvUXRGYWxsYmFja1dlYlBvcHVwLmg6IFJlbW92ZWQuCgpXZWJLaXQvcXQ6CgpBZGRl
ZCBtZXRob2QgY3JlYXRlUG9wdXAgdG8gQ2hyb21lQ2xpZW50UXQgdXNlZCB0byBjcmVhdGUgcG9w
dXBzLgpRdEZhbGxiYWNrV2ViUG9wdXAgbW92ZWQgZnJvbSBXZWJDb3JlL3BsYXRmb3JtL3F0IHRv
CldlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC4KCiogV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50
UXQuY3BwOgooV2ViQ29yZTo6Q2hyb21lQ2xpZW50UXQ6OmNyZWF0ZVBvcHVwKToKKiBXZWJDb3Jl
U3VwcG9ydC9DaHJvbWVDbGllbnRRdC5oOgoqIFdlYkNvcmVTdXBwb3J0L1F0RmFsbGJhY2tXZWJQ
b3B1cC5jcHA6IEFkZGVkLgooV2ViQ29yZTo6UXRGYWxsYmFja1dlYlBvcHVwOjpRdEZhbGxiYWNr
V2ViUG9wdXApOgooV2ViQ29yZTo6UXRGYWxsYmFja1dlYlBvcHVwOjpzaG93KToKKFdlYkNvcmU6
OlF0RmFsbGJhY2tXZWJQb3B1cDo6cG9wdWxhdGUpOgooV2ViQ29yZTo6UXRGYWxsYmFja1dlYlBv
cHVwOjpzaG93UG9wdXApOgooV2ViQ29yZTo6UXRGYWxsYmFja1dlYlBvcHVwOjpoaWRlUG9wdXAp
OgooV2ViQ29yZTo6UXRGYWxsYmFja1dlYlBvcHVwOjphY3RpdmVDaGFuZ2VkKToKKFdlYkNvcmU6
OlF0RmFsbGJhY2tXZWJQb3B1cDo6c2V0UGFyZW50KToKKiBXZWJDb3JlU3VwcG9ydC9RdEZhbGxi
YWNrV2ViUG9wdXAuaDogQWRkZWQuCihXZWJDb3JlOjpRdEZhbGxiYWNrV2ViUG9wdXA6OmhpZGUp
OgotLS0KIFdlYkNvcmUvQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwg
ICAyOSArKysrKwogV2ViQ29yZS9XZWJDb3JlLnBybyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgfCAgICA0ICstCiBXZWJDb3JlL3BsYXRmb3JtL3F0L1BvcHVwTWVudVF0LmNwcCAgICAgICAg
ICAgICB8ICAgNTIgKysrKysrKystLQogV2ViQ29yZS9wbGF0Zm9ybS9xdC9RdEFic3RyYWN0V2Vi
UG9wdXAuY3BwICAgICAgfCAgIDIzICsrLS0tCiBXZWJDb3JlL3BsYXRmb3JtL3F0L1F0QWJzdHJh
Y3RXZWJQb3B1cC5oICAgICAgICB8ICAgMjcgKysrLS0KIFdlYkNvcmUvcGxhdGZvcm0vcXQvUXRG
YWxsYmFja1dlYlBvcHVwLmNwcCAgICAgIHwgIDExNyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0KIFdl
YkNvcmUvcGxhdGZvcm0vcXQvUXRGYWxsYmFja1dlYlBvcHVwLmggICAgICAgIHwgICA1MCAtLS0t
LS0tLS0KIFdlYktpdC9xdC9DaGFuZ2VMb2cgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwg
ICAyNSArKysrKwogV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudFF0LmNwcCAg
ICAgfCAgICA4ICsrLQogV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudFF0Lmgg
ICAgICAgfCAgICAzICsKIFdlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9RdEZhbGxiYWNrV2ViUG9w
dXAuY3BwIHwgIDEyOCArKysrKysrKysrKysrKysrKysrKysrKwogV2ViS2l0L3F0L1dlYkNvcmVT
dXBwb3J0L1F0RmFsbGJhY2tXZWJQb3B1cC5oICAgfCAgIDUxICsrKysrKysrKwogMTIgZmlsZXMg
Y2hhbmdlZCwgMzEzIGluc2VydGlvbnMoKyksIDIwNCBkZWxldGlvbnMoLSkKIGRlbGV0ZSBtb2Rl
IDEwMDY0NCBXZWJDb3JlL3BsYXRmb3JtL3F0L1F0RmFsbGJhY2tXZWJQb3B1cC5jcHAKIGRlbGV0
ZSBtb2RlIDEwMDY0NCBXZWJDb3JlL3BsYXRmb3JtL3F0L1F0RmFsbGJhY2tXZWJQb3B1cC5oCiBj
cmVhdGUgbW9kZSAxMDA2NDQgV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L1F0RmFsbGJhY2tXZWJQ
b3B1cC5jcHAKIGNyZWF0ZSBtb2RlIDEwMDY0NCBXZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvUXRG
YWxsYmFja1dlYlBvcHVwLmgKCmRpZmYgLS1naXQgYS9XZWJDb3JlL0NoYW5nZUxvZyBiL1dlYkNv
cmUvQ2hhbmdlTG9nCmluZGV4IDhhMThkYWUuLmUyMWNlODIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUv
Q2hhbmdlTG9nCisrKyBiL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzIgQEAKKzIwMTAt
MDEtMDggIEx1aXogQWdvc3RpbmkgIDxsdWl6LmFnb3N0aW5pQG9wZW5ib3NzYS5vcmc+CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgW1F0XSBEZWxlZ2F0
aW9uIGNsaWVudAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MzI4MjYKKworICAgICAgICBGYWN0b3J5IHJlbGF0ZWQgY29kZSByZW1vdmVkIGZyb20gUXRB
YnN0cmFjdFdlYlBvcHVwLiBQb3B1cHMgYXJlIG5vdyBjcmVhdGVkCisgICAgICAgIGJ5IENocm9t
ZUNsaWVudFF0LgorICAgICAgICBQb3B1cCBjb250ZW50IGluZm9ybWF0aW9uIHN0cnVjdCBhZGRl
ZCB0byBjbGFzcyBRdEFic3RyYWN0V2ViUG9wdXAuCisgICAgICAgIFBvcHVwTWVudUNsaWVudCBp
cyBub3cgaGlkZGVuIGZyb20gaGlnaGVyIGxheWVycy4KKyAgICAgICAgUXRBYnN0cmFjdFdlYlBv
cHVwIG5vdyByZWNlaXZlcyBjb250ZW50IGluZm9ybWF0aW9uIGFuZCBmb250IGFzIHBhcmFtZXRl
cnMKKyAgICAgICAgb2YgbWV0aG9kIHBvcHVsYXRlLgorICAgICAgICBRdEZhbGxiYWNrV2ViUG9w
dXAgbW92ZWQgdG8gV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0LgorCisgICAgICAgICogV2ViQ29y
ZS5wcm86CisgICAgICAgICogcGxhdGZvcm0vcXQvUG9wdXBNZW51UXQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6UG9wdXBNZW51OjpQb3B1cE1lbnUpOgorICAgICAgICAoV2ViQ29yZTo6Z2V0SXRl
bXMpOgorICAgICAgICAoV2ViQ29yZTo6UG9wdXBNZW51OjpzaG93KToKKyAgICAgICAgKiBwbGF0
Zm9ybS9xdC9RdEFic3RyYWN0V2ViUG9wdXAuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UXRBYnN0
cmFjdFdlYlBvcHVwOjpRdEFic3RyYWN0V2ViUG9wdXApOgorICAgICAgICAoV2ViQ29yZTo6UXRB
YnN0cmFjdFdlYlBvcHVwOjpwb3B1cERpZEhpZGUpOgorICAgICAgICAoV2ViQ29yZTo6UXRBYnN0
cmFjdFdlYlBvcHVwOjp2YWx1ZUNoYW5nZWQpOgorICAgICAgICAqIHBsYXRmb3JtL3F0L1F0QWJz
dHJhY3RXZWJQb3B1cC5oOgorICAgICAgICAoV2ViQ29yZTo6UXRBYnN0cmFjdFdlYlBvcHVwOjpJ
dGVtOjopOgorICAgICAgICAqIHBsYXRmb3JtL3F0L1F0RmFsbGJhY2tXZWJQb3B1cC5jcHA6IFJl
bW92ZWQuCisgICAgICAgICogcGxhdGZvcm0vcXQvUXRGYWxsYmFja1dlYlBvcHVwLmg6IFJlbW92
ZWQuCisKIDIwMTAtMDEtMDggIFBhdmVsIEZlbGRtYW4gIDxwZmVsZG1hbkBjaHJvbWl1bS5vcmc+
CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgVGltb3RoeSBIYXRjaGVyLgpkaWZmIC0tZ2l0IGEvV2Vi
Q29yZS9XZWJDb3JlLnBybyBiL1dlYkNvcmUvV2ViQ29yZS5wcm8KaW5kZXggNjYzNmIyMS4uNmYw
MzgzOCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9XZWJDb3JlLnBybworKysgYi9XZWJDb3JlL1dlYkNv
cmUucHJvCkBAIC0xOTgzLDcgKzE5ODMsNiBAQCBIRUFERVJTICs9IFwKICAgICBwbGF0Zm9ybS9x
dC9DbGlwYm9hcmRRdC5oIFwKICAgICBwbGF0Zm9ybS9xdC9RV2ViUGFnZUNsaWVudC5oIFwKICAg
ICBwbGF0Zm9ybS9xdC9RdEFic3RyYWN0V2ViUG9wdXAuaCBcCi0gICAgcGxhdGZvcm0vcXQvUXRG
YWxsYmFja1dlYlBvcHVwLmggXAogICAgIHBsYXRmb3JtL3F0L1JlbmRlclRoZW1lUXQuaCBcCiAg
ICAgcGxhdGZvcm0vcXQvU2Nyb2xsYmFyVGhlbWVRdC5oIFwKICAgICBwbGF0Zm9ybS9TY3JvbGxi
YXIuaCBcCkBAIC0yMzg1LDYgKzIzODQsNyBAQCBIRUFERVJTICs9IFwKICAgICB4bWwvWFNMVFBy
b2Nlc3Nvci5oIFwKICAgICB4bWwvWFNMVFVuaWNvZGVTb3J0LmggXAogICAgICQkUFdELy4uL1dl
YktpdC9xdC9BcGkvcXdlYnBsdWdpbmRhdGFiYXNlX3AuaCBcCisgICAgJCRQV0QvLi4vV2ViS2l0
L3F0L1dlYkNvcmVTdXBwb3J0L1F0RmFsbGJhY2tXZWJQb3B1cC5oIFwKICAgICAkJFBXRC8uLi9X
ZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRRdC5oIFwKICAgICAkJFBX
RC9wbGF0Zm9ybS9uZXR3b3JrL3F0L0Ruc1ByZWZldGNoSGVscGVyLmgKIApAQCAtMjQ0Niw3ICsy
NDQ2LDYgQEAgU09VUkNFUyArPSBcCiAgICAgcGxhdGZvcm0vcXQvUGxhdGZvcm1Ub3VjaFBvaW50
UXQuY3BwIFwKICAgICBwbGF0Zm9ybS9xdC9Qb3B1cE1lbnVRdC5jcHAgXAogICAgIHBsYXRmb3Jt
L3F0L1F0QWJzdHJhY3RXZWJQb3B1cC5jcHAgXAotICAgIHBsYXRmb3JtL3F0L1F0RmFsbGJhY2tX
ZWJQb3B1cC5jcHAgXAogICAgIHBsYXRmb3JtL3F0L1JlbmRlclRoZW1lUXQuY3BwIFwKICAgICBw
bGF0Zm9ybS9xdC9TY3JvbGxiYXJRdC5jcHAgXAogICAgIHBsYXRmb3JtL3F0L1Njcm9sbGJhclRo
ZW1lUXQuY3BwIFwKQEAgLTI0NjMsNiArMjQ2Miw3IEBAIFNPVVJDRVMgKz0gXAogICAgIHBsYXRm
b3JtL3F0L1doZWVsRXZlbnRRdC5jcHAgXAogICAgIHBsYXRmb3JtL3F0L1dpZGdldFF0LmNwcCBc
CiAgICAgcGx1Z2lucy9xdC9QbHVnaW5EYXRhUXQuY3BwIFwKKyAgICAuLi9XZWJLaXQvcXQvV2Vi
Q29yZVN1cHBvcnQvUXRGYWxsYmFja1dlYlBvcHVwLmNwcCBcCiAgICAgLi4vV2ViS2l0L3F0L1dl
YkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudFF0LmNwcCBcCiAgICAgLi4vV2ViS2l0L3F0L1dlYkNv
cmVTdXBwb3J0L0NvbnRleHRNZW51Q2xpZW50UXQuY3BwIFwKICAgICAuLi9XZWJLaXQvcXQvV2Vi
Q29yZVN1cHBvcnQvRHJhZ0NsaWVudFF0LmNwcCBcCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRm
b3JtL3F0L1BvcHVwTWVudVF0LmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0vcXQvUG9wdXBNZW51UXQu
Y3BwCmluZGV4IDQ5OGVmN2IuLjYzZTE1NjUgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0v
cXQvUG9wdXBNZW51UXQuY3BwCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vcXQvUG9wdXBNZW51UXQu
Y3BwCkBAIC0xLDcgKzEsNyBAQAogLyoKICAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBwb3B1
cCBtZW51IGltcGxlbWVudGF0aW9uIGZvciA8c2VsZWN0PiBlbGVtZW50cyBpbiBXZWJDb3JlLgog
ICoKLSAqIENvcHlyaWdodCAoQykgMjAwOCwgMjAwOSBOb2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3Ig
aXRzIHN1YnNpZGlhcnkoLWllcykKKyAqIENvcHlyaWdodCAoQykgMjAwOCwgMjAwOSwgMjAxMCBO
b2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykKICAqIENvcHlyaWdo
dCAoQykgMjAwNiBBcHBsZSBDb21wdXRlciwgSW5jLgogICogQ29weXJpZ2h0IChDKSAyMDA2IE1p
Y2hhZWwgRW1tZWwgbWlrZS5lbW1lbEBnbWFpbC5jb20gCiAgKiBDb3lwcmlnaHQgKEMpIDIwMDYg
Tmlrb2xhcyBaaW1tZXJtYW5uIDx6aW1tZXJtYW5uQGtkZS5vcmc+CkBAIC0yNiwxNyArMjYsMTkg
QEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJQb3B1cE1lbnUuaCIKIAorI2luY2x1
ZGUgIkNocm9tZS5oIgorI2luY2x1ZGUgIkNocm9tZUNsaWVudFF0LmgiCiAjaW5jbHVkZSAiRnJh
bWVWaWV3LmgiCiAjaW5jbHVkZSAiUG9wdXBNZW51Q2xpZW50LmgiCisjaW5jbHVkZSAiUVdlYlBh
Z2VDbGllbnQuaCIKICNpbmNsdWRlICJRdEFic3RyYWN0V2ViUG9wdXAuaCIKLSNpbmNsdWRlICJR
dEZhbGxiYWNrV2ViUG9wdXAuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBQb3B1cE1lbnU6
OlBvcHVwTWVudShQb3B1cE1lbnVDbGllbnQqIGNsaWVudCkKICAgICA6IG1fcG9wdXBDbGllbnQo
Y2xpZW50KQorICAgICwgbV9wb3B1cCgwKQogewotICAgIG1fcG9wdXAgPSBRdEFic3RyYWN0V2Vi
UG9wdXA6OmNyZWF0ZShjbGllbnQpOwogfQogCiBQb3B1cE1lbnU6On5Qb3B1cE1lbnUoKQpAQCAt
NDQsMTEgKzQ2LDQ3IEBAIFBvcHVwTWVudTo6flBvcHVwTWVudSgpCiAgICAgZGVsZXRlIG1fcG9w
dXA7CiB9CiAKLXZvaWQgUG9wdXBNZW51OjpzaG93KGNvbnN0IEludFJlY3QmIHIsIEZyYW1lVmll
dyogdiwgaW50IGluZGV4KQorc3RhdGljIFFMaXN0PFF0QWJzdHJhY3RXZWJQb3B1cDo6SXRlbT4g
Z2V0SXRlbXMoUG9wdXBNZW51Q2xpZW50KiBjbGllbnQpCiB7Ci0gICAgUVJlY3QgcmVjdCA9IHI7
Ci0gICAgcmVjdC5tb3ZlVG9wTGVmdCh2LT5jb250ZW50c1RvV2luZG93KHIudG9wTGVmdCgpKSk7
Ci0gICAgbV9wb3B1cC0+c2hvdyhyZWN0LCBpbmRleCk7CisgICAgUUxpc3Q8UXRBYnN0cmFjdFdl
YlBvcHVwOjpJdGVtPiByZXN1bHQ7CisKKyAgICBpbnQgc2l6ZSA9IGNsaWVudC0+bGlzdFNpemUo
KTsKKyAgICBmb3IgKGludCBpID0gMDsgaSA8IHNpemU7ICsraSkgeworICAgICAgICBRdEFic3Ry
YWN0V2ViUG9wdXA6Okl0ZW0gaXRlbTsKKworICAgICAgICBpZiAoY2xpZW50LT5pdGVtSXNTZXBh
cmF0b3IoaSkpCisgICAgICAgICAgICBpdGVtLnR5cGUgPSBRdEFic3RyYWN0V2ViUG9wdXA6Okl0
ZW06OlNlcGFyYXRvcjsKKyAgICAgICAgZWxzZSBpZiAoY2xpZW50LT5pdGVtSXNMYWJlbChpKSkK
KyAgICAgICAgICAgIGl0ZW0udHlwZSA9IFF0QWJzdHJhY3RXZWJQb3B1cDo6SXRlbTo6R3JvdXA7
CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGl0ZW0udHlwZSA9IFF0QWJzdHJhY3RXZWJQb3B1
cDo6SXRlbTo6T3B0aW9uOworCisgICAgICAgIGl0ZW0udGV4dCA9IGNsaWVudC0+aXRlbVRleHQo
aSk7CisgICAgICAgIGl0ZW0udG9vbFRpcCA9IGNsaWVudC0+aXRlbVRvb2xUaXAoaSk7CisgICAg
ICAgIGl0ZW0uZW5hYmxlZCA9IGNsaWVudC0+aXRlbUlzRW5hYmxlZChpKTsKKyAgICAgICAgcmVz
dWx0LmFwcGVuZChpdGVtKTsKKyAgICB9CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKwordm9pZCBQ
b3B1cE1lbnU6OnNob3coY29uc3QgSW50UmVjdCYgcmVjdCwgRnJhbWVWaWV3KiB2aWV3LCBpbnQg
aW5kZXgpCit7CisgICAgQ2hyb21lQ2xpZW50UXQqIGNocm9tZUNsaWVudCA9IHN0YXRpY19jYXN0
PENocm9tZUNsaWVudFF0Kj4oCisgICAgICAgIHZpZXctPmZyYW1lKCktPnBhZ2UoKS0+Y2hyb21l
KCktPmNsaWVudCgpKTsKKyAgICBBU1NFUlQoY2hyb21lQ2xpZW50KTsKKworICAgIGlmICghbV9w
b3B1cCkgeworICAgICAgICBtX3BvcHVwID0gY2hyb21lQ2xpZW50LT5jcmVhdGVQb3B1cCgpOwor
ICAgICAgICBtX3BvcHVwLT5tX2NsaWVudCA9IG1fcG9wdXBDbGllbnQ7CisgICAgfQorCisgICAg
bV9wb3B1cC0+c2V0UGFyZW50KGNocm9tZUNsaWVudC0+cGxhdGZvcm1QYWdlQ2xpZW50KCktPm93
bmVyV2lkZ2V0KCkpOworICAgIG1fcG9wdXAtPnBvcHVsYXRlKG1fcG9wdXBDbGllbnQtPm1lbnVT
dHlsZSgpLmZvbnQoKS5mb250KCksCisgICAgICAgICAgICAgICAgICAgICAgZ2V0SXRlbXMobV9w
b3B1cENsaWVudCkpOworCisgICAgUVJlY3QgYm91bmRzID0gcmVjdDsKKyAgICBib3VuZHMubW92
ZVRvcExlZnQodmlldy0+Y29udGVudHNUb1dpbmRvdyhyZWN0LnRvcExlZnQoKSkpOworICAgIG1f
cG9wdXAtPnNob3coYm91bmRzLCBpbmRleCk7CiB9CiAKIHZvaWQgUG9wdXBNZW51OjpoaWRlKCkK
ZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vcXQvUXRBYnN0cmFjdFdlYlBvcHVwLmNwcCBi
L1dlYkNvcmUvcGxhdGZvcm0vcXQvUXRBYnN0cmFjdFdlYlBvcHVwLmNwcAppbmRleCBjYmU3MTc0
Li43NWQ4ZmI1IDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL3F0L1F0QWJzdHJhY3RXZWJQ
b3B1cC5jcHAKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9xdC9RdEFic3RyYWN0V2ViUG9wdXAuY3Bw
CkBAIC0yMSwzNiArMjEsMjkgQEAKICNpbmNsdWRlICJRdEFic3RyYWN0V2ViUG9wdXAuaCIKIAog
I2luY2x1ZGUgIlBvcHVwTWVudUNsaWVudC5oIgotI2luY2x1ZGUgIlF0RmFsbGJhY2tXZWJQb3B1
cC5oIgogCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUXRBYnN0cmFjdFdlYlBvcHVwRmFjdG9y
eSogUXRBYnN0cmFjdFdlYlBvcHVwOjptX2ZhY3RvcnkgPSAwOwotCi1RdEFic3RyYWN0V2ViUG9w
dXA6OlF0QWJzdHJhY3RXZWJQb3B1cChQb3B1cE1lbnVDbGllbnQqIGNsaWVudCkKLSAgICA6IG1f
Y2xpZW50KGNsaWVudCkKK1F0QWJzdHJhY3RXZWJQb3B1cDo6UXRBYnN0cmFjdFdlYlBvcHVwKCkK
KyAgICA6IG1fY2xpZW50KDApCiB7Ci0gICAgUV9BU1NFUlQobV9jbGllbnQpOwogfQogCiBRdEFi
c3RyYWN0V2ViUG9wdXA6On5RdEFic3RyYWN0V2ViUG9wdXAoKQogewogfQogCi1Qb3B1cE1lbnVD
bGllbnQqIFF0QWJzdHJhY3RXZWJQb3B1cDo6Y2xpZW50KCkKK3ZvaWQgUXRBYnN0cmFjdFdlYlBv
cHVwOjpwb3B1cERpZEhpZGUoYm9vbCBhY2NlcHRTdWdnZXN0aW9ucykKIHsKLSAgICByZXR1cm4g
bV9jbGllbnQ7Ci19Ci0KLXZvaWQgUXRBYnN0cmFjdFdlYlBvcHVwOjpzZXRGYWN0b3J5KFF0QWJz
dHJhY3RXZWJQb3B1cEZhY3RvcnkqIGZhY3RvcnkpCi17Ci0gICAgbV9mYWN0b3J5ID0gZmFjdG9y
eTsKKyAgICBRX0FTU0VSVChtX2NsaWVudCk7CisgICAgbV9jbGllbnQtPnBvcHVwRGlkSGlkZShh
Y2NlcHRTdWdnZXN0aW9ucyk7CiB9CiAKLVF0QWJzdHJhY3RXZWJQb3B1cCogUXRBYnN0cmFjdFdl
YlBvcHVwOjpjcmVhdGUoUG9wdXBNZW51Q2xpZW50KiBjbGllbnQpCit2b2lkIFF0QWJzdHJhY3RX
ZWJQb3B1cDo6dmFsdWVDaGFuZ2VkKGludCBpbmRleCkKIHsKLSAgICByZXR1cm4gbV9mYWN0b3J5
ID8gbV9mYWN0b3J5LT5jcmVhdGUoY2xpZW50KSA6IG5ldyBRdEZhbGxiYWNrV2ViUG9wdXAoY2xp
ZW50KTsKKyAgICBRX0FTU0VSVChtX2NsaWVudCk7CisgICAgbV9jbGllbnQtPnZhbHVlQ2hhbmdl
ZChpbmRleCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1dlYkNv
cmUvcGxhdGZvcm0vcXQvUXRBYnN0cmFjdFdlYlBvcHVwLmggYi9XZWJDb3JlL3BsYXRmb3JtL3F0
L1F0QWJzdHJhY3RXZWJQb3B1cC5oCmluZGV4IGI4Y2FiNGEuLmM4OTA0NDEgMTAwNjQ0Ci0tLSBh
L1dlYkNvcmUvcGxhdGZvcm0vcXQvUXRBYnN0cmFjdFdlYlBvcHVwLmgKKysrIGIvV2ViQ29yZS9w
bGF0Zm9ybS9xdC9RdEFic3RyYWN0V2ViUG9wdXAuaApAQCAtMjAsMzUgKzIwLDM4IEBACiAjaWZu
ZGVmIFF0QWJzdHJhY3RXZWJQb3B1cF9oCiAjZGVmaW5lIFF0QWJzdHJhY3RXZWJQb3B1cF9oCiAK
KyNpbmNsdWRlIDxRRm9udD4KKyNpbmNsdWRlIDxRTGlzdD4KICNpbmNsdWRlIDxRUmVjdD4KIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBRdEFic3RyYWN0V2ViUG9wdXA7CiBjbGFzcyBQ
b3B1cE1lbnVDbGllbnQ7CiAKLWNsYXNzIFF0QWJzdHJhY3RXZWJQb3B1cEZhY3RvcnkgewotcHVi
bGljOgotICAgIHZpcnR1YWwgUXRBYnN0cmFjdFdlYlBvcHVwKiBjcmVhdGUoUG9wdXBNZW51Q2xp
ZW50KiBjbGllbnQpID0gMDsKLX07Ci0KIGNsYXNzIFF0QWJzdHJhY3RXZWJQb3B1cCB7CiBwdWJs
aWM6Ci0gICAgUXRBYnN0cmFjdFdlYlBvcHVwKFBvcHVwTWVudUNsaWVudCogY2xpZW50KTsKKyAg
ICBzdHJ1Y3QgSXRlbSB7CisgICAgICAgIGVudW0geyBPcHRpb24sIEdyb3VwLCBTZXBhcmF0b3Ig
fSB0eXBlOworICAgICAgICBRU3RyaW5nIHRleHQ7CisgICAgICAgIFFTdHJpbmcgdG9vbFRpcDsK
KyAgICAgICAgYm9vbCBlbmFibGVkOworICAgIH07CisKKyAgICBRdEFic3RyYWN0V2ViUG9wdXAo
KTsKICAgICB2aXJ0dWFsIH5RdEFic3RyYWN0V2ViUG9wdXAoKTsKIAogICAgIHZpcnR1YWwgdm9p
ZCBzaG93KGNvbnN0IFFSZWN0JiBnZW9tZXRyeSwgaW50IHNlbGVjdGVkSW5kZXgpID0gMDsKICAg
ICB2aXJ0dWFsIHZvaWQgaGlkZSgpID0gMDsKLQotICAgIHN0YXRpYyB2b2lkIHNldEZhY3Rvcnko
UXRBYnN0cmFjdFdlYlBvcHVwRmFjdG9yeSogZmFjdG9yeSk7Ci0gICAgc3RhdGljIFF0QWJzdHJh
Y3RXZWJQb3B1cCogY3JlYXRlKFBvcHVwTWVudUNsaWVudCogY2xpZW50KTsKKyAgICB2aXJ0dWFs
IHZvaWQgcG9wdWxhdGUoY29uc3QgUUZvbnQmIGZvbnQsIGNvbnN0IFFMaXN0PEl0ZW0+JiBpdGVt
cykgPSAwOworICAgIHZpcnR1YWwgdm9pZCBzZXRQYXJlbnQoUVdpZGdldCogcGFyZW50KSA9IDA7
CiAKIHByb3RlY3RlZDoKLSAgICBQb3B1cE1lbnVDbGllbnQqIGNsaWVudCgpOworICAgIHZvaWQg
cG9wdXBEaWRIaWRlKGJvb2wgYWNjZXB0U3VnZ2VzdGlvbnMpOworICAgIHZvaWQgdmFsdWVDaGFu
Z2VkKGludCBpbmRleCk7CiAKIHByaXZhdGU6CisgICAgZnJpZW5kIGNsYXNzIFBvcHVwTWVudTsK
ICAgICBQb3B1cE1lbnVDbGllbnQqIG1fY2xpZW50OwotICAgIHN0YXRpYyBRdEFic3RyYWN0V2Vi
UG9wdXBGYWN0b3J5KiBtX2ZhY3Rvcnk7CiB9OwogCiB9CmRpZmYgLS1naXQgYS9XZWJDb3JlL3Bs
YXRmb3JtL3F0L1F0RmFsbGJhY2tXZWJQb3B1cC5jcHAgYi9XZWJDb3JlL3BsYXRmb3JtL3F0L1F0
RmFsbGJhY2tXZWJQb3B1cC5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGZkMTRi
MzIuLjAwMDAwMDAKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9xdC9RdEZhbGxiYWNrV2ViUG9wdXAu
Y3BwCisrKyAvZGV2L251bGwKQEAgLTEsMTE3ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMDkgTm9raWEgQ29ycG9yYXRpb24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMpCi0gKgot
ICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0
IGFuZC9vcgotICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkg
R2VuZXJhbCBQdWJsaWMKLSAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3
YXJlIEZvdW5kYXRpb247IGVpdGhlcgotICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAo
YXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotICoKLSAqIFRoaXMgbGlicmFyeSBp
cyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotICogYnV0
IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkg
b2YKLSAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9T
RS4gIFNlZSB0aGUgR05VCi0gKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1v
cmUgZGV0YWlscy4KLSAqCi0gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRo
ZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0gKiBhbG9uZyB3aXRoIHRoaXMg
bGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bwotICog
dGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBG
aWZ0aCBGbG9vciwKLSAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgotICoKLSAqLwotI2lu
Y2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIlF0RmFsbGJhY2tXZWJQb3B1cC5oIgotCi0jaW5j
bHVkZSAiSG9zdFdpbmRvdy5oIgotI2luY2x1ZGUgIlBvcHVwTWVudUNsaWVudC5oIgotI2luY2x1
ZGUgIlFXZWJQYWdlQ2xpZW50LmgiCi0jaW5jbHVkZSA8UUFic3RyYWN0SXRlbVZpZXc+Ci0jaW5j
bHVkZSA8UUFwcGxpY2F0aW9uPgotI2luY2x1ZGUgPFFJbnB1dENvbnRleHQ+Ci0jaW5jbHVkZSA8
UU1vdXNlRXZlbnQ+Ci0jaW5jbHVkZSA8UVN0YW5kYXJkSXRlbU1vZGVsPgotCi1uYW1lc3BhY2Ug
V2ViQ29yZSB7Ci0KLS8vIFF0RmFsbGJhY2tXZWJQb3B1cAotCi1RdEZhbGxiYWNrV2ViUG9wdXA6
OlF0RmFsbGJhY2tXZWJQb3B1cChQb3B1cE1lbnVDbGllbnQqIGNsaWVudCkKLSAgICA6IFF0QWJz
dHJhY3RXZWJQb3B1cChjbGllbnQpCi0gICAgLCBtX3BvcHVwVmlzaWJsZShmYWxzZSkKLXsKLSAg
ICBzZXRGb250KFF0QWJzdHJhY3RXZWJQb3B1cDo6Y2xpZW50KCktPm1lbnVTdHlsZSgpLmZvbnQo
KS5mb250KCkpOwotICAgIGNvbm5lY3QodGhpcywgU0lHTkFMKGFjdGl2YXRlZChpbnQpKSwKLSAg
ICAgICAgICAgIFNMT1QoYWN0aXZlQ2hhbmdlZChpbnQpKSwgUXQ6OlF1ZXVlZENvbm5lY3Rpb24p
OwotfQotCi0KLXZvaWQgUXRGYWxsYmFja1dlYlBvcHVwOjpzaG93KGNvbnN0IFFSZWN0JiBnZW9t
ZXRyeSwgaW50IHNlbGVjdGVkSW5kZXgpCi17Ci0gICAgcG9wdWxhdGUoKTsKLSAgICBzZXRDdXJy
ZW50SW5kZXgoc2VsZWN0ZWRJbmRleCk7Ci0KLSAgICBRV2lkZ2V0KiBwYXJlbnQgPSAwOwotICAg
IGlmIChjbGllbnQoKS0+aG9zdFdpbmRvdygpICYmIGNsaWVudCgpLT5ob3N0V2luZG93KCktPnBs
YXRmb3JtUGFnZUNsaWVudCgpKQotICAgICAgIHBhcmVudCA9IGNsaWVudCgpLT5ob3N0V2luZG93
KCktPnBsYXRmb3JtUGFnZUNsaWVudCgpLT5vd25lcldpZGdldCgpOwotCi0gICAgc2V0UGFyZW50
KHBhcmVudCk7Ci0gICAgc2V0R2VvbWV0cnkoUVJlY3QoZ2VvbWV0cnkubGVmdCgpLCBnZW9tZXRy
eS50b3AoKSwgZ2VvbWV0cnkud2lkdGgoKSwgc2l6ZUhpbnQoKS5oZWlnaHQoKSkpOwotCi0gICAg
UU1vdXNlRXZlbnQgZXZlbnQoUUV2ZW50OjpNb3VzZUJ1dHRvblByZXNzLCBRQ3Vyc29yOjpwb3Mo
KSwgUXQ6OkxlZnRCdXR0b24sCi0gICAgICAgICAgICAgICAgICAgICAgUXQ6OkxlZnRCdXR0b24s
IFF0OjpOb01vZGlmaWVyKTsKLSAgICBRQ29yZUFwcGxpY2F0aW9uOjpzZW5kRXZlbnQodGhpcywg
JmV2ZW50KTsKLX0KLQotdm9pZCBRdEZhbGxiYWNrV2ViUG9wdXA6OnBvcHVsYXRlKCkKLXsKLSAg
ICBjbGVhcigpOwotCi0gICAgUVN0YW5kYXJkSXRlbU1vZGVsKiBtb2RlbCA9IHFvYmplY3RfY2Fz
dDxRU3RhbmRhcmRJdGVtTW9kZWwqPihRQ29tYm9Cb3g6Om1vZGVsKCkpOwotICAgIFFfQVNTRVJU
KG1vZGVsKTsKLQotICAgIGludCBzaXplID0gY2xpZW50KCktPmxpc3RTaXplKCk7Ci0gICAgZm9y
IChpbnQgaSA9IDA7IGkgPCBzaXplOyBpKyspIHsKLSAgICAgICAgaWYgKGNsaWVudCgpLT5pdGVt
SXNTZXBhcmF0b3IoaSkpCi0gICAgICAgICAgICBpbnNlcnRTZXBhcmF0b3IoaSk7Ci0gICAgICAg
IGVsc2UgewotICAgICAgICAgICAgaW5zZXJ0SXRlbShpLCBjbGllbnQoKS0+aXRlbVRleHQoaSkp
OwotCi0gICAgICAgICAgICBpZiAobW9kZWwgJiYgIWNsaWVudCgpLT5pdGVtSXNFbmFibGVkKGkp
KQotICAgICAgICAgICAgICAgIG1vZGVsLT5pdGVtKGkpLT5zZXRFbmFibGVkKGZhbHNlKTsKLSAg
ICAgICAgfQotICAgIH0KLX0KLQotdm9pZCBRdEZhbGxiYWNrV2ViUG9wdXA6OnNob3dQb3B1cCgp
Ci17Ci0gICAgUUNvbWJvQm94OjpzaG93UG9wdXAoKTsKLSAgICBtX3BvcHVwVmlzaWJsZSA9IHRy
dWU7Ci19Ci0KLXZvaWQgUXRGYWxsYmFja1dlYlBvcHVwOjpoaWRlUG9wdXAoKQotewotICAgIFFX
aWRnZXQqIGFjdGl2ZUZvY3VzID0gUUFwcGxpY2F0aW9uOjpmb2N1c1dpZGdldCgpOwotICAgIGlm
IChhY3RpdmVGb2N1cyAmJiBhY3RpdmVGb2N1cyA9PSB2aWV3KCkKLSAgICAgICAgJiYgYWN0aXZl
Rm9jdXMtPnRlc3RBdHRyaWJ1dGUoUXQ6OldBX0lucHV0TWV0aG9kRW5hYmxlZCkpIHsKLSAgICAg
ICAgUUlucHV0Q29udGV4dCogcWljID0gYWN0aXZlRm9jdXMtPmlucHV0Q29udGV4dCgpOwotICAg
ICAgICBpZiAocWljKSB7Ci0gICAgICAgICAgICBxaWMtPnJlc2V0KCk7Ci0gICAgICAgICAgICBx
aWMtPnNldEZvY3VzV2lkZ2V0KDApOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgUUNvbWJvQm94
OjpoaWRlUG9wdXAoKTsKLSAgICBpZiAoIW1fcG9wdXBWaXNpYmxlKQotICAgICAgICByZXR1cm47
Ci0KLSAgICBtX3BvcHVwVmlzaWJsZSA9IGZhbHNlOwotICAgIGNsaWVudCgpLT5wb3B1cERpZEhp
ZGUodHJ1ZSk7Ci19Ci0KLXZvaWQgUXRGYWxsYmFja1dlYlBvcHVwOjphY3RpdmVDaGFuZ2VkKGlu
dCBpbmRleCkKLXsKLSAgICBpZiAoaW5kZXggPCAwKQotICAgICAgICByZXR1cm47Ci0KLSAgICBj
bGllbnQoKS0+dmFsdWVDaGFuZ2VkKGluZGV4KTsKLX0KLQotfQpkaWZmIC0tZ2l0IGEvV2ViQ29y
ZS9wbGF0Zm9ybS9xdC9RdEZhbGxiYWNrV2ViUG9wdXAuaCBiL1dlYkNvcmUvcGxhdGZvcm0vcXQv
UXRGYWxsYmFja1dlYlBvcHVwLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAzOTI3
MGMuLjAwMDAwMDAKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9xdC9RdEZhbGxiYWNrV2ViUG9wdXAu
aAorKysgL2Rldi9udWxsCkBAIC0xLDUwICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MDkgTm9raWEgQ29ycG9yYXRpb24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMpCi0gKgotICog
VGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFu
ZC9vcgotICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2Vu
ZXJhbCBQdWJsaWMKLSAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJl
IEZvdW5kYXRpb247IGVpdGhlcgotICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQg
eW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotICoKLSAqIFRoaXMgbGlicmFyeSBpcyBk
aXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotICogYnV0IFdJ
VEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YK
LSAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4g
IFNlZSB0aGUgR05VCi0gKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUg
ZGV0YWlscy4KLSAqCi0gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBH
TlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0gKiBhbG9uZyB3aXRoIHRoaXMgbGli
cmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bwotICogdGhl
IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0
aCBGbG9vciwKLSAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgotICoKLSAqLwotI2lmbmRl
ZiBRdEZhbGxiYWNrV2ViUG9wdXBfaAotI2RlZmluZSBRdEZhbGxiYWNrV2ViUG9wdXBfaAotCi0j
aW5jbHVkZSAiUXRBYnN0cmFjdFdlYlBvcHVwLmgiCi0jaW5jbHVkZSA8UUNvbWJvQm94PgotCi1u
YW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNzIFF0RmFsbGJhY2tXZWJQb3B1cCA6IHByaXZhdGUg
UUNvbWJvQm94LCBwdWJsaWMgUXRBYnN0cmFjdFdlYlBvcHVwIHsKLSAgICBRX09CSkVDVAotcHVi
bGljOgotICAgIFF0RmFsbGJhY2tXZWJQb3B1cChQb3B1cE1lbnVDbGllbnQqIGNsaWVudCk7Ci0K
LSAgICB2aXJ0dWFsIHZvaWQgc2hvdyhjb25zdCBRUmVjdCYgZ2VvbWV0cnksIGludCBzZWxlY3Rl
ZEluZGV4KTsKLSAgICB2aXJ0dWFsIHZvaWQgaGlkZSgpIHsgaGlkZVBvcHVwKCk7IH0KLQotcHJp
dmF0ZSBzbG90czoKLSAgICB2b2lkIGFjdGl2ZUNoYW5nZWQoaW50KTsKLQotcHJpdmF0ZToKLSAg
ICBib29sIG1fcG9wdXBWaXNpYmxlOwotCi0gICAgdm9pZCBwb3B1bGF0ZSgpOwotCi0gICAgdmly
dHVhbCB2b2lkIHNob3dQb3B1cCgpOwotICAgIHZpcnR1YWwgdm9pZCBoaWRlUG9wdXAoKTsKLX07
Ci0KLX0KLQotI2VuZGlmIC8vIFF0RmFsbGJhY2tXZWJQb3B1cF9oCmRpZmYgLS1naXQgYS9XZWJL
aXQvcXQvQ2hhbmdlTG9nIGIvV2ViS2l0L3F0L0NoYW5nZUxvZwppbmRleCA5ZGE3NzRiLi4xNWM5
ZDAwIDEwMDY0NAotLS0gYS9XZWJLaXQvcXQvQ2hhbmdlTG9nCisrKyBiL1dlYktpdC9xdC9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwyOCBAQAorMjAxMC0wMS0wOCAgTHVpeiBBZ29zdGluaSAgPGx1aXou
YWdvc3RpbmlAb3BlbmJvc3NhLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBbUXRdIERlbGVnYXRpb24gY2xpZW50CisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zMjgyNgorCisgICAgICAgIEFkZGVkIG1l
dGhvZCBjcmVhdGVQb3B1cCB0byBDaHJvbWVDbGllbnRRdCB1c2VkIHRvIGNyZWF0ZSBwb3B1cHMu
CisgICAgICAgIFF0RmFsbGJhY2tXZWJQb3B1cCBtb3ZlZCBmcm9tIFdlYkNvcmUvcGxhdGZvcm0v
cXQgdG8KKyAgICAgICAgV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0LgorCisgICAgICAgICogV2Vi
Q29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50UXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2hyb21l
Q2xpZW50UXQ6OmNyZWF0ZVBvcHVwKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9DaHJvbWVD
bGllbnRRdC5oOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1F0RmFsbGJhY2tXZWJQb3B1cC5j
cHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6UXRGYWxsYmFja1dlYlBvcHVwOjpRdEZhbGxi
YWNrV2ViUG9wdXApOgorICAgICAgICAoV2ViQ29yZTo6UXRGYWxsYmFja1dlYlBvcHVwOjpzaG93
KToKKyAgICAgICAgKFdlYkNvcmU6OlF0RmFsbGJhY2tXZWJQb3B1cDo6cG9wdWxhdGUpOgorICAg
ICAgICAoV2ViQ29yZTo6UXRGYWxsYmFja1dlYlBvcHVwOjpzaG93UG9wdXApOgorICAgICAgICAo
V2ViQ29yZTo6UXRGYWxsYmFja1dlYlBvcHVwOjpoaWRlUG9wdXApOgorICAgICAgICAoV2ViQ29y
ZTo6UXRGYWxsYmFja1dlYlBvcHVwOjphY3RpdmVDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6
OlF0RmFsbGJhY2tXZWJQb3B1cDo6c2V0UGFyZW50KToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9y
dC9RdEZhbGxiYWNrV2ViUG9wdXAuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpRdEZhbGxi
YWNrV2ViUG9wdXA6OmhpZGUpOgorCiAyMDEwLTAxLTA3ICBZYWVsIEFoYXJvbiAgPHlhZWwuYWhh
cm9uQG5va2lhLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBLZW5uZXRoIFJvaGRlIENocmlz
dGlhbnNlbi4KZGlmZiAtLWdpdCBhL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGll
bnRRdC5jcHAgYi9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50UXQuY3BwCmlu
ZGV4IDczY2I0ZDcuLmY2MmJjODYgMTAwNjQ0Ci0tLSBhL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9y
dC9DaHJvbWVDbGllbnRRdC5jcHAKKysrIGIvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0Nocm9t
ZUNsaWVudFF0LmNwcApAQCAtMzgsOCArMzgsOSBAQAogI2luY2x1ZGUgIk5vdEltcGxlbWVudGVk
LmgiCiAjaW5jbHVkZSAiV2luZG93RmVhdHVyZXMuaCIKICNpbmNsdWRlICJEYXRhYmFzZVRyYWNr
ZXIuaCIKLSNpbmNsdWRlICJTZWN1cml0eU9yaWdpbi5oIgorI2luY2x1ZGUgIlF0RmFsbGJhY2tX
ZWJQb3B1cC5oIgogI2luY2x1ZGUgIlFXZWJQYWdlQ2xpZW50LmgiCisjaW5jbHVkZSAiU2VjdXJp
dHlPcmlnaW4uaCIKIAogI2luY2x1ZGUgInF3ZWJwYWdlLmgiCiAjaW5jbHVkZSAicXdlYnBhZ2Vf
cC5oIgpAQCAtNDY1LDQgKzQ2Niw5IEBAIHZvaWQgQ2hyb21lQ2xpZW50UXQ6OnJlcXVlc3RHZW9s
b2NhdGlvblBlcm1pc3Npb25Gb3JGcmFtZShGcmFtZSosIEdlb2xvY2F0aW9uKikKICAgICBub3RJ
bXBsZW1lbnRlZCgpOwogfQogCitRdEFic3RyYWN0V2ViUG9wdXAqIENocm9tZUNsaWVudFF0Ojpj
cmVhdGVQb3B1cCgpCit7CisgICAgcmV0dXJuIG5ldyBRdEZhbGxiYWNrV2ViUG9wdXA7Cit9CisK
IH0KZGlmZiAtLWdpdCBhL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRRdC5o
IGIvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudFF0LmgKaW5kZXggOTM5ZmUw
NC4uMTA2ZDRjYyAxMDA2NDQKLS0tIGEvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNs
aWVudFF0LmgKKysrIGIvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudFF0LmgK
QEAgLTQyLDYgKzQyLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIGNsYXNzIEZsb2F0UmVj
dDsKICAgICBjbGFzcyBQYWdlOwogICAgIHN0cnVjdCBGcmFtZUxvYWRSZXF1ZXN0OworICAgIGNs
YXNzIFF0QWJzdHJhY3RXZWJQb3B1cDsKIAogICAgIGNsYXNzIENocm9tZUNsaWVudFF0IDogcHVi
bGljIENocm9tZUNsaWVudAogICAgIHsKQEAgLTEzNCw2ICsxMzUsOCBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKICAgICAgICAgdmlydHVhbCB2b2lkIHJlcXVlc3RHZW9sb2NhdGlvblBlcm1pc3Np
b25Gb3JGcmFtZShGcmFtZSosIEdlb2xvY2F0aW9uKik7CiAKKyAgICAgICAgUXRBYnN0cmFjdFdl
YlBvcHVwKiBjcmVhdGVQb3B1cCgpOworCiAgICAgICAgIFFXZWJQYWdlKiBtX3dlYlBhZ2U7CiAg
ICAgICAgIFdlYkNvcmU6OktVUkwgbGFzdEhvdmVyVVJMOwogICAgICAgICBXZWJDb3JlOjpTdHJp
bmcgbGFzdEhvdmVyVGl0bGU7CmRpZmYgLS1naXQgYS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQv
UXRGYWxsYmFja1dlYlBvcHVwLmNwcCBiL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9RdEZhbGxi
YWNrV2ViUG9wdXAuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM0NGQ1
OGEKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvUXRGYWxsYmFj
a1dlYlBvcHVwLmNwcApAQCAtMCwwICsxLDEyOCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAw
OSBOb2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykKKyAqCisgKiBU
aGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5k
L29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5l
cmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUg
Rm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5
b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRp
c3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lU
SE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgor
ICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAg
U2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBk
ZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdO
VSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBsaWJy
YXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0aGUg
RnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRo
IEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKgorICovCisjaW5jbHVk
ZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiUXRGYWxsYmFja1dlYlBvcHVwLmgiCisKKyNpbmNsdWRl
ICJIb3N0V2luZG93LmgiCisjaW5jbHVkZSAiUG9wdXBNZW51Q2xpZW50LmgiCisjaW5jbHVkZSAi
UVdlYlBhZ2VDbGllbnQuaCIKKyNpbmNsdWRlIDxRQWJzdHJhY3RJdGVtVmlldz4KKyNpbmNsdWRl
IDxRQXBwbGljYXRpb24+CisjaW5jbHVkZSA8UUlucHV0Q29udGV4dD4KKyNpbmNsdWRlIDxRTW91
c2VFdmVudD4KKyNpbmNsdWRlIDxRU3RhbmRhcmRJdGVtTW9kZWw+CisKK25hbWVzcGFjZSBXZWJD
b3JlIHsKKworLy8gUXRGYWxsYmFja1dlYlBvcHVwCisKK1F0RmFsbGJhY2tXZWJQb3B1cDo6UXRG
YWxsYmFja1dlYlBvcHVwKCkKKyAgICA6IFF0QWJzdHJhY3RXZWJQb3B1cCgpCisgICAgLCBtX3Bv
cHVwVmlzaWJsZShmYWxzZSkKK3sKKyAgICBjb25uZWN0KHRoaXMsIFNJR05BTChhY3RpdmF0ZWQo
aW50KSksCisgICAgICAgICAgICBTTE9UKGFjdGl2ZUNoYW5nZWQoaW50KSksIFF0OjpRdWV1ZWRD
b25uZWN0aW9uKTsKK30KKworCit2b2lkIFF0RmFsbGJhY2tXZWJQb3B1cDo6c2hvdyhjb25zdCBR
UmVjdCYgZ2VvbWV0cnksIGludCBzZWxlY3RlZEluZGV4KQoreworICAgIHNldEN1cnJlbnRJbmRl
eChzZWxlY3RlZEluZGV4KTsKKworICAgIC8qCisgICAgUVdpZGdldCogcGFyZW50ID0gMDsKKyAg
ICBpZiAoY2xpZW50KCktPmhvc3RXaW5kb3coKSAmJiBjbGllbnQoKS0+aG9zdFdpbmRvdygpLT5w
bGF0Zm9ybVBhZ2VDbGllbnQoKSkKKyAgICAgICBwYXJlbnQgPSBjbGllbnQoKS0+aG9zdFdpbmRv
dygpLT5wbGF0Zm9ybVBhZ2VDbGllbnQoKS0+b3duZXJXaWRnZXQoKTsKKworICAgIHNldFBhcmVu
dChwYXJlbnQpOworICAgICovCisKKyAgICBzZXRHZW9tZXRyeShRUmVjdChnZW9tZXRyeS5sZWZ0
KCksIGdlb21ldHJ5LnRvcCgpLCBnZW9tZXRyeS53aWR0aCgpLCBzaXplSGludCgpLmhlaWdodCgp
KSk7CisKKyAgICBRTW91c2VFdmVudCBldmVudChRRXZlbnQ6Ok1vdXNlQnV0dG9uUHJlc3MsIFFD
dXJzb3I6OnBvcygpLCBRdDo6TGVmdEJ1dHRvbiwKKyAgICAgICAgICAgICAgICAgICAgICBRdDo6
TGVmdEJ1dHRvbiwgUXQ6Ok5vTW9kaWZpZXIpOworICAgIFFDb3JlQXBwbGljYXRpb246OnNlbmRF
dmVudCh0aGlzLCAmZXZlbnQpOworfQorCit2b2lkIFF0RmFsbGJhY2tXZWJQb3B1cDo6cG9wdWxh
dGUoY29uc3QgUUZvbnQmIGZvbnQsIGNvbnN0IFFMaXN0PEl0ZW0+JiBpdGVtcykKK3sKKyAgICBj
bGVhcigpOworCisgICAgUVN0YW5kYXJkSXRlbU1vZGVsKiBtb2RlbCA9IHFvYmplY3RfY2FzdDxR
U3RhbmRhcmRJdGVtTW9kZWwqPihRQ29tYm9Cb3g6Om1vZGVsKCkpOworICAgIFFfQVNTRVJUKG1v
ZGVsKTsKKworICAgIHNldEZvbnQoZm9udCk7CisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBpdGVt
cy5zaXplKCk7ICsraSkgeworICAgICAgICBzd2l0Y2ggKGl0ZW1zW2ldLnR5cGUpIHsKKyAgICAg
ICAgY2FzZSBRdEFic3RyYWN0V2ViUG9wdXA6Okl0ZW06OlNlcGFyYXRvcjoKKyAgICAgICAgICAg
IGluc2VydFNlcGFyYXRvcihpKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFF0
QWJzdHJhY3RXZWJQb3B1cDo6SXRlbTo6R3JvdXA6CisgICAgICAgICAgICBpbnNlcnRJdGVtKGks
IGl0ZW1zW2ldLnRleHQpOworICAgICAgICAgICAgbW9kZWwtPml0ZW0oaSktPnNldEVuYWJsZWQo
ZmFsc2UpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgUXRBYnN0cmFjdFdlYlBv
cHVwOjpJdGVtOjpPcHRpb246CisgICAgICAgICAgICBpbnNlcnRJdGVtKGksIGl0ZW1zW2ldLnRl
eHQpOworICAgICAgICAgICAgbW9kZWwtPml0ZW0oaSktPnNldEVuYWJsZWQoaXRlbXNbaV0uZW5h
YmxlZCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgIH0KK30KKwordm9pZCBR
dEZhbGxiYWNrV2ViUG9wdXA6OnNob3dQb3B1cCgpCit7CisgICAgUUNvbWJvQm94OjpzaG93UG9w
dXAoKTsKKyAgICBtX3BvcHVwVmlzaWJsZSA9IHRydWU7Cit9CisKK3ZvaWQgUXRGYWxsYmFja1dl
YlBvcHVwOjpoaWRlUG9wdXAoKQoreworICAgIFFXaWRnZXQqIGFjdGl2ZUZvY3VzID0gUUFwcGxp
Y2F0aW9uOjpmb2N1c1dpZGdldCgpOworICAgIGlmIChhY3RpdmVGb2N1cyAmJiBhY3RpdmVGb2N1
cyA9PSB2aWV3KCkKKyAgICAgICAgJiYgYWN0aXZlRm9jdXMtPnRlc3RBdHRyaWJ1dGUoUXQ6OldB
X0lucHV0TWV0aG9kRW5hYmxlZCkpIHsKKyAgICAgICAgUUlucHV0Q29udGV4dCogcWljID0gYWN0
aXZlRm9jdXMtPmlucHV0Q29udGV4dCgpOworICAgICAgICBpZiAocWljKSB7CisgICAgICAgICAg
ICBxaWMtPnJlc2V0KCk7CisgICAgICAgICAgICBxaWMtPnNldEZvY3VzV2lkZ2V0KDApOworICAg
ICAgICB9CisgICAgfQorCisgICAgUUNvbWJvQm94OjpoaWRlUG9wdXAoKTsKKyAgICBpZiAoIW1f
cG9wdXBWaXNpYmxlKQorICAgICAgICByZXR1cm47CisKKyAgICBtX3BvcHVwVmlzaWJsZSA9IGZh
bHNlOworICAgIHBvcHVwRGlkSGlkZSh0cnVlKTsKK30KKwordm9pZCBRdEZhbGxiYWNrV2ViUG9w
dXA6OmFjdGl2ZUNoYW5nZWQoaW50IGluZGV4KQoreworICAgIGlmIChpbmRleCA8IDApCisgICAg
ICAgIHJldHVybjsKKworICAgIHZhbHVlQ2hhbmdlZChpbmRleCk7Cit9CisKK3ZvaWQgUXRGYWxs
YmFja1dlYlBvcHVwOjpzZXRQYXJlbnQoUVdpZGdldCogcGFyZW50KQoreworICAgIFFDb21ib0Jv
eDo6c2V0UGFyZW50KHBhcmVudCk7Cit9CisKK30KZGlmZiAtLWdpdCBhL1dlYktpdC9xdC9XZWJD
b3JlU3VwcG9ydC9RdEZhbGxiYWNrV2ViUG9wdXAuaCBiL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9y
dC9RdEZhbGxiYWNrV2ViUG9wdXAuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
Li41YWZmZTBhCi0tLSAvZGV2L251bGwKKysrIGIvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L1F0
RmFsbGJhY2tXZWJQb3B1cC5oCkBAIC0wLDAgKzEsNTEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMDkgTm9raWEgQ29ycG9yYXRpb24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMpCisgKgor
ICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0
IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkg
R2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3
YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAo
YXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBp
cyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0
IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkg
b2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9T
RS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1v
cmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRo
ZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMg
bGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICog
dGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBG
aWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICoKKyAqLworI2lm
bmRlZiBRdEZhbGxiYWNrV2ViUG9wdXBfaAorI2RlZmluZSBRdEZhbGxiYWNrV2ViUG9wdXBfaAor
CisjaW5jbHVkZSAiUXRBYnN0cmFjdFdlYlBvcHVwLmgiCisjaW5jbHVkZSA8UUNvbWJvQm94Pgor
CituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIFF0RmFsbGJhY2tXZWJQb3B1cCA6IHByaXZh
dGUgUUNvbWJvQm94LCBwdWJsaWMgUXRBYnN0cmFjdFdlYlBvcHVwIHsKKyAgICBRX09CSkVDVAor
cHVibGljOgorICAgIFF0RmFsbGJhY2tXZWJQb3B1cCgpOworCisgICAgdmlydHVhbCB2b2lkIHNo
b3coY29uc3QgUVJlY3QmIGdlb21ldHJ5LCBpbnQgc2VsZWN0ZWRJbmRleCk7CisgICAgdmlydHVh
bCB2b2lkIGhpZGUoKSB7IGhpZGVQb3B1cCgpOyB9CisgICAgdmlydHVhbCB2b2lkIHBvcHVsYXRl
KGNvbnN0IFFGb250JiBmb250LCBjb25zdCBRTGlzdDxJdGVtPiYgaXRlbXMpOworICAgIHZpcnR1
YWwgdm9pZCBzZXRQYXJlbnQoUVdpZGdldCogcGFyZW50KTsKKworcHJpdmF0ZSBzbG90czoKKyAg
ICB2b2lkIGFjdGl2ZUNoYW5nZWQoaW50KTsKKworcHJpdmF0ZToKKyAgICBib29sIG1fcG9wdXBW
aXNpYmxlOworCisKKyAgICB2aXJ0dWFsIHZvaWQgc2hvd1BvcHVwKCk7CisgICAgdmlydHVhbCB2
b2lkIGhpZGVQb3B1cCgpOworfTsKKworfQorCisjZW5kaWYgLy8gUXRGYWxsYmFja1dlYlBvcHVw
X2gKLS0gCjEuNi4zLjMKCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>