Commit 50ac570736020f94704fa494310adbfa2853248c

Authored by Nattapon
0 parents
Exists in master and in 1 other branch develop

initial commit

.gitignore 0 → 100644
  1 +++ a/.gitignore
... ... @@ -0,0 +1 @@
  1 +node_modules
... ...
admd.js 0 → 100644
  1 +++ a/admd.js
... ... @@ -0,0 +1,46 @@
  1 +
  2 +module.exports.oauthToken = async (req, res) => {
  3 + console.log('===== POST oauthToken =====')
  4 + console.log('url', req.originalUrl);
  5 + console.log('headers', req.headers);
  6 + console.log('query', req.query);
  7 + console.log('params', req.params);
  8 + console.log('body', req.body);
  9 +
  10 + let response;
  11 +
  12 + if(req.query.grant_type == 'refresh_token') {
  13 + response = {
  14 + "access_token": "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCIsImtpZCI6IklaRGNwQjJZY2gifQ.eyJpc3MiOiJzcmYuYWlzLmNvLnRoL3NjZiIsInN1YiI6InRva2VuX2F1dGhlbnRpY2F0aW9uX2NvZGUiLCJhdWQiOiJMdGFOa1d2K0MvcnMzbk8vVis3RFhLUkRmRk9wRkJNeUVrY0ROSXA5Z0ovdWhNK0RBenVoUlE9PSIsImV4cCI6MTU5MDgzMzM1MiwiaWF0IjoxNTkwNzQ2OTUyLCJqdGkiOiIxRnVaSTdvbW5jZDlrTTE2Vm9FQkJyIiwicGlkIjoiWHUwb082bWRJYkowcE43QWp1dEtNNUFpK3Y4ckliTTF1YVFIWjRwNzkwTT0iLCJjbGllbnQiOiJNekF4Tnprc1FWSldVbEJNUVZSR1QxSk5mRUp5YjNkelpYSjhNUzR3TGpBPSIsInNzaWQiOiI3NDdHU1M1Rk1rSnFjVTQ1S1VpTXdzIiwidWlkIjoiNjYxNTcwMDEyMDE2NjA3IiwiYXV0Ijp7InR5cGUiOiJlbWFpbF9wYXNzd29yZCIsImFjdGlvbiI6ImxvZ2luIn0sImlhbCI6IjEuMSJ9.ggDiGlXQHiFuHu-Vcz-F1tpkPcAoCF0iTaokvJoAUzPSlRQA1zp__bMl0cVMSN1lILhNRuDxM_U2ABPooGka6HcdajzxkZrL81YIhj96g86wc5wu5uMg73bItEqZ0HkStQ5WD6sDtH8H_c-Q3ym26n-d-TZsqlBmWRIxj-x9joI",
  15 + "token_type": "bearer",
  16 + "expires_in": 86400,
  17 + "refresh_token": "N3ZGS2o5TjhSRkFsbGZWWVdFdzUxNTkwNzQ2OTUx747GSS5FMkJqcU45KUiMws",
  18 + "id_token": "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCIsImtpZCI6InVreE8xSDFmQXkifQ.eyJpc3MiOiJzcmYuYWlzLmNvLnRoL3NjZiIsInN1YiI6ImlkVG9rZW4iLCJhdWQiOiJMdGFOa1d2K0MvcnMzbk8vVis3RFhLUkRmRk9wRkJNeUVrY0ROSXA5Z0ovdWhNK0RBenVoUlE9PSIsImV4cCI6MTU5MDgzMzM1MSwiaWF0IjoxNTkwNzQ2OTUxLCJqdGkiOiJlenBuWGF2Nm55cTVGZGZ2TFJlaW9qIiwiYXV0Ijp7InR5cGUiOiJlbWFpbF9wYXNzd29yZCIsImFjdGlvbiI6ImxvZ2luIn0sIm5vbmNlIjoiU1JGUC0yMDA1MjlFS081OFBnMDRWQiIsImluZm8iOnsiZmlyc3RuYW1lIjoidGVzdGJyb2tlciIsImxhc3RuYW1lIjoidGVzdGJyb2tlciIsInVzZXJuYW1lIjoidGVzdGJyb2tlckBnbWFpbC5jb20iLCJhY2NvdW50Q2F0ZWdvcnkiOiJyZXNpZGVudGlhbCJ9fQ.gFOf3_vuE_K4KEDZLYoXqma6pL6B_HdA0SWpaErvI-s1ng3rH6PXtEy8-7H5c2W9Co10kWEXcXuMXBHTFqRLu9WBNU1v2MGV90wBJ5ujAW_YdaY1H5D0HMthQVPEt6Bda2gHk_TVqol-YQRBbRNNhNQaxb5PSpZxv9dTJ7B4zzM",
  19 + "refresh_token_expires_in": 86400
  20 + }
  21 + } else {
  22 + response = {
  23 + "access_token": "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCIsImtpZCI6IklaRGNwQjJZY2gifQ.eyJpc3MiOiJzcmYuYWlzLmNvLnRoL3NjZiIsInN1YiI6InRva2VuX2F1dGhlbnRpY2F0aW9uX2NvZGUiLCJhdWQiOiJMdGFOa1d2K0MvcnMzbk8vVis3RFhLUkRmRk9wRkJNeUVrY0ROSXA5Z0ovdWhNK0RBenVoUlE9PSIsImV4cCI6MTU5MDgzMzM1MiwiaWF0IjoxNTkwNzQ2OTUyLCJqdGkiOiIxRnVaSTdvbW5jZDlrTTE2Vm9FQkJyIiwicGlkIjoiWHUwb082bWRJYkowcE43QWp1dEtNNUFpK3Y4ckliTTF1YVFIWjRwNzkwTT0iLCJjbGllbnQiOiJNekF4Tnprc1FWSldVbEJNUVZSR1QxSk5mRUp5YjNkelpYSjhNUzR3TGpBPSIsInNzaWQiOiI3NDdHU1M1Rk1rSnFjVTQ1S1VpTXdzIiwidWlkIjoiNjYxNTcwMDEyMDE2NjA3IiwiYXV0Ijp7InR5cGUiOiJlbWFpbF9wYXNzd29yZCIsImFjdGlvbiI6ImxvZ2luIn0sImlhbCI6IjEuMSJ9.ggDiGlXQHiFuHu-Vcz-F1tpkPcAoCF0iTaokvJoAUzPSlRQA1zp__bMl0cVMSN1lILhNRuDxM_U2ABPooGka6HcdajzxkZrL81YIhj96g86wc5wu5uMg73bItEqZ0HkStQ5WD6sDtH8H_c-Q3ym26n-d-TZsqlBmWRIxj-x9joI",
  24 + "token_type": "bearer",
  25 + "expires_in": 86400,
  26 + "refresh_token": "N3ZGS2o5TjhSRkFsbGZWWVdFdzUxNTkwNzQ2OTUx747GSS5FMkJqcU45KUiMws",
  27 + "id_token": "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCIsImtpZCI6InVreE8xSDFmQXkifQ.eyJpc3MiOiJzcmYuYWlzLmNvLnRoL3NjZiIsInN1YiI6ImlkVG9rZW4iLCJhdWQiOiJMdGFOa1d2K0MvcnMzbk8vVis3RFhLUkRmRk9wRkJNeUVrY0ROSXA5Z0ovdWhNK0RBenVoUlE9PSIsImV4cCI6MTU5MDgzMzM1MSwiaWF0IjoxNTkwNzQ2OTUxLCJqdGkiOiJlenBuWGF2Nm55cTVGZGZ2TFJlaW9qIiwiYXV0Ijp7InR5cGUiOiJlbWFpbF9wYXNzd29yZCIsImFjdGlvbiI6ImxvZ2luIn0sIm5vbmNlIjoiU1JGUC0yMDA1MjlFS081OFBnMDRWQiIsImluZm8iOnsiZmlyc3RuYW1lIjoidGVzdGJyb2tlciIsImxhc3RuYW1lIjoidGVzdGJyb2tlciIsInVzZXJuYW1lIjoidGVzdGJyb2tlckBnbWFpbC5jb20iLCJhY2NvdW50Q2F0ZWdvcnkiOiJyZXNpZGVudGlhbCJ9fQ.gFOf3_vuE_K4KEDZLYoXqma6pL6B_HdA0SWpaErvI-s1ng3rH6PXtEy8-7H5c2W9Co10kWEXcXuMXBHTFqRLu9WBNU1v2MGV90wBJ5ujAW_YdaY1H5D0HMthQVPEt6Bda2gHk_TVqol-YQRBbRNNhNQaxb5PSpZxv9dTJ7B4zzM",
  28 + "refresh_token_expires_in": 86400
  29 + }
  30 + }
  31 +
  32 + res.send(response)
  33 +}
  34 +
  35 +module.exports.logout = async (req, res) => {
  36 + console.log('===== POST b2cLogout =====')
  37 + console.log('url', req.originalUrl);
  38 + console.log('headers', req.headers);
  39 + console.log('query', req.query);
  40 + console.log('params', req.params);
  41 + console.log('body', req.body);
  42 +
  43 + let response = {"state":"logout"}
  44 +
  45 + res.send(response)
  46 +}
0 47 \ No newline at end of file
... ...
app.js 0 → 100644
  1 +++ a/app.js
... ... @@ -0,0 +1,369 @@
  1 +const express = require('express')
  2 +const app = express()
  3 +
  4 +const bodyParser = require('body-parser')
  5 +
  6 +const configPartnerList = require('./config_partner.json');
  7 +const PartnerManager = require('./req_partner_manager');
  8 +
  9 +let moment = require('moment')
  10 +let unirest = require('unirest')
  11 +let request = require('request')
  12 +
  13 +let cors = require('cors')
  14 +let toXML = require('jstoxml');
  15 +
  16 +// var mongoose = require('mongoose');
  17 +// mongoose.connect('mongodb://10.1.2.146:27018/test');
  18 +
  19 +// var MongoClient = require('mongodb').MongoClient;
  20 +// var dburl = "mongodb://10.1.2.144:27018/test";
  21 +// MongoClient.connect(dburl, function(err, db) {
  22 +// if (err) {
  23 +// throw err;
  24 +// }
  25 +// console.log('db connected');
  26 +// db.close();
  27 +// });
  28 +
  29 +const port = 3002
  30 +
  31 +app.use(cors())
  32 +
  33 +app.use((req, res, next) => {
  34 + console.log('incomming url: ',req.originalUrl)
  35 + next()
  36 +})
  37 +
  38 +app.post('/parse', bodyParser.text('*/*'), async (req, res) => {
  39 + console.log('test', req.body)
  40 + console.log('test', req.headers)
  41 +
  42 + try {
  43 + JSON.parse(req.body)
  44 + } catch (e) {
  45 +
  46 + }
  47 +
  48 + res.send(result)
  49 +
  50 +
  51 +});
  52 +
  53 +app.use(bodyParser.urlencoded());
  54 +app.use(bodyParser.json());
  55 +
  56 +app.post('/apiRequest', (req, res) => {
  57 + console.log(req.params.apiRequest)
  58 + console.log(req.originalUrl);
  59 + console.log(req.url)
  60 + let partnerCode = req.body.partnerCode
  61 + let configPartner = null;
  62 +
  63 + if (Array.isArray(configPartnerList.partner)) {
  64 + for (let partner of configPartnerList.partner) {
  65 + if (partnerCode == partner.partnerCode) {
  66 + configPartner = partner;
  67 + break;
  68 + }
  69 + }
  70 + }
  71 +
  72 + if (configPartner) {
  73 + let reqPartner = new PartnerManager(req.body, configPartner);
  74 + let apiRequest = reqPartner.requestApi()
  75 + if (apiRequest instanceof Error) {
  76 + //handle error
  77 + res.send(JSON.parse(apiRequest.message))
  78 + } else {
  79 + res.send(apiRequest)
  80 + }
  81 + } else {
  82 + res.send('unknown partner')
  83 + }
  84 +})
  85 +
  86 +app.post('/ktc/point/transferPoint', (req, res) => {
  87 + console.log('/ktc/point/transferPoint', req.body)
  88 + console.log('/ktc/point/transferPoint', req.headers)
  89 + let response = {
  90 + aaa: "test",
  91 + pushRefId1: 'WsxK21',
  92 + resultData: [
  93 + {
  94 + pointId1: 'ser'
  95 + },
  96 + {
  97 + pointId1: 'ser1'
  98 + }
  99 + ]
  100 + }
  101 + res.set('xx', 'test')
  102 + // res.status(200).json(response)
  103 +})
  104 +
  105 +app.post('/mockOneSiamMoblieServiceSoap', (req, res) => {
  106 + console.log(req.body)
  107 + console.log(req.headers)
  108 + res.status(200).send('<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:tem=\"http://tempuri.org/\"><soapenv:Header/><soapenv:Body><tem:SearchCustomerResponse><tem:SearchCustomerResult><tem:CUSTOMERVIEWMODEL><tem:STATUSCODE>123</tem:STATUSCODE><tem:IDENTIFICATIONNUMBER>$value</tem:IDENTIFICATIONNUMBER><tem:GENDER>$value</tem:GENDER><tem:BIRTHDAY>$value</tem:BIRTHDAY></tem:CUSTOMERVIEWMODEL></tem:SearchCustomerResult></tem:SearchCustomerResponse></soapenv:Body></soapenv:Envelope>')
  109 +})
  110 +
  111 +app.get('/get', (req, res) => {
  112 + console.log('get', req.body)
  113 + console.log('get', req.headers)
  114 + let response = {
  115 + pushRefId: '',
  116 + resultData: [
  117 + {
  118 + pointId1: 'ser'
  119 + },
  120 + {
  121 + pointId1: 'ser1'
  122 + }
  123 + ]
  124 + }
  125 + // res.status(200).json(response)
  126 +});
  127 +
  128 +app.get('/test', async (req, res) => {
  129 + console.log('test', req.body)
  130 + console.log('test', req.headers)
  131 +
  132 + try {
  133 + let response = await doRequestFormData('http://test.us-payment.picovr.com/AISPayNotify',{ accept: 'application/json'}, {
  134 + app_id: '24e09f8038dbf1204c09090d56c872c0',
  135 + body: 'PICO-COINS12000',
  136 + buyer_pay_fee: 'Paid by user',
  137 + device_id: '90c73518a762a2d1a339d7f',
  138 + fee_type: 'THB',
  139 + mch_id: 'company_id',
  140 + nonce_str: 'SpXrgaKf4fagyF9a',
  141 + notify_type: 'PAY',
  142 + open_id: 'ZLsdZaanhHDAUkDDgRX6QfpxAj0CSx6x7BLgUt4LlpM=',
  143 + out_trade_no: '202004081609523',
  144 + pay_time: 1587527937951,
  145 + pay_type: 'AIS',
  146 + receipt_fee: '0.00',
  147 + subject: 'Purchased 12000 coins.',
  148 + terminal_type: 'IOS',
  149 + timestamp: 1587527937951,
  150 + total_fee: '0.00',
  151 + trade_no: '50609152601900018023',
  152 + trade_type: 'Download',
  153 + signature: '83387eaf92018538d5f8fd7f3a6ecd0a'
  154 + })
  155 +
  156 + res.send(response)
  157 +
  158 + } catch (e) {
  159 + //if doRequestFormData has error
  160 + //reject, timeout, other error
  161 + console.log('doRequestFormData', e)
  162 + res.send('error')
  163 + }
  164 +
  165 +
  166 +});
  167 +
  168 +function doRequestFormData(url, headers, data) {
  169 + console.log(url, headers, data)
  170 + return new Promise(function (resolve, reject) {
  171 + request.post({ url: url, headers: headers, timeout: 2000, formData: data }, function (error, res, body) {
  172 + if (!error && res.statusCode == 200) {
  173 + resolve(body);
  174 + } else {
  175 + reject(error);
  176 + }
  177 + });
  178 + });
  179 +}
  180 +
  181 +app.post('/api/v1/mpay/billingonbehalf/reserveAndChargeVolume.json', (req, res) => {
  182 + console.log(req.body)
  183 + console.log(req.headers)
  184 + let response = {
  185 + "reserveAndChargeVolumeResponse": {
  186 + "result": "SUCCESS",
  187 + "resultDescription": "60713000154960518477",
  188 + "endUserIdentifier": "66873381009",
  189 + "networkType": "prepaid"
  190 + }
  191 + }
  192 +
  193 + res.status(200).json(response)
  194 +});
  195 +
  196 +app.post('/api/v1/mpay/billingonbehalf/partialRefundVolume.json', (req, res) => {
  197 + console.log(req.body)
  198 + console.log(req.headers)
  199 + let response = {
  200 + "refundVolumeV2Response": {
  201 + "result": "SUCCESS",
  202 + "resultDescription": "60713000154960518477",
  203 + "endUserIdentifier": "66873381009",
  204 + "networkType": "prepaid"
  205 + }
  206 + }
  207 +
  208 + res.status(200).json(response)
  209 +});
  210 +
  211 +app.post('/api/v1/mpay/billingonbehalf/queryChargeTransaction.json', (req, res) => {
  212 + console.log(req.body)
  213 + console.log(req.headers)
  214 + let response = {
  215 + "result": "SUCCESS",
  216 + "resultDescription": "201805231904005310944"
  217 + }
  218 +
  219 +
  220 + res.status(200).json(response)
  221 +});
  222 +
  223 +app.post('/api/v1/mpay/billingonbehalf/queryRefundTransaction.json', (req, res) => {
  224 + console.log(req.body)
  225 + console.log(req.headers)
  226 + let response = {
  227 + "result": "SUCCESS",
  228 + "resultDescription": "201805231904005310944"
  229 + }
  230 +
  231 +
  232 + res.status(200).json(response)
  233 +});
  234 +
  235 +// app.use(multiparty({ uploadDir: "./img"}));
  236 +
  237 +app.post('/api/shop-cdns/upload', (req, res) => {
  238 +
  239 + var azure = require('azure-storage')
  240 + var multiparty = require('multiparty')
  241 +
  242 + process.env.AZURE_STORAGE_ACCOUNT = 'shareallspw'
  243 + process.env.AZURE_STORAGE_ACCESS_KEY = 'TIWwkqyvlyTySRzSelOJij2jaZbKIZ/fLUST0q9TPZGNI1dQVVn1/bU4/FnEJnUpvW1fqtWYI2HmGJeD/Oo4eA=='
  244 +
  245 + var blobService = azure.createBlobService();
  246 + var form = new multiparty.Form();
  247 +
  248 + form.on('part', function (part) {
  249 + if (!part.filename) return;
  250 + var size = part.byteCount;
  251 + var path = 'point'
  252 + var name = moment().valueOf() + '.' + part.filename.split('.')[1];
  253 +
  254 + var container = 'spw-cdn';
  255 +
  256 + blobService.createBlockBlobFromStream(container, path + '/' + name, part, size, function (error, result, response) {
  257 + if (error) {
  258 + console.log(error)
  259 + // error handling
  260 + res.status(500).send('Error uploading file');
  261 + }
  262 + console.log('result', result)
  263 + console.log('response', response)
  264 + // res.send('File uploaded successfully');
  265 +
  266 + let responseMessage = {
  267 + name: part.filename,
  268 + type: part.headers['content-type'],
  269 + size: part.byteCount,
  270 + container: '/' + path,
  271 + imageUrl: 'https://shareallspw.azureedge.net/' + path + '/' + name,
  272 + thumbnails: 'test1',
  273 + thumbnails43: 'test2',
  274 + }
  275 +
  276 + console.log(responseMessage)
  277 +
  278 + res.send(responseMessage)
  279 + });
  280 + });
  281 +
  282 + form.parse(req);
  283 +});
  284 +
  285 +var multipart = require('connect-multiparty');
  286 +var multipartMiddleware = multipart({ uploadDir: './img' });
  287 +
  288 +app.post('/api/shop-cdns/upload2', multipartMiddleware, async (req, res) => {
  289 + console.log(req.body, req.files);
  290 +
  291 + var size = req.files.file.size;
  292 + var name = moment().valueOf() + '.' + req.files.file.name.split('.')[1];
  293 + var path = 'point'
  294 + var container = 'spw-cdn';
  295 + // console.log(req.files.file.path)
  296 +
  297 + var blobService = azure.createBlobService();
  298 + blobService.createBlockBlobFromLocalFile(container, path + '/' + name, req.files.file.path, (error, result, response) => {
  299 + console.log(result)
  300 + console.log(response)
  301 + console.log(error)
  302 + console.log({
  303 + name: name,
  304 + type: req.files.file.type,
  305 + size: size,
  306 + container: '/' + path,
  307 + imageUrl: 'https://shareallspw.azureedge.net/' + path + '/' + name,
  308 + thumbnails: 'test1',
  309 + thumbnails43: 'test2',
  310 + })
  311 +
  312 + res.send({
  313 + name: name,
  314 + type: req.files.file.type,
  315 + size: size,
  316 + container: '/' + path,
  317 + imageUrl: 'https://shareallspw.azureedge.net/' + path + '/' + name,
  318 + thumbnails: 'test1',
  319 + thumbnails43: 'test2',
  320 + })
  321 + })
  322 +
  323 +
  324 +
  325 +});
  326 +
  327 +app.get('/scf/v2/partnerSpecificPrivateId/:privateId.json', require('./scf').decryptPrivateId);
  328 +
  329 +app.post('/api/v1/gsso/sendOneTimePW.json', require('./gsso').sendOneTimePassword);
  330 +app.post('/api/v1/gsso/confirmOneTimePassword.json', require('./gsso').confirmOneTimePassword);
  331 +
  332 +app.get('/ssb/profile/network/subscriber/:userId/type/:userType', require('./ssb').getProfileType);
  333 +app.post('/ssb/profile/historyPackage', require('./ssb').queryHistoryPackage);
  334 +app.post('/ssb/profile/currentPackage', require('./ssb').queryCurrentPackage);
  335 +app.post('/ssb/package/apply', require('./ssb').applyPack);
  336 +app.post('/ssb/package/subscriber', require('./ssb').deletePackage); //
  337 +
  338 +app.post('/verifyReceipt', require('./apple').verifyReceipt); //
  339 +
  340 +app.post('/api/v1/package/packagepayment', require('./nafa').packagePayment); //
  341 +app.post('/api/v1/package/cancelPackage', require('./nafa').cancelPackage); //
  342 +
  343 +
  344 +app.get('/api/v1/customer', require('./d01').getCustomer);
  345 +app.post('/api/v1/customer', require('./d01').postCustomer);
  346 +app.put('/api/v1/customer', require('./d01').putCustomer);
  347 +app.delete('/api/v1/customer', require('./d01').deleteCustomer);
  348 +
  349 +app.get('/api/v1/memberlink', require('./d01').getMemberLink);
  350 +app.post('/api/v1/memberlink', require('./d01').postMemberLink);
  351 +app.put('/api/v1/memberlink', require('./d01').putMemberLink);
  352 +app.delete('/api/v1/memberlink', require('./d01').deleteMemberLink);
  353 +
  354 +app.get('/api/v1/address', require('./d01').getAddress);
  355 +app.post('/api/v1/address', require('./d01').postAddress);
  356 +app.put('/api/v1/address', require('./d01').putAddress);
  357 +app.delete('/api/v1/address', require('./d01').deleteAddress);
  358 +
  359 +app.get('/api/v1/mastermember', require('./d01').getMasterMember);
  360 +app.post('/api/v1/mastermember', require('./d01').postMasterMember);
  361 +app.put('/api/v1/mastermember', require('./d01').putMasterMember);
  362 +app.delete('/api/v1/mastermember', require('./d01').deleteMasterMember);
  363 +
  364 +app.post('/auth/v3.1/oauth/token', require('./admd').oauthToken);
  365 +app.post('/auth/v3.1/logout', require('./admd').logout);
  366 +
  367 +
  368 +
  369 +app.listen(port, () => console.log('app listening on port ' + port + '!'))
