diff --git a/release_24.9/LICENSE.md b/release_24.9/LICENSE.md new file mode 100644 index 0000000..bd3449d --- /dev/null +++ b/release_24.9/LICENSE.md @@ -0,0 +1,21 @@ +# The MIT License + +Copyright © 2010–2015 Vadim Makeev, http://pepelsbey.net/ + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +--- + +# Лицензия MIT + +Copyright © 2010–2015 Вадим Макеев, http://pepelsbey.net/ + +Данная лицензия разрешает лицам, получившим копию данного программного обеспечения и сопутствующей документации (в дальнейшем именуемыми «Программное Обеспечение»), безвозмездно использовать Программное Обеспечение без ограничений, включая неограниченное право на использование, копирование, изменение, добавление, публикацию, распространение, сублицензирование и/или продажу копий Программного Обеспечения, также как и лицам, которым предоставляется данное Программное Обеспечение, при соблюдении следующих условий: + +Указанное выше уведомление об авторском праве и данные условия должны быть включены во все копии или значимые части данного Программного Обеспечения. + +ДАННОЕ ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ ПРЕДОСТАВЛЯЕТСЯ «КАК ЕСТЬ», БЕЗ КАКИХ-ЛИБО ГАРАНТИЙ, ЯВНО ВЫРАЖЕННЫХ ИЛИ ПОДРАЗУМЕВАЕМЫХ, ВКЛЮЧАЯ, НО НЕ ОГРАНИЧИВАЯСЬ ГАРАНТИЯМИ ТОВАРНОЙ ПРИГОДНОСТИ, СООТВЕТСТВИЯ ПО ЕГО КОНКРЕТНОМУ НАЗНАЧЕНИЮ И ОТСУТСТВИЯ НАРУШЕНИЙ ПРАВ. НИ В КАКОМ СЛУЧАЕ АВТОРЫ ИЛИ ПРАВООБЛАДАТЕЛИ НЕ НЕСУТ ОТВЕТСТВЕННОСТИ ПО ИСКАМ О ВОЗМЕЩЕНИИ УЩЕРБА, УБЫТКОВ ИЛИ ДРУГИХ ТРЕБОВАНИЙ ПО ДЕЙСТВУЮЩИМ КОНТРАКТАМ, ДЕЛИКТАМ ИЛИ ИНОМУ, ВОЗНИКШИМ ИЗ, ИМЕЮЩИМ ПРИЧИНОЙ ИЛИ СВЯЗАННЫМ С ПРОГРАММНЫМ ОБЕСПЕЧЕНИЕМ ИЛИ ИСПОЛЬЗОВАНИЕМ ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ ИЛИ ИНЫМИ ДЕЙСТВИЯМИ С ПРОГРАММНЫМ ОБЕСПЕЧЕНИЕМ. diff --git a/release_24.9/index.html b/release_24.9/index.html new file mode 100644 index 0000000..24d2b37 --- /dev/null +++ b/release_24.9/index.html @@ -0,0 +1,568 @@ + + + + ClickHouse: Release 24.9 Webinar + + + + + + + + +
+

ClickHouse: Release 24.9 Webinar

+
+
+

ClickHouse Release 24.9

+
+ +
+

Release 24.9 Webinar

+

1. (50 min) What's new in ClickHouse 24.9.

+

2. (10 min) Q&A.

+
+ +
+

Release 24.9

+

ClickHouse Autumn Release.

+

— 23 new features 🌾

+

— 14 performance optimizations 🍎

+

— 76 bug fixes 🦉

+
+ + +
+

Small And Nice Features

+
+ +
+

Pretty Printing For Type Names

+ +

:) CREATE TEMPORARY TABLE test (x Tuple(a String, b Array(Tuple(c Tuple(e String), d String))), y String) + +CREATE TEMPORARY TABLE test +( + `x` Tuple( + a String, + b Array(Tuple( + c Tuple( + e String), + d String))), + `y` String +)

+
+ + +
+

create_if_not_exists As a Setting

+ +

A usual way:

+ +

CREATE TABLE IF NOT EXISTS test (x UInt8) ORDER BY (); +

+ +

A new option, since 24.9:

+ +

SET create_if_not_exists = 1; + +CREATE TABLE test (x UInt8) ORDER BY (); +

+ +

— "out of band" if not exists specification as a setting.

+ +

Developer: Peter Nguyen.

+
+ + +
+

New Functions overlay, overlayUTF8

+ +

Replaces a fragment in a string with another string in a specified position.

+ +

SELECT overlay('Hello, world!', 'test', 8, 5) AS res + + ┌─res──────────┐ +1. │ Hello, test! │ + └──────────────┘ + +WITH 'Hello, world!' AS s, 'test' AS replacement, 8 AS pos, 5 AS length +SELECT concat(substring(s, 1, pos - 1), + replacement, + substring(s, pos + length)) AS res + + ┌─res──────────┐ +1. │ Hello, test! │ + └──────────────┘ +

+ +

Developer: TaiYang Li.

+
+ +
+

input_format_json_empty_as_default

+ +

:) CREATE TEMPORARY TABLE test (x String DEFAULT 'ClickHouse') +:) INSERT INTO test FORMAT JSONEachRow {"x":""} + ┌─x─┐ +1. │ │ + └───┘ +:) SET input_format_json_empty_as_default = 1 +:) INSERT INTO test FORMAT JSONEachRow {"x":""} + ┌─x──────────┐ +1. │ │ +2. │ ClickHouse │ + └────────────┘ +:) ALTER TABLE test ADD COLUMN y UInt8 DEFAULT 123 +:) INSERT INTO test FORMAT JSONEachRow {"x":"","y":""} + ┌─x──────────┬───y─┐ +1. │ │ 0 │ +2. │ ClickHouse │ 0 │ +3. │ ClickHouse │ 123 │ + └────────────┴─────┘ +

+ +

Developer: Alexis Arnaud.

+
+ +
+

input_format_json_empty_as_default

+ +

But you will rarely need it:

+ +

omitted fields in JSON are interpreted as default;

+

input_format_null_as_default is also enabled, +
  and nulls in JSON will be interpreted as default;

+ +

The new setting, input_format_json_empty_as_default is for rare cases
when an empty string should be mapped to the default expression.

+ +
+ + +
+

DELETE ... IN PARTITION

+ +

DELETE FROM test IN PARTITION 202409 WHERE data LIKE '%trash%'

+ +

An option for DELETE query to explicitly limit it for a specified partition.

+ +

It avoids copying parts metadata for unrelated partitions.

+ +

Developer: Sunny.

+
+ + +
+

system.projections

+ +

A table in ClickHouse can contain "projections" — they represent the same data in a different physical order or an aggregation, to automatically optimize queries by using this data.

+ +

CREATE TABLE hits (CounterID UInt32, URL String +PROJECTION totals (SELECT CounterID, count(), uniq(URL) GROUP BY CounterID) +) ENGINE = MergeTree ORDER BY (CounterID, EventTime); +

+ +

A new system table to introspect projections.

+ +

Demo

+ + + +

Developer: Jordi Villar.

+
+ +
+

_headers Column For URL Engine

+ +

Obtain a dictionary of HTTP response headers when querying a remote server.

+ +

SELECT _headers, * +FROM url('https://api.github.com/repos/ClickHouse/ClickHouse') +FORMAT Vertical +

+ +

Demo

+ +

Developer: Flynn.

+
+ +
+

arrayZipUnaligned

+ +

:) SELECT arrayZip([1, 2, 3], ['Hello', 'world']) + +Received exception: +The argument 1 and argument 2 of function arrayZip have different
array sizes.
+ +:) SELECT arrayZipUnaligned([1, 2, 3], ['Hello', 'world']) AS res + + ┌─res────────────────────────────────┐ +1. │ [(1,'Hello'),(2,'world'),(3,NULL)] │ + └────────────────────────────────────┘ +

+ +

Developer: TaiYang Li.

+
+ + +
+

Performance Improvements

+
+ +
+

Hive-Style Partitioning

+ +

A partitioning of data into different directories,
+when an object path contains sub-directories in the form of key=value.

+ +

Example:

s3://ookla-open-data/parquet/performance/type=fixed/year=2019/quarter=1/
2019-01-01_performance_fixed_tiles.parquet

+ +

Developer: Yarik Briukhovetskyi.

+
+ +
+

Hive-Style Partitioning

+ +

ClickHouse 24.8:

SET use_hive_partitioning = 1;

+ +

— enables virtual columns from the paths: type, year, quarter +
  and automatically infers their types.

+ +

ClickHouse 24.9:

+ +

— does automatic partition pruning!

+ +

Demo

+ + + +

Developer: Yarik Briukhovetskyi.

+
+ +
+

Faster Array/Map Construction

+ +

:) SELECT [a, b, c] FROM table +

+ +

Demo

+ + + +

Developer: TaiYang Li.

+
+ +
+

Faster JOINs

+ +

By a low-level optimization for the case of repeating keys.

+ +

Demo

+ + + +

Developer: KevinyhZou.

+
+ + +
+

Something Interesting

+
+ +
+

Iceberg On Azure And Local

+ +

In version 24.8, Iceberg tables were supported only for S3.

+ +

In version 24.9, it is supported for Azure Blob storage +
and local filesystem.

+ +

Now there are IcebergS3, IcebergAzure, and IcebergLocal table engines, +
as well as icebergS3, icebergAzure, and icebergLocal table functions.

+ +

Developer: Daniil Ivanik.

+
+ +
+

Multiple Credentials For a User

+ +

-- create a user with two alternative passwords: +CREATE USER test IDENTIFIED + BY 'abc' VALID UNTIL '2024-10-01', + BY 'def' VALID UNTIL '2024-11-01'; + +-- create a user with multiple authentication methods: +CREATE USER test IDENTIFIED + WITH sha256_password BY 'abc', + WITH ssh_key BY KEY '...' TYPE 'ssh-ed25519'; + +-- add a new method: +ALTER USER test ADD IDENTIFIED ...; + +-- keep only the latest method: +ALTER USER test RESET AUTHENTICATION METHODS TO NEW; +

+ +Developer: Arthur Passos. +
+ +
+

APPEND For Refreshable Materialized Views 🧪

+ +

