Skip to content

Commit

Permalink
merge from master
Browse files Browse the repository at this point in the history
  • Loading branch information
wonknu committed Dec 5, 2016
2 parents d0e50c5 + 16cf2ab commit d532d6d
Show file tree
Hide file tree
Showing 260 changed files with 38,332 additions and 193 deletions.
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
node_modules/*
npm-debug.log
selenium-debug.log
tasks/node_modules/*
tasks/json/*
tasks/npm-debug.log
Expand Down
3 changes: 2 additions & 1 deletion .npmignore
Original file line number Diff line number Diff line change
Expand Up @@ -4,4 +4,5 @@ plugins/
.travis.yml
.eslintrc.json
.eslintignore
abe.json
abe.json
selenium-debug.log
14 changes: 14 additions & 0 deletions .travis.yml
Original file line number Diff line number Diff line change
Expand Up @@ -6,10 +6,24 @@ node_js:
- "5"
- "6"
- "7"
sudo: required
dist: trusty
env:
- NODE_ENV=PROD
before_install:
- export CHROME_BIN=/usr/bin/google-chrome
- export DISPLAY=:99.0
- sh -e /etc/init.d/xvfb start
- sudo apt-get update
- sudo apt-get install -y libappindicator1 fonts-liberation
- wget https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb
- sudo dpkg -i google-chrome*.deb
install:
- npm install
before_script:
- npm run distribute
script:
- jdk_switcher use oraclejdk8
- npm run test-coveralls
- npm run test-func
- npm run lint
68 changes: 68 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,19 +1,86 @@
* [[`4bf5e7b129`](https://github.com/AdFabConnect/abejs/commit/4bf5e7b129)] - **ci**: simplifying nightwatch conf (gregorybesson)
* [[`33ea44f530`](https://github.com/AdFabConnect/abejs/commit/33ea44f530)] - **ci**: correct config (gregorybesson)
* [[`aca275b491`](https://github.com/AdFabConnect/abejs/commit/aca275b491)] - **ci**: trying to simplify the config 2 (gregorybesson)
* [[`7201cbd989`](https://github.com/AdFabConnect/abejs/commit/7201cbd989)] - **ci**: trying to simplify the config 2 (gregorybesson)
* [[`29f63f0fa4`](https://github.com/AdFabConnect/abejs/commit/29f63f0fa4)] - **ci**: trying to simplify the config (gregorybesson)
* [[`db8ea447ad`](https://github.com/AdFabConnect/abejs/commit/db8ea447ad)] - **ci**: adding missing directory (gregorybesson)
* [[`fea5dc8ebb`](https://github.com/AdFabConnect/abejs/commit/fea5dc8ebb)] - **ci**: demo website added (gregorybesson)
* [[`122d1b5512`](https://github.com/AdFabConnect/abejs/commit/122d1b5512)] - **ci**: removing submodule (gregorybesson)
* [[`a1ae34ac5e`](https://github.com/AdFabConnect/abejs/commit/a1ae34ac5e)] - **ci**: 6th try (gregorybesson)
* [[`f0575062fb`](https://github.com/AdFabConnect/abejs/commit/f0575062fb)] - **ci**: 5th try (gregorybesson)
* [[`8c6fb3b1e8`](https://github.com/AdFabConnect/abejs/commit/8c6fb3b1e8)] - **ci**: 4th try (gregorybesson)
* [[`7c39f11437`](https://github.com/AdFabConnect/abejs/commit/7c39f11437)] - **ci**: 3rd try (gregorybesson)
* [[`adb63b63c7`](https://github.com/AdFabConnect/abejs/commit/adb63b63c7)] - **ci**: 2nd try (gregorybesson)
* [[`7877387265`](https://github.com/AdFabConnect/abejs/commit/7877387265)] - **ci**: Functional tests 1st try (gregorybesson)
* [[`d8612b602a`](https://github.com/AdFabConnect/abejs/commit/d8612b602a)] - **ic**: linting (gregorybesson)
* [[`becbb87d53`](https://github.com/AdFabConnect/abejs/commit/becbb87d53)] - **fix**: typo (gregorybesson)
* [[`5b9fdd3164`](https://github.com/AdFabConnect/abejs/commit/5b9fdd3164)] - merge (gregorybesson)
* [[`03bbed932d`](https://github.com/AdFabConnect/abejs/commit/03bbed932d)] - **fix**: we want to protect only Abe with X-CSRF token (gregorybesson)
* [[`6f30158d5e`](https://github.com/AdFabConnect/abejs/commit/6f30158d5e)] - Merge pull request #63 from AdFabConnect/user_role_url (Greg Besson)
* [[`867b9663f7`](https://github.com/AdFabConnect/abejs/commit/867b9663f7)] - **enhancement**: add list-workflow with better explanation + bug url unpublish (nicolaslabbe)
* [[`7b9dc4a197`](https://github.com/AdFabConnect/abejs/commit/7b9dc4a197)] - Merge pull request #62 from AdFabConnect/user_role_url (Greg Besson)
* [[`143160617c`](https://github.com/AdFabConnect/abejs/commit/143160617c)] - Merge pull request #58 from AdFabConnect/bug_source_array (Greg Besson)
* [[`24ac7abcc2`](https://github.com/AdFabConnect/abejs/commit/24ac7abcc2)] - **enhancement**: user routes (nicolaslabbe)
* [[`7b364e43a6`](https://github.com/AdFabConnect/abejs/commit/7b364e43a6)] - **bug**: autocomplete display attribute (nicolaslabbe)
* [[`e919126b10`](https://github.com/AdFabConnect/abejs/commit/e919126b10)] - **bug**: autocomplete display attribute (nicolaslabbe)
* [[`23be6ba276`](https://github.com/AdFabConnect/abejs/commit/23be6ba276)] - **bug**: autocomplete display attribute (nicolaslabbe)
* [[`cd30368b56`](https://github.com/AdFabConnect/abejs/commit/cd30368b56)] - Merge pull request #57 from AdFabConnect/abe_import_variable (Greg Besson)
* [[`b89808dd74`](https://github.com/AdFabConnect/abejs/commit/b89808dd74)] - Merge pull request #60 from AdFabConnect/issue_48 (Greg Besson)
* [[`7a4db0058c`](https://github.com/AdFabConnect/abejs/commit/7a4db0058c)] - **fix**: redirect user logged if go to page login (nicolaslabbe)
* [[`b4df8f2926`](https://github.com/AdFabConnect/abejs/commit/b4df8f2926)] - **bug**: source attr (nicolaslabbe)
* [[`5381d0ac30`](https://github.com/AdFabConnect/abejs/commit/5381d0ac30)] - (nicolaslabbe)
* [[`38e50fc5b4`](https://github.com/AdFabConnect/abejs/commit/38e50fc5b4)] - **feature**: abe import with variable inside filename (nicolaslabbe)
* [[`2dc7b1f160`](https://github.com/AdFabConnect/abejs/commit/2dc7b1f160)] - **feature**: abe import with variable inside filename (nicolaslabbe)
* [[`77d5c46c45`](https://github.com/AdFabConnect/abejs/commit/77d5c46c45)] - Merge pull request #51 from AdFabConnect/issue-49 (Greg Besson)
* [[`e7502ef184`](https://github.com/AdFabConnect/abejs/commit/e7502ef184)] - **enhancement**: add alias for all cli cmd (nicolaslabbe)
* [[`749a97ab57`](https://github.com/AdFabConnect/abejs/commit/749a97ab57)] - **refactor**: cli program (nicolaslabbe)

## [2.10.0] - 2016-11-29
* [[`6ea79d9e40`](https://github.com/AdFabConnect/abejs/commit/6ea79d9e40)] - Merge pull request #44 from AdFabConnect/variable_abEditor (Greg Besson)
* [[`9cf608b8b9`](https://github.com/AdFabConnect/abejs/commit/9cf608b8b9)] - Merge pull request #50 from AdFabConnect/issue-46 (Greg Besson)
* [[`98ab9f557e`](https://github.com/AdFabConnect/abejs/commit/98ab9f557e)] - **Bug**: abe generate-post --thrid param bug (nicolaslabbe)
* [[`327c395b0b`](https://github.com/AdFabConnect/abejs/commit/327c395b0b)] - **UT**: fix workflow + new route + list-graph (nicolaslabbe)
* [[`1146a538e1`](https://github.com/AdFabConnect/abejs/commit/1146a538e1)] - **UT**: fix stub operations (losing coverage percent) (nicolaslabbe)
* [[`6d226f9e73`](https://github.com/AdFabConnect/abejs/commit/6d226f9e73)] - **fix**: #45 bug create same content twice (nicolaslabbe)
* [[`81bc0cca1e`](https://github.com/AdFabConnect/abejs/commit/81bc0cca1e)] - **UT**: template (stub/unstub) (nicolaslabbe)
* [[`083035c040`](https://github.com/AdFabConnect/abejs/commit/083035c040)] - **fix**: #46 bug delete (nicolaslabbe)
* [[`1a1a1751db`](https://github.com/AdFabConnect/abejs/commit/1a1a1751db)] - **Fix**: missing doc for abeEditor variable (nicolaslabbe)
* [[`1f9172b775`](https://github.com/AdFabConnect/abejs/commit/1f9172b775)] - **enhancement**: variable is editor (nicolaslabbe)
* [[`2f0cf82ef2`](https://github.com/AdFabConnect/abejs/commit/2f0cf82ef2)] - Merged branch master into fix_abe_update (nicolaslabbe)
* [[`34f5de122d`](https://github.com/AdFabConnect/abejs/commit/34f5de122d)] - **ci**: UT (gregorybesson)
* [[`8be05e9cd8`](https://github.com/AdFabConnect/abejs/commit/8be05e9cd8)] - **ci**: UT (gregorybesson)
* [[`8bee3adf8b`](https://github.com/AdFabConnect/abejs/commit/8bee3adf8b)] - **ci**: linting (gregorybesson)
* [[`4205bded17`](https://github.com/AdFabConnect/abejs/commit/4205bded17)] - **refactoring**: the display attribute ind a {{abe type=data ...}} is properly handled in any case (gregorybesson)
* [[`2d5f837779`](https://github.com/AdFabConnect/abejs/commit/2d5f837779)] - **fix**: Error was sent when no role existed (gregorybesson)
* [[`6c7e2fae9e`](https://github.com/AdFabConnect/abejs/commit/6c7e2fae9e)] - **fix**: the prefill refresh didn't had the referer path so the select was always done from data root (gregorybesson)
* [[`3f5cc06340`](https://github.com/AdFabConnect/abejs/commit/3f5cc06340)] - **ci**: linting (gregorybesson)
* [[`b04ca00d5a`](https://github.com/AdFabConnect/abejs/commit/b04ca00d5a)] - **fix**: The prefill was never triggered from the server (gregorybesson)
* [[`cb95fb03ea`](https://github.com/AdFabConnect/abejs/commit/cb95fb03ea)] - Merge pull request #39 from AdFabConnect/image-size (Greg Besson)
* [[`ad0d6a1181`](https://github.com/AdFabConnect/abejs/commit/ad0d6a1181)] - rebase from origin (wonknu10)
* [[`27b20f0b7e`](https://github.com/AdFabConnect/abejs/commit/27b20f0b7e)] - **doc**: Changelog updated to 2.9.0 (gregorybesson)

## [2.9.0] - 2016-11-25
* [[`18a1c66e62`](https://github.com/AdFabConnect/abejs/commit/18a1c66e62)] - Merge pull request #42 from AdFabConnect/abe-users-core (Greg Besson)
* [[`95b46008c1`](https://github.com/AdFabConnect/abejs/commit/95b46008c1)] - **fix**: missing nodemailer dep (nicolaslabbe)
* [[`949122fe3d`](https://github.com/AdFabConnect/abejs/commit/949122fe3d)] - Merge pull request #40 from AdFabConnect/abe-users-core (Greg Besson)
* [[`2e1819226d`](https://github.com/AdFabConnect/abejs/commit/2e1819226d)] - **fix**: user default authorize (nicolaslabbe)
* [[`bfa26f94e9`](https://github.com/AdFabConnect/abejs/commit/bfa26f94e9)] - **fix**: path sep for windows (wonknu10)
* [[`d0320f0af9`](https://github.com/AdFabConnect/abejs/commit/d0320f0af9)] - **fix**: path with separator for windows (wonknu10)
* [[`cf43231cfe`](https://github.com/AdFabConnect/abejs/commit/cf43231cfe)] - **fix**: bug printInput isAuthorized (nicolaslabbe)
* [[`2d89cf963b`](https://github.com/AdFabConnect/abejs/commit/2d89cf963b)] - **fix**: ut abe user (nicolaslabbe)
* [[`6a5f5b14c9`](https://github.com/AdFabConnect/abejs/commit/6a5f5b14c9)] - **UT**: fix path for window (wonknu10)
* [[`015dfc8197`](https://github.com/AdFabConnect/abejs/commit/015dfc8197)] - **fix**: user role (nicolaslabbe)
* [[`c27e94dab3`](https://github.com/AdFabConnect/abejs/commit/c27e94dab3)] - Merge branch 'master' of https://github.com/AdFabConnect/abejs into image-size (wonknu10)

## [2.8.4] - 2016-11-25
* [[`bd345aea0c`](https://github.com/AdFabConnect/abejs/commit/bd345aea0c)] - **doc**: Changelog (gregorybesson)
* [[`becb7b9dee`](https://github.com/AdFabConnect/abejs/commit/becb7b9dee)] - Merge pull request #41 from AdFabConnect/fix_abe_update (Greg Besson)
* [[`454eeff71f`](https://github.com/AdFabConnect/abejs/commit/454eeff71f)] - **fix**: remove unused dependencies (nicolaslabbe)
* [[`b2b4ab0225`](https://github.com/AdFabConnect/abejs/commit/b2b4ab0225)] - **fix**: bug update admin (nicolaslabbe)
* [[`115f3d8d02`](https://github.com/AdFabConnect/abejs/commit/115f3d8d02)] - **enhancement**: abe user role (nicolaslabbe)
* [[`a86fb08f21`](https://github.com/AdFabConnect/abejs/commit/a86fb08f21)] - **UT**: test locale & editor (wonknu10)
* [[`9ff28a8784`](https://github.com/AdFabConnect/abejs/commit/9ff28a8784)] - merge from master (wonknu10)
* [[`c832732c09`](https://github.com/AdFabConnect/abejs/commit/c832732c09)] - **UT**: unit test cms media & printinput (wonknu10)
* [[`fc65b3b4ff`](https://github.com/AdFabConnect/abejs/commit/fc65b3b4ff)] - **enhancement**: invert user role (nicolaslabbe)
* [[`059ae3d762`](https://github.com/AdFabConnect/abejs/commit/059ae3d762)] - **bug**: user core (nicolaslabbe)
* [[`d2da713dad`](https://github.com/AdFabConnect/abejs/commit/d2da713dad)] - **bug**: user core (nicolaslabbe)
Expand All @@ -33,6 +100,7 @@
* [[`425b19a2c3`](https://github.com/AdFabConnect/abejs/commit/425b19a2c3)] - **UT**: user into core (nicolaslabbe)
* [[`b34b5f1c87`](https://github.com/AdFabConnect/abejs/commit/b34b5f1c87)] - Merge pull request #38 from AdFabConnect/bug-2.8.1 (Greg Besson)
* [[`0712b583fc`](https://github.com/AdFabConnect/abejs/commit/0712b583fc)] - Merge pull request #37 from marcbachmann/update-uuid (Greg Besson)
* [[`5a0b342856`](https://github.com/AdFabConnect/abejs/commit/5a0b342856)] - **enhancement**: image crop feature & refactoring upload files (wonknu10)
* [[`836379157b`](https://github.com/AdFabConnect/abejs/commit/836379157b)] - **fix**: bug abejs form multiple precontrib was selected on queryselector for structure path url (nicolaslabbe)
* [[`487d28817a`](https://github.com/AdFabConnect/abejs/commit/487d28817a)] - **fix**: tab slug autocomplete remove result glyph not visible (nicolaslabbe)
* [[`ca8528b5c6`](https://github.com/AdFabConnect/abejs/commit/ca8528b5c6)] - chore(package): update uuid to version 3.0.0 (Marc Bachmann)
Expand Down
1 change: 0 additions & 1 deletion dump.rdb

This file was deleted.

90 changes: 90 additions & 0 deletions nightwatch.conf.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,90 @@
const SCREENSHOT_PATH = "./screenshots/";
const BINPATH = './node_modules/nightwatch/bin/';

module.exports = {
"src_folders": [
"tests/functional"
],
"output_folder": "./reports",
"test_runner" : "mocha",
"selenium": {
"start_process": true,
"server_path": "./node_modules/nightwatch/bin/selenium.jar",
"host": "127.0.0.1",
"port": 4444,
"cli_args": {
"webdriver.chrome.driver" : "./node_modules/nightwatch/bin/chromedriver"
}
},
"test_settings": {
"default": {
"launch_url" : "http://localhost:3003/abe/editor",
"silent": true,
"screenshots": {
"enabled": false,
"path": ''
},
"globals": {
"waitForConditionTimeout": 3000
},
"desiredCapabilities" : {
"browserName" : "chrome",
"javascriptEnabled" : true,
"acceptSslCerts" : true,
"chromeOptions" : {
"args" : ["start-fullscreen"]
}
}
},
"chrome": {
"desiredCapabilities": {
"browserName": "chrome",
"javascriptEnabled": true,
"acceptSslCerts" : true,
"chromeOptions" : {
"args" : ["start-fullscreen"]
}
}
}
}
}
/**
* selenium-download does exactly what it's name suggests;
* downloads (or updates) the version of Selenium (& chromedriver)
* on your localhost where it will be used by Nightwatch.
/the following code checks for the existence of `selenium.jar` before trying to run our tests.
*/