0 370 \ No newline at end of file
... ...
apple.js 0 → 100644
  1 +++ a/apple.js
... ... @@ -0,0 +1,137 @@
  1 +
  2 +let retrySuccess = 2;
  3 +let bypass = true
  4 +
  5 +module.exports.verifyReceipt = async (req, res) => {
  6 + console.log('===== POST verifyReceipt =====')
  7 + console.log('url', req.originalUrl);
  8 + console.log('headers', req.headers);
  9 + console.log('query', req.query);
  10 + console.log('params', req.params);
  11 + console.log('body', req.body);
  12 +
  13 + let response = {
  14 + "is-retryable": "",
  15 + "latest_receipt": "",
  16 + "latest_receipt_info": [
  17 + {
  18 + "cancellation_date": "",
  19 + "cancellation_date_ms": "",
  20 + "cancellation_date_pst": "",
  21 + "cancellation_reason": "",
  22 + "expires_date": "2019-05-12 11:59:59 Etc/GMT",
  23 + "expires_date_ms": "",
  24 + "expires_date_pst": "",
  25 + "is_in_intro_offer_period": "",
  26 + "is_trial_period": "",
  27 + "is_upgraded": "",
  28 + "original_purchase_date": "",
  29 + "original_purchase_date_ms": "",
  30 + "original_purchase_date_pst": "",
  31 + "original_transaction_id": "original_id003",
  32 + "product_id": "A49992198",
  33 + "promotional_offer_id": "",
  34 + "purchase_date": "",
  35 + "purchase_date_ms": "",
  36 + "purchase_date_pst": "",
  37 + "quantity": "",
  38 + "subscription_group_identifier": "",
  39 + "transaction_id": "",
  40 + "web_order_line_item_id": ""
  41 + },
  42 + {
  43 + "cancellation_date": "",
  44 + "cancellation_date_ms": "",
  45 + "cancellation_date_pst": "",
  46 + "cancellation_reason": "",
  47 + "expires_date": "2020-06-07 16:28:15",
  48 + "expires_date_ms": "",
  49 + "expires_date_pst": "",
  50 + "is_in_intro_offer_period": "",
  51 + "is_trial_period": "",
  52 + "is_upgraded": "",
  53 + "original_purchase_date": "",
  54 + "original_purchase_date_ms": "",
  55 + "original_purchase_date_pst": "",
  56 + "original_transaction_id": "original_id07",
  57 + "product_id": "A49980551",
  58 + "promotional_offer_id": "",
  59 + "purchase_date": "",
  60 + "purchase_date_ms": "",
  61 + "purchase_date_pst": "",
  62 + "quantity": "",
  63 + "subscription_group_identifier": "",
  64 + "transaction_id": "",
  65 + "web_order_line_item_id": ""
  66 + }
  67 + ],
  68 + "pending_renewal_info": [
  69 + {
  70 + "auto_renew_product_id": "",
  71 + "auto_renew_status": "",
  72 + "expiration_intent": "",
  73 + "grace_period_expires_date": "",
  74 + "grace_period_expires_date_ms": "",
  75 + "grace_period_expires_date_pst": "",
  76 + "is_in_billing_retry_period": "",
  77 + "original_transaction_id": "",
  78 + "price_consent_status": "",
  79 + "product_id": ""
  80 + }
  81 + ],
  82 + "receipt": {
  83 + "receipt_type": "ProductionSandbox",
  84 + "adam_id": 0,
  85 + "app_item_id": 0,
  86 + "bundle_id": "com.belive.app.ios",
  87 + "application_version": "3",
  88 + "download_id": 0,
  89 + "version_external_identifier": 0,
  90 + "receipt_creation_date": "2018-11-13 16:46:31 Etc/GMT",
  91 + "receipt_creation_date_ms": "1542127591000",
  92 + "receipt_creation_date_pst": "2018-11-13 08:46:31 America/Los_Angeles",
  93 + "request_date": "2018-11-13 17:10:31 Etc/GMT",
  94 + "request_date_ms": "1542129031280",
  95 + "request_date_pst": "2018-11-13 09:10:31 America/Los_Angeles",
  96 + "original_purchase_date": "2013-08-01 07:00:00 Etc/GMT",
  97 + "original_purchase_date_ms": "1375340400000",
  98 + "original_purchase_date_pst": "2013-08-01 00:00:00 America/Los_Angeles",
  99 + "expiration_date": "2013-08-01 00:00:00 America/Los_Angeles",
  100 + "original_application_version": "1.0",
  101 + "in_app": [
  102 + {
  103 + "quantity": "1",
  104 + "product_id": "test2",
  105 + "transaction_id": "1000000472106082",
  106 + "original_transaction_id": "1000000472106082",
  107 + "purchase_date": "2018-11-13 16:46:31 Etc/GMT",
  108 + "purchase_date_ms": "1542127591000",
  109 + "purchase_date_pst": "2018-11-13 08:46:31 America/Los_Angeles",
  110 + "original_purchase_date": "2018-11-13 16:46:31 Etc/GMT",
  111 + "original_purchase_date_ms": "1542127591000",
  112 + "original_purchase_date_pst": "2018-11-13 08:46:31 America/Los_Angeles",
  113 + "is_trial_period": "false"
  114 + }
  115 + ]
  116 + },
  117 + "status": "0",
  118 + "environment": "Sandbox"
  119 + }
  120 +
  121 + let responseError = {
  122 + "is-retryable": "",
  123 + "latest_receipt": "",
  124 + "latest_receipt_info": [],
  125 + "pending_renewal_info": [],
  126 + "receipt": {},
  127 + "status": "1",
  128 + "environment": "Sandbox"
  129 + }
  130 +
  131 + if (retrySuccess > 0 && !bypass) {
  132 + retrySuccess -= 1
  133 + res.send(responseError)
  134 + } else {
  135 + res.send(response)
  136 + }
  137 +}
... ...
config_partner.json 0 → 100644
  1 +++ a/config_partner.json
... ... @@ -0,0 +1,62 @@
  1 +{
  2 + "partner": [
  3 + {
  4 + "partnerCode": "0001",
  5 + "partnerName": "KTC",
  6 + "request": {
  7 + "protocol": "https",
  8 + "host": "10.137.19.81:30033",
  9 + "url": "/ktc/point/transferPoint",
  10 + "certificate": "/src/data/portal/public.cer",
  11 + "method": "POST",
  12 + "command": "transferIn",
  13 + "ContentType": "application/json",
  14 + "header": "sessionid=$x-session-id, appId=$x-app-id, Content-Type=application/json",
  15 + "body": "@pointIdList=$@pointId, customerId=$userIdData, transfer.transferFrom=$tran.pointIdFrom, transfer.transferTo=$tran.pointIdTo, transfer.pointTransfer=?tran.pointTransfer, createdAt=?createdAt, updatedAt=now()"
  16 + },
  17 + "response": {
  18 + "bodyValidation": "pushRefId=*",
  19 + "headerValidation": "statusCode=200"
  20 + }
  21 + },
  22 + {
  23 + "partnerCode": "0002",
  24 + "partnerName": "AIS",
  25 + "request": {
  26 + "protocol": "http",
  27 + "host": "10.137.19.81:30033",
  28 + "url": "/v1/customers/customerCharacteristic/spwCustomerAccounts.json",
  29 + "certificate": "",
  30 + "method": "POST",
  31 + "command": "CustomeAccounts",
  32 + "ContentType": "application/json",
  33 + "header": "sessionid=$x-session-id ",
  34 + "body": "customerId=$userIdData, transfer.transferFrom=$pointIdFrom, transfer.transferTo=$pointIdTo, transfer.pointTransfer=$pointTransfer"
  35 + },
  36 + "response": {
  37 + "bodyValidation": "resultCode=20000",
  38 + "headerValidation": "statusCode=200"
  39 + }
  40 + },
  41 + {
  42 + "partnerCode": "0003",
  43 + "partnerName": "SCB",
  44 + "request": {
  45 + "protocol": "http",
  46 + "host": "10.137.19.81:30033",
  47 + "url": "/mockOneSiamMoblieServiceSoap",
  48 + "certificate": "",
  49 + "method": "POST",
  50 + "command": "transferIn",
  51 + "ContentType": "text/xml",
  52 + "header": "sessionid=$x-session-id",
  53 + "body": "<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:tem=\"http://tempuri.org/\"><soapenv:Header/><soapenv:Body><tem:SearchCustomer><tem:SystemName>$appName.name</tem:SystemName><tem:Username>$userName</tem:Username><tem:Password>$password</tem:Password><tem:CitizenID>?citizenID</tem:CitizenID></tem:SearchCustomer></soapenv:Body></soapenv:Envelope>"
  54 + },
  55 + "response": {
  56 + "bodyValidation": "<tem:STATUSCODE>0</tem:STATUSCODE>",
  57 + "headerValidation": "statusCode=200"
  58 + }
  59 + }
  60 + ]
  61 +}
  62 +
... ...
d01.js 0 → 100644
  1 +++ a/d01.js
... ... @@ -0,0 +1,392 @@
  1 +module.exports.getCustomer = async (req, res) => {
  2 + console.log('===== GET Customer =====')
  3 + console.log('url', req.originalUrl);
  4 + console.log('headers', req.headers);
  5 + console.log('query', req.query);
  6 + console.log('params', req.params);
  7 +
  8 + let data = [
  9 + {
  10 + "enterpriseId": "$enterpriseId",
  11 + "customerId": "$customerId",
  12 + "userId": "$userId",
  13 + "firstName": "$firstName",
  14 + "lastName": "$lastName",
  15 + "mobile": "$mobile",
  16 + "emailAddress": "$emailAddress",
  17 + "gender": "$gender",
  18 + "birthdate": "$birthdate",
  19 + "barFlag": "$barFlag",
  20 + "userVerification": "$userVerification",
  21 + "updatedDate": "$updatedDate",
  22 + "createdDate": "$createdDate"
  23 + }
  24 + ]
  25 +
  26 + if (req.query.fields) {
  27 + let filteredFields = req.query.fields.split(',')
  28 + for (let d of data) {
  29 + for (key in d) {
  30 + if (!filteredFields.includes(key)) {
  31 + delete d[key]
  32 + }
  33 + }
  34 + }
  35 + }
  36 +
  37 + let response = {
  38 + "resultCode": "20000",
  39 + "resultDescription": "Success",
  40 + "resultData": data,
  41 + "rowCount": '' + data.length
  42 + }
  43 +
  44 + res.send(response)
  45 +}
  46 +
  47 +module.exports.postCustomer = async (req, res) => {
  48 + console.log('===== POST Customer =====')
  49 + console.log('url', req.originalUrl);
  50 + console.log('headers', req.headers);
  51 + console.log('query', req.query);
  52 + console.log('params', req.params);
  53 + console.log('body', req.body);
  54 +
  55 + let response = {
  56 + "resultCode": "20000",
  57 + "resultDescription": "Success"
  58 + }
  59 +
  60 + res.send(response)
  61 +}
  62 +
  63 +module.exports.putCustomer = async (req, res) => {
  64 + console.log('===== PUT Customer =====')
  65 + console.log('url', req.originalUrl);
  66 + console.log('headers', req.headers);
  67 + console.log('query', req.query);
  68 + console.log('params', req.params);
  69 + console.log('body', req.body);
  70 +
  71 + let response = {
  72 + "resultCode": "20000",
  73 + "resultDescription": "Success"
  74 + }
  75 +
  76 + res.send(response)
  77 +}
  78 +
  79 +module.exports.deleteCustomer = async (req, res) => {
  80 + console.log('===== DELETE Customer =====')
  81 + console.log('url', req.originalUrl);
  82 + console.log('headers', req.headers);
  83 + console.log('query', req.query);
  84 + console.log('params', req.params);
  85 + console.log('body', req.body);
  86 +
  87 + let response = {
  88 + "resultCode": "20000",
  89 + "resultDescription": "Success"
  90 + }
  91 +
  92 + // res.send(response)
  93 +}
  94 +
  95 +module.exports.getMemberLink = async (req, res) => {
  96 + console.log('===== GET MemberLink =====')
  97 + console.log('url', req.originalUrl);
  98 + console.log('headers', req.headers);
  99 + console.log('query', req.query);
  100 + console.log('params', req.params);
  101 +
  102 + let data = [
  103 + {
  104 + "enterpriseId": "$enterpriseId",
  105 + "memberLinkId": "$memberLinkId",
  106 + "customerId": "$customerId",
  107 + "memberId": "$memberId",
  108 + "memberCardId": "$memberCardId",
  109 + "activeStartDate": "$activeStartDate",
  110 + "activeEndDate": "$activeEndDate"
  111 + },
  112 + {
  113 + "enterpriseId": "$enterpriseId",
  114 + "memberLinkId": "$memberLinkId",
  115 + "customerId": "$customerId",
  116 + "memberId": "$memberId",
  117 + "memberCardId": "$memberCardId",
  118 + "activeStartDate": "$activeStartDate",
  119 + "activeEndDate": "$activeEndDate"
  120 + }
  121 + ]
  122 +
  123 + if (req.query.fields) {
  124 + let filteredFields = req.query.fields.split(',')
  125 + for (let d of data) {
  126 + for (key in d) {
  127 + if (!filteredFields.includes(key)) {
  128 + delete d[key]
  129 + }
  130 + }
  131 + }
  132 + }
  133 +
  134 + let response = {
  135 + "resultCode": "20000",
  136 + "resultDescription": "Success",
  137 + "resultData": data,
  138 + "rowCount": '' + data.length
  139 + }
  140 + res.send(response)
  141 +}
  142 +
  143 +module.exports.postMemberLink = async (req, res) => {
  144 + console.log('===== POST MemberLink =====')
  145 + console.log('url', req.originalUrl);
  146 + console.log('headers', req.headers);
  147 + console.log('query', req.query);
  148 + console.log('params', req.params);
  149 + console.log('body', req.body);
  150 +
  151 + let response = {
  152 + "resultCode": "20000",
  153 + "resultDescription": "Success"
  154 + }
  155 +
  156 + res.send(response)
  157 +}
  158 +
  159 +module.exports.putMemberLink = async (req, res) => {
  160 + console.log('===== PUT MemberLink =====')
  161 + console.log('url', req.originalUrl);
  162 + console.log('headers', req.headers);
  163 + console.log('query', req.query);
  164 + console.log('params', req.params);
  165 + console.log('body', req.body);
  166 +
  167 + let response = {
  168 + "resultCode": "20000",
  169 + "resultDescription": "Success"
  170 + }
  171 +
  172 + res.send(response)
  173 +}
  174 +
  175 +module.exports.deleteMemberLink = async (req, res) => {
  176 + console.log('===== DELETE MemberLink =====')
  177 + console.log('url', req.originalUrl);
  178 + console.log('headers', req.headers);
  179 + console.log('query', req.query);
  180 + console.log('params', req.params);
  181 + console.log('body', req.body);
  182 +
  183 + let response = {
  184 + "resultCode": "20000",
  185 + "resultDescription": "Success"
  186 + }
  187 +
  188 + res.send(response)
  189 +}
  190 +
  191 +module.exports.getAddress = async (req, res) => {
  192 + console.log('===== GET Address =====')
  193 + console.log('url', req.originalUrl);
  194 + console.log('headers', req.headers);
  195 + console.log('query', req.query);
  196 + console.log('params', req.params);
  197 +
  198 + let data = []
  199 +
  200 + for (let i = 0; i < 30; i++) {
  201 + data.push({
  202 + "enterpriseId": "$enterpriseId",
  203 + "customerId": "$customerId",
  204 + "addressId": (i + 1),
  205 + "addressType": "$addressType",
  206 + "addressInfo": "$addressInfo",
  207 + "postcode": "$postcode",
  208 + "defaultFlag": "$defaultFlag",
  209 + "updatedDate": "$updatedDate",
  210 + "createdDate": "$createdDate"
  211 + })
  212 + }
  213 +
  214 + if (req.query.fields) {
  215 + let filteredFields = req.query.fields.split(',')
  216 + for (let d of data) {
  217 + for (key in d) {
  218 + if (!filteredFields.includes(key)) {
  219 + delete d[key]
  220 + }
  221 + }
  222 + }
  223 + }
  224 +
  225 + let resultData = data
  226 +
  227 + if (req.query.offset) {
  228 + resultData = resultData.slice(+req.query.offset)
  229 + }
  230 +
  231 + if (req.query.limit) {
  232 + resultData = resultData.slice(0, +req.query.limit)
  233 + }
  234 +
  235 + let response = {
  236 + "resultCode": "20000",
  237 + "resultDescription": "Success",
  238 + "resultData": resultData,
  239 + "rowCount": '' + data.length
  240 + }
  241 +
  242 + res.send(response)
  243 +}
  244 +
  245 +module.exports.postAddress = async (req, res) => {
  246 + console.log('===== POST Address =====')
  247 + console.log('url', req.originalUrl);
  248 + console.log('headers', req.headers);
  249 + console.log('query', req.query);
  250 + console.log('params', req.params);
  251 + console.log('body', req.body);
  252 +
  253 + let response = {
  254 + "resultCode": "20000",
  255 + "resultDescription": "Success"
  256 + }
  257 +
  258 + res.send(response)
  259 +}
  260 +
  261 +module.exports.putAddress = async (req, res) => {
  262 + console.log('===== PUT Address =====')
  263 + console.log('url', req.originalUrl);
  264 + console.log('headers', req.headers);
  265 + console.log('query', req.query);
  266 + console.log('params', req.params);
  267 + console.log('body', req.body);
  268 +
  269 + let response = {
  270 + "resultCode": "20000",
  271 + "resultDescription": "Success"
  272 + }
  273 +
  274 + res.send(response)
  275 +}
  276 +
  277 +module.exports.deleteAddress = async (req, res) => {
  278 + console.log('===== DELETE Address =====')
  279 + console.log('url', req.originalUrl);
  280 + console.log('headers', req.headers);
  281 + console.log('query', req.query);
  282 + console.log('params', req.params);
  283 + console.log('body', req.body);
  284 +
  285 + let response = {
  286 + "resultCode": "20000",
  287 + "resultDescription": "Success"
  288 + }
  289 +
  290 + res.send(response)
  291 +}
  292 +
  293 +module.exports.getMasterMember = async (req, res) => {
  294 + console.log('===== GET Address =====')
  295 + console.log('url', req.originalUrl);
  296 + console.log('headers', req.headers);
  297 + console.log('query', req.query);
  298 + console.log('params', req.params);
  299 +
  300 + let data = []
  301 +
  302 + for (let i = 0; i < 30; i++) {
  303 + data.push({
  304 + "enterpriseId": "$enterpriseId",
  305 + "memberId": (i + 1),
  306 + "memberType": "$memberType",
  307 + "subMemberType": "$subMemberType",
  308 + "memberDescription": "$memberDescription",
  309 + "updatedBy": "$updatedBy",
  310 + "updatedDate": "$updatedDate",
  311 + "createdBy": "$createdBy",
  312 + "createdDate": "$createdDate" })
  313 + }
  314 +
  315 + if (req.query.fields) {
  316 + let filteredFields = req.query.fields.split(',')
  317 + for (let d of data) {
  318 + for (key in d) {
  319 + if (!filteredFields.includes(key)) {
  320 + delete d[key]
  321 + }
  322 + }
  323 + }
  324 + }
  325 +
  326 + let resultData = data
  327 +
  328 + if (req.query.offset) {
  329 + resultData = resultData.slice(+req.query.offset)
  330 + }
  331 +
  332 + if (req.query.limit) {
  333 + resultData = resultData.slice(0, +req.query.limit)
  334 + }
  335 +
  336 + let response = {
  337 + "resultCode": "20000",
  338 + "resultDescription": "Success",
  339 + "resultData": resultData,
  340 + "rowCount": '' + data.length
  341 + }
  342 +
  343 + res.send(response)
  344 +}
  345 +
  346 +module.exports.postMasterMember = async (req, res) => {
  347 + console.log('===== POST MasterMember =====')
  348 + console.log('url', req.originalUrl);
  349 + console.log('headers', req.headers);
  350 + console.log('query', req.query);
  351 + console.log('params', req.params);
  352 + console.log('body', req.body);
  353 +
  354 + let response = {
  355 + "resultCode": "20000",
  356 + "resultDescription": "Success"
  357 + }
  358 +
  359 + res.send(response)
  360 +}
  361 +
  362 +module.exports.putMasterMember = async (req, res) => {
  363 + console.log('===== PUT MasterMember =====')
  364 + console.log('url', req.originalUrl);
  365 + console.log('headers', req.headers);
  366 + console.log('query', req.query);
  367 + console.log('params', req.params);
  368 + console.log('body', req.body);
  369 +
  370 + let response = {
  371 + "resultCode": "20000",
  372 + "resultDescription": "Success"
  373 + }
  374 +
  375 + res.send(response)
  376 +}
  377 +
  378 +module.exports.deleteMasterMember = async (req, res) => {
  379 + console.log('===== DELETE MasterMember =====')
  380 + console.log('url', req.originalUrl);
  381 + console.log('headers', req.headers);
  382 + console.log('query', req.query);
  383 + console.log('params', req.params);
  384 + console.log('body', req.body);
  385 +
  386 + let response = {
  387 + "resultCode": "20000",
  388 + "resultDescription": "Success"
  389 + }
  390 +
  391 + res.send(response)
  392 +}
0 393 \ No newline at end of file
... ...
gsso.js 0 → 100644
  1 +++ a/gsso.js
... ... @@ -0,0 +1,48 @@
  1 +module.exports.sendOneTimePassword = async (req, res) => {
  2 + console.log('===== POST sendOneTimePassword =====')
  3 + console.log('url', req.originalUrl);
  4 + console.log('headers', req.headers);
  5 + console.log('query', req.query);
  6 + console.log('params', req.params);
  7 + console.log('body', req.body);
  8 +
  9 + let response = {
  10 + "sendOneTimePWResponse": {
  11 + "code": "2000",
  12 + "description": "SUCCESS",
  13 + "isSuccess": "true",
  14 + "orderRef": "0720160428073728988",
  15 + "transactionID": "MdAiNf4OmyOJWLa63M",
  16 + "referenceNumber": "2954",
  17 + "operName": "AIS",
  18 + "lifeTimeoutMins": "10",
  19 + "expirePassword": "28/04/2016 07:47:28"
  20 + }
  21 + }
  22 +
  23 + res.status(200).send(response)
  24 +}
  25 +
  26 +module.exports.confirmOneTimePassword = async (req, res) => {
  27 + console.log('===== POST confirmOneTimePassword =====')
  28 + console.log('url', req.originalUrl);
  29 + console.log('headers', req.headers);
  30 + console.log('query', req.query);
  31 + console.log('params', req.params);
  32 + console.log('body', req.body);
  33 +
  34 + let response = {
  35 + "confirmOneTimePWResponse": {
  36 + "code": "2000",
  37 + "description": "SUCCESS",
  38 + "isSuccess": "True",
  39 + "orderRef": "0720160428074409309",
  40 + "operName": "AIS",
  41 + "expirePassword": "28/04/2016 07:54:08",
  42 + "transactionID": "8HiefBiD14Ae65eiwp"
  43 + }
  44 +}
  45 +
  46 +
  47 + res.status(200).send(response)
  48 +}