CREATE MATERIALIZED VIEW [IF NOT EXISTS] [db.]table_name + REFRESH EVERY|AFTER interval [OFFSET interval] + RANDOMIZE FOR interval + DEPENDS ON [db.]name [, [db.]name [, ...]] + [APPEND] [TO [db.]name] [(columns)] [ENGINE = engine] + AS SELECT ... +

+ +

Refreshable Materialized Views exist since 23.11.

+

The APPEND mode is new in 24.9.

+ +

Developer: Michael Kolupaev.

+
+ +
+

APPEND For Refreshable Materialized Views 🧪

+ +

Run the SELECT query in background
and atomically +replace or append to the table with its result.

+

Run the refresh process using a flexible configured schedule.

+

Support a dependency graph with multiple materialized views.

+ +

Example: periodically request an external API with the url table function +
and keep accumulating results in a table. +

+ + + +

Developer: Michael Kolupaev.

+
+ +
+

Variant Types In Schema Inference 🧪

+ +

Now ClickHouse supports automatic usage of the Variant data type +
for schema inference.

+ +

Demo

+ + + +

Developer: Shaun Struwig.

+
+ +
+

Aggregate Functions To Analyze JSON 🧪

+ +

distinctDynamicTypes,
distinctJSONPaths,
distinctJSONPathsAndTypes

+ +

SELECT DISTINCT arrayJoin(JSONAllPaths(data)) FROM website_traffic; + +SELECT distinctJSONPaths(data) FROM website_traffic;

+ +

Developer: Pavel Kruglov.

+
+ +
+

Bonus

+
+ +
+

50th International Conference on Very Large Databases, Guangzhou, China - August 26-30, 2024.

+ +
+ +
+

Integrations

+

ClickPipes: +
— allows custom certificates for authentication in Kafka (SASL, TLS); +
— shows the ingestion latency graph for Kafka and Kinesis; +
— scaling controls for (private beta); +
— allows to put the entire raw message into a single column.

+ +

Java connector: version 0.7.0 with memory and performance optimizations.

+ +

Rust client: improved parameter bindings; documentation.

+ +

JavaScript client: supports the experimental JSON type.

+ +

DBT: now supports projections! + role_arn for S3.

+ +
+ +
+

Integrations

+ +

Updates for Spark and Beam, Grafana, PeerDB.

+ +

Thanks for many updates to our contributors: +
mitchbregs, rjoelnorgren (DBT), +
loyd, pravic, blind-oracle (Rust), +
javiercj93, alxhill, BeenAxis (Java), +
Kenterfie, Defman (Grafana), +
achmad-dev (Go), bakwc, angusholder (Python), +
AlexTheKing (Spark).

+
+ +
+

Meetups

+

— 🇦🇺 DataEngBytes, Perth, Sept 27th +
— 🇮🇩 Jakarta, Oct 1st +
— 🇦🇺 DataEngBytes, Melbourne, Oct 1st +
— 🇸🇬 Singapore, Oct 3rd +
— 🇳🇿 DataEngBytes, Auckland, Oct 4th +
— 🇪🇸 Madrid, Oct 21th +
— 🇪🇸 Barcelona, Oct 29th +
— 🇳🇴 Oslo, Oct 31th +
— 🇳🇱 Ghent, Nov 19th +
— 🇦🇪 Dubai, Nov 21th +
— 🇫🇷 Paris, Nov 26th +

+

I will be in person on some of these meetups :)

+
+ + +
+

Reading Corner

+ + +

https://clickhouse.com/blog/

+

— How we built our DWH; +
— VLDB paper + videos; +
— Building apps with query API endpoints; +
— Salesforce analytics with Estuary Flow; +
— ePilot migrated from Redshift and Influx to ClickHouse; +
— How Weights&Biases uses ClickHouse; +
— ClickHouse for ML & AI; +

+
+ +
+

Q&A

