{"action":"created","comment":{"url":"https://api.github.com/repos/vithar/bem.info/pulls/comments/52175935","id":52175935,"diff_hunk":"@@ -1,185 +1,125 @@\n-'use strict';\n+var path = require('path'),\n+    cp = require('child_process'),\n \n-var browserSync = require('browser-sync'),\n-    request = require('request'),\n-    marked = require('marked'),\n-    hljs = require('highlight.js'),\n-    gulp = require('gulp'),\n+    Q = require('q'),\n     enb = require('enb'),\n-    fs = require('fs-extra'),\n-    vm = require('vm'),\n-    watch = require('gulp-watch'),\n-    batch = require('gulp-batch'),\n-    runSequence = require('run-sequence');\n-\n-var langs = ['ru', 'en'],\n-    outputFolder = 'output-',\n-    pages = require('./content/pages.js');\n-\n-var bemhtmlFile = './desktop.bundles/index/index.bemhtml.js',\n-    bemtreeFile = './desktop.bundles/index/index.bemtree.js';\n-\n-var renderer = new marked.Renderer();\n-\n-//TODO\n-//renderer.image = require('marked-renderer-video');\n-renderer.heading = require('marked-renderer-heading-anchors');\n-\n-renderer._link = renderer.link;\n-renderer.link = function(href, title, text) {\n-    return this._link(href.replace(/(.*\\/)([^\\/#]*)(.*)/, '$1$3'), title, text);\n-}\n-\n-marked.setOptions({\n-    renderer: renderer,\n-\n-    headingClassName: 'article__heading article__heading_',\n-    headingAnchorClassName: 'article__heading-anchor',\n-\n-    highlight: function (code, lang) {\n-        // TODO: implement true highligting for 'files' codeblock: different colors for directories, files, comments\n-        if (lang === 'files') {\n-            return code.replace(/\\`/g, ''); // temporary implementation of 'files' highlighting\n-        } else if (lang === 'text') {\n-            return code;\n-        } else if (lang) {\n-            return hljs.highlight(lang, code).value;\n-        }\n-        return hljs.highlightAuto(code).value;\n-    }\n-});\n+    runSequence = require('run-sequence'),\n \n-gulp.task('default', function () {\n-    runSequence('init', 'watch', 'browser-sync');\n-});\n+    gulp = require('gulp'),\n+    gulpClean = require('gulp-clean'),\n+    gulpCopy = require('gulp-copy2'),\n+    browserSync = require('browser-sync');\n \n-gulp.task('init', function(callback) {\n-    enb.make().then(function() {\n-        ['css', 'js'].forEach(function(tech) {\n-            langs.forEach(function(lang) {\n-                fs.createReadStream('desktop.bundles/index/index.min.' + tech)\n-                    .pipe(fs.createWriteStream(outputFolder + lang + '/index.min.' + tech));\n-            })\n-        });\n+const LANGUAGES = ['en', 'ru'];\n \n-        renderPages(require(bemtreeFile).BEMTREE, require(bemhtmlFile).BEMHTML, pages, langs, outputFolder);\n+const CACHE_DIRS = LANGUAGES.map(language => './.builder/cache/' + language);\n+const DATA_DIRS = LANGUAGES.map(language => './data-' + language);\n+const OUTPUT_DIRS = LANGUAGES.map(language => './output-' + language);\n \n-        callback();\n-    });\n-});\n+const BEMTREE_PATH = './desktop.bundles/index/index.bemtree.js';\n+const BEMHTML_PATH = './desktop.bundles/index/index.bemhtml.js';\n \n-gulp.task('browser-sync', function() {\n-    browserSync.create().init({\n-        files: outputFolder + 'en' + '/**',\n-        server: { baseDir: outputFolder + 'en' },\n-        port: 8008,\n-        browser: 'chrome',\n-        startPath: '/methodology/typo/',\n-        online: false,\n-        notify: false,\n-        ui: false\n-    });\n+//------------------ Подготовка директорий output-* ------------------------//\n \n-    browserSync.create().init({\n-        files: outputFolder + 'ru' + '/**',\n-        server: { baseDir: outputFolder + 'ru' },\n-        port: 8009,\n-        browser: 'chrome',\n-        startPath: '/methodology/typo/',\n-        online: false,\n-        notify: false,\n-        ui: false\n-    });\n-});\n+gulp.task('clean-output', () => gulp.src(OUTPUT_DIRS, {read: false}).pipe(gulpClean()));\n \n-gulp.task('watch', function () {\n+gulp.task('copy-misc-to-output', ['clean-output'], () => {\n+    return gulpCopy(['favicon.ico', 'robots.txt'].reduce((prev, item) => {\n+        OUTPUT_DIRS.forEach(outputDir => {\n+            prev.push({\n+                src: path.join('./content', item),\n+                dest: path.join(outputDir, item)\n+            });\n+        });\n+        return prev;\n+    }, []));\n+});\n \n-    // watch changes in blocks and build using enb\n-    watch(['*blocks/**/*'], function batch(events, done) {\n-        enb.make();\n-    });\n+gulp.task('prepare-output', ['clean-output', 'copy-misc-to-output']);\n \n-    // watch changes in final css and js and copy it to output folders\n-    watch('desktop.bundles/index/index.min.*', function (vinyl) {\n-        langs.forEach(function(lang) {\n-            vinyl.pipe(fs.createWriteStream(outputFolder + lang + '/' + vinyl.basename));\n-        });\n-    });\n+//------------------ Сборка данных ------------------------//\n \n-    // watch changes in content and bemtree/bemhtml bundles and rebuild pages\n-    watch(['content/**/*', 'content-github/**/*',\n-            'desktop.bundles/index/index.bemhtml.js',\n-            'desktop.bundles/index/index.bemtree.js'], function batch(events, done) {\n-        delete require.cache[require.resolve(bemtreeFile)];\n-        delete require.cache[require.resolve(bemhtmlFile)];\n-        renderPages(require(bemtreeFile).BEMTREE, require(bemhtmlFile).BEMHTML, pages, langs, outputFolder);\n-    });\n-});\n+gulp.task('data-clean', () => gulp.src(DATA_DIRS, {read: false}).pipe(gulpClean()));\n \n-function applyTemplates(bemtree, bemhtml, pages, page, langs, lang, outputFolder, content) {\n-    page.content = content;\n+gulp.task('data-cache-clean', () => gulp.src(CACHE_DIRS, {read: false}).pipe(gulpClean()));\n \n-    var bemjson = bemtree.apply({\n-        block: 'root',\n-        data: {\n-            page: page,\n-            pages: pages[lang],\n-            langs: langs,\n-            lang: lang\n+gulp.task('data-build', () => Q.all(LANGUAGES.map((language, index) => {\n+    return Q.denodeify(cp.fork)('./data-builder.js', {\n+        cwd: process.cwd(),\n+        encoding: 'utf-8',\n+        env: {\n+            GORSHOCHEK_CACHE_FOLDER: CACHE_DIRS[index],\n+            modelPath: `./content/model.${language}.json`,\n+            host: `http://${language}.bem.info`,\n+            dest: DATA_DIRS[index],\n+            token: process.env.TOKEN\n         }\n     });\n+})));\n \n-    bemjson.block = 'page';\n+//------------------ Шаблонизация данных ------------------------//\n \n-    var dirName = outputFolder + lang + page.url;\n+gulp.task('enb-make', () => enb.make());\n \n-    fs.mkdirsSync(dirName);\n-    fs.writeFile(dirName + '/index.html', bemhtml.apply(bemjson));\n+gulp.task('drop-templates-cache', ['enb-make'], () => {\n+    delete require.cache[require.resolve(BEMHTML_PATH)];\n+    delete require.cache[require.resolve(BEMTREE_PATH)];\n+});\n+\n+gulp.task('copy-static', ['enb-make'], () => {","path":"gulpfile.js","position":187,"original_position":187,"commit_id":"ff36cb172d9cc134589cd3d405da712c67ae2198","original_commit_id":"ff36cb172d9cc134589cd3d405da712c67ae2198","user":{"login":"tadatuta","id":475746,"avatar_url":"https://avatars.githubusercontent.com/u/475746?v=3","gravatar_id":"","url":"https://api.github.com/users/tadatuta","html_url":"https://github.com/tadatuta","followers_url":"https://api.github.com/users/tadatuta/followers","following_url":"https://api.github.com/users/tadatuta/following{/other_user}","gists_url":"https://api.github.com/users/tadatuta/gists{/gist_id}","starred_url":"https://api.github.com/users/tadatuta/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/tadatuta/subscriptions","organizations_url":"https://api.github.com/users/tadatuta/orgs","repos_url":"https://api.github.com/users/tadatuta/repos","events_url":"https://api.github.com/users/tadatuta/events{/privacy}","received_events_url":"https://api.github.com/users/tadatuta/received_events","type":"User","site_admin":false},"body":"reduce -> map","created_at":"2016-02-08T14:40:24Z","updated_at":"2016-02-08T14:40:24Z","html_url":"https://github.com/vithar/bem.info/pull/9#discussion_r52175935","pull_request_url":"https://api.github.com/repos/vithar/bem.info/pulls/9","_links":{"self":{"href":"https://api.github.com/repos/vithar/bem.info/pulls/comments/52175935"},"html":{"href":"https://github.com/vithar/bem.info/pull/9#discussion_r52175935"},"pull_request":{"href":"https://api.github.com/repos/vithar/bem.info/pulls/9"}}},"pull_request":{"url":"https://api.github.com/repos/vithar/bem.info/pulls/9","id":58524510,"html_url":"https://github.com/vithar/bem.info/pull/9","diff_url":"https://github.com/vithar/bem.info/pull/9.diff","patch_url":"https://github.com/vithar/bem.info/pull/9.patch","issue_url":"https://api.github.com/repos/vithar/bem.info/issues/9","number":9,"state":"open","locked":false,"title":"Gorshochek и все все все","user":{"login":"tormozz48","id":996162,"avatar_url":"https://avatars.githubusercontent.com/u/996162?v=3","gravatar_id":"","url":"https://api.github.com/users/tormozz48","html_url":"https://github.com/tormozz48","followers_url":"https://api.github.com/users/tormozz48/followers","following_url":"https://api.github.com/users/tormozz48/following{/other_user}","gists_url":"https://api.github.com/users/tormozz48/gists{/gist_id}","starred_url":"https://api.github.com/users/tormozz48/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/tormozz48/subscriptions","organizations_url":"https://api.github.com/users/tormozz48/orgs","repos_url":"https://api.github.com/users/tormozz48/repos","events_url":"https://api.github.com/users/tormozz48/events{/privacy}","received_events_url":"https://api.github.com/users/tormozz48/received_events","type":"User","site_admin":false},"body":"* Заменен js файл модели на 2 json файла соответствующих разным языкам\r\n* bemjson ресурсы страниц переложены в папку content/bemjson\r\n* полностью переписан gulpfile.js в пользу наглядности\r\n* добавлено использование gorshochek из отдельного модуля data-builder.js (для разных языков сборка данных запускается в дочерних процесах из основного gulp-файла)\r\n* Реализован модуль template.js для шаблонизации данных полученных от gorshochek и сохранению полученного html кода в отдельные файлы.\r\n* Исправлены отдельные шаблоны, которые смогли быть значительно упрощены в результате использования данных полученных от gorshochek.\r\n* Удалены неиспользуемые файлы и зависимости.\r\n* Обновлена документация \r\n\r\nЧто еще не реализовано:\r\n* Сейчас не работает прокидывание опций для преобразования md -> html в gorshochek.\r\n(Это к тому что используется некий кастомный рендерер со стилями и пр.)\r\n\r\n@vithar @tadatuta ","created_at":"2016-02-06T17:02:53Z","updated_at":"2016-02-08T14:40:24Z","closed_at":null,"merged_at":null,"merge_commit_sha":"e65265d8550328efd2757d073218beeb182833d3","assignee":null,"milestone":null,"commits_url":"https://api.github.com/repos/vithar/bem.info/pulls/9/commits","review_comments_url":"https://api.github.com/repos/vithar/bem.info/pulls/9/comments","review_comment_url":"https://api.github.com/repos/vithar/bem.info/pulls/comments{/number}","comments_url":"https://api.github.com/repos/vithar/bem.info/issues/9/comments","statuses_url":"https://api.github.com/repos/vithar/bem.info/statuses/ff36cb172d9cc134589cd3d405da712c67ae2198","head":{"label":"tormozz48:master","ref":"master","sha":"ff36cb172d9cc134589cd3d405da712c67ae2198","user":{"login":"tormozz48","id":996162,"avatar_url":"https://avatars.githubusercontent.com/u/996162?v=3","gravatar_id":"","url":"https://api.github.com/users/tormozz48","html_url":"https://github.com/tormozz48","followers_url":"https://api.github.com/users/tormozz48/followers","following_url":"https://api.github.com/users/tormozz48/following{/other_user}","gists_url":"https://api.github.com/users/tormozz48/gists{/gist_id}","starred_url":"https://api.github.com/users/tormozz48/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/tormozz48/subscriptions","organizations_url":"https://api.github.com/users/tormozz48/orgs","repos_url":"https://api.github.com/users/tormozz48/repos","events_url":"https://api.github.com/users/tormozz48/events{/privacy}","received_events_url":"https://api.github.com/users/tormozz48/received_events","type":"User","site_admin":false},"repo":{"id":51085089,"name":"bem.info","full_name":"tormozz48/bem.info","owner":{"login":"tormozz48","id":996162,"avatar_url":"https://avatars.githubusercontent.com/u/996162?v=3","gravatar_id":"","url":"https://api.github.com/users/tormozz48","html_url":"https://github.com/tormozz48","followers_url":"https://api.github.com/users/tormozz48/followers","following_url":"https://api.github.com/users/tormozz48/following{/other_user}","gists_url":"https://api.github.com/users/tormozz48/gists{/gist_id}","starred_url":"https://api.github.com/users/tormozz48/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/tormozz48/subscriptions","organizations_url":"https://api.github.com/users/tormozz48/orgs","repos_url":"https://api.github.com/users/tormozz48/repos","events_url":"https://api.github.com/users/tormozz48/events{/privacy}","received_events_url":"https://api.github.com/users/tormozz48/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/tormozz48/bem.info","description":"bem.info web site","fork":true,"url":"https://api.github.com/repos/tormozz48/bem.info","forks_url":"https://api.github.com/repos/tormozz48/bem.info/forks","keys_url":"https://api.github.com/repos/tormozz48/bem.info/keys{/key_id}","collaborators_url":"https://api.github.com/repos/tormozz48/bem.info/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/tormozz48/bem.info/teams","hooks_url":"https://api.github.com/repos/tormozz48/bem.info/hooks","issue_events_url":"https://api.github.com/repos/tormozz48/bem.info/issues/events{/number}","events_url":"https://api.github.com/repos/tormozz48/bem.info/events","assignees_url":"https://api.github.com/repos/tormozz48/bem.info/assignees{/user}","branches_url":"https://api.github.com/repos/tormozz48/bem.info/branches{/branch}","tags_url":"https://api.github.com/repos/tormozz48/bem.info/tags","blobs_url":"https://api.github.com/repos/tormozz48/bem.info/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/tormozz48/bem.info/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/tormozz48/bem.info/git/refs{/sha}","trees_url":"https://api.github.com/repos/tormozz48/bem.info/git/trees{/sha}","statuses_url":"https://api.github.com/repos/tormozz48/bem.info/statuses/{sha}","languages_url":"https://api.github.com/repos/tormozz48/bem.info/languages","stargazers_url":"https://api.github.com/repos/tormozz48/bem.info/stargazers","contributors_url":"https://api.github.com/repos/tormozz48/bem.info/contributors","subscribers_url":"https://api.github.com/repos/tormozz48/bem.info/subscribers","subscription_url":"https://api.github.com/repos/tormozz48/bem.info/subscription","commits_url":"https://api.github.com/repos/tormozz48/bem.info/commits{/sha}","git_commits_url":"https://api.github.com/repos/tormozz48/bem.info/git/commits{/sha}","comments_url":"https://api.github.com/repos/tormozz48/bem.info/comments{/number}","issue_comment_url":"https://api.github.com/repos/tormozz48/bem.info/issues/comments{/number}","contents_url":"https://api.github.com/repos/tormozz48/bem.info/contents/{+path}","compare_url":"https://api.github.com/repos/tormozz48/bem.info/compare/{base}...{head}","merges_url":"https://api.github.com/repos/tormozz48/bem.info/merges","archive_url":"https://api.github.com/repos/tormozz48/bem.info/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/tormozz48/bem.info/downloads","issues_url":"https://api.github.com/repos/tormozz48/bem.info/issues{/number}","pulls_url":"https://api.github.com/repos/tormozz48/bem.info/pulls{/number}","milestones_url":"https://api.github.com/repos/tormozz48/bem.info/milestones{/number}","notifications_url":"https://api.github.com/repos/tormozz48/bem.info/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/tormozz48/bem.info/labels{/name}","releases_url":"https://api.github.com/repos/tormozz48/bem.info/releases{/id}","deployments_url":"https://api.github.com/repos/tormozz48/bem.info/deployments","created_at":"2016-02-04T15:32:51Z","updated_at":"2016-02-04T15:32:52Z","pushed_at":"2016-02-06T16:47:35Z","git_url":"git://github.com/tormozz48/bem.info.git","ssh_url":"git@github.com:tormozz48/bem.info.git","clone_url":"https://github.com/tormozz48/bem.info.git","svn_url":"https://github.com/tormozz48/bem.info","homepage":null,"size":216,"stargazers_count":0,"watchers_count":0,"language":"JavaScript","has_issues":false,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":0,"mirror_url":null,"open_issues_count":0,"forks":0,"open_issues":0,"watchers":0,"default_branch":"master"}},"base":{"label":"vithar:master","ref":"master","sha":"3a740ae34af76e16259b0527f1f1bbbd681d8f41","user":{"login":"vithar","id":171723,"avatar_url":"https://avatars.githubusercontent.com/u/171723?v=3","gravatar_id":"","url":"https://api.github.com/users/vithar","html_url":"https://github.com/vithar","followers_url":"https://api.github.com/users/vithar/followers","following_url":"https://api.github.com/users/vithar/following{/other_user}","gists_url":"https://api.github.com/users/vithar/gists{/gist_id}","starred_url":"https://api.github.com/users/vithar/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/vithar/subscriptions","organizations_url":"https://api.github.com/users/vithar/orgs","repos_url":"https://api.github.com/users/vithar/repos","events_url":"https://api.github.com/users/vithar/events{/privacy}","received_events_url":"https://api.github.com/users/vithar/received_events","type":"User","site_admin":false},"repo":{"id":42567685,"name":"bem.info","full_name":"vithar/bem.info","owner":{"login":"vithar","id":171723,"avatar_url":"https://avatars.githubusercontent.com/u/171723?v=3","gravatar_id":"","url":"https://api.github.com/users/vithar","html_url":"https://github.com/vithar","followers_url":"https://api.github.com/users/vithar/followers","following_url":"https://api.github.com/users/vithar/following{/other_user}","gists_url":"https://api.github.com/users/vithar/gists{/gist_id}","starred_url":"https://api.github.com/users/vithar/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/vithar/subscriptions","organizations_url":"https://api.github.com/users/vithar/orgs","repos_url":"https://api.github.com/users/vithar/repos","events_url":"https://api.github.com/users/vithar/events{/privacy}","received_events_url":"https://api.github.com/users/vithar/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/vithar/bem.info","description":"bem.info web site","fork":false,"url":"https://api.github.com/repos/vithar/bem.info","forks_url":"https://api.github.com/repos/vithar/bem.info/forks","keys_url":"https://api.github.com/repos/vithar/bem.info/keys{/key_id}","collaborators_url":"https://api.github.com/repos/vithar/bem.info/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/vithar/bem.info/teams","hooks_url":"https://api.github.com/repos/vithar/bem.info/hooks","issue_events_url":"https://api.github.com/repos/vithar/bem.info/issues/events{/number}","events_url":"https://api.github.com/repos/vithar/bem.info/events","assignees_url":"https://api.github.com/repos/vithar/bem.info/assignees{/user}","branches_url":"https://api.github.com/repos/vithar/bem.info/branches{/branch}","tags_url":"https://api.github.com/repos/vithar/bem.info/tags","blobs_url":"https://api.github.com/repos/vithar/bem.info/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/vithar/bem.info/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/vithar/bem.info/git/refs{/sha}","trees_url":"https://api.github.com/repos/vithar/bem.info/git/trees{/sha}","statuses_url":"https://api.github.com/repos/vithar/bem.info/statuses/{sha}","languages_url":"https://api.github.com/repos/vithar/bem.info/languages","stargazers_url":"https://api.github.com/repos/vithar/bem.info/stargazers","contributors_url":"https://api.github.com/repos/vithar/bem.info/contributors","subscribers_url":"https://api.github.com/repos/vithar/bem.info/subscribers","subscription_url":"https://api.github.com/repos/vithar/bem.info/subscription","commits_url":"https://api.github.com/repos/vithar/bem.info/commits{/sha}","git_commits_url":"https://api.github.com/repos/vithar/bem.info/git/commits{/sha}","comments_url":"https://api.github.com/repos/vithar/bem.info/comments{/number}","issue_comment_url":"https://api.github.com/repos/vithar/bem.info/issues/comments{/number}","contents_url":"https://api.github.com/repos/vithar/bem.info/contents/{+path}","compare_url":"https://api.github.com/repos/vithar/bem.info/compare/{base}...{head}","merges_url":"https://api.github.com/repos/vithar/bem.info/merges","archive_url":"https://api.github.com/repos/vithar/bem.info/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/vithar/bem.info/downloads","issues_url":"https://api.github.com/repos/vithar/bem.info/issues{/number}","pulls_url":"https://api.github.com/repos/vithar/bem.info/pulls{/number}","milestones_url":"https://api.github.com/repos/vithar/bem.info/milestones{/number}","notifications_url":"https://api.github.com/repos/vithar/bem.info/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/vithar/bem.info/labels{/name}","releases_url":"https://api.github.com/repos/vithar/bem.info/releases{/id}","deployments_url":"https://api.github.com/repos/vithar/bem.info/deployments","created_at":"2015-09-16T05:58:24Z","updated_at":"2016-01-29T12:54:06Z","pushed_at":"2016-02-06T17:02:54Z","git_url":"git://github.com/vithar/bem.info.git","ssh_url":"git@github.com:vithar/bem.info.git","clone_url":"https://github.com/vithar/bem.info.git","svn_url":"https://github.com/vithar/bem.info","homepage":null,"size":202,"stargazers_count":4,"watchers_count":4,"language":"JavaScript","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":4,"mirror_url":null,"open_issues_count":2,"forks":4,"open_issues":2,"watchers":4,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/vithar/bem.info/pulls/9"},"html":{"href":"https://github.com/vithar/bem.info/pull/9"},"issue":{"href":"https://api.github.com/repos/vithar/bem.info/issues/9"},"comments":{"href":"https://api.github.com/repos/vithar/bem.info/issues/9/comments"},"review_comments":{"href":"https://api.github.com/repos/vithar/bem.info/pulls/9/comments"},"review_comment":{"href":"https://api.github.com/repos/vithar/bem.info/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/vithar/bem.info/pulls/9/commits"},"statuses":{"href":"https://api.github.com/repos/vithar/bem.info/statuses/ff36cb172d9cc134589cd3d405da712c67ae2198"}}}}