... ...
nafa.js 0 → 100644
  1 +++ a/nafa.js
... ... @@ -0,0 +1,41 @@
  1 +module.exports.packagePayment = async (req, res) => {
  2 + console.log('===== POST packagePayment =====')
  3 + console.log('url', req.originalUrl);
  4 + console.log('headers', req.headers);
  5 + console.log('query', req.query);
  6 + console.log('params', req.params);
  7 + console.log('body', req.body);
  8 +
  9 + let response = {
  10 + "resultCode": 200,
  11 + "resultMessage": "Success",
  12 + "data": {
  13 + "statusCode": "003",
  14 + "statusDescription": "Purchase package successfully"
  15 + }
  16 + }
  17 +
  18 +
  19 + res.send(response)
  20 +}
  21 +
  22 +module.exports.cancelPackage = async (req, res) => {
  23 + console.log('===== POST cancelPackage =====')
  24 + console.log('url', req.originalUrl);
  25 + console.log('headers', req.headers);
  26 + console.log('query', req.query);
  27 + console.log('params', req.params);
  28 + console.log('body', req.body);
  29 +
  30 + let response = {
  31 + "resultCode": 200,
  32 + "resultMessage": "Success",
  33 + "data": {
  34 + "statusCode": "003",
  35 + "statusDescription": "DSMP returned Delete Package success."
  36 + }
  37 + }
  38 +
  39 +
  40 + res.status(502).send(response)
  41 +}
... ...
package-lock.json 0 → 100644
  1 +++ a/package-lock.json
