From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org [79.124.17.100]) by master.gitmailbox.com (Postfix) with ESMTP id E1B1C49E68 for ; Tue, 12 Mar 2024 17:15:07 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id F033A68D1CD; Tue, 12 Mar 2024 19:15:04 +0200 (EET) Received: from mail-lj1-f178.google.com (mail-lj1-f178.google.com [209.85.208.178]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id DDFF268CBAD for ; Tue, 12 Mar 2024 19:14:58 +0200 (EET) Received: by mail-lj1-f178.google.com with SMTP id 38308e7fff4ca-2d26227d508so87376591fa.2 for ; Tue, 12 Mar 2024 10:14:58 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1710263698; x=1710868498; darn=ffmpeg.org; h=to:subject:message-id:date:from:in-reply-to:references:mime-version :from:to:cc:subject:date:message-id:reply-to; bh=WkHfp+7QBEu/Tyi5Ea6YLj5OzXJy+E+v+qYglCFg8zU=; b=g2UbslO/IwjOiMnlOq30/mYMDn2DgyFBm4bE8DBM3kbl5Pw9UYZ2zddr1Pk+ANMLoF +RQveRt4UzjUcL8hi8U1aolUI+K3O4HNXGq6CElh7L8tJZ5hqAgfkpyX7CHCdpYteErq dTaXnf6xiddBwdTHpAL82aONOajaf3V0wgIIB+0ZrHS/wCvT4CumhGMDtQdyFVizFo1e AErt09VZ7KmuIgS7FLqwkG19HmKId6Nqht3qN737myRwXfRrx+J85MfL9gnkbSpRAOtK oECjQNU5lz7BQsfuEDGQ/nlI+vHkq2nW0B8wwZatVlOvED9NLng/4y1OqzvEZjD9pe/v tUfg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1710263698; x=1710868498; h=to:subject:message-id:date:from:in-reply-to:references:mime-version :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=WkHfp+7QBEu/Tyi5Ea6YLj5OzXJy+E+v+qYglCFg8zU=; b=RfUwylPph87re6z2QNl2s3UWRlM7cYeRJr1ByAZpB6XGP3KZ3xPMWpPlnHkz5ijEAO y6Fod99Bwj4rl1bVxaIRwrzCTD4AIbH0MwwyMORkOs5jsnQTKwJqQjod1Iwb5RWCiPTH GkD6v9YW7+gdWQQUW3gJakmim6sJF6h+r2TKtcxTdembyBX4ylhuGan/IcnoIXOEXPYY M9ika0ZGfEBEaA9iUYBO34GDOqCHtHmLo9MVFybx4LAhuwQpb8i2GlM/4OqpTN/kFSWs 2qoHyBlmyiQaLWlE+/dL9vsi7YU3iPDLoglyvQtEg3YErN3wYAO7lUan3NVLGuFn0eR8 y+gQ== X-Gm-Message-State: AOJu0Yy92EH822Kho8F9E0ajIewnjUtQDThJ/0DIkAyHcji18rQKSHjJ mzavDD0Xe4dzmXVxjdn8z1TR9K8gdXY+up+WYyYriQHplR1Jgs1yZiMeVUn6aiZrSOBqxm5TX7G OAMC4+tfF+2RI6FKUoUiLqNz0N/oahclx0Rg= X-Google-Smtp-Source: AGHT+IExu3cHXD/G01s9FyTM/uXXP3fP06VV1roPpM0luvtCdXtVi2+IdTQkN7WSjuaycxHBswiML4WIkzuHktIsNKE= X-Received: by 2002:a2e:a7cf:0:b0:2d2:a3c4:53 with SMTP id x15-20020a2ea7cf000000b002d2a3c40053mr8750365ljp.23.1710263697052; Tue, 12 Mar 2024 10:14:57 -0700 (PDT) MIME-Version: 1.0 References: <037.cb9821e3b48f657909b93eb043f05720@avcodec.org> <052.37b53673b298748e0746920ec1d4551d@avcodec.org> <6d595a68-14c8-4a22-b52b-a9ed98587d5c@gmail.com> <20240306125639.GU6401@pb2> <170996942472.7287.4678551313607358745@lain.khirnov.net> <8bbbc7fa-fe0f-4dd5-bc78-aae6106413d0@betaapp.fastmail.com> <20240310012542.GA6401@pb2> In-Reply-To: <20240310012542.GA6401@pb2> From: "Ronald S. Bultje" Date: Tue, 12 Mar 2024 13:14:45 -0400 Message-ID: To: FFmpeg development discussions and patches X-Content-Filtered-By: Mailman/MimeDel 2.1.29 Subject: Re: [FFmpeg-devel] Indefinite ban request [RFC] Was: Re: [FFmpeg-trac] #10882(undetermined:new): swscale wastefully scales luma during yuv420p -> yuv422p X-BeenThere: ffmpeg-devel@ffmpeg.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: FFmpeg development discussions and patches List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: FFmpeg development discussions and patches Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" Archived-At: List-Archive: List-Post: SGVsbG8sCgpPbiBTYXQsIE1hciA5LCAyMDI0IGF0IDg6MjXigK9QTSBNaWNoYWVsIE5pZWRlcm1h eWVyIDxtaWNoYWVsQG5pZWRlcm1heWVyLmNjPgp3cm90ZToKCj4gU29tZSBtZW1iZXJzIG9mIHRo ZSBDQyB3YW50IHRvIGluZGVmaW5pdGVseSBiYW4gQmFsbGluZwo+IGZyb20gdHJhYy4gQW5kIGFz IG91ciBkb2MvY29tbXVuaXR5LnRleGkgc2F5czoKPiAiSW5kZWZpbml0ZSBiYW5zIGZyb20gdGhl IGNvbW11bml0eSBtdXN0IGJlIGNvbmZpcm1lZCBieSB0aGUgR2VuZXJhbAo+IEFzc2VtYmx5LCBp biBhIG1ham9yaXR5IHZvdGUuIgo+Cj4gVGh1cyBzb21lIENDIG1lbWJlciB3aXNoZXMgdG8gaW52 b2x2ZSB0aGUgcHVibGljIGhlcmUKPiAocmVhbGx5IHRoZXJlcyBubyBvdGhlciBvcHRpb24sIHRo ZSBHQSBjYW5ub3QgZGlzY3Vzcy92b3RlIG9uIHdoYXQgaXQKPiBkb2VzbnQga25vdykKPgo+IEFs c28gcGVvcGxlIGhhdmUgYXNrZWQgZm9yIG1vcmUgdHJhbnNwYXJlbmN5IGFuZCBpIHN0cm9uZ2x5 IGFncmVlIHdpdGgKPiB0cmFuc3BhcmVuY3kuCj4KCkZvciByZWZlcmVuY2UsIEFudG9uIGFuZCBJ IGJhbm5lZCAiYmFsbGluZyIgZnJvbSBJUkMgaW4gTm92ZW1iZXIuIFdlCihGRm1wZWcncyBDQykg aGF2ZSBzaW5jZSB0aGVuIHJlY2VpdmVkIGEgcmVxdWVzdCB0byBiYW4gaGltIGZyb20gdHJhYyBh cwp3ZWxsLgoKVGhlIGJhbiBvbiBJUkMgd2FzIGZvbGxvd2luZyB3aGF0IGhhcHBlbmVkIGluICNm Zm1wZWctZGV2ZWwgb24gMTEvMjMvMjAyMyAoCmh0dHBzOi8vbGliZXJhLmlyY2xvZy53aGl0ZXF1 YXJrLm9yZy9mZm1wZWctZGV2ZWwvMjAyMy0xMS0yMykKSSd2ZSBjb3BpZWQgdGhlIGxvZ3MgZnJv bSB0aGF0IGxpbmsgYmV0d2VlbiAxNDo0MyBhbmQgMTg6NTMgYmVsb3cgaGVyZSBmb3IKcmVmZXJl bmNlLiBNeSBuaWNrIGlzICJCQkIiLCBhbmQgQW50b24ncyBuaWNrIGlzICJlbGVucmlsIi4gV2Ug YWxzbwpyZWNlaXZlZCBoZWxwIGZyb20gamVzcywgb25lIG9mIExpYmVyYSdzIGFkbWlucy4KCjE0 OjQzIDxjb3VybWlzY2g+IGlzIFZhbGVyaWkgWmFwb2Rvdm5pa292IHRoZSBzYW1lIHBlcnNvbiB0 aGF0IHdhcyB0cm9sbGluZwpoZXJlIGVhcmxpZXI/CjE0OjQ0IDxKRUVCPiB5ZXMKMTQ6NDQgPEpF RUI+IHZhbHphcG9kIGlzIGhpcyBvdGhlciBuaWNrbmFtZQoxNDo1NyA8Y291cm1pc2NoPiBva2F5 IHNvIGhlJ3MgYWN0aXZlIGluIFZMQyBhbmQgcGxhY2VibyB0b28KMTQ6NTcgPEpFRUI+IHllYQox NDo1NyA8SkVFQj4gYW5kIG1hbnkgb3RoZXIgcHJvamVjdHMgd2hpY2ggaGF2ZW4ndCBiYW5uZWQg aGltIHlldAoxNTo1NiA8emFkZWRmcXVsPiBhbmQgeW91IHdpbGwgbm90IGJlIGFibGUgdG8gYmFu IG1lCjE1OjU2IDx6YWRlZGZxdWw+IFlvdSB3YW50IHRoZSBNb3Njb3cgdHJvbGxmYXJtPwoxNTo1 NyA8emFkZWRmcXVsPiBZb3Ugd2lsbCBnZXQgaXQKMTU6NTcgPHphZGVkZnF1bD4gSnVzdCBkbyBu b3QgZm9yZ2V0IEkgb3duIGNvcHlyaWdodCBpbiBmZm1wZWcgdG9vLgoxNTo1OCA8SkVFQj4gaW1w bHlpbmcgc29tZW9uZSBoZXJlIGFza2VkIGZvciBpdC4geW91J3JlIHRoZSBvbmUgYmVoYXZpbmcK aG93IHlvdSBhcmUuIG1heWJlIHlvdSBmZWVsIHlvdSdyZSBjb21wbGV0ZWx5IE9LLCBidXQgYWxh cyB0aGF0IGlzIG5vdCBhCnZpZXcgc2hhcmVkIGJ5IG1hbnkuIG1heWJlIHlvdSdyZSBtdWNoIGJl dHRlciBJUkwsIGJ1dCBuby1vbmUgaGVyZSBoYXMgaGFkCnRoZSBjaGFuY2Ugb2YgZXhwZXJpZW5j aW5nIHRoYXQuCjE1OjU5IDx6YWRlZGZxdWw+IEJUVywgSSByZWFsbHkgYW0gc3VycHJpc2VkLiBJ IGhlbHBlZCB5b3UgdHJhYyBwcm9ncmVzcyBhcwpCYWxsaW5nIGFuZCBub3cgdGhhdCBpcyB3aGF0 IEkgZ2V0PyBMT0wsIG1heWJlIHN0YXJ0IHdpdGggdHJhYyB0aGVuLCBCaWRlbgpsaWJ0YXJkIHZv dGVycy4gSXMgdGhlIFJ1c3NpYW4gY29sbHVzaW9uIGluIHRoZSByb29tIHdpdGggcmlnaHQgbm93 PwoxNTo1OSA8emFkZWRmcXVsPiAqd2l0aCB1cwoxNjowMCA8emFkZWRmcXVsPiBjb3VybWlzY2gg SSBhbSBhY3RpdmUgYWxzbyBvbiB3aXJlc2hhcmssIGxpYnRvcnJlbnQKMTY6MDAgPHphZGVkZnF1 bD4gZ251cmFkaW8gKHdhcyksIHJ0bC1zZHIgcHJvamVjdCwgYWxsIEludGVsIGxpYnJhcmllcywK Y2xhbmcgbm93IHRvby4KMTY6MDEgPHphZGVkZnF1bD4gQXJlIHlvdSBnb2luZyBhbmQgdHJ5IHRv IGJhbiBiZSB0aGVyZSB0b28/IFlvdSB3aWxsIGxvc2UuCkp1c3QgbGlrZSBCaWRlbiBsb3N0IHRo ZSBlbGVjdGlvbiwgYWRtaXQgaXQKMTY6MDMgPHphZGVkZnF1bD4gQlRXLCBiYW5uaW5nIGFsbCBW UE5zIGlzIG5pY2UuIEFyZSB5b3UgdXNpbmcgc2FtZSBmaWx0ZXIKYXMgd2lraXBlZGlhPyBDb29s LiBCdXQgYWdhaW4sIGdpdGh1YiBzZXJ2ZXJzIGRvIG5vIHVzZSBWUE5zLCB0aGV5IGFyZQpyZWFs LiBBbmQgc28gYXJlIGFsbCBkaWZmZXJlbnQgdmlydHVhbCBtYWNoaW5lcy4KMTY6MDMgPHphZGVk ZnF1bD4gT2gsIGFuZCBJIHdlYi5hcmNoaXZlZCB0aGF0IGRpc2N1c3Npb24gb24gZ2l0aHViCjE2 OjA1IDx6YWRlZGZxdWw+IG9uIHZsYydzIGdpdGxhYiwgSSBtZWFuCjE2OjA2IDxtaWNyb2NoaXBf PiBCaWRlbiBsb3N0IHRoZSBlbGVjdGlvbiwgY2FuIHlvdSBMT0w/Pz8KMTY6MDYgPG1pY3JvY2hp cF8+IGFub3RoZXIgbWFyb29uCjE2OjA3IDx6YWRlZGZxdWw+IEpFRUI6IEkgYW0gdGhlIHNhbWUg aW4gcmVhbCBsaWZlLCBCVFcuIFlvdSBqdXN0IGNhbm5vdApiYW4gYSBwZXJzb24gaW4gcmVhbCBs aWZlLCBvbmx5IGtpbGwuIExpa2UgdGhhdCB3b21hbiB0aGF0IHNhaWQgQWxsIGxpdmVzCm1hdHRl ciBpbiBVU0EuCjE2OjA5IHphZGVkZnF1bCB3YXMga2lja2VkIGZyb20gI2ZmbXBlZy1kZXZlbCBi eSBlbGVucmlsIFt6YWRlZGZxdWxdCjE2OjA5IDxlbGVucmlsPiBwbHMgZG8gTk9UIGVuZ2FnZSB0 aGUgdHJvbGwKMTY6MTAgPGNvdXJtaXNjaD4gSSBibGFtZSBUeXBYIHRoaXMgdGltZSwgYnV0IGhl IGRpZCBub3QgImtub3ciCjE2OjEzIDx3c3FhY2FkcT4gQmFubmluZyBpcyBhbHNvIGVuZ2FnaW5n LCBBbnRvbgoxNjoxNCA8d3NxYWNhZHE+IEp1c3QgbGlrZSB5b3VyIGtub3dsZWRnZSBpbiB0b3Ag cG9zdGluZy4KMTY6MTQgPHE2Nj4gaHR0cHM6Ly9pLmltZ3VyLmNvbS8zdHY0YzV4LmpwZwoxNjox NSB3c3FhY2FkcSB3YXMga2lja2VkIGZyb20gI2ZmbXBlZy1kZXZlbCBieSBlbGVucmlsIFt3c3Fh Y2FkcV0KMTY6MTkgPEJCQj4gbWFuIHRoYXQgZHVkZSBpcyBwZXJzaXN0ZW50IDopCjE2OjE5IDxl bGVucmlsPiBkb2VzIGhlIG5vdCBoYXZlIHNvbWV0aGluZyBiZXR0ZXIgdG8gZG8gd2l0aCBoaXMg bGlmZQoxNjoxOSA8Y291cm1pc2NoPiB0YWtlcyBjb21taXRtZW50IHRvIGNvbnRyYWN0IGEgVlBO IGp1c3QgZm9yIHRyb2xsaW5nCm9wZW5zb2FycwoxNjoyMCA8Y291cm1pc2NoPiBvciBtYXliZSBp dCdzIHByb3ZpZGVkIGZvciBvZmZpY2lhbCBNb3Jkb3IgcHVibGljIHNlcnZpY2UKdXNlCjE2OjIw IDxCQkI+IDopCjE2OjIwIDxCQkI+IHdlJ2xsIGtlZXAgYmFubmluZyB0aGUgYmFsbGluZwoxNjoy MCA8QkJCPiBldmVyeSB0aW1lIEkgc2F3IHRoYXQsIEkgaGVhciB0aGUgZHdhcmZzIGZyb20gdGhl IGhvYmJpdAoxNjoyMCA8SkVFQj4gY291cm1pc2NoOiB0byBiZSBob25lc3QgdGhlIGxvY2F0aW9u IGZyb20gd2hpY2ggYSBwZXJzb24gaXMKZG9lcyBub3QgbWF0dGVyIGF0IGFsbAoxNjoyMSA8SkVF Qj4gcy9pcy9jb21lcy8KMTY6MjEgPGVsZW5yaWw+IHVudHJ1ZQoxNjoyMSA8ZWxlbnJpbD4gd2Vy ZSBoZSBmcm9tIGEgY2l2aWxpemVkIGNvdW50cnksIHdlIGNvdWxkIHVzZSB0aGVpciBsYXcKZW5m b3JjZW1lbnQgc2VydmljZXMKMTY6MjEgPEpFRUI+IHllYSwgYnV0IHNvbWVvbmUgYmVpbmcgYW4g YXNzaG9sZSBvciB0cm9sbCBpcyBub3QgaXMgYSBwZXJzb24KcHJvYmxlbQoxNjoyMSA8SkVFQj4g YXNkZgoxNjoyMSA8Y291cm1pc2NoPiBJIHdhcyBhbGx1ZGluZyB0byB0cm9sbCBmYXJtcy4gTm90 IGV2ZXJ5IGNvdW50cnkgaGFzCnRoZW0sIGVzcGVjaWFsbHkgbm90IG9uIHRoZSBzY2FsZSBvZiB0 aGUgUnVzc2lhbiBmZWRlcmF0aW9uCjE2OjIxIDxKRUVCPiAqaXMqIGEgcGVyc29uIHByb2JsZW0K MTY6MjIgPGNvdXJtaXNjaD4gb2J2aW91c2x5IHNvbWUgZGV2cyBvdmVyIHRoZXJlIGFyZSByZWFz b25hYmxlIHBlb3BsZQoxNjoyNiA8dWtyYWluZXN1Y2tzPiBCVFcsIFRydW1wIGp1c3QgbmVlZGVk IDQ0MDAwIHZvdGVzIHRvIHdpbgoxNjoyNyA8cHN5a29zZT4gaSB0aG91Z2h0IHlvdSBzYWlkIGhl IHdvbj8gYmUgY29uc2lzdGVudAoxNjoyNyA8dWtyYWluZXN1Y2tzPiBBbmQgc28gYXMgdGhlcmUg YXJlIHVwIHRvIGEgbWlsbGlvbiBiYWxsb3QgdGhhdCB3ZXJlCm5vdCBvYnNlcnZlZCBoZSByZWFs bHkgZGlkIHdpbi4KMTY6MjcgdWtyYWluZXN1Y2tzIHdhcyBiYW5uZWQgb24gI2ZmbXBlZy1kZXZl bCBieSBCQkIgWyohfgp1a3JhaW5lc3VAMTk1LjE4OS4yMjYuNDBdCjE2OjI3IHVrcmFpbmVzdWNr cyB3YXMga2lja2VkIGZyb20gI2ZmbXBlZy1kZXZlbCBieSBCQkIgW1lvdXIgYmVoYXZpb3IgaXMK bm90IGNvbmR1Y2l2ZSB0byB0aGUgZGVzaXJlZCBlbnZpcm9ubWVudC5dCjE2OjI3IDxlbGVucmls PiBwc3lrb3NlOiBpIG1lYW4gaXQKMTY6MjcgPGVsZW5yaWw+IGRvIE5PVCBlbmdhZ2UgdGhlIHRy b2xsCjE2OjI4IDx1a3JhaW5lc3VjY3h4a3M+IEFsc28sIENsaW50b24gd2FzIGZpbmVkIGZvciBT dGVlbGUgZG9zc2llcgoxNjoyOCB1a3JhaW5lc3VjY3h4a3Mgd2FzIGJhbm5lZCBvbiAjZmZtcGVn LWRldmVsIGJ5IEJCQiBbKiF+CnVrcmFpbmVzdUA5MS4xOTMuMTkuMTQ3XQoxNjoyOCB1a3JhaW5l c3VjY3h4a3Mgd2FzIGtpY2tlZCBmcm9tICNmZm1wZWctZGV2ZWwgYnkgQkJCIFtZb3VyIGJlaGF2 aW9yCmlzIG5vdCBjb25kdWNpdmUgdG8gdGhlIGRlc2lyZWQgZW52aXJvbm1lbnQuXQoxNjoyOSA8 Y291cm1pc2NoPiArciBhbHJlYWR5CjE2OjI5IDxlbGVucmlsPiBuYWgKMTY6MjkgPEJCQj4gSSdt IHBlcnNvbmFsbHkgZmluZSB3aXRoICtyCjE2OjI5IDxCQkI+IGJ1dCBpZiBvdGhlcnMgb2JqZWN0 IEkgd29uJ3QgaW5zaXN0IG9uIGl0CjE2OjMwIDxlbGVucmlsPiBJIGRvbid0IHRoaW5rIGl0J3Mg YW55d2hlcmUgYmFkIGVub3VnaCB0byByZXF1aXJlICtyCjE2OjMwIDxlbGVucmlsPiAoeWV0PykK MTY6MzAgPGJzYnN2c3Zzdj4gQ2xpbnRvbiB3YXMgZm91bmQgdG8gYmUgdXNpbmcgZ21haWwKMTY6 MzAgYnNic3ZzdnN2IHdhcyBiYW5uZWQgb24gI2ZmbXBlZy1kZXZlbCBieSBCQkIgWyohfgpic2Jz dnN2c3ZAMjA1LjE4NS4xMjcuODZdCjE2OjMwIGJzYnN2c3ZzdiB3YXMga2lja2VkIGZyb20gI2Zm bXBlZy1kZXZlbCBieSBCQkIgW1lvdXIgYmVoYXZpb3IgaXMgbm90CmNvbmR1Y2l2ZSB0byB0aGUg ZGVzaXJlZCBlbnZpcm9ubWVudC5dCjE2OjMwIGRiYnNic2JzIHdhcyBiYW5uZWQgb24gI2ZmbXBl Zy1kZXZlbCBieSBCQkIgWyohfmRiYnNic2JzQDUwLjcuMTE1Ljk1XQoxNjozMCBkYmJzYnNicyB3 YXMga2lja2VkIGZyb20gI2ZmbXBlZy1kZXZlbCBieSBCQkIgW1lvdXIgYmVoYXZpb3IgaXMgbm90 CmNvbmR1Y2l2ZSB0byB0aGUgZGVzaXJlZCBlbnZpcm9ubWVudC5dCjE2OjMxIDxCQkI+IChtYXli ZSB0aGF0IHdhcyB0b28gZWFybHksIGFwb2xvZ2llcyBpZiBpdCB3YXMgOikgKQoxNjozMSA8cTY2 PiA5OS45JSBub3QKMTY6MzEgPGVsZW5yaWw+IGkgd2lzaCBpdCB3YXMgZmVhc2libGUgdG8gYWxs IG9mIHJ1c3NpYQoxNjozNCA8ZGJic2JzYnM+IEFuZCBhbHNvIENvbWV5IGxpZWQgd2hlbiBoZSBz YWlkIG5vdCBldmVuIGdtYWlsCjE2OjM0IDxkYmJzYnNicz4gSnVkaWNpYWwgd2F0Y2ggYWxtb3N0 IGRlcG9zZWQgQ2xpbnRvbiBpbiB0aGF0IGNhc2UKMTY6MzQgPGRiYnNic2JzPiBCVFcsIFRydW1w IG5ldmVyIHdpdGhvbGQgYWlkIHRvIFVrcmFpbmUsIGl0IHdhcyByZWxlYXNlZApieSB0aGUgZW5k IG9mIGZpc2NhbCB5ZWFyIDMwIFNlcHRlbWJlciwgSmF2ZWxpbnMgd2VyZSBub3QgcGFydCBvZiBh aWQ6IHRoZXkKd2VyZSBib3VnaHQgYnkgVWtyYWluZSwgYW5kIGFsc28gWmVsZW5za3kgbWVudGlv bmVkIEJpZGVuIGZpcnN0LgoxNjozNCA8ZGJic2JzYnM+IEVyaWMgQ2lhcmFtZWxsYSBrbmV3IEln b3IgRGFuY2hlbmtvLiBZZXAuIFlvdXR1YmUgc3RpbGwKYmFucyBjb21tZW50cyB3aXRoIEVyaWMg Q2lhcmFtZWxsYSBpbiBpdC4KMTY6MzQgZGJic2JzYnMgd2FzIGJhbm5lZCBvbiAjZmZtcGVnLWRl dmVsIGJ5IEJCQiBbKiF+ZGJic2JzYnNANjYuOTAuOTUuMTNdCjE2OjM0IGRiYnNic2JzIHdhcyBr aWNrZWQgZnJvbSAjZmZtcGVnLWRldmVsIGJ5IEJCQiBbWW91ciBiZWhhdmlvciBpcyBub3QKY29u ZHVjaXZlIHRvIHRoZSBkZXNpcmVkIGVudmlyb25tZW50Ll0KMTY6MzUgPGphbXJpYWw+IGhlIGhh ZCBhIHdhbGwgb2YgdGV4dCBpbiB0aGUgY2xpcGJvYXJkLCBsb2wKMTY6MzkgPGxwbGxwbGxwPiBH ZW9yZ2UgRmxveWQgd2FzIGEgcG9ybiBzdGFyIHdpdGggYWN0dWFsIHZpZGVvIHN0aWxsCm9ubGlu ZSwgaGUgd2FzIENPVklEIGluZmVjdGVkLCBoYWQgYSBnZW5ldGljYWwgYmxvb2QgZGVhc2VzZSBh bmQgYWxzbyBhCnR1bW9yIGFuZCBhIGJhZCBoZWFydC4gSXMgbm90IHRoYXkgZnVubnk/IE9oLCBh bmQgYWxzbyBoZSB3YXMgaW4gcHJpc29uCmxpa2UgOCB0aW1lcy4gQW5kIGhlIGRpZWQgaW4gdGhl IGFtYnVsYW5jZS4KMTY6MzkgPGxwbGxwbGxwPiBBTEVYIFNvcm9zIGFjdHVhbGx5IHdhcyBiZWhp bmQgc29tZSBvZiB0aGUgc2l4IGxhYnMgaW4KV3VoYW4sIENoaW5hLCBoaXMgV3VYaSBBcHB0ZWNo IGNvbXBhbnkgYWN0dWFsbHkgZGlkIEdPRiByZXNlYXJjaCBpbiBmdXJpbgpjbGVhdmFnZSBzaXRl IGluIHRob3NlIGxhYnMuIEFsc28sIHdlIGluIFJ1c3NpYSBzYXkgc29yb3N5YXRhIGZvciBhbGwK cGVvcGxlIGluIFVrcmFpbmUgaW4ga2V5IHBvc2l0aW9ucyBhbmQgVm9pY2UgcGFydHkgb2YgUmFk YSBpcyBjYWxsZWQgVm9pY2UKb2YgU29yb3MuCjE2OjM5IGxwbGxwbGxwIHdhcyBiYW5uZWQgb24g I2ZmbXBlZy1kZXZlbCBieSBCQkIgWyohfmxwbGxwbGxwQDIzLjIzNy43MS4xMl0KMTY6MzkgbHBs bHBsbHAgd2FzIGtpY2tlZCBmcm9tICNmZm1wZWctZGV2ZWwgYnkgQkJCIFtZb3VyIGJlaGF2aW9y IGlzIG5vdApjb25kdWNpdmUgdG8gdGhlIGRlc2lyZWQgZW52aXJvbm1lbnQuXQoxNjo0MSA8YW5k cmV3cHJpbmNlaXNhbT4gV2lyZWxvZ2ljIFRlY2hub2xvZ3kgQVMgKE5yLiA5NjIzNykKMTY6NDEg PGFuZHJld3ByaW5jZWlzYW0+IERpZ2l0ZXggb3JnYW5pemF0aW9uIExMUCBPQzM2MDY1NywgVUsK MTY6NDEgPGFuZHJld3ByaW5jZWlzYW0+IEJvaGFpIEhhcnZlc3QgUlNUIChCSFIpCjE2OjQxIDxh bmRyZXdwcmluY2Vpc2FtPiBEZXZvbiBBcmNoZXIsIEh1bnRlciBCaWRlbiwgQWxhbiBBcHRlciwg QWxla3NhbmRlcgpLd2FzbmV3c2tpCjE2OjQxIDxhbmRyZXdwcmluY2Vpc2FtPiBTdGVwaGFuIEhh bHBlciAoU291cmNlIDIpIGFuZCBDcm9zc2ZpcmUgVHlwaG9vbgooR2VvcmdlKSBTb3VyY2UgMSBT dGVlbGUgYS5rLmEgYXMgc3ViLXNvdXJjZQoxNjo0MSA8YW5kcmV3cHJpbmNlaXNhbT4gQ0hTICMz L1NvdXJjZSAzIHJlY2VudGx5IGlkZW50aWZpZWQgYXMgSmVmZmVyeQpXaXNlbWFuLgoxNjo0MSA8 YW5kcmV3cHJpbmNlaXNhbT4gQ2FydGVySGVhdnlJbmR1c3RyaWVzQGdtYWlsLmNvbSBwb3NpdGl2 ZSBTdWJwb2VuYQoxNjo0MSA8YW5kcmV3cHJpbmNlaXNhbT4gQ2hyaXN0b3BoZXIgU3RlZWxlIGlz IG5vdGVkIGFzIOKAnFNvdXJjZSAjMeKAnS4gIEdsZW5uClNpbXBzb24gb2YgRnVzaW9uLUdQUyBp cyBub3RlZCBhcyDigJxpZGVudGlmaWVkIFUuUy4gcGVyc29u4oCdIG9yIOKAnGJ1c2luZXNzCmFz c29jaWF0ZeKAnTsgYW5kIFBlcmtpbnMgQ29pZSBpcyB0aGUg4oCcVS5TLWJhc2VkIGxhdyBmaXJt LuKAnQoxNjo0MSA8YW5kcmV3cHJpbmNlaXNhbT4KaHR0cHM6Ly9jY3JlY29yZGVyLm9yZy9yZWNv cmRpbmdzL2dldF9kb2NfYnlfaWQvNDUwMzA1OTQ5LyBPY3RvYmVyIDI5IDIwMTYKMjggcmVvcGVu aW5nIE1ZRQoxNjo0MSA8YW5kcmV3cHJpbmNlaXNhbT4gRmVicnVhcnkgMTkgMjAxNwoxNjo0MSA8 YW5kcmV3cHJpbmNlaXNhbT4gRnJhbmtsaW4gVGVtcGxlbnRvbiBJbnZlc3RlbWVudHMKMTY6NDEg PGFuZHJld3ByaW5jZWlzYW0+IFNTQSAxIFBpZXRrYQoxNjo0MSA8YW5kcmV3cHJpbmNlaXNhbT4g QXR0MiBLZXZpbiBDbGluZXNtaXRoCjE2OjQxIDxhbmRyZXdwcmluY2Vpc2FtPiBBdHQxIExpc2Eg UGFnZQoxNjo0MSA8YW5kcmV3cHJpbmNlaXNhbT4gU29tbWEgY2FzZSBhZ2VudCAxCjE2OjQxIDxh bmRyZXdwcmluY2Vpc2FtPgpodHRwczovL3R3aXR0ZXIuY29tL3dhbGthZnlyZS9zdGF0dXMvMTI0 ODgzNjA0Mzc1Mjc3NTY4MD9zPTE5CjE2OjQxIDxhbmRyZXdwcmluY2Vpc2FtPiBQZXJzb24gMS9T b3VyY2UgRS9TZXJnZWkgTWlsbGlhbiBTb3VyY2UgNiAoZXgKU2lhcmhlaSBLdWt1dHMpCjE2OjQx IDxhbmRyZXdwcmluY2Vpc2FtPiBDcm9zc2ZpcmUgTGF0aXR1ZGUgRG9uYWxkIEouIFRSVU1QIChq dXN0IHByb3Bvc2VkKQoxNjo0MSBhbmRyZXdwcmluY2Vpc2FtIHdhcyBiYW5uZWQgb24gI2ZmbXBl Zy1kZXZlbCBieSBCQkIgWyohfgphbmRyZXdwcmlANjYuOTAuNzQuODddCjE2OjQxIGFuZHJld3By aW5jZWlzYW0gd2FzIGtpY2tlZCBmcm9tICNmZm1wZWctZGV2ZWwgYnkgQkJCIFtZb3VyIGJlaGF2 aW9yCmlzIG5vdCBjb25kdWNpdmUgdG8gdGhlIGRlc2lyZWQgZW52aXJvbm1lbnQuXQoxNjo0MiA8 QkJCPiBlbGVucmlsOiBsZXQgbWUga25vdyB3aGVuIHlvdSdyZSByZWFkeSBmb3IgK3IgOikKMTY6 NDIgPGphbXJpYWw+IGp1c3Qgc2V0ICtyCjE2OjQzIDxtbW1tbW1tbW1tbW1tbm5uPiBCVFcsIHlv dSB3aWxsIGdldCBhbGwgRkJJIHJhaWRlZCBmb3IgdGhpcyBpbmZvLApwcm9iYWJseQoxNjo0MyBt bW1tbW1tbW1tbW1tbm5uIHdhcyBiYW5uZWQgb24gI2ZmbXBlZy1kZXZlbCBieSBCQkIgWyohfgpt bW1tbW1tbW1ANDUuOTUuMTY5LjEyM10KMTY6NDMgbW1tbW1tbW1tbW1tbW5ubiB3YXMga2lja2Vk IGZyb20gI2ZmbXBlZy1kZXZlbCBieSBCQkIgW1lvdXIgYmVoYXZpb3IKaXMgbm90IGNvbmR1Y2l2 ZSB0byB0aGUgZGVzaXJlZCBlbnZpcm9ubWVudC5dCjE2OjQ0IDxCQkI+IG9kZGx5LCBteSBVSSBo YXMgbm8gd2F5IG9mIHNldHRpbmcgK3IgOikKMTY6NDQgPEJCQj4gSSBrbm93IHdoYXQgcmVzcG9u c2UgSSdtIGdvaW5nIHRvIGdldCB0byB0aGF0CjE2OjQ1IDxCQkI+IHRueAoxNjo0NSA8QkJCPiBo b3cgb2Z0ZW4gZG8gd2UgY2xlYW4gdXAgdGhlIGJhbmxpc3Q/IDopCjE2OjQ1IDxlbGVucmlsPiBi b28KMTY6NDYgPEJCQj4ganVzdCBmb3IgYSBmZXcgZGF5cy4uLiBob3BlZnVsbHkKMTY6NDcgPGJh bGxpbmc+IENvcHlyaWdodCAoYykgMTk5NiBNaWNyb3NvZnQgQ29ycG9yYXRpb24KMTY6NDcgPGJh bGxpbmc+IE1vZHVsZSBOYW1lOgoxNjo0OCA8YmFsbGluZz4gICAgIGZheGRvYy5jcHAKMTY6NDgg PGJhbGxpbmc+IEFic3RyYWN0OgoxNjo0OCA8YmFsbGluZz4gICAgIFRoaXMgbW9kdWxlIGNvbnRh aW5zIGFsbCBjb2RlIG5lY2Vzc2FyeSB0byBwcmludCBhbgoxNjo0OCA8YmFsbGluZz4gICAgIGV4 Y2hhbmdlIG1lc3NhZ2UgYXMgYSBmYXggZG9jdW1lbnQuCjE2OjQ4IDxiYWxsaW5nPiBBdXRob3I6 CjE2OjQ4IDxiYWxsaW5nPiAgICAgV2VzbGV5IFdpdHQgKHdlc3cpIDEzLUF1Zy0xOTk2CjE2OjQ4 IDxiYWxsaW5nPiBSZXZpc2lvbiBIaXN0b3J5OgoxNjo0OCA8YmFsbGluZz4gICAgIDIwLzEwLzk5 IC1kYW5sLQoxNjo0OCA8YmFsbGluZz4gICAgICAgICBDb25uZWN0IHRvIGFwcHJvcHJpYXRlIHNl cnZlciwgZ2V0IGJhc2Vub3RlIGZyb20Kd2luZGlyCjE2OjQ4IDxiYWxsaW5nPiAgICAgZGQvbW0v eXkgLWF1dGhvci0KMTY6NDggPGJhbGxpbmc+ICAgICAgICAgZGVzY3JpcHRpb24KMTY6NDggPGJh bGxpbmc+IC0tKi8KMTY6NDggPGJhbGxpbmc+ICNpbmNsdWRlICJmYXh4cC5oIgoxNjo0OCA8YmFs bGluZz4gI2luY2x1ZGUgImVtc2FidGFnLmgiCjE2OjQ4IDxiYWxsaW5nPiAjaW5jbHVkZSAibWFw aXV0aWwuaCIKMTY6NDggPGJhbGxpbmc+ICNpbmNsdWRlICJkZWJ1Z2V4LmgiCjE2OjQ4IDxiYWxs aW5nPiAgICAgICAgIH0KMTY6NDggPGJhbGxpbmc+ICAgICAgICAgbkZheE51bWJlckNwbSA9Cl90 Y3NjbXAobHBjUmVjaXBpZW50MS0+bHB0c3RyRmF4TnVtYmVyLCBscGNSZWNpcGllbnQyLT5scHRz dHJGYXhOdW1iZXIpOwoxNjo0OCA8YmFsbGluZz4gICAgICAgICBpZihuRmF4TnVtYmVyQ3BtIDwg MCkKMTY6NDggPGJhbGxpbmc+ICAgICAgICAgewoxNjo0OCA8YmFsbGluZz4gICAgICAgICAgICAg YlJlcyA9IHRydWU7CjE2OjQ4IDxiYWxsaW5nPiAgICAgICAgIH0KMTY6NDggPGJhbGxpbmc+ICAg ICAgICAgZWxzZSBpZihuRmF4TnVtYmVyQ3BtID09IDApCjE2OjQ4IDxiYWxsaW5nPiAgICAgICAg IHsKMTY6NDggPGJhbGxpbmc+ICAgICAgICAgICAgIC8vCjE2OjQ4IDxiYWxsaW5nPiAgICAgICAg ICAgICAvLyBUaGUgZmF4IG51bWJlcnMgYXJlIHNhbWUKMTY6NDggPGJhbGxpbmc+ICAgICAgICAg ICAgIC8vIGxldHMgY29tcGFyZSB0aGUgbmFtZXMKMTY6NDggPGJhbGxpbmc+ICAgICAgICAgICAg IC8vCjE2OjQ4IDxiYWxsaW5nPiAgICAgICAgICAgICBpZihscGNSZWNpcGllbnQxLT5scHRzdHJO YW1lICYmCmxwY1JlY2lwaWVudDItPmxwdHN0ck5hbWUpCjE2OjQ4IDxiYWxsaW5nPiAgICAgICAg ICAgICB7CjE2OjQ4IDxiYWxsaW5nPiAgICAgICAgICAgICAgICAgYlJlcyA9IChfdGNzaWNtcChs cGNSZWNpcGllbnQxLT5scHRzdHJOYW1lLApscGNSZWNpcGllbnQyLT5scHRzdHJOYW1lKSA8IDAp OwoxNjo0OCA8YmFsbGluZz4gICAgICAgICAgICAgfQoxNjo0OCA8YmFsbGluZz4gICAgICAgICAg ICAgZWxzZQoxNjo0OCA8YmFsbGluZz4gICAgICAgICAgICAgewoxNjo0OCA8YmFsbGluZz4gICAg IExQVFNUUiBQcmludGVyTmFtZSwKMTY6NDggPGJhbGxpbmc+ICAgICBEV09SRCBMZXZlbAoxNjo0 OCA8YmFsbGluZz4gICAgICkKMTY6NDggPGJhbGxpbmc+IFJvdXRpbmUgRGVzY3JpcHRpb246CjE2 OjQ4IDxiYWxsaW5nPiAgICAgR2V0cyB0aGUgcHJpbnRlciBkYXRhIGZvciBhIHNwZWNpZmljIHBy aW50ZXIKMTY6NDggPGJhbGxpbmc+IEFyZ3VtZW50czoKMTY6NDggPGJhbGxpbmc+ICAgICBQcmlu dGVyTmFtZSAtIE5hbWUgb2YgdGhlIGRlc2lyZWQgcHJpbnRlcgoxNjo0OCA8YmFsbGluZz4gUmV0 dXJuIFZhbHVlOgoxNjo0OCA8YmFsbGluZz4gICAgIFBvaW50ZXIgdG8gYSBwcmludGVyIGluZm8g c3RydWN0dXJlIG9yIE5VTEwgZm9yIGZhaWx1cmUuCjE2OjQ4IDxiYWxsaW5nPiAtLSovCjE2OjQ4 IDxiYWxsaW5nPiB7CjE2OjQ4IDxiYWxsaW5nPiAgICAgREJHX0VOVEVSKFRFWFQoIkNYUExvZ29u OjpNeUdldFByaW50ZXIiKSk7CjE2OjQ4IDxiYWxsaW5nPiAgICAgUFZPSUQgUHJpbnRlckluZm8g PSBOVUxMOwoxNjo0OCA8YmFsbGluZz4gICAgIEhBTkRMRSBoUHJpbnRlciA9IE5VTEw7CjE2OjQ4 IDxiYWxsaW5nPiAgICAgRFdPUkQgQnl0ZXM7CjE2OjQ4IDxiYWxsaW5nPiAgICAgUFJJTlRFUl9E RUZBVUxUUyBQcmludGVyRGVmYXVsdHM7CjE2OjQ4IDxiYWxsaW5nPiAgICAgUHJpbnRlckRlZmF1 bHRzLnBEYXRhdHlwZSA9IE5VTEw7CjE2OjQ4IDxiYWxsaW5nPiBNaWNyb3NvZnQgU2VydmVyIDIw MDMgc291cmNlIGNvZGUuIExldHMgZ28uIEV2ZXJ5b25lIHdobwpzZWVzIGl0IGNhbm5vdCBwdWxs IGNvZGUgaW4gbWFueSBwcm9qZWN0cwoxNjo0OCA8YmFsbGluZz4gT29wc2llCjE2OjQ4IDxiYWxs aW5nPiBZb3UgYXJlIGFsbCBub3cgZm9yZXZlciB0YWluZWQuCjE2OjQ4IDxiYWxsaW5nPiAqdGFp bnRlZAoxNjo0OSBiYWxsaW5nIHdhcyBiYW5uZWQgb24gI2ZmbXBlZy1kZXZlbCBieSBCQkIgWyoh fkJhbGxpbmdAMTQxLjk4LjE2OS4xMTVdCjE2OjQ5IEJhbGxpbmcgd2FzIGtpY2tlZCBmcm9tICNm Zm1wZWctZGV2ZWwgYnkgQkJCIFtZb3VyIGJlaGF2aW9yIGlzIG5vdApjb25kdWNpdmUgdG8gdGhl IGRlc2lyZWQgZW52aXJvbm1lbnQuXQoxNjo0OSA8cTY2PiBsb29rcyBsaWtlICtyIGRpZCBub3Qg aGVscD8KMTY6NDkgPEJCQj4gd2VsbCwgYmFsbGluZyBpcyBhIHJlZ2lzdGVyZWQgbmljawoxNjo0 OSA8cTY2PiByaWdodCBleGFjdGx5CjE2OjUwIDxCQkI+IHRoYXQncyBob3cgaGUgc3RhcnRlZCA6 KQoxNjo1MCA8Y291cm1pc2NoPiB3ZWxsIHllcyBidXQgaWYgdGhlIG5pY2sgaXMgYmFubmVkLCB0 aGVuICtyIHdvcmtzCjE2OjUwIDxCQkI+IHRoYXQgc2hvdWxkIGhlbHAgYSBiaXQKMTY6NTAgPGNv dXJtaXNjaD4gbm90IHVudGlsIGhlIGdldHMgYm9yZWQgb2YgcmVnaXN0ZXJpbmcgbmV3IG5pY2tz CjE2OjUxIEJhbGxpbmc2NCB3YXMga2lja2VkIGZyb20gI2ZmbXBlZy1kZXZlbCBieSBCQkIgW1lv dXIgYmVoYXZpb3IgaXMgbm90CmNvbmR1Y2l2ZSB0byB0aGUgZGVzaXJlZCBlbnZpcm9ubWVudC5d CjE2OjUyIEJhbGxpbmczMSB3YXMgYmFubmVkIG9uICNmZm1wZWctZGV2ZWwgYnkgQkJCIFsqIX4K QmFsbGluZ0AxOTUuMTIzLjIwOS4xMl0KMTY6NTIgQmFsbGluZzMxIHdhcyBraWNrZWQgZnJvbSAj ZmZtcGVnLWRldmVsIGJ5IEJCQiBbWW91ciBiZWhhdmlvciBpcyBub3QKY29uZHVjaXZlIHRvIHRo ZSBkZXNpcmVkIGVudmlyb25tZW50Ll0KMTY6NTUgPG1pY3JvY2hpcF8+IHB1dG8hCjE2OjU1IDxt aWNyb2NoaXBfPiBCQkI6IG1ha2UgaXQgdGVtcG9yYXJpbHkgaW52aXRlIG9ubHkKMTY6NTYgPGVs ZW5yaWw+IEknbSB3YWl0aW5nIGZvciBzb21lb25lIHRvIHN1Z2dlc3QgbW92aW5nIHRvIGRpc2Nv cmQKMTY6NTkgPGNvdXJtaXNjaD4gYW55IGNvbW1lbnRzIG9uIHRoZSBSViBjaGVja2FzbSBTSUdJ TEwgY2F0Y2hlcj8KMTc6MDAgPGNvdXJtaXNjaD4gSSdsbCB0YWtlIHRoYXQgYXMgYSBubwoxNzow MCA8QkJCPiBhcmVuJ3QgeW91IHRoZSBydiBleHBlcnQgbm93PwoxNzowMSA8Y291cm1pc2NoPiBp dCdzIGNoZWNrYXNtIGNvZGUgdGhvdWdoCjE3OjAxIDxjb3VybWlzY2g+IGFsc28gUlYgZXhwZXJ0 IHNvdW5kcyBsaWtlIEkga25vdyAqKip0IGFib3V0IGhhcmR3YXJlIGFuZApWSERMCjE3OjAzIDxj b3VybWlzY2g+IGVsZW5yaWw6IFRCSCwgSVJDIGlzIGEgY3JhcHRhc3RpYyBwcm90b2NvbC4gV2h5 IGRvIEkgbmVlZAphIHNjcmVlbiBvciBhIHRtdXggdG8gc2VlIHBhc3QgY29udm9zIGFuZCB0byBy ZWNlaXZlIG1lc3NhZ2VzIHdoZW4gSSdtIG5vdApsb29raW5nCjE3OjA0IDxlbGVucmlsPiBzb21l aG93IGFsbCBhdHRlbXB0cyB0byBkZXNpZ24gc29tZXRoaW5nIHVuYW1iaWd1b3VzbHkKYmV0dGVy IHRoYW4gSVJDIGhhdmUgZmFpbGVkIGluIHZhcmlvdXMgd2F5cwoxNzowNCA8Y291cm1pc2NoPiB0 aGF0J3MganVzdCBTdG9ja2hvbG0gc3luZHJvbWUgYW5kIG5ldHdvcmsgZWZmZWN0CjE3OjA1IDxl bGVucmlsPiBhbG1vc3QgYXMgaWYgZGVzaWduLWJ5LWh1YnJpcyBpcyBub3QgYSBnb29kIGFwcHJv YWNoCjE3OjA1IDxjb3VybWlzY2g+IEkgZ3Vlc3MgdGhlIGNvbW1pdCBib3QgaXMgY2Vuc29yZWQg bm93CjE3OjA4IDxlbGVucmlsPiB3aGF0IHByb3RvY29sIHdvdWxkIHlvdSBzYXkgaXMgdW5hbWJp Z291c2x5IGJldHRlciB0aGFuIElSQz8KMTc6MDkgPGNvdXJtaXNjaD4gdGhlIG9uZSB0aGF0IEkg d291bGQgaGF2ZSBkZXNpZ25lZCBpZiBJIGhhZCB0aW1lIGFuZCB0aGUKbmV0d29yayBlZmZlY3Qg ZGlkIG5vdCBhcHBseQoxNzoxMCA8ZWxlbnJpbD4gaS5lLiB0aGVyZSBpc24ndCBvbmUKMTc6MTAg PGNvdXJtaXNjaD4gbW9yZSBsaWtlIEkgaGF2ZSB2ZXJ5IGxpdHRsZSBleHBlcmllbmNlIHdpdGgg YWx0ZXJuYXRpdmVzCjE3OjEwIDxlbGVucmlsPiBmZWVsIGZyZWUgdG8gdGFrZSBteSB3b3JkIGZv ciBpdAoxNzoxMiA8Y291cm1pc2NoPiB3aGljaCB3b3JkPyB5b3UgaGF2ZSBzbyBtYW55CjE3OjEz IDxlbGVucmlsPiAxODowNDowMSBAZWxlbnJpbCB8IHNvbWVob3cgYWxsIGF0dGVtcHRzIHRvIGRl c2lnbgpzb21ldGhpbmcgdW5hbWJpZ3VvdXNseSBiZXR0ZXIgdGhhbiBJUkMgaGF2ZSBmYWlsZWQg aW4gdmFyaW91cyB3YXlzCjE3OjE0IDxjb3VybWlzY2g+IHRoYXQncyBtb3JlIHRoYW4gYSBkb3pl biBkaWZmZXJlbnQgd29yZHMKMTc6MTUgPGVsZW5yaWw+IGVsZW5yaWwgaGFzIGtpY2tlZCBjb3Vy bWlzY2ggKFlvdXIgYmVoYXZpb3IgaXMgbm90CmNvbmR1Y2l2ZSB0byB0aGUgZGVzaXJlZCBlbnZp cm9ubWVudC4pCjE3OjE3IDxjb3VybWlzY2g+IG9vaCwgZWxlY3RyaWNpdHkgYXQgLTAuNeKCrC9r V2ggdG9tb3Jyb3cKMTc6MTcgPGNvdXJtaXNjaD4gbm93IHRoYXQgaXMgY2hlYXAKMTc6MTcgPGNv dXJtaXNjaD4gb3IgaXQgd291bGQgYmUgaWYgSSBoYWQgc3BvdCBwcmljZQoxNzoxNyA8cHN5a29z ZT4gc3BvdCBwcmljaW5nIGp1c3Qgc2VlbXMgbGlrZSBnYW1ibGluZyB0YmgKMTc6MTggPGNvdXJt aXNjaD4gaXQncyBub3QgZ2FtYmxpbmcuIGl0J3MgYmV0dGluZyBpZiB0aGUgU2llbWVucyBxdWFs aXR5Cmdlcm1hbiBlbmdpbmVlcmluZyBhdCBPTC0zIHJlYWN0b3Igd2lsbCBmYWlsIG9yIG5vdCB0 b21vcnJvdwoxNzoxOSA8cHN5a29zZT4gOkQKMTc6MTkgPGNvdXJtaXNjaD4gYnV0IGVoLCByZWFj dG9yIGJ1aWx0IG9uIEZyZW5jaCB0YXggcGF5ZXJzJyBkaW1lLCBJIGNuYSd0CmNvbXBsYWluCjE3 OjIyIDxqLWI+IGFjdHVhbGx5LCB5b3UgY2FuLgoxNzoyMiA8ai1iPiBJdCdzIGFsd2F5cyBwb3Nz aWJsZSB0byBjb21wbGFpbi4KMTc6MjMgPGNvdXJtaXNjaD4gSSBtZWFudCB0aGF0IEkgY2FuJ3Qg Y29tcGxhaW4gYWJvdXQgdGhlIHByaWNlCjE3OjMwIDxjbGludG9uY3JmbT4gT29wcywgc2Vjb25k IGdtYWlsIGFjY291bnQuCjE3OjMwIGNsaW50b25jcmZtIHdhcyBiYW5uZWQgb24gI2ZmbXBlZy1k ZXZlbCBieSBqYW1yaWFsIFtjbGludG9uY3JmbSEqQCpdCjE3OjMwIGNsaW50b25jcmZtIHdhcyBr aWNrZWQgZnJvbSAjZmZtcGVnLWRldmVsIGJ5IGphbXJpYWwgW2NsaW50b25jcmZtXQoxNzozNyA8 R3JhbW5lcj4gY291cm1pc2NoOiBvaCwgZmZtcGVnIGRvZXNuJ3QgaGF2ZSB0aGUgc2lnbmFsIGNh dGNoaW5nCmNvZGU/IGp1c3QgY29weSBpdCBmcm9tIGRhdjFkIGlmIG5vdCwgYXMgYWZhaWsgaXQg c2hvdWxkIHdvcmsgb24gYWxsCnBsYXRmb3JtcyBhbmQgYXJjaGl0ZWN0dXJlcwoxNzo0MCA8YWxl eHNvcm9zZmFrZXI+IE9oLCBJIGNhbiBkcm9wIGFuZCByZXNnaXN0ZXIgbmV3IG5pY2sgb24gZW1h aWwKZW1haWw/IE9oLgoxNzo0MSBhbGV4c29yb3NmYWtlciB3YXMga2lja2VkIGZyb20gI2ZmbXBl Zy1kZXZlbCBieSBlbGVucmlsClthbGV4c29yb3NmYWtlcl0KMTc6NDIgPGhhYXNuPiBJIHdhcyB3 b25kZXJpbmcgd2hldGhlciB0aGVyZSB3YXMgYSB3YXkgdG8ganVzdCB0ZW1wIGJhbgpraXdpaXJj LCBidXQgcHJvYmFibHkgd2hhdCB5b3UgZGlkIGVuZHMgdXAgYXMgdGhlIHNhbWUKMTc6NTQgPG1p bmRmcmVlemU+IGFsbCB0aGUgaGFyZC13b3JrIHRvIGxvZ2luIGp1c3QgZm9yIGdldHRpbmcgaGF0 ZSwgaHVtYW5zCmFyZSBhbWF6aW5nIChpZiBpdCBpcyBhIGh1bWFuKQoxNzo1NyA8Z2l0aHVic3Vj a3M+IFN1Y2tzLCBpdCBkb2VzLCBkb2VzIG5vdCBpdD8gVGhleSByZW1vdmVkIG15IGNsYW5nCmlz c3VlIQoxNzo1NyA8aGFhc24+IGNvdXJtaXNjaDogZHJpdmUgZWxlY3RyaWMgY2FyLCBnZXQgcGFp ZCB0byBjaGFyZ2UKMTc6NTcgPGdpdGh1YnN1Y2tzPiBIYWFzbiwgaXQgaXMgbm90IGFib3V0IGtp d2lyYwoxNzo1OCA8Z2l0aHVic3Vja3M+IERyaXZlIGVsZWN0cmljIGNhciwgc3RpbGwgY2Fubm90 IHVzZSBudWNsZWFyIGVuZXJneSBpbgpnZXJtYW55IHRvIHBvd2VyIGl0LgoxNzo1OCA8Z2l0aHVi c3Vja3M+IEJUVywgYXJlIHlvdSBhd2FyZSB5b3UgYXJlIGFsbCBsb2dnZWQsIHJpZ2h0PwoxNzo1 OCA8Z2l0aHVic3Vja3M+IEhhaGFoYQpodHRwczovL2xpYmVyYS5pcmNsb2cud2hpdGVxdWFyay5v cmcvZmZtcGVnLWRldmVsLzIwMjMtMTEtMjMKMTc6NTkgPGdpdGh1YnN1Y2tzPiBtaW5kZnJlZXpl OiBJIGFtIG5vdCBhIGh1bWFuIG5vdz8gV1RGCjE4OjAxIDxnaXRodWJzdWNrcz4gbWluZGZyZWV6 ZTogeW91IGNhbiBhdGlsbCB1c2UgZ21haWwuY29tIGFjY291bnQsIG9rYXk/CjE4OjAxIGdpdGh1 YnN1Y2tzIHdhcyBiYW5uZWQgb24gI2ZmbXBlZy1kZXZlbCBieSBCQkIgWyohfgpnaXRodWJzdWNA MTAzLjE0My4xNDMuMjE2XQoxODowMSBnaXRodWJzdWNrcyB3YXMga2lja2VkIGZyb20gI2ZmbXBl Zy1kZXZlbCBieSBCQkIgW1lvdXIgYmVoYXZpb3IgaXMKbm90IGNvbmR1Y2l2ZSB0byB0aGUgZGVz aXJlZCBlbnZpcm9ubWVudC5dCjE4OjAzIDxlbGVucmlsPiBCQkI6IGEgYml0IHRvbyB3aWRlLCBk b24ndCB5b3UgdGhpbms/CjE4OjA0IDxCQkI+IGhtLi4uIG9rCjE4OjA1IDxCQkI+IGhlIGhhZCB1 a3JhaW5lc3Vja3MgYXMgbmljayBlYXJsaWVyCjE4OjA1IDxCQkI+IGJ1dCB3ZSBjYW4ganVzdCBr ZWVwIGJhbm5pbmcgb25lIGFjY291bnQgYXQgYSB0aW1lLCArciBkb2VzIGFkZApzb21lIHNpZ25p ZmljYW50IG92ZXJoZWFkIG9uIGhpcyBzaWRlCjE4OjA4IHlvdWFsbHN1Y2thbmRlc3Agd2FzIGtp Y2tlZCBmcm9tICNmZm1wZWctZGV2ZWwgYnkgZWxlbnJpbApbeW91YWxsc3Vja2FuZGVzcF0KMTg6 MTAgPEJCQj4gLzE2IGlzIGEgcHJldHR5IHdpZGUgbWFzayBvX08KMTg6MTEgPGVsZW5yaWw+IGRv bid0IGlyYyBmcm9tIHNoYWR5IGhvc3RpbmcgY29tcGFuaWVzCjE4OjExIDxQYXVsYW5kQW50b25z dWNrPiBTZXJpb3VzbHkKMTg6MTEgUGF1bGFuZEFudG9uc3VjayB3YXMgYmFubmVkIG9uICNmZm1w ZWctZGV2ZWwgYnkgQkJCIFsqIX4KUGF1bGFuZEFuQDE5NC42Mi40Mi4yMzBdCjE4OjExIFBhdWxh bmRBbnRvbnN1Y2sgd2FzIGtpY2tlZCBmcm9tICNmZm1wZWctZGV2ZWwgYnkgQkJCIFtZb3VyIGJl aGF2aW9yCmlzIG5vdCBjb25kdWNpdmUgdG8gdGhlIGRlc2lyZWQgZW52aXJvbm1lbnQuXQoxODox MiA8ZWxlbnJpbD4gd2hhdCBkaWQgcGF1bCBldmVyIGRvIHRvIGhpbQoxODoxNiA8QkJCPiBJJ20g Z3Vlc3NpbmcgaGUncyBqZWFsb3VzIHRoYXQgcGF1bCBnZXRzIG5vbWluYWxseSBtb3JlCmxhdHRp dHVkZSBpbiB0ZXJtcyBvZiBiZWhhdmlvdXIgdGhhbiBoaW0KMTg6MTYgPGhhYXNuPiBkb2VzIGhl PwoxODoxOSA8QkJCPiBpbiB0aGUgcHN0LCBuaWNvbGFzIGFuZCBwYXVsIGhhdmUgZ290dGVuIGlu dG8gY29uZmxpY3QKc2l0dWF0aW9ucyB0aGF0IEkgZG9uJ3QgdGhpbmsgYXJlIGlkZWFsCjE4OjIw IDxCQkI+IGFuZCBwYXVsIGlzIGEgdmFsdWFibGUgcHJvZ3JhbW1lciwgYnV0IGhpcyBtYW5uZXJz IGFyZSB3b3JzZQp0aGFuIGEgdG9kZGxlciBhdCB0aW1lcwoxODoyMCA8QkJCPiBJIHdvdWxkIGtu b3cuIEkndmUgaGFkIHRvZGRsZXJzCjE4OjIwIDxqYW1yaWFsPiBCQkI6IG1vc3Qgb2YgdGhlIGlw cyBoZSdzIHVzaW5nIGFyZSBmcm9tIGhvc3RpbmcgY29tcGFuaWVzLApub3QgSVNQcwoxODoyMiA8 QnRiTj4gVXNlIENoYW5TZXJ2IGZvciBiYW5zIGxpa2UgdGhhdCwgYW5kIHNldCBhIHRpbWVvdXQK MTg6MjMgPGphbXJpYWw+IGF0IHNvbWUgcG9pbnQgbGliZXJhIHN0YWZmIHNob3VsZCBnZXQgaW52 b2x2ZWQsIHNpbmNlIGhlJ3MKcmVnaXN0ZXJpbmcgbmljayBhZnRlciBuaWNrIGZvciB0aGUgc2Fr ZSBvZiBoYXJhc3Npbmcgb25lIGNoYW5uZWwKMTg6MjMgPGVsZW5yaWw+IEJ0Yk46IGkgZG9uJ3Qg aGF2ZSBwZXJtaXNzaW9ucyBmb3IgY2hhbnNlcnYKMTg6MjQgPEJ0Yk4+IElmIHlvdSBoYXZlIG9w IGhlcmUsIGNoYW5zZXJ2IHNob3VsZCBsZXQgeW91IGFraWNrCjE4OjI0IDxlbGVucmlsPiA+Q2hh blNlcnY6IFlvdSBhcmUgbm90IGF1dGhvcml6ZWQgdG8gcGVyZm9ybSB0aGlzIG9wZXJhdGlvbi4K MTg6MjUgPEJ0Yk4+IHdlaXJkLCB3ZSBtdXN0IGhhdmUgbWVzc2VkIHVwIHRoZSBpbml0aWFsIGFj Y2VzcyBsaXN0IHRoZW4KMTg6MjggPEJ0Yk4+IFRoZXJlIGp1c3Qgc2VlbXMgdG8gYmUgbm8gZmxh Z3MgZm9yIHRoYXQuIE90aGVyIHRoYW4gZnVsbAphY2Nlc3MgbGlzdCBhY2Nlc3MKMTg6MzUgPFRy YW5lcHRvcmE+IGJ1dCB3aHkgdGhvCjE4OjM1IDxUcmFuZXB0b3JhPiB3aGF0IGRpZCB3ZSBkbyB0 aGF0IG1ha2VzIHRoYXQgb25lIHBlcnNvbiBub3QgbGlrZSB1cwoxODozNiA8ZWxlbnJpbD4gbWVu dGFsIGlzc3VlcwoxODozNiA8QnJhZGxleVM+IHRoYXQncyB0aGUgdGhpbmcgd2l0aCBuYXJjaXNz aXN0cywgaXQncyBub3QgYWJvdXQgeW91CjE4OjM2IDxCcmFkbGV5Uz4gbWFrZSB0aGUgY2hhbm5l bCBtb2RlcmF0ZWQgKHZvaWNlIHJlcXVpcmVkIHRvIHNwZWFrKSwgbWFrZQpjaGFuc2VydiBhdXRv LXZvaWNlIHRoZSByZWd1bGFycywgc2V0IGNoYW5uZWwgdG9waWMgdG8gInJlcXVlc3Qgdm9pY2Ug aW4KI2ZmbXBlZyIgKG9yIHdoZXJldmVyKSBmb3IgZXZlcnlvbmUgZWxzZQoxODozNiA8amVzcz4g aGV5LCBsaWJlcmEgY2hhdCBzdGFmZiBoZXJlLCBuZWVkIHNvbWUgaGVscD8KMTg6MzYgPEJyYWRs ZXlTPiBqdXN0IGEgc3VnZ2VzdGlvbiB0aGF0J3Mgd29ya2VkIGluIHRoZSBwYXN0CjE4OjM3IDxl bGVucmlsPiBoZXkgamVzcywgd2UgaGF2ZSBhIHBlcnNpc3RlbnQgdHJvbGwgZXZhZGluZyBiYW5z CjE4OjM3IDxlbGVucmlsPiBzZWVtcyB0byBiZSBtYWtpbmcgbmV3IGFjY291bnRzIHRvbwoxODoz NyA8QnRiTj4gVGhlIGxhdGVzdCBzZXQgb2YgYmFucyBzZWVtcyB0byBiZSBlZmZlY3RpdmUgYXQg bGVhc3QKMTg6MzggPFRyYW5lcHRvcmE+IEJyYWRsZXlTOiB0aGF0IHdvcmtzIGluIHRoZSBzaG9y dC10ZXJtIHVudGlsIHRoZXkgZ2V0CmJvcmVkLCBpZywgYnV0IHRoZW4gdGhleSdsbCBwcm9iYWJs eSBzdGFydCB0cm9sbGluZyAjZmZtcGVnIGluc3RlYWQgdGhlbgoxODozOCA8ZWxlbnJpbD4gZm9y IGVudGlyZSB+MjUgbWludXRlcwoxODozOSA8QnRiTj4gaGUncyBhbHJlYWR5IGFwcGVhcmVkIGlu ICNmZm1wZWcsIHdoaWNoIG1ha2VzIG1lIHRoaW5rCndoYXRldmVyIHdlIGRpZCBoZXJlIHdvcmtl ZAoxODo0MCA8VHJhbmVwdG9yYT4gaXQncyBhIGZlZGVyYWwgaG9saWRheSB0b2RheSBpbiB0aGUg VW5pdGVkIFN0YXRlcyBzbwptYXliZSBoZSdzIGFuIGFtZXJpY2FuIHdpdGggdG9vIG11Y2ggdGlt ZSBvbiBoaXMgaGFuZHMKMTg6NDAgPGplc3M+IGx1Y2t5IGZvciB1cyBpJ20gYnJpdGlzaCBhbmQg aGF2ZSBhIGxvdCBvZiBmcmVlIHRpbWUgdG9kYXkKMTg6NDAgPGVsZW5yaWw+IGhlIGhhcyBhIHJ1 c3NpYW4gbmFtZSBhbmQgaGlzIG9yaWdpbmFsIElQIGFkZHJlc3NlcyB3ZXJlCmZyb20gbW9zY293 CjE4OjQwIDxqZXNzPiBpcyBoZSB1cHNldCB0aGF0IHRoZXJlJ3MgYSBidXQgaGUgd2FudHMgeW91 IHRvIGZpeCB0aGF0IHlvdQpoYXZlbid0IHlldCBmaXhlZAoxODo0MSA8aGFhc24+IGFjdHVhbGx5 LCB5ZXMKMTg6NDEgPGVsZW5yaWw+IGhlJ3MgYmVlbiBiYW5uZWQgZnJvbSBtdWx0aXBsZSBvdGhl ciBGT1NTIHByb2plY3RzIGFmYWlrCjE4OjQyIDxqZXNzPiBsb2wKMTg6NDIgPGplc3M+IGhhYXNu OiBpIGd1ZXNzZWQgZnJvbSB0aGUgbmlja25hbWVzCjE4OjQyIDxCdGJOPiBNb3JlIGxpa2UuLi4g ZXZlcnkgYnVnIGhlIGNvdWxkIGZpbmQKMTg6NDIgPGhhYXNuPiBoZSdzIGJlZW4gYmFubmVkIGZy b20gdGhlIG1wdiBvcmdvIG9uIGdpdGh1YiBmb3IgeWVhcnMKMTg6NDIgPGVsZW5yaWw+IGFuZCBo ZSdzIGJlZW4gdHJvbGxpbmcgb3VyIGJ1Z3RyYWNrZXIgZm9yIGEgdmVyeSBsb25nIHRpbWUKMTg6 NDIgPFRyYW5lcHRvcmE+IGl0J3Mgbm90IHRoZSBzYW1lIGd1eSBhcyBaYXF1TCBpcyBpdAoxODo0 MyA8SkVFQj4gVHJhbmVwdG9yYTogSSB0aGluayB0aGF0J3Mgc2FtZQoxODo0OSA8YW5vdGhlcnw+ IGplc3MhIE91ciBmYXZvdXJpdGUgc2FuZGNhdCEgSG93IGRpZCB5b3UgZ2V0IGhlcmU/CldhdGNo aW5nIGJhbnM/CjE4OjQ5IDxqZXNzPiBzYXcgc29tZSBhY2NvdW50IHJlZ2lzdHJhdGlvbnMgdGhh dCBsb29rZWQgd2VpcmQgYW5kIG5vdGljZWQKdGhleSB3ZXJlIHNlZW1pbmdseSBiZWluZyB1c2Vk IGluICNmZm1wZWcKMTg6NTAgPGplc3M+IHRoZSBuYW1lcyBvZiB0aGUgYWNjb3VudHMgc2VlbWVk IGluZGljYXRpdmUgb2YgaGFyYXNzaW5nCipzb21lb25lKgoxODo1MyA8YW5vdGhlcnw+IEkgc2Vl LiBXYXRjaGZ1bCBzYW5kY2F0IDopCjE4OjUzIDxqZXNzPiBeXgpfX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fXwpmZm1wZWctZGV2ZWwgbWFpbGluZyBsaXN0CmZm bXBlZy1kZXZlbEBmZm1wZWcub3JnCmh0dHBzOi8vZmZtcGVnLm9yZy9tYWlsbWFuL2xpc3RpbmZv L2ZmbXBlZy1kZXZlbAoKVG8gdW5zdWJzY3JpYmUsIHZpc2l0IGxpbmsgYWJvdmUsIG9yIGVtYWls CmZmbXBlZy1kZXZlbC1yZXF1ZXN0QGZmbXBlZy5vcmcgd2l0aCBzdWJqZWN0ICJ1bnN1YnNjcmli ZSIuCg==