+
+ + +
+ + + + + + + + + diff --git a/release_24.9/pictures/LICENSE b/release_24.9/pictures/LICENSE new file mode 100644 index 0000000..bc48ba5 --- /dev/null +++ b/release_24.9/pictures/LICENSE @@ -0,0 +1,2 @@ +Some photos are from Shutterstock, some photos are personal (Alexey Milovidov). +No rights granted. diff --git a/release_24.9/pictures/back1.jpg b/release_24.9/pictures/back1.jpg new file mode 100644 index 0000000..979ea87 Binary files /dev/null and b/release_24.9/pictures/back1.jpg differ diff --git a/release_24.9/pictures/back2.jpg b/release_24.9/pictures/back2.jpg new file mode 100644 index 0000000..634b5a8 Binary files /dev/null and b/release_24.9/pictures/back2.jpg differ diff --git a/release_24.9/pictures/back3.jpg b/release_24.9/pictures/back3.jpg new file mode 100644 index 0000000..de46849 Binary files /dev/null and b/release_24.9/pictures/back3.jpg differ diff --git a/release_24.9/pictures/back4.jpg b/release_24.9/pictures/back4.jpg new file mode 100644 index 0000000..8639cc8 Binary files /dev/null and b/release_24.9/pictures/back4.jpg differ diff --git a/release_24.9/pictures/back5.jpg b/release_24.9/pictures/back5.jpg new file mode 100644 index 0000000..71c59df Binary files /dev/null and b/release_24.9/pictures/back5.jpg differ diff --git a/release_24.9/pictures/back6.jpg b/release_24.9/pictures/back6.jpg new file mode 100644 index 0000000..9acaf23 Binary files /dev/null and b/release_24.9/pictures/back6.jpg differ diff --git a/release_24.9/pictures/back7.jpg b/release_24.9/pictures/back7.jpg new file mode 100644 index 0000000..9ad34ec Binary files /dev/null and b/release_24.9/pictures/back7.jpg differ diff --git a/release_24.9/pictures/blog.png b/release_24.9/pictures/blog.png new file mode 100644 index 0000000..e4ca6ea Binary files /dev/null and b/release_24.9/pictures/blog.png differ diff --git a/release_24.9/pictures/meetups.jpg b/release_24.9/pictures/meetups.jpg new file mode 100644 index 0000000..f211e38 Binary files /dev/null and b/release_24.9/pictures/meetups.jpg differ diff --git a/release_24.9/pictures/vldb.png b/release_24.9/pictures/vldb.png new file mode 100644 index 0000000..25e18bf Binary files /dev/null and b/release_24.9/pictures/vldb.png differ diff --git a/release_24.9/pictures/wing.jpg b/release_24.9/pictures/wing.jpg new file mode 100644 index 0000000..6915a95 Binary files /dev/null and b/release_24.9/pictures/wing.jpg differ diff --git a/release_24.9/shower/shower-video.css b/release_24.9/shower/shower-video.css new file mode 100644 index 0000000..da33b65 --- /dev/null +++ b/release_24.9/shower/shower-video.css @@ -0,0 +1,9 @@ +/*! + Video plugin for Shower, HTML presentation engine (github.com/shower/shower) + + Browser support: latest versions of all major browsers + + @url github.com/operatino/shower-video + @author Robert Haritonov + @twitter @operatino +*/video{background-color:#000}.mobile .video_wrapper{display:none}.slide.cover video:not(.background){z-index:1}.ipad .slide.cover.w video{width:1024px;height:576px}.ipad .slide.cover.h video{width:1365.33333px;height:768px}.iphone .slide.cover .video_wrapper{position:relative;height:300px}.iphone .slide.cover .video_wrapper video{width:100%;height:100%} diff --git a/release_24.9/shower/shower-video.js b/release_24.9/shower/shower-video.js new file mode 100644 index 0000000..dc6f3b4 --- /dev/null +++ b/release_24.9/shower/shower-video.js @@ -0,0 +1,202 @@ +/*! + Video plugin for Shower, HTML presentation engine (github.com/shower/shower) + + Browser support: latest versions of all major browsers + + @url github.com/operatino/shower-video + @author Robert Haritonov + @twitter @operatino +*/ + +/* + TODO: + * rerun video if it finished playback or next slide tick + * check preload on android mobile devices + * mark videos as played for turning off autoplay on iphone + + */ + +if(!(window.showerVideo && window.showerVideo.init)) { + +window.showerVideo = (function(window, document, undefined) { + + var showerVideo = {}, + u = {}, + html = document.getElementsByTagName('html')[0], + showerCssInit = 0; + + showerVideo.debug = false; + + showerVideo.isMobile = false; + showerVideo.isIPhone = false; + showerVideo.isIPad = false; + + /* + + Utils + + */ + + u.query = function(query) { + return document.querySelectorAll(query); + }; + + u.forEach = function(array, callback) { + Array.prototype.forEach.call(array, function(item){ + callback(item); + }); + }; + + + /* + + Core + + */ + + showerVideo.prepareEnv = function(){ + if (navigator.userAgent.match(/Android/i) + || navigator.userAgent.match(/webOS/i) + || navigator.userAgent.match(/iPhone/i) + || navigator.userAgent.match(/iPad/i) + || navigator.userAgent.match(/iPod/i) + || navigator.userAgent.match(/BlackBerry/i) + || navigator.userAgent.match(/Windows Phone/i) + ) { + showerVideo.isMobile = true; + html.classList.add('mobile'); + } + + if ( navigator.userAgent.match(/iPhone/i) ) { + showerVideo.isIPhone = true; + html.classList.add('iphone'); + } + + if ( navigator.userAgent.match(/iPad/i) ) { + showerVideo.isIPad = true; + html.classList.add('ipad'); + } + }; + + showerVideo.startVideo = function(){ + //pause all videos first + var allVideos = u.query('video'); + + u.forEach(allVideos, function(el){ + el.pause(); + + if (showerVideo.isMobile) { el.parentNode.style.display = 'none';} + }); + + //Fetch all videos on current slide + var activeVideos = u.query('.slide.active video'); + u.forEach(activeVideos, function(el){ + var play = function() { + //Resetting video + el.currentTime = 0; + el.play(); + }; + + var prepareForPlaying = function(){ + //For triggering video load on iPad +// el.load(); +// el.play(); + + //And then pause till video fully downloaded +// el.pause(); + + //TODO: add loader + + //Waiting till video fully loads + el.addEventListener('canplaythrough', play, false); + }; + + if(el && el.currentTime !== undefined) { + if (el.readyState !== 4) { //HAVE_ENOUGH_DATA + + if (showerVideo.debug) console.log('Video not ready'); + + if(showerVideo.isMobile && showerCssInit === 0) { + //TODO: add loader + //TODO: on first page visit with video, add play button + + //initing video after first Shower CSS init, to avoid CPU load bottleneck + setTimeout(function(){ + //TODO: move this init to Full mode check + showerCssInit = 1; + + el.parentNode.style.display = 'block'; + + prepareForPlaying(); + }, 700); + + } else { + + //Init video for mobile devices + if (showerVideo.isMobile) { el.parentNode.style.display = 'block';} + + prepareForPlaying(); + } + + } else { + if (showerVideo.debug) console.log('Video is ready'); + + if (showerVideo.isMobile) { el.parentNode.style.display = 'block';} + + play(); + } + } + }); + }; + + showerVideo.startGif = function(){ + var activeSlideGifs = u.query('.slide.active .gif'), + allGifs = u.query('.slide .gif'); + + if( activeSlideGifs.length !== 0) { + + u.forEach(activeSlideGifs, function(item){ + if (item.classList.contains('real')) { + item.style.display = 'block'; + } else { + item.style.display = 'none'; + } + }); + + } else { + + u.forEach(allGifs, function(item){ + if (item.classList.contains('real')) { + item.style.display = 'none'; + } else { + item.style.display = 'block'; + } + }); + } + }; + + showerVideo.init = function(){ + showerVideo.prepareEnv(); + + // Listen for the Slide Switch event + // TODO: wait for proper API implementation in Shower + document.addEventListener('keyup', function (e) { + showerVideo.startVideo(); + showerVideo.startGif(); + }, false); + }; + + + /* + + Init + + */ + + showerVideo.init(); + + return showerVideo; + +})(this, this.document); + +} \ No newline at end of file diff --git a/release_24.9/shower/shower.min.js b/release_24.9/shower/shower.min.js new file mode 100644 index 0000000..449843a --- /dev/null +++ b/release_24.9/shower/shower.min.js @@ -0,0 +1,8 @@ +/** + * Core for Shower HTML presentation engine + * shower-core v2.0.7, https://github.com/shower/core + * @copyright 2010–2016 Vadim Makeev, http://pepelsbey.net/ + * @license MIT + */ +!function(a){var b,c={NOT_RESOLVED:"NOT_RESOLVED",IN_RESOLVING:"IN_RESOLVING",RESOLVED:"RESOLVED"},d=function(){var l={trackCircularDependencies:!0,allowMultipleDeclarations:!0},m={},n=!1,o=[],p=function(a,d,e){e||(e=d,d=[]);var f=m[a];f||(f=m[a]={name:a,decl:b}),f.decl={name:a,prev:f.decl,fn:e,state:c.NOT_RESOLVED,deps:d,dependents:[],exports:b}},q=function(b,c,d){"string"==typeof b&&(b=[b]),n||(n=!0,k(v)),o.push({deps:b,cb:function(b,f){f?(d||e)(f):c.apply(a,b)}})},r=function(a){var b=m[a];return b?c[b.decl.state]:"NOT_DEFINED"},s=function(a){return!!m[a]},t=function(a){for(var b in a)a.hasOwnProperty(b)&&(l[b]=a[b])},u=function(){var a,b={};for(var c in m)m.hasOwnProperty(c)&&(a=m[c],(b[a.decl.state]||(b[a.decl.state]=[])).push(c));return b},v=function(){n=!1,w()},w=function(){var a,b=o,c=0;for(o=[];a=b[c++];)x(null,a.deps,[],a.cb)},x=function(a,b,c,d){var e=b.length;e||d([]);for(var g,h,i=[],j=function(a,b){if(b)return void d(null,b);if(!--e){for(var c,f=[],g=0;c=i[g++];)f.push(c.exports);d(f)}},k=0,l=e;k ")+'"')},h=function(a){return Error('Declaration of module "'+a.name+'" has already been provided')},i=function(a){return Error('Multiple declarations of module "'+a.name+'" have been detected')},j=function(a,b){for(var c,d=0;c=b[d++];)if(a===c)return!0;return!1},k=function(){var b=[],c=function(a){return 1===b.push(a)},d=function(){var a=b,c=0,d=b.length;for(b=[];c=0&&!b.defaultPrevented();){var d=a[c];d&&(d.context?d.callback.call(d.context,b):d.callback(b)),c--}}}),a(e)}),shower.modules.define("Plugins",["Emitter","util.extend"],function(a,b,c){function d(a){this.events=new b({context:this}),this._showerGlobal=a,this._showerInstances=a.getInited(),this._plugins={},this._instances=[],a.events.on("init",this._onShowerInit,this)}c(d.prototype,{destroy:function(){this._showerGlobal.events.off("init",this._onShowerInit,this),this._plugins=null},add:function(a,b){if(this._plugins.hasOwnProperty(a))throw new Error("Plugin "+a+" already exist.");return this._requireAndAdd({name:a,options:b}),this},remove:function(a){if(!this._plugins.hasOwnProperty(a))throw new Error("Plugin "+a+" not found.");return delete this._plugins[a],this.events.emit("remove",{name:a}),this},get:function(a,b){var c,d=this._plugins[a];if(d&&b)for(var e=0,f=this._instances.length;e=0;e--)if(d[e].getId()===a){b=d[e],c=e;break}return{slide:b,index:c}},_onSlideActivate:function(a){window.location.hash=a.get("slide").getId(),this._setTitle()},_onContainerSlideModeChange:function(){this._setTitle(),this.save()},_isSlideMode:function(){return this._shower.container.isSlideMode()},_onPopstate:function(){var a,b=this._shower,c=window.location.hash.substr(1),d=b.player.getCurrentSlide(),e=b.player.getCurrentSlideIndex();this._isSlideMode()&&e===-1?b.player.go(0):e===-1&&""!==window.location.hash&&b.player.go(0),d&&c!==d.getId()&&(a=this._getSlideById(c),b.player.go(a.index))},_setTitle:function(){var a=document.title,b=this._isSlideMode(),c=this._shower.player.getCurrentSlide();if(b&&c){var d=c.getTitle();document.title=d?d+" — "+this._documentTitle:this._documentTitle}else this._documentTitle!==a&&(document.title=this._documentTitle)}}),a(e)}),shower.modules.define("shower.Player",["Emitter","util.bound","util.extend"],function(a,b,c,d){function e(a){this.events=new b({context:this,parent:a.events}),this._shower=a,this._showerListeners=null,this._playerListeners=null,this._currentSlideNumber=-1,this._currentSlide=null,this.init()}d(e.prototype,{init:function(){this._showerListeners=this._shower.events.group().on("slideadd",this._onSlideAdd,this).on("slideremove",this._onSlideRemove,this).on("slidemodeenter",this._onSlideModeEnter,this),this._playerListeners=this.events.group().on("prev",this._onPrev,this).on("next",this._onNext,this),document.addEventListener("keydown",c(this,"_onKeyDown"))},destroy:function(){this._showerListeners.offAll(),this._playerListeners.offAll(),document.removeEventListener("keydown",c(this,"_onKeyDown")),this._currentSlide=null,this._currentSlideNumber=null,this._shower=null},next:function(){return this.events.emit("next"),this},prev:function(){return this.events.emit("prev"),this},first:function(){return this.go(0),this},last:function(){return this.go(this._shower.getSlidesCount()-1),this},go:function(a){"number"!=typeof a&&(a=this._shower.getSlideIndex(a));var b=this._shower.getSlidesCount(),c=this._currentSlide;return a!=this._currentSlideNumber&&a=0&&(c&&c.isActive()&&c.deactivate(),c=this._shower.get(a),this._currentSlide=c,this._currentSlideNumber=a,c.isActive()||c.activate(),this.events.emit("activate",{index:a,slide:c})),this},getCurrentSlide:function(){return this._currentSlide},getCurrentSlideIndex:function(){return this._currentSlideNumber},_onPrev:function(){this._changeSlide(this._currentSlideNumber-1)},_onNext:function(){this._changeSlide(this._currentSlideNumber+1)},_changeSlide:function(a){this.go(a)},_onSlideAdd:function(a){var b=a.get("slide");b.events.on("activate",this._onSlideActivate,this)},_onSlideRemove:function(a){var b=a.get("slide");b.events.off("activate",this._onSlideActivate,this)},_onSlideActivate:function(a){var b=a.get("slide"),c=this._shower.getSlideIndex(b);this.go(c)},_onKeyDown:function(a){if(this._shower.isHotkeysEnabled()&&!/^(?:button|input|select|textarea)$/i.test(a.target.tagName))switch(this.events.emit("keydown",{event:a}),a.which){case 33:case 38:case 37:case 72:case 75:if(a.altKey||a.ctrlKey||a.metaKey)return;a.preventDefault(),this.prev();break;case 34:case 40:case 39:case 76:case 74:if(a.altKey||a.ctrlKey||a.metaKey)return;a.preventDefault(),this.next();break;case 36:a.preventDefault(),this.first();break;case 35:a.preventDefault(),this.last();break;case 32:this._shower.container.isSlideMode()&&(a.shiftKey?this.prev():this.next())}},_onSlideModeEnter:function(){this._currentSlide||this.go(0)}}),a(e)}),shower.modules.define("shower.slidesParser",["Slide"],function(a,b){function c(a,c){var d=a.querySelectorAll(c);return d=Array.prototype.slice.call(d),d.map(function(a,c){var d=new b(a);return a.id||(a.id=c+1),d})}a(c)}),shower.modules.define("Slide",["shower.defaultOptions","Emitter","Options","slide.Layout","slide.layoutFactory","util.Store","util.extend"],function(a,b,c,d,e,f,g,h){function i(a,b,e){this.events=new c,this.options=new d(b),this.layout=null,this.state=new g({visited:0,index:null},e),this._content=a,this._isVisited=this.state.get("visited")>0,this._isActive=!1,this.init()}h(i.prototype,{init:function(){this.layout="string"==typeof this._content?new f.createLayout({content:this._content}):new e(this._content,this.options),this.layout.setParent(this),this._setupListeners()},destroy:function(){this._clearListeners(),this._isActive=null,this.options=null,this.layout.destroy()},activate:function(){this._isActive=!0;var a=this.state.get("visited");return this.state.set("visited",++a),this.events.emit("activate",{slide:this}),this},deactivate:function(){return this._isActive=!1,this.events.emit("deactivate",{slide:this}),this},isActive:function(){return this._isActive},isVisited:function(){return this.state.get("visited")>0},getTitle:function(){return this.layout.getTitle()},setTitle:function(a){return this.layout.setTitle(a),this},getId:function(){return this.layout.getElement().id},getContent:function(){return this.layout.getContent()},_setupListeners:function(){this.layoutListeners=this.layout.events.group().on("click",this._onSlideClick,this)},_clearListeners:function(){this.layoutListeners.offAll()},_onSlideClick:function(){this.activate(),this.events.emit("click",{slide:this})}}),a(i)}),shower.modules.define("slide.Layout",["Options","shower.defaultOptions","Emitter","util.bound","util.extend"],function(a,b,c,d,e,f){function g(a,e){this.options=new b({title_element_selector:c.slide_title_element_selector,active_classname:c.slide_active_classname,visited_classname:c.slide_visited_classname},e),this.events=new d,this._element=a,this._parent=null,this._parentElement=null,this.init()}f(g.prototype,{init:function(){var a=this._element.parentNode;a?this._parentElement=a:this.setParentElement(a)},destroy:function(){this.setParent(null)},setParent:function(a){this._parent!=a&&(this._clearListeners(),this._parent=a,this._parent&&this._setupListeners(),this.events.emit("parentchange",{parent:a}))},getParent:function(){return this._parent},setParentElement:function(a){a!=this._parentElement&&(this._parentElement=a,a.appendChild(this._element),this.events.emit("parentelementchange",{parentElement:a}))},getParentElement:function(){return this._parentElement},getElement:function(){return this._element},setTitle:function(a){var b=this.options.get("title_element_selector"),c=this._element.querySelector(b);c?c.innerHTML=a:(c=document.createElement(b),c.innerHTML=a,this._element.insertBefore(c,this._element.firstChild))},getTitle:function(){var a=this.options.get("title_element_selector"),b=this._element.querySelector(a);return b?b.textContent:null},getData:function(a){var b=this._element;return b.dataset?b.dataset[a]:b.getAttribute("data-"+a)},getContent:function(){return this._element.innerHTML},_setupListeners:function(){this._slideListeners=this._parent.events.group().on("activate",this._onSlideActivate,this).on("deactivate",this._onSlideDeactivate,this),this._element.addEventListener("click",e(this,"_onSlideClick"),!1)},_clearListeners:function(){this._slideListeners&&this._slideListeners.offAll(),this._element.removeEventListener("click",e(this,"_onSlideClick"))},_onSlideActivate:function(){this._element.classList.add(this.options.get("active_classname"))},_onSlideDeactivate:function(){var a=this._element.classList;a.remove(this.options.get("active_classname")),a.add(this.options.get("visited_classname"))},_onSlideClick:function(){this.events.emit("click")}}),a(g)}),shower.modules.define("slide.layoutFactory",["slide.Layout","util.extend"],function(a,b,c){var d={};c(d,{createLayout:function(a){a=a||{};var e=d._createElement(c({content:"",contentType:"slide"},a));return new b(e)},_createElement:function(a){var b=document.createElement("section");return b.innerHTML=a.content,b.classList.add(a.contentType),b}}),a(d)}),shower.modules.define("util.bound",function(a){function b(a,b){return a["__bound_"+b]||(a["__bound_"+b]=a[b].bind(a))}a(b)}),shower.modules.define("util.extend",function(a){function b(a){if(!a)throw new Error("util.extend: Target not found");return"undefined"==typeof Object.assign?c.apply(null,arguments):Object.assign.apply(null,arguments)}function c(a){for(var b=1,c=arguments.length;b0&&(a.preventDefault(),this.prev())},_go:function(){for(var a=0,b=this._elements.length;awindow.innerWidth/2?c.player.next():c.player.prev()),d||f.activate())},_onTouchMove:function(a){this._shower.container.isSlideMode()&&a.preventDefault()},_getSlideByElement:function(a){for(var b=this._shower.getSlides(),c=null,d=0,e=b.length;d` of your presentation. + +## PDF + +Ribbon could be exported to PDF by printing it from the list mode in Chrome or Opera browsers. See [printing documentation](https://github.com/shower/shower/blob/master/docs/printing-en.md) for more options. + +## Development + +If you want to adjust theme for your needs: + +1. Fork this repository and clone it to your local machine. +2. Install dependencies: `npm install`. +3. Start a local server with watcher: `npm run dev` or just `gulp` if you have it installed globally. +4. Edit your files and see changes in the opened browser. + +To take part in Ribbon development please read [contributing guidelines](CONTRIBUTING.md) first and [file an issue](https://github.com/shower/shower/issues/new) before sending any pull request. + +--- +Licensed under [MIT License](LICENSE.md). diff --git a/release_24.9/shower/themes/yandex/styles/0w7OcWZM_QLP8x-LQUXFOgXO6dE.svg b/release_24.9/shower/themes/yandex/styles/0w7OcWZM_QLP8x-LQUXFOgXO6dE.svg new file mode 100644 index 0000000..01f90bd --- /dev/null +++ b/release_24.9/shower/themes/yandex/styles/0w7OcWZM_QLP8x-LQUXFOgXO6dE.svg @@ -0,0 +1,730 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/release_24.9/shower/themes/yandex/styles/1jvKJ_-hCXl3s7gmFl-y_-UHTaI.woff b/release_24.9/shower/themes/yandex/styles/1jvKJ_-hCXl3s7gmFl-y_-UHTaI.woff new file mode 100644 index 0000000..57233a2 Binary files /dev/null and b/release_24.9/shower/themes/yandex/styles/1jvKJ_-hCXl3s7gmFl-y_-UHTaI.woff differ diff --git a/release_24.9/shower/themes/yandex/styles/40vXwNl4eYYMgteIVgLP49dwmfc.woff b/release_24.9/shower/themes/yandex/styles/40vXwNl4eYYMgteIVgLP49dwmfc.woff new file mode 100644 index 0000000..d08b30a Binary files /dev/null and b/release_24.9/shower/themes/yandex/styles/40vXwNl4eYYMgteIVgLP49dwmfc.woff differ diff --git a/release_24.9/shower/themes/yandex/styles/4UDe4nlVvgEJ-VmLWNVq3SxCsA.ttf b/release_24.9/shower/themes/yandex/styles/4UDe4nlVvgEJ-VmLWNVq3SxCsA.ttf new file mode 100644 index 0000000..329edc5 Binary files /dev/null and b/release_24.9/shower/themes/yandex/styles/4UDe4nlVvgEJ-VmLWNVq3SxCsA.ttf differ diff --git a/release_24.9/shower/themes/yandex/styles/9nzjfpCR2QHvK1EzHpDEIoVFGuY.ttf b/release_24.9/shower/themes/yandex/styles/9nzjfpCR2QHvK1EzHpDEIoVFGuY.ttf new file mode 100644 index 0000000..789d2f8 Binary files /dev/null and b/release_24.9/shower/themes/yandex/styles/9nzjfpCR2QHvK1EzHpDEIoVFGuY.ttf differ diff --git a/release_24.9/shower/themes/yandex/styles/COPYING b/release_24.9/shower/themes/yandex/styles/COPYING new file mode 100644 index 0000000..11955ca --- /dev/null +++ b/release_24.9/shower/themes/yandex/styles/COPYING @@ -0,0 +1 @@ +Yandex fonts can be used only with unmodified version of presentation from ClickHouse authors. diff --git a/release_24.9/shower/themes/yandex/styles/CYblzLEXzCqQIvrYs7QKQe2omRk.woff2 b/release_24.9/shower/themes/yandex/styles/CYblzLEXzCqQIvrYs7QKQe2omRk.woff2 new file mode 100644 index 0000000..8553d6b Binary files /dev/null and b/release_24.9/shower/themes/yandex/styles/CYblzLEXzCqQIvrYs7QKQe2omRk.woff2 differ diff --git a/release_24.9/shower/themes/yandex/styles/EKLr1STNokPqxLAQa_RyN82pL98.svg b/release_24.9/shower/themes/yandex/styles/EKLr1STNokPqxLAQa_RyN82pL98.svg new file mode 100644 index 0000000..57ba366 --- /dev/null +++ b/release_24.9/shower/themes/yandex/styles/EKLr1STNokPqxLAQa_RyN82pL98.svg @@ -0,0 +1,733 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/release_24.9/shower/themes/yandex/styles/H63jN0veW07XQUIA2317lr9UIm8.eot b/release_24.9/shower/themes/yandex/styles/H63jN0veW07XQUIA2317lr9UIm8.eot new file mode 100644 index 0000000..613cf7f Binary files /dev/null and b/release_24.9/shower/themes/yandex/styles/H63jN0veW07XQUIA2317lr9UIm8.eot differ diff --git a/release_24.9/shower/themes/yandex/styles/LGiRvlfqQHlWR9YKLhsw5e7KGNA.woff2 b/release_24.9/shower/themes/yandex/styles/LGiRvlfqQHlWR9YKLhsw5e7KGNA.woff2 new file mode 100644 index 0000000..c007907 Binary files /dev/null and b/release_24.9/shower/themes/yandex/styles/LGiRvlfqQHlWR9YKLhsw5e7KGNA.woff2 differ diff --git a/release_24.9/shower/themes/yandex/styles/LI6l3L2RqcgxBe2pXmuUha37czQ.eot b/release_24.9/shower/themes/yandex/styles/LI6l3L2RqcgxBe2pXmuUha37czQ.eot new file mode 100644 index 0000000..f2596d7 Binary files /dev/null and b/release_24.9/shower/themes/yandex/styles/LI6l3L2RqcgxBe2pXmuUha37czQ.eot differ diff --git a/release_24.9/shower/themes/yandex/styles/PzD8hWLMunow5i3RfJ6WQJAL7aI.ttf b/release_24.9/shower/themes/yandex/styles/PzD8hWLMunow5i3RfJ6WQJAL7aI.ttf new file mode 100644 index 0000000..65e740a Binary files /dev/null and b/release_24.9/shower/themes/yandex/styles/PzD8hWLMunow5i3RfJ6WQJAL7aI.ttf differ diff --git a/release_24.9/shower/themes/yandex/styles/X6zG5x_wO8-AtwJ-vDLJcKC5228.ttf b/release_24.9/shower/themes/yandex/styles/X6zG5x_wO8-AtwJ-vDLJcKC5228.ttf new file mode 100644 index 0000000..8f3ca88 Binary files /dev/null and b/release_24.9/shower/themes/yandex/styles/X6zG5x_wO8-AtwJ-vDLJcKC5228.ttf differ diff --git a/release_24.9/shower/themes/yandex/styles/ZKhaR0m08c8CRRL77GtFKoHcLYA.svg b/release_24.9/shower/themes/yandex/styles/ZKhaR0m08c8CRRL77GtFKoHcLYA.svg new file mode 100644 index 0000000..e5501c3 --- /dev/null +++ b/release_24.9/shower/themes/yandex/styles/ZKhaR0m08c8CRRL77GtFKoHcLYA.svg @@ -0,0 +1,736 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/release_24.9/shower/themes/yandex/styles/ayAFYoY8swgBLhq_I56tKj2JftU.eot b/release_24.9/shower/themes/yandex/styles/ayAFYoY8swgBLhq_I56tKj2JftU.eot new file mode 100644 index 0000000..c5bfba7 Binary files /dev/null and b/release_24.9/shower/themes/yandex/styles/ayAFYoY8swgBLhq_I56tKj2JftU.eot differ diff --git a/release_24.9/shower/themes/yandex/styles/f0AAJ9GJ4iiwEmhG-7PWMHk6vUY.woff b/release_24.9/shower/themes/yandex/styles/f0AAJ9GJ4iiwEmhG-7PWMHk6vUY.woff new file mode 100644 index 0000000..a129cc9 Binary files /dev/null and b/release_24.9/shower/themes/yandex/styles/f0AAJ9GJ4iiwEmhG-7PWMHk6vUY.woff differ diff --git a/release_24.9/shower/themes/yandex/styles/g8_MyyKVquSZ3xEL6tarK__V9Vw.eot b/release_24.9/shower/themes/yandex/styles/g8_MyyKVquSZ3xEL6tarK__V9Vw.eot new file mode 100644 index 0000000..ef1ca5e Binary files /dev/null and b/release_24.9/shower/themes/yandex/styles/g8_MyyKVquSZ3xEL6tarK__V9Vw.eot differ diff --git a/release_24.9/shower/themes/yandex/styles/gwyBTpxSwkFCF1looxqs6JokKls.svg b/release_24.9/shower/themes/yandex/styles/gwyBTpxSwkFCF1looxqs6JokKls.svg new file mode 100644 index 0000000..6eb3c51 --- /dev/null +++ b/release_24.9/shower/themes/yandex/styles/gwyBTpxSwkFCF1looxqs6JokKls.svg @@ -0,0 +1,732 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/release_24.9/shower/themes/yandex/styles/lF_KG5g4tpQNlYIgA0e77fBSZ5s.svg b/release_24.9/shower/themes/yandex/styles/lF_KG5g4tpQNlYIgA0e77fBSZ5s.svg new file mode 100644 index 0000000..ca4d666 --- /dev/null +++ b/release_24.9/shower/themes/yandex/styles/lF_KG5g4tpQNlYIgA0e77fBSZ5s.svg @@ -0,0 +1,726 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/release_24.9/shower/themes/yandex/styles/lGQcYklLVV0hyvz1HFmFsUTj8_0.woff2 b/release_24.9/shower/themes/yandex/styles/lGQcYklLVV0hyvz1HFmFsUTj8_0.woff2 new file mode 100644 index 0000000..5372ef4 Binary files /dev/null and b/release_24.9/shower/themes/yandex/styles/lGQcYklLVV0hyvz1HFmFsUTj8_0.woff2 differ diff --git a/release_24.9/shower/themes/yandex/styles/pUcnOdRwl83MvPPzrNomhyletnA.woff b/release_24.9/shower/themes/yandex/styles/pUcnOdRwl83MvPPzrNomhyletnA.woff new file mode 100644 index 0000000..302fa0e Binary files /dev/null and b/release_24.9/shower/themes/yandex/styles/pUcnOdRwl83MvPPzrNomhyletnA.woff differ diff --git a/release_24.9/shower/themes/yandex/styles/sUYVCPUAQE7ExrvMS7FoISoO83s.woff2 b/release_24.9/shower/themes/yandex/styles/sUYVCPUAQE7ExrvMS7FoISoO83s.woff2 new file mode 100644 index 0000000..679db73 Binary files /dev/null and b/release_24.9/shower/themes/yandex/styles/sUYVCPUAQE7ExrvMS7FoISoO83s.woff2 differ diff --git a/release_24.9/shower/themes/yandex/styles/screen-16x10.css b/release_24.9/shower/themes/yandex/styles/screen-16x10.css new file mode 100644 index 0000000..af873e3 --- /dev/null +++ b/release_24.9/shower/themes/yandex/styles/screen-16x10.css @@ -0,0 +1,204 @@ +/** + * Ribbon theme for Shower HTML presentation engine + * shower-ribbon v2.0.8, https://github.com/shower/ribbon + * @copyright 2010–2016 Vadim Makeev, http://pepelsbey.net/ + * @license MIT + */ +@charset "UTF-8"; + + @font-face { + font-family: 'Yandex Sans Text Web'; + src: url(yy5JveR58JFkc97waf-xp0i6_jM.eot); + src: url(yy5JveR58JFkc97waf-xp0i6_jM.eot?#iefix) format('embedded-opentype'), + url(CYblzLEXzCqQIvrYs7QKQe2omRk.woff2) format('woff2'), + url(pUcnOdRwl83MvPPzrNomhyletnA.woff) format('woff'), + url(vNFEmXOcGYKJ4AAidUprHWoXrLU.ttf) format('truetype'), + url(0w7OcWZM_QLP8x-LQUXFOgXO6dE.svg#YandexSansTextWeb-Bold) format('svg'); + font-weight: 700; + font-style: normal; + font-stretch: normal + } + + @font-face { + font-family: 'Yandex Sans Text Web'; + src: url(LI6l3L2RqcgxBe2pXmuUha37czQ.eot); + src: url(LI6l3L2RqcgxBe2pXmuUha37czQ.eot?#iefix) format('embedded-opentype'), + url(z3MYElcut0R2MF_Iw1RDNrstgYs.woff2) format('woff2'), + url(1jvKJ_-hCXl3s7gmFl-y_-UHTaI.woff) format('woff'), + url(9nzjfpCR2QHvK1EzHpDEIoVFGuY.ttf) format('truetype'), + url(gwyBTpxSwkFCF1looxqs6JokKls.svg#YandexSansTextWeb-Regular) format('svg'); + font-weight: 400; + font-style: normal; + font-stretch: normal + } + + @font-face { + font-family: 'Yandex Sans Text Web'; + src: url(ayAFYoY8swgBLhq_I56tKj2JftU.eot); + src: url(ayAFYoY8swgBLhq_I56tKj2JftU.eot?#iefix) format('embedded-opentype'), + url(lGQcYklLVV0hyvz1HFmFsUTj8_0.woff2) format('woff2'), + url(f0AAJ9GJ4iiwEmhG-7PWMHk6vUY.woff) format('woff'), + url(4UDe4nlVvgEJ-VmLWNVq3SxCsA.ttf) format('truetype'), + url(EKLr1STNokPqxLAQa_RyN82pL98.svg#YandexSansTextWeb-Light) format('svg'); + font-weight: 300; + font-style: normal; + font-stretch: normal + } + + @font-face { + font-family: 'Yandex Sans Display Web'; + src: url(H63jN0veW07XQUIA2317lr9UIm8.eot); + src: url(H63jN0veW07XQUIA2317lr9UIm8.eot?#iefix) format('embedded-opentype'), + url(sUYVCPUAQE7ExrvMS7FoISoO83s.woff2) format('woff2'), + url(v2Sve_obH3rKm6rKrtSQpf-eB7U.woff) format('woff'), + url(PzD8hWLMunow5i3RfJ6WQJAL7aI.ttf) format('truetype'), + url(lF_KG5g4tpQNlYIgA0e77fBSZ5s.svg#YandexSansDisplayWeb-Regular) format('svg'); + font-weight: 400; + font-style: normal; + font-stretch: normal + } + + @font-face { + font-family: 'Yandex Sans Display Web'; + src: url(g8_MyyKVquSZ3xEL6tarK__V9Vw.eot); + src: url(g8_MyyKVquSZ3xEL6tarK__V9Vw.eot?#iefix) format('embedded-opentype'), + url(LGiRvlfqQHlWR9YKLhsw5e7KGNA.woff2) format('woff2'), + url(40vXwNl4eYYMgteIVgLP49dwmfc.woff) format('woff'), + url(X6zG5x_wO8-AtwJ-vDLJcKC5228.ttf) format('truetype'), + url(ZKhaR0m08c8CRRL77GtFKoHcLYA.svg#YandexSansDisplayWeb-Light) format('svg'); + font-weight: 300; + font-style: normal; + font-stretch: normal + } + +*,::after,::before{box-sizing:border-box} +a,abbr,acronym,address,applet,article,aside,audio,b,big,blockquote,body,canvas,caption,center,cite,code,dd,del,details,dfn,div,dl,dt,em,embed,fieldset,figcaption,figure,footer,form,h1,h2,h3,h4,h5,h6,header,hgroup,html,i,iframe,img,ins,kbd,label,legend,li,mark,menu,nav,object,ol,output,p,pre,q,ruby,s,samp,section,small,span,strike,strong,sub,summary,sup,table,tbody,td,tfoot,th,thead,time,tr,tt,u,ul,var,video{margin:0;padding:0;border:0;font:inherit;vertical-align:baseline} +article,aside,details,figcaption,figure,footer,header,hgroup,main,menu,nav,section{display:block} +.caption p,body{line-height:1} +p {line-height: 1.2} +ol,ul{list-style:none} +blockquote,q{quotes:none} +blockquote::after,blockquote::before,q::after,q::before{content:none} +table{border-collapse:collapse;border-spacing:0} +a{text-decoration:none} +@page{margin:0;size:1024px 640px} +.shower{color:#000;counter-reset:slide;font:25px/2 Yandex Sans Display Web,sans-serif;-webkit-print-color-adjust:exact;-webkit-text-size-adjust:none;-moz-text-size-adjust:none;-ms-text-size-adjust:none} +@media print{.shower{text-rendering:geometricPrecision} +} +.caption{font-size:25px;display:none;margin-top:-.2em;padding:0 1em .93em;width:100%;color:#3c3d40;text-shadow:0 1px 0 #8d8e90} +@media (min-width:1174px){.caption{font-size:50px} +} +@media (min-width:2348px){.caption{font-size:100px} +} +.caption h1{padding-bottom:.15em;font:1em/2 Yandex Sans Display Web,sans-serif} +.caption p{font-size:.6em} +.caption a{color:#4b86c2;text-shadow:0 -1px 0 #1f3f60} +.slide{position:relative;z-index:1;overflow:hidden;padding:20px 100px 0;width:1024px;height:640px;background: #FFF; font-size:25px} + +/*.slide::after{position:absolute;top:0;right:100px;padding-top:15px;width:50px;height:100px;background:url(../images/ribbon.svg) no-repeat;color:#fff;counter-increment:slide;content:counter(slide);text-align:center}*/ + +.slide h1{vertical-align:middle; color:#000;font:400 50px/2 Yandex Sans Display Web,sans-serif} +.slide h2{margin-bottom:34px;color:#000;font:400 50px/2 Yandex Sans Display Web,sans-serif} +.slide p{margin-bottom:1em} +.slide p.note{color:#979a9e} +.slide a{color:#4b86c2} +.slide b,.slide strong{font-weight:700} +.slide blockquote,.slide dfn,.slide em,.slide i{font-style:italic} +.slide code,.slide kbd,.slide mark,.slide samp{padding:.1em .3em;border-radius:.2em} +.slide code,.slide kbd,.slide samp{background:rgba(88,90,94,.1);line-height:1.25;font-family:PT Mono,monospace,monospace} +.slide mark{background:#fafaa2} +.slide sub,.slide sup{position:relative;line-height:0;font-size:75%} +.slide sub{bottom:-.25em} +.slide sup{top:-.5em} +.slide blockquote::before{position:absolute;margin:-.15em 0 0 -.43em;color:#ccc;line-height:1;font-size:8em;content:'\201C'} +.slide blockquote+figcaption{margin:-1em 0 1em;font-style:italic;font-weight:700} +.slide ol,.slide ul{margin-bottom:0em;counter-reset:list} +.slide ol li,.slide ul li{page-break-inside:avoid;text-indent:-2em} +.slide ol li::before,.slide ul li::before{display:inline-block;width:2em;color:#979a9e;text-align:right} +.slide ol ol,.slide ol ul,.slide ul ol,.slide ul ul{margin-bottom:0;margin-left:2em} +.slide ul>li::before{padding-right:.5em;content:'•'} +.slide ul>li:lang(ru)::before{content:'—'} +.slide ol>li::before{padding-right:.4em;counter-increment:list;content:counter(list) "."} +.slide table{margin-left:-100px;margin-bottom:1em;width:calc(100% + 100px + 100px)} +.slide table td:first-child,.slide table th:first-child{padding-left:96px} +.slide table td:last-child,.slide table th:last-child{padding-right:96px} +.slide table th{text-align:left;font-weight:700} +.slide table tr:not(:last-of-type)>*{background:-webkit-linear-gradient(bottom,rgba(88,90,94,.5) .055em,transparent .055em) repeat-x;background:linear-gradient(to top,rgba(88,90,94,.5) .055em,transparent .055em) repeat-x} +.slide table.striped tr:nth-child(even){background:rgba(88,90,94,.1)} +.slide table.striped tr>*{background-image:none} +.slide pre{margin-bottom:1em;counter-reset:code;white-space:pre;font-family:Monospace,Courier New;line-height:1;} +.slide pre code{display:block;margin-left:-100px;padding:0 0 0 100px;width:calc(100% + 100px + 100px);border-radius:0;background:0 0;line-height:2;white-space:pre;-moz-tab-size:4;-o-tab-size:4;tab-size:4} +.slide pre code:not(:only-child).mark{background:rgba(88,90,94,.1)} +.slide pre code:not(:only-child)::before{position:absolute;margin-left:-2em;color:#979a9e;counter-increment:code;content:counter(code,decimal-leading-zero) "."} +.slide pre mark{position:relative;z-index:-1;margin:0 -.3em} +.slide pre mark.important{background:#c00;color:#fff} +.slide pre .comment{color:#999} +.slide footer{position:absolute;right:0;bottom:-640px;left:0;display:none;padding:41px 100px 8px;background:#fbfbba;box-shadow:0 1px 0 #fafaa2 inset;-webkit-transition:bottom .3s;transition:bottom .3s} +.slide footer mark{background:rgba(255,255,255,.8)} +.slide:hover>footer{bottom:0} +.slide.grid{background-image:url(../images/grid.png);-ms-interpolation-mode:nearest-neighbor;image-rendering:-webkit-optimize-contrast;image-rendering:-moz-crisp-edges;image-rendering:pixelated} +@media (-webkit-min-device-pixel-ratio:2),(min-resolution:2dppx){.slide.grid{background-image:url(../images/grid@2x.png);background-size:1024px auto} +} +.slide.black{background-color:#000} +.slide.black::after,.slide.white::after{visibility:hidden} +.slide.white{background-color:#fff} +.slide .double,.slide .triple{-webkit-column-gap:75px;-moz-column-gap:75px;column-gap:75px;-webkit-hyphens:auto;-ms-hyphens:auto;hyphens:auto} +.slide .double{-webkit-column-count:2;-moz-column-count:2;column-count:2} +.slide .triple{-webkit-column-count:3;-moz-column-count:3;column-count:3} +.slide .shout{position:absolute;top:50%;left:0;width:100%;text-align:center;line-height:1;font-size:150px;-webkit-transform:translateY(-50%);transform:translateY(-50%)} +.slide .shout a{background:-webkit-linear-gradient(bottom,currentColor .11em,transparent .11em) repeat-x;background:linear-gradient(to top,currentColor .11em,transparent .11em) repeat-x} +.slide .cover{z-index:-1;max-width:100%;max-height:100%} +.slide .cover.w,.slide .cover.width{width:100%;max-height:none} +.slide .cover.h,.slide .cover.height{height:100%;max-width:none} +.slide .cover+figcaption{position:absolute;bottom:20px;right:10px;font-size:12px;opacity:.7;-webkit-transform-origin:0 100%;transform-origin:0 100%;-webkit-transform:translateX(100%) rotate(-90deg);transform:translateX(100%) rotate(-90deg)} +.slide .cover+figcaption.white{color:#fff} +.slide .cover+figcaption a{color:currentcolor} +.slide .cover,.slide .place{position:absolute;top:50%;left:50%;-webkit-transform:translate(-50%,-50%);transform:translate(-50%,-50%)} +.slide .place.b.l,.slide .place.b.r,.slide .place.bottom.left,.slide .place.bottom.right,.slide .place.t.l,.slide .place.t.r,.slide .place.top.left,.slide .place.top.right{-webkit-transform:none;transform:none} +.slide .place.b,.slide .place.bottom,.slide .place.t,.slide .place.top{-webkit-transform:translate(-50%,0);transform:translate(-50%,0)} +.slide .place.l,.slide .place.left,.slide .place.r,.slide .place.right{-webkit-transform:translate(0,-50%);transform:translate(0,-50%)} +.slide .place.t,.slide .place.t.r,.slide .place.top,.slide .place.top.left,.slide .place.top.right{top:0} +.slide .place.r,.slide .place.right{right:0;left:auto} +.slide .place.b,.slide .place.b.l,.slide .place.b.r,.slide .place.bottom,.slide .place.bottom.left,.slide .place.bottom.right{top:auto;bottom:0} +.slide .place.l,.slide .place.left{left:0} +.progress{left:-20px;bottom:0;z-index:1;display:none;width:0;height:0;box-sizing:content-box;border:10px solid #4b86c2;border-right-color:transparent;-webkit-transition:width .2s linear;transition:width .2s linear;clip:rect(10px,1044px,20px,20px)} +.progress[style*='100%']{padding-left:10px} +.badge,.badge a,.progress{position:absolute} +.badge{font-size:10px;top:0;z-index:1;overflow:hidden;display:none;width:9em;height:9em;right:0;visibility:hidden} +@media (min-width:1174px){.badge{font-size:20px} +} +@media (min-width:2348px){.badge{font-size:40px} +} +.badge a{right:-50%;bottom:50%;left:-50%;visibility:visible;background:#4b86c2;color:#fff;text-align:center;line-height:2;-webkit-transform-origin:50% 100%;transform-origin:50% 100%;-webkit-transform:rotate(45deg);transform:rotate(45deg)} +.region{display:none} +@media screen{.shower.list{padding-top:25px;width:100%;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap;background:#585a5e;position:absolute;clip:rect(0,auto,auto,0)} +} +@media screen and (min-width:1174px){.shower.list{padding-top:50px} +} +@media screen and (min-width:2348px){.shower.list{padding-top:100px} +} +@media screen{.shower.list .caption{display:block} +.shower.list .slide{-webkit-transform-origin:0 0;transform-origin:0 0;margin:0 -640px -455px 25px;-webkit-transform:scale(.25);transform:scale(.25);border-radius:2px;box-shadow:0 20px 50px rgba(0,0,0,.3)} +} +@media screen and (min-width:1174px){.shower.list .slide{margin:0 -512px -270px 50px;-webkit-transform:scale(.5);transform:scale(.5)} +} +@media screen and (min-width:2348px){.shower.list .slide{margin:0 0 100px 100px;-webkit-transform:scale(1);transform:scale(1)} +} +@media screen{.shower.list .slide:hover{box-shadow:0 0 0 20px rgba(0,0,0,.1),0 20px 50px rgba(0,0,0,.3)} +.shower.list .slide:target{box-shadow:0 0 0 1px #376da3,0 0 0 20px #4b86c2,0 20px 50px rgba(0,0,0,.3)} +.shower.list .slide *{pointer-events:none} +.shower.list .badge,.shower.list .slide footer{display:block} +.shower.full{position:absolute;top:50%;left:50%;overflow:hidden;margin:-320px 0 0 -512px;width:1024px;height:640px;background:#000} +.shower.full .slide{position:absolute;top:0;left:0;margin-left:-150%;visibility:hidden} +.shower.full .slide:target{margin:0;visibility:visible} +.shower.full .slide pre code:not(:only-child).mark.next{visibility:visible;background:0 0} +.shower.full .slide pre code:not(:only-child).mark.next.active{background:rgba(88,90,94,.1)} +.shower.full .slide .next{visibility:hidden} +.shower.full .slide .next.active{visibility:visible} +.shower.full .slide .shout.grow,.shower.full .slide .shout.shrink{opacity:0;-webkit-transition:.4s ease-out;transition:.4s ease-out;-webkit-transition-property:opacity,-webkit-transform;transition-property:opacity,transform;transition-property:opacity,transform,-webkit-transform} +.shower.full .slide .shout.grow{-webkit-transform:scale(.1) translateY(-50%);transform:scale(.1) translateY(-50%)} +.shower.full .slide .shout.shrink{-webkit-transform:scale(10) translateY(-50%);transform:scale(10) translateY(-50%)} +.shower.full .slide:target .shout.grow,.shower.full .slide:target .shout.shrink{opacity:1;-webkit-transform:scale(1) translateY(-50%);transform:scale(1) translateY(-50%)} +.shower.full .progress{display:block;-webkit-transform:translateZ(0);transform:translateZ(0)} +.shower.full .region{position:absolute;clip:rect(0 0 0 0);overflow:hidden;margin:-1px;padding:0;width:1px;height:1px;border:none;display:block} +} diff --git a/release_24.9/shower/themes/yandex/styles/screen-16x9.css b/release_24.9/shower/themes/yandex/styles/screen-16x9.css new file mode 100644 index 0000000..7249fc7 --- /dev/null +++ b/release_24.9/shower/themes/yandex/styles/screen-16x9.css @@ -0,0 +1,204 @@ +/** + * Ribbon theme for Shower HTML presentation engine + * shower-ribbon v2.0.8, https://github.com/shower/ribbon + * @copyright 2010–2016 Vadim Makeev, http://pepelsbey.net/ + * @license MIT + */ +@charset "UTF-8"; + + @font-face { + font-family: 'Yandex Sans Text Web'; + src: url(yy5JveR58JFkc97waf-xp0i6_jM.eot); + src: url(yy5JveR58JFkc97waf-xp0i6_jM.eot?#iefix) format('embedded-opentype'), + url(CYblzLEXzCqQIvrYs7QKQe2omRk.woff2) format('woff2'), + url(pUcnOdRwl83MvPPzrNomhyletnA.woff) format('woff'), + url(vNFEmXOcGYKJ4AAidUprHWoXrLU.ttf) format('truetype'), + url(0w7OcWZM_QLP8x-LQUXFOgXO6dE.svg#YandexSansTextWeb-Bold) format('svg'); + font-weight: 700; + font-style: normal; + font-stretch: normal + } + + @font-face { + font-family: 'Yandex Sans Text Web'; + src: url(LI6l3L2RqcgxBe2pXmuUha37czQ.eot); + src: url(LI6l3L2RqcgxBe2pXmuUha37czQ.eot?#iefix) format('embedded-opentype'), + url(z3MYElcut0R2MF_Iw1RDNrstgYs.woff2) format('woff2'), + url(1jvKJ_-hCXl3s7gmFl-y_-UHTaI.woff) format('woff'), + url(9nzjfpCR2QHvK1EzHpDEIoVFGuY.ttf) format('truetype'), + url(gwyBTpxSwkFCF1looxqs6JokKls.svg#YandexSansTextWeb-Regular) format('svg'); + font-weight: 400; + font-style: normal; + font-stretch: normal + } + + @font-face { + font-family: 'Yandex Sans Text Web'; + src: url(ayAFYoY8swgBLhq_I56tKj2JftU.eot); + src: url(ayAFYoY8swgBLhq_I56tKj2JftU.eot?#iefix) format('embedded-opentype'), + url(lGQcYklLVV0hyvz1HFmFsUTj8_0.woff2) format('woff2'), + url(f0AAJ9GJ4iiwEmhG-7PWMHk6vUY.woff) format('woff'), + url(4UDe4nlVvgEJ-VmLWNVq3SxCsA.ttf) format('truetype'), + url(EKLr1STNokPqxLAQa_RyN82pL98.svg#YandexSansTextWeb-Light) format('svg'); + font-weight: 300; + font-style: normal; + font-stretch: normal + } + + @font-face { + font-family: 'Yandex Sans Display Web'; + src: url(H63jN0veW07XQUIA2317lr9UIm8.eot); + src: url(H63jN0veW07XQUIA2317lr9UIm8.eot?#iefix) format('embedded-opentype'), + url(sUYVCPUAQE7ExrvMS7FoISoO83s.woff2) format('woff2'), + url(v2Sve_obH3rKm6rKrtSQpf-eB7U.woff) format('woff'), + url(PzD8hWLMunow5i3RfJ6WQJAL7aI.ttf) format('truetype'), + url(lF_KG5g4tpQNlYIgA0e77fBSZ5s.svg#YandexSansDisplayWeb-Regular) format('svg'); + font-weight: 400; + font-style: normal; + font-stretch: normal + } + + @font-face { + font-family: 'Yandex Sans Display Web'; + src: url(g8_MyyKVquSZ3xEL6tarK__V9Vw.eot); + src: url(g8_MyyKVquSZ3xEL6tarK__V9Vw.eot?#iefix) format('embedded-opentype'), + url(LGiRvlfqQHlWR9YKLhsw5e7KGNA.woff2) format('woff2'), + url(40vXwNl4eYYMgteIVgLP49dwmfc.woff) format('woff'), + url(X6zG5x_wO8-AtwJ-vDLJcKC5228.ttf) format('truetype'), + url(ZKhaR0m08c8CRRL77GtFKoHcLYA.svg#YandexSansDisplayWeb-Light) format('svg'); + font-weight: 300; + font-style: normal; + font-stretch: normal + } + +*,::after,::before{box-sizing:border-box} +a,abbr,acronym,address,applet,article,aside,audio,b,big,blockquote,body,canvas,caption,center,cite,code,dd,del,details,dfn,div,dl,dt,em,embed,fieldset,figcaption,figure,footer,form,h1,h2,h3,h4,h5,h6,header,hgroup,html,i,iframe,img,ins,kbd,label,legend,li,mark,menu,nav,object,ol,output,p,pre,q,ruby,s,samp,section,small,span,strike,strong,sub,summary,sup,table,tbody,td,tfoot,th,thead,time,tr,tt,u,ul,var,video{margin:0;padding:0;border:0;font:inherit;vertical-align:baseline} +article,aside,details,figcaption,figure,footer,header,hgroup,main,menu,nav,section{display:block} +.caption p,body{line-height:1} +p {line-height: 1.1} +ol,ul{list-style:none} +blockquote,q{quotes:none} +blockquote::after,blockquote::before,q::after,q::before{content:none} +table{border-collapse:collapse;border-spacing:0} +a{text-decoration:none} +@page{margin:0;size:1024px 576px} +.shower{color:#000;counter-reset:slide;font:25px/2 Yandex Sans Display Web,sans-serif;-webkit-print-color-adjust:exact;-webkit-text-size-adjust:none;-moz-text-size-adjust:none;-ms-text-size-adjust:none} +@media print{.shower{text-rendering:geometricPrecision} +} +.caption{font-size:25px;display:none;margin-top:-.2em;padding:0 1em .93em;width:100%;color:#3c3d40;text-shadow:0 1px 0 #8d8e90} +@media (min-width:1174px){.caption{font-size:50px} +} +@media (min-width:2348px){.caption{font-size:100px} +} +.caption h1{padding-bottom:.15em;font:1em/2 Yandex Sans Display Web,sans-serif} +.caption p{font-size:.6em} +.caption a{color:#4b86c2;text-shadow:0 -1px 0 #1f3f60} +.slide{position:relative;z-index:1;overflow:hidden;padding:20px 100px 0;width:1024px;height:576px;background: #FFF url('../../../../pictures/inner.png') no-repeat right bottom; background-size: 100%; font-size:25px} + +/*.slide::after{position:absolute;top:0;right:100px;padding-top:15px;width:50px;height:100px;background:url(../images/ribbon.svg) no-repeat;color:#fff;counter-increment:slide;content:counter(slide);text-align:center}*/ + +.slide h1{vertical-align:middle; color:#000;font:400 50px/2 Yandex Sans Display Web,sans-serif} +.slide h2{margin-bottom:34px;color:#000;font:400 50px/2 Yandex Sans Display Web,sans-serif} +.slide p{margin-bottom:1em} +.slide p.note{color:#979a9e} +.slide a{color:#4b86c2} +.slide b,.slide strong{font-weight:700} +.slide blockquote,.slide dfn,.slide em,.slide i{font-style:italic} +.slide code,.slide kbd,.slide mark,.slide samp{padding:.1em .3em;border-radius:.2em} +.slide code,.slide kbd,.slide samp{background:rgba(88,90,94,.1);line-height:1;font-family:PT Mono,monospace,monospace} +.slide mark{background:#fafaa2} +.slide sub,.slide sup{position:relative;line-height:0;font-size:75%} +.slide sub{bottom:-.25em} +.slide sup{top:-.5em} +.slide blockquote::before{position:absolute;margin:-.15em 0 0 -.43em;color:#ccc;line-height:1;font-size:8em;content:'\201C'} +.slide blockquote+figcaption{margin:-1em 0 1em;font-style:italic;font-weight:700} +.slide ol,.slide ul{margin-bottom:0em;counter-reset:list} +.slide ol li,.slide ul li{page-break-inside:avoid;text-indent:-2em} +.slide ol li::before,.slide ul li::before{display:inline-block;width:2em;color:#979a9e;text-align:right} +.slide ol ol,.slide ol ul,.slide ul ol,.slide ul ul{margin-bottom:0;margin-left:2em} +.slide ul>li::before{padding-right:.5em;content:'•'} +.slide ul>li:lang(ru)::before{content:'—'} +.slide ol>li::before{padding-right:.4em;counter-increment:list;content:counter(list) "."} +.slide table{margin-left:-100px;margin-bottom:1em;width:calc(100% + 100px + 100px)} +.slide table td:first-child,.slide table th:first-child{padding-left:96px} +.slide table td:last-child,.slide table th:last-child{padding-right:96px} +.slide table th{text-align:left;font-weight:700} +.slide table tr:not(:last-of-type)>*{background:-webkit-linear-gradient(bottom,rgba(88,90,94,.5) .055em,transparent .055em) repeat-x;background:linear-gradient(to top,rgba(88,90,94,.5) .055em,transparent .055em) repeat-x} +.slide table.striped tr:nth-child(even){background:rgba(88,90,94,.1)} +.slide table.striped tr>*{background-image:none} +.slide pre{margin-bottom:1em;counter-reset:code;white-space:pre;font-family:Monospace,Courier New;line-height:1;} +.slide pre code{display:block;margin-left:-100px;padding:0 0 0 100px;width:calc(100% + 100px + 100px);border-radius:0;background:0 0;line-height:2;white-space:pre;-moz-tab-size:4;-o-tab-size:4;tab-size:4} +.slide pre code:not(:only-child).mark{background:rgba(88,90,94,.1)} +.slide pre code:not(:only-child)::before{position:absolute;margin-left:-2em;color:#979a9e;counter-increment:code;content:counter(code,decimal-leading-zero) "."} +.slide pre mark{position:relative;z-index:-1;margin:0 -.3em} +.slide pre mark.important{background:#c00;color:#fff} +.slide pre .comment{color:#999} +.slide footer{position:absolute;right:0;bottom:-576px;left:0;display:none;padding:41px 100px 8px;background:#fbfbba;box-shadow:0 1px 0 #fafaa2 inset;-webkit-transition:bottom .3s;transition:bottom .3s} +.slide footer mark{background:rgba(255,255,255,.8)} +.slide:hover>footer{bottom:0} +.slide.grid{background-image:url(../images/grid.png);-ms-interpolation-mode:nearest-neighbor;image-rendering:-webkit-optimize-contrast;image-rendering:-moz-crisp-edges;image-rendering:pixelated} +@media (-webkit-min-device-pixel-ratio:2),(min-resolution:2dppx){.slide.grid{background-image:url(../images/grid@2x.png);background-size:1024px auto} +} +.slide.black{background-color:#000} +.slide.black::after,.slide.white::after{visibility:hidden} +.slide.white{background-color:#fff} +.slide .double,.slide .triple{-webkit-column-gap:75px;-moz-column-gap:75px;column-gap:75px;-webkit-hyphens:auto;-ms-hyphens:auto;hyphens:auto} +.slide .double{-webkit-column-count:2;-moz-column-count:2;column-count:2} +.slide .triple{-webkit-column-count:3;-moz-column-count:3;column-count:3} +.slide .shout{position:absolute;top:50%;left:0;width:100%;text-align:center;line-height:1;font-size:150px;-webkit-transform:translateY(-50%);transform:translateY(-50%)} +.slide .shout a{background:-webkit-linear-gradient(bottom,currentColor .11em,transparent .11em) repeat-x;background:linear-gradient(to top,currentColor .11em,transparent .11em) repeat-x} +.slide .cover{z-index:-1;max-width:100%;max-height:100%} +.slide .cover.w,.slide .cover.width{width:100%;max-height:none} +.slide .cover.h,.slide .cover.height{height:100%;max-width:none} +.slide .cover+figcaption{position:absolute;bottom:20px;right:10px;font-size:12px;opacity:.7;-webkit-transform-origin:0 100%;transform-origin:0 100%;-webkit-transform:translateX(100%) rotate(-90deg);transform:translateX(100%) rotate(-90deg)} +.slide .cover+figcaption.white{color:#fff} +.slide .cover+figcaption a{color:currentcolor} +.slide .cover,.slide .place{position:absolute;top:50%;left:50%;-webkit-transform:translate(-50%,-50%);transform:translate(-50%,-50%)} +.slide .place.b.l,.slide .place.b.r,.slide .place.bottom.left,.slide .place.bottom.right,.slide .place.t.l,.slide .place.t.r,.slide .place.top.left,.slide .place.top.right{-webkit-transform:none;transform:none} +.slide .place.b,.slide .place.bottom,.slide .place.t,.slide .place.top{-webkit-transform:translate(-50%,0);transform:translate(-50%,0)} +.slide .place.l,.slide .place.left,.slide .place.r,.slide .place.right{-webkit-transform:translate(0,-50%);transform:translate(0,-50%)} +.slide .place.t,.slide .place.t.r,.slide .place.top,.slide .place.top.left,.slide .place.top.right{top:0} +.slide .place.r,.slide .place.right{right:0;left:auto} +.slide .place.b,.slide .place.b.l,.slide .place.b.r,.slide .place.bottom,.slide .place.bottom.left,.slide .place.bottom.right{top:auto;bottom:0} +.slide .place.l,.slide .place.left{left:0} +.progress{left:-20px;bottom:0;z-index:1;display:none;width:0;height:0;box-sizing:content-box;border:10px solid #4b86c2;border-right-color:transparent;-webkit-transition:width .2s linear;transition:width .2s linear;clip:rect(10px,1044px,20px,20px)} +.progress[style*='100%']{padding-left:10px} +.badge,.badge a,.progress{position:absolute} +.badge{font-size:10px;top:0;z-index:1;overflow:hidden;display:none;width:9em;height:9em;right:0;visibility:hidden} +@media (min-width:1174px){.badge{font-size:20px} +} +@media (min-width:2348px){.badge{font-size:40px} +} +.badge a{right:-50%;bottom:50%;left:-50%;visibility:visible;background:#4b86c2;color:#fff;text-align:center;line-height:2;-webkit-transform-origin:50% 100%;transform-origin:50% 100%;-webkit-transform:rotate(45deg);transform:rotate(45deg)} +.region{display:none} +@media screen{.shower.list{padding-top:25px;width:100%;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap;background:#585a5e;position:absolute;clip:rect(0,auto,auto,0)} +} +@media screen and (min-width:1174px){.shower.list{padding-top:50px} +} +@media screen and (min-width:2348px){.shower.list{padding-top:100px} +} +@media screen{.shower.list .caption{display:block} +.shower.list .slide{-webkit-transform-origin:0 0;transform-origin:0 0;margin:0 -576px -455px 25px;-webkit-transform:scale(.25);transform:scale(.25);border-radius:2px;box-shadow:0 20px 50px rgba(0,0,0,.3)} +} +@media screen and (min-width:1174px){.shower.list .slide{margin:0 -512px -270px 50px;-webkit-transform:scale(.5);transform:scale(.5)} +} +@media screen and (min-width:2348px){.shower.list .slide{margin:0 0 100px 100px;-webkit-transform:scale(1);transform:scale(1)} +} +@media screen{.shower.list .slide:hover{box-shadow:0 0 0 20px rgba(0,0,0,.1),0 20px 50px rgba(0,0,0,.3)} +.shower.list .slide:target{box-shadow:0 0 0 1px #376da3,0 0 0 20px #4b86c2,0 20px 50px rgba(0,0,0,.3)} +.shower.list .slide *{pointer-events:none} +.shower.list .badge,.shower.list .slide footer{display:block} +.shower.full{position:absolute;top:50%;left:50%;overflow:hidden;margin:-288px 0 0 -512px;width:1024px;height:576px;background:#000} +.shower.full .slide{position:absolute;top:0;left:0;margin-left:-150%;visibility:hidden} +.shower.full .slide:target{margin:0;visibility:visible} +.shower.full .slide pre code:not(:only-child).mark.next{visibility:visible;background:0 0} +.shower.full .slide pre code:not(:only-child).mark.next.active{background:rgba(88,90,94,.1)} +.shower.full .slide .next{visibility:hidden} +.shower.full .slide .next.active{visibility:visible} +.shower.full .slide .shout.grow,.shower.full .slide .shout.shrink{opacity:0;-webkit-transition:.4s ease-out;transition:.4s ease-out;-webkit-transition-property:opacity,-webkit-transform;transition-property:opacity,transform;transition-property:opacity,transform,-webkit-transform} +.shower.full .slide .shout.grow{-webkit-transform:scale(.1) translateY(-50%);transform:scale(.1) translateY(-50%)} +.shower.full .slide .shout.shrink{-webkit-transform:scale(10) translateY(-50%);transform:scale(10) translateY(-50%)} +.shower.full .slide:target .shout.grow,.shower.full .slide:target .shout.shrink{opacity:1;-webkit-transform:scale(1) translateY(-50%);transform:scale(1) translateY(-50%)} +.shower.full .progress{display:block;-webkit-transform:translateZ(0);transform:translateZ(0)} +.shower.full .region{position:absolute;clip:rect(0 0 0 0);overflow:hidden;margin:-1px;padding:0;width:1px;height:1px;border:none;display:block} +} diff --git a/release_24.9/shower/themes/yandex/styles/v2Sve_obH3rKm6rKrtSQpf-eB7U.woff b/release_24.9/shower/themes/yandex/styles/v2Sve_obH3rKm6rKrtSQpf-eB7U.woff new file mode 100644 index 0000000..e8f80da Binary files /dev/null and b/release_24.9/shower/themes/yandex/styles/v2Sve_obH3rKm6rKrtSQpf-eB7U.woff differ diff --git a/release_24.9/shower/themes/yandex/styles/vNFEmXOcGYKJ4AAidUprHWoXrLU.ttf b/release_24.9/shower/themes/yandex/styles/vNFEmXOcGYKJ4AAidUprHWoXrLU.ttf new file mode 100644 index 0000000..074a005 Binary files /dev/null and b/release_24.9/shower/themes/yandex/styles/vNFEmXOcGYKJ4AAidUprHWoXrLU.ttf differ diff --git a/release_24.9/shower/themes/yandex/styles/yy5JveR58JFkc97waf-xp0i6_jM.eot b/release_24.9/shower/themes/yandex/styles/yy5JveR58JFkc97waf-xp0i6_jM.eot new file mode 100644 index 0000000..df62803 Binary files /dev/null and b/release_24.9/shower/themes/yandex/styles/yy5JveR58JFkc97waf-xp0i6_jM.eot differ diff --git a/release_24.9/shower/themes/yandex/styles/z3MYElcut0R2MF_Iw1RDNrstgYs.woff2 b/release_24.9/shower/themes/yandex/styles/z3MYElcut0R2MF_Iw1RDNrstgYs.woff2 new file mode 100644 index 0000000..dd50c49 Binary files /dev/null and b/release_24.9/shower/themes/yandex/styles/z3MYElcut0R2MF_Iw1RDNrstgYs.woff2 differ