... ... @@ -0,0 +1,2297 @@
  1 +{
  2 + "name": "funtion_req_partner",
  3 + "version": "1.0.0",
  4 + "lockfileVersion": 1,
  5 + "requires": true,
  6 + "dependencies": {
  7 + "@types/node": {
  8 + "version": "8.10.59",
  9 + "resolved": "https://registry.npmjs.org/@types/node/-/node-8.10.59.tgz",
  10 + "integrity": "sha512-8RkBivJrDCyPpBXhVZcjh7cQxVBSmRk9QM7hOketZzp6Tg79c0N8kkpAIito9bnJ3HCVCHVYz+KHTEbfQNfeVQ=="
  11 + },
  12 + "accepts": {
  13 + "version": "1.3.7",
  14 + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.7.tgz",
  15 + "integrity": "sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA==",
  16 + "requires": {
  17 + "mime-types": "~2.1.24",
  18 + "negotiator": "0.6.2"
  19 + }
  20 + },
  21 + "adal-node": {
  22 + "version": "0.1.28",
  23 + "resolved": "https://registry.npmjs.org/adal-node/-/adal-node-0.1.28.tgz",
  24 + "integrity": "sha1-RoxLs+u9lrEnBmn0ucuk4AZepIU=",
  25 + "requires": {
  26 + "@types/node": "^8.0.47",
  27 + "async": ">=0.6.0",
  28 + "date-utils": "*",
  29 + "jws": "3.x.x",
  30 + "request": ">= 2.52.0",
  31 + "underscore": ">= 1.3.1",
  32 + "uuid": "^3.1.0",
  33 + "xmldom": ">= 0.1.x",
  34 + "xpath.js": "~1.1.0"
  35 + }
  36 + },
  37 + "ajv": {
  38 + "version": "6.12.0",
  39 + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.0.tgz",
  40 + "integrity": "sha512-D6gFiFA0RRLyUbvijN74DWAjXSFxWKaWP7mldxkVhyhAV3+SWA9HEJPHQ2c9soIeTFJqcSdFDGFgdqs1iUU2Hw==",
  41 + "requires": {
  42 + "fast-deep-equal": "^3.1.1",
  43 + "fast-json-stable-stringify": "^2.0.0",
  44 + "json-schema-traverse": "^0.4.1",
  45 + "uri-js": "^4.2.2"
  46 + }
  47 + },
  48 + "array-flatten": {
  49 + "version": "1.1.1",
  50 + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz",
  51 + "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI="
  52 + },
  53 + "asn1": {
  54 + "version": "0.2.4",
  55 + "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz",
  56 + "integrity": "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==",
  57 + "requires": {
  58 + "safer-buffer": "~2.1.0"
  59 + }
  60 + },
  61 + "assert-plus": {
  62 + "version": "1.0.0",
  63 + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz",
  64 + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU="
  65 + },
  66 + "async": {
  67 + "version": "2.6.0",
  68 + "resolved": "https://registry.npmjs.org/async/-/async-2.6.0.tgz",
  69 + "integrity": "sha512-xAfGg1/NTLBBKlHFmnd7PlmUW9KhVQIUuSrYem9xzFUZy13ScvtyGGejaae9iAVRiRq9+Cx7DPFaAAhCpyxyPw==",
  70 + "requires": {
  71 + "lodash": "^4.14.0"
  72 + }
  73 + },
  74 + "asynckit": {
  75 + "version": "0.4.0",
  76 + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz",
  77 + "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k="
  78 + },
  79 + "aws-sign2": {
  80 + "version": "0.7.0",
  81 + "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz",
  82 + "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg="
  83 + },
  84 + "aws4": {
  85 + "version": "1.9.1",
  86 + "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.9.1.tgz",
  87 + "integrity": "sha512-wMHVg2EOHaMRxbzgFJ9gtjOOCrI80OHLG14rxi28XwOW8ux6IiEbRCGGGqCtdAIg4FQCbW20k9RsT4y3gJlFug=="
  88 + },
  89 + "azure": {
  90 + "version": "2.3.1-preview",
  91 + "resolved": "https://registry.npmjs.org/azure/-/azure-2.3.1-preview.tgz",
  92 + "integrity": "sha512-4GmbdzqbocOLgASGbBZuNA5rwU3szCaoyTS95s2DcwkTnv28Ong4/HeKTv9GX9ib1ueNv26AbrK/EmyiGY65Zg==",
  93 + "requires": {
  94 + "azure-arm-advisor": "^1.1.0",
  95 + "azure-arm-analysisservices": "^2.2.1-preview",
  96 + "azure-arm-apimanagement": "^2.1.1-preview",
  97 + "azure-arm-appinsights": "^1.2.1-preview",
  98 + "azure-arm-authorization": "^5.0.0",
  99 + "azure-arm-automation": "^4.0.0-preview",
  100 + "azure-arm-batch": "^3.1.0",
  101 + "azure-arm-billing": "^2.1.0",
  102 + "azure-arm-cdn": "^4.0.1",
  103 + "azure-arm-cognitiveservices": "^2.1.0",
  104 + "azure-arm-commerce": "^2.0.0",
  105 + "azure-arm-compute": "^5.1.1",
  106 + "azure-arm-consumption": "^4.0.0",
  107 + "azure-arm-containerinstance": "^2.0.0",
  108 + "azure-arm-containerregistry": "^2.2.0",
  109 + "azure-arm-containerservice": "^2.0.0",
  110 + "azure-arm-cosmosdb": "^1.1.2",
  111 + "azure-arm-customerinsights": "^3.0.0",
  112 + "azure-arm-datafactory": "^2.0.1",
  113 + "azure-arm-datalake-analytics": "^3.0.0-preview",
  114 + "azure-arm-datalake-store": "^3.0.0-preview",
  115 + "azure-arm-devtestlabs": "^2.1.1",
  116 + "azure-arm-dns": "^2.1.0",
  117 + "azure-arm-domainservices": "^1.1.0",
  118 + "azure-arm-eventgrid": "^1.3.0",
  119 + "azure-arm-eventhub": "^1.3.0",
  120 + "azure-arm-hdinsight": "^0.3.0",
  121 + "azure-arm-hdinsight-jobs": "^0.1.1",
  122 + "azure-arm-iothub": "^1.1.0-preview",
  123 + "azure-arm-keyvault": "^1.1.2-preview",
  124 + "azure-arm-logic": "^1.1.0-preview",
  125 + "azure-arm-machinelearning": "^1.1.0-preview",
  126 + "azure-arm-machinelearningcompute": "^1.0.0-preview",
  127 + "azure-arm-marketplaceordering": "^1.1.0-preview",
  128 + "azure-arm-mediaservices": "^2.0.0",
  129 + "azure-arm-mobileengagement": "^1.0.0-preview",
  130 + "azure-arm-monitor": "^2.0.0-preview",
  131 + "azure-arm-mysql": "^3.0.0",
  132 + "azure-arm-network": "^5.3.0",
  133 + "azure-arm-notificationhubs": "^1.1.0",
  134 + "azure-arm-operationalinsights": "^1.1.0",
  135 + "azure-arm-operations": "^1.0.0-preview",
  136 + "azure-arm-postgresql": "^4.0.0",
  137 + "azure-arm-powerbiembedded": "^1.1.0-preview",
  138 + "azure-arm-recoveryservices": "^2.0.1-preview",
  139 + "azure-arm-recoveryservices-siterecovery": "^2.0.0-preview",
  140 + "azure-arm-recoveryservicesbackup": "^2.0.1-preview",
  141 + "azure-arm-rediscache": "^2.0.0-preview",
  142 + "azure-arm-relay": "^2.0.0-preview",
  143 + "azure-arm-resource": "^3.1.1-preview",
  144 + "azure-arm-resourcehealth": "^1.0.0-preview",
  145 + "azure-arm-sb": "^2.2.0-preview",
  146 + "azure-arm-scheduler": "^1.2.0-preview",
  147 + "azure-arm-search": "^1.1.0-preview",
  148 + "azure-arm-servermanagement": "^1.1.0",
  149 + "azure-arm-servicefabric": "^2.0.0-preview",
  150 + "azure-arm-servicemap": "^2.0.0",
  151 + "azure-arm-sql": "^3.0.0",
  152 + "azure-arm-storage": "^5.0.0",
  153 + "azure-arm-storageimportexport": "^1.1.0",
  154 + "azure-arm-storsimple8000series": "^1.0.0-preview",
  155 + "azure-arm-streamanalytics": "^1.0.0-preview",
  156 + "azure-arm-trafficmanager": "^3.0.0",
  157 + "azure-arm-visualstudio": "^1.0.0-preview",
  158 + "azure-arm-website": "^3.0.0-preview",
  159 + "azure-asm-compute": "^0.18.0",
  160 + "azure-asm-hdinsight": "^0.10.3",
  161 + "azure-asm-mgmt": "^0.10.2",
  162 + "azure-asm-network": "^0.13.1",
  163 + "azure-asm-sb": "^0.10.2",
  164 + "azure-asm-scheduler": "^0.10.2",
  165 + "azure-asm-sql": "^0.10.3",
  166 + "azure-asm-storage": "^0.12.1",
  167 + "azure-asm-store": "^0.10.2",
  168 + "azure-asm-subscription": "^0.10.2",
  169 + "azure-asm-trafficmanager": "^0.10.4",
  170 + "azure-asm-website": "^0.10.7",
  171 + "azure-batch": "^3.2.2",
  172 + "azure-common": "^0.9.20",
  173 + "azure-extra": "^0.2.14",
  174 + "azure-gallery": "^2.0.0-pre.20",
  175 + "azure-graph": "^2.2.0",
  176 + "azure-keyvault": "^3.0.4-preview",
  177 + "azure-loganalytics": "^0.1.0",
  178 + "azure-monitoring": "^0.10.6",
  179 + "azure-sb": "^0.10.6",
  180 + "azure-scheduler": "^0.10.4",
  181 + "azure-servicefabric": "^2.0.0-preview",
  182 + "azure-storage": "^2.9.0-preview",
  183 + "azure-storage-legacy": "^0.10.3",
  184 + "mime": "^1.6.0",
  185 + "moment": "^2.22.2",
  186 + "ms-rest": "^2.3.0",
  187 + "ms-rest-azure": "^2.5.0",
  188 + "request": "^2.81.0",
  189 + "underscore": "1.8.3",
  190 + "uuid": "^3.0.1"
  191 + }
  192 + },
  193 + "azure-arm-advisor": {
  194 + "version": "1.2.0",
  195 + "resolved": "https://registry.npmjs.org/azure-arm-advisor/-/azure-arm-advisor-1.2.0.tgz",
  196 + "integrity": "sha512-zmdXFoKXd9t1mnOGo6KwTvb7ZQIJ+HuRGPVGck84CdZAVtpOrWR2Gh2ZwJ9l9cYl+4JkueFaV336coYsPiIVGw==",
  197 + "requires": {
  198 + "ms-rest": "^2.2.2",
  199 + "ms-rest-azure": "^2.3.3"
  200 + }
  201 + },
  202 + "azure-arm-analysisservices": {
  203 + "version": "2.3.0",
  204 + "resolved": "https://registry.npmjs.org/azure-arm-analysisservices/-/azure-arm-analysisservices-2.3.0.tgz",
  205 + "integrity": "sha512-hPi56JmxwsYrj6r+h1ZQely4wu/J43KdxI5hTPGV/HKtSh0/0zyZn5bUk9ON2nEvexdpsAiiAuoPTxoQk219nw==",
  206 + "requires": {
  207 + "ms-rest": "^2.3.3",
  208 + "ms-rest-azure": "^2.5.5"
  209 + }
  210 + },
  211 + "azure-arm-apimanagement": {
  212 + "version": "2.1.1-preview",
  213 + "resolved": "https://registry.npmjs.org/azure-arm-apimanagement/-/azure-arm-apimanagement-2.1.1-preview.tgz",
  214 + "integrity": "sha512-Q5Q+yaTiHshyJXnfy/PxCFHLiEKXlZozR+QM/OrVhp7PT4NOTAFhsDnHFxEIMLOC6uHbiWb1aQ7nOnVD6rcdwQ==",
  215 + "requires": {
  216 + "ms-rest": "^2.3.2",
  217 + "ms-rest-azure": "^2.5.5"
  218 + }
  219 + },
  220 + "azure-arm-appinsights": {
  221 + "version": "1.2.1-preview",
  222 + "resolved": "https://registry.npmjs.org/azure-arm-appinsights/-/azure-arm-appinsights-1.2.1-preview.tgz",
  223 + "integrity": "sha512-3SQ4UDo1TStfM0Guu/oC3nYEihNH+qIB5sTP1e3OdVeSp4GRsRBRdQXTsPrDzaJGHcjo3M96chWhBpbuDIMGQQ==",
  224 + "requires": {
  225 + "ms-rest": "^2.3.2",
  226 + "ms-rest-azure": "^2.5.5"
  227 + }
  228 + },
  229 + "azure-arm-authorization": {
  230 + "version": "5.0.0",
  231 + "resolved": "https://registry.npmjs.org/azure-arm-authorization/-/azure-arm-authorization-5.0.0.tgz",
  232 + "integrity": "sha512-DD+AS3Zg0TxyHbxo3Aa5/VAauoxYLUWvdCE57VCCzaUCPlxcCf4XxKN34YNayMO+4cuNk3WOOGATQdwbhvdoEA==",
  233 + "requires": {
  234 + "ms-rest": "^2.3.2",
  235 + "ms-rest-azure": "^2.5.5"
  236 + }
  237 + },
  238 + "azure-arm-automation": {
  239 + "version": "4.0.0-preview",
  240 + "resolved": "https://registry.npmjs.org/azure-arm-automation/-/azure-arm-automation-4.0.0-preview.tgz",
  241 + "integrity": "sha512-hnmIxxMcvJ2VSFTlQ8OEq51/hhOXjM/c5V9qbtPMjuzG3E4er5qNE777wjpPrfhW8ZQ7U0Tvu6EMpRS1gs/Mhg==",
  242 + "requires": {
  243 + "ms-rest": "^2.3.2",
  244 + "ms-rest-azure": "^2.5.5"
  245 + }
  246 + },
  247 + "azure-arm-batch": {
  248 + "version": "3.2.0",
  249 + "resolved": "https://registry.npmjs.org/azure-arm-batch/-/azure-arm-batch-3.2.0.tgz",
  250 + "integrity": "sha512-DDfgAiRruGAiL8Yot5nufG3O8GLA0r5lf1CGYhuF8pEzQ+vYfhLpgJzme7LPh3ASPb8UBSVYHm1IK4W4StvVnw==",
  251 + "requires": {
  252 + "ms-rest": "^2.3.3",
  253 + "ms-rest-azure": "^2.5.5"
  254 + }
  255 + },
  256 + "azure-arm-billing": {
  257 + "version": "2.2.0",
  258 + "resolved": "https://registry.npmjs.org/azure-arm-billing/-/azure-arm-billing-2.2.0.tgz",
  259 + "integrity": "sha512-TPxEquzJ1c2E34m4SLL8i8M2Yn/cQF5Q2D7JF6cZNOEAYQsdCN0K+Yaw9js21GV5M1mA55JNHkSdLWb/EME4jQ==",
  260 + "requires": {
  261 + "ms-rest": "^2.3.2",
  262 + "ms-rest-azure": "^2.5.5"
  263 + }
  264 + },
  265 + "azure-arm-cdn": {
  266 + "version": "4.2.0",
  267 + "resolved": "https://registry.npmjs.org/azure-arm-cdn/-/azure-arm-cdn-4.2.0.tgz",
  268 + "integrity": "sha512-DkpLntvqHtCLbf7p/qqLS0eJluZtsb8gU65deJYiMz4OFQco+InP9giCVnY8gElW3QbMaqKyHOJCDK7NllKMoA==",
  269 + "requires": {
  270 + "ms-rest": "^2.5.0",
  271 + "ms-rest-azure": "^2.5.5"
  272 + }
  273 + },
  274 + "azure-arm-cognitiveservices": {
  275 + "version": "2.4.1",
  276 + "resolved": "https://registry.npmjs.org/azure-arm-cognitiveservices/-/azure-arm-cognitiveservices-2.4.1.tgz",
  277 + "integrity": "sha512-fwxii7QjYbeHhB7hwhGQ7mxpqqZNOtyp4lTr0cM+COqNCuXCpt13fbwp16NoH5yTixh8HSh91qo31dfe4Rx4oQ==",
  278 + "requires": {
  279 + "ms-rest": "^2.3.3",
  280 + "ms-rest-azure": "^2.5.5"
  281 + }
  282 + },
  283 + "azure-arm-commerce": {
  284 + "version": "2.1.0",
  285 + "resolved": "https://registry.npmjs.org/azure-arm-commerce/-/azure-arm-commerce-2.1.0.tgz",
  286 + "integrity": "sha512-zhZ9b1Comp1Owa8/Pn7ORTL0l+uX9elz5A5yOoL/XdYXC8S6bN2QaiRLPmue9ZB55qGE1Tn7Cf+KRlpskL17hQ==",
  287 + "requires": {
  288 + "ms-rest": "^2.3.2",
  289 + "ms-rest-azure": "^2.5.5"
  290 + }
  291 + },
  292 + "azure-arm-compute": {
  293 + "version": "5.1.1",
  294 + "resolved": "https://registry.npmjs.org/azure-arm-compute/-/azure-arm-compute-5.1.1.tgz",
  295 + "integrity": "sha512-aO9/4xD84q5AqfPWPtIrZE+R3O2bZBZ54APKJsQk/WrFawJwXvROhYzaK/k4nm8girNejErFnTjUTOnw62RiXg==",
  296 + "requires": {
  297 + "ms-rest": "^2.3.2",
  298 + "ms-rest-azure": "^2.5.5"
  299 + }
  300 + },
  301 + "azure-arm-consumption": {
  302 + "version": "4.0.0",
  303 + "resolved": "https://registry.npmjs.org/azure-arm-consumption/-/azure-arm-consumption-4.0.0.tgz",
  304 + "integrity": "sha512-SEktTAcv5JAuHoiadY8bbvw4Gnqcc2JUQ1Mr14yvTkxxv6cm2tDaQd22yymuOvzBH4Pym4TliNPcWy94TE7uNw==",
  305 + "requires": {
  306 + "ms-rest": "^2.3.2",
  307 + "ms-rest-azure": "^2.5.5"
  308 + }
  309 + },
  310 + "azure-arm-containerinstance": {
  311 + "version": "2.0.0",
  312 + "resolved": "https://registry.npmjs.org/azure-arm-containerinstance/-/azure-arm-containerinstance-2.0.0.tgz",
  313 + "integrity": "sha512-g12u5jbIoOM4wiNdC979jWeNDQxYRmHEzLD23ouIIWSp0mJ+xuWftrUa8qWVj6akZ97CNYpExZ4RBLZZmmEQvQ==",
  314 + "requires": {
  315 + "ms-rest": "^2.3.2",
  316 + "ms-rest-azure": "^2.5.5"
  317 + }
  318 + },
  319 + "azure-arm-containerregistry": {
  320 + "version": "2.4.1",
  321 + "resolved": "https://registry.npmjs.org/azure-arm-containerregistry/-/azure-arm-containerregistry-2.4.1.tgz",
  322 + "integrity": "sha512-Qu4mEG0nVTmGY4081dERyrwxrc8SyNW7HxkWyuaklwnZKabRFv9vLe+Wg2tiwThx0T9b/t4WvWm6XNQaL2olMw==",
  323 + "requires": {
  324 + "ms-rest": "^2.3.3",
  325 + "ms-rest-azure": "^2.5.5"
  326 + }
  327 + },
  328 + "azure-arm-containerservice": {
  329 + "version": "2.0.0",
  330 + "resolved": "https://registry.npmjs.org/azure-arm-containerservice/-/azure-arm-containerservice-2.0.0.tgz",
  331 + "integrity": "sha512-MvbmSM5LpXOfkHvp+1NOCyiz0n2eyj4v3MmA7vagEf6pAaChbkfShxwO2ShS7gaw69wZHoNa0eWH4x/fUWJiew==",
  332 + "requires": {
  333 + "ms-rest": "^2.3.2",
  334 + "ms-rest-azure": "^2.5.5"
  335 + }
  336 + },
  337 + "azure-arm-cosmosdb": {
  338 + "version": "1.1.2",
  339 + "resolved": "https://registry.npmjs.org/azure-arm-cosmosdb/-/azure-arm-cosmosdb-1.1.2.tgz",
  340 + "integrity": "sha512-NdjUeSoNzV2Ljajomy7mQW8WrbysGg6jPpTGztlpyLgGCBFMO9llvzKCoRTNMs9Van50lrJrmcbhbJNFn3PPjw==",
  341 + "requires": {
  342 + "ms-rest": "^2.3.2",
  343 + "ms-rest-azure": "^2.5.5"
  344 + }
  345 + },
  346 + "azure-arm-customerinsights": {
  347 + "version": "3.1.0",
  348 + "resolved": "https://registry.npmjs.org/azure-arm-customerinsights/-/azure-arm-customerinsights-3.1.0.tgz",
  349 + "integrity": "sha512-iiBC6eRhv7mUw674wct+af5BIhOOcqb4e6E7hxwBv/ko5AwAi9yrOYQfRII0QunkwlCGFORcfnazh1Uk+19bQA==",
  350 + "requires": {
  351 + "ms-rest": "^2.3.2",
  352 + "ms-rest-azure": "^2.5.5"
  353 + }
  354 + },
  355 + "azure-arm-datafactory": {
  356 + "version": "2.1.0",
  357 + "resolved": "https://registry.npmjs.org/azure-arm-datafactory/-/azure-arm-datafactory-2.1.0.tgz",
  358 + "integrity": "sha512-w/MtwhMBSu1EhhdTwwX3QnFQbE1c8ZUrofDq4jhOuL83belqxr89wzxRfz24Gbmi+Sn0K5RsqmM41y74y7pm9g==",
  359 + "requires": {
  360 + "ms-rest": "^2.3.3",
  361 + "ms-rest-azure": "^2.5.5"
  362 + }
  363 + },
  364 + "azure-arm-datalake-analytics": {
  365 + "version": "3.0.0-preview",
  366 + "resolved": "https://registry.npmjs.org/azure-arm-datalake-analytics/-/azure-arm-datalake-analytics-3.0.0-preview.tgz",
  367 + "integrity": "sha512-P5zt3SFGlsfIJqDkUDfZ4a/bntZczIw2k4PfP6ONLxWEUGMpN1axc/UMCllrT7sFMDYaD0fCa80LDwD7SsGzXg==",
  368 + "requires": {
  369 + "ms-rest": "^2.2.2",
  370 + "ms-rest-azure": "^2.3.3"
  371 + }
  372 + },
  373 + "azure-arm-datalake-store": {
  374 + "version": "3.0.0-preview",
  375 + "resolved": "https://registry.npmjs.org/azure-arm-datalake-store/-/azure-arm-datalake-store-3.0.0-preview.tgz",
  376 + "integrity": "sha512-wP23AuH6+fWD6l6OCbc+wwkNXQgzxC41qY8AKhbrl0x9bd1UU4GmCGxdUb8rES8dgjdoAee0g+FbWzXuzyK47w==",
  377 + "requires": {
  378 + "ms-rest": "^2.2.2",
  379 + "ms-rest-azure": "^2.3.3"
  380 + }
  381 + },
  382 + "azure-arm-devtestlabs": {
  383 + "version": "2.1.1",
  384 + "resolved": "https://registry.npmjs.org/azure-arm-devtestlabs/-/azure-arm-devtestlabs-2.1.1.tgz",
  385 + "integrity": "sha512-S5dCYTMrqL+BJc699fIQtXwLFuv5m8jTDqPdXTFpn/CSkyBcOyJwuZH2zPExQjGNZTyjIR6GWi8oeg/IpYLBWw==",
  386 + "requires": {
  387 + "ms-rest": "^2.3.2",
  388 + "ms-rest-azure": "^2.5.5"
  389 + }
  390 + },
  391 + "azure-arm-dns": {
  392 + "version": "2.1.0",
  393 + "resolved": "https://registry.npmjs.org/azure-arm-dns/-/azure-arm-dns-2.1.0.tgz",
  394 + "integrity": "sha512-/y0tOM9qNijPYqB381JFYiEyfF+L5B8z+F8JS1OMV1JXIb45vZKXeoe82ZNMZ5g38Vme3uAblxpvp5OtIcvW6Q==",
  395 + "requires": {
  396 + "ms-rest": "^2.3.2",
  397 + "ms-rest-azure": "^2.5.5"
  398 + }
  399 + },
  400 + "azure-arm-domainservices": {
  401 + "version": "1.1.0",
  402 + "resolved": "https://registry.npmjs.org/azure-arm-domainservices/-/azure-arm-domainservices-1.1.0.tgz",
  403 + "integrity": "sha512-aaCLwjWljcEJzgMfwmwHask7g1F+6T2FfB5oGYCvLI4r97+XnaXYsS1NZDzJupBkBA0HUdH+el30gyrdyP25NA==",
  404 + "requires": {
  405 + "ms-rest": "^2.3.2",
  406 + "ms-rest-azure": "^2.5.5"
  407 + }
  408 + },
  409 + "azure-arm-eventgrid": {
  410 + "version": "1.5.0",
  411 + "resolved": "https://registry.npmjs.org/azure-arm-eventgrid/-/azure-arm-eventgrid-1.5.0.tgz",
  412 + "integrity": "sha512-5gxyByhoE54dkAWgjy9k3mG4HmiHXkbUExEIU9CvkHa5iMkQUZFYvDOMA3B9TjYkmDPH8omv5n9ac/KMZ5V4ZQ==",
  413 + "requires": {
  414 + "ms-rest": "^2.3.3",
  415 + "ms-rest-azure": "^2.5.5"
  416 + }
  417 + },
  418 + "azure-arm-eventhub": {
  419 + "version": "1.3.0",
  420 + "resolved": "https://registry.npmjs.org/azure-arm-eventhub/-/azure-arm-eventhub-1.3.0.tgz",
  421 + "integrity": "sha512-FyOXlXm6MuaIsJLCAHmyDUQwHU9Y2ztJTUnAHaXXZWAwy3YlvxNo6tbLXbrFvCjiGmyunW0kK+uNFtmQcFbX7Q==",
  422 + "requires": {
  423 + "ms-rest": "^2.3.2",
  424 + "ms-rest-azure": "^2.5.5"
  425 + }
  426 + },
  427 + "azure-arm-hdinsight": {
  428 + "version": "0.3.0",
  429 + "resolved": "https://registry.npmjs.org/azure-arm-hdinsight/-/azure-arm-hdinsight-0.3.0.tgz",
  430 + "integrity": "sha512-1lJaqHN9kGW/BO/WfE+OTrlr5FJ8tsa+TdT160Y2OfntHTZxIDLkMHK2JdHMMIlEAf73v4Q3zM9AIFjq94hA1A==",
  431 + "requires": {
  432 + "ms-rest": "^2.3.3",
  433 + "ms-rest-azure": "^2.5.5"
  434 + }
  435 + },
  436 + "azure-arm-hdinsight-jobs": {
  437 + "version": "0.1.1",
  438 + "resolved": "https://registry.npmjs.org/azure-arm-hdinsight-jobs/-/azure-arm-hdinsight-jobs-0.1.1.tgz",
  439 + "integrity": "sha1-ea0eK12W9yOj5K/DqIj4Eu+ilBg=",
  440 + "requires": {
  441 + "azure-common": "^0.9.18",
  442 + "underscore": "1.4.x"
  443 + },
  444 + "dependencies": {
  445 + "underscore": {
  446 + "version": "1.4.4",
  447 + "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.4.4.tgz",
  448 + "integrity": "sha1-YaajIBBiKvoHljvzJSA88SI51gQ="
  449 + }
  450 + }
  451 + },
  452 + "azure-arm-iothub": {
  453 + "version": "1.1.0-preview",
  454 + "resolved": "https://registry.npmjs.org/azure-arm-iothub/-/azure-arm-iothub-1.1.0-preview.tgz",
  455 + "integrity": "sha1-Kdvmx+/W9+AHipBWFFpOjbSSCsw=",
  456 + "requires": {
  457 + "ms-rest": "^2.2.2",
  458 + "ms-rest-azure": "^2.3.3"
  459 + }
  460 + },
  461 + "azure-arm-keyvault": {
  462 + "version": "1.2.0",
  463 + "resolved": "https://registry.npmjs.org/azure-arm-keyvault/-/azure-arm-keyvault-1.2.0.tgz",
  464 + "integrity": "sha512-P1QgUHTSpKvko/mX2u7LDPf5yYinTOtIvMHJeZluQGTSRToMF9mBKqt1TKEzaHyS0eQDErDoLHyBSs7D9E1Qaw==",
  465 + "requires": {
  466 + "ms-rest": "^2.3.3",
  467 + "ms-rest-azure": "^2.5.5"
  468 + }
  469 + },
  470 + "azure-arm-logic": {
  471 + "version": "1.1.0-preview",
  472 + "resolved": "https://registry.npmjs.org/azure-arm-logic/-/azure-arm-logic-1.1.0-preview.tgz",
  473 + "integrity": "sha512-m2s0HnVka+8GgBx+x6Zk2C7KkDa65/lM54HzQi4OArOXWm9kPdlxmu81uWi7A759YER3/9pkTGu+p/AiP3MQbQ==",
  474 + "requires": {
  475 + "ms-rest": "^2.2.2",
  476 + "ms-rest-azure": "^2.3.3"
  477 + }
  478 + },
  479 + "azure-arm-machinelearning": {
  480 + "version": "1.1.0-preview",
  481 + "resolved": "https://registry.npmjs.org/azure-arm-machinelearning/-/azure-arm-machinelearning-1.1.0-preview.tgz",
  482 + "integrity": "sha512-4aWVrzh6BL9IQlu5FeuZE2oVAht6mHL2DBRfsgGqgP1pePhtHvBZpJ6IHHzyHI16sEh+/V0DExJaIria9+ASbQ==",
  483 + "requires": {
  484 + "ms-rest": "^2.2.2",
  485 + "ms-rest-azure": "^2.3.3"
  486 + }
  487 + },
  488 + "azure-arm-machinelearningcompute": {
  489 + "version": "1.0.0-preview",
  490 + "resolved": "https://registry.npmjs.org/azure-arm-machinelearningcompute/-/azure-arm-machinelearningcompute-1.0.0-preview.tgz",
  491 + "integrity": "sha512-WtomhMTd+relHxAQ0UtSqDPE4EUSEEbSpSuoPHcI7XikPnoyUAviAELwllNh3PAyk7+pAsLcUP6yr0PNInh68w==",
  492 + "requires": {
  493 + "ms-rest": "^2.2.2",
  494 + "ms-rest-azure": "^2.3.3"
  495 + }
  496 + },
  497 + "azure-arm-marketplaceordering": {
  498 + "version": "1.3.1",
  499 + "resolved": "https://registry.npmjs.org/azure-arm-marketplaceordering/-/azure-arm-marketplaceordering-1.3.1.tgz",
  500 + "integrity": "sha512-+Q++u/LtJasTR64bf6M2iwa4lswHg2vPPW2H6oQ3/tjpZTNpo52PmkOzNsMWWK0m4BBZqbRfFl3dLdco+f5QSA==",
  501 + "requires": {
  502 + "ms-rest": "^2.5.0",
  503 + "ms-rest-azure": "^2.5.5"
  504 + }
  505 + },
  506 + "azure-arm-mediaservices": {
  507 + "version": "2.0.0",
  508 + "resolved": "https://registry.npmjs.org/azure-arm-mediaservices/-/azure-arm-mediaservices-2.0.0.tgz",
  509 + "integrity": "sha512-YO2TJyuK9LdJLLO5aMmQEDPEKgjDpOiVjWZOKKPP9FJkA+bKsCP4A30kAgMtTqg+Ckzp/xTuRIkhkR0E7zoymQ==",
  510 + "requires": {
  511 + "ms-rest": "^2.3.3",
  512 + "ms-rest-azure": "^2.5.5"
  513 + }
  514 + },
  515 + "azure-arm-mobileengagement": {
  516 + "version": "1.0.0-preview",
  517 + "resolved": "https://registry.npmjs.org/azure-arm-mobileengagement/-/azure-arm-mobileengagement-1.0.0-preview.tgz",
  518 + "integrity": "sha512-7OSnyT6CMd9RLeo3khdy/7VFrkadig73Z6lgri3w0V7ljtFc7RE0pUBfiMiZCPDmZMUz7NdE2ZtOrfDpOwOG9A==",
  519 + "requires": {
  520 + "ms-rest": "^2.2.2",
  521 + "ms-rest-azure": "^2.3.3"
  522 + }
  523 + },
  524 + "azure-arm-monitor": {
  525 + "version": "2.0.0-preview",
  526 + "resolved": "https://registry.npmjs.org/azure-arm-monitor/-/azure-arm-monitor-2.0.0-preview.tgz",
  527 + "integrity": "sha512-V516OQOm2lvt9UsD4wdbI1PMWM0dhV5grt9Al5LAje6h2qyTG9UJyGszx9MnaY1hqXI9lR8wPg6Gy7YXcM+lag==",
  528 + "requires": {
  529 + "ms-rest": "^2.3.3",
  530 + "ms-rest-azure": "^2.5.5"
  531 + }
  532 + },
  533 + "azure-arm-mysql": {
  534 + "version": "3.2.0",
  535 + "resolved": "https://registry.npmjs.org/azure-arm-mysql/-/azure-arm-mysql-3.2.0.tgz",
  536 + "integrity": "sha512-L/KbAggszefQGNvmPm3f98lRm9ZVAqbqTZNSYb59Bxr3xiZsdkOwPbl7rK9/cD4mxhc9czS1kbZ8HbvbupMd/A==",
  537 + "requires": {
  538 + "ms-rest": "^2.3.3",
  539 + "ms-rest-azure": "^2.5.5"
  540 + }
  541 + },
  542 + "azure-arm-network": {
  543 + "version": "5.3.0",
  544 + "resolved": "https://registry.npmjs.org/azure-arm-network/-/azure-arm-network-5.3.0.tgz",
  545 + "integrity": "sha512-juitxBWofPBZ+kcmLB8OjW5qPD6+/Ncdq86WjDTIUcH+cyb/GWktdDymv6adbOyz4xZ9/wbThFL7AHgq8cHBig==",
  546 + "requires": {
  547 + "ms-rest": "^2.3.2",
  548 + "ms-rest-azure": "^2.5.5"
  549 + }
  550 + },
  551 + "azure-arm-notificationhubs": {
  552 + "version": "1.2.0",
  553 + "resolved": "https://registry.npmjs.org/azure-arm-notificationhubs/-/azure-arm-notificationhubs-1.2.0.tgz",
  554 + "integrity": "sha512-E+Q87JfzYxMJhuqbdlt3Gzuwfc0/55gXyI+BYAVTtiIsZeGRUigVF1dpP09ye6uV2FcoF+OZXJ3pXj6jyOrxCQ==",
  555 + "requires": {
  556 + "ms-rest": "^2.2.2",
  557 + "ms-rest-azure": "^2.3.3"
  558 + }
  559 + },
  560 + "azure-arm-operationalinsights": {
  561 + "version": "1.2.0",
  562 + "resolved": "https://registry.npmjs.org/azure-arm-operationalinsights/-/azure-arm-operationalinsights-1.2.0.tgz",
  563 + "integrity": "sha512-aG3ksWfqMWjCQu1GNboni7mTdPjXKUdvrI1WQ5IOiah0ZO2S6J14iOwipLZnyvHcRyyJmIHqm0VR7CMvo2kOxQ==",
  564 + "requires": {
  565 + "ms-rest": "^2.3.3",
  566 + "ms-rest-azure": "^2.5.5"
  567 + }
  568 + },
  569 + "azure-arm-operations": {
  570 + "version": "1.0.0-preview",
  571 + "resolved": "https://registry.npmjs.org/azure-arm-operations/-/azure-arm-operations-1.0.0-preview.tgz",
  572 + "integrity": "sha512-FD3Ernrr4btqqdsamt2jFarqadeDyYsnnltyCLEHdfAz4v5eQR6R7trdPV19DEFaYo+RFSnKTIIY8hBLlrarRg==",
  573 + "requires": {
  574 + "ms-rest": "^2.2.2",
  575 + "ms-rest-azure": "^2.3.3"
  576 + }
  577 + },
  578 + "azure-arm-postgresql": {
  579 + "version": "4.3.0",
  580 + "resolved": "https://registry.npmjs.org/azure-arm-postgresql/-/azure-arm-postgresql-4.3.0.tgz",
  581 + "integrity": "sha512-x4S5GaSJ2MRUntpnDipIPJxA2XuAQ5qUTbgGRVt05shyOg29k3s8gleyveqd3oWKPWaGoW3Nf/kBj6RE2B3v/Q==",
  582 + "requires": {
  583 + "ms-rest": "^2.5.0",
  584 + "ms-rest-azure": "^2.5.5"
  585 + }
  586 + },
  587 + "azure-arm-powerbiembedded": {
  588 + "version": "1.1.0-preview",
  589 + "resolved": "https://registry.npmjs.org/azure-arm-powerbiembedded/-/azure-arm-powerbiembedded-1.1.0-preview.tgz",
  590 + "integrity": "sha512-xW3pk1BP4D1/sCrArtGVQXlMHmW7OOY53fQF9v74miiYo9ydGqpzt2F+8xvtp/5Jxo7+qCB0rrUyoMvO9/EQjA==",
  591 + "requires": {
  592 + "ms-rest": "^2.2.2",
  593 + "ms-rest-azure": "^2.3.3"
  594 + }
  595 + },
  596 + "azure-arm-recoveryservices": {
  597 + "version": "2.0.1-preview",
  598 + "resolved": "https://registry.npmjs.org/azure-arm-recoveryservices/-/azure-arm-recoveryservices-2.0.1-preview.tgz",
  599 + "integrity": "sha512-No1uY9BgohXvOPnnFSqaRkXTpeU+F2xYrxltfHLCPw942VZz6L9xGg87hR6YO0NgyDDK/+hodUa+uGmtezptyw==",
  600 + "requires": {
  601 + "ms-rest": "^2.3.0",
  602 + "ms-rest-azure": "^2.5.0"
  603 + }
  604 + },
  605 + "azure-arm-recoveryservices-siterecovery": {
  606 + "version": "2.0.0-preview",
  607 + "resolved": "https://registry.npmjs.org/azure-arm-recoveryservices-siterecovery/-/azure-arm-recoveryservices-siterecovery-2.0.0-preview.tgz",
  608 + "integrity": "sha512-k9YUIXMGMhevqwgGgVoPexZwlCUZfjh1BpLJ4vkY/wOExkEVU3ErId6gCjh7iaidMO/3x45gxftfKUgERoRx1w==",
  609 + "requires": {
  610 + "ms-rest": "^2.3.0",
  611 + "ms-rest-azure": "^2.5.0"
  612 + }
  613 + },
  614 + "azure-arm-recoveryservicesbackup": {
  615 + "version": "2.0.1-preview",
  616 + "resolved": "https://registry.npmjs.org/azure-arm-recoveryservicesbackup/-/azure-arm-recoveryservicesbackup-2.0.1-preview.tgz",
  617 + "integrity": "sha512-9mvuFavP8h9U7JJ0jgJHlRtxMUlGWiqYMkqD+9QTpxnn/kjSZAulma32fcGq0Ej721LGSOVRnCRiimji8Y/DBg==",
  618 + "requires": {
  619 + "ms-rest": "^2.3.0",
  620 + "ms-rest-azure": "^2.5.0"
  621 + }
  622 + },
  623 + "azure-arm-rediscache": {
  624 + "version": "2.0.0-preview",
  625 + "resolved": "https://registry.npmjs.org/azure-arm-rediscache/-/azure-arm-rediscache-2.0.0-preview.tgz",
  626 + "integrity": "sha512-KiHEO52uKwwVmVMZwOhjRVj67GHzLMCq0Bt2VIadX2+natHge/OR+sh6Axb9DwJUOkvNstPWvFDzuLQDYDGWNg==",
  627 + "requires": {
  628 + "ms-rest": "^2.2.2",
  629 + "ms-rest-azure": "^2.3.3"
  630 + }
  631 + },
  632 + "azure-arm-relay": {
  633 + "version": "2.0.0-preview",
  634 + "resolved": "https://registry.npmjs.org/azure-arm-relay/-/azure-arm-relay-2.0.0-preview.tgz",
  635 + "integrity": "sha512-fK3NAkw0anv6VrAIt1+xtcE0le4n1t+acNMAPTD7cSL3hpLzRrb9H0PNTNa2rxKjqr8f5lp3P5XC93dTniJkmw==",
  636 + "requires": {
  637 + "ms-rest": "^2.2.2",
  638 + "ms-rest-azure": "^2.3.3"
  639 + }
  640 + },
  641 + "azure-arm-resource": {
  642 + "version": "3.1.1-preview",
  643 + "resolved": "https://registry.npmjs.org/azure-arm-resource/-/azure-arm-resource-3.1.1-preview.tgz",
  644 + "integrity": "sha512-01/t+0aDxcvEoAk+EOgMdZwi6DdCFN+iQM5CBaMhNg9DBoztrfRIpOz0OR4QUCynmcyCpl52CZN0Pho36mQiHA==",
  645 + "requires": {
  646 + "ms-rest": "^2.3.0",
  647 + "ms-rest-azure": "^2.5.0"
  648 + }
  649 + },
  650 + "azure-arm-resourcehealth": {
  651 + "version": "1.1.0",
  652 + "resolved": "https://registry.npmjs.org/azure-arm-resourcehealth/-/azure-arm-resourcehealth-1.1.0.tgz",
  653 + "integrity": "sha512-MuiNs49eo2X5ouV/ymAmf1eZ9xfKFfrMGR4gsvT95F4Hl746We5ULZIZYa9StFssY9pH6vX1zr/djqRXODbIZA==",
  654 + "requires": {
  655 + "ms-rest": "^2.3.3",
  656 + "ms-rest-azure": "^2.5.5"
  657 + }
  658 + },
  659 + "azure-arm-sb": {
  660 + "version": "2.6.0",
  661 + "resolved": "https://registry.npmjs.org/azure-arm-sb/-/azure-arm-sb-2.6.0.tgz",
  662 + "integrity": "sha512-U8LhBF545Kz7opAzLvBqGlhJVi1eVF3zjy3N6TZNlP9cdqOlSo0GVY38sp2mj4tcu78+rBSZEzBIeg2r7qhRKw==",
  663 + "requires": {
  664 + "ms-rest": "^2.3.3",
  665 + "ms-rest-azure": "^2.5.5"
  666 + }
  667 + },
  668 + "azure-arm-scheduler": {
  669 + "version": "1.2.0-preview",
  670 + "resolved": "https://registry.npmjs.org/azure-arm-scheduler/-/azure-arm-scheduler-1.2.0-preview.tgz",
  671 + "integrity": "sha512-1dhz9VpKwuopVGbiom4sk/wo0S/undlcWnFwIrnoHkOXtz317TQ3EXnXUsfTFizTyRcMwKLW5Qb9hZ8PNphUCg==",
  672 + "requires": {
  673 + "ms-rest": "^2.2.2",
  674 + "ms-rest-azure": "^2.3.3"
  675 + }
  676 + },
  677 + "azure-arm-search": {
  678 + "version": "1.1.0-preview",
  679 + "resolved": "https://registry.npmjs.org/azure-arm-search/-/azure-arm-search-1.1.0-preview.tgz",
  680 + "integrity": "sha512-iV+HbLXwBRPWg7/zIrMjc/MBTgKHLqixYl+9WS2FLI3tY6HBZtuu+ERvBVgJw9SIAymzl+IL4PB/LEut6He35g==",
  681 + "requires": {
  682 + "ms-rest": "^2.0.0",
  683 + "ms-rest-azure": "^2.0.0"
  684 + }
  685 + },
  686 + "azure-arm-servermanagement": {
  687 + "version": "1.1.0",
  688 + "resolved": "https://registry.npmjs.org/azure-arm-servermanagement/-/azure-arm-servermanagement-1.1.0.tgz",
  689 + "integrity": "sha512-GlPXPD5Up2U6Qxv40ScC/+7WRcVVYQf7EHUSomD385o/MuyJAjM6CxBS8fPKwkZR5MRSd60p6kBo5AQ+bwfpeA==",
  690 + "requires": {
  691 + "ms-rest": "^2.2.2",
  692 + "ms-rest-azure": "^2.3.3"
  693 + }
  694 + },
  695 + "azure-arm-servicefabric": {
  696 + "version": "2.0.0-preview",
  697 + "resolved": "https://registry.npmjs.org/azure-arm-servicefabric/-/azure-arm-servicefabric-2.0.0-preview.tgz",
  698 + "integrity": "sha512-5q9J4rAkXY8ZNStY9SN5uF2paMkdl3SOWDM6fgWASPthM9p6G5lMsDRI/o8ZwUc60u2omeHMJrI6aKAanQ98RQ==",
  699 + "requires": {
  700 + "ms-rest": "^2.2.2",
  701 + "ms-rest-azure": "^2.3.3"
  702 + }
  703 + },
  704 + "azure-arm-servicemap": {
  705 + "version": "2.1.0",
  706 + "resolved": "https://registry.npmjs.org/azure-arm-servicemap/-/azure-arm-servicemap-2.1.0.tgz",
  707 + "integrity": "sha512-O3IJsm9tRfv4x5fUofxz46gBQ5MUzN40OB7oS82Sbnq/o/ZroxdJROwel47uGgpAgftqh7c15i8tL6sUFnV2Lg==",
  708 + "requires": {
  709 + "ms-rest": "^2.3.3",
  710 + "ms-rest-azure": "^2.5.5"
  711 + }
  712 + },
  713 + "azure-arm-sql": {
  714 + "version": "3.0.0",
  715 + "resolved": "https://registry.npmjs.org/azure-arm-sql/-/azure-arm-sql-3.0.0.tgz",
  716 + "integrity": "sha512-Fs9BUA3sGIfWJtulZNaiFHAbG7ipYliUz3xBN6K5RH2OGltYMNVE4Dofzdq726cY0nXMnjfzMhipdXqmJKdAjQ==",
  717 + "requires": {
  718 + "ms-rest": "^2.3.3",
  719 + "ms-rest-azure": "^2.5.5"
  720 + }
  721 + },
  722 + "azure-arm-storage": {
  723 + "version": "5.2.0",
  724 + "resolved": "https://registry.npmjs.org/azure-arm-storage/-/azure-arm-storage-5.2.0.tgz",
  725 + "integrity": "sha512-BVFUPi48eJNJFP4ryQ3BwNRlKRNuAA7cZeSxCvr6dGEP+wrd1Ixmb2MlvoMRjgjcEOVnhP4t2YQyHcHNqQsH9A==",
  726 + "requires": {
  727 + "ms-rest": "^2.3.3",
  728 + "ms-rest-azure": "^2.5.5"
  729 + }
  730 + },
  731 + "azure-arm-storageimportexport": {
  732 + "version": "1.2.0",
  733 + "resolved": "https://registry.npmjs.org/azure-arm-storageimportexport/-/azure-arm-storageimportexport-1.2.0.tgz",
  734 + "integrity": "sha512-azr97LXRY1zkyYx7OX54fjLOYCXvHX3moVk5Cvy/InxYL1DTruOy2069gYQz+CRbxCi/DbvL5UiLjcH72hmFsw==",
  735 + "requires": {
  736 + "ms-rest": "^2.2.2",
  737 + "ms-rest-azure": "^2.3.3"
  738 + }
  739 + },
  740 + "azure-arm-storsimple8000series": {
  741 + "version": "1.0.0-preview",
  742 + "resolved": "https://registry.npmjs.org/azure-arm-storsimple8000series/-/azure-arm-storsimple8000series-1.0.0-preview.tgz",
  743 + "integrity": "sha512-NdlGEhXFGCBxOxEe4LULKgPPdh91gE7YtiZ+uswkqfE82DknvBqebfZ7yzST1h0ub9PCvj/E9rV1zRub6aR7xw==",
  744 + "requires": {
  745 + "ms-rest": "^2.2.2",
  746 + "ms-rest-azure": "^2.3.3"
  747 + }
  748 + },
  749 + "azure-arm-streamanalytics": {
  750 + "version": "1.0.0-preview",
  751 + "resolved": "https://registry.npmjs.org/azure-arm-streamanalytics/-/azure-arm-streamanalytics-1.0.0-preview.tgz",
  752 + "integrity": "sha512-IsBynbHmPzfz2F4k3ohTw9QRsWlUvt7juxHVxsVe8nr3klkq980/vhLEkytpglsBy5n5pp2nE6P7kYyxQwnWeA==",
  753 + "requires": {
  754 + "ms-rest": "^2.2.2",
  755 + "ms-rest-azure": "^2.3.3"
  756 + }
  757 + },
  758 + "azure-arm-trafficmanager": {
  759 + "version": "3.0.0",
  760 + "resolved": "https://registry.npmjs.org/azure-arm-trafficmanager/-/azure-arm-trafficmanager-3.0.0.tgz",
  761 + "integrity": "sha512-1p8jEfFwQ3v1/CVga5tOsaYGGd/YwOq6xUBrvv6khUqMOd5JaszTOaKCQE5IMqK2agXj6TjQ0NHS7Fph6cyaiw==",
  762 + "requires": {
  763 + "ms-rest": "^2.3.2",
  764 + "ms-rest-azure": "^2.5.5"
  765 + }
  766 + },
  767 + "azure-arm-visualstudio": {
  768 + "version": "1.0.0-preview",
  769 + "resolved": "https://registry.npmjs.org/azure-arm-visualstudio/-/azure-arm-visualstudio-1.0.0-preview.tgz",
  770 + "integrity": "sha512-7hXExG3dC/nlEWoWhJOb/ust5YlbX4prztKrOyiNQ5E5CYX3x9vmnp01wHRv9i3H/tAIARfoFmpT+Fk48CkRGA==",
  771 + "requires": {
  772 + "ms-rest": "^2.2.2",
  773 + "ms-rest-azure": "^2.3.3"
  774 + }
  775 + },
  776 + "azure-arm-website": {
  777 + "version": "3.0.0-preview",
  778 + "resolved": "https://registry.npmjs.org/azure-arm-website/-/azure-arm-website-3.0.0-preview.tgz",
  779 + "integrity": "sha512-IhCdjiL0Y+QMlwdrw9tEoYM8mKCtBYHdK5G8RVthF58lHUAPMaQMbvSuumZ/kbVxNdvORkXGXJ5tOng6v75AZQ==",
  780 + "requires": {
  781 + "ms-rest": "^2.3.0",
  782 + "ms-rest-azure": "^2.5.0"
  783 + }
  784 + },
  785 + "azure-asm-compute": {
  786 + "version": "0.18.0",
  787 + "resolved": "https://registry.npmjs.org/azure-asm-compute/-/azure-asm-compute-0.18.0.tgz",
  788 + "integrity": "sha1-EJwx4Xxpf0oAoBUz+yML865EhoU=",
  789 + "requires": {
  790 + "azure-common": "^0.9.13",
  791 + "underscore": "1.4.x"
  792 + },
  793 + "dependencies": {
  794 + "underscore": {
  795 + "version": "1.4.4",
  796 + "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.4.4.tgz",
  797 + "integrity": "sha1-YaajIBBiKvoHljvzJSA88SI51gQ="
  798 + }
  799 + }
  800 + },
  801 + "azure-asm-hdinsight": {
  802 + "version": "0.10.3",
  803 + "resolved": "https://registry.npmjs.org/azure-asm-hdinsight/-/azure-asm-hdinsight-0.10.3.tgz",
  804 + "integrity": "sha1-tHzsm/8qgw8+sVAvaIbdfTFhSgo=",
  805 + "requires": {
  806 + "azure-common": "^0.9.13",
  807 + "underscore": "1.4.x"
  808 + },
  809 + "dependencies": {
  810 + "underscore": {
  811 + "version": "1.4.4",
  812 + "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.4.4.tgz",
  813 + "integrity": "sha1-YaajIBBiKvoHljvzJSA88SI51gQ="
  814 + }
  815 + }
  816 + },
  817 + "azure-asm-mgmt": {
  818 + "version": "0.10.2",
  819 + "resolved": "https://registry.npmjs.org/azure-asm-mgmt/-/azure-asm-mgmt-0.10.2.tgz",
  820 + "integrity": "sha1-XAbKWiFoX5LJLIpXCLWeUsiejPo=",
  821 + "requires": {
  822 + "azure-common": "^0.9.13",
  823 + "underscore": "1.4.x"
  824 + },
  825 + "dependencies": {
  826 + "underscore": {
  827 + "version": "1.4.4",
  828 + "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.4.4.tgz",
  829 + "integrity": "sha1-YaajIBBiKvoHljvzJSA88SI51gQ="
  830 + }
  831 + }
  832 + },
  833 + "azure-asm-network": {
  834 + "version": "0.13.1",
  835 + "resolved": "https://registry.npmjs.org/azure-asm-network/-/azure-asm-network-0.13.1.tgz",
  836 + "integrity": "sha1-4jAD7THe7nXybNXeIVUbFJAaXK4=",
  837 + "requires": {
  838 + "azure-common": "^0.9.13"
  839 + }
  840 + },
  841 + "azure-asm-sb": {
  842 + "version": "0.10.2",
  843 + "resolved": "https://registry.npmjs.org/azure-asm-sb/-/azure-asm-sb-0.10.2.tgz",
  844 + "integrity": "sha1-2+2b6+b1MXZu19Ic1kB+76H2nxU=",
  845 + "requires": {
  846 + "azure-common": "^0.9.13",
  847 + "underscore": "1.4.x"
  848 + },
  849 + "dependencies": {
  850 + "underscore": {
  851 + "version": "1.4.4",
  852 + "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.4.4.tgz",
  853 + "integrity": "sha1-YaajIBBiKvoHljvzJSA88SI51gQ="
  854 + }
  855 + }
  856 + },
  857 + "azure-asm-scheduler": {
  858 + "version": "0.10.2",
  859 + "resolved": "https://registry.npmjs.org/azure-asm-scheduler/-/azure-asm-scheduler-0.10.2.tgz",
  860 + "integrity": "sha1-2Yog1XgDRbfM2d+11w6i/6FFVuE=",
  861 + "requires": {
  862 + "azure-common": "^0.9.13"
  863 + }
  864 + },
  865 + "azure-asm-sql": {
  866 + "version": "0.10.3",
  867 + "resolved": "https://registry.npmjs.org/azure-asm-sql/-/azure-asm-sql-0.10.3.tgz",
  868 + "integrity": "sha1-WRecDAWRDy83yeyGakLpZvdR90M=",
  869 + "requires": {
  870 + "azure-common": "^0.9.13",
  871 + "underscore": "1.4.x"
  872 + },
  873 + "dependencies": {
  874 + "underscore": {
  875 + "version": "1.4.4",
  876 + "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.4.4.tgz",
  877 + "integrity": "sha1-YaajIBBiKvoHljvzJSA88SI51gQ="
  878 + }
  879 + }
  880 + },
  881 + "azure-asm-storage": {
  882 + "version": "0.12.1",
  883 + "resolved": "https://registry.npmjs.org/azure-asm-storage/-/azure-asm-storage-0.12.1.tgz",
  884 + "integrity": "sha1-Dq7OR7jWZbDgDXq787JLKS5N3P4=",
  885 + "requires": {
  886 + "azure-common": "^0.9.13"
  887 + }
  888 + },
  889 + "azure-asm-store": {
  890 + "version": "0.10.2",
  891 + "resolved": "https://registry.npmjs.org/azure-asm-store/-/azure-asm-store-0.10.2.tgz",
  892 + "integrity": "sha1-N02NZ8i5K1usfciuBlkgFM5iQ8s=",
  893 + "requires": {
  894 + "azure-common": "^0.9.13"
  895 + }
  896 + },
  897 + "azure-asm-subscription": {
  898 + "version": "0.10.2",
  899 + "resolved": "https://registry.npmjs.org/azure-asm-subscription/-/azure-asm-subscription-0.10.2.tgz",
  900 + "integrity": "sha1-3nK/CoQqFEoijbLXW0A8LHhj5sE=",
  901 + "requires": {
  902 + "azure-common": "^0.9.13"
  903 + }
  904 + },
  905 + "azure-asm-trafficmanager": {
  906 + "version": "0.10.4",
  907 + "resolved": "https://registry.npmjs.org/azure-asm-trafficmanager/-/azure-asm-trafficmanager-0.10.4.tgz",
  908 + "integrity": "sha1-txvxSMeMnmVnVy911iVlo4zjyEs=",
  909 + "requires": {
  910 + "azure-common": "^0.9.13"
  911 + }
  912 + },
  913 + "azure-asm-website": {
  914 + "version": "0.10.7",
  915 + "resolved": "https://registry.npmjs.org/azure-asm-website/-/azure-asm-website-0.10.7.tgz",
  916 + "integrity": "sha512-h3OmXKKOLd4sbf4khrxqGTjspjqpKduKN9EWgEoIeNhMY+PVKrVEIMr3ZyKzmmy/8123MD+ip67wMqUKSTLtUA==",
  917 + "requires": {
  918 + "azure-common": "^0.9.17",
  919 + "moment": "^2.22.2",
  920 + "underscore": "^1.8.3"
  921 + }
  922 + },
  923 + "azure-batch": {
  924 + "version": "3.2.2",
  925 + "resolved": "https://registry.npmjs.org/azure-batch/-/azure-batch-3.2.2.tgz",
  926 + "integrity": "sha512-IM5nUITXMgTFTF4avRxsz/oLcMXLSZEzpukulRRpO1emXBI4EgSIr0++hUo+AZ94MINE2C4DXgCDiQ9P0suYXw==",
  927 + "requires": {
  928 + "moment": "^2.22.2",
  929 + "ms-rest": "^2.3.4",
  930 + "ms-rest-azure": "^2.5.6",
  931 + "underscore": "^1.8.3"
  932 + }
  933 + },
  934 + "azure-common": {
  935 + "version": "0.9.22",
  936 + "resolved": "https://registry.npmjs.org/azure-common/-/azure-common-0.9.22.tgz",
  937 + "integrity": "sha512-0r9tK9D+1xl2/VPVtfmGmtkMqfooiBLS87fX+Ab0hOCPVVe/6CgVC4in0wSf2Ta8r65DbvxV5P4/t8fp8Q3EsQ==",
  938 + "requires": {
  939 + "dateformat": "1.0.2-1.2.3",
  940 + "duplexer": "~0.1.1",
  941 + "envconf": "~0.0.4",
  942 + "request": "^2.81.0",
  943 + "through": "~2.3.4",
  944 + "tunnel": "~0.0.2",
  945 + "underscore": "1.4.x",
  946 + "validator": "^9.4.1",
  947 + "xml2js": "^0.4.19",
  948 + "xmlbuilder": "0.4.3"
  949 + },
  950 + "dependencies": {
  951 + "underscore": {
  952 + "version": "1.4.4",
  953 + "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.4.4.tgz",
  954 + "integrity": "sha1-YaajIBBiKvoHljvzJSA88SI51gQ="
  955 + }
  956 + }
  957 + },
  958 + "azure-extra": {
  959 + "version": "0.2.14",
  960 + "resolved": "https://registry.npmjs.org/azure-extra/-/azure-extra-0.2.14.tgz",
  961 + "integrity": "sha512-IOW8+betIT1Ng3Pk0S9VXf2uqEIiTnlJRuA70j5MwjLCliy/iC9Ts3ghJyOdUIrnYfYaL3u7UbVC1OkfTU2waA==",
  962 + "requires": {
  963 + "azure-common": "^0.9.13",
  964 + "underscore": "^1.8.3"
  965 + }
  966 + },
  967 + "azure-gallery": {
  968 + "version": "2.0.0-pre.20",
  969 + "resolved": "https://registry.npmjs.org/azure-gallery/-/azure-gallery-2.0.0-pre.20.tgz",
  970 + "integrity": "sha1-ei61gkGEvRUTQS2Zr59sfhwyKw8=",
  971 + "requires": {
  972 + "azure-common": "^0.9.13",
  973 + "underscore": "1.4.x"
  974 + },
  975 + "dependencies": {
  976 + "underscore": {
  977 + "version": "1.4.4",
  978 + "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.4.4.tgz",
  979 + "integrity": "sha1-YaajIBBiKvoHljvzJSA88SI51gQ="
  980 + }
  981 + }
  982 + },
  983 + "azure-graph": {
  984 + "version": "2.2.0",
  985 + "resolved": "https://registry.npmjs.org/azure-graph/-/azure-graph-2.2.0.tgz",
  986 + "integrity": "sha512-ab0LlM5Q3pcKm+V6F6yx2ShzGOTYMcmJvLdL3PQsC9hF+hrYsBdkTCdNZdlPBgrSB8jp5vzhmK83qHGRs14hHw==",
  987 + "requires": {
  988 + "ms-rest": "^2.2.2",
  989 + "ms-rest-azure": "^2.3.3"
  990 + }
  991 + },
  992 + "azure-keyvault": {
  993 + "version": "3.0.5",
  994 + "resolved": "https://registry.npmjs.org/azure-keyvault/-/azure-keyvault-3.0.5.tgz",
  995 + "integrity": "sha512-59fzKRq9dnzv03lEuImvgXc3QjRJoSJtK0gv1WXoqCivBuPdFNK+x6hAjoEDS2WEOXG+7m3uiJWqpMh/8NW3ow==",
  996 + "requires": {
  997 + "ms-rest": "^2.5.0",
  998 + "ms-rest-azure": "^2.6.0"
  999 + }
  1000 + },
  1001 + "azure-loganalytics": {
  1002 + "version": "0.1.1",
  1003 + "resolved": "https://registry.npmjs.org/azure-loganalytics/-/azure-loganalytics-0.1.1.tgz",
  1004 + "integrity": "sha512-nt3DhaywATobRrFPJzS/W9ynFAnCKO+i+A3Lzjz/ZGzUmuUxAQkX4ALkk8BJvsPK6ONoC297u+RQuDSigDsz7A==",
  1005 + "requires": {
  1006 + "ms-rest": "^2.3.3"
  1007 + }
  1008 + },
  1009 + "azure-monitoring": {
  1010 + "version": "0.10.6",
  1011 + "resolved": "https://registry.npmjs.org/azure-monitoring/-/azure-monitoring-0.10.6.tgz",
  1012 + "integrity": "sha512-6HNA8VuC5qYvQMjcQt2/zlB7oyAJ7n6KGIYGstS6KS9Orux0peqxlrGPDeQRa4jDNq6ili83KiGc7RhWcgsE4Q==",
  1013 + "requires": {
  1014 + "azure-common": "^0.9.17",
  1015 + "moment": "^2.22.2",
  1016 + "underscore": "^1.8.3"
  1017 + }
  1018 + },
  1019 + "azure-sb": {
  1020 + "version": "0.10.6",
  1021 + "resolved": "https://registry.npmjs.org/azure-sb/-/azure-sb-0.10.6.tgz",
  1022 + "integrity": "sha512-bgupZJZ5DcZEh/fRRcDiverWteq32AhBrm34qK2/Rn6LIgurGzk70FpiBV5KxVPAaVmX08kdMwuGMkUMxinv8g==",
  1023 + "requires": {
  1024 + "azure-common": "^0.9.19",
  1025 + "mpns": "2.1.3",
  1026 + "underscore": "^1.8.3",
  1027 + "wns": "~0.5.3"
  1028 + }
  1029 + },
  1030 + "azure-scheduler": {
  1031 + "version": "0.10.4",
  1032 + "resolved": "https://registry.npmjs.org/azure-scheduler/-/azure-scheduler-0.10.4.tgz",
  1033 + "integrity": "sha512-1X68H1jP0m59rojy+Jil2vEevsiM3M/bJvfztOFRDwWi9s9IxU/yxBPUMdL9vPVWZpbLF7m7VapYzSfDwsiCxA==",
  1034 + "requires": {
  1035 + "azure-common": "^0.9.17",
  1036 + "moment": "^2.22.2"
  1037 + }
  1038 + },
  1039 + "azure-servicefabric": {
  1040 + "version": "2.2.0",
  1041 + "resolved": "https://registry.npmjs.org/azure-servicefabric/-/azure-servicefabric-2.2.0.tgz",
  1042 + "integrity": "sha512-b+rxF8esa1Cm+bnJLs6a+hO/7U9QwvQzg0bSR1rKP9NTKjZji3GxdndcPVkHqFv28QiLo9ifyR/FaJMA0cDcTw==",
  1043 + "requires": {
  1044 + "ms-rest": "^2.3.3"
  1045 + }
  1046 + },
  1047 + "azure-storage": {
  1048 + "version": "2.10.3",
  1049 + "resolved": "https://registry.npmjs.org/azure-storage/-/azure-storage-2.10.3.tgz",
  1050 + "integrity": "sha512-IGLs5Xj6kO8Ii90KerQrrwuJKexLgSwYC4oLWmc11mzKe7Jt2E5IVg+ZQ8K53YWZACtVTMBNO3iGuA+4ipjJxQ==",
  1051 + "requires": {
  1052 + "browserify-mime": "~1.2.9",
  1053 + "extend": "^3.0.2",
  1054 + "json-edm-parser": "0.1.2",
  1055 + "md5.js": "1.3.4",
  1056 + "readable-stream": "~2.0.0",
  1057 + "request": "^2.86.0",
  1058 + "underscore": "~1.8.3",
  1059 + "uuid": "^3.0.0",
  1060 + "validator": "~9.4.1",
  1061 + "xml2js": "0.2.8",
  1062 + "xmlbuilder": "^9.0.7"
  1063 + },
  1064 + "dependencies": {
  1065 + "sax": {
  1066 + "version": "0.5.8",
  1067 + "resolved": "https://registry.npmjs.org/sax/-/sax-0.5.8.tgz",
  1068 + "integrity": "sha1-1HLbIo6zMcJQaw6MFVJK25OdEsE="
  1069 + },
  1070 + "xml2js": {
  1071 + "version": "0.2.8",
  1072 + "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.2.8.tgz",
  1073 + "integrity": "sha1-m4FpCTFjH/CdGVdUn69U9PmAs8I=",
  1074 + "requires": {
  1075 + "sax": "0.5.x"
  1076 + }
  1077 + },
  1078 + "xmlbuilder": {
  1079 + "version": "9.0.7",
  1080 + "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-9.0.7.tgz",
  1081 + "integrity": "sha1-Ey7mPS7FVlxVfiD0wi35rKaGsQ0="
  1082 + }
  1083 + }
  1084 + },
  1085 + "azure-storage-legacy": {
  1086 + "version": "0.10.3",
  1087 + "resolved": "https://registry.npmjs.org/azure-storage-legacy/-/azure-storage-legacy-0.10.3.tgz",
  1088 + "integrity": "sha512-znZD9ixqwtQM4/mXGa/5RAj+GrxKbp7wYSWpMc7AlH6Laz5qSoMZLi+4PXqnYnbc9t3p2E3HoPKhtU62H4e4CA==",
  1089 + "requires": {
  1090 + "azure-common": "^0.9.13",
  1091 + "mime": "^1.6.0",
  1092 + "underscore": "^1.8.3"
  1093 + }
  1094 + },
  1095 + "bcrypt-pbkdf": {
  1096 + "version": "1.0.2",
  1097 + "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz",
  1098 + "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=",
  1099 + "requires": {
  1100 + "tweetnacl": "^0.14.3"
  1101 + }
  1102 + },
  1103 + "bl": {
  1104 + "version": "2.2.0",
  1105 + "resolved": "https://registry.npmjs.org/bl/-/bl-2.2.0.tgz",
  1106 + "integrity": "sha512-wbgvOpqopSr7uq6fJrLH8EsvYMJf9gzfo2jCsL2eTy75qXPukA4pCgHamOQkZtY5vmfVtjB+P3LNlMHW5CEZXA==",
  1107 + "requires": {
  1108 + "readable-stream": "^2.3.5",
  1109 + "safe-buffer": "^5.1.1"
  1110 + },
  1111 + "dependencies": {
  1112 + "process-nextick-args": {
  1113 + "version": "2.0.1",
  1114 + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz",
  1115 + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag=="
  1116 + },
  1117 + "readable-stream": {
  1118 + "version": "2.3.7",
  1119 + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz",
  1120 + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==",
  1121 + "requires": {
  1122 + "core-util-is": "~1.0.0",
  1123 + "inherits": "~2.0.3",
  1124 + "isarray": "~1.0.0",
  1125 + "process-nextick-args": "~2.0.0",
  1126 + "safe-buffer": "~5.1.1",
  1127 + "string_decoder": "~1.1.1",
  1128 + "util-deprecate": "~1.0.1"
  1129 + }
  1130 + },
  1131 + "string_decoder": {
  1132 + "version": "1.1.1",
  1133 + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
  1134 + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
  1135 + "requires": {
  1136 + "safe-buffer": "~5.1.0"
  1137 + }
  1138 + }
  1139 + }
  1140 + },
  1141 + "bluebird": {
  1142 + "version": "3.5.1",
  1143 + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.5.1.tgz",
  1144 + "integrity": "sha512-MKiLiV+I1AA596t9w1sQJ8jkiSr5+ZKi0WKrYGUn6d1Fx+Ij4tIj+m2WMQSGczs5jZVxV339chE8iwk6F64wjA=="
  1145 + },
  1146 + "body-parser": {
  1147 + "version": "1.19.0",
  1148 + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.19.0.tgz",
  1149 + "integrity": "sha512-dhEPs72UPbDnAQJ9ZKMNTP6ptJaionhP5cBb541nXPlW60Jepo9RV/a4fX4XWW9CuFNK22krhrj1+rgzifNCsw==",
  1150 + "requires": {
  1151 + "bytes": "3.1.0",
  1152 + "content-type": "~1.0.4",
  1153 + "debug": "2.6.9",
  1154 + "depd": "~1.1.2",
  1155 + "http-errors": "1.7.2",
  1156 + "iconv-lite": "0.4.24",
  1157 + "on-finished": "~2.3.0",
  1158 + "qs": "6.7.0",
  1159 + "raw-body": "2.4.0",
  1160 + "type-is": "~1.6.17"
  1161 + }
  1162 + },
  1163 + "browserify-mime": {
  1164 + "version": "1.2.9",
  1165 + "resolved": "https://registry.npmjs.org/browserify-mime/-/browserify-mime-1.2.9.tgz",
  1166 + "integrity": "sha1-rrGvKN5sDXpqLOQK22j/GEIq8x8="
  1167 + },
  1168 + "bson": {
  1169 + "version": "1.1.4",
  1170 + "resolved": "https://registry.npmjs.org/bson/-/bson-1.1.4.tgz",
  1171 + "integrity": "sha512-S/yKGU1syOMzO86+dGpg2qGoDL0zvzcb262G+gqEy6TgP6rt6z6qxSFX/8X6vLC91P7G7C3nLs0+bvDzmvBA3Q=="
  1172 + },
  1173 + "buffer-equal-constant-time": {
  1174 + "version": "1.0.1",
  1175 + "resolved": "https://registry.npmjs.org/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz",
  1176 + "integrity": "sha1-+OcRMvf/5uAaXJaXpMbz5I1cyBk="
  1177 + },
  1178 + "bytes": {
  1179 + "version": "3.1.0",
  1180 + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz",
  1181 + "integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg=="
  1182 + },
  1183 + "caseless": {
  1184 + "version": "0.12.0",
  1185 + "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz",
  1186 + "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw="
  1187 + },
  1188 + "combined-stream": {
  1189 + "version": "1.0.8",
  1190 + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz",
  1191 + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==",
  1192 + "requires": {
  1193 + "delayed-stream": "~1.0.0"
  1194 + }
  1195 + },
  1196 + "connect-multiparty": {
  1197 + "version": "2.2.0",
  1198 + "resolved": "https://registry.npmjs.org/connect-multiparty/-/connect-multiparty-2.2.0.tgz",
  1199 + "integrity": "sha512-zKcpA7cuXGEhuw9Pz7JmVCFmp85jzGLGm/iiagXTwyEAJp4ypLPtRS/V4IGuGb9KjjrgHBs6P/gDCpZHnFzksA==",
  1200 + "requires": {
  1201 + "http-errors": "~1.7.0",
  1202 + "multiparty": "~4.2.1",
  1203 + "on-finished": "~2.3.0",
  1204 + "qs": "~6.5.2",
  1205 + "type-is": "~1.6.16"
  1206 + },
  1207 + "dependencies": {
  1208 + "qs": {
  1209 + "version": "6.5.2",
  1210 + "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz",
  1211 + "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA=="
  1212 + }
  1213 + }
  1214 + },
  1215 + "content-disposition": {
  1216 + "version": "0.5.3",
  1217 + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.3.tgz",
  1218 + "integrity": "sha512-ExO0774ikEObIAEV9kDo50o+79VCUdEB6n6lzKgGwupcVeRlhrj3qGAfwq8G6uBJjkqLrhT0qEYFcWng8z1z0g==",
  1219 + "requires": {
  1220 + "safe-buffer": "5.1.2"
  1221 + }
  1222 + },
  1223 + "content-type": {
  1224 + "version": "1.0.4",
  1225 + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz",
  1226 + "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA=="
  1227 + },
  1228 + "cookie": {
  1229 + "version": "0.4.0",
  1230 + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.0.tgz",
  1231 + "integrity": "sha512-+Hp8fLp57wnUSt0tY0tHEXh4voZRDnoIrZPqlo3DPiI4y9lwg/jqx+1Om94/W6ZaPDOUbnjOt/99w66zk+l1Xg=="
  1232 + },
  1233 + "cookie-signature": {
  1234 + "version": "1.0.6",
  1235 + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz",
  1236 + "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw="
  1237 + },
  1238 + "core-util-is": {
  1239 + "version": "1.0.2",
  1240 + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz",
  1241 + "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac="
  1242 + },
  1243 + "cors": {
  1244 + "version": "2.8.5",
  1245 + "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz",
  1246 + "integrity": "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==",
  1247 + "requires": {
  1248 + "object-assign": "^4",
  1249 + "vary": "^1"
  1250 + }
  1251 + },
  1252 + "dashdash": {
  1253 + "version": "1.14.1",
  1254 + "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz",
  1255 + "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=",
  1256 + "requires": {
  1257 + "assert-plus": "^1.0.0"
  1258 + }
  1259 + },
  1260 + "date-utils": {
  1261 + "version": "1.2.21",
  1262 + "resolved": "https://registry.npmjs.org/date-utils/-/date-utils-1.2.21.tgz",
  1263 + "integrity": "sha1-YfsWzcEnSzyayq/+n8ad+HIKK2Q="
  1264 + },
  1265 + "dateformat": {
  1266 + "version": "1.0.2-1.2.3",
  1267 + "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-1.0.2-1.2.3.tgz",
  1268 + "integrity": "sha1-sCIMAt6YYXQztyhRz0fePfLNvuk="
  1269 + },
  1270 + "debug": {
  1271 + "version": "2.6.9",
  1272 + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
  1273 + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
  1274 + "requires": {
  1275 + "ms": "2.0.0"
  1276 + }
  1277 + },
  1278 + "delayed-stream": {
  1279 + "version": "1.0.0",
  1280 + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz",
  1281 + "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk="
  1282 + },
  1283 + "denque": {
  1284 + "version": "1.4.1",
  1285 + "resolved": "https://registry.npmjs.org/denque/-/denque-1.4.1.tgz",
  1286 + "integrity": "sha512-OfzPuSZKGcgr96rf1oODnfjqBFmr1DVoc/TrItj3Ohe0Ah1C5WX5Baquw/9U9KovnQ88EqmJbD66rKYUQYN1tQ=="
  1287 + },
  1288 + "depd": {
  1289 + "version": "1.1.2",
  1290 + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz",
  1291 + "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak="
  1292 + },
  1293 + "destroy": {
  1294 + "version": "1.0.4",
  1295 + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz",
  1296 + "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA="
  1297 + },
  1298 + "duplexer": {
  1299 + "version": "0.1.1",
  1300 + "resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.1.tgz",
  1301 + "integrity": "sha1-rOb/gIwc5mtX0ev5eXessCM0z8E="
  1302 + },
  1303 + "ecc-jsbn": {
  1304 + "version": "0.1.2",
  1305 + "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz",
  1306 + "integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=",
  1307 + "requires": {
  1308 + "jsbn": "~0.1.0",
  1309 + "safer-buffer": "^2.1.0"
  1310 + }
  1311 + },
  1312 + "ecdsa-sig-formatter": {
  1313 + "version": "1.0.11",
  1314 + "resolved": "https://registry.npmjs.org/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.11.tgz",
  1315 + "integrity": "sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ==",
  1316 + "requires": {
  1317 + "safe-buffer": "^5.0.1"
  1318 + }
  1319 + },
  1320 + "ee-first": {
  1321 + "version": "1.1.1",
  1322 + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz",
  1323 + "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0="
  1324 + },
  1325 + "encodeurl": {
  1326 + "version": "1.0.2",
  1327 + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz",
  1328 + "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k="
  1329 + },
  1330 + "envconf": {
  1331 + "version": "0.0.4",
  1332 + "resolved": "https://registry.npmjs.org/envconf/-/envconf-0.0.4.tgz",
  1333 + "integrity": "sha1-hWda+6I3xD+Y3i1GrcDlMqTc9Is="
  1334 + },
  1335 + "escape-html": {
  1336 + "version": "1.0.3",
  1337 + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz",
  1338 + "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg="
  1339 + },
  1340 + "etag": {
  1341 + "version": "1.8.1",
  1342 + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz",
  1343 + "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc="
  1344 + },
  1345 + "express": {
  1346 + "version": "4.17.1",
  1347 + "resolved": "https://registry.npmjs.org/express/-/express-4.17.1.tgz",
  1348 + "integrity": "sha512-mHJ9O79RqluphRrcw2X/GTh3k9tVv8YcoyY4Kkh4WDMUYKRZUq0h1o0w2rrrxBqM7VoeUVqgb27xlEMXTnYt4g==",
  1349 + "requires": {
  1350 + "accepts": "~1.3.7",
  1351 + "array-flatten": "1.1.1",
  1352 + "body-parser": "1.19.0",
  1353 + "content-disposition": "0.5.3",
  1354 + "content-type": "~1.0.4",
  1355 + "cookie": "0.4.0",
  1356 + "cookie-signature": "1.0.6",
  1357 + "debug": "2.6.9",
  1358 + "depd": "~1.1.2",
  1359 + "encodeurl": "~1.0.2",
  1360 + "escape-html": "~1.0.3",
  1361 + "etag": "~1.8.1",
  1362 + "finalhandler": "~1.1.2",
  1363 + "fresh": "0.5.2",
  1364 + "merge-descriptors": "1.0.1",
  1365 + "methods": "~1.1.2",
  1366 + "on-finished": "~2.3.0",
  1367 + "parseurl": "~1.3.3",
  1368 + "path-to-regexp": "0.1.7",
  1369 + "proxy-addr": "~2.0.5",
  1370 + "qs": "6.7.0",
  1371 + "range-parser": "~1.2.1",
  1372 + "safe-buffer": "5.1.2",
  1373 + "send": "0.17.1",
  1374 + "serve-static": "1.14.1",
  1375 + "setprototypeof": "1.1.1",
  1376 + "statuses": "~1.5.0",
  1377 + "type-is": "~1.6.18",
  1378 + "utils-merge": "1.0.1",
  1379 + "vary": "~1.1.2"
  1380 + }
  1381 + },
  1382 + "extend": {
  1383 + "version": "3.0.2",
  1384 + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz",
  1385 + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g=="
  1386 + },
  1387 + "extsprintf": {
  1388 + "version": "1.3.0",
  1389 + "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz",
  1390 + "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU="
  1391 + },
  1392 + "fast-deep-equal": {
  1393 + "version": "3.1.1",
  1394 + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.1.tgz",
  1395 + "integrity": "sha512-8UEa58QDLauDNfpbrX55Q9jrGHThw2ZMdOky5Gl1CDtVeJDPVrG4Jxx1N8jw2gkWaff5UUuX1KJd+9zGe2B+ZA=="
  1396 + },
  1397 + "fast-json-stable-stringify": {
  1398 + "version": "2.1.0",
  1399 + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz",
  1400 + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw=="
  1401 + },
  1402 + "fd-slicer": {
  1403 + "version": "1.1.0",
  1404 + "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz",
  1405 + "integrity": "sha1-JcfInLH5B3+IkbvmHY85Dq4lbx4=",
  1406 + "requires": {
  1407 + "pend": "~1.2.0"
  1408 + }
  1409 + },
  1410 + "finalhandler": {
  1411 + "version": "1.1.2",
  1412 + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz",
  1413 + "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==",
  1414 + "requires": {
  1415 + "debug": "2.6.9",
  1416 + "encodeurl": "~1.0.2",
  1417 + "escape-html": "~1.0.3",
  1418 + "on-finished": "~2.3.0",
  1419 + "parseurl": "~1.3.3",
  1420 + "statuses": "~1.5.0",
  1421 + "unpipe": "~1.0.0"
  1422 + }
  1423 + },
  1424 + "forever-agent": {
  1425 + "version": "0.6.1",
  1426 + "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz",
  1427 + "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE="
  1428 + },
  1429 + "form-data": {
  1430 + "version": "2.3.3",
  1431 + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz",
  1432 + "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==",
  1433 + "requires": {
  1434 + "asynckit": "^0.4.0",
  1435 + "combined-stream": "^1.0.6",
  1436 + "mime-types": "^2.1.12"
  1437 + }
  1438 + },
  1439 + "forwarded": {
  1440 + "version": "0.1.2",
  1441 + "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.1.2.tgz",
  1442 + "integrity": "sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ="
  1443 + },
  1444 + "fresh": {
  1445 + "version": "0.5.2",
  1446 + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz",
  1447 + "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac="
  1448 + },
  1449 + "getpass": {
  1450 + "version": "0.1.7",
  1451 + "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz",
  1452 + "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=",
  1453 + "requires": {
  1454 + "assert-plus": "^1.0.0"
  1455 + }
  1456 + },
  1457 + "har-schema": {
  1458 + "version": "2.0.0",
  1459 + "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz",
  1460 + "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI="
  1461 + },
  1462 + "har-validator": {
  1463 + "version": "5.1.3",
  1464 + "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.3.tgz",
  1465 + "integrity": "sha512-sNvOCzEQNr/qrvJgc3UG/kD4QtlHycrzwS+6mfTrrSq97BvaYcPZZI1ZSqGSPR73Cxn4LKTD4PttRwfU7jWq5g==",
  1466 + "requires": {
  1467 + "ajv": "^6.5.5",
  1468 + "har-schema": "^2.0.0"
  1469 + }
  1470 + },
  1471 + "hash-base": {
  1472 + "version": "3.0.4",
  1473 + "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.0.4.tgz",
  1474 + "integrity": "sha1-X8hoaEfs1zSZQDMZprCj8/auSRg=",
  1475 + "requires": {
  1476 + "inherits": "^2.0.1",
  1477 + "safe-buffer": "^5.0.1"
  1478 + }
  1479 + },
  1480 + "http": {
  1481 + "version": "0.0.0",
  1482 + "resolved": "https://registry.npmjs.org/http/-/http-0.0.0.tgz",
  1483 + "integrity": "sha1-huYybSnF0Dnen6xYSkVon5KfT3I="
  1484 + },
  1485 + "http-errors": {
  1486 + "version": "1.7.2",
  1487 + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.7.2.tgz",
  1488 + "integrity": "sha512-uUQBt3H/cSIVfch6i1EuPNy/YsRSOUBXTVfZ+yR7Zjez3qjBz6i9+i4zjNaoqcoFVI4lQJ5plg63TvGfRSDCRg==",
  1489 + "requires": {
  1490 + "depd": "~1.1.2",
  1491 + "inherits": "2.0.3",
  1492 + "setprototypeof": "1.1.1",
  1493 + "statuses": ">= 1.5.0 < 2",
  1494 + "toidentifier": "1.0.0"
  1495 + }
  1496 + },
  1497 + "http-signature": {
  1498 + "version": "1.2.0",
  1499 + "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz",
  1500 + "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=",
  1501 + "requires": {
  1502 + "assert-plus": "^1.0.0",
  1503 + "jsprim": "^1.2.2",
  1504 + "sshpk": "^1.7.0"
  1505 + }
  1506 + },
  1507 + "iconv-lite": {
  1508 + "version": "0.4.24",
  1509 + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz",
  1510 + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==",
  1511 + "requires": {
  1512 + "safer-buffer": ">= 2.1.2 < 3"
  1513 + }
  1514 + },
  1515 + "inherits": {
  1516 + "version": "2.0.3",
  1517 + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz",
  1518 + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4="
  1519 + },
  1520 + "ipaddr.js": {
  1521 + "version": "1.9.0",
  1522 + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.0.tgz",
  1523 + "integrity": "sha512-M4Sjn6N/+O6/IXSJseKqHoFc+5FdGJ22sXqnjTpdZweHK64MzEPAyQZyEU3R/KRv2GLoa7nNtg/C2Ev6m7z+eA=="
  1524 + },
  1525 + "is-buffer": {
  1526 + "version": "1.1.6",
  1527 + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz",
  1528 + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w=="
  1529 + },
  1530 + "is-stream": {
  1531 + "version": "1.1.0",
  1532 + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz",
  1533 + "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ="
  1534 + },
  1535 + "is-typedarray": {
  1536 + "version": "1.0.0",
  1537 + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz",
  1538 + "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo="
  1539 + },
  1540 + "isarray": {
  1541 + "version": "1.0.0",
  1542 + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
  1543 + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE="
  1544 + },
  1545 + "isstream": {
  1546 + "version": "0.1.2",
  1547 + "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz",
  1548 + "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo="
  1549 + },
  1550 + "jsbn": {
  1551 + "version": "0.1.1",
  1552 + "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz",
  1553 + "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM="
  1554 + },
  1555 + "json-edm-parser": {
  1556 + "version": "0.1.2",
  1557 + "resolved": "https://registry.npmjs.org/json-edm-parser/-/json-edm-parser-0.1.2.tgz",
  1558 + "integrity": "sha1-HmCw/vG8CvZ7wNFG393lSGzWFbQ=",
  1559 + "requires": {
  1560 + "jsonparse": "~1.2.0"
  1561 + }
  1562 + },
  1563 + "json-schema": {
  1564 + "version": "0.2.3",
  1565 + "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz",
  1566 + "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM="
  1567 + },
  1568 + "json-schema-traverse": {
  1569 + "version": "0.4.1",
  1570 + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
  1571 + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg=="
  1572 + },
  1573 + "json-stringify-safe": {
  1574 + "version": "5.0.1",
  1575 + "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz",
  1576 + "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus="
  1577 + },
  1578 + "jsonparse": {
  1579 + "version": "1.2.0",
  1580 + "resolved": "https://registry.npmjs.org/jsonparse/-/jsonparse-1.2.0.tgz",
  1581 + "integrity": "sha1-XAxWhRBxYOcv50ib3eoLRMK8Z70="
  1582 + },
  1583 + "jsprim": {
  1584 + "version": "1.4.1",
  1585 + "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz",
  1586 + "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=",
  1587 + "requires": {
  1588 + "assert-plus": "1.0.0",
  1589 + "extsprintf": "1.3.0",
  1590 + "json-schema": "0.2.3",
  1591 + "verror": "1.10.0"
  1592 + }
  1593 + },
  1594 + "jstoxml": {
  1595 + "version": "1.6.5",
  1596 + "resolved": "https://registry.npmjs.org/jstoxml/-/jstoxml-1.6.5.tgz",
  1597 + "integrity": "sha512-ozA5AwbLnsm6ft6hHh/raabjwGN7FekIwa42WAFEkF3ZKEeXJLfS6/4GlkbOZglFBfadM75nowCRfhw/ojmd9g=="
  1598 + },
  1599 + "jwa": {
  1600 + "version": "1.4.1",
  1601 + "resolved": "https://registry.npmjs.org/jwa/-/jwa-1.4.1.tgz",
  1602 + "integrity": "sha512-qiLX/xhEEFKUAJ6FiBMbes3w9ATzyk5W7Hvzpa/SLYdxNtng+gcurvrI7TbACjIXlsJyr05/S1oUhZrc63evQA==",
  1603 + "requires": {
  1604 + "buffer-equal-constant-time": "1.0.1",
  1605 + "ecdsa-sig-formatter": "1.0.11",
  1606 + "safe-buffer": "^5.0.1"
  1607 + }
  1608 + },
  1609 + "jws": {
  1610 + "version": "3.2.2",
  1611 + "resolved": "https://registry.npmjs.org/jws/-/jws-3.2.2.tgz",
  1612 + "integrity": "sha512-YHlZCB6lMTllWDtSPHz/ZXTsi8S00usEV6v1tjq8tOUZzw7DpSDWVXjXDre6ed1w/pd495ODpHZYSdkRTsa0HA==",
  1613 + "requires": {
  1614 + "jwa": "^1.4.1",
  1615 + "safe-buffer": "^5.0.1"
  1616 + }
  1617 + },
  1618 + "kareem": {
  1619 + "version": "2.3.1",
  1620 + "resolved": "https://registry.npmjs.org/kareem/-/kareem-2.3.1.tgz",
  1621 + "integrity": "sha512-l3hLhffs9zqoDe8zjmb/mAN4B8VT3L56EUvKNqLFVs9YlFA+zx7ke1DO8STAdDyYNkeSo1nKmjuvQeI12So8Xw=="
  1622 + },
  1623 + "lodash": {
  1624 + "version": "4.17.15",
  1625 + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz",
  1626 + "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A=="
  1627 + },
  1628 + "md5.js": {
  1629 + "version": "1.3.4",
  1630 + "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.4.tgz",
  1631 + "integrity": "sha1-6b296UogpawYsENA/Fdk1bCdkB0=",
  1632 + "requires": {
  1633 + "hash-base": "^3.0.0",
  1634 + "inherits": "^2.0.1"
  1635 + }
  1636 + },
  1637 + "media-typer": {
  1638 + "version": "0.3.0",
  1639 + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz",
  1640 + "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g="
  1641 + },
  1642 + "memory-pager": {
  1643 + "version": "1.5.0",
  1644 + "resolved": "https://registry.npmjs.org/memory-pager/-/memory-pager-1.5.0.tgz",
  1645 + "integrity": "sha512-ZS4Bp4r/Zoeq6+NLJpP+0Zzm0pR8whtGPf1XExKLJBAczGMnSi3It14OiNCStjQjM6NU1okjQGSxgEZN8eBYKg==",
  1646 + "optional": true
  1647 + },
  1648 + "merge-descriptors": {
  1649 + "version": "1.0.1",
  1650 + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz",
  1651 + "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E="
  1652 + },
  1653 + "methods": {
  1654 + "version": "1.1.2",
  1655 + "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz",
  1656 + "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4="
  1657 + },
  1658 + "mime": {
  1659 + "version": "1.6.0",
  1660 + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz",
  1661 + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg=="
  1662 + },
  1663 + "mime-db": {
  1664 + "version": "1.43.0",
  1665 + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.43.0.tgz",
  1666 + "integrity": "sha512-+5dsGEEovYbT8UY9yD7eE4XTc4UwJ1jBYlgaQQF38ENsKR3wj/8q8RFZrF9WIZpB2V1ArTVFUva8sAul1NzRzQ=="
  1667 + },
  1668 + "mime-types": {
  1669 + "version": "2.1.26",
  1670 + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.26.tgz",
  1671 + "integrity": "sha512-01paPWYgLrkqAyrlDorC1uDwl2p3qZT7yl806vW7DvDoxwXi46jsjFbg+WdwotBIk6/MbEhO/dh5aZ5sNj/dWQ==",
  1672 + "requires": {
  1673 + "mime-db": "1.43.0"
  1674 + }
  1675 + },
  1676 + "moment": {
  1677 + "version": "2.24.0",
  1678 + "resolved": "https://registry.npmjs.org/moment/-/moment-2.24.0.tgz",
  1679 + "integrity": "sha512-bV7f+6l2QigeBBZSM/6yTNq4P2fNpSWj/0e7jQcy87A8e7o2nAfP/34/2ky5Vw4B9S446EtIhodAzkFCcR4dQg=="
  1680 + },
  1681 + "mongodb": {
  1682 + "version": "3.5.8",
  1683 + "resolved": "https://registry.npmjs.org/mongodb/-/mongodb-3.5.8.tgz",
  1684 + "integrity": "sha512-jz7mR58z66JKL8Px4ZY+FXbgB7d0a0hEGCT7kw8iye46/gsqPrOEpZOswwJ2BQlfzsrCLKdsF9UcaUfGVN2HrQ==",
  1685 + "requires": {
  1686 + "bl": "^2.2.0",
  1687 + "bson": "^1.1.4",
  1688 + "denque": "^1.4.1",
  1689 + "require_optional": "^1.0.1",
  1690 + "safe-buffer": "^5.1.2",
  1691 + "saslprep": "^1.0.0"
  1692 + }
  1693 + },
  1694 + "mongoose": {
  1695 + "version": "5.9.18",
  1696 + "resolved": "https://registry.npmjs.org/mongoose/-/mongoose-5.9.18.tgz",
  1697 + "integrity": "sha512-agZbIuQcN1gZ12BJn6KesA+bgsvoLVjCwhfPw88hggxX8O24SWK4EJwN35GEZKDej9AHUZKNAPgmdeXCVQxviA==",
  1698 + "requires": {
  1699 + "bson": "^1.1.4",
  1700 + "kareem": "2.3.1",
  1701 + "mongodb": "3.5.8",
  1702 + "mongoose-legacy-pluralize": "1.0.2",
  1703 + "mpath": "0.7.0",
  1704 + "mquery": "3.2.2",
  1705 + "ms": "2.1.2",
  1706 + "regexp-clone": "1.0.0",
  1707 + "safe-buffer": "5.1.2",
  1708 + "sift": "7.0.1",
  1709 + "sliced": "1.0.1"
  1710 + },
  1711 + "dependencies": {
  1712 + "ms": {
  1713 + "version": "2.1.2",
  1714 + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
  1715 + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
  1716 + }
  1717 + }
  1718 + },
  1719 + "mongoose-legacy-pluralize": {
  1720 + "version": "1.0.2",
  1721 + "resolved": "https://registry.npmjs.org/mongoose-legacy-pluralize/-/mongoose-legacy-pluralize-1.0.2.tgz",
  1722 + "integrity": "sha512-Yo/7qQU4/EyIS8YDFSeenIvXxZN+ld7YdV9LqFVQJzTLye8unujAWPZ4NWKfFA+RNjh+wvTWKY9Z3E5XM6ZZiQ=="
  1723 + },
  1724 + "mpath": {
  1725 + "version": "0.7.0",
  1726 + "resolved": "https://registry.npmjs.org/mpath/-/mpath-0.7.0.tgz",
  1727 + "integrity": "sha512-Aiq04hILxhz1L+f7sjGyn7IxYzWm1zLNNXcfhDtx04kZ2Gk7uvFdgZ8ts1cWa/6d0TQmag2yR8zSGZUmp0tFNg=="
  1728 + },
  1729 + "mpns": {
  1730 + "version": "2.1.3",
  1731 + "resolved": "https://registry.npmjs.org/mpns/-/mpns-2.1.3.tgz",
  1732 + "integrity": "sha512-gPLNoVqwYoKUmNYZ2shMSdaE2XvHSRxWNzyG4DUi6Av7MSujyeOw/nj61nnQeuV/vke5E0Dni468xn0qxTHIZQ=="
  1733 + },
  1734 + "mquery": {
  1735 + "version": "3.2.2",
  1736 + "resolved": "https://registry.npmjs.org/mquery/-/mquery-3.2.2.tgz",
  1737 + "integrity": "sha512-XB52992COp0KP230I3qloVUbkLUxJIu328HBP2t2EsxSFtf4W1HPSOBWOXf1bqxK4Xbb66lfMJ+Bpfd9/yZE1Q==",
  1738 + "requires": {
  1739 + "bluebird": "3.5.1",
  1740 + "debug": "3.1.0",
  1741 + "regexp-clone": "^1.0.0",
  1742 + "safe-buffer": "5.1.2",
  1743 + "sliced": "1.0.1"
  1744 + },
  1745 + "dependencies": {
  1746 + "debug": {
  1747 + "version": "3.1.0",
  1748 + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz",
  1749 + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==",
  1750 + "requires": {
  1751 + "ms": "2.0.0"
  1752 + }
  1753 + }
  1754 + }
  1755 + },
  1756 + "ms": {
  1757 + "version": "2.0.0",
  1758 + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
  1759 + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g="
  1760 + },
  1761 + "ms-rest": {
  1762 + "version": "2.5.3",
  1763 + "resolved": "https://registry.npmjs.org/ms-rest/-/ms-rest-2.5.3.tgz",
  1764 + "integrity": "sha512-p0CnzrTzEkS8UTEwgCqT2O5YVK9E8KGBBlJVm3hFtMZvf0dmncKYXWFPyUa4PAsfBL7h4jfu39tOIFTu6exntg==",
  1765 + "requires": {
  1766 + "duplexer": "^0.1.1",
  1767 + "is-buffer": "^1.1.6",
  1768 + "is-stream": "^1.1.0",
  1769 + "moment": "^2.21.0",
  1770 + "request": "^2.88.0",
  1771 + "through": "^2.3.8",
  1772 + "tunnel": "0.0.5",
  1773 + "uuid": "^3.2.1"
  1774 + }
  1775 + },
  1776 + "ms-rest-azure": {
  1777 + "version": "2.6.0",
  1778 + "resolved": "https://registry.npmjs.org/ms-rest-azure/-/ms-rest-azure-2.6.0.tgz",
  1779 + "integrity": "sha512-J6386a9krZ4VtU7CRt+Ypgo9RGf8+d3gjMBkH7zbkM4zzkhbbMOYiPRaZ+bHZcfihkKLlktTgA6rjshTjF329A==",
  1780 + "requires": {
  1781 + "adal-node": "^0.1.28",
  1782 + "async": "2.6.0",
  1783 + "moment": "^2.22.2",
  1784 + "ms-rest": "^2.3.2",
  1785 + "request": "^2.88.0",
  1786 + "uuid": "^3.2.1"
  1787 + }
  1788 + },
  1789 + "multiparty": {
  1790 + "version": "4.2.1",
  1791 + "resolved": "https://registry.npmjs.org/multiparty/-/multiparty-4.2.1.tgz",
  1792 + "integrity": "sha512-AvESCnNoQlZiOfP9R4mxN8M9csy2L16EIbWIkt3l4FuGti9kXBS8QVzlfyg4HEnarJhrzZilgNFlZtqmoiAIIA==",
  1793 + "requires": {
  1794 + "fd-slicer": "1.1.0",
  1795 + "http-errors": "~1.7.0",
  1796 + "safe-buffer": "5.1.2",
  1797 + "uid-safe": "2.1.5"
  1798 + }
  1799 + },
  1800 + "n_": {
  1801 + "version": "2.0.2",
  1802 + "resolved": "https://registry.npmjs.org/n_/-/n_-2.0.2.tgz",
  1803 + "integrity": "sha512-IiIfzu2BkOKmFrKkuP4BgB72hFwvmksUMc+JnUCPsao1CSr3B7vzAq8gv/HFgHrwGxPIBhk7taJ/dc0NtTdBew==",
  1804 + "requires": {
  1805 + "lodash": "^4.17.15",
  1806 + "repl.history": "^0.1.4"
  1807 + }
  1808 + },
  1809 + "negotiator": {
  1810 + "version": "0.6.2",
  1811 + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.2.tgz",
  1812 + "integrity": "sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw=="
  1813 + },
  1814 + "node-json-config": {
  1815 + "version": "0.0.5",
  1816 + "resolved": "https://registry.npmjs.org/node-json-config/-/node-json-config-0.0.5.tgz",
  1817 + "integrity": "sha1-Iaaqgx7lV5djQ8ydqNgKnlSo0Oc="
  1818 + },
  1819 + "oauth-sign": {
  1820 + "version": "0.9.0",
  1821 + "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz",
  1822 + "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ=="
  1823 + },
  1824 + "object-assign": {
  1825 + "version": "4.1.1",
  1826 + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
  1827 + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM="
  1828 + },
  1829 + "on-finished": {
  1830 + "version": "2.3.0",
  1831 + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz",
  1832 + "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=",
  1833 + "requires": {
  1834 + "ee-first": "1.1.1"
  1835 + }
  1836 + },
  1837 + "parseurl": {
  1838 + "version": "1.3.3",
  1839 + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz",
  1840 + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ=="
  1841 + },
  1842 + "path-to-regexp": {
  1843 + "version": "0.1.7",
  1844 + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz",
  1845 + "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w="
  1846 + },
  1847 + "pend": {
  1848 + "version": "1.2.0",
  1849 + "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz",
  1850 + "integrity": "sha1-elfrVQpng/kRUzH89GY9XI4AelA="
  1851 + },
  1852 + "performance-now": {
  1853 + "version": "2.1.0",
  1854 + "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz",
  1855 + "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns="
  1856 + },
  1857 + "process-nextick-args": {
  1858 + "version": "1.0.7",
  1859 + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz",
  1860 + "integrity": "sha1-FQ4gt1ZZCtP5EJPyWk8q2L/zC6M="
  1861 + },
  1862 + "proxy-addr": {
  1863 + "version": "2.0.5",
  1864 + "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.5.tgz",
  1865 + "integrity": "sha512-t/7RxHXPH6cJtP0pRG6smSr9QJidhB+3kXu0KgXnbGYMgzEnUxRQ4/LDdfOwZEMyIh3/xHb8PX3t+lfL9z+YVQ==",
  1866 + "requires": {
  1867 + "forwarded": "~0.1.2",
  1868 + "ipaddr.js": "1.9.0"
  1869 + }
  1870 + },
  1871 + "psl": {
  1872 + "version": "1.7.0",
  1873 + "resolved": "https://registry.npmjs.org/psl/-/psl-1.7.0.tgz",
  1874 + "integrity": "sha512-5NsSEDv8zY70ScRnOTn7bK7eanl2MvFrOrS/R6x+dBt5g1ghnj9Zv90kO8GwT8gxcu2ANyFprnFYB85IogIJOQ=="
  1875 + },
  1876 + "punycode": {
  1877 + "version": "2.1.1",
  1878 + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz",
  1879 + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A=="
  1880 + },
  1881 + "qs": {
  1882 + "version": "6.7.0",
  1883 + "resolved": "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz",
  1884 + "integrity": "sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ=="
  1885 + },
  1886 + "random-bytes": {
  1887 + "version": "1.0.0",
  1888 + "resolved": "https://registry.npmjs.org/random-bytes/-/random-bytes-1.0.0.tgz",
  1889 + "integrity": "sha1-T2ih3Arli9P7lYSMMDJNt11kNgs="
  1890 + },
  1891 + "range-parser": {
  1892 + "version": "1.2.1",
  1893 + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz",
  1894 + "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg=="
  1895 + },
  1896 + "raw-body": {
  1897 + "version": "2.4.0",
  1898 + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.4.0.tgz",
  1899 + "integrity": "sha512-4Oz8DUIwdvoa5qMJelxipzi/iJIi40O5cGV1wNYp5hvZP8ZN0T+jiNkL0QepXs+EsQ9XJ8ipEDoiH70ySUJP3Q==",
  1900 + "requires": {
  1901 + "bytes": "3.1.0",
  1902 + "http-errors": "1.7.2",
  1903 + "iconv-lite": "0.4.24",
  1904 + "unpipe": "1.0.0"
  1905 + }
  1906 + },
  1907 + "readable-stream": {
  1908 + "version": "2.0.6",
  1909 + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.0.6.tgz",
  1910 + "integrity": "sha1-j5A0HmilPMySh4jaz80Rs265t44=",
  1911 + "requires": {
  1912 + "core-util-is": "~1.0.0",
  1913 + "inherits": "~2.0.1",
  1914 + "isarray": "~1.0.0",
  1915 + "process-nextick-args": "~1.0.6",
  1916 + "string_decoder": "~0.10.x",
  1917 + "util-deprecate": "~1.0.1"
  1918 + }
  1919 + },
  1920 + "regexp-clone": {
  1921 + "version": "1.0.0",
  1922 + "resolved": "https://registry.npmjs.org/regexp-clone/-/regexp-clone-1.0.0.tgz",
  1923 + "integrity": "sha512-TuAasHQNamyyJ2hb97IuBEif4qBHGjPHBS64sZwytpLEqtBQ1gPJTnOaQ6qmpET16cK14kkjbazl6+p0RRv0yw=="
  1924 + },
  1925 + "repl.history": {
  1926 + "version": "0.1.4",
  1927 + "resolved": "https://registry.npmjs.org/repl.history/-/repl.history-0.1.4.tgz",
  1928 + "integrity": "sha1-gDZxcfN4HW5CmccXWMJTCX9dWDI="
  1929 + },
  1930 + "request": {
  1931 + "version": "2.88.2",
  1932 + "resolved": "https://registry.npmjs.org/request/-/request-2.88.2.tgz",
  1933 + "integrity": "sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==",
  1934 + "requires": {
  1935 + "aws-sign2": "~0.7.0",
  1936 + "aws4": "^1.8.0",
  1937 + "caseless": "~0.12.0",
  1938 + "combined-stream": "~1.0.6",
  1939 + "extend": "~3.0.2",
  1940 + "forever-agent": "~0.6.1",
  1941 + "form-data": "~2.3.2",
  1942 + "har-validator": "~5.1.3",
  1943 + "http-signature": "~1.2.0",
  1944 + "is-typedarray": "~1.0.0",
  1945 + "isstream": "~0.1.2",
  1946 + "json-stringify-safe": "~5.0.1",
  1947 + "mime-types": "~2.1.19",
  1948 + "oauth-sign": "~0.9.0",
  1949 + "performance-now": "^2.1.0",
  1950 + "qs": "~6.5.2",
  1951 + "safe-buffer": "^5.1.2",
  1952 + "tough-cookie": "~2.5.0",
  1953 + "tunnel-agent": "^0.6.0",
  1954 + "uuid": "^3.3.2"
  1955 + },
  1956 + "dependencies": {
  1957 + "qs": {
  1958 + "version": "6.5.2",
  1959 + "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz",
  1960 + "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA=="
  1961 + }
  1962 + }
  1963 + },
  1964 + "require_optional": {
  1965 + "version": "1.0.1",
  1966 + "resolved": "https://registry.npmjs.org/require_optional/-/require_optional-1.0.1.tgz",
  1967 + "integrity": "sha512-qhM/y57enGWHAe3v/NcwML6a3/vfESLe/sGM2dII+gEO0BpKRUkWZow/tyloNqJyN6kXSl3RyyM8Ll5D/sJP8g==",
  1968 + "requires": {
  1969 + "resolve-from": "^2.0.0",
  1970 + "semver": "^5.1.0"
  1971 + }
  1972 + },
  1973 + "resolve-from": {
  1974 + "version": "2.0.0",
  1975 + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-2.0.0.tgz",
  1976 + "integrity": "sha1-lICrIOlP+h2egKgEx+oUdhGWa1c="
  1977 + },
  1978 + "safe-buffer": {
  1979 + "version": "5.1.2",
  1980 + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
  1981 + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g=="
  1982 + },
  1983 + "safer-buffer": {
  1984 + "version": "2.1.2",
  1985 + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
  1986 + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg=="
  1987 + },
  1988 + "saslprep": {
  1989 + "version": "1.0.3",
  1990 + "resolved": "https://registry.npmjs.org/saslprep/-/saslprep-1.0.3.tgz",
  1991 + "integrity": "sha512-/MY/PEMbk2SuY5sScONwhUDsV2p77Znkb/q3nSVstq/yQzYJOH/Azh29p9oJLsl3LnQwSvZDKagDGBsBwSooag==",
  1992 + "optional": true,
  1993 + "requires": {
  1994 + "sparse-bitfield": "^3.0.3"
  1995 + }
  1996 + },
  1997 + "sax": {
  1998 + "version": "1.2.4",
  1999 + "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz",
  2000 + "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw=="
  2001 + },
  2002 + "semver": {
  2003 + "version": "5.7.1",
  2004 + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
  2005 + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ=="
  2006 + },
  2007 + "send": {
  2008 + "version": "0.17.1",
  2009 + "resolved": "https://registry.npmjs.org/send/-/send-0.17.1.tgz",
  2010 + "integrity": "sha512-BsVKsiGcQMFwT8UxypobUKyv7irCNRHk1T0G680vk88yf6LBByGcZJOTJCrTP2xVN6yI+XjPJcNuE3V4fT9sAg==",
  2011 + "requires": {
  2012 + "debug": "2.6.9",
  2013 + "depd": "~1.1.2",
  2014 + "destroy": "~1.0.4",
  2015 + "encodeurl": "~1.0.2",
  2016 + "escape-html": "~1.0.3",
  2017 + "etag": "~1.8.1",
  2018 + "fresh": "0.5.2",
  2019 + "http-errors": "~1.7.2",
  2020 + "mime": "1.6.0",
  2021 + "ms": "2.1.1",
  2022 + "on-finished": "~2.3.0",
  2023 + "range-parser": "~1.2.1",
  2024 + "statuses": "~1.5.0"
  2025 + },
  2026 + "dependencies": {
  2027 + "ms": {
  2028 + "version": "2.1.1",
  2029 + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz",
  2030 + "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg=="
  2031 + }
  2032 + }
  2033 + },
  2034 + "serve-static": {
  2035 + "version": "1.14.1",
  2036 + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.14.1.tgz",
  2037 + "integrity": "sha512-JMrvUwE54emCYWlTI+hGrGv5I8dEwmco/00EvkzIIsR7MqrHonbD9pO2MOfFnpFntl7ecpZs+3mW+XbQZu9QCg==",
  2038 + "requires": {
  2039 + "encodeurl": "~1.0.2",
  2040 + "escape-html": "~1.0.3",
  2041 + "parseurl": "~1.3.3",
  2042 + "send": "0.17.1"
  2043 + }
  2044 + },
  2045 + "setprototypeof": {
  2046 + "version": "1.1.1",
  2047 + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz",
  2048 + "integrity": "sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw=="
  2049 + },
  2050 + "sift": {
  2051 + "version": "7.0.1",
  2052 + "resolved": "https://registry.npmjs.org/sift/-/sift-7.0.1.tgz",
  2053 + "integrity": "sha512-oqD7PMJ+uO6jV9EQCl0LrRw1OwsiPsiFQR5AR30heR+4Dl7jBBbDLnNvWiak20tzZlSE1H7RB30SX/1j/YYT7g=="
  2054 + },
  2055 + "sliced": {
  2056 + "version": "1.0.1",
  2057 + "resolved": "https://registry.npmjs.org/sliced/-/sliced-1.0.1.tgz",
  2058 + "integrity": "sha1-CzpmK10Ewxd7GSa+qCsD+Dei70E="
  2059 + },
  2060 + "sparse-bitfield": {
  2061 + "version": "3.0.3",
  2062 + "resolved": "https://registry.npmjs.org/sparse-bitfield/-/sparse-bitfield-3.0.3.tgz",
  2063 + "integrity": "sha1-/0rm5oZWBWuks+eSqzM004JzyhE=",
  2064 + "optional": true,
  2065 + "requires": {
  2066 + "memory-pager": "^1.0.2"
  2067 + }
  2068 + },
  2069 + "sshpk": {
  2070 + "version": "1.16.1",
  2071 + "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.16.1.tgz",
  2072 + "integrity": "sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg==",
  2073 + "requires": {
  2074 + "asn1": "~0.2.3",
  2075 + "assert-plus": "^1.0.0",
  2076 + "bcrypt-pbkdf": "^1.0.0",
  2077 + "dashdash": "^1.12.0",
  2078 + "ecc-jsbn": "~0.1.1",
  2079 + "getpass": "^0.1.1",
  2080 + "jsbn": "~0.1.0",
  2081 + "safer-buffer": "^2.0.2",
  2082 + "tweetnacl": "~0.14.0"
  2083 + }
  2084 + },
  2085 + "statuses": {
  2086 + "version": "1.5.0",
  2087 + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz",
  2088 + "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow="
  2089 + },
  2090 + "string_decoder": {
  2091 + "version": "0.10.31",
  2092 + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz",
  2093 + "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ="
  2094 + },
  2095 + "through": {
  2096 + "version": "2.3.8",
  2097 + "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz",
  2098 + "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU="
  2099 + },
  2100 + "toidentifier": {
  2101 + "version": "1.0.0",
  2102 + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.0.tgz",
  2103 + "integrity": "sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw=="
  2104 + },
  2105 + "tough-cookie": {
  2106 + "version": "2.5.0",
  2107 + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz",
  2108 + "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==",
  2109 + "requires": {
  2110 + "psl": "^1.1.28",
  2111 + "punycode": "^2.1.1"
  2112 + }
  2113 + },
  2114 + "tunnel": {
  2115 + "version": "0.0.5",
  2116 + "resolved": "https://registry.npmjs.org/tunnel/-/tunnel-0.0.5.tgz",
  2117 + "integrity": "sha512-gj5sdqherx4VZKMcBA4vewER7zdK25Td+z1npBqpbDys4eJrLx+SlYjJvq1bDXs2irkuJM5pf8ktaEQVipkrbA=="
  2118 + },
  2119 + "tunnel-agent": {
  2120 + "version": "0.6.0",
  2121 + "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz",
  2122 + "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=",
  2123 + "requires": {
  2124 + "safe-buffer": "^5.0.1"
  2125 + }
  2126 + },
  2127 + "tweetnacl": {
  2128 + "version": "0.14.5",
  2129 + "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz",
  2130 + "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q="
  2131 + },
  2132 + "type-is": {
  2133 + "version": "1.6.18",
  2134 + "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz",
  2135 + "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==",
  2136 + "requires": {
  2137 + "media-typer": "0.3.0",
  2138 + "mime-types": "~2.1.24"
  2139 + }
  2140 + },
  2141 + "uid-safe": {
  2142 + "version": "2.1.5",
  2143 + "resolved": "https://registry.npmjs.org/uid-safe/-/uid-safe-2.1.5.tgz",
  2144 + "integrity": "sha512-KPHm4VL5dDXKz01UuEd88Df+KzynaohSL9fBh096KWAxSKZQDI2uBrVqtvRM4rwrIrRRKsdLNML/lnaaVSRioA==",
  2145 + "requires": {
  2146 + "random-bytes": "~1.0.0"
  2147 + }
  2148 + },
  2149 + "underscore": {
  2150 + "version": "1.8.3",
  2151 + "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.8.3.tgz",
  2152 + "integrity": "sha1-Tz+1OxBuYJf8+ctBCfKl6b36UCI="
  2153 + },
  2154 + "unirest": {
  2155 + "version": "0.6.0",
  2156 + "resolved": "https://registry.npmjs.org/unirest/-/unirest-0.6.0.tgz",
  2157 + "integrity": "sha512-BdYdcYJHXACqZ53k8Zz7QlNK/1W/HjCZlmg1OaaN/oTSp4FTWh0upXGSJsG88PljDBpSrNc2R649drasUA9NEg==",
  2158 + "requires": {
  2159 + "form-data": "^0.2.0",
  2160 + "mime": "^2.4.0",
  2161 + "request": "^2.88.0"
  2162 + },
  2163 + "dependencies": {
  2164 + "async": {
  2165 + "version": "0.9.2",
  2166 + "resolved": "https://registry.npmjs.org/async/-/async-0.9.2.tgz",
  2167 + "integrity": "sha1-rqdNXmHB+JlhO/ZL2mbUx48v0X0="
  2168 + },
  2169 + "combined-stream": {
  2170 + "version": "0.0.7",
  2171 + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-0.0.7.tgz",
  2172 + "integrity": "sha1-ATfmV7qlp1QcV6w3rF/AfXO03B8=",
  2173 + "requires": {
  2174 + "delayed-stream": "0.0.5"
  2175 + }
  2176 + },
  2177 + "delayed-stream": {
  2178 + "version": "0.0.5",
  2179 + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-0.0.5.tgz",
  2180 + "integrity": "sha1-1LH0OpPoKW3+AmlPRoC8N6MTxz8="
  2181 + },
  2182 + "form-data": {
  2183 + "version": "0.2.0",
  2184 + "resolved": "https://registry.npmjs.org/form-data/-/form-data-0.2.0.tgz",
  2185 + "integrity": "sha1-Jvi8JtpkQOKZy9z7aQNcT3em5GY=",
  2186 + "requires": {
  2187 + "async": "~0.9.0",
  2188 + "combined-stream": "~0.0.4",
  2189 + "mime-types": "~2.0.3"
  2190 + }
  2191 + },
  2192 + "mime": {
  2193 + "version": "2.4.4",
  2194 + "resolved": "https://registry.npmjs.org/mime/-/mime-2.4.4.tgz",
  2195 + "integrity": "sha512-LRxmNwziLPT828z+4YkNzloCFC2YM4wrB99k+AV5ZbEyfGNWfG8SO1FUXLmLDBSo89NrJZ4DIWeLjy1CHGhMGA=="
  2196 + },
  2197 + "mime-db": {
  2198 + "version": "1.12.0",
  2199 + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.12.0.tgz",
  2200 + "integrity": "sha1-PQxjGA9FjrENMlqqN9fFiuMS6dc="
  2201 + },
  2202 + "mime-types": {
  2203 + "version": "2.0.14",
  2204 + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.0.14.tgz",
  2205 + "integrity": "sha1-MQ4VnbI+B3+Lsit0jav6SVcUCqY=",
  2206 + "requires": {
  2207 + "mime-db": "~1.12.0"
  2208 + }
  2209 + }
  2210 + }
  2211 + },
  2212 + "unpipe": {
  2213 + "version": "1.0.0",
  2214 + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz",
  2215 + "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw="
  2216 + },
  2217 + "uri-js": {
  2218 + "version": "4.2.2",
  2219 + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz",
  2220 + "integrity": "sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ==",
  2221 + "requires": {
  2222 + "punycode": "^2.1.0"
  2223 + }
  2224 + },
  2225 + "util-deprecate": {
  2226 + "version": "1.0.2",
  2227 + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
  2228 + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8="
  2229 + },
  2230 + "utils-merge": {
  2231 + "version": "1.0.1",
  2232 + "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz",
  2233 + "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM="
  2234 + },
  2235 + "uuid": {
  2236 + "version": "3.4.0",
  2237 + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz",
  2238 + "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A=="
  2239 + },
  2240 + "validator": {
  2241 + "version": "9.4.1",
  2242 + "resolved": "https://registry.npmjs.org/validator/-/validator-9.4.1.tgz",
  2243 + "integrity": "sha512-YV5KjzvRmSyJ1ee/Dm5UED0G+1L4GZnLN3w6/T+zZm8scVua4sOhYKWTUrKa0H/tMiJyO9QLHMPN+9mB/aMunA=="
  2244 + },
  2245 + "vary": {
  2246 + "version": "1.1.2",
  2247 + "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz",
  2248 + "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw="
  2249 + },
  2250 + "verror": {
  2251 + "version": "1.10.0",
  2252 + "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz",
  2253 + "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=",
  2254 + "requires": {
  2255 + "assert-plus": "^1.0.0",
  2256 + "core-util-is": "1.0.2",
  2257 + "extsprintf": "^1.2.0"
  2258 + }
  2259 + },
  2260 + "wns": {
  2261 + "version": "0.5.4",
  2262 + "resolved": "https://registry.npmjs.org/wns/-/wns-0.5.4.tgz",
  2263 + "integrity": "sha512-WYiJ7khIwUGBD5KAm+YYmwJDDRzFRs4YGAjtbFSoRIdbn9Jcix3p9khJmpvBTXGommaKkvduAn+pc9l4d9yzVQ=="
  2264 + },
  2265 + "xml2js": {
  2266 + "version": "0.4.23",
  2267 + "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.4.23.tgz",
  2268 + "integrity": "sha512-ySPiMjM0+pLDftHgXY4By0uswI3SPKLDw/i3UXbnO8M/p28zqexCUoPmQFrYD+/1BzhGJSs2i1ERWKJAtiLrug==",
  2269 + "requires": {
  2270 + "sax": ">=0.6.0",
  2271 + "xmlbuilder": "~11.0.0"
  2272 + },
  2273 + "dependencies": {
  2274 + "xmlbuilder": {
  2275 + "version": "11.0.1",
  2276 + "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-11.0.1.tgz",
  2277 + "integrity": "sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA=="
  2278 + }
  2279 + }
  2280 + },
  2281 + "xmlbuilder": {
  2282 + "version": "0.4.3",
  2283 + "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-0.4.3.tgz",
  2284 + "integrity": "sha1-xGFLp04K0ZbmCcknLNnh3bKKilg="
  2285 + },
  2286 + "xmldom": {
  2287 + "version": "0.2.1",
  2288 + "resolved": "https://registry.npmjs.org/xmldom/-/xmldom-0.2.1.tgz",
  2289 + "integrity": "sha512-kXXiYvmblIgEemGeB75y97FyaZavx6SQhGppLw5TKWAD2Wd0KAly0g23eVLh17YcpxZpnFym1Qk/eaRjy1APPg=="
  2290 + },
  2291 + "xpath.js": {
  2292 + "version": "1.1.0",
  2293 + "resolved": "https://registry.npmjs.org/xpath.js/-/xpath.js-1.1.0.tgz",
  2294 + "integrity": "sha512-jg+qkfS4K8E7965sqaUl8mRngXiKb3WZGfONgE18pr03FUQiuSV6G+Ej4tS55B+rIQSFEIw3phdVAQ4pPqNWfQ=="
  2295 + }
  2296 + }
  2297 +}