require('fs').stat(BINPATH + 'selenium.jar', function (err, stat) { // got it?
if (err || !stat || stat.size < 1) {
require('selenium-download').ensure(BINPATH, function(error) {
if (error) throw new Error(error); // no point continuing so exit!
console.log('✔ Selenium & Chromedriver downloaded to:', BINPATH);
});
}
});

function padLeft (count) {
return count < 10 ? '0' + count : count.toString();
}

var FILECOUNT = 0;
/**
* The default is to save screenshots to the root of your project even though
* there is a screenshots path in the config object above! ... so we need a
* function that returns the correct path for storing our screenshots.
* While we're at it, we are adding some meta-data to the filename, specifically
* the Platform/Browser where the test was run and the test (file) name.
*/
function imgpath (browser) {
var a = browser.options.desiredCapabilities;
var meta = [a.platform];
meta.push(a.browserName ? a.browserName : 'any');
meta.push(a.version ? a.version : 'any');
meta.push(a.name); // this is the test filename so always exists.
var metadata = meta.join('~').toLowerCase().replace(/ /g, '');
return SCREENSHOT_PATH + metadata + '_' + padLeft(FILECOUNT++) + '_';
}

module.exports.imgpath = imgpath;
module.exports.SCREENSHOT_PATH = SCREENSHOT_PATH;
8 changes: 8 additions & 0 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -8,10 +8,14 @@
"url": "git://github.com/AdFabConnect/abejs.git"
},
"scripts": {
"postinstall": "node nightwatch.conf.js",
"lint": "eslint src --fix",
"test": "mocha --recursive --compilers js:babel-register --require babel-polyfill",
"test-cov": "istanbul cover _mocha -- --recursive --compilers js:babel-register --require babel-polyfill",
"test-coveralls": "istanbul cover _mocha --report lcovonly -- --recursive --compilers js:babel-register --require babel-polyfill -R spec && cat ./coverage/lcov.info | ./node_modules/coveralls/bin/coveralls.js && rm -rf ./coverage",
"pretest-func": "ROOT=$PWD/tests/demo ./dist/index.js serve -p 3003 &",
"test-func": "sleep 6 && node_modules/.bin/nightwatch --config nightwatch.conf.js",
"posttest-func": "killall node",
"start": "node --debug --harmony ./dist/server/index.js",
"startpm2": "pm2 startOrRestart ./processes.json",
"babel": "babelify --presets [ es2015 ] src/server/public/scripts/template-engine.js -o src/server/public/scripts/template-engine-compiled.js",
Expand All @@ -27,6 +31,7 @@
"build:front": "npm run js:admin && npm run js:users && npm run js:engine && npm run sass",
"build:scripts": "npm run build:front && ./node_modules/.bin/babel --presets es2015,stage-0 -d dist/server src/server/ && ./node_modules/.bin/babel --presets es2015,stage-0 -d dist/cli src/cli/ && npm run mvasset",
"compile": "./node_modules/.bin/babel --presets es2015,stage-0 -d dist/ src/ && cp -r src/cli/core/config/config.json dist/cli/core/config/config.json",
"distribute": "npm run build:front && npm run compile && npm run mvasset",
"watchdev": "npm run build:front && npm run compile && npm run mvasset && nodemon --debug --exec npm run compile && npm run mvasset --kill-others",
"startdev": "npm run build:front && npm run compile && npm run mvasset && node src/tasks/nodemon.js & npm run watch --kill-others",
"startdevOnly": "npm run js:admin && npm run js:users && npm run js:engine && node src/tasks/nodemon.js & npm run watch --kill-others"
Expand Down Expand Up @@ -109,9 +114,12 @@
"eslint": "^3.6.0",
"istanbul": "^1.1.0-alpha.1",
"mocha": "^3.0.2",
"nightwatch": "^0.9.9",
"node-sass": "^3.7.0",
"nodemon": "^1.8.1",
"parallelshell": "^2.0.0",
"phantomjs-prebuilt": "^2.1.13",
"selenium-download": "^2.0.7",
"sinon": "^1.17.6",
"sinon-chai": "^2.8.0",
"watchify": "^3.4.0"
Expand Down
4 changes: 2 additions & 2 deletions src/cli/cms/data/regex.js
Original file line number Diff line number Diff line change
Expand Up @@ -101,8 +101,8 @@ export function getWorkflowFromOperationsUrl(str){
let regUrl = /\/abe\/operations\/(.*?)\/(.*?)\//
var workflow = 'draft'
var match = str.match(regUrl)
if (match != null && match[1] != null) {
workflow = match[1]
if (match != null && match[2] != null) {
workflow = match[2]
}
var postUrl = str.replace(regUrl, '')
return {
Expand Down
2 changes: 1 addition & 1 deletion src/cli/cms/data/source.js
Original file line number Diff line number Diff line change
Expand Up @@ -94,7 +94,7 @@ export function urlList(obj, tplPath, match, jsonPage) {
}

var body = ''

console.log(options)
var localReq = httpUse.request(options, (localRes) => {
localRes.setEncoding('utf8')
localRes.on('data', (chunk) => {
Expand Down
4 changes: 2 additions & 2 deletions src/cli/cms/editor/handlebars/listPage.js
Original file line number Diff line number Diff line change
Expand Up @@ -67,7 +67,7 @@ export default function listPage(file, index, text) {


if(file.publish != null) {
res += `<a href="/abe/operations/publish/unpublish${file.abe_meta.link}"
res += `<a href="/abe/operations/unpublish${file.abe_meta.link}"
title="${text.unpublish}"
class="icon" data-unpublish="true" data-text="${text.confirmUnpublish} ${file.abe_meta.link}"
title="unpublish">
Expand All @@ -76,7 +76,7 @@ export default function listPage(file, index, text) {
}


res += `<a href="/abe/operations/${file.abe_meta.status}/delete${file.abe_meta.link}"
res += `<a href="/abe/operations/delete/${file.abe_meta.status}${file.abe_meta.link}"
title="${text.delete}"
class="icon"
data-delete="true"
Expand Down
4 changes: 2 additions & 2 deletions src/cli/cms/editor/handlebars/printInput.js
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@ export function createInputSource(attributes, inputClass, params) {
var inputSource = ''
var lastValues
if(params.autocomplete != null && params.autocomplete === 'true') {
if(params.source.indexOf('http') === 0) lastValues = params.source
if(params.sourceString.indexOf('http') === 0) lastValues = params.source
else lastValues = JSON.stringify(params.source).replace(/\'/g, '&quote;')
inputSource += '<div class="autocomplete-result-wrapper">'
if(params.autocomplete != null && params.autocomplete === 'true' && params.prefill === 'true') {
Expand Down Expand Up @@ -210,4 +210,4 @@ export function printInput (params, root) {
res = abeExtend.hooks.instance.trigger('afterEditorInput', res, params)

return res
}
}
Loading

0 comments on commit d532d6d

Please sign in to comment.