<?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>25920</bug_id>
          
          <creation_ts>2009-05-21 02:02:03 -0700</creation_ts>
          <short_desc>Canvas drawImage does not support video</short_desc>
          <delta_ts>2009-06-23 23:21:20 -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>DOM</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>OS X 10.5</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="Dean McNamee">deanm</reporter>
          <assigned_to name="Oliver Hunt">oliver</assigned_to>
          <cc>ajwong</cc>
    
    <cc>arv</cc>
    
    <cc>dino</cc>
    
    <cc>eric</cc>
    
    <cc>oliver</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>sjoerd</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>122297</commentid>
    <comment_count>0</comment_count>
    <who name="Dean McNamee">deanm</who>
    <bug_when>2009-05-21 02:02:03 -0700</bug_when>
    <thetext>According to the HTML5 spec, drawImage() should accept an HTMLVideoElement.

The current set of methods looks like:

        void drawImage(HTMLImageElement*, float x, float y);
        void drawImage(HTMLImageElement*, float x, float y, float width, float height, ExceptionCode&amp;);
        void drawImage(HTMLImageElement*, const FloatRect&amp; srcRect, const FloatRect&amp; dstRect, ExceptionCode&amp;);
        void drawImage(HTMLCanvasElement*, float x, float y);
        void drawImage(HTMLCanvasElement*, float x, float y, float width, float height, ExceptionCode&amp;);
        void drawImage(HTMLCanvasElement*, const FloatRect&amp; srcRect, const FloatRect&amp; dstRect, ExceptionCode&amp;);


It looks like 3 new variants of drawImage should be added for HTMLVideoElement, and then javascript bindings should be updated.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>122831</commentid>
    <comment_count>1</comment_count>
    <who name="Albert J. Wong">ajwong</who>
    <bug_when>2009-05-23 03:13:26 -0700</bug_when>
    <thetext>I started looking into this.  Doesn&apos;t seem too hard (...famous last words...).  The biggest problem is being able to paint part of the current video frame, which the media players don&apos;t yet support.

I&apos;m thinking of either adding a GetCurrentFrame method to the media player, or an additional paint function that can take a clipping parameter.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>122832</commentid>
    <comment_count>2</comment_count>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2009-05-23 03:24:47 -0700</bug_when>
    <thetext>I already have an implementation on mac, we&apos;re just working out design and windows issues</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>123178</commentid>
    <comment_count>3</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2009-05-26 13:22:47 -0700</bug_when>
    <thetext>&lt;rdar://problem/6164797&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>127461</commentid>
    <comment_count>4</comment_count>
    <who name="Albert J. Wong">ajwong</who>
    <bug_when>2009-06-22 15:06:18 -0700</bug_when>
    <thetext>Hello,

Has there been any update on this issue?  We&apos;ve itching to play around with videos on canvases :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>127466</commentid>
    <comment_count>5</comment_count>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2009-06-22 15:20:46 -0700</bug_when>
    <thetext>I&apos;ll be looking at this again once i&apos;ve finished my current work with JSON</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>127821</commentid>
    <comment_count>6</comment_count>
      <attachid>31769</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2009-06-23 23:05:23 -0700</bug_when>
    <thetext>Created attachment 31769
Video-&gt;Canvas

Got eric to do the windows side of this for me.  See how windows slows progress? :D</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>127822</commentid>
    <comment_count>7</comment_count>
      <attachid>31769</attachid>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2009-06-23 23:07:35 -0700</bug_when>
    <thetext>Comment on attachment 31769
Video-&gt;Canvas

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>127825</commentid>
    <comment_count>8</comment_count>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2009-06-23 23:21:20 -0700</bug_when>
    <thetext>Committing to http://svn.webkit.org/repository/webkit/trunk ...
	M	LayoutTests/ChangeLog
	A	LayoutTests/media/video-canvas-expected.txt
	A	LayoutTests/media/video-canvas.html
	M	WebCore/ChangeLog
	M	WebCore/bindings/js/JSCanvasRenderingContext2DCustom.cpp
	M	WebCore/html/CanvasRenderingContext2D.cpp
	M	WebCore/html/CanvasRenderingContext2D.h
	M	WebCore/html/HTMLMediaElement.h
	M	WebCore/html/HTMLVideoElement.cpp
	M	WebCore/html/HTMLVideoElement.h
	M	WebCore/platform/graphics/MediaPlayer.cpp
	M	WebCore/platform/graphics/MediaPlayer.h
	M	WebCore/platform/graphics/MediaPlayerPrivate.h
	M	WebCore/platform/graphics/mac/MediaPlayerPrivateQTKit.h
	M	WebCore/platform/graphics/mac/MediaPlayerPrivateQTKit.mm
	M	WebCore/platform/graphics/win/MediaPlayerPrivateQuickTimeWin.cpp
	M	WebCore/platform/graphics/win/MediaPlayerPrivateQuickTimeWin.h
Committed r45060
</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>31769</attachid>
            <date>2009-06-23 23:05:23 -0700</date>
            <delta_ts>2009-06-23 23:07:35 -0700</delta_ts>
            <desc>Video-&gt;Canvas</desc>
            <filename>video-canvas.patch</filename>
            <type>text/plain</type>
            <size>23999</size>
            <attacher name="Oliver Hunt">oliver</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCAzMjc0YjQ1Li5mMzQwZDdjIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMDktMDYt
MjMgIE9saXZlciBIdW50ICA8b2xpdmVyQGFwcGxlLmNvbT4gYW5kIEVyaWMgQ2FybHNvbiAgPGVy
aWMuY2FybHNvbkBhcHBsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzYxNjQ3OTc+IEFkZCBDYW52YXMgQVBJIHRv
IGFsbG93IGRyYXdpbmcgb2YgPHZpZGVvPiBmcmFtZXMKKyAgICAgICAgPGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yNTkyMD4KKworICAgICAgICBBZGQgdGVzdHMgZm9y
IGRyYXdpbmcgYSB2aWRlbyB0byB0aGUgY2FudmFzIGVsZW1lbnQuCisKKyAgICAgICAgKiBtZWRp
YS92aWRlby1jYW52YXMtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBtZWRpYS92aWRl
by1jYW52YXMuaHRtbDogQWRkZWQuCisKIDIwMDktMDYtMjMgIE9saXZlciBIdW50ICA8b2xpdmVy
QGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBHYXZpbiBCYXJyYWNsb3VnaC4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL21lZGlhL3ZpZGVvLWNhbnZhcy1leHBlY3RlZC50eHQgYi9M
YXlvdXRUZXN0cy9tZWRpYS92aWRlby1jYW52YXMtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZmZTk3N2EKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9tZWRpYS92aWRlby1jYW52YXMtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMzYgQEAKKyAK
K1Rlc3QgPHZpZGVvPiBhcyBhIHNvdXJjZSBmb3IgPGNhbnZhcz4uCisKK1JVTih2aWRlby5zcmMg
PSAnY29udGVudC9jb3VudGluZy5tcDQnKQorRVZFTlQobG9hZGVkbWV0YWRhdGEpCisKK0VYUEVD
VEVEIChyID09ICcyNTUnKSBPSworRVhQRUNURUQgKGcgPT0gJzI1NScpIE9LCitFWFBFQ1RFRCAo
YiA9PSAnMCcpIE9LCisKK1JVTih2aWRlby5jdXJyZW50VGltZSA9IDIpCitFWFBFQ1RFRCAociA9
PSAnOCcpIE9LCitFWFBFQ1RFRCAoZyA9PSAnMCcpIE9LCitFWFBFQ1RFRCAoYiA9PSAnMjI2Jykg
T0sKKworUlVOKHZpZGVvLmN1cnJlbnRUaW1lID0gNCkKK0VYUEVDVEVEIChyID09ICcwJykgT0sK
K0VYUEVDVEVEIChnID09ICcyNCcpIE9LCitFWFBFQ1RFRCAoYiA9PSAnMTk3JykgT0sKKworUlVO
KHZpZGVvLmN1cnJlbnRUaW1lID0gNikKK0VYUEVDVEVEIChyID09ICcwJykgT0sKK0VYUEVDVEVE
IChnID09ICc0NicpIE9LCitFWFBFQ1RFRCAoYiA9PSAnMTY2JykgT0sKKworUlVOKHZpZGVvLmN1
cnJlbnRUaW1lID0gOCkKK0VYUEVDVEVEIChyID09ICcwJykgT0sKK0VYUEVDVEVEIChnID09ICc2
NicpIE9LCitFWFBFQ1RFRCAoYiA9PSAnMTM2JykgT0sKKworUlVOKHZpZGVvLmN1cnJlbnRUaW1l
ID0gMTApCitFWFBFQ1RFRCAociA9PSAnMCcpIE9LCitFWFBFQ1RFRCAoZyA9PSAnODUnKSBPSwor
RVhQRUNURUQgKGIgPT0gJzExMicpIE9LCitFTkQgT0YgVEVTVAorCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9tZWRpYS92aWRlby1jYW52YXMuaHRtbCBiL0xheW91dFRlc3RzL21lZGlhL3ZpZGVv
LWNhbnZhcy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjlmN2IxOWYK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9tZWRpYS92aWRlby1jYW52YXMuaHRtbApA
QCAtMCwwICsxLDg0IEBACis8aHRtbD4KKyAgICA8aGVhZD4KKyAgICAgICAgPHRpdGxlPmRyYXdp
bmcgJmx0O3ZpZGVvJmd0OyB0byAmbHQ7Y2FudmFzJmd0OzwvdGl0bGU+CisgICAgICAgIDxzY3Jp
cHQgc3JjPXZpZGVvLXRlc3QuanM+PC9zY3JpcHQ+CisKKyAgICAgICAgPHNjcmlwdD4KKyAgICAg
ICAgICAgIHZhciBjdHg7CisgICAgICAgICAgICB2YXIgcmVzdWx0cyA9IHsKKyAgICAgICAgICAg
ICAgICBjdXJyZW50OiAwLAorICAgICAgICAgICAgICAgIHZhbHVlczogWworICAgICAgICAgICAg
ICAgICAgICB7IHRpbWU6MCwgcjoyNTUsIGc6MjU1LCBiOjAgfSwKKyAgICAgICAgICAgICAgICAg
ICAgeyB0aW1lOjIsIHI6OCwgZzowLCBiOjIyNiB9LAorICAgICAgICAgICAgICAgICAgICB7IHRp
bWU6NCwgcjowLCBnOjI0LCBiOjE5NyB9LAorICAgICAgICAgICAgICAgICAgICB7IHRpbWU6Niwg
cjowLCBnOjQ2LCBiOjE2NiB9LAorICAgICAgICAgICAgICAgICAgICB7IHRpbWU6OCwgcjowLCBn
OjY2LCBiOjEzNiB9LAorICAgICAgICAgICAgICAgICAgICB7IHRpbWU6MTAsIHI6MCwgZzo4NSwg
YjoxMTIgfSwKKyAgICAgICAgICAgICAgICBdCisgICAgICAgICAgICB9OworCisgICAgICAgICAg
ICB2YXIgd2lkdGg7CisgICAgICAgICAgICB2YXIgaGVpZ2h0OworCisgICAgICAgICAgICBmdW5j
dGlvbiB0ZXN0UGl4ZWwoKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHZhciBleHBl
Y3RlZCA9IHJlc3VsdHMudmFsdWVzW3Jlc3VsdHMuY3VycmVudF07CisgICAgICAgICAgICAgICAg
aWYgKGV4cGVjdGVkLnRpbWUpIAorICAgICAgICAgICAgICAgICAgICBjdHguZHJhd0ltYWdlKHZp
ZGVvLCAwLCAwLCB3aWR0aCwgaGVpZ2h0KTsKKworICAgICAgICAgICAgICAgIHZhciBmcmFtZSA9
IGN0eC5nZXRJbWFnZURhdGEoMCwgMCwgd2lkdGgsIGhlaWdodCk7CisgICAgICAgICAgICAgICAg
ciA9IGZyYW1lLmRhdGFbNCArIDBdOworICAgICAgICAgICAgICAgIGcgPSBmcmFtZS5kYXRhWzQg
KyAxXTsKKyAgICAgICAgICAgICAgICBiID0gZnJhbWUuZGF0YVs0ICsgMl07CisKKyAgICAgICAg
ICAgICAgICB0ZXN0RXhwZWN0ZWQoInIiLCBleHBlY3RlZC5yKTsKKyAgICAgICAgICAgICAgICB0
ZXN0RXhwZWN0ZWQoImciLCBleHBlY3RlZC5nKTsKKyAgICAgICAgICAgICAgICB0ZXN0RXhwZWN0
ZWQoImIiLCBleHBlY3RlZC5iKTsKKworICAgICAgICAgICAgICAgIGlmICgrK3Jlc3VsdHMuY3Vy
cmVudCA+PSByZXN1bHRzLnZhbHVlcy5sZW5ndGgpCisgICAgICAgICAgICAgICAgICAgIGVuZFRl
c3QoKTsKKyAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgIHNldFRpbWVv
dXQodGVzdEZyYW1lLCAwKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgZnVuY3Rpb24g
dGVzdEZyYW1lKCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBjb25zb2xlV3JpdGUo
IiIpOworICAgICAgICAgICAgICAgIHZhciBleHBlY3RlZCA9IHJlc3VsdHMudmFsdWVzW3Jlc3Vs
dHMuY3VycmVudF07CisgICAgICAgICAgICAgICAgaWYgKGV4cGVjdGVkLnRpbWUpIAorICAgICAg
ICAgICAgICAgICAgICBydW4oInZpZGVvLmN1cnJlbnRUaW1lID0gIiArIGV4cGVjdGVkLnRpbWUp
OworICAgICAgICAgICAgICAgIHNldFRpbWVvdXQodGVzdFBpeGVsLCAxMDApOworICAgICAgICAg
ICAgfQorCisgICAgICAgICAgICBmdW5jdGlvbiBsb2FkZWRtZXRhZGF0YSgpCisgICAgICAgICAg
ICB7CisgICAgICAgICAgICAgICAgd2lkdGggPSB2aWRlby52aWRlb1dpZHRoIC8gMjsKKyAgICAg
ICAgICAgICAgICBoZWlnaHQgPSB2aWRlby52aWRlb0hlaWdodCAvIDI7CisKKyAgICAgICAgICAg
ICAgICBjdHggPSBjYW52YXMuZ2V0Q29udGV4dCgiMmQiKTsKKyAgICAgICAgICAgICAgICBjdHgu
ZmlsbFN0eWxlID0gJ3llbGxvdyc7IAorICAgICAgICAgICAgICAgIGN0eC5maWxsUmVjdCgwLCAw
LCB3aWR0aCwgaGVpZ2h0KTsKKyAgICAgICAgICAgICAgICB0ZXN0RnJhbWUoKTsKKyAgICAgICAg
ICAgIH0KKworICAgICAgICAgICAgZnVuY3Rpb24gc3RhcnQoKQorICAgICAgICAgICAgeworICAg
ICAgICAgICAgICAgIGZpbmRNZWRpYUVsZW1lbnQoKTsKKyAgICAgICAgICAgICAgICBjYW52YXMg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgnY2FudmFzJylbMF07CisgICAgICAgICAg
ICAgICAgd2FpdEZvckV2ZW50KCdsb2FkZWRtZXRhZGF0YScsIGxvYWRlZG1ldGFkYXRhKTsKKyAg
ICAgICAgICAgICAgICBydW4oInZpZGVvLnNyYyA9ICdjb250ZW50L2NvdW50aW5nLm1wNCciKTsK
KyAgICAgICAgICAgIH0KKyAgICAgICAgPC9zY3JpcHQ+CisgICAgPC9oZWFkPgorCisgICAgPGJv
ZHkgb25sb2FkPSJzdGFydCgpIiA+CisKKyAgICA8ZGl2PgorICAgICAgICA8dmlkZW8gY29udHJv
bHM9InRydWUiPjwvdmlkZW8+CisgICAgICAgIDxjYW52YXMgd2lkdGg9IjE2MCIgaGVpZ2h0PSIx
MjAiID48L2NhbnZhcz4KKyAgICA8L2Rpdj4KKworICAgIDxwPlRlc3QgJmx0O3ZpZGVvJmd0OyBh
cyBhIHNvdXJjZSBmb3IgJmx0O2NhbnZhcyZndDsuPC9wPgorICAgIAorICAgIDwvYm9keT4KKzwv
aHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9XZWJDb3JlL0No
YW5nZUxvZyBiL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDNhNjY3NTAuLjZlNDNjYzkgMTAwNjQ0
Ci0tLSBhL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsNTEgQEAKKzIwMDktMDYtMjMgIE9saXZlciBIdW50ICA8b2xpdmVyQGFwcGxlLmNvbT4gYW5k
IEVyaWMgQ2FybHNvbiAgPGVyaWMuY2FybHNvbkBhcHBsZS5jb20+CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzYxNjQ3OTc+
IEFkZCBDYW52YXMgQVBJIHRvIGFsbG93IGRyYXdpbmcgb2YgPHZpZGVvPiBmcmFtZXMKKyAgICAg
ICAgPGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yNTkyMD4KKworICAg
ICAgICBBZGQgc3VwcG9ydCBmb3IgZHJhd2luZyB0aGUgY29udGVudHMgb2YgdGhlIHZpZGVvIGVs
ZW1lbnQgdG8gdGhlIGNhbnZhcworICAgICAgICBpbiBhY2NvcmRhbmNlIHdpdGggdGhlIGN1cnJl
bnQgSFRNTDUgZHJhZnQuCisKKyAgICAgICAgVGVzdDogbWVkaWEvdmlkZW8tY2FudmFzLmh0bWwK
KworICAgICAgICAqIGJpbmRpbmdzL2pzL0pTQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQ3VzdG9t
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpkcmF3
SW1hZ2UpOgorICAgICAgICAgIFN0YW5kYXJkIGN1c3RvbSBiaW5kaW5ncyBzdHVmZiB3ZSBuZWVk
IHRvIGRvIGZvciBhbGwgY2FudmFzIG1ldGhvZHMuCisgICAgICAgICogaHRtbC9DYW52YXNSZW5k
ZXJpbmdDb250ZXh0MkQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6c2l6ZSk6IEhlbHBlciBmdW5j
dGlvbiBmb3IgZmluZGluZyB0aGUgc2l6ZSBvZiBhIHZpZGVvIGVsZW1lbnQKKyAgICAgICAgKFdl
YkNvcmU6OkNhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6Y2hlY2tPcmlnaW4pOiBtb3ZlZCB1cCBp
biB0aGUgZmlsZS4KKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6
ZHJhd0ltYWdlKTogVGhlIHZhcmlvdXMgb3ZlcmxvYWRzIG9mIEhUTUw1J3MgZHJhd0ltYWdlKDx2
aWRlbz4pCisgICAgICAgICogaHRtbC9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuaDoKKyAgICAg
ICAgKiBodG1sL0hUTUxNZWRpYUVsZW1lbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRp
YUVsZW1lbnQ6Omhhc1NpbmdsZVNlY3VyaXR5T3JpZ2luKToKKyAgICAgICAgICBoYXNTaW5nbGVT
ZWN1cml0eU9yaWdpbiBpcyBuZWVkZWQgZm9yIHNlY3VyaXR5LCBjdXJyZW50bHkgYWxsIGltcGxl
bWVudGF0aW9ucyBhcmUgdHJpdmlhbAorICAgICAgICAgIGFzIHdlIGZvcmNlIFFUIHRvIG1haW50
YWluIGEgc2luZ2xlIG9yaWdpbi4KKyAgICAgICAgKiBodG1sL0hUTUxWaWRlb0VsZW1lbnQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6SFRNTFZpZGVvRWxlbWVudDo6cGFpbnQpOiAKKyAgICAgICAg
ICAgIFBhaW50IHJvdXRpbmUgb24gdmlkZW8gc28gd2UgZG9uJ3QgaGF2ZSB0byBsb29rIGF0IE1l
ZGlhUGxheWVyIGRpcmVjdGx5CisgICAgICAgICogaHRtbC9IVE1MVmlkZW9FbGVtZW50Lmg6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6TnVsbE1lZGlhUGxheWVyUHJpdmF0ZTo6aGFzU2luZ2xlU2VjdXJpdHlPcmlnaW4pOgor
ICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXI6Omhhc1NpbmdsZVNlY3VyaXR5T3JpZ2luKToK
KyAgICAgICAgICAgIERlZmF1bHQgaW1wbGVtZW50YXRpb25zIG9mIGhhc1NpbmdsZVNlY3VyaXR5
T3JpZ2luCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuaDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllclByaXZhdGUuaDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9tYWMvTWVkaWFQbGF5ZXJQcml2YXRlUVRLaXQuaDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9tYWMvTWVkaWFQbGF5ZXJQcml2YXRlUVRLaXQubW06CisgICAg
ICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGU6OnNldFVwVmlkZW9SZW5kZXJpbmcpOgor
ICAgICAgICAgICAgQSB2aWRlbyBtYXkgbmVlZCBhIHBsYXllciBub3cgZXZlbiBpZiBpdCBpcyBu
b3QgdmlzaWJsZS4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZTo6aGFzU2lu
Z2xlU2VjdXJpdHlPcmlnaW4pOgorICAgICAgICAgICAgQWx3YXlzIHJldHVybiB0cnVlIGR1ZSB0
byByZXN0cmljdGlvbnMgd2UndmUgcGxhY2VkIG9uIFFULgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL3dpbi9NZWRpYVBsYXllclByaXZhdGVRdWlja1RpbWVXaW4uY3BwOgorICAgICAgICAo
V2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlOjpwYWludCk6CisgICAgICAgICAgICBKdW1wIHRo
cm91Z2ggc29tZSBob29wcyB0byBhbGxvdyB3aW5kb3dzIFFUIHRvIGRyYXcgdG8gYW4gaW50ZXJt
ZWRpYXRlIGJ1ZmZlci4KKyAgICAgICAgICAgIEluIHRoZSBsb25nIHRlcm0gd2UnZCBsaWtlIHRv
IGNhY2hlIHRoZSBIREMsIGJ1dCB0aGlzIHdpbGwgZG8gZm9yIG5vdy4KKyAgICAgICAgKFdlYkNv
cmU6Ok1lZGlhUGxheWVyUHJpdmF0ZTo6aGFzU2luZ2xlU2VjdXJpdHlPcmlnaW4pOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9NZWRpYVBsYXllclByaXZhdGVRdWlja1RpbWVXaW4u
aDoKKyAgICAgICAgICAgIEFzIGZvciBNYWMgd2UgZm9yY2UgUVQgdG8gb25seSBhbGxvdyBzYW1l
IG9yaWdpbiBsb2Fkcy4KKwogMjAwOS0wNi0yMyAgQWRhbSBMYW5nbGV5ICA8YWdsQGdvb2dsZS5j
b20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRXJpYyBTZWlkZWwuCmRpZmYgLS1naXQgYS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQ3VzdG9tLmNwcCBiL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNDYW52YXNSZW5kZXJpbmdDb250ZXh0MkRDdXN0b20uY3BwCmlu
ZGV4IDc2ZGI4NzEuLjIxNjQyNjIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvYmluZGluZ3MvanMvSlND
YW52YXNSZW5kZXJpbmdDb250ZXh0MkRDdXN0b20uY3BwCisrKyBiL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNDYW52YXNSZW5kZXJpbmdDb250ZXh0MkRDdXN0b20uY3BwCkBAIC0xLDUgKzEsNSBAQAog
LyoKLSAqIENvcHlyaWdodCAoQykgMjAwNiwgMjAwNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDYsIDIwMDcsIDIwMDkgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgogICoKICAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5
b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVy
bXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCkBAIC0yOCwxMSArMjgsMTMgQEAK
ICNpbmNsdWRlICJGbG9hdFJlY3QuaCIKICNpbmNsdWRlICJIVE1MQ2FudmFzRWxlbWVudC5oIgog
I2luY2x1ZGUgIkhUTUxJbWFnZUVsZW1lbnQuaCIKKyNpbmNsdWRlICJIVE1MVmlkZW9FbGVtZW50
LmgiCiAjaW5jbHVkZSAiSW1hZ2VEYXRhLmgiCiAjaW5jbHVkZSAiSlNDYW52YXNHcmFkaWVudC5o
IgogI2luY2x1ZGUgIkpTQ2FudmFzUGF0dGVybi5oIgogI2luY2x1ZGUgIkpTSFRNTENhbnZhc0Vs
ZW1lbnQuaCIKICNpbmNsdWRlICJKU0hUTUxJbWFnZUVsZW1lbnQuaCIKKyNpbmNsdWRlICJKU0hU
TUxWaWRlb0VsZW1lbnQuaCIKICNpbmNsdWRlICJKU0ltYWdlRGF0YS5oIgogI2luY2x1ZGUgPHJ1
bnRpbWUvRXJyb3IuaD4KIApAQCAtMjMwLDYgKzIzMiwyOSBAQCBKU1ZhbHVlIEpTQ2FudmFzUmVu
ZGVyaW5nQ29udGV4dDJEOjpkcmF3SW1hZ2UoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBBcmdMaXN0
JiBhcgogICAgICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgICByZXR1cm4gdGhyb3dF
cnJvcihleGVjLCBTeW50YXhFcnJvcik7CiAgICAgICAgIH0KKyNpZiBFTkFCTEUoVklERU8pCisg
ICAgfSBlbHNlIGlmIChvLT5pbmhlcml0cygmSlNIVE1MVmlkZW9FbGVtZW50OjpzX2luZm8pKSB7
CisgICAgICAgICAgICBIVE1MVmlkZW9FbGVtZW50KiB2aWRlbyA9IHN0YXRpY19jYXN0PEhUTUxW
aWRlb0VsZW1lbnQqPihzdGF0aWNfY2FzdDxKU0hUTUxFbGVtZW50Kj4obyktPmltcGwoKSk7Cisg
ICAgICAgICAgICBzd2l0Y2ggKGFyZ3Muc2l6ZSgpKSB7CisgICAgICAgICAgICAgICAgY2FzZSAz
OgorICAgICAgICAgICAgICAgICAgICBjb250ZXh0LT5kcmF3SW1hZ2UodmlkZW8sIGFyZ3MuYXQo
MSkudG9GbG9hdChleGVjKSwgYXJncy5hdCgyKS50b0Zsb2F0KGV4ZWMpKTsKKyAgICAgICAgICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgY2FzZSA1OgorICAgICAgICAgICAgICAg
ICAgICBjb250ZXh0LT5kcmF3SW1hZ2UodmlkZW8sIGFyZ3MuYXQoMSkudG9GbG9hdChleGVjKSwg
YXJncy5hdCgyKS50b0Zsb2F0KGV4ZWMpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgYXJncy5hdCgzKS50b0Zsb2F0KGV4ZWMpLCBhcmdzLmF0KDQpLnRvRmxvYXQoZXhl
YyksIGVjKTsKKyAgICAgICAgICAgICAgICAgICAgc2V0RE9NRXhjZXB0aW9uKGV4ZWMsIGVjKTsK
KyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgY2FzZSA5OgorICAg
ICAgICAgICAgICAgICAgICBjb250ZXh0LT5kcmF3SW1hZ2UodmlkZW8sIEZsb2F0UmVjdChhcmdz
LmF0KDEpLnRvRmxvYXQoZXhlYyksIGFyZ3MuYXQoMikudG9GbG9hdChleGVjKSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyZ3MuYXQo
MykudG9GbG9hdChleGVjKSwgYXJncy5hdCg0KS50b0Zsb2F0KGV4ZWMpKSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZsb2F0UmVjdChhcmdzLmF0KDUpLnRvRmxvYXQo
ZXhlYyksIGFyZ3MuYXQoNikudG9GbG9hdChleGVjKSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBhcmdzLmF0KDcpLnRvRmxvYXQoZXhlYyksIGFyZ3Mu
YXQoOCkudG9GbG9hdChleGVjKSksIGVjKTsKKyAgICAgICAgICAgICAgICAgICAgc2V0RE9NRXhj
ZXB0aW9uKGV4ZWMsIGVjKTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAg
ICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoZXhl
YywgU3ludGF4RXJyb3IpOworICAgICAgICB9CisjZW5kaWYKICAgICB9IGVsc2UgewogICAgICAg
ICBzZXRET01FeGNlcHRpb24oZXhlYywgVFlQRV9NSVNNQVRDSF9FUlIpOwogICAgIH0KZGlmZiAt
LWdpdCBhL1dlYkNvcmUvaHRtbC9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuY3BwIGIvV2ViQ29y
ZS9odG1sL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHAKaW5kZXggMjU0MzY5ZS4uZTUxMThl
MSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9odG1sL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHAK
KysrIGIvV2ViQ29yZS9odG1sL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHAKQEAgLTEsNSAr
MSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2LCAyMDA3LCAyMDA4
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNCwg
MjAwNSwgMjAwNiwgMjAwNywgMjAwOCwgMjAwOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDggTm9raWEgQ29ycG9yYXRpb24gYW5kL29yIGl0cyBz
dWJzaWRpYXJ5KC1pZXMpCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDcgQWxwIFRva2VyIDxhbHBAYXRv
a2VyLmNvbT4KICAqIENvcHlyaWdodCAoQykgMjAwOCBFcmljIFNlaWRlbCA8ZXJpY0B3ZWJraXQu
b3JnPgpAQCAtNTYsNiArNTYsNyBAQAogI2luY2x1ZGUgIlNldHRpbmdzLmgiCiAjaW5jbHVkZSAi
U3Ryb2tlU3R5bGVBcHBsaWVyLmgiCiAjaW5jbHVkZSAiVGV4dE1ldHJpY3MuaCIKKyNpbmNsdWRl
ICJIVE1MVmlkZW9FbGVtZW50LmgiCiAjaW5jbHVkZSA8c3RkaW8uaD4KIAogI2luY2x1ZGUgPHd0
Zi9CeXRlQXJyYXkuaD4KQEAgLTkxMSw2ICs5MTIsMTMgQEAgc3RhdGljIEludFNpemUgc2l6ZShI
VE1MSW1hZ2VFbGVtZW50KiBpbWFnZSkKICAgICAgICAgcmV0dXJuIGNhY2hlZEltYWdlLT5pbWFn
ZVNpemUoMS4wZik7IC8vIEZJWE1FOiBOb3Qgc3VyZSBhYm91dCB0aGlzLgogICAgIHJldHVybiBJ
bnRTaXplKCk7CiB9CisgICAgCitzdGF0aWMgSW50U2l6ZSBzaXplKEhUTUxWaWRlb0VsZW1lbnQq
IHZpZGVvKQoreworICAgIGlmIChNZWRpYVBsYXllciogcGxheWVyID0gdmlkZW8tPnBsYXllcigp
KQorICAgICAgICByZXR1cm4gcGxheWVyLT5uYXR1cmFsU2l6ZSgpOworICAgIHJldHVybiBJbnRT
aXplKCk7Cit9CiAKIHN0YXRpYyBpbmxpbmUgRmxvYXRSZWN0IG5vcm1hbGl6ZVJlY3QoY29uc3Qg
RmxvYXRSZWN0JiByZWN0KQogewpAQCAtOTIwLDYgKzkyOCwxMyBAQCBzdGF0aWMgaW5saW5lIEZs
b2F0UmVjdCBub3JtYWxpemVSZWN0KGNvbnN0IEZsb2F0UmVjdCYgcmVjdCkKICAgICAgICAgbWF4
KHJlY3QuaGVpZ2h0KCksIC1yZWN0LmhlaWdodCgpKSk7CiB9CiAKK3ZvaWQgQ2FudmFzUmVuZGVy
aW5nQ29udGV4dDJEOjpjaGVja09yaWdpbihjb25zdCBLVVJMJiB1cmwpCit7CisgICAgUmVmUHRy
PFNlY3VyaXR5T3JpZ2luPiBvcmlnaW4gPSBTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKHVybCk7Cisg
ICAgaWYgKCFtX2NhbnZhcy0+ZG9jdW1lbnQoKS0+c2VjdXJpdHlPcmlnaW4oKS0+Y2FuQWNjZXNz
KG9yaWdpbi5nZXQoKSkpCisgICAgICAgIG1fY2FudmFzLT5zZXRPcmlnaW5UYWludGVkKCk7Cit9
CisKIHZvaWQgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpkcmF3SW1hZ2UoSFRNTEltYWdlRWxl
bWVudCogaW1hZ2UsIGZsb2F0IHgsIGZsb2F0IHkpCiB7CiAgICAgQVNTRVJUKGltYWdlKTsKQEAg
LTkzNiwxMyArOTUxLDYgQEAgdm9pZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmRyYXdJbWFn
ZShIVE1MSW1hZ2VFbGVtZW50KiBpbWFnZSwKICAgICBkcmF3SW1hZ2UoaW1hZ2UsIEZsb2F0UmVj
dCgwLCAwLCBzLndpZHRoKCksIHMuaGVpZ2h0KCkpLCBGbG9hdFJlY3QoeCwgeSwgd2lkdGgsIGhl
aWdodCksIGVjKTsKIH0KIAotdm9pZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmNoZWNrT3Jp
Z2luKGNvbnN0IEtVUkwmIHVybCkKLXsKLSAgICBSZWZQdHI8U2VjdXJpdHlPcmlnaW4+IG9yaWdp
biA9IFNlY3VyaXR5T3JpZ2luOjpjcmVhdGUodXJsKTsKLSAgICBpZiAoIW1fY2FudmFzLT5kb2N1
bWVudCgpLT5zZWN1cml0eU9yaWdpbigpLT5jYW5BY2Nlc3Mob3JpZ2luLmdldCgpKSkKLSAgICAg
ICAgbV9jYW52YXMtPnNldE9yaWdpblRhaW50ZWQoKTsKLX0KLQogdm9pZCBDYW52YXNSZW5kZXJp
bmdDb250ZXh0MkQ6OmRyYXdJbWFnZShIVE1MSW1hZ2VFbGVtZW50KiBpbWFnZSwgY29uc3QgRmxv
YXRSZWN0JiBzcmNSZWN0LCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsCiAgICAgRXhjZXB0aW9u
Q29kZSYgZWMpCiB7CkBAIC0xMDMzLDYgKzEwNDEsNjIgQEAgdm9pZCBDYW52YXNSZW5kZXJpbmdD
b250ZXh0MkQ6OmRyYXdJbWFnZShIVE1MQ2FudmFzRWxlbWVudCogY2FudmFzLCBjb25zdCBGbG9h
dFIKICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEZJWE1FOiBBcmd1YWJseSB3aWxsRHJhdyBz
aG91bGQgYmVjb21lIGRpZERyYXcgYW5kIG9jY3VyIGFmdGVyIGRyYXdpbmcgY2FsbHMgYW5kIG5v
dCBiZWZvcmUgdGhlbSB0byBhdm9pZCBwcm9ibGVtcyBsaWtlIHRoaXMuCiB9CiAKK3ZvaWQgQ2Fu
dmFzUmVuZGVyaW5nQ29udGV4dDJEOjpkcmF3SW1hZ2UoSFRNTFZpZGVvRWxlbWVudCogdmlkZW8s
IGZsb2F0IHgsIGZsb2F0IHkpCit7CisgICAgQVNTRVJUKHZpZGVvKTsKKyAgICBJbnRTaXplIHMg
PSBzaXplKHZpZGVvKTsKKyAgICBFeGNlcHRpb25Db2RlIGVjOworICAgIGRyYXdJbWFnZSh2aWRl
bywgeCwgeSwgcy53aWR0aCgpLCBzLmhlaWdodCgpLCBlYyk7Cit9CisKK3ZvaWQgQ2FudmFzUmVu
ZGVyaW5nQ29udGV4dDJEOjpkcmF3SW1hZ2UoSFRNTFZpZGVvRWxlbWVudCogdmlkZW8sCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsb2F0IHgsIGZsb2F0IHksIGZs
b2F0IHdpZHRoLCBmbG9hdCBoZWlnaHQsIEV4Y2VwdGlvbkNvZGUmIGVjKQoreworICAgIEFTU0VS
VCh2aWRlbyk7CisgICAgSW50U2l6ZSBzID0gc2l6ZSh2aWRlbyk7CisgICAgZHJhd0ltYWdlKHZp
ZGVvLCBGbG9hdFJlY3QoMCwgMCwgcy53aWR0aCgpLCBzLmhlaWdodCgpKSwgRmxvYXRSZWN0KHgs
IHksIHdpZHRoLCBoZWlnaHQpLCBlYyk7Cit9CisKK3ZvaWQgQ2FudmFzUmVuZGVyaW5nQ29udGV4
dDJEOjpkcmF3SW1hZ2UoSFRNTFZpZGVvRWxlbWVudCogdmlkZW8sIGNvbnN0IEZsb2F0UmVjdCYg
c3JjUmVjdCwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBFeGNlcHRpb25Db2RlJiBlYykKK3sKKyAgICBBU1NFUlQodmlk
ZW8pOworICAgIAorICAgIGVjID0gMDsKKyAgICBGbG9hdFJlY3QgdmlkZW9SZWN0ID0gRmxvYXRS
ZWN0KEZsb2F0UG9pbnQoKSwgc2l6ZSh2aWRlbykpOworICAgIGlmICghdmlkZW9SZWN0LmNvbnRh
aW5zKG5vcm1hbGl6ZVJlY3Qoc3JjUmVjdCkpIHx8IHNyY1JlY3Qud2lkdGgoKSA9PSAwIHx8IHNy
Y1JlY3QuaGVpZ2h0KCkgPT0gMCkgeworICAgICAgICBlYyA9IElOREVYX1NJWkVfRVJSOworICAg
ICAgICByZXR1cm47CisgICAgfQorICAgIAorICAgIGlmICghZHN0UmVjdC53aWR0aCgpIHx8ICFk
c3RSZWN0LmhlaWdodCgpKQorICAgICAgICByZXR1cm47CisgICAgCisgICAgR3JhcGhpY3NDb250
ZXh0KiBjID0gZHJhd2luZ0NvbnRleHQoKTsKKyAgICBpZiAoIWMpCisgICAgICAgIHJldHVybjsK
KyAgICBpZiAoIXN0YXRlKCkubV9pbnZlcnRpYmxlQ1RNKQorICAgICAgICByZXR1cm47CisKKyAg
ICBpZiAobV9jYW52YXMtPm9yaWdpbkNsZWFuKCkpCisgICAgICAgIGNoZWNrT3JpZ2luKHZpZGVv
LT5zcmMoKSk7CisKKyAgICBpZiAobV9jYW52YXMtPm9yaWdpbkNsZWFuKCkgJiYgIXZpZGVvLT5o
YXNTaW5nbGVTZWN1cml0eU9yaWdpbigpKQorICAgICAgICBtX2NhbnZhcy0+c2V0T3JpZ2luVGFp
bnRlZCgpOworCisgICAgRmxvYXRSZWN0IHNvdXJjZVJlY3QgPSBjLT5yb3VuZFRvRGV2aWNlUGl4
ZWxzKHNyY1JlY3QpOworICAgIEZsb2F0UmVjdCBkZXN0UmVjdCA9IGMtPnJvdW5kVG9EZXZpY2VQ
aXhlbHMoZHN0UmVjdCk7CisgICAgd2lsbERyYXcoZGVzdFJlY3QpOworCisgICAgYy0+c2F2ZSgp
OworICAgIGMtPmNsaXAoZGVzdFJlY3QpOworICAgIGMtPnRyYW5zbGF0ZShkZXN0UmVjdC54KCks
IGRlc3RSZWN0LnkoKSk7CisgICAgYy0+c2NhbGUoRmxvYXRTaXplKGRlc3RSZWN0LndpZHRoKCkv
c291cmNlUmVjdC53aWR0aCgpLCBkZXN0UmVjdC5oZWlnaHQoKS9zb3VyY2VSZWN0LmhlaWdodCgp
KSk7CisgICAgYy0+dHJhbnNsYXRlKC1zb3VyY2VSZWN0LngoKSwgLXNvdXJjZVJlY3QueSgpKTsK
KyAgICB2aWRlby0+cGFpbnQoYywgSW50UmVjdChJbnRQb2ludCgpLCBzaXplKHZpZGVvKSkpOwor
ICAgIGMtPnJlc3RvcmUoKTsKK30KKwogLy8gRklYTUU6IFdoeSBpc24ndCB0aGlzIGp1c3QgYW5v
dGhlciBvdmVybG9hZCBvZiBkcmF3SW1hZ2U/IFdoeSBoYXZlIGEgZGlmZmVyZW50IG5hbWU/CiB2
b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6ZHJhd0ltYWdlRnJvbVJlY3QoSFRNTEltYWdl
RWxlbWVudCogaW1hZ2UsCiAgICAgZmxvYXQgc3gsIGZsb2F0IHN5LCBmbG9hdCBzdywgZmxvYXQg
c2gsCmRpZmYgLS1naXQgYS9XZWJDb3JlL2h0bWwvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmgg
Yi9XZWJDb3JlL2h0bWwvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmgKaW5kZXggZDc0NjU5ZS4u
YmU4YzFjYyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9odG1sL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQy
RC5oCisrKyBiL1dlYkNvcmUvaHRtbC9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuaApAQCAtMSw1
ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDYsIDIwMDcgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA2LCAyMDA3LCAyMDA5IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwpAQCAtNDcsNiArNDcsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgY2xhc3MgR3JhcGhp
Y3NDb250ZXh0OwogICAgIGNsYXNzIEhUTUxDYW52YXNFbGVtZW50OwogICAgIGNsYXNzIEhUTUxJ
bWFnZUVsZW1lbnQ7CisgICAgY2xhc3MgSFRNTFZpZGVvRWxlbWVudDsKICAgICBjbGFzcyBJbWFn
ZURhdGE7CiAgICAgY2xhc3MgS1VSTDsKICAgICBjbGFzcyBUZXh0TWV0cmljczsKQEAgLTE1OSw2
ICsxNjAsOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZvaWQgZHJhd0ltYWdlKEhU
TUxDYW52YXNFbGVtZW50KiwgZmxvYXQgeCwgZmxvYXQgeSk7CiAgICAgICAgIHZvaWQgZHJhd0lt
YWdlKEhUTUxDYW52YXNFbGVtZW50KiwgZmxvYXQgeCwgZmxvYXQgeSwgZmxvYXQgd2lkdGgsIGZs
b2F0IGhlaWdodCwgRXhjZXB0aW9uQ29kZSYpOwogICAgICAgICB2b2lkIGRyYXdJbWFnZShIVE1M
Q2FudmFzRWxlbWVudCosIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgRmxvYXRSZWN0
JiBkc3RSZWN0LCBFeGNlcHRpb25Db2RlJik7CisgICAgICAgIHZvaWQgZHJhd0ltYWdlKEhUTUxW
aWRlb0VsZW1lbnQqLCBmbG9hdCB4LCBmbG9hdCB5KTsKKyAgICAgICAgdm9pZCBkcmF3SW1hZ2Uo
SFRNTFZpZGVvRWxlbWVudCosIGZsb2F0IHgsIGZsb2F0IHksIGZsb2F0IHdpZHRoLCBmbG9hdCBo
ZWlnaHQsIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICAgICAgdm9pZCBkcmF3SW1hZ2UoSFRNTFZpZGVv
RWxlbWVudCosIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgRmxvYXRSZWN0JiBkc3RS
ZWN0LCBFeGNlcHRpb25Db2RlJik7CiAKICAgICAgICAgdm9pZCBkcmF3SW1hZ2VGcm9tUmVjdChI
VE1MSW1hZ2VFbGVtZW50KiwgZmxvYXQgc3gsIGZsb2F0IHN5LCBmbG9hdCBzdywgZmxvYXQgc2gs
CiAgICAgICAgICAgICBmbG9hdCBkeCwgZmxvYXQgZHksIGZsb2F0IGR3LCBmbG9hdCBkaCwgY29u
c3QgU3RyaW5nJiBjb21wb3NpdGVPcGVyYXRpb24pOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9odG1s
L0hUTUxNZWRpYUVsZW1lbnQuaCBiL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmgKaW5k
ZXggODk2MzNmOC4uZjg1NzAwYyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVs
ZW1lbnQuaAorKysgYi9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oCkBAIC0xNDMsNiAr
MTQzLDggQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBmaW5pc2hQYXJzaW5nQ2hpbGRyZW4o
KTsKICNlbmRpZgogCisgICAgYm9vbCBoYXNTaW5nbGVTZWN1cml0eU9yaWdpbigpIGNvbnN0IHsg
cmV0dXJuICFtX3BsYXllciB8fCBtX3BsYXllci0+aGFzU2luZ2xlU2VjdXJpdHlPcmlnaW4oKTsg
fQorCiBwcm90ZWN0ZWQ6CiAgICAgZmxvYXQgZ2V0VGltZU9mZnNldEF0dHJpYnV0ZShjb25zdCBR
dWFsaWZpZWROYW1lJiwgZmxvYXQgdmFsdWVPbkVycm9yKSBjb25zdDsKICAgICB2b2lkIHNldFRp
bWVPZmZzZXRBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIGZsb2F0IHZhbHVlKTsKZGlm
ZiAtLWdpdCBhL1dlYkNvcmUvaHRtbC9IVE1MVmlkZW9FbGVtZW50LmNwcCBiL1dlYkNvcmUvaHRt
bC9IVE1MVmlkZW9FbGVtZW50LmNwcAppbmRleCBkNDY1YjczLi5hNjIxMGEyIDEwMDY0NAotLS0g
YS9XZWJDb3JlL2h0bWwvSFRNTFZpZGVvRWxlbWVudC5jcHAKKysrIGIvV2ViQ29yZS9odG1sL0hU
TUxWaWRlb0VsZW1lbnQuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykg
MjAwNywgMjAwOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQg
KEMpIDIwMDcsIDIwMDgsIDIwMDkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoK
ICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0xODYsNSArMTg2LDE3IEBAIHZvaWQgSFRN
TFZpZGVvRWxlbWVudDo6dXBkYXRlUG9zdGVySW1hZ2UoKQogI2VuZGlmCiB9CiAKK3ZvaWQgSFRN
TFZpZGVvRWxlbWVudDo6cGFpbnQoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBJbnRS
ZWN0JiByKQoreworICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgYWxzbyBiZSBhYmxlIHRvIHBhaW50
IHRoZSBwb3N0ZXIgaW1hZ2UuCisKKyAgICBNZWRpYVBsYXllciogcGxheWVyID0gSFRNTE1lZGlh
RWxlbWVudDo6cGxheWVyKCk7CisgICAgaWYgKCFwbGF5ZXIpCisgICAgICAgIHJldHVybjsKKwor
ICAgIHBsYXllci0+c2V0VmlzaWJsZSh0cnVlKTsgLy8gTWFrZSBwbGF5ZXIgdmlzaWJsZSBvciBp
dCB3b24ndCBkcmF3LgorICAgIHBsYXllci0+cGFpbnQoY29udGV4dCwgcik7Cit9CisKIH0KICNl
bmRpZgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9odG1sL0hUTUxWaWRlb0VsZW1lbnQuaCBiL1dlYkNv
cmUvaHRtbC9IVE1MVmlkZW9FbGVtZW50LmgKaW5kZXggZDM1ZjNmOC4uNWI1OWVkYiAxMDA2NDQK
LS0tIGEvV2ViQ29yZS9odG1sL0hUTUxWaWRlb0VsZW1lbnQuaAorKysgYi9XZWJDb3JlL2h0bWwv
SFRNTFZpZGVvRWxlbWVudC5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykg
MjAwNywgMjAwOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQg
KEMpIDIwMDcsIDIwMDgsIDIwMDkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoK
ICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC02Niw2ICs2Niw5IEBAIHB1YmxpYzoKIAog
ICAgIHZvaWQgdXBkYXRlUG9zdGVySW1hZ2UoKTsKIAorICAgIC8vIFVzZWQgYnkgY2FudmFzIHRv
IGdhaW4gcmF3IHBpeGVsIGFjY2VzcworICAgIHZvaWQgcGFpbnQoR3JhcGhpY3NDb250ZXh0Kiwg
Y29uc3QgSW50UmVjdCYpOworCiBwcml2YXRlOgogICAgIE93blB0cjxIVE1MSW1hZ2VMb2FkZXI+
IG1faW1hZ2VMb2FkZXI7CiAgICAgYm9vbCBtX3Nob3VsZFNob3dQb3N0ZXJJbWFnZTsKZGlmZiAt
LWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwIGIvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5jcHAKaW5kZXggMTg5ZWMzZC4uNzQ4NGE3
YSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5jcHAK
KysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5jcHAKQEAgLTEwMyw2
ICsxMDMsOCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGRlbGl2ZXJOb3RpZmljYXRpb24o
TWVkaWFQbGF5ZXJQcm94eU5vdGlmaWNhdGlvblR5cGUpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBz
ZXRNZWRpYVBsYXllclByb3h5KFdlYk1lZGlhUGxheWVyUHJveHkqKSB7IH0KICNlbmRpZgorCisg
ICAgdmlydHVhbCBib29sIGhhc1NpbmdsZVNlY3VyaXR5T3JpZ2luKCkgY29uc3QgeyByZXR1cm4g
dHJ1ZTsgfQogfTsKIAogc3RhdGljIE1lZGlhUGxheWVyUHJpdmF0ZUludGVyZmFjZSogY3JlYXRl
TnVsbE1lZGlhUGxheWVyKE1lZGlhUGxheWVyKiBwbGF5ZXIpIApAQCAtNTI5LDUgKzUzMSwxMCBA
QCB2b2lkIE1lZGlhUGxheWVyOjpyYXRlQ2hhbmdlZCgpCiAgICAgICAgIG1fbWVkaWFQbGF5ZXJD
bGllbnQtPm1lZGlhUGxheWVyUmF0ZUNoYW5nZWQodGhpcyk7CiB9CiAKK2Jvb2wgTWVkaWFQbGF5
ZXI6Omhhc1NpbmdsZVNlY3VyaXR5T3JpZ2luKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9wcml2
YXRlLT5oYXNTaW5nbGVTZWN1cml0eU9yaWdpbigpOworfQorCiB9CiAjZW5kaWYKZGlmZiAtLWdp
dCBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuaCBiL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuaAppbmRleCBjMGU4NWE2Li4yYTY5OTNhIDEwMDY0
NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmgKKysrIGIvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5oCkBAIC0xOTEsNiArMTkxLDggQEAg
cHVibGljOgogICAgIHZvaWQgYWNjZWxlcmF0ZWRSZW5kZXJpbmdTdGF0ZUNoYW5nZWQoKTsKICNl
bmRpZgogCisgICAgYm9vbCBoYXNTaW5nbGVTZWN1cml0eU9yaWdpbigpIGNvbnN0OworCiBwcml2
YXRlOgogICAgIHN0YXRpYyB2b2lkIGluaXRpYWxpemVNZWRpYUVuZ2luZXMoKTsKIApkaWZmIC0t
Z2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllclByaXZhdGUuaCBiL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXJQcml2YXRlLmgKaW5kZXggNzFmMTk5
OC4uOTE2MWJiYiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBs
YXllclByaXZhdGUuaAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVy
UHJpdmF0ZS5oCkBAIC05OSw2ICs5OSw4IEBAIHB1YmxpYzoKICAgICAvLyBjYWxsZWQgd2hlbiB0
aGUgcmVuZGVyaW5nIHN5c3RlbSBmbGlwcyB0aGUgaW50byBvciBvdXQgb2YgYWNjZWxlcmF0ZWQg
cmVuZGVyaW5nIG1vZGUuCiAgICAgdmlydHVhbCB2b2lkIGFjY2VsZXJhdGVkUmVuZGVyaW5nU3Rh
dGVDaGFuZ2VkKCkgeyB9CiAjZW5kaWYKKworICAgIHZpcnR1YWwgYm9vbCBoYXNTaW5nbGVTZWN1
cml0eU9yaWdpbigpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiB9OwogCiB9CmRpZmYgLS1naXQg
YS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9NZWRpYVBsYXllclByaXZhdGVRVEtpdC5o
IGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvTWVkaWFQbGF5ZXJQcml2YXRlUVRLaXQu
aAppbmRleCA2MzhiOTNlLi5kYjI3NTIxIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL21hYy9NZWRpYVBsYXllclByaXZhdGVRVEtpdC5oCisrKyBiL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvbWFjL01lZGlhUGxheWVyUHJpdmF0ZVFUS2l0LmgKQEAgLTY4LDYgKzY4LDcg
QEAgcHVibGljOgogICAgIHZvaWQgdGltZUNoYW5nZWQoKTsKICAgICB2b2lkIGRpZEVuZCgpOwog
CisgICAgYm9vbCBoYXNTaW5nbGVTZWN1cml0eU9yaWdpbigpIGNvbnN0OwogcHJpdmF0ZToKICAg
ICBNZWRpYVBsYXllclByaXZhdGUoTWVkaWFQbGF5ZXIqKTsKIApkaWZmIC0tZ2l0IGEvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvTWVkaWFQbGF5ZXJQcml2YXRlUVRLaXQubW0gYi9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9NZWRpYVBsYXllclByaXZhdGVRVEtpdC5tbQppbmRl
eCAzYzFkNmJjLi5kYmIzZDk0IDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L21hYy9NZWRpYVBsYXllclByaXZhdGVRVEtpdC5tbQorKysgYi9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL21hYy9NZWRpYVBsYXllclByaXZhdGVRVEtpdC5tbQpAQCAtNDk3LDE4ICs0OTcsMTcg
QEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGU6OnNldFVwVmlkZW9SZW5kZXJpbmcoKQogewogICAg
IE1lZGlhUmVuZGVyaW5nTW9kZSBjdXJyZW50TW9kZSA9IGN1cnJlbnRSZW5kZXJpbmdNb2RlKCk7
CiAgICAgTWVkaWFSZW5kZXJpbmdNb2RlIHByZWZlcnJlZE1vZGUgPSBwcmVmZXJyZWRSZW5kZXJp
bmdNb2RlKCk7Ci0gICAgaWYgKGN1cnJlbnRNb2RlID09IHByZWZlcnJlZE1vZGUpCisgICAgaWYg
KGN1cnJlbnRNb2RlID09IHByZWZlcnJlZE1vZGUgJiYgY3VycmVudE1vZGUgIT0gTWVkaWFSZW5k
ZXJpbmdOb25lKQogICAgICAgICByZXR1cm47CiAKICAgICBpZiAoY3VycmVudE1vZGUgIT0gTWVk
aWFSZW5kZXJpbmdOb25lKSAgCiAgICAgICAgIHRlYXJEb3duVmlkZW9SZW5kZXJpbmcoKTsKIAog
ICAgIHN3aXRjaCAocHJlZmVycmVkTW9kZSkgewotICAgIGNhc2UgTWVkaWFSZW5kZXJpbmdOb25l
OgotICAgICAgICBicmVhazsKICAgICBjYXNlIE1lZGlhUmVuZGVyaW5nTW92aWVWaWV3OgogICAg
ICAgICBjcmVhdGVRVE1vdmllVmlldygpOwogICAgICAgICBicmVhazsKKyAgICBjYXNlIE1lZGlh
UmVuZGVyaW5nTm9uZToKICAgICBjYXNlIE1lZGlhUmVuZGVyaW5nU29mdHdhcmVSZW5kZXJlcjoK
ICAgICAgICAgY3JlYXRlUVRWaWRlb1JlbmRlcmVyKCk7CiAgICAgICAgIGJyZWFrOwpAQCAtMTMw
OSw2ICsxMzA4LDEzIEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlOjphY2NlbGVyYXRlZFJlbmRl
cmluZ1N0YXRlQ2hhbmdlZCgpCiB9CiAjZW5kaWYKIAorYm9vbCBNZWRpYVBsYXllclByaXZhdGU6
Omhhc1NpbmdsZVNlY3VyaXR5T3JpZ2luKCkgY29uc3QKK3sKKyAgICAvLyBXZSB0ZWxsIHF1aWNr
dGltZSB0byBkaXNhbGxvdyByZXNvdXJjZXMgdGhhdCBjb21lIGZyb20gZGlmZmVyZW50IG9yaWdp
bnMKKyAgICAvLyBzbyB3ZSBhbGwgbWVkaWEgaXMgc2luZ2xlIG9yaWdpbi4KKyAgICByZXR1cm4g
dHJ1ZTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiBAaW1wbGVtZW50YXRpb24gV2Vi
Q29yZU1vdmllT2JzZXJ2ZXIKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
d2luL01lZGlhUGxheWVyUHJpdmF0ZVF1aWNrVGltZVdpbi5jcHAgYi9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3dpbi9NZWRpYVBsYXllclByaXZhdGVRdWlja1RpbWVXaW4uY3BwCmluZGV4IGU5
N2Q2NDYuLjAwYjhjMzQgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2lu
L01lZGlhUGxheWVyUHJpdmF0ZVF1aWNrVGltZVdpbi5jcHAKKysrIGIvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy93aW4vTWVkaWFQbGF5ZXJQcml2YXRlUXVpY2tUaW1lV2luLmNwcApAQCAtNDI3
LDkgKzQyNywzMyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZTo6cGFpbnQoR3JhcGhpY3NDb250
ZXh0KiBwLCBjb25zdCBJbnRSZWN0JiByKQogewogICAgIGlmIChwLT5wYWludGluZ0Rpc2FibGVk
KCkgfHwgIW1fcXRNb3ZpZSB8fCBtX2hhc1Vuc3VwcG9ydGVkVHJhY2tzKQogICAgICAgICByZXR1
cm47CisKKyAgICBib29sIHVzaW5nVGVtcEJpdG1hcCA9IGZhbHNlOworICAgIE93blB0cjxHcmFw
aGljc0NvbnRleHQ6OldpbmRvd3NCaXRtYXA+IGJpdG1hcDsKICAgICBIREMgaGRjID0gcC0+Z2V0
V2luZG93c0NvbnRleHQocik7CisgICAgaWYgKCFoZGMpIHsKKyAgICAgICAgLy8gVGhlIGdyYXBo
aWNzIGNvbnRleHQgZG9lc24ndCBoYXZlIGFuIGFzc29jaWF0ZWQgSERDIHNvIGNyZWF0ZSBhIHRl
bXBvcmFyeQorICAgICAgICAvLyBiaXRtYXAgd2hlcmUgUVRNb3ZpZVdpbiBjYW4gZHJhdyB0aGUg
ZnJhbWUgYW5kIHdlIGNhbiBjb3B5IGl0LgorICAgICAgICB1c2luZ1RlbXBCaXRtYXAgPSB0cnVl
OworICAgICAgICBiaXRtYXAuc2V0KHAtPmNyZWF0ZVdpbmRvd3NCaXRtYXAoci5zaXplKCkpKTsK
KyAgICAgICAgaGRjID0gYml0bWFwLT5oZGMoKTsKKworICAgICAgICAvLyBGSVhNRTogaXMgdGhp
cyBuZWNlc3Nhcnk/PworICAgICAgICBYRk9STSB4Zm9ybTsKKyAgICAgICAgeGZvcm0uZU0xMSA9
IDEuMGY7CisgICAgICAgIHhmb3JtLmVNMTIgPSAwLjBmOworICAgICAgICB4Zm9ybS5lTTIxID0g
MC4wZjsKKyAgICAgICAgeGZvcm0uZU0yMiA9IDEuMGY7CisgICAgICAgIHhmb3JtLmVEeCA9IC1y
LngoKTsKKyAgICAgICAgeGZvcm0uZUR5ID0gLXIueSgpOworICAgICAgICBTZXRXb3JsZFRyYW5z
Zm9ybShoZGMsICZ4Zm9ybSk7CisgICAgfQorCiAgICAgbV9xdE1vdmllLT5wYWludChoZGMsIHIu
eCgpLCByLnkoKSk7Ci0gICAgcC0+cmVsZWFzZVdpbmRvd3NDb250ZXh0KGhkYywgcik7CisgICAg
aWYgKHVzaW5nVGVtcEJpdG1hcCkKKyAgICAgICAgcC0+ZHJhd1dpbmRvd3NCaXRtYXAoYml0bWFw
LmdldCgpLCByLnRvcExlZnQoKSk7CisgICAgZWxzZQorICAgICAgICBwLT5yZWxlYXNlV2luZG93
c0NvbnRleHQoaGRjLCByKTsKIAogI2lmIERSQVdfRlJBTUVfUkFURQogICAgIGlmIChtX2ZyYW1l
Q291bnRXaGlsZVBsYXlpbmcgPiAxMCkgewpAQCAtNTQxLDYgKzU2NSwxMyBAQCB2b2lkIE1lZGlh
UGxheWVyUHJpdmF0ZTo6bW92aWVOZXdJbWFnZUF2YWlsYWJsZShRVE1vdmllV2luKiBtb3ZpZSkK
ICAgICBtX3BsYXllci0+cmVwYWludCgpOwogfQogCitib29sIE1lZGlhUGxheWVyUHJpdmF0ZTo6
aGFzU2luZ2xlU2VjdXJpdHlPcmlnaW4oKSBjb25zdAoreworICAgIC8vIFdlIHRlbGwgcXVpY2t0
aW1lIHRvIGRpc2FsbG93IHJlc291cmNlcyB0aGF0IGNvbWUgZnJvbSBkaWZmZXJlbnQgb3JpZ2lu
cworICAgIC8vIHNvIHdlIGFsbCBtZWRpYSBpcyBzaW5nbGUgb3JpZ2luLgorICAgIHJldHVybiB0
cnVlOworfQorCiB9CiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy93aW4vTWVkaWFQbGF5ZXJQcml2YXRlUXVpY2tUaW1lV2luLmggYi9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3dpbi9NZWRpYVBsYXllclByaXZhdGVRdWlja1RpbWVXaW4uaAppbmRleCBk
YTQ5MDkxLi5mNTg0MTQ4IDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dp
bi9NZWRpYVBsYXllclByaXZhdGVRdWlja1RpbWVXaW4uaAorKysgYi9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3dpbi9NZWRpYVBsYXllclByaXZhdGVRdWlja1RpbWVXaW4uaApAQCAtOTAsNiAr
OTAsNyBAQCBwdWJsaWM6CiAgICAgCiAgICAgdm9pZCBwYWludChHcmFwaGljc0NvbnRleHQqLCBj
b25zdCBJbnRSZWN0Jik7CiAgICAgCisgICAgYm9vbCBoYXNTaW5nbGVTZWN1cml0eU9yaWdpbigp
IGNvbnN0OwogCiBwcml2YXRlOgogICAgIE1lZGlhUGxheWVyUHJpdmF0ZShNZWRpYVBsYXllciop
Owo=
</data>
<flag name="review"
          id="16357"
          type_id="1"
          status="+"
          setter="hyatt"
    />
          </attachment>
      

    </bug>

</bugzilla>