... ...
package.json 0 → 100644
  1 +++ a/package.json
... ... @@ -0,0 +1,28 @@
  1 +{
  2 + "name": "funtion_req_partner",
  3 + "version": "1.0.0",
  4 + "description": "",
  5 + "main": "app.js",
  6 + "scripts": {
  7 + "test": "echo \"Error: no test specified\" && exit 1"
  8 + },
  9 + "author": "",
  10 + "license": "ISC",
  11 + "dependencies": {
  12 + "azure": "^2.3.1-preview",
  13 + "azure-storage": "^2.10.3",
  14 + "body-parser": "^1.19.0",
  15 + "connect-multiparty": "^2.2.0",
  16 + "cors": "^2.8.5",
  17 + "express": "^4.17.1",
  18 + "http": "0.0.0",
  19 + "jstoxml": "^1.6.5",
  20 + "lodash": "^4.17.15",
  21 + "mongodb": "^3.5.8",
  22 + "mongoose": "^5.9.18",
  23 + "multiparty": "^4.2.1",
  24 + "n_": "^2.0.2",
  25 + "node-json-config": "0.0.5",
  26 + "unirest": "^0.6.0"
  27 + }
  28 +}
... ...
req_partner_manager.js 0 → 100644
  1 +++ a/req_partner_manager.js
