<?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>130335</bug_id>
          
          <creation_ts>2014-03-17 07:33:26 -0700</creation_ts>
          <short_desc>WKThumbnailView should support snapshots</short_desc>
          <delta_ts>2014-03-17 13:09:08 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit2</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Tim Horton">thorton</reporter>
          <assigned_to name="Tim Horton">thorton</assigned_to>
          <cc>andersca</cc>
    
    <cc>mitz</cc>
    
    <cc>sam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>991206</commentid>
    <comment_count>0</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2014-03-17 07:33:26 -0700</bug_when>
    <thetext>In some cases, clients of WKThumbnailView might want to use snapshots of the web content for performance reasons.

&lt;rdar://problem/16255139&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>991210</commentid>
    <comment_count>1</comment_count>
      <attachid>226916</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2014-03-17 07:44:16 -0700</bug_when>
    <thetext>Created attachment 226916
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>991213</commentid>
    <comment_count>2</comment_count>
      <attachid>226916</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2014-03-17 07:54:50 -0700</bug_when>
    <thetext>Comment on attachment 226916
patch

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

&gt; Source/WebCore/WebCore.exp.in:791
&gt; +__ZN7WebCore19MediaSessionManager9addClientEPNS_25MediaSessionManagerClientE

hmm, sort-export-file seems to have made a mistake</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>991220</commentid>
    <comment_count>3</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2014-03-17 08:03:37 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; (From update of attachment 226916 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=226916&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/WebCore.exp.in:791
&gt; &gt; +__ZN7WebCore19MediaSessionManager9addClientEPNS_25MediaSessionManagerClientE
&gt; 
&gt; hmm, sort-export-file seems to have made a mistake

I guess it just sorts alphabetically :|</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>991225</commentid>
    <comment_count>4</comment_count>
      <attachid>226921</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2014-03-17 08:16:11 -0700</bug_when>
    <thetext>Created attachment 226921
rebase</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>991289</commentid>
    <comment_count>5</comment_count>
      <attachid>226921</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2014-03-17 10:27:55 -0700</bug_when>
    <thetext>Comment on attachment 226921
rebase

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

&gt; Source/WebKit2/ChangeLog:22
&gt; +        If we&apos;re using snapshots, and haven&apos;t already dispatched a async snapshot request,

an async

&gt; Source/WebKit2/UIProcess/API/Cocoa/WKThumbnailView.mm:107
&gt; +    _pendingSnapshot = YES;

_pendingSnapshot is a confusing variable name. Is it the pending snapshot, that a snapshot is pending, or that that this view is pending being snapshat?

&gt; Source/WebKit2/UIProcess/API/Cocoa/WKThumbnailView.mm:116
&gt; +        [thumbnailView _setPendingSnapshot:NO];
&gt; +        [[thumbnailView layer] setSublayers:@[ ]];
&gt; +        [[thumbnailView layer] setContents:(id)cgImage.get()];

Why doesn&apos;t this just call a single method on the thumbnail view?

&gt; Source/WebKit2/UIProcess/API/mac/WKView.mm:2503
&gt; +    _data-&gt;_currentRootLayer = rootLayer;

What is the &quot;current&quot; supposed to imply?

&gt; Source/WebKit2/WebProcess/WebPage/DrawingArea.h:110
&gt; +    virtual WebCore::TransformationMatrix transform() const;

This name is rather generic. What does the transform do?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>991297</commentid>
    <comment_count>6</comment_count>
      <attachid>226921</attachid>
    <who name="">mitz</who>
    <bug_when>2014-03-17 10:41:07 -0700</bug_when>
    <thetext>Comment on attachment 226921
rebase

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

&gt; Source/WebKit2/UIProcess/API/Cocoa/WKThumbnailView.h:42
&gt; +@property (nonatomic) BOOL useSnapshot;

Why not usesSnapshot?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>991349</commentid>
    <comment_count>7</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2014-03-17 13:09:08 -0700</bug_when>
    <thetext>https://trac.webkit.org/r165748</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>226916</attachid>
            <date>2014-03-17 07:44:16 -0700</date>
            <delta_ts>2014-03-17 08:16:11 -0700</delta_ts>
            <desc>patch</desc>
            <filename>thumbnail-snapshots.diff</filename>
            <type>text/plain</type>
            <size>19258</size>
            <attacher name="Tim Horton">thorton</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBkNzhhODg2Li44ODEwMGE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMg
QEAKKzIwMTQtMDMtMTcgIFRpbSBIb3J0b24gIDx0aW1vdGh5X2hvcnRvbkBhcHBsZS5jb20+CisK
KyAgICAgICAgV0tUaHVtYm5haWxWaWV3IHNob3VsZCBzdXBwb3J0IHNuYXBzaG90cworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTMwMzM1CisgICAgICAg
IDxyZGFyOi8vcHJvYmxlbS8xNjI1NTEzOT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICAqIFdlYkNvcmUuZXhwLmluOgorCiAyMDE0LTAzLTE0ICBSeW9z
dWtlIE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgogCiAgICAgICAgIFJlbW92ZSBhbiB1bnVzZWQg
ZnVuY3Rpb24gZml4IGJ1aWxkcy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
ZXhwLmluIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KaW5kZXggZWMzMjY4NS4uMzEy
ZGE2ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KKysrIGIvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KQEAgLTcwMCwxMCArNzAwLDEwIEBAIF9fWk43V2Vi
Q29yZTE2VmlzaWJsZVNlbGVjdGlvbjIyZXhwYW5kVXNpbmdHcmFudWxhcml0eUVOU18xNVRleHRH
cmFudWxhcml0eUUKIF9fWk43V2ViQ29yZTE2VmlzaWJsZVNlbGVjdGlvbkMxRVBLTlNfNVJhbmdl
RU5TXzlFQWZmaW5pdHlFYgogX19aTjdXZWJDb3JlMTZWaXNpYmxlU2VsZWN0aW9uQzFFUktOU18x
NVZpc2libGVQb3NpdGlvbkVTM19iCiBfX1pON1dlYkNvcmUxNlZpc2libGVTZWxlY3Rpb25DMUVS
S05TXzE1VmlzaWJsZVBvc2l0aW9uRWIKLV9fWk43V2ViQ29yZTE2VmlzaXRlZExpbmtTdG9yZUMy
RXYKLV9fWk43V2ViQ29yZTE2VmlzaXRlZExpbmtTdG9yZUQyRXYKIF9fWk43V2ViQ29yZTE2Vmlz
aXRlZExpbmtTdG9yZTIzaW52YWxpZGF0ZVN0eWxlc0ZvckxpbmtFeQogX19aTjdXZWJDb3JlMTZW
aXNpdGVkTGlua1N0b3JlMjdpbnZhbGlkYXRlU3R5bGVzRm9yQWxsTGlua3NFdgorX19aTjdXZWJD
b3JlMTZWaXNpdGVkTGlua1N0b3JlQzJFdgorX19aTjdXZWJDb3JlMTZWaXNpdGVkTGlua1N0b3Jl
RDJFdgogX19aTjdXZWJDb3JlMTZjcmVhdGVGdWxsTWFya3VwRVJLTlNfNE5vZGVFCiBfX1pON1dl
YkNvcmUxNmNyZWF0ZUZ1bGxNYXJrdXBFUktOU181UmFuZ2VFCiBfX1pON1dlYkNvcmUxNmVuY2xv
c2luZ0ludFJlY3RFUks2Q0dSZWN0CkBAIC03ODAsNyArNzgwLDYgQEAgX19aTjdXZWJDb3JlMTlM
YXllckZsdXNoU2NoZWR1bGVyQzFFUE5TXzI1TGF5ZXJGbHVzaFNjaGVkdWxlckNsaWVudEUKIF9f
Wk43V2ViQ29yZTE5TGF5ZXJGbHVzaFNjaGVkdWxlckMyRVBOU18yNUxheWVyRmx1c2hTY2hlZHVs
ZXJDbGllbnRFCiBfX1pON1dlYkNvcmUxOUxheWVyRmx1c2hTY2hlZHVsZXJEMUV2CiBfX1pON1dl
YkNvcmUxOUxheWVyRmx1c2hTY2hlZHVsZXJEMkV2Ci1fX1pON1dlYkNvcmUxOU1lZGlhU2Vzc2lv
bk1hbmFnZXI5YWRkQ2xpZW50RVBOU18yNU1lZGlhU2Vzc2lvbk1hbmFnZXJDbGllbnRFCiBfX1pO
N1dlYkNvcmUxOU1lZGlhU2Vzc2lvbk1hbmFnZXIxMnJlbW92ZUNsaWVudEVQTlNfMjVNZWRpYVNl
c3Npb25NYW5hZ2VyQ2xpZW50RQogX19aTjdXZWJDb3JlMTlNZWRpYVNlc3Npb25NYW5hZ2VyMTJy
ZXN0cmljdGlvbnNFTlNfMTJNZWRpYVNlc3Npb245TWVkaWFUeXBlRQogX19aTjdXZWJDb3JlMTlN
ZWRpYVNlc3Npb25NYW5hZ2VyMTNzaGFyZWRNYW5hZ2VyRXYKQEAgLTc4OSw2ICs3ODgsNyBAQCBf
X1pON1dlYkNvcmUxOU1lZGlhU2Vzc2lvbk1hbmFnZXIxNWVuZEludGVycnVwdGlvbkVOU18xMk1l
ZGlhU2Vzc2lvbjIwRW5kSW50ZXJydQogX19aTjdXZWJDb3JlMTlNZWRpYVNlc3Npb25NYW5hZ2Vy
MTdiZWdpbkludGVycnVwdGlvbkV2CiBfX1pON1dlYkNvcmUxOU1lZGlhU2Vzc2lvbk1hbmFnZXIx
N3JlbW92ZVJlc3RyaWN0aW9uRU5TXzEyTWVkaWFTZXNzaW9uOU1lZGlhVHlwZUVqCiBfX1pON1dl
YkNvcmUxOU1lZGlhU2Vzc2lvbk1hbmFnZXIzMGRpZFJlY2VpdmVSZW1vdGVDb250cm9sQ29tbWFu
ZEVOU18xMk1lZGlhU2Vzc2lvbjI0UmVtb3RlQ29udHJvbENvbW1hbmRUeXBlRQorX19aTjdXZWJD
b3JlMTlNZWRpYVNlc3Npb25NYW5hZ2VyOWFkZENsaWVudEVQTlNfMjVNZWRpYVNlc3Npb25NYW5h
Z2VyQ2xpZW50RQogX19aTjdXZWJDb3JlMTlQbGF0Zm9ybUNBQW5pbWF0aW9uMTBzZXRUb1ZhbHVl
RVJLTlNfMjBUcmFuc2Zvcm1hdGlvbk1hdHJpeEUKIF9fWk43V2ViQ29yZTE5UGxhdGZvcm1DQUFu
aW1hdGlvbjZjcmVhdGVFUDE5Q0FQcm9wZXJ0eUFuaW1hdGlvbgogX19aTjdXZWJDb3JlMTlQbGF0
Zm9ybUNBQW5pbWF0aW9uRDFFdgpAQCAtMTcyOCw2ICsxNzI4LDggQEAgX19aTks3V2ViQ29yZTIw
UmVzb3VyY2VSZXNwb25zZUJhc2UyMWV4cGVjdGVkQ29udGVudExlbmd0aEV2CiBfX1pOSzdXZWJD
b3JlMjBSZXNvdXJjZVJlc3BvbnNlQmFzZTN1cmxFdgogX19aTks3V2ViQ29yZTIwUmVzb3VyY2VS
ZXNwb25zZUJhc2U2aXNIVFRQRXYKIF9fWk5LN1dlYkNvcmUyMFJlc291cmNlUmVzcG9uc2VCYXNl
OG1pbWVUeXBlRXYKK19fWk5LN1dlYkNvcmUyMFRyYW5zZm9ybWF0aW9uTWF0cml4N2ludmVyc2VF
dgorX19aTks3V2ViQ29yZTIwVHJhbnNmb3JtYXRpb25NYXRyaXg3bWFwUmVjdEVSS05TXzdJbnRS
ZWN0RQogX19aTks3V2ViQ29yZTIwVHJhbnNmb3JtYXRpb25NYXRyaXhjdjEzQ0FUcmFuc2Zvcm0z
REV2CiBfX1pOSzdXZWJDb3JlMjFCYWNrRm9yd2FyZENvbnRyb2xsZXIxMmZvcndhcmRDb3VudEV2
CiBfX1pOSzdXZWJDb3JlMjFCYWNrRm9yd2FyZENvbnRyb2xsZXIxOGNhbkdvQmFja09yRm9yd2Fy
ZEVpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKaW5kZXggZmRhZDYyMy4uZGVmNGUxNyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDY4IEBACisyMDE0LTAzLTE3ICBUaW0gSG9ydG9uICA8dGltb3RoeV9ob3J0b25AYXBwbGUuY29t
PgorCisgICAgICAgIFdLVGh1bWJuYWlsVmlldyBzaG91bGQgc3VwcG9ydCBzbmFwc2hvdHMKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzMDMzNQorICAg
ICAgICA8cmRhcjovL3Byb2JsZW0vMTYyNTUxMzk+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLVGh1bWJuYWls
Vmlldy5oOgorICAgICAgICBBZGQgYSBwcm9wZXJ0eSwgdXNlU25hcHNob3QsIHdoaWNoIGRldGVy
bWluZXMgd2hldGhlciB0aGUgdGh1bWJuYWlsIHZpZXcKKyAgICAgICAgc2hvdWxkIHVzZSB0aGUg
bGl2ZSBsYXllciB0cmVlIG9yIGEgc25hcHNob3Qgb2YgdGhlIGNvbnRlbnQuCisKKyAgICAgICAg
KiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLVGh1bWJuYWlsVmlldy5tbToKKyAgICAgICAgKC1bV0tU
aHVtYm5haWxWaWV3IGluaXRXaXRoRnJhbWU6ZnJvbVdLVmlldzpdKToKKyAgICAgICAgKC1bV0tU
aHVtYm5haWxWaWV3IF92aWV3V2FzVW5wYXJlbnRlZF0pOgorICAgICAgICBDbGVhciB0aGUgc25h
cHNob3Qgd2hlbiB1bnBhcmVudGVkLgorCisgICAgICAgICgtW1dLVGh1bWJuYWlsVmlldyBfdmll
d1dhc1BhcmVudGVkXSk6CisgICAgICAgIFRha2UgYSBzbmFwc2hvdCBvZiB0aGUgd2ViIGNvbnRl
bnQgd2hlbiBwYXJlbnRlZCwgaWYgbmVlZGVkLgorCisgICAgICAgICgtW1dLVGh1bWJuYWlsVmll
dyBfcmVxdWVzdFNuYXBzaG90SWZOZWVkZWRdKToKKyAgICAgICAgSWYgd2UncmUgdXNpbmcgc25h
cHNob3RzLCBhbmQgaGF2ZW4ndCBhbHJlYWR5IGRpc3BhdGNoZWQgYSBhc3luYyBzbmFwc2hvdCBy
ZXF1ZXN0LAorICAgICAgICBhbmQgZG9uJ3QgYWxyZWFkeSBoYXZlIGEgc25hcHNob3QsIHJlcXVl
c3QgYSBzbmFwc2hvdCBmcm9tIHRoZSB3ZWIgcHJvY2Vzcy4KKworICAgICAgICBXaGVuIGl0IHJl
dHVybnMsIHVzZSBpdCBhcyB0aGUgY29udGVudHMgb2YgdGhlIFdLVGh1bWJuYWlsVmlldyBsYXll
ciwgYW5kCisgICAgICAgIHVucGFyZW50IHRoZSBsaXZlIGxheWVyIHRyZWUuCisKKyAgICAgICAg
KC1bV0tUaHVtYm5haWxWaWV3IHNldFNjYWxlOl0pOgorICAgICAgICAoLVtXS1RodW1ibmFpbFZp
ZXcgc2V0VXNlU25hcHNob3Q6XSk6CisgICAgICAgICgtW1dLVGh1bWJuYWlsVmlldyBfc2V0VGh1
bWJuYWlsTGF5ZXI6XSk6CisgICAgICAgICgtW1dLVGh1bWJuYWlsVmlldyBfdGh1bWJuYWlsTGF5
ZXJdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLVGh1bWJuYWlsVmlld0ludGVy
bmFsLmg6CisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL21hYy9XS1ZpZXcubW06CisgICAgICAg
ICgtW1dLVmlldyBfc2V0QWNjZWxlcmF0ZWRDb21wb3NpdGluZ01vZGVSb290TGF5ZXI6XSk6Cisg
ICAgICAgICgtW1dLVmlldyBfYWNjZWxlcmF0ZWRDb21wb3NpdGluZ01vZGVSb290TGF5ZXJdKToK
KyAgICAgICAgV0tWaWV3IHNob3VsZCBhbHdheXMga2VlcCB0cmFjayBvZiB0aGUgY3VycmVudCBy
b290IGxheWVyLCBpbnN0ZWFkIG9mIHRvdGFsbHkKKyAgICAgICAgaGFuZGluZyBjb250cm9sIG92
ZXIgdG8gV0tUaHVtYm5haWxWaWV3IHdoZW4gaXQgaXMgdXNlZC4KKworICAgICAgICAoLVtXS1Zp
ZXcgX3NldFRodW1ibmFpbFZpZXc6XSk6CisgICAgICAgICgtW1dLVmlldyBfdXBkYXRlVGh1bWJu
YWlsVmlld0xheWVyXSk6CisgICAgICAgICgtW1dLVmlldyBfcmVwYXJlbnRMYXllclRyZWVJblRo
dW1ibmFpbFZpZXddKToKKyAgICAgICAgSWYgbmVlZGVkIChlaXRoZXIgd2UncmUgbm90IHVzaW5n
IHNuYXBzaG90cywgb3Igc3RpbGwgd2FpdGluZyBmb3IgdGhlIHNuYXBzaG90IHRvIGJlIHBhaW50
ZWQpLAorICAgICAgICBwdXNoIHRoZSBXS1ZpZXcncyBsaXZlIGxheWVyIHRyZWUgaW50byB0aGUg
dGh1bWJuYWlsIHZpZXcuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL21hYy9XS1ZpZXdJbnRl
cm5hbC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwOgorICAgICAgICAo
V2ViS2l0OjpXZWJQYWdlUHJveHk6OmludGVybmFsU2hvd0NvbnRleHRNZW51KToKKyAgICAgICAg
KiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYlBhZ2UuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdl
cy5pbjoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6CisgICAgICAg
IChXZWJLaXQ6OldlYlBhZ2U6OnRha2VUaHVtYm5haWxTbmFwc2hvdCk6CisgICAgICAgIEFkZCBh
IG1lc3NhZ2UgdGhhdCBhc3luY2hyb25vdXNseSByZXR1cm5zIGEgc25hcHNob3QgdGhhdCByZXNw
ZWN0cyB0aGUKKyAgICAgICAgY3VycmVudCB0aHVtYm5haWwgc2NhbGUgYW5kIHBvc2l0aW9uLgor
CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnNjYWxlZFNuYXBzaG90V2l0aE9wdGlvbnMpOgor
ICAgICAgICBVc2Ugc29tZSBudWxscHRyLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdl
L0RyYXdpbmdBcmVhLmNwcDoKKyAgICAgICAgKFdlYktpdDo6RHJhd2luZ0FyZWE6OnRyYW5zZm9y
bSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL0RyYXdpbmdBcmVhLmg6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9UaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYS5o
OgorICAgICAgICBBZGQgYSBnZXR0ZXIgZm9yIHRoZSBEcmF3aW5nQXJlYSdzIHRyYW5zZm9ybS4K
KwogMjAxNC0wMy0xNCAgQW5kZXJzIENhcmxzc29uICA8YW5kZXJzY2FAYXBwbGUuY29tPgogCiAg
ICAgICAgIEZpeCBjcmFzaCB3aGVuIHJlc2l6aW5nIHRoZSB2aXNpdGVkIGxpbmsgdGFibGUKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tUaHVtYm5haWxW
aWV3LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLVGh1bWJuYWlsVmll
dy5oCmluZGV4IGE3NWM3ZDguLmY1NTYzMTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvQ29jb2EvV0tUaHVtYm5haWxWaWV3LmgKKysrIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9Db2NvYS9XS1RodW1ibmFpbFZpZXcuaApAQCAtMzksNiArMzksNyBAQCBX
S19BUElfQ0xBU1MKIC0gKGluc3RhbmNldHlwZSlpbml0V2l0aEZyYW1lOihOU1JlY3QpZnJhbWUg
ZnJvbVdLVmlldzooV0tWaWV3ICopd2tWaWV3OwogCiBAcHJvcGVydHkgKG5vbmF0b21pYykgQ0dG
bG9hdCBzY2FsZTsKK0Bwcm9wZXJ0eSAobm9uYXRvbWljKSBCT09MIHVzZVNuYXBzaG90OwogCiBA
ZW5kCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tU
aHVtYm5haWxWaWV3Lm1tIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1Ro
dW1ibmFpbFZpZXcubW0KaW5kZXggNmU4NWRhYS4uYWQ5YzhlZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1RodW1ibmFpbFZpZXcubW0KKysrIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1RodW1ibmFpbFZpZXcubW0KQEAgLTU0
LDYgKzU0LDggQEAgdXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKICAgICBCT09MIF9zaG91bGRBcHBs
eVRodW1ibmFpbFNjYWxlOwogfQogCitAc3ludGhlc2l6ZSBfcGVuZGluZ1NuYXBzaG90ID0gX3Bl
bmRpbmdTbmFwc2hvdDsKKwogLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoRnJhbWU6KE5TUmVjdClm
cmFtZSBmcm9tV0tWaWV3OihXS1ZpZXcgKil3a1ZpZXcKIHsKICAgICBpZiAoIShzZWxmID0gW3N1
cGVyIGluaXRXaXRoRnJhbWU6ZnJhbWVdKSkKQEAgLTc2LDYgKzc4LDkgQEAgdXNpbmcgbmFtZXNw
YWNlIFdlYktpdDsKICAgICAgICAgX3dlYlBhZ2VQcm94eS0+c2V0VGh1bWJuYWlsU2NhbGUoMSk7
CiAKICAgICBbX3drVmlldyBfc2V0VGh1bWJuYWlsVmlldzpuaWxdOworCisgICAgc2VsZi5sYXll
ci5jb250ZW50cyA9IG5pbDsKKwogICAgIF93ZWJQYWdlUHJveHktPnNldE1heVN0YXJ0TWVkaWFX
aGVuSW5XaW5kb3coX29yaWdpbmFsTWF5U3RhcnRNZWRpYVdoZW5JbldpbmRvdyk7CiB9CiAKQEAg
LTkwLDkgKzk1LDI4IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CiAgICAgaWYgKCFfb3JpZ2lu
YWxTb3VyY2VWaWV3SXNJbldpbmRvdykKICAgICAgICAgX3dlYlBhZ2VQcm94eS0+c2V0TWF5U3Rh
cnRNZWRpYVdoZW5JbldpbmRvdyhmYWxzZSk7CiAKKyAgICBbc2VsZiBfcmVxdWVzdFNuYXBzaG90
SWZOZWVkZWRdOwogICAgIFtfd2tWaWV3IF9zZXRUaHVtYm5haWxWaWV3OnNlbGZdOwogfQogCist
ICh2b2lkKV9yZXF1ZXN0U25hcHNob3RJZk5lZWRlZAoreworICAgIGlmICghX3VzZVNuYXBzaG90
IHx8IF9wZW5kaW5nU25hcHNob3QgfHwgc2VsZi5sYXllci5jb250ZW50cykKKyAgICAgICAgcmV0
dXJuOworCisgICAgX3BlbmRpbmdTbmFwc2hvdCA9IFlFUzsKKworICAgIFJldGFpblB0cjxXS1Ro
dW1ibmFpbFZpZXc+IHRodW1ibmFpbFZpZXcgPSBzZWxmOworICAgIF93ZWJQYWdlUHJveHktPnRh
a2VUaHVtYm5haWxTbmFwc2hvdChbdGh1bWJuYWlsVmlld10oYm9vbCwgY29uc3QgU2hhcmVhYmxl
Qml0bWFwOjpIYW5kbGUmIGltYWdlSGFuZGxlKSB7CisgICAgICAgIFJlZlB0cjxTaGFyZWFibGVC
aXRtYXA+IGJpdG1hcCA9IFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlKGltYWdlSGFuZGxlLCBTaGFy
ZWRNZW1vcnk6OlJlYWRPbmx5KTsKKyAgICAgICAgUmV0YWluUHRyPENHSW1hZ2VSZWY+IGNnSW1h
Z2UgPSBiaXRtYXAtPm1ha2VDR0ltYWdlKCk7CisKKyAgICAgICAgW3RodW1ibmFpbFZpZXcgX3Nl
dFBlbmRpbmdTbmFwc2hvdDpOT107CisgICAgICAgIFtbdGh1bWJuYWlsVmlldyBsYXllcl0gc2V0
U3VibGF5ZXJzOkBbIF1dOworICAgICAgICBbW3RodW1ibmFpbFZpZXcgbGF5ZXJdIHNldENvbnRl
bnRzOihpZCljZ0ltYWdlLmdldCgpXTsKKyAgICB9KTsKK30KKwogLSAodm9pZCl2aWV3RGlkTW92
ZVRvV2luZG93CiB7CiAgICAgaWYgKHNlbGYud2luZG93KQpAQCAtMTAzLDE4ICsxMjcsMzcgQEAg
dXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKIAogLSAodm9pZClzZXRTY2FsZTooQ0dGbG9hdClzY2Fs
ZQogeworICAgIGlmIChfc2NhbGUgPT0gc2NhbGUpCisgICAgICAgIHJldHVybjsKKwogICAgIF9z
Y2FsZSA9IHNjYWxlOwogCiAgICAgaWYgKHNlbGYud2luZG93ICYmIF9zaG91bGRBcHBseVRodW1i
bmFpbFNjYWxlKQogICAgICAgICBfd2ViUGFnZVByb3h5LT5zZXRUaHVtYm5haWxTY2FsZShfc2Nh
bGUpOwogfQogCi0tICh2b2lkKXNldFRodW1ibmFpbExheWVyOihDQUxheWVyICopbGF5ZXIKKy0g
KHZvaWQpc2V0VXNlU25hcHNob3Q6KEJPT0wpdXNlU25hcHNob3QKK3sKKyAgICBpZiAoX3VzZVNu
YXBzaG90ID09IHVzZVNuYXBzaG90KQorICAgICAgICByZXR1cm47CisKKyAgICBfdXNlU25hcHNo
b3QgPSB1c2VTbmFwc2hvdDsKKworICAgIGlmICghc2VsZi53aW5kb3cpCisgICAgICAgIHJldHVy
bjsKKworICAgIGlmICh1c2VTbmFwc2hvdCkKKyAgICAgICAgW3NlbGYgX3JlcXVlc3RTbmFwc2hv
dElmTmVlZGVkXTsKKyAgICBlbHNlCisgICAgICAgIFtfd2tWaWV3IF9yZXBhcmVudExheWVyVHJl
ZUluVGh1bWJuYWlsVmlld107Cit9CisKKy0gKHZvaWQpX3NldFRodW1ibmFpbExheWVyOihDQUxh
eWVyICopbGF5ZXIKIHsKICAgICBzZWxmLmxheWVyLnN1YmxheWVycyA9IGxheWVyID8gQFsgbGF5
ZXIgXSA6IEBbIF07CiB9CiAKLS0gKENBTGF5ZXIgKil0aHVtYm5haWxMYXllcgorLSAoQ0FMYXll
ciAqKV90aHVtYm5haWxMYXllcgogewogICAgIGlmICghc2VsZi5sYXllci5zdWJsYXllcnMuY291
bnQpCiAgICAgICAgIHJldHVybiBuaWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL0NvY29hL1dLVGh1bWJuYWlsVmlld0ludGVybmFsLmggYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLVGh1bWJuYWlsVmlld0ludGVybmFsLmgKaW5kZXggZjRl
ZWEwMC4uNWNjODdiZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9D
b2NvYS9XS1RodW1ibmFpbFZpZXdJbnRlcm5hbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvQ29jb2EvV0tUaHVtYm5haWxWaWV3SW50ZXJuYWwuaApAQCAtMzEsNyArMzEsOCBA
QAogCiBAaW50ZXJmYWNlIFdLVGh1bWJuYWlsVmlldyAoKQogCi1AcHJvcGVydHkgKG5vbmF0b21p
YywgYXNzaWduKSBDQUxheWVyICp0aHVtYm5haWxMYXllcjsKK0Bwcm9wZXJ0eSAobm9uYXRvbWlj
LCBhc3NpZ24sIHNldHRlciA9IF9zZXRUaHVtYm5haWxMYXllcjopIENBTGF5ZXIgKl90aHVtYm5h
aWxMYXllcjsKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCBhc3NpZ24sIHNldHRlciA9IF9zZXRQZW5k
aW5nU25hcHNob3Q6KSBCT09MIF9wZW5kaW5nU25hcHNob3Q7CiAKIEBlbmQKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9tYWMvV0tWaWV3Lm1tIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9tYWMvV0tWaWV3Lm1tCmluZGV4IDY5YTc5MmEuLmIwNjViZmYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvbWFjL1dLVmlldy5tbQor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL21hYy9XS1ZpZXcubW0KQEAgLTIyNSw2
ICsyMjUsOCBAQCBzdHJ1Y3QgV0tWaWV3SW50ZXJwcmV0S2V5RXZlbnRzUGFyYW1ldGVycyB7CiAg
ICAgQk9PTCBfYWxsb3dzTWFnbmlmaWNhdGlvbjsKICAgICBCT09MIF9hbGxvd3NCYWNrRm9yd2Fy
ZE5hdmlnYXRpb25HZXN0dXJlczsKIAorICAgIFJldGFpblB0cjxDQUxheWVyPiBfY3VycmVudFJv
b3RMYXllcjsKKwogI2lmIFdLX0FQSV9FTkFCTEVECiAgICAgV0tUaHVtYm5haWxWaWV3ICpfdGh1
bWJuYWlsVmlldzsKICNlbmRpZgpAQCAtMjQ5OCw5ICsyNTAwLDExIEBAIHN0YXRpYyB2b2lkIGNy
ZWF0ZVNhbmRib3hFeHRlbnNpb25zRm9yRmlsZVVwbG9hZChOU1Bhc3RlYm9hcmQgKnBhc3RlYm9h
cmQsIFNhbmRiCiB7CiAgICAgW3Jvb3RMYXllciB3ZWJfZGlzYWJsZUFsbEFjdGlvbnNdOwogCisg
ICAgX2RhdGEtPl9jdXJyZW50Um9vdExheWVyID0gcm9vdExheWVyOworCiAjaWYgV0tfQVBJX0VO
QUJMRUQKICAgICBpZiAoX2RhdGEtPl90aHVtYm5haWxWaWV3KSB7Ci0gICAgICAgIF9kYXRhLT5f
dGh1bWJuYWlsVmlldy50aHVtYm5haWxMYXllciA9IHJvb3RMYXllcjsKKyAgICAgICAgW3NlbGYg
X3VwZGF0ZVRodW1ibmFpbFZpZXdMYXllcl07CiAgICAgICAgIHJldHVybjsKICAgICB9CiAjZW5k
aWYKQEAgLTI1NDQsMTUgKzI1NDgsNyBAQCBzdGF0aWMgdm9pZCBjcmVhdGVTYW5kYm94RXh0ZW5z
aW9uc0ZvckZpbGVVcGxvYWQoTlNQYXN0ZWJvYXJkICpwYXN0ZWJvYXJkLCBTYW5kYgogCiAtIChD
QUxheWVyICopX2FjY2VsZXJhdGVkQ29tcG9zaXRpbmdNb2RlUm9vdExheWVyCiB7Ci0gICAgTlNW
aWV3ICpob3N0VmlldyA9IF9kYXRhLT5fbGF5ZXJIb3N0aW5nVmlldy5nZXQoKTsKLQotICAgIGlm
ICghaG9zdFZpZXcpCi0gICAgICAgIHJldHVybiBudWxscHRyOwotCi0gICAgaWYgKCFob3N0Vmll
dy5sYXllci5zdWJsYXllcnMuY291bnQpCi0gICAgICAgIHJldHVybiBudWxscHRyOwotCi0gICAg
cmV0dXJuIFtob3N0Vmlldy5sYXllci5zdWJsYXllcnMgb2JqZWN0QXRJbmRleDowXTsKKyAgICBy
ZXR1cm4gX2RhdGEtPl9jdXJyZW50Um9vdExheWVyLmdldCgpOwogfQogCiAtIChSZXRhaW5QdHI8
Q0dJbWFnZVJlZj4pX3Rha2VWaWV3U25hcHNob3QKQEAgLTI5NzQsMTQgKzI5NzAsMTIgQEAgc3Rh
dGljIE5TU3RyaW5nICpwYXRoV2l0aFVuaXF1ZUZpbGVuYW1lRm9yUGF0aChOU1N0cmluZyAqcGF0
aCkKIHsKICAgICBBU1NFUlQoIV9kYXRhLT5fdGh1bWJuYWlsVmlldyB8fCAhdGh1bWJuYWlsVmll
dyk7CiAKLSAgICBSZXRhaW5QdHI8Q0FMYXllcj4gdGh1bWJuYWlsTGF5ZXIgPSBfZGF0YS0+X3Ro
dW1ibmFpbFZpZXcudGh1bWJuYWlsTGF5ZXI7Ci0KICAgICBfZGF0YS0+X3RodW1ibmFpbFZpZXcg
PSB0aHVtYm5haWxWaWV3OwogCiAgICAgaWYgKHRodW1ibmFpbFZpZXcpCi0gICAgICAgIHRodW1i
bmFpbFZpZXcudGh1bWJuYWlsTGF5ZXIgPSBbc2VsZiBfYWNjZWxlcmF0ZWRDb21wb3NpdGluZ01v
ZGVSb290TGF5ZXJdOworICAgICAgICBbc2VsZiBfdXBkYXRlVGh1bWJuYWlsVmlld0xheWVyXTsK
ICAgICBlbHNlCi0gICAgICAgIFtzZWxmIF9zZXRBY2NlbGVyYXRlZENvbXBvc2l0aW5nTW9kZVJv
b3RMYXllcjp0aHVtYm5haWxMYXllci5nZXQoKV07CisgICAgICAgIFtzZWxmIF9zZXRBY2NlbGVy
YXRlZENvbXBvc2l0aW5nTW9kZVJvb3RMYXllcjpfZGF0YS0+X2N1cnJlbnRSb290TGF5ZXIuZ2V0
KCldOwogCiAgICAgX2RhdGEtPl9wYWdlLT52aWV3U3RhdGVEaWRDaGFuZ2UoVmlld1N0YXRlOjpX
aW5kb3dJc0FjdGl2ZSB8IFZpZXdTdGF0ZTo6SXNJbldpbmRvdyB8IFZpZXdTdGF0ZTo6SXNWaXNp
YmxlKTsKIH0KQEAgLTI5OTAsNiArMjk4NCwyMCBAQCBzdGF0aWMgTlNTdHJpbmcgKnBhdGhXaXRo
VW5pcXVlRmlsZW5hbWVGb3JQYXRoKE5TU3RyaW5nICpwYXRoKQogewogICAgIHJldHVybiBfZGF0
YS0+X3RodW1ibmFpbFZpZXc7CiB9CisKKy0gKHZvaWQpX3VwZGF0ZVRodW1ibmFpbFZpZXdMYXll
cgoreworICAgIFdLVGh1bWJuYWlsVmlldyAqdGh1bWJuYWlsVmlldyA9IF9kYXRhLT5fdGh1bWJu
YWlsVmlldzsKKyAgICBBU1NFUlQodGh1bWJuYWlsVmlldyk7CisKKyAgICBpZiAoIXRodW1ibmFp
bFZpZXcudXNlU25hcHNob3QgfHwgdGh1bWJuYWlsVmlldy5fcGVuZGluZ1NuYXBzaG90KQorICAg
ICAgICBbc2VsZiBfcmVwYXJlbnRMYXllclRyZWVJblRodW1ibmFpbFZpZXddOworfQorCistICh2
b2lkKV9yZXBhcmVudExheWVyVHJlZUluVGh1bWJuYWlsVmlldworeworICAgIF9kYXRhLT5fdGh1
bWJuYWlsVmlldy5fdGh1bWJuYWlsTGF5ZXIgPSBfZGF0YS0+X2N1cnJlbnRSb290TGF5ZXIuZ2V0
KCk7Cit9CiAjZW5kaWYgLy8gV0tfQVBJX0VOQUJMRUQKIAogQGVuZApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9tYWMvV0tWaWV3SW50ZXJuYWwuaCBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvbWFjL1dLVmlld0ludGVybmFsLmgKaW5kZXggYWJkMjVjMC4u
NGMxNWU4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9tYWMvV0tW
aWV3SW50ZXJuYWwuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL21hYy9XS1Zp
ZXdJbnRlcm5hbC5oCkBAIC0xMDksNiArMTA5LDcgQEAgc3RydWN0IFdlYlBhZ2VDb25maWd1cmF0
aW9uOwogCiAjaWYgV0tfQVBJX0VOQUJMRUQKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCBzZXR0ZXI9
X3NldFRodW1ibmFpbFZpZXc6KSBXS1RodW1ibmFpbFZpZXcgKl90aHVtYm5haWxWaWV3OworLSAo
dm9pZClfcmVwYXJlbnRMYXllclRyZWVJblRodW1ibmFpbFZpZXc7CiAjZW5kaWYKIAogLy8gRnVs
bFNjcmVlbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAppbmRleCBh
NzZiYWQwLi5kZTQ0YTA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2Vi
UGFnZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5
LmNwcApAQCAtNDU2Nyw0ICs0NTY3LDE3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjphZGRNSU1FVHlw
ZVdpdGhDdXN0b21Db250ZW50UHJvdmlkZXIoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSkKICAgICBt
X3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkFkZE1JTUVUeXBlV2l0aEN1c3RvbUNv
bnRlbnRQcm92aWRlcihtaW1lVHlwZSksIG1fcGFnZUlEKTsKIH0KIAordm9pZCBXZWJQYWdlUHJv
eHk6OnRha2VUaHVtYm5haWxTbmFwc2hvdChJbWFnZUNhbGxiYWNrOjpDYWxsYmFja0Z1bmN0aW9u
IGNhbGxiYWNrRnVuY3Rpb24pCit7CisgICAgaWYgKCFpc1ZhbGlkKCkpCisgICAgICAgIHJldHVy
bjsKKworICAgIFJlZlB0cjxJbWFnZUNhbGxiYWNrPiBjYWxsYmFjayA9IEltYWdlQ2FsbGJhY2s6
OmNyZWF0ZShjYWxsYmFja0Z1bmN0aW9uKTsKKworICAgIHVpbnQ2NF90IGNhbGxiYWNrSUQgPSBj
YWxsYmFjay0+Y2FsbGJhY2tJRCgpOworICAgIG1faW1hZ2VDYWxsYmFja3Muc2V0KGNhbGxiYWNr
SUQsIGNhbGxiYWNrLmdldCgpKTsKKworICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2Vi
UGFnZTo6VGFrZVRodW1ibmFpbFNuYXBzaG90KGNhbGxiYWNrSUQpLCBtX3BhZ2VJRCk7Cit9CisK
IH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5oCmluZGV4IDgyYTEyNWEuLjNiODkxMmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9XZWJQYWdlUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2Vi
UGFnZVByb3h5LmgKQEAgLTkxNyw2ICs5MTcsOCBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHNldFRo
dW1ibmFpbFNjYWxlKGRvdWJsZSk7CiAKKyAgICB2b2lkIHRha2VUaHVtYm5haWxTbmFwc2hvdChJ
bWFnZUNhbGxiYWNrOjpDYWxsYmFja0Z1bmN0aW9uKTsKKwogcHJpdmF0ZToKICAgICBXZWJQYWdl
UHJveHkoUGFnZUNsaWVudCYsIFdlYlByb2Nlc3NQcm94eSYsIHVpbnQ2NF90IHBhZ2VJRCwgY29u
c3QgV2ViUGFnZUNvbmZpZ3VyYXRpb24mKTsKICAgICB2b2lkIHBsYXRmb3JtSW5pdGlhbGl6ZSgp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0RyYXdpbmdB
cmVhLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9EcmF3aW5nQXJlYS5j
cHAKaW5kZXggMzJlY2IwMC4uY2E1MDZkMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJQYWdlL0RyYXdpbmdBcmVhLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYlBhZ2UvRHJhd2luZ0FyZWEuY3BwCkBAIC0yNSw2ICsyNSw3IEBACiAKICNpbmNs
dWRlICJjb25maWcuaCIKICNpbmNsdWRlICJEcmF3aW5nQXJlYS5oIgorI2luY2x1ZGUgPFdlYkNv
cmUvVHJhbnNmb3JtYXRpb25NYXRyaXguaD4KICNpbmNsdWRlIDx3dGYvRnVuY3Rpb25hbC5oPgog
CiAvLyBTdWJjbGFzc2VzCkBAIC00MSw2ICs0Miw4IEBACiAKICNpbmNsdWRlICJXZWJQYWdlQ3Jl
YXRpb25QYXJhbWV0ZXJzLmgiCiAKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCiBuYW1lc3Bh
Y2UgV2ViS2l0IHsKIAogc3RkOjp1bmlxdWVfcHRyPERyYXdpbmdBcmVhPiBEcmF3aW5nQXJlYTo6
Y3JlYXRlKFdlYlBhZ2UqIHdlYlBhZ2UsIGNvbnN0IFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMm
IHBhcmFtZXRlcnMpCkBAIC04Myw0ICs4Niw5IEBAIHZvaWQgRHJhd2luZ0FyZWE6OmRpc3BhdGNo
QWZ0ZXJFbnN1cmluZ1VwZGF0ZWRTY3JvbGxQb3NpdGlvbihzdGQ6OmZ1bmN0aW9uPHZvaWQKICAg
ICBmdW5jdGlvbigpOwogfQogCitUcmFuc2Zvcm1hdGlvbk1hdHJpeCBEcmF3aW5nQXJlYTo6dHJh
bnNmb3JtKCkgY29uc3QKK3sKKyAgICByZXR1cm4gVHJhbnNmb3JtYXRpb25NYXRyaXgoKTsKK30K
KwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYlBhZ2UvRHJhd2luZ0FyZWEuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViUGFnZS9EcmF3aW5nQXJlYS5oCmluZGV4IGU3YzNkMWIuLmViYzA5NjcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9EcmF3aW5nQXJlYS5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9EcmF3aW5nQXJlYS5oCkBAIC0xMDcsNiAr
MTA3LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBzZXRSb290Q29tcG9zaXRpbmdMYXll
cihXZWJDb3JlOjpHcmFwaGljc0xheWVyKikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBzY2hlZHVs
ZUNvbXBvc2l0aW5nTGF5ZXJGbHVzaCgpID0gMDsKIAorICAgIHZpcnR1YWwgV2ViQ29yZTo6VHJh
bnNmb3JtYXRpb25NYXRyaXggdHJhbnNmb3JtKCkgY29uc3Q7CiAgICAgdmlydHVhbCB2b2lkIHNl
dFRyYW5zZm9ybShjb25zdCBXZWJDb3JlOjpUcmFuc2Zvcm1hdGlvbk1hdHJpeCYpIHsgfQogCiAj
aWYgVVNFKENPT1JESU5BVEVEX0dSQVBISUNTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYlBhZ2UuY3BwCmluZGV4IDExOWUyZWIuLmZiMWY1NjUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKQEAgLTE1MTMsMTUgKzE1
MTMsMjkgQEAgdm9pZCBXZWJQYWdlOjpzaG93UGFnZUJhbm5lcnMoKQogfQogI2VuZGlmIC8vICFQ
TEFURk9STShJT1MpCiAKK3ZvaWQgV2ViUGFnZTo6dGFrZVRodW1ibmFpbFNuYXBzaG90KHVpbnQ2
NF90IGNhbGxiYWNrSUQpCit7CisgICAgSW50UmVjdCBzbmFwc2hvdFJlY3QoSW50UG9pbnQoKSwg
bV92aWV3U2l6ZSk7CisgICAgc25hcHNob3RSZWN0ID0gbV9kcmF3aW5nQXJlYS0+dHJhbnNmb3Jt
KCkuaW52ZXJzZSgpLm1hcFJlY3Qoc25hcHNob3RSZWN0KTsKKworICAgIFJlZlB0cjxXZWJJbWFn
ZT4gaW1hZ2UgPSBzY2FsZWRTbmFwc2hvdFdpdGhPcHRpb25zKHNuYXBzaG90UmVjdCwgMSwgU25h
cHNob3RPcHRpb25zU2hhcmVhYmxlIHwgU25hcHNob3RPcHRpb25zSW5WaWV3Q29vcmRpbmF0ZXMp
OworCisgICAgU2hhcmVhYmxlQml0bWFwOjpIYW5kbGUgaGFuZGxlOworICAgIGlmIChpbWFnZSkK
KyAgICAgICAgaW1hZ2UtPmJpdG1hcCgpLT5jcmVhdGVIYW5kbGUoaGFuZGxlLCBTaGFyZWRNZW1v
cnk6OlJlYWRPbmx5KTsKKworICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6SW1hZ2VD
YWxsYmFjayhoYW5kbGUsIGNhbGxiYWNrSUQpKTsKK30KKwogUGFzc1JlZlB0cjxXZWJJbWFnZT4g
V2ViUGFnZTo6c2NhbGVkU25hcHNob3RXaXRoT3B0aW9ucyhjb25zdCBJbnRSZWN0JiByZWN0LCBk
b3VibGUgc2NhbGVGYWN0b3IsIFNuYXBzaG90T3B0aW9ucyBvcHRpb25zKQogewogICAgIEZyYW1l
KiBjb3JlRnJhbWUgPSBtX21haW5GcmFtZS0+Y29yZUZyYW1lKCk7CiAgICAgaWYgKCFjb3JlRnJh
bWUpCi0gICAgICAgIHJldHVybiAwOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIEZy
YW1lVmlldyogZnJhbWVWaWV3ID0gY29yZUZyYW1lLT52aWV3KCk7CiAgICAgaWYgKCFmcmFtZVZp
ZXcpCi0gICAgICAgIHJldHVybiAwOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIElu
dFNpemUgYml0bWFwU2l6ZSA9IHJlY3Quc2l6ZSgpOwogICAgIGZsb2F0IGNvbWJpbmVkU2NhbGVG
YWN0b3IgPSBzY2FsZUZhY3RvciAqIGNvcmVQYWdlKCktPmRldmljZVNjYWxlRmFjdG9yKCk7CkBA
IC0xNTI5LDcgKzE1NDMsNyBAQCBQYXNzUmVmUHRyPFdlYkltYWdlPiBXZWJQYWdlOjpzY2FsZWRT
bmFwc2hvdFdpdGhPcHRpb25zKGNvbnN0IEludFJlY3QmIHJlY3QsIGRvdQogCiAgICAgUmVmUHRy
PFdlYkltYWdlPiBzbmFwc2hvdCA9IFdlYkltYWdlOjpjcmVhdGUoYml0bWFwU2l6ZSwgc25hcHNo
b3RPcHRpb25zVG9JbWFnZU9wdGlvbnMob3B0aW9ucykpOwogICAgIGlmICghc25hcHNob3QtPmJp
dG1hcCgpKQotICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAg
ICBhdXRvIGdyYXBoaWNzQ29udGV4dCA9IHNuYXBzaG90LT5iaXRtYXAoKS0+Y3JlYXRlR3JhcGhp
Y3NDb250ZXh0KCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJQYWdlLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFn
ZS5oCmluZGV4IDNhMThlNDEuLmIwZDgxYTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYlBhZ2UuaApAQCAtODQ2LDYgKzg0Niw3IEBAIHByaXZhdGU6CiAgICAgdm9p
ZCBnZXRXZWJBcmNoaXZlT2ZGcmFtZSh1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBjYWxsYmFj
a0lEKTsKICAgICB2b2lkIHJ1bkphdmFTY3JpcHRJbk1haW5GcmFtZShjb25zdCBTdHJpbmcmLCB1
aW50NjRfdCBjYWxsYmFja0lEKTsKICAgICB2b2lkIGZvcmNlUmVwYWludCh1aW50NjRfdCBjYWxs
YmFja0lEKTsKKyAgICB2b2lkIHRha2VUaHVtYm5haWxTbmFwc2hvdCh1aW50NjRfdCBjYWxsYmFj
a0lEKTsKIAogICAgIHZvaWQgcHJlZmVyZW5jZXNEaWRDaGFuZ2UoY29uc3QgV2ViUHJlZmVyZW5j
ZXNTdG9yZSYpOwogICAgIHZvaWQgcGxhdGZvcm1QcmVmZXJlbmNlc0RpZENoYW5nZShjb25zdCBX
ZWJQcmVmZXJlbmNlc1N0b3JlJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCmluZGV4IDYwYTU1NWYuLjA4YzZhNDcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3Nh
Z2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1l
c3NhZ2VzLmluCkBAIC0zMzYsNSArMzM2LDcgQEAgbWVzc2FnZXMgLT4gV2ViUGFnZSBMZWdhY3lS
ZWNlaXZlciB7CiAgICAgU2V0VGh1bWJuYWlsU2NhbGUoZG91YmxlIHNjYWxlKQogCiAgICAgR2V0
Qnl0ZWNvZGVQcm9maWxlKHVpbnQ2NF90IGNhbGxiYWNrSUQpCisgICAgCisgICAgVGFrZVRodW1i
bmFpbFNuYXBzaG90KHVpbnQ2NF90IGNhbGxiYWNrSUQpCiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2lu
Z0FyZWEuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvVGlsZWRDb3Jl
QW5pbWF0aW9uRHJhd2luZ0FyZWEuaAppbmRleCA4ODQyMWQ4Li4wNmE2YTI4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1RpbGVkQ29yZUFuaW1hdGlv
bkRyYXdpbmdBcmVhLmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21h
Yy9UaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYS5oCkBAIC0xMTIsNiArMTEyLDcgQEAgcHJp
dmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgY29tbWl0VHJhbnNpZW50Wm9vbShkb3VibGUgc2NhbGUs
IFdlYkNvcmU6OkZsb2F0UG9pbnQgb3JpZ2luKSBvdmVycmlkZTsKICAgICB2b2lkIGFwcGx5VHJh
bnNpZW50Wm9vbVRvUGFnZShkb3VibGUgc2NhbGUsIFdlYkNvcmU6OkZsb2F0UG9pbnQgb3JpZ2lu
KTsKIAorICAgIHZpcnR1YWwgV2ViQ29yZTo6VHJhbnNmb3JtYXRpb25NYXRyaXggdHJhbnNmb3Jt
KCkgY29uc3Qgb3ZlcnJpZGUgeyAgcmV0dXJuIG1fdHJhbnNmb3JtOyB9CiAgICAgdmlydHVhbCB2
b2lkIHNldFRyYW5zZm9ybShjb25zdCBXZWJDb3JlOjpUcmFuc2Zvcm1hdGlvbk1hdHJpeCYpIG92
ZXJyaWRlOwogCiAgICAgdm9pZCB1cGRhdGVMYXllckhvc3RpbmdDb250ZXh0KCk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>226921</attachid>
            <date>2014-03-17 08:16:11 -0700</date>
            <delta_ts>2014-03-17 10:41:07 -0700</delta_ts>
            <desc>rebase</desc>
            <filename>thumbnail-snapshots.diff</filename>
            <type>text/plain</type>
            <size>17510</size>
            <attacher name="Tim Horton">thorton</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBkMWM3MzQwLi45NjEzNDI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMg
QEAKKzIwMTQtMDMtMTcgIFRpbSBIb3J0b24gIDx0aW1vdGh5X2hvcnRvbkBhcHBsZS5jb20+CisK
KyAgICAgICAgV0tUaHVtYm5haWxWaWV3IHNob3VsZCBzdXBwb3J0IHNuYXBzaG90cworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTMwMzM1CisgICAgICAg
IDxyZGFyOi8vcHJvYmxlbS8xNjI1NTEzOT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICAqIFdlYkNvcmUuZXhwLmluOgorCiAyMDE0LTAzLTE3ICBaYW4g
RG9iZXJzZWsgIDx6ZG9iZXJzZWtAaWdhbGlhLmNvbT4KIAogICAgICAgICBFeHBsaWNpdGx5IGlu
Y2x1ZGUgY3N0ZGlvIGhlYWRlciBmb3IgZGVidWcgYnVpbGRzIGluIElubGluZVRleHRCb3gsIFJl
bmRlckxheWVyLCBSZW5kZXJPYmplY3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUuZXhwLmluIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KaW5kZXggODliNGE0NC4u
NzBlMDI4MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KKysrIGIv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KQEAgLTE3MzAsNiArMTczMCw4IEBAIF9fWk5L
N1dlYkNvcmUyMFJlc291cmNlUmVzcG9uc2VCYXNlMjFleHBlY3RlZENvbnRlbnRMZW5ndGhFdgog
X19aTks3V2ViQ29yZTIwUmVzb3VyY2VSZXNwb25zZUJhc2UzdXJsRXYKIF9fWk5LN1dlYkNvcmUy
MFJlc291cmNlUmVzcG9uc2VCYXNlNmlzSFRUUEV2CiBfX1pOSzdXZWJDb3JlMjBSZXNvdXJjZVJl
c3BvbnNlQmFzZThtaW1lVHlwZUV2CitfX1pOSzdXZWJDb3JlMjBUcmFuc2Zvcm1hdGlvbk1hdHJp
eDdpbnZlcnNlRXYKK19fWk5LN1dlYkNvcmUyMFRyYW5zZm9ybWF0aW9uTWF0cml4N21hcFJlY3RF
UktOU183SW50UmVjdEUKIF9fWk5LN1dlYkNvcmUyMFRyYW5zZm9ybWF0aW9uTWF0cml4Y3YxM0NB
VHJhbnNmb3JtM0RFdgogX19aTks3V2ViQ29yZTIxQmFja0ZvcndhcmRDb250cm9sbGVyMTJmb3J3
YXJkQ291bnRFdgogX19aTks3V2ViQ29yZTIxQmFja0ZvcndhcmRDb250cm9sbGVyMThjYW5Hb0Jh
Y2tPckZvcndhcmRFaQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291
cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IDBiNjMxZDIuLjgxODQ3MmYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cK
QEAgLTEsMyArMSw2OCBAQAorMjAxNC0wMy0xNyAgVGltIEhvcnRvbiAgPHRpbW90aHlfaG9ydG9u
QGFwcGxlLmNvbT4KKworICAgICAgICBXS1RodW1ibmFpbFZpZXcgc2hvdWxkIHN1cHBvcnQgc25h
cHNob3RzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
MzAzMzUKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzE2MjU1MTM5PgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9X
S1RodW1ibmFpbFZpZXcuaDoKKyAgICAgICAgQWRkIGEgcHJvcGVydHksIHVzZVNuYXBzaG90LCB3
aGljaCBkZXRlcm1pbmVzIHdoZXRoZXIgdGhlIHRodW1ibmFpbCB2aWV3CisgICAgICAgIHNob3Vs
ZCB1c2UgdGhlIGxpdmUgbGF5ZXIgdHJlZSBvciBhIHNuYXBzaG90IG9mIHRoZSBjb250ZW50Lgor
CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1RodW1ibmFpbFZpZXcubW06CisgICAg
ICAgICgtW1dLVGh1bWJuYWlsVmlldyBpbml0V2l0aEZyYW1lOmZyb21XS1ZpZXc6XSk6CisgICAg
ICAgICgtW1dLVGh1bWJuYWlsVmlldyBfdmlld1dhc1VucGFyZW50ZWRdKToKKyAgICAgICAgQ2xl
YXIgdGhlIHNuYXBzaG90IHdoZW4gdW5wYXJlbnRlZC4KKworICAgICAgICAoLVtXS1RodW1ibmFp
bFZpZXcgX3ZpZXdXYXNQYXJlbnRlZF0pOgorICAgICAgICBUYWtlIGEgc25hcHNob3Qgb2YgdGhl
IHdlYiBjb250ZW50IHdoZW4gcGFyZW50ZWQsIGlmIG5lZWRlZC4KKworICAgICAgICAoLVtXS1Ro
dW1ibmFpbFZpZXcgX3JlcXVlc3RTbmFwc2hvdElmTmVlZGVkXSk6CisgICAgICAgIElmIHdlJ3Jl
IHVzaW5nIHNuYXBzaG90cywgYW5kIGhhdmVuJ3QgYWxyZWFkeSBkaXNwYXRjaGVkIGEgYXN5bmMg
c25hcHNob3QgcmVxdWVzdCwKKyAgICAgICAgYW5kIGRvbid0IGFscmVhZHkgaGF2ZSBhIHNuYXBz
aG90LCByZXF1ZXN0IGEgc25hcHNob3QgZnJvbSB0aGUgd2ViIHByb2Nlc3MuCisKKyAgICAgICAg
V2hlbiBpdCByZXR1cm5zLCB1c2UgaXQgYXMgdGhlIGNvbnRlbnRzIG9mIHRoZSBXS1RodW1ibmFp
bFZpZXcgbGF5ZXIsIGFuZAorICAgICAgICB1bnBhcmVudCB0aGUgbGl2ZSBsYXllciB0cmVlLgor
CisgICAgICAgICgtW1dLVGh1bWJuYWlsVmlldyBzZXRTY2FsZTpdKToKKyAgICAgICAgKC1bV0tU
aHVtYm5haWxWaWV3IHNldFVzZVNuYXBzaG90Ol0pOgorICAgICAgICAoLVtXS1RodW1ibmFpbFZp
ZXcgX3NldFRodW1ibmFpbExheWVyOl0pOgorICAgICAgICAoLVtXS1RodW1ibmFpbFZpZXcgX3Ro
dW1ibmFpbExheWVyXSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1RodW1ibmFp
bFZpZXdJbnRlcm5hbC5oOgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9tYWMvV0tWaWV3Lm1t
OgorICAgICAgICAoLVtXS1ZpZXcgX3NldEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdNb2RlUm9vdExh
eWVyOl0pOgorICAgICAgICAoLVtXS1ZpZXcgX2FjY2VsZXJhdGVkQ29tcG9zaXRpbmdNb2RlUm9v
dExheWVyXSk6CisgICAgICAgIFdLVmlldyBzaG91bGQgYWx3YXlzIGtlZXAgdHJhY2sgb2YgdGhl
IGN1cnJlbnQgcm9vdCBsYXllciwgaW5zdGVhZCBvZiB0b3RhbGx5CisgICAgICAgIGhhbmRpbmcg
Y29udHJvbCBvdmVyIHRvIFdLVGh1bWJuYWlsVmlldyB3aGVuIGl0IGlzIHVzZWQuCisKKyAgICAg
ICAgKC1bV0tWaWV3IF9zZXRUaHVtYm5haWxWaWV3Ol0pOgorICAgICAgICAoLVtXS1ZpZXcgX3Vw
ZGF0ZVRodW1ibmFpbFZpZXdMYXllcl0pOgorICAgICAgICAoLVtXS1ZpZXcgX3JlcGFyZW50TGF5
ZXJUcmVlSW5UaHVtYm5haWxWaWV3XSk6CisgICAgICAgIElmIG5lZWRlZCAoZWl0aGVyIHdlJ3Jl
IG5vdCB1c2luZyBzbmFwc2hvdHMsIG9yIHN0aWxsIHdhaXRpbmcgZm9yIHRoZSBzbmFwc2hvdCB0
byBiZSBwYWludGVkKSwKKyAgICAgICAgcHVzaCB0aGUgV0tWaWV3J3MgbGl2ZSBsYXllciB0cmVl
IGludG8gdGhlIHRodW1ibmFpbCB2aWV3LgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9tYWMv
V0tWaWV3SW50ZXJuYWwuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoK
KyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjppbnRlcm5hbFNob3dDb250ZXh0TWVudSk6
CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oOgorICAgICAgICAqIFdlYlByb2Nl
c3MvV2ViUGFnZS9XZWJQYWdlLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBh
Z2UubWVzc2FnZXMuaW46CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjp0YWtlVGh1bWJuYWlsU25hcHNob3QpOgorICAg
ICAgICBBZGQgYSBtZXNzYWdlIHRoYXQgYXN5bmNocm9ub3VzbHkgcmV0dXJucyBhIHNuYXBzaG90
IHRoYXQgcmVzcGVjdHMgdGhlCisgICAgICAgIGN1cnJlbnQgdGh1bWJuYWlsIHNjYWxlIGFuZCBw
b3NpdGlvbi4KKworICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpzY2FsZWRTbmFwc2hvdFdpdGhP
cHRpb25zKToKKyAgICAgICAgVXNlIHNvbWUgbnVsbHB0ci4KKworICAgICAgICAqIFdlYlByb2Nl
c3MvV2ViUGFnZS9EcmF3aW5nQXJlYS5jcHA6CisgICAgICAgIChXZWJLaXQ6OkRyYXdpbmdBcmVh
Ojp0cmFuc2Zvcm0pOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9EcmF3aW5nQXJlYS5o
OgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9tYWMvVGlsZWRDb3JlQW5pbWF0aW9uRHJh
d2luZ0FyZWEuaDoKKyAgICAgICAgQWRkIGEgZ2V0dGVyIGZvciB0aGUgRHJhd2luZ0FyZWEncyB0
cmFuc2Zvcm0uCisKIDIwMTQtMDMtMTcgIFJ5dWFuIENob2kgIDxyeXVhbi5jaG9pQHNhbXN1bmcu
Y29tPgogCiAgICAgICAgIFtFRkxdW1dLMl0gUmVzdG9yZSBjdXJzb3Igd2hlbiBtb3ZpbmcgbW91
c2UgaW50byB3ZWJ2aWV3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L0NvY29hL1dLVGh1bWJuYWlsVmlldy5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9D
b2NvYS9XS1RodW1ibmFpbFZpZXcuaAppbmRleCBhNzVjN2Q4Li5mNTU2MzE5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLVGh1bWJuYWlsVmlldy5oCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tUaHVtYm5haWxWaWV3LmgK
QEAgLTM5LDYgKzM5LDcgQEAgV0tfQVBJX0NMQVNTCiAtIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhG
cmFtZTooTlNSZWN0KWZyYW1lIGZyb21XS1ZpZXc6KFdLVmlldyAqKXdrVmlldzsKIAogQHByb3Bl
cnR5IChub25hdG9taWMpIENHRmxvYXQgc2NhbGU7CitAcHJvcGVydHkgKG5vbmF0b21pYykgQk9P
TCB1c2VTbmFwc2hvdDsKIAogQGVuZAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL0NvY29hL1dLVGh1bWJuYWlsVmlldy5tbSBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvQ29jb2EvV0tUaHVtYm5haWxWaWV3Lm1tCmluZGV4IDZlODVkYWEuLmFkOWM4ZWUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tUaHVtYm5h
aWxWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tUaHVt
Ym5haWxWaWV3Lm1tCkBAIC01NCw2ICs1NCw4IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CiAg
ICAgQk9PTCBfc2hvdWxkQXBwbHlUaHVtYm5haWxTY2FsZTsKIH0KIAorQHN5bnRoZXNpemUgX3Bl
bmRpbmdTbmFwc2hvdCA9IF9wZW5kaW5nU25hcHNob3Q7CisKIC0gKGluc3RhbmNldHlwZSlpbml0
V2l0aEZyYW1lOihOU1JlY3QpZnJhbWUgZnJvbVdLVmlldzooV0tWaWV3ICopd2tWaWV3CiB7CiAg
ICAgaWYgKCEoc2VsZiA9IFtzdXBlciBpbml0V2l0aEZyYW1lOmZyYW1lXSkpCkBAIC03Niw2ICs3
OCw5IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CiAgICAgICAgIF93ZWJQYWdlUHJveHktPnNl
dFRodW1ibmFpbFNjYWxlKDEpOwogCiAgICAgW193a1ZpZXcgX3NldFRodW1ibmFpbFZpZXc6bmls
XTsKKworICAgIHNlbGYubGF5ZXIuY29udGVudHMgPSBuaWw7CisKICAgICBfd2ViUGFnZVByb3h5
LT5zZXRNYXlTdGFydE1lZGlhV2hlbkluV2luZG93KF9vcmlnaW5hbE1heVN0YXJ0TWVkaWFXaGVu
SW5XaW5kb3cpOwogfQogCkBAIC05MCw5ICs5NSwyOCBAQCB1c2luZyBuYW1lc3BhY2UgV2ViS2l0
OwogICAgIGlmICghX29yaWdpbmFsU291cmNlVmlld0lzSW5XaW5kb3cpCiAgICAgICAgIF93ZWJQ
YWdlUHJveHktPnNldE1heVN0YXJ0TWVkaWFXaGVuSW5XaW5kb3coZmFsc2UpOwogCisgICAgW3Nl
bGYgX3JlcXVlc3RTbmFwc2hvdElmTmVlZGVkXTsKICAgICBbX3drVmlldyBfc2V0VGh1bWJuYWls
VmlldzpzZWxmXTsKIH0KIAorLSAodm9pZClfcmVxdWVzdFNuYXBzaG90SWZOZWVkZWQKK3sKKyAg
ICBpZiAoIV91c2VTbmFwc2hvdCB8fCBfcGVuZGluZ1NuYXBzaG90IHx8IHNlbGYubGF5ZXIuY29u
dGVudHMpCisgICAgICAgIHJldHVybjsKKworICAgIF9wZW5kaW5nU25hcHNob3QgPSBZRVM7CisK
KyAgICBSZXRhaW5QdHI8V0tUaHVtYm5haWxWaWV3PiB0aHVtYm5haWxWaWV3ID0gc2VsZjsKKyAg
ICBfd2ViUGFnZVByb3h5LT50YWtlVGh1bWJuYWlsU25hcHNob3QoW3RodW1ibmFpbFZpZXddKGJv
b2wsIGNvbnN0IFNoYXJlYWJsZUJpdG1hcDo6SGFuZGxlJiBpbWFnZUhhbmRsZSkgeworICAgICAg
ICBSZWZQdHI8U2hhcmVhYmxlQml0bWFwPiBiaXRtYXAgPSBTaGFyZWFibGVCaXRtYXA6OmNyZWF0
ZShpbWFnZUhhbmRsZSwgU2hhcmVkTWVtb3J5OjpSZWFkT25seSk7CisgICAgICAgIFJldGFpblB0
cjxDR0ltYWdlUmVmPiBjZ0ltYWdlID0gYml0bWFwLT5tYWtlQ0dJbWFnZSgpOworCisgICAgICAg
IFt0aHVtYm5haWxWaWV3IF9zZXRQZW5kaW5nU25hcHNob3Q6Tk9dOworICAgICAgICBbW3RodW1i
bmFpbFZpZXcgbGF5ZXJdIHNldFN1YmxheWVyczpAWyBdXTsKKyAgICAgICAgW1t0aHVtYm5haWxW
aWV3IGxheWVyXSBzZXRDb250ZW50czooaWQpY2dJbWFnZS5nZXQoKV07CisgICAgfSk7Cit9CisK
IC0gKHZvaWQpdmlld0RpZE1vdmVUb1dpbmRvdwogewogICAgIGlmIChzZWxmLndpbmRvdykKQEAg
LTEwMywxOCArMTI3LDM3IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CiAKIC0gKHZvaWQpc2V0
U2NhbGU6KENHRmxvYXQpc2NhbGUKIHsKKyAgICBpZiAoX3NjYWxlID09IHNjYWxlKQorICAgICAg
ICByZXR1cm47CisKICAgICBfc2NhbGUgPSBzY2FsZTsKIAogICAgIGlmIChzZWxmLndpbmRvdyAm
JiBfc2hvdWxkQXBwbHlUaHVtYm5haWxTY2FsZSkKICAgICAgICAgX3dlYlBhZ2VQcm94eS0+c2V0
VGh1bWJuYWlsU2NhbGUoX3NjYWxlKTsKIH0KIAotLSAodm9pZClzZXRUaHVtYm5haWxMYXllcjoo
Q0FMYXllciAqKWxheWVyCistICh2b2lkKXNldFVzZVNuYXBzaG90OihCT09MKXVzZVNuYXBzaG90
Cit7CisgICAgaWYgKF91c2VTbmFwc2hvdCA9PSB1c2VTbmFwc2hvdCkKKyAgICAgICAgcmV0dXJu
OworCisgICAgX3VzZVNuYXBzaG90ID0gdXNlU25hcHNob3Q7CisKKyAgICBpZiAoIXNlbGYud2lu
ZG93KQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAodXNlU25hcHNob3QpCisgICAgICAgIFtz
ZWxmIF9yZXF1ZXN0U25hcHNob3RJZk5lZWRlZF07CisgICAgZWxzZQorICAgICAgICBbX3drVmll
dyBfcmVwYXJlbnRMYXllclRyZWVJblRodW1ibmFpbFZpZXddOworfQorCistICh2b2lkKV9zZXRU
aHVtYm5haWxMYXllcjooQ0FMYXllciAqKWxheWVyCiB7CiAgICAgc2VsZi5sYXllci5zdWJsYXll
cnMgPSBsYXllciA/IEBbIGxheWVyIF0gOiBAWyBdOwogfQogCi0tIChDQUxheWVyICopdGh1bWJu
YWlsTGF5ZXIKKy0gKENBTGF5ZXIgKilfdGh1bWJuYWlsTGF5ZXIKIHsKICAgICBpZiAoIXNlbGYu
bGF5ZXIuc3VibGF5ZXJzLmNvdW50KQogICAgICAgICByZXR1cm4gbmlsOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1RodW1ibmFpbFZpZXdJbnRlcm5h
bC5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1RodW1ibmFpbFZpZXdJ
bnRlcm5hbC5oCmluZGV4IGY0ZWVhMDAuLjVjYzg3YmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tUaHVtYm5haWxWaWV3SW50ZXJuYWwuaAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLVGh1bWJuYWlsVmlld0ludGVybmFs
LmgKQEAgLTMxLDcgKzMxLDggQEAKIAogQGludGVyZmFjZSBXS1RodW1ibmFpbFZpZXcgKCkKIAot
QHByb3BlcnR5IChub25hdG9taWMsIGFzc2lnbikgQ0FMYXllciAqdGh1bWJuYWlsTGF5ZXI7CitA
cHJvcGVydHkgKG5vbmF0b21pYywgYXNzaWduLCBzZXR0ZXIgPSBfc2V0VGh1bWJuYWlsTGF5ZXI6
KSBDQUxheWVyICpfdGh1bWJuYWlsTGF5ZXI7CitAcHJvcGVydHkgKG5vbmF0b21pYywgYXNzaWdu
LCBzZXR0ZXIgPSBfc2V0UGVuZGluZ1NuYXBzaG90OikgQk9PTCBfcGVuZGluZ1NuYXBzaG90Owog
CiBAZW5kCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvbWFjL1dL
Vmlldy5tbSBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvbWFjL1dLVmlldy5tbQppbmRl
eCA2OWE3OTJhLi5iMDY1YmZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL21hYy9XS1ZpZXcubW0KKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9tYWMv
V0tWaWV3Lm1tCkBAIC0yMjUsNiArMjI1LDggQEAgc3RydWN0IFdLVmlld0ludGVycHJldEtleUV2
ZW50c1BhcmFtZXRlcnMgewogICAgIEJPT0wgX2FsbG93c01hZ25pZmljYXRpb247CiAgICAgQk9P
TCBfYWxsb3dzQmFja0ZvcndhcmROYXZpZ2F0aW9uR2VzdHVyZXM7CiAKKyAgICBSZXRhaW5QdHI8
Q0FMYXllcj4gX2N1cnJlbnRSb290TGF5ZXI7CisKICNpZiBXS19BUElfRU5BQkxFRAogICAgIFdL
VGh1bWJuYWlsVmlldyAqX3RodW1ibmFpbFZpZXc7CiAjZW5kaWYKQEAgLTI0OTgsOSArMjUwMCwx
MSBAQCBzdGF0aWMgdm9pZCBjcmVhdGVTYW5kYm94RXh0ZW5zaW9uc0ZvckZpbGVVcGxvYWQoTlNQ
YXN0ZWJvYXJkICpwYXN0ZWJvYXJkLCBTYW5kYgogewogICAgIFtyb290TGF5ZXIgd2ViX2Rpc2Fi
bGVBbGxBY3Rpb25zXTsKIAorICAgIF9kYXRhLT5fY3VycmVudFJvb3RMYXllciA9IHJvb3RMYXll
cjsKKwogI2lmIFdLX0FQSV9FTkFCTEVECiAgICAgaWYgKF9kYXRhLT5fdGh1bWJuYWlsVmlldykg
ewotICAgICAgICBfZGF0YS0+X3RodW1ibmFpbFZpZXcudGh1bWJuYWlsTGF5ZXIgPSByb290TGF5
ZXI7CisgICAgICAgIFtzZWxmIF91cGRhdGVUaHVtYm5haWxWaWV3TGF5ZXJdOwogICAgICAgICBy
ZXR1cm47CiAgICAgfQogI2VuZGlmCkBAIC0yNTQ0LDE1ICsyNTQ4LDcgQEAgc3RhdGljIHZvaWQg
Y3JlYXRlU2FuZGJveEV4dGVuc2lvbnNGb3JGaWxlVXBsb2FkKE5TUGFzdGVib2FyZCAqcGFzdGVi
b2FyZCwgU2FuZGIKIAogLSAoQ0FMYXllciAqKV9hY2NlbGVyYXRlZENvbXBvc2l0aW5nTW9kZVJv
b3RMYXllcgogewotICAgIE5TVmlldyAqaG9zdFZpZXcgPSBfZGF0YS0+X2xheWVySG9zdGluZ1Zp
ZXcuZ2V0KCk7Ci0KLSAgICBpZiAoIWhvc3RWaWV3KQotICAgICAgICByZXR1cm4gbnVsbHB0cjsK
LQotICAgIGlmICghaG9zdFZpZXcubGF5ZXIuc3VibGF5ZXJzLmNvdW50KQotICAgICAgICByZXR1
cm4gbnVsbHB0cjsKLQotICAgIHJldHVybiBbaG9zdFZpZXcubGF5ZXIuc3VibGF5ZXJzIG9iamVj
dEF0SW5kZXg6MF07CisgICAgcmV0dXJuIF9kYXRhLT5fY3VycmVudFJvb3RMYXllci5nZXQoKTsK
IH0KIAogLSAoUmV0YWluUHRyPENHSW1hZ2VSZWY+KV90YWtlVmlld1NuYXBzaG90CkBAIC0yOTc0
LDE0ICsyOTcwLDEyIEBAIHN0YXRpYyBOU1N0cmluZyAqcGF0aFdpdGhVbmlxdWVGaWxlbmFtZUZv
clBhdGgoTlNTdHJpbmcgKnBhdGgpCiB7CiAgICAgQVNTRVJUKCFfZGF0YS0+X3RodW1ibmFpbFZp
ZXcgfHwgIXRodW1ibmFpbFZpZXcpOwogCi0gICAgUmV0YWluUHRyPENBTGF5ZXI+IHRodW1ibmFp
bExheWVyID0gX2RhdGEtPl90aHVtYm5haWxWaWV3LnRodW1ibmFpbExheWVyOwotCiAgICAgX2Rh
dGEtPl90aHVtYm5haWxWaWV3ID0gdGh1bWJuYWlsVmlldzsKIAogICAgIGlmICh0aHVtYm5haWxW
aWV3KQotICAgICAgICB0aHVtYm5haWxWaWV3LnRodW1ibmFpbExheWVyID0gW3NlbGYgX2FjY2Vs
ZXJhdGVkQ29tcG9zaXRpbmdNb2RlUm9vdExheWVyXTsKKyAgICAgICAgW3NlbGYgX3VwZGF0ZVRo
dW1ibmFpbFZpZXdMYXllcl07CiAgICAgZWxzZQotICAgICAgICBbc2VsZiBfc2V0QWNjZWxlcmF0
ZWRDb21wb3NpdGluZ01vZGVSb290TGF5ZXI6dGh1bWJuYWlsTGF5ZXIuZ2V0KCldOworICAgICAg
ICBbc2VsZiBfc2V0QWNjZWxlcmF0ZWRDb21wb3NpdGluZ01vZGVSb290TGF5ZXI6X2RhdGEtPl9j
dXJyZW50Um9vdExheWVyLmdldCgpXTsKIAogICAgIF9kYXRhLT5fcGFnZS0+dmlld1N0YXRlRGlk
Q2hhbmdlKFZpZXdTdGF0ZTo6V2luZG93SXNBY3RpdmUgfCBWaWV3U3RhdGU6OklzSW5XaW5kb3cg
fCBWaWV3U3RhdGU6OklzVmlzaWJsZSk7CiB9CkBAIC0yOTkwLDYgKzI5ODQsMjAgQEAgc3RhdGlj
IE5TU3RyaW5nICpwYXRoV2l0aFVuaXF1ZUZpbGVuYW1lRm9yUGF0aChOU1N0cmluZyAqcGF0aCkK
IHsKICAgICByZXR1cm4gX2RhdGEtPl90aHVtYm5haWxWaWV3OwogfQorCistICh2b2lkKV91cGRh
dGVUaHVtYm5haWxWaWV3TGF5ZXIKK3sKKyAgICBXS1RodW1ibmFpbFZpZXcgKnRodW1ibmFpbFZp
ZXcgPSBfZGF0YS0+X3RodW1ibmFpbFZpZXc7CisgICAgQVNTRVJUKHRodW1ibmFpbFZpZXcpOwor
CisgICAgaWYgKCF0aHVtYm5haWxWaWV3LnVzZVNuYXBzaG90IHx8IHRodW1ibmFpbFZpZXcuX3Bl
bmRpbmdTbmFwc2hvdCkKKyAgICAgICAgW3NlbGYgX3JlcGFyZW50TGF5ZXJUcmVlSW5UaHVtYm5h
aWxWaWV3XTsKK30KKworLSAodm9pZClfcmVwYXJlbnRMYXllclRyZWVJblRodW1ibmFpbFZpZXcK
K3sKKyAgICBfZGF0YS0+X3RodW1ibmFpbFZpZXcuX3RodW1ibmFpbExheWVyID0gX2RhdGEtPl9j
dXJyZW50Um9vdExheWVyLmdldCgpOworfQogI2VuZGlmIC8vIFdLX0FQSV9FTkFCTEVECiAKIEBl
bmQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvbWFjL1dLVmlld0lu
dGVybmFsLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL21hYy9XS1ZpZXdJbnRlcm5h
bC5oCmluZGV4IGFiZDI1YzAuLjRjMTVlODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvbWFjL1dLVmlld0ludGVybmFsLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9tYWMvV0tWaWV3SW50ZXJuYWwuaApAQCAtMTA5LDYgKzEwOSw3IEBAIHN0cnVj
dCBXZWJQYWdlQ29uZmlndXJhdGlvbjsKIAogI2lmIFdLX0FQSV9FTkFCTEVECiBAcHJvcGVydHkg
KG5vbmF0b21pYywgc2V0dGVyPV9zZXRUaHVtYm5haWxWaWV3OikgV0tUaHVtYm5haWxWaWV3ICpf
dGh1bWJuYWlsVmlldzsKKy0gKHZvaWQpX3JlcGFyZW50TGF5ZXJUcmVlSW5UaHVtYm5haWxWaWV3
OwogI2VuZGlmCiAKIC8vIEZ1bGxTY3JlZW4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBh
Z2VQcm94eS5jcHAKaW5kZXggOGQ2YjJmMS4uZjAzYWNmZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKQEAgLTQ1NjcsNCArNDU2NywxNyBAQCB2b2lkIFdlYlBh
Z2VQcm94eTo6YWRkTUlNRVR5cGVXaXRoQ3VzdG9tQ29udGVudFByb3ZpZGVyKGNvbnN0IFN0cmlu
ZyYgbWltZVR5cGUpCiAgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpBZGRN
SU1FVHlwZVdpdGhDdXN0b21Db250ZW50UHJvdmlkZXIobWltZVR5cGUpLCBtX3BhZ2VJRCk7CiB9
CiAKK3ZvaWQgV2ViUGFnZVByb3h5Ojp0YWtlVGh1bWJuYWlsU25hcHNob3QoSW1hZ2VDYWxsYmFj
azo6Q2FsbGJhY2tGdW5jdGlvbiBjYWxsYmFja0Z1bmN0aW9uKQoreworICAgIGlmICghaXNWYWxp
ZCgpKQorICAgICAgICByZXR1cm47CisKKyAgICBSZWZQdHI8SW1hZ2VDYWxsYmFjaz4gY2FsbGJh
Y2sgPSBJbWFnZUNhbGxiYWNrOjpjcmVhdGUoY2FsbGJhY2tGdW5jdGlvbik7CisKKyAgICB1aW50
NjRfdCBjYWxsYmFja0lEID0gY2FsbGJhY2stPmNhbGxiYWNrSUQoKTsKKyAgICBtX2ltYWdlQ2Fs
bGJhY2tzLnNldChjYWxsYmFja0lELCBjYWxsYmFjay5nZXQoKSk7CisKKyAgICBtX3Byb2Nlc3Mt
PnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlRha2VUaHVtYm5haWxTbmFwc2hvdChjYWxsYmFja0lE
KSwgbV9wYWdlSUQpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9XZWJQYWdlUHJveHkuaAppbmRleCA4MmExMjVhLi4zYjg5MTJmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKKysrIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCkBAIC05MTcsNiArOTE3LDggQEAgcHVibGlj
OgogCiAgICAgdm9pZCBzZXRUaHVtYm5haWxTY2FsZShkb3VibGUpOwogCisgICAgdm9pZCB0YWtl
VGh1bWJuYWlsU25hcHNob3QoSW1hZ2VDYWxsYmFjazo6Q2FsbGJhY2tGdW5jdGlvbik7CisKIHBy
aXZhdGU6CiAgICAgV2ViUGFnZVByb3h5KFBhZ2VDbGllbnQmLCBXZWJQcm9jZXNzUHJveHkmLCB1
aW50NjRfdCBwYWdlSUQsIGNvbnN0IFdlYlBhZ2VDb25maWd1cmF0aW9uJik7CiAgICAgdm9pZCBw
bGF0Zm9ybUluaXRpYWxpemUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViUGFnZS9EcmF3aW5nQXJlYS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YlBhZ2UvRHJhd2luZ0FyZWEuY3BwCmluZGV4IDMyZWNiMDAuLmNhNTA2ZDMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9EcmF3aW5nQXJlYS5jcHAKKysrIGIv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0RyYXdpbmdBcmVhLmNwcApAQCAtMjUs
NiArMjUsNyBAQAogCiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiRHJhd2luZ0FyZWEu
aCIKKyNpbmNsdWRlIDxXZWJDb3JlL1RyYW5zZm9ybWF0aW9uTWF0cml4Lmg+CiAjaW5jbHVkZSA8
d3RmL0Z1bmN0aW9uYWwuaD4KIAogLy8gU3ViY2xhc3NlcwpAQCAtNDEsNiArNDIsOCBAQAogCiAj
aW5jbHVkZSAiV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5oIgogCit1c2luZyBuYW1lc3BhY2Ug
V2ViQ29yZTsKKwogbmFtZXNwYWNlIFdlYktpdCB7CiAKIHN0ZDo6dW5pcXVlX3B0cjxEcmF3aW5n
QXJlYT4gRHJhd2luZ0FyZWE6OmNyZWF0ZShXZWJQYWdlKiB3ZWJQYWdlLCBjb25zdCBXZWJQYWdl
Q3JlYXRpb25QYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzKQpAQCAtODMsNCArODYsOSBAQCB2b2lkIERy
YXdpbmdBcmVhOjpkaXNwYXRjaEFmdGVyRW5zdXJpbmdVcGRhdGVkU2Nyb2xsUG9zaXRpb24oc3Rk
OjpmdW5jdGlvbjx2b2lkCiAgICAgZnVuY3Rpb24oKTsKIH0KIAorVHJhbnNmb3JtYXRpb25NYXRy
aXggRHJhd2luZ0FyZWE6OnRyYW5zZm9ybSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIFRyYW5zZm9y
bWF0aW9uTWF0cml4KCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0RyYXdpbmdBcmVhLmggYi9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvRHJhd2luZ0FyZWEuaAppbmRleCBlN2MzZDFiLi5l
YmMwOTY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvRHJh
d2luZ0FyZWEuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvRHJhd2lu
Z0FyZWEuaApAQCAtMTA3LDYgKzEwNyw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgc2V0
Um9vdENvbXBvc2l0aW5nTGF5ZXIoV2ViQ29yZTo6R3JhcGhpY3NMYXllciopID0gMDsKICAgICB2
aXJ0dWFsIHZvaWQgc2NoZWR1bGVDb21wb3NpdGluZ0xheWVyRmx1c2goKSA9IDA7CiAKKyAgICB2
aXJ0dWFsIFdlYkNvcmU6OlRyYW5zZm9ybWF0aW9uTWF0cml4IHRyYW5zZm9ybSgpIGNvbnN0Owog
ICAgIHZpcnR1YWwgdm9pZCBzZXRUcmFuc2Zvcm0oY29uc3QgV2ViQ29yZTo6VHJhbnNmb3JtYXRp
b25NYXRyaXgmKSB7IH0KIAogI2lmIFVTRShDT09SRElOQVRFRF9HUkFQSElDUykKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcCBiL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAppbmRleCAxMTllMmViLi5m
YjFmNTY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2Uu
Y3BwCkBAIC0xNTEzLDE1ICsxNTEzLDI5IEBAIHZvaWQgV2ViUGFnZTo6c2hvd1BhZ2VCYW5uZXJz
KCkKIH0KICNlbmRpZiAvLyAhUExBVEZPUk0oSU9TKQogCit2b2lkIFdlYlBhZ2U6OnRha2VUaHVt
Ym5haWxTbmFwc2hvdCh1aW50NjRfdCBjYWxsYmFja0lEKQoreworICAgIEludFJlY3Qgc25hcHNo
b3RSZWN0KEludFBvaW50KCksIG1fdmlld1NpemUpOworICAgIHNuYXBzaG90UmVjdCA9IG1fZHJh
d2luZ0FyZWEtPnRyYW5zZm9ybSgpLmludmVyc2UoKS5tYXBSZWN0KHNuYXBzaG90UmVjdCk7CisK
KyAgICBSZWZQdHI8V2ViSW1hZ2U+IGltYWdlID0gc2NhbGVkU25hcHNob3RXaXRoT3B0aW9ucyhz
bmFwc2hvdFJlY3QsIDEsIFNuYXBzaG90T3B0aW9uc1NoYXJlYWJsZSB8IFNuYXBzaG90T3B0aW9u
c0luVmlld0Nvb3JkaW5hdGVzKTsKKworICAgIFNoYXJlYWJsZUJpdG1hcDo6SGFuZGxlIGhhbmRs
ZTsKKyAgICBpZiAoaW1hZ2UpCisgICAgICAgIGltYWdlLT5iaXRtYXAoKS0+Y3JlYXRlSGFuZGxl
KGhhbmRsZSwgU2hhcmVkTWVtb3J5OjpSZWFkT25seSk7CisKKyAgICBzZW5kKE1lc3NhZ2VzOjpX
ZWJQYWdlUHJveHk6OkltYWdlQ2FsbGJhY2soaGFuZGxlLCBjYWxsYmFja0lEKSk7Cit9CisKIFBh
c3NSZWZQdHI8V2ViSW1hZ2U+IFdlYlBhZ2U6OnNjYWxlZFNuYXBzaG90V2l0aE9wdGlvbnMoY29u
c3QgSW50UmVjdCYgcmVjdCwgZG91YmxlIHNjYWxlRmFjdG9yLCBTbmFwc2hvdE9wdGlvbnMgb3B0
aW9ucykKIHsKICAgICBGcmFtZSogY29yZUZyYW1lID0gbV9tYWluRnJhbWUtPmNvcmVGcmFtZSgp
OwogICAgIGlmICghY29yZUZyYW1lKQotICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJu
IG51bGxwdHI7CiAKICAgICBGcmFtZVZpZXcqIGZyYW1lVmlldyA9IGNvcmVGcmFtZS0+dmlldygp
OwogICAgIGlmICghZnJhbWVWaWV3KQotICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJu
IG51bGxwdHI7CiAKICAgICBJbnRTaXplIGJpdG1hcFNpemUgPSByZWN0LnNpemUoKTsKICAgICBm
bG9hdCBjb21iaW5lZFNjYWxlRmFjdG9yID0gc2NhbGVGYWN0b3IgKiBjb3JlUGFnZSgpLT5kZXZp
Y2VTY2FsZUZhY3RvcigpOwpAQCAtMTUyOSw3ICsxNTQzLDcgQEAgUGFzc1JlZlB0cjxXZWJJbWFn
ZT4gV2ViUGFnZTo6c2NhbGVkU25hcHNob3RXaXRoT3B0aW9ucyhjb25zdCBJbnRSZWN0JiByZWN0
LCBkb3UKIAogICAgIFJlZlB0cjxXZWJJbWFnZT4gc25hcHNob3QgPSBXZWJJbWFnZTo6Y3JlYXRl
KGJpdG1hcFNpemUsIHNuYXBzaG90T3B0aW9uc1RvSW1hZ2VPcHRpb25zKG9wdGlvbnMpKTsKICAg
ICBpZiAoIXNuYXBzaG90LT5iaXRtYXAoKSkKLSAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJl
dHVybiBudWxscHRyOwogCiAgICAgYXV0byBncmFwaGljc0NvbnRleHQgPSBzbmFwc2hvdC0+Yml0
bWFwKCktPmNyZWF0ZUdyYXBoaWNzQ29udGV4dCgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAppbmRleCAzYTE4ZTQxLi5iMGQ4MWE5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKQEAgLTg0Niw2ICs4NDYsNyBA
QCBwcml2YXRlOgogICAgIHZvaWQgZ2V0V2ViQXJjaGl2ZU9mRnJhbWUodWludDY0X3QgZnJhbWVJ
RCwgdWludDY0X3QgY2FsbGJhY2tJRCk7CiAgICAgdm9pZCBydW5KYXZhU2NyaXB0SW5NYWluRnJh
bWUoY29uc3QgU3RyaW5nJiwgdWludDY0X3QgY2FsbGJhY2tJRCk7CiAgICAgdm9pZCBmb3JjZVJl
cGFpbnQodWludDY0X3QgY2FsbGJhY2tJRCk7CisgICAgdm9pZCB0YWtlVGh1bWJuYWlsU25hcHNo
b3QodWludDY0X3QgY2FsbGJhY2tJRCk7CiAKICAgICB2b2lkIHByZWZlcmVuY2VzRGlkQ2hhbmdl
KGNvbnN0IFdlYlByZWZlcmVuY2VzU3RvcmUmKTsKICAgICB2b2lkIHBsYXRmb3JtUHJlZmVyZW5j
ZXNEaWRDaGFuZ2UoY29uc3QgV2ViUHJlZmVyZW5jZXNTdG9yZSYpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4gYi9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgppbmRleCA2
MGE1NTVmLi4wOGM2YTQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgpAQCAtMzM2LDUgKzMzNiw3IEBAIG1lc3NhZ2Vz
IC0+IFdlYlBhZ2UgTGVnYWN5UmVjZWl2ZXIgewogICAgIFNldFRodW1ibmFpbFNjYWxlKGRvdWJs
ZSBzY2FsZSkKIAogICAgIEdldEJ5dGVjb2RlUHJvZmlsZSh1aW50NjRfdCBjYWxsYmFja0lEKQor
ICAgIAorICAgIFRha2VUaHVtYm5haWxTbmFwc2hvdCh1aW50NjRfdCBjYWxsYmFja0lEKQogCiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1RpbGVk
Q29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YlBhZ2UvbWFjL1RpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhLmgKaW5kZXggODg0MjFkOC4u
MDZhNmEyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21h
Yy9UaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViUGFnZS9tYWMvVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWEuaApAQCAt
MTEyLDYgKzExMiw3IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIGNvbW1pdFRyYW5zaWVu
dFpvb20oZG91YmxlIHNjYWxlLCBXZWJDb3JlOjpGbG9hdFBvaW50IG9yaWdpbikgb3ZlcnJpZGU7
CiAgICAgdm9pZCBhcHBseVRyYW5zaWVudFpvb21Ub1BhZ2UoZG91YmxlIHNjYWxlLCBXZWJDb3Jl
OjpGbG9hdFBvaW50IG9yaWdpbik7CiAKKyAgICB2aXJ0dWFsIFdlYkNvcmU6OlRyYW5zZm9ybWF0
aW9uTWF0cml4IHRyYW5zZm9ybSgpIGNvbnN0IG92ZXJyaWRlIHsgIHJldHVybiBtX3RyYW5zZm9y
bTsgfQogICAgIHZpcnR1YWwgdm9pZCBzZXRUcmFuc2Zvcm0oY29uc3QgV2ViQ29yZTo6VHJhbnNm
b3JtYXRpb25NYXRyaXgmKSBvdmVycmlkZTsKIAogICAgIHZvaWQgdXBkYXRlTGF5ZXJIb3N0aW5n
Q29udGV4dCgpOwo=
</data>
<flag name="review"
          id="251154"
          type_id="1"
          status="+"
          setter="simon.fraser"
    />
          </attachment>
      

    </bug>

</bugzilla>