... ... @@ -0,0 +1,216 @@
  1 +let _ = require('lodash')
  2 +module.exports = function(reqBody, partnerConfig) {
  3 + this.reqBody = reqBody;
  4 + this.partnerConfig = JSON.parse(JSON.stringify(partnerConfig));
  5 + this.requestApi = function() {
  6 +
  7 + try {
  8 + let body;
  9 + let headers = getReqHeader(this.partnerConfig.request.header, this.reqBody);
  10 + this.partnerConfig.request.header = headers
  11 +
  12 + if(this.partnerConfig.request.ContentType == 'application/json') {
  13 + body = getReqBodyJson(this.partnerConfig.request.body, this.reqBody)
  14 + } else if(this.partnerConfig.request.ContentType == 'text/xml'){
  15 + body = getReqBodyXml(this.partnerConfig.request.body, this.reqBody)
  16 + } else {
  17 + throw {
  18 + status : 'unsupport',
  19 + cause : 'unsupport content-type ' + this.partnerConfig.request.ContentType
  20 + }
  21 + }
  22 + // console.log('body', body)
  23 + if(body) {
  24 + this.partnerConfig.request.body = body
  25 + }
  26 +
  27 + return this.partnerConfig.request;
  28 + } catch (err) {
  29 + console.log(err)
  30 + return new Error(JSON.stringify(err));
  31 + }
  32 +
  33 + }
  34 +}
  35 +
  36 +function getReqHeader(headers, dataHeaders) {
  37 + let headersObject = {};
  38 + headers = replaceSpace(headers).split(',');
  39 +
  40 + //replce headers
  41 + for(let headerIndex in headers) {
  42 + let header = headers[headerIndex];
  43 + let key = header.split('=')[0]
  44 + if(header.indexOf('$') !== -1) {
  45 + let keyValue = header.split('$')[1];
  46 + headers[headerIndex] = header.replace('$'+keyValue,replaceValueMadatory(keyValue,dataHeaders));
  47 + }
  48 + headersObject[key] = headers[headerIndex].split('=')[1];
  49 + }
  50 +
  51 + return headersObject;
  52 +}
  53 +
  54 +function getReqBodyJson(bodyJson, dataBodyJson) {
  55 + let bodyObject = {};
  56 + bodyJson = replaceSpace(bodyJson).split(',')
  57 +
  58 + //replce body
  59 + for(let bodyIndex in bodyJson) {
  60 + let body = bodyJson[bodyIndex];
  61 + let key = body.split('=')[0];
  62 + let keyValue = bodyJson[bodyIndex].split('=')[1]
  63 + let insertKeyFlag = true;
  64 + if(key.indexOf('@') !== -1) { // case array
  65 + insertKeyFlag = false
  66 + // let tempObjectArray = {}
  67 + let keyArray = searchKeyArray(key);
  68 + let keyValueArray = searchKeyArray(keyValue);
  69 + if(searchValueArray(keyValue, keyValueArray, dataBodyJson)) {
  70 + let index = 0;
  71 + let breakWhile = true;
  72 + while(breakWhile) {
  73 + let findKey = keyValue.replace(keyValue,keyValueArray.substring(1) + '['+index+']');
  74 + let keyObject = keyArray.replace(keyArray,keyArray.substring(1) + '['+index+']');
  75 + if(_.has(dataBodyJson, findKey)) {
  76 + bodyObject[keyObject] = _.get(dataBodyJson, findKey)
  77 + } else {
  78 + breakWhile = false
  79 + }
  80 + // bodyObject[findKey] = bodyJson[bodyIndex].split('=')[1];
  81 + index++
  82 + }
  83 + } else {
  84 + throw {
  85 + status : 'missing',
  86 + cause : 'missing parameter ' + key
  87 + }
  88 + }
  89 + } else { // case object
  90 + if(body.indexOf('$') !== -1) {
  91 + let keyValue = body.split('$')[1];
  92 + bodyJson[bodyIndex] = body.replace('$'+keyValue,replaceValueMadatory(keyValue,dataBodyJson));
  93 + } else if(body.indexOf('?') !== -1) {
  94 + let keyValue = body.split('?')[1];
  95 + if(checkValueOptional(keyValue, dataBodyJson)) {
  96 + bodyJson[bodyIndex] = body.replace('?'+keyValue,replaceValueOptional(keyValue,dataBodyJson));
  97 + } else {
  98 + insertKeyFlag = false;
  99 + }
  100 + }
  101 + }
  102 +
  103 + if(insertKeyFlag) {
  104 + bodyObject[key] = bodyJson[bodyIndex].split('=')[1];
  105 + } else {
  106 + insertKeyFlag = true;
  107 + }
  108 + }
  109 +
  110 + return buildDataToObject(bodyObject);
  111 +
  112 +}
  113 +
  114 +function getReqBodyXml(bodyXml, dataBodyXml) {
  115 +
  116 + let listKeyReplace = {};
  117 + let tempXml = bodyXml;
  118 + let index = 0;
  119 +
  120 + while (true) {
  121 + index = tempXml.indexOf('>$')
  122 + if(index === -1) {
  123 + index = tempXml.indexOf('>?')
  124 + if(index === -1) {
  125 + break;
  126 + }
  127 + }
  128 + let first = tempXml.substring(tempXml.substring(0, index).lastIndexOf('<'),index+1)
  129 + let last = tempXml.substring(index+1).substring(0, tempXml.substring(index+1).indexOf('>')+1)
  130 + let valueKey = last.substring(0, last.indexOf('<'));
  131 + let fullKey = first + last;
  132 + listKeyReplace[fullKey] = valueKey;
  133 + tempXml = tempXml.substring(tempXml.indexOf(fullKey) + fullKey.length);
  134 + // console.log(tempXml);
  135 + }
  136 +
  137 + let valueXml = getValueXml(listKeyReplace, dataBodyXml)
  138 + console.log(valueXml)
  139 +
  140 + for(let valueXmlKey in valueXml) {
  141 + if(valueXml[valueXmlKey] === undefined) {
  142 + bodyXml = bodyXml.replace(valueXmlKey, '')
  143 + } else {
  144 + bodyXml = bodyXml.replace(valueXmlKey, valueXml[valueXmlKey])
  145 + }
  146 + }
  147 +
  148 + return bodyXml
  149 +}
  150 +
  151 +function getValueXml(listKeyXml, dataBodyXml) {
  152 +
  153 + for(let key in listKeyXml) {
  154 + if(listKeyXml[key].startsWith('$')) {
  155 + listKeyXml[key] = key.replace(listKeyXml[key], replaceValueMadatory(listKeyXml[key].substring(1), dataBodyXml))
  156 + } else if(listKeyXml[key].startsWith('?')){
  157 + if(checkValueOptional(listKeyXml[key].substring(1), dataBodyXml)) {
  158 + listKeyXml[key] = key.replace(listKeyXml[key], replaceValueOptional(listKeyXml[key].substring(1), dataBodyXml))
  159 + } else {
  160 + listKeyXml[key] = ''
  161 + }
  162 + }
  163 + }
  164 +
  165 + return listKeyXml;
  166 +}
  167 +
  168 +function replaceSpace(data) {
  169 + return data && typeof data == 'string' ? data.replace(/ /g, '') : data;
  170 +}
  171 +
  172 +function replaceValueMadatory(key, value) {
  173 + if(_.has(value, key)) {
  174 + return _.get(value, key);
  175 + } else {
  176 + throw {
  177 + status : 'missing',
  178 + cause : 'missing parameter ' + key
  179 + };
  180 + }
  181 +}
  182 +
  183 +function replaceValueOptional(key, value) {
  184 + if(_.has(value, key)) {
  185 + return _.get(value, key);
  186 + } else {
  187 + return;
  188 + }
  189 +}
  190 +
  191 +function checkValueOptional(key, value) {
  192 + return _.has(value, key) ? true : false;
  193 +}
  194 +
  195 +function buildDataToObject(dataObject) {
  196 + let newObject = {}
  197 +
  198 + for(let key in dataObject) {
  199 + _.set(newObject,key,dataObject[key]);
  200 + }
  201 +
  202 + return newObject;
  203 +}
  204 +
  205 +function searchKeyArray(key) {
  206 + let indexArr = key.indexOf('@')
  207 + let lastIndexArr = key.substring(indexArr).indexOf('.')
  208 + let keyArray = key.substring(indexArr, lastIndexArr !== -1 ? lastIndexArr + indexArr : key.length)
  209 + return keyArray;
  210 +}
  211 +
  212 +function searchValueArray(key, idenKey, value) {
  213 + let findKey = key.replace(key,idenKey.substring(1) + '[0]')
  214 + console.log('findKeyArr', findKey)
  215 + return _.has(value,findKey)
  216 +}
0 217 \ No newline at end of file
... ...
scf.js 0 → 100644
  1 +++ a/scf.js
... ... @@ -0,0 +1,20 @@
  1 +module.exports.decryptPrivateId = async (req, res) => {
  2 + console.log('===== GET DecryptPrivateId =====')
  3 + console.log('url', req.originalUrl);
  4 + console.log('headers', req.headers);
  5 + console.log('query', req.query);
  6 + console.log('params', req.params);
  7 + console.log('body', req.body);
  8 +
  9 +
  10 + let response = {
  11 + "developerMessage": "Success",
  12 + "resultCode": "20000",
  13 + "moreInfo": "http://smaf.pantry.ais.error/scf/20000",
  14 + "privateId": "5642356709765412340987473628192039562918@ais.co.th",
  15 + "partnerId": "30010",
  16 + "publicId": "886561802@gmail.com"
  17 + }
  18 +
  19 + res.send(response)
  20 +}
0 21 \ No newline at end of file
... ...
ssb.js 0 → 100644
  1 +++ a/ssb.js
... ... @@ -0,0 +1,160 @@
  1 +module.exports.getProfileType = async (req, res) => {
  2 + console.log('===== GET ProfileType =====')
  3 + console.log('url', req.originalUrl);
  4 + console.log('headers', req.headers);
  5 + console.log('query', req.query);
  6 + console.log('params', req.params);
  7 +
  8 + let response = {
  9 + "resultCode": "20000",
  10 + "developerMessage": "Success",
  11 + "detail": {
  12 + "networkType":"3PE",
  13 + "spName": "ais",
  14 + "brandId": "5",
  15 + "language": "tha",
  16 + "state": "active",
  17 + "chargeMode": "prepaid",
  18 + "customerCategory": "residential",
  19 + "customerSubCategory": "thaiCitizen",
  20 + "customerSegment": "classic",
  21 + "customerId": "662571977736387",
  22 + "serviceProfileId": "6",
  23 + "contactNumber": "66614593898",
  24 + "profileType": "Prepaid RTBS",
  25 + "ivrLanguage": "tha",
  26 + "smsLanguage": "tha",
  27 + "ussdLanguage": "tha",
  28 + "emailLanguage": "tha"
  29 + }
  30 + }
  31 +
  32 +
  33 + res.send(response)
  34 +}
  35 +
  36 +module.exports.queryHistoryPackage = async (req, res) => {
  37 + console.log('===== POST QueryHistoryPackage =====')
  38 + console.log('url', req.originalUrl);
  39 + console.log('headers', req.headers);
  40 + console.log('query', req.query);
  41 + console.log('params', req.params);
  42 + console.log('body', req.body);
  43 +
  44 + let response = {
  45 + "resultCode": "20000",
  46 + "developerMessage": "Success",
  47 + "subscriberPackage":{
  48 + "mobileNo": "0923029000",
  49 + "profileType":"Prepaid RTBS",
  50 + "packageList":[
  51 + {
  52 + "promotionName": "M NBA Free Trial 1M 199Baht Monthly",
  53 + "promotionCode": "7400110",
  54 + "startDate": "2018-05-31 14:23:03",
  55 + "status":"A"
  56 + },
  57 + {
  58 + "promotionName": "M HOOQ Package Free 12 Months",
  59 + "promotionCode": "7400115",
  60 + "startDate": "2018-05-31 15:15:59",
  61 + "status":"A"
  62 + },
  63 + {
  64 + "promotionName": "NG Cartoons 5Baht Daily",
  65 + "promotionCode": "7400121",
  66 + "startDate": "2018-05-31 16:15:59",
  67 + "status":"H"
  68 + }
  69 + ]
  70 + }
  71 + }
  72 +
  73 + res.send(response)
  74 +}
  75 +
  76 +module.exports.queryCurrentPackage = async (req, res) => {
  77 + console.log('===== POST QueryCurrentPackage =====')
  78 + console.log('url', req.originalUrl);
  79 + console.log('headers', req.headers);
  80 + console.log('query', req.query);
  81 + console.log('params', req.params);
  82 + console.log('body', req.body);
  83 +
  84 + let response = {
  85 + "resultCode": "20000",
  86 + "developerMessage": "Success",
  87 + "subscriberPackage":{
  88 + "mobileNo": "0923029000",
  89 + "profileType":"Prepaid INS",
  90 + "packageList":[
  91 + {
  92 + "promotionName": "โทรสบาย[1.50B]",
  93 + "packageNameEN":"xxxxxxxxx",
  94 + "packageNameTH":"xxxxxxxxx",
  95 +
  96 + "startDate": "2018-05-31 14:23:03",
  97 + "endDate": "2018-05-31 14:23:03",
  98 + "promotionCode": "7400110",
  99 + "packageType":"Main",
  100 + "integrationName":"INS_3G 1000B 60Days Net 4Mbps SWifi UL",
  101 + "packageDescEN":"xxxxxxxxx",
  102 + "packageDescTH":"xxxxxxxxx",
  103 + "promotionSeq":"1002"
  104 + },
  105 + {
  106 + "promotionName": "M NBA Free Trial 1M 199Baht Monthly",
  107 + "packageNameEN":"xxxxxxxxx",
  108 + "packageNameTH":"xxxxxxxxx",
  109 + "promotionCode": "7400110",
  110 + "startDate": "2018-05-31 14:23:03",
  111 + "endDate": "2018-05-31 14:23:03",
  112 + "integrationName":"INS_3G 1000B 60Days Net 4Mbps SWifi UL",
  113 + "packageType":"Ontop Extra",
  114 + "packageDescEN":"xxxxxxxxx",
  115 + "packageDescTH":"xxxxxxxxx",
  116 + "promotionSeq":"1003"
  117 + }
  118 + ]
  119 + }
  120 + }
  121 +
  122 + res.send(response)
  123 +}
  124 +
  125 +module.exports.applyPack = async (req, res) => {
  126 + console.log('===== POST applyPack =====')
  127 + console.log('url', req.originalUrl);
  128 + console.log('headers', req.headers);
  129 + console.log('query', req.query);
  130 + console.log('params', req.params);
  131 + console.log('body', req.body);
  132 +
  133 + let response = {
  134 + "resultCode": "20000",
  135 + "developerMessage": "Success",
  136 + "ussdMessage": "ระบบกำลังตรวจสอบข้อมูล กรุณารอรับข้อความแจ้งสิทธิ์ของท่านค่ะ"
  137 + }
  138 +
  139 +
  140 + res.send(response)
  141 +}
  142 +
  143 +module.exports.deletePackage = async (req, res) => {
  144 + console.log('===== POST deletePackage =====')
  145 + console.log('url', req.originalUrl);
  146 + console.log('headers', req.headers);
  147 + console.log('query', req.query);
  148 + console.log('params', req.params);
  149 + console.log('body', req.body);
  150 +
  151 + let response = {
  152 + "resultCode": "20000",
  153 + "developerMessage": "Success",
  154 + "ussdMessage": "Please wait for confirmation SMS shortly.",
  155 + "responseMessage": "Thank you, your package has been deleted."
  156 + }
  157 +
  158 +
  159 + res.send(response)
  160 +}
... ...