This commit is contained in:
ylj20011123 2025-07-03 21:07:24 +08:00
parent db541a5c44
commit 3c9afe30cf
18 changed files with 988 additions and 1017 deletions

View File

@ -188,6 +188,13 @@
"navigationStyle": "custom" "navigationStyle": "custom"
} }
}, },
{
"path": "orderSearch/index",
"style": {
"navigationBarTitleText": "查询订单",
"navigationStyle": "custom"
}
},
{ {
"path": "foodOrder/index", "path": "foodOrder/index",
"style": { "style": {

View File

@ -158,7 +158,7 @@
</view> </view>
<!-- 附近的景区 --> <!-- 附近的景区 -->
<view class="nearbyScenic" v-if="false"> <view class="nearbyScenic" v-if="ScenicData">
<view class="nearbyScenicTop"> <view class="nearbyScenicTop">
<view class="nearbyScenicTopTitle">附近景区</view> <view class="nearbyScenicTopTitle">附近景区</view>
<view class="nearbyScenicTopRightBox" @click="handleGoScenicList"> <view class="nearbyScenicTopRightBox" @click="handleGoScenicList">
@ -169,28 +169,31 @@
<view class="nearbyScenicBottom"> <view class="nearbyScenicBottom">
<view class="nearByBottomLeftBox"> <view class="nearByBottomLeftBox">
<image class="nearbyImg" src="/static/images/home/defaultIcon.png" /> <image class="nearbyImg"
:src="ScenicData.ImageList && ScenicData.ImageList.length > 0 ? ScenicData.ImageList[0].ImageUrl : '/static/images/home/defaultIcon.png'" />
</view> </view>
<view class="nearByBottomRightBox"> <view class="nearByBottomRightBox">
<view class="scenicName">千岛湖中心湖区</view> <view class="scenicName">{{ ScenicData.SCENICAREA_NAME }}</view>
<view class="scenicContent"> <view class="scenicContent">
<view class="scenicType">河流湖泊</view> <view class="scenicType" v-if="ScenicData.SCENICAREA_TYPE && SCENICAREAOBJ">
{{ SCENICAREAOBJ[ScenicData.SCENICAREA_TYPE] }}</view>
<view class="scenicRateBox"> <view class="scenicRateBox">
<view class="scenicRate"> <view class="scenicRate">
<uni-rate :size="12" :value="4.6" :touchable="false" active-color="#FF8E00" color="#D8D8DA" /> <uni-rate :size="12" :value="ScenicData.SCENICAREA_SCORE" :touchable="false" active-color="#FF8E00"
color="#D8D8DA" />
</view> </view>
<view class="scenicRateText">4.6</view> <view class="scenicRateText">{{ ScenicData.SCENICAREA_SCORE }}</view>
</view> </view>
</view> </view>
<view class="scenicBottom"> <view class="scenicBottom">
<view class="scenicLeft"> <view class="scenicLeft">
<image class="scenicIcon" src="https://eshangtech.com/caiyunyiImg/fixedIcon.png" /> <image class="scenicIcon" src="https://eshangtech.com/caiyunyiImg/fixedIcon.png" />
<view class="scenicLabel">距离12km</view> <view class="scenicLabel">距离{{ ScenicData.ScenicDistance || '-' }}km</view>
</view> </view>
<view class="scenicRight"> <view class="scenicRight">
<view class="scenicRightLabel">门票</view> <view class="scenicRightLabel">门票</view>
<view class="scenicUnit">¥</view> <view class="scenicUnit">¥</view>
<view class="scenicPrice">185</view> <view class="scenicPrice">{{ ScenicData.TICKET_PRICE }}</view>
<view class="scenicUnit"></view> <view class="scenicUnit"></view>
</view> </view>
</view> </view>
@ -534,12 +537,13 @@ export default {
isChangeIcon: true, // isChangeIcon: true, //
triggered: false, triggered: false,
poster: {},// poster: {},//
ScenicData: null,//
SCENICAREAOBJ: {},//
}; };
}, },
async onLoad() { async onLoad() {
let stronge = uni.getStorageSync("showIndexPoster"); let stronge = uni.getStorageSync("showIndexPoster");
this.menu = uni.getMenuButtonBoundingClientRect(); this.menu = uni.getMenuButtonBoundingClientRect();
let systemInfo = uni.getSystemInfoSync(); let systemInfo = uni.getSystemInfoSync();
// //
@ -608,6 +612,8 @@ export default {
this.handleGetProductsList(); this.handleGetProductsList();
// //
this.handleGetShoppingMall(); this.handleGetShoppingMall();
//
this.handleGetScenicData()
// this.handleAes() // this.handleAes()
@ -699,6 +705,49 @@ export default {
}; };
}, },
methods: { methods: {
//
async handleGetScenicData() {
let SCENICAREA = uni.getStorageSync("SCENICAREAOBJ");
let SCENICAREAOBJ = {}
if (SCENICAREAOBJ) {
SCENICAREAOBJ = SCENICAREA
} else {
const field = await this.$api.$get("/EShangApiMain/FrameWork/GetFieldEnumTree", { FieldExplainField: 'SCENICAREA_TYPE' })
let fieldList = this.$utils.wrapTreeNode(field.Result_Data.List)
if (fieldList && fieldList.length > 0) {
fieldList.forEach((item) => {
SCENICAREAOBJ[item.value] = item.label
})
}
uni.setStorageSync("SCENICAREAOBJ", SCENICAREAOBJ);
}
this.SCENICAREAOBJ = SCENICAREAOBJ
let req = {
ProvinceCode: this.user.PROVINCE_CODE,
latitude: this.seat.latitude || "",
longitude: this.seat.longitude || "",
ServerpartID: this.serviceDetail.SERVERPART_ID || "",
type: 'encryption'
}
const data = await this.$api.$zzyLocalPost(
"/WisdomServerpart/GetScenicAreaListByLocation",
req
);
console.log('景区数据 ', data);
let list = data.Result_Data.List
let res = []
if (list && list.length > 0) {
list.forEach((item) => {
if (item.SCENICAREA_STATE === 1000) {
res.push(item)
}
})
}
this.ScenicData = res[0]
},
// //
handleGoScenicList() { handleGoScenicList() {
uni.navigateTo({ uni.navigateTo({
@ -2114,6 +2163,7 @@ export default {
.nearbyImg { .nearbyImg {
width: 100%; width: 100%;
height: 100%; height: 100%;
border-radius: 8rpx;
} }
} }

View File

@ -3,11 +3,14 @@
<view class="mainTop" :style="{ height: menu.bottom + 'px', paddingTop: menu.top + 'px' }"> <view class="mainTop" :style="{ height: menu.bottom + 'px', paddingTop: menu.top + 'px' }">
<image class="backIcon" src="https://eshangtech.com/caiyunyiImg/backIcon.png" @click="handleBack" /> <image class="backIcon" src="https://eshangtech.com/caiyunyiImg/backIcon.png" @click="handleBack" />
<view class="searchBox"> <view class="searchBox" @click="handleGoOrderSearch">
<image class="searchIcon" src="/static/images/home/searchIcon.svg" /> <image class="searchIcon" src="/static/images/home/searchIcon.svg" />
<input class="searchText" placeholder="搜索我的订单" confirm-type="search" /> <text style="color: #999999;font-size: 28rpx;">搜索我的订单</text>
<!-- <input class="searchText" placeholder="搜索我的订单" confirm-type="search" v-modal="searchText"
/> -->
</view> </view>
</view> </view>
<!-- @confirm="handleSearchOrder" -->
<view class="tabTypeBox"> <view class="tabTypeBox">
<view :class="selectBigTab === item.value ? 'bigTabItem selectBigTabItem' : 'bigTabItem'" <view :class="selectBigTab === item.value ? 'bigTabItem selectBigTabItem' : 'bigTabItem'"
@ -126,7 +129,7 @@
</view> </view>
</template> </template>
<script> <script>
import { padding } from "aes-js"; import { mapGetters } from "vuex";
import NoData from "../../../components/noData.vue"; import NoData from "../../../components/noData.vue";
import OrderItem from "./components/orderItem.vue"; import OrderItem from "./components/orderItem.vue";
export default { export default {
@ -176,12 +179,18 @@ export default {
{ label: "工会商城", value: 3 }, { label: "工会商城", value: 3 },
], ],
selectBigTab: 1, // tab selectBigTab: 1, // tab
searchText: ""
}; };
}, },
components: { components: {
OrderItem, OrderItem,
NoData, NoData,
}, },
computed: {
...mapGetters({
user: "user",
}),
},
onLoad(query) { onLoad(query) {
this.menu = uni.getMenuButtonBoundingClientRect(); this.menu = uni.getMenuButtonBoundingClientRect();
console.log("query", query); console.log("query", query);
@ -211,6 +220,12 @@ export default {
this.$utils.addUserBehaviorNew(); this.$utils.addUserBehaviorNew();
}, },
methods: { methods: {
//
handleGoOrderSearch() {
uni.navigateTo({
url: "/pages/order/orderSearch/index"
})
},
// //
handleConfirmReceipt(obj) { handleConfirmReceipt(obj) {
console.log('obj', obj); console.log('obj', obj);

View File

@ -0,0 +1,525 @@
<template>
<view class="main">
<view class="mainTop" :style="{ height: menu.bottom + 'px', paddingTop: menu.top + 'px' }">
<image class="backIcon" src="https://eshangtech.com/caiyunyiImg/backIcon.png" @click="handleBack" />
<view class="searchBox">
<image class="searchIcon" src="/static/images/home/searchIcon.svg" />
<input class="searchText" placeholder="搜索我的订单" confirm-type="search" v-model="searchText" autofocus
@confirm="handleSearchOrder" />
</view>
</view>
<!-- 订单列表 -->
<scroll-view :scroll-y="true" class="orderListBox"
:style="{ height: `calc(100vh - ${menu.bottom}px - 42px - 35px - 35px)` }"
@scrolltolower="handleScrollTolower">
<view class="orderItem" v-for="(item, index) in orderList" :key="index" @click="goEvaluate(item)">
<view class="orderItemTop">
<view class="orderItemTopLeft">
<image class="orderItemIcon" src="https://eshangtech.com/caiyunyiImg/storeIcon.png" />
<view class="orderItemLabel">{{ item.SHOPNAME || "" }}</view>
</view>
<view class="orderItemTopRight">
<view class="statusBox">{{ item.SALEBILL_STATE_TEXT || "" }}</view>
</view>
</view>
<view class="orderItemCenter"
v-for="(subItem, subIndex) in item.DetailList.slice(0, item.isShowMore ? item.DetailList.length : 5)"
:key="subIndex" @click.stop="handleGoShopDetail(item, subIndex)">
<view class="orderItemCenterLeft">
<image class="orderItemShopImg"
:src="subItem.ImageUrl ? subItem.ImageUrl : 'https://eshangtech.com/ShopICO/no-picture.png'" />
</view>
<view class="orderItemCenterRight">
<view class="orderItemCenterRightLeft">
<view class="orderItemRightLeftLabel">{{ subItem.GoodsName || "" }}</view>
<view class="orderItemRightLeftSpecifications"></view>
</view>
<view class="orderItemCenterRightRight">
<view class="unitPrice">¥{{ subItem.AveragePrice || '-' }}</view>
<view class="orderItemQuantity">x{{ subItem.OrderCount || '-' }}</view>
</view>
</view>
</view>
<div v-if="item.DetailList.length > 5" class="is_more" @click.stop="handleClickShowMoreShop(item)">
<img :src="item.isShowMore
? '/static/images/home/up_arrow.png'
: '/static/images/home/down_arrow.png'
" alt="" class="arrow_icon" />
{{ item.DetailList.length }}个品项
</div>
<!-- 实付款 -->
<view class="orderItemMoneyBox">
<span class="orderItemUnit">实付款</span>
<span class="orderItemMoney">¥{{ item.PayAmount || "" }}</span>
</view>
<view class="orderItemBottom">
<view class="orderItemBottomLeft">
<view class="orderItemBottomLeftMore" v-if="false">更多</view>
</view>
<view class="orderItemBottomRight">
<view class="orderItemBottomRightEvaluate"
v-if="item.SALEBILL_STATE > 3000 && item.SALEBILL_STATE <= 5000">
评价
</view>
<view class="orderItemBottomRightBuyAgain" v-if="item.SALEBILL_STATE === 1005"
@click.stop="goEvaluate(item)">
去付款</view>
<view class="orderItemBottomRightBuyAgain" v-if="item.SALEBILL_STATE === 2010"
@click.stop="handleConfirmReceipt(item)">确认收货</view>
<!-- <view class="orderItemBottomRightBuyAgain" @click.stop="handleGoStore">再次购买</view> -->
</view>
</view>
</view>
<view class="inBottom" v-if="pageMsg.isOver">
<text class="bottomText">我是有底线的</text>
</view>
</scroll-view>
</view>
</template>
<script>
import { mapGetters } from "vuex";
export default {
data() {
return {
searchText: "",
orderList: [],
menu: {},
pageMsg: {
pageIndex: 1,
pageSize: 10,
isOver: false,
}
}
},
computed: {
...mapGetters({
user: "user",
}),
},
onLoad(query) {
this.menu = uni.getMenuButtonBoundingClientRect();
},
methods: {
async handleSearchOrder() {
this.pageMsg = {
pageIndex: 1,
pageSize: 10,
isOver: false,
}
this.orderList = []
await this.handleGetOrder()
},
//
async handleGetOrder() {
uni.showLoading({
title: "正在加载...",
mask: true,
});
const req = {
SearchParameter: {
MEMBERSHIP_IDS: this.user.MEMBERSHIP_ID,
PROVINCE_CODE: this.user.PROVINCE_CODE,
WECHATAPP_APPID: "wxee018fb96955552a",
SearchKeyValue: this.searchText,
},
PageIndex: this.pageMsg.pageIndex,
pageSize: this.pageMsg.pageSize,
type: 'encryption'
}
const data = await this.$api.$zzyLocalPost(
"/OnlineOrder/GetOrderList",
req
);
console.log('查询订单数据', data);
let oldOrderList = [];
if (this.orderList && this.orderList.length > 0) {
oldOrderList = JSON.parse(JSON.stringify(this.orderList));
}
console.log("oldOrderList", oldOrderList);
//
let list = data.Result_Data ? data.Result_Data.List : [];
let resList = [];
if (list && list.length > 0) {
if (this.currentTab === 5) {
list.forEach((item) => {
if (
item.SALEBILL_STATE >= 3000 &&
item.SALEBILL_STATE !== 8999 &&
item.SALEBILL_STATE !== 9000 &&
item.SALEBILL_STATE !== 9999
) {
resList.push(item);
}
});
} else {
list.forEach((item) => {
resList.push(item);
});
}
}
if (resList && resList.length < 10) {
this.pageMsg.isOver = true;
}
this.orderList = oldOrderList.concat(resList);
uni.hideLoading();
},
//
handleScrollTolower() {
this.pageMsg.pageIndex = this.pageMsg.pageIndex + 1;
this.handleSearchOrder();
},
//
handleBack() {
uni.navigateBack({
delta: 1,
});
},
}
}
</script>
<style lang="less" scoped>
.main {
width: 100vw;
height: 100vh;
.mainTop {
width: 100%;
box-sizing: border-box;
padding: 0 24rpx;
display: flex;
align-items: center;
.backIcon {
width: 38rpx;
height: 38rpx;
}
.searchBox {
width: calc(100% - 52rpx - 24rpx - 200rpx);
height: 100%;
margin-left: 24rpx;
background-color: #ececec;
border-radius: 48rpx;
box-sizing: border-box;
padding: 20rpx 32rpx;
display: flex;
align-items: center;
.searchIcon {
width: 24rpx;
height: 24rpx;
margin-right: 20rpx;
}
.searchText {
font-family: PingFang-SC, PingFang-SC;
font-weight: 400;
font-size: 28rpx;
color: #000;
line-height: 40rpx;
text-align: left;
font-style: normal;
text-transform: none;
}
}
}
.orderListBox {
width: 100%;
box-sizing: border-box;
margin-top: 20px;
.orderItem {
width: 100%;
box-sizing: border-box;
padding: 22rpx 32rpx;
background-color: #fff;
margin-bottom: 24rpx;
.orderItemTop {
width: 100%;
display: flex;
align-items: center;
justify-content: space-between;
.orderItemTopLeft {
width: 70%;
display: flex;
align-items: center;
.orderItemIcon {
width: 36rpx;
height: 36rpx;
margin-right: 16rpx;
}
.orderItemLabel {
display: inline-block;
width: calc(100% - 52rpx);
font-family: PingFangSC, PingFang SC;
font-weight: 600;
font-size: 28rpx;
color: #333333;
line-height: 34rpx;
text-align: left;
font-style: normal;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
}
}
.orderItemTopRight {
width: 30%;
.statusBox {
font-family: PingFangSC, PingFang SC;
font-weight: 400;
font-size: 28rpx;
color: #F83D3D;
line-height: 40rpx;
text-align: right;
font-style: normal;
text-transform: none;
}
}
}
.orderItemCenter {
width: 100%;
margin-top: 22rpx;
display: flex;
align-items: center;
margin-bottom: 16rpx;
.orderItemCenterLeft {
width: 192rpx;
height: 192rpx;
margin-right: 12rpx;
.orderItemShopImg {
width: 100%;
height: 100%;
}
}
.orderItemCenterRight {
width: calc(100% - 192rpx - 12rpx);
height: 192rpx;
display: flex;
.orderItemCenterRightLeft {
width: calc(100% - 180rpx);
.orderItemRightLeftLabel {
font-family: PingFangSC, PingFang SC;
font-weight: 400;
font-size: 28rpx;
color: #333333;
text-align: left;
font-style: normal;
text-transform: none;
display: -webkit-box;
-webkit-line-clamp: 2;
-webkit-box-orient: vertical;
overflow: hidden;
}
.orderItemRightLeftSpecifications {
font-family: AppleSystemUIFont;
font-size: 24rpx;
color: #999999;
line-height: 30rpx;
text-align: left;
font-style: normal;
text-transform: none;
margin-top: 14rpx;
}
}
.orderItemCenterRightRight {
width: 180rpx;
display: flex;
flex-direction: column;
align-items: flex-end;
.unitPrice {
font-family: AppleSystemUIFont;
font-size: 28rpx;
color: #333333;
line-height: 34rpx;
text-align: left;
font-style: normal;
text-transform: none;
}
.orderItemQuantity {
font-family: AppleSystemUIFont;
font-size: 28rpx;
color: #999999;
line-height: 34rpx;
text-align: left;
font-style: normal;
text-transform: none;
margin-top: 10rpx;
}
}
}
}
.is_more {
width: 400rpx;
height: 40rpx;
margin: auto;
text-align: center;
//display: flex;
//flex-direction: row;
//align-items: center;
color: #9fa3a8;
font-size: 28rpx;
.arrow_icon {
width: 26rpx;
height: 16rpx;
margin-right: 16rpx;
}
}
.orderItemMoneyBox {
width: 100%;
display: flex;
align-items: center;
justify-content: flex-end;
.orderItemUnit {
font-family: PingFangSC, PingFang SC;
font-weight: 400;
font-size: 28rpx;
color: #333333;
line-height: 40rpx;
text-align: left;
font-style: normal;
text-transform: none;
}
.orderItemMoney {
font-family: PingFangSC, PingFang SC;
font-weight: 400;
font-size: 28rpx;
color: #333333;
line-height: 40rpx;
text-align: left;
font-style: normal;
text-transform: none;
}
}
.orderItemBottom {
width: 100%;
display: flex;
align-items: center;
justify-content: space-between;
margin-top: 32rpx;
.orderItemBottomLeft {
.orderItemBottomLeftMore {
font-family: PingFangSC, PingFang SC;
font-weight: 400;
font-size: 28rpx;
color: #333333;
line-height: 40rpx;
text-align: left;
font-style: normal;
text-transform: none;
}
}
.orderItemBottomRight {
display: flex;
align-items: center;
.orderItemBottomRightEvaluate {
font-family: PingFangSC, PingFang SC;
font-weight: 400;
font-size: 28rpx;
color: #333333;
line-height: 40rpx;
text-align: left;
font-style: normal;
text-transform: none;
padding: 4rpx 26rpx;
background: #F2F5F6;
border-radius: 4rpx;
margin-right: 34rpx;
}
.orderItemBottomRightBuyAgain {
font-family: PingFangSC, PingFang SC;
font-weight: 400;
font-size: 28rpx;
color: #E84D38;
line-height: 40rpx;
text-align: left;
font-style: normal;
text-transform: none;
padding: 4rpx 26rpx;
background: #F2F5F6;
border-radius: 4rpx;
}
}
}
}
.inBottom {
width: 100%;
display: flex;
align-items: center;
justify-content: center;
.bottomText {
font-family: PingFangSC, PingFang SC;
font-weight: 400;
font-size: 26rpx;
color: #d0d0d0;
line-height: 40rpx;
text-align: justify;
font-style: normal;
position: relative;
padding: 6rpx 0;
}
.bottomText::after {
content: "";
width: 30vw;
height: 2rpx;
background: #e0e0e0;
position: absolute;
left: -32vw;
top: 50%;
}
.bottomText::before {
content: "";
width: 30vw;
height: 2rpx;
background: #e0e0e0;
position: absolute;
right: -32vw;
top: 50%;
}
}
}
}
</style>

View File

@ -1,7 +1,7 @@
<template> <template>
<view class="main"> <view class="main">
<view class="maintopBox"> <view class="maintopBox">
<view class="mainTopRight"> <view class="mainTopRight" @click="handleChangeSortType">
<view class="distanceText">{{ sortType === 1 ? '按距离' : '按票价' }}</view> <view class="distanceText">{{ sortType === 1 ? '按距离' : '按票价' }}</view>
<image class="distanceIcon" src="https://eshangtech.com/caiyunyiImg/sortIcon.png" /> <image class="distanceIcon" src="https://eshangtech.com/caiyunyiImg/sortIcon.png" />
</view> </view>
@ -9,31 +9,34 @@
<view class="mainBottom"> <view class="mainBottom">
<scroll-view scroll-y="true" class="scrollView" @scrolltolower="handleScrollBottom"> <scroll-view scroll-y="true" class="scrollView" @scrolltolower="handleScrollBottom">
<view class="nearbyScenicItem"> <view class="nearbyScenicItem" v-for="(item, index) in dataList" :key="index"
@click="handleGoNavigation(item)">
<view class="nearByBottomLeftBox"> <view class="nearByBottomLeftBox">
<image class="nearbyImg" src="/static/images/home/defaultIcon.png" /> <image class="nearbyImg"
:src="item.ImageList && item.ImageList.length > 0 ? item.ImageList[0].ImageUrl : '/static/images/home/defaultIcon.png'" />
</view> </view>
<view class="nearByBottomRightBox"> <view class="nearByBottomRightBox">
<view class="scenicName">千岛湖中心湖区</view> <view class="scenicName">{{ item.SCENICAREA_NAME }}</view>
<view class="scenicContent"> <view class="scenicContent">
<view class="scenicType">河流湖泊</view> <view class="scenicType" v-if="item.SCENICAREA_TYPE && SCENICAREAOBJ">
{{ SCENICAREAOBJ[item.SCENICAREA_TYPE] }}</view>
<view class="scenicRateBox"> <view class="scenicRateBox">
<view class="scenicRate"> <view class="scenicRate">
<uni-rate :size="12" :value="4.6" :touchable="false" active-color="#FF8E00" <uni-rate :size="12" :value="item.SCENICAREA_SCORE" :touchable="false"
color="#D8D8DA" /> active-color="#FF8E00" color="#D8D8DA" />
</view> </view>
<view class="scenicRateText">4.6</view> <view class="scenicRateText">{{ item.SCENICAREA_SCORE || "-" }}</view>
</view> </view>
</view> </view>
<view class="scenicBottom"> <view class="scenicBottom">
<view class="scenicLeft"> <view class="scenicLeft">
<image class="scenicIcon" src="https://eshangtech.com/caiyunyiImg/fixedIcon.png" /> <image class="scenicIcon" src="https://eshangtech.com/caiyunyiImg/fixedIcon.png" />
<view class="scenicLabel">距离12km</view> <view class="scenicLabel">距离{{ item.ScenicDistance || '-' }}km</view>
</view> </view>
<view class="scenicRight"> <view class="scenicRight">
<view class="scenicRightLabel">门票</view> <view class="scenicRightLabel">门票</view>
<view class="scenicUnit">¥</view> <view class="scenicUnit">¥</view>
<view class="scenicPrice">185</view> <view class="scenicPrice">{{ item.TICKET_PRICE || "-" }}</view>
<view class="scenicUnit"></view> <view class="scenicUnit"></view>
</view> </view>
</view> </view>
@ -45,19 +48,74 @@
</template> </template>
<script> <script>
import { mapGetters } from "vuex";
export default { export default {
data() { data() {
return { return {
sortType: 1,// 1:2: sortType: 1,// 1:2:
dataList: [],// dataList: [],//
seat: {},
SCENICAREAOBJ: {},//
} }
}, },
onLoad() { async onLoad() {
this.handleGetData(); let seatInfo = uni.getStorageSync("seatInfo");
if (seatInfo) {
this.seat = JSON.parse(seatInfo);
}
await this.handleGetData();
},
computed: {
...mapGetters({
user: "user",
}),
}, },
methods: { methods: {
handleGetData() { async handleGetData() {
let SCENICAREA = uni.getStorageSync("SCENICAREAOBJ");
let SCENICAREAOBJ = {}
if (SCENICAREAOBJ) {
SCENICAREAOBJ = SCENICAREA
} else {
const field = await this.$api.$get("/EShangApiMain/FrameWork/GetFieldEnumTree", { FieldExplainField: 'SCENICAREA_TYPE' })
let fieldList = this.$utils.wrapTreeNode(field.Result_Data.List)
if (fieldList && fieldList.length > 0) {
fieldList.forEach((item) => {
SCENICAREAOBJ[item.value] = item.label
})
}
uni.setStorageSync("SCENICAREAOBJ", SCENICAREAOBJ);
}
this.SCENICAREAOBJ = SCENICAREAOBJ
let req = {
ProvinceCode: this.user.PROVINCE_CODE,
latitude: this.seat.latitude || "",
longitude: this.seat.longitude || "",
SortStr: this.sortType === 1 ? '' : 'TICKET_PRICE desc',
// ServerpartID: this.serviceDetail.SERVERPART_ID || "",
type: 'encryption'
}
console.log('reqreqreqreq', req);
const data = await this.$api.$zzyLocalPost(
"/WisdomServerpart/GetScenicAreaListByLocation",
req
);
console.log('景区数据 ', data);
let list = data.Result_Data.List
let res = []
if (list && list.length > 0) {
list.forEach((item) => {
if (item.SCENICAREA_STATE === 1000) {
res.push(item)
}
})
}
this.dataList = list
}, },
handleChangeSortType() { handleChangeSortType() {
// //
@ -66,10 +124,26 @@ export default {
} else if (this.sortType === 2) { } else if (this.sortType === 2) {
this.sortType = 1; this.sortType = 1;
} }
this.handleGetData()
}, },
// //
handleScrollBottom() { handleScrollBottom() {
},
//
handleGoNavigation(obj) {
uni.openLocation({
latitude: obj.SCENICAREA_Y,
longitude: obj.SCENICAREA_X,
scale: 16, //
name: obj.SCENICAREA_NAME,
success(data) {
},
fail(err) {
},
});
} }
} }
} }
@ -266,6 +340,10 @@ export default {
} }
} }
} }
.scrollView ::-webkit-scrollbar {
display: none;
}
} }
} }
</style> </style>

View File

@ -14,7 +14,7 @@
@touchend="handleTouchEnd($event, index)"> @touchend="handleTouchEnd($event, index)">
<view class="swipe-content" :class="{ 'show-delete': item.showDelete }"> <view class="swipe-content" :class="{ 'show-delete': item.showDelete }">
<view class="nearByBottomLeftBox"> <view class="nearByBottomLeftBox">
<image class="nearbyImg" src="/static/images/home/defaultIcon.png" /> <image class="nearbyImg" :src="item.list_img || '/static/images/home/defaultIcon.png'" />
</view> </view>
<view class="nearByBottomCenterBox"> <view class="nearByBottomCenterBox">
<view class="scenicName">{{ item.COMMODITY_NAME }}</view> <view class="scenicName">{{ item.COMMODITY_NAME }}</view>
@ -121,7 +121,7 @@ export default {
}, },
async handleDelete(obj) { async handleDelete(obj) {
let req = { let req = {
COLLECTIONId: "", COLLECTIONId: obj.CollectionId,
type: "encryption", type: "encryption",
} }
// //

View File

@ -57,7 +57,7 @@
</view> </view>
<view class="userInfoContent" v-if="false"> <view class="userInfoContent">
<view class="userInfoItem"> <view class="userInfoItem">
<view class="userInfoItemLabel">真实姓名</view> <view class="userInfoItemLabel">真实姓名</view>
<view class="userInfoItemRight"> <view class="userInfoItemRight">
@ -156,9 +156,9 @@ export default {
Membership_NickName: this.editableNickname, Membership_NickName: this.editableNickname,
Membership_Sex: this.genderArray[this.genderIndex] === '男' ? 0 : 1, Membership_Sex: this.genderArray[this.genderIndex] === '男' ? 0 : 1,
Membership_Birthday: this.birthday, Membership_Birthday: this.birthday,
Certificate_Number: this.idNumber, // Certificate_Number: this.idNumber,
Membership_Email: this.email, Membership_Email: this.email,
// this.realName Membership_Name: this.realName,
CERTIFICATE_NUMBER: this.idCard, CERTIFICATE_NUMBER: this.idCard,
type: 'encryption1' type: 'encryption1'
} }
@ -287,7 +287,9 @@ export default {
_this.displayedAvatarUrl = ''; // URL _this.displayedAvatarUrl = ''; // URL
} }
_this.$forceUpdate() _this.$forceUpdate()
// this.realName = this.userInfo.MEMBERSHIP_REALNAME // _this.realName = _this.userInfo.MEMBERSHIP_NAME //
_this.idCard = _this.userInfo.CERTIFICATE_NUMBER
_this.validateIdCard()
this.$forceUpdate(); this.$forceUpdate();
console.log("this.userInfo", JSON.parse(JSON.stringify(this.userInfo))); console.log("this.userInfo", JSON.parse(JSON.stringify(this.userInfo)));

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -79,6 +79,7 @@
"root": "pages/order/", "root": "pages/order/",
"pages": [ "pages": [
"buyOrder/index", "buyOrder/index",
"orderSearch/index",
"foodOrder/index", "foodOrder/index",
"orderdetail/index", "orderdetail/index",
"orderdetail/reasonforRefund", "orderdetail/reasonforRefund",

View File

@ -2683,674 +2683,6 @@ module.exports = _nonIterableSpread, module.exports.__esModule = true, module.ex
/***/ }), /***/ }),
/***/ 212:
/*!********************************************************************!*\
!*** E:/workfile/minprogram/caiyunyi/node_modules/aes-js/index.js ***!
\********************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
/*! MIT License. Copyright 2015-2018 Richard Moore <me@ricmoo.com>. See LICENSE.txt. */
(function (root) {
"use strict";
function checkInt(value) {
return parseInt(value) === value;
}
function checkInts(arrayish) {
if (!checkInt(arrayish.length)) {
return false;
}
for (var i = 0; i < arrayish.length; i++) {
if (!checkInt(arrayish[i]) || arrayish[i] < 0 || arrayish[i] > 255) {
return false;
}
}
return true;
}
function coerceArray(arg, copy) {
// ArrayBuffer view
if (arg.buffer && arg.name === 'Uint8Array') {
if (copy) {
if (arg.slice) {
arg = arg.slice();
} else {
arg = Array.prototype.slice.call(arg);
}
}
return arg;
}
// It's an array; check it is a valid representation of a byte
if (Array.isArray(arg)) {
if (!checkInts(arg)) {
throw new Error('Array contains invalid value: ' + arg);
}
return new Uint8Array(arg);
}
// Something else, but behaves like an array (maybe a Buffer? Arguments?)
if (checkInt(arg.length) && checkInts(arg)) {
return new Uint8Array(arg);
}
throw new Error('unsupported array-like object');
}
function createArray(length) {
return new Uint8Array(length);
}
function copyArray(sourceArray, targetArray, targetStart, sourceStart, sourceEnd) {
if (sourceStart != null || sourceEnd != null) {
if (sourceArray.slice) {
sourceArray = sourceArray.slice(sourceStart, sourceEnd);
} else {
sourceArray = Array.prototype.slice.call(sourceArray, sourceStart, sourceEnd);
}
}
targetArray.set(sourceArray, targetStart);
}
var convertUtf8 = function () {
function toBytes(text) {
var result = [],
i = 0;
text = encodeURI(text);
while (i < text.length) {
var c = text.charCodeAt(i++);
// if it is a % sign, encode the following 2 bytes as a hex value
if (c === 37) {
result.push(parseInt(text.substr(i, 2), 16));
i += 2;
// otherwise, just the actual byte
} else {
result.push(c);
}
}
return coerceArray(result);
}
function fromBytes(bytes) {
var result = [],
i = 0;
while (i < bytes.length) {
var c = bytes[i];
if (c < 128) {
result.push(String.fromCharCode(c));
i++;
} else if (c > 191 && c < 224) {
result.push(String.fromCharCode((c & 0x1f) << 6 | bytes[i + 1] & 0x3f));
i += 2;
} else {
result.push(String.fromCharCode((c & 0x0f) << 12 | (bytes[i + 1] & 0x3f) << 6 | bytes[i + 2] & 0x3f));
i += 3;
}
}
return result.join('');
}
return {
toBytes: toBytes,
fromBytes: fromBytes
};
}();
var convertHex = function () {
function toBytes(text) {
var result = [];
for (var i = 0; i < text.length; i += 2) {
result.push(parseInt(text.substr(i, 2), 16));
}
return result;
}
// http://ixti.net/development/javascript/2011/11/11/base64-encodedecode-of-utf8-in-browser-with-js.html
var Hex = '0123456789abcdef';
function fromBytes(bytes) {
var result = [];
for (var i = 0; i < bytes.length; i++) {
var v = bytes[i];
result.push(Hex[(v & 0xf0) >> 4] + Hex[v & 0x0f]);
}
return result.join('');
}
return {
toBytes: toBytes,
fromBytes: fromBytes
};
}();
// Number of rounds by keysize
var numberOfRounds = {
16: 10,
24: 12,
32: 14
};
// Round constant words
var rcon = [0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x1b, 0x36, 0x6c, 0xd8, 0xab, 0x4d, 0x9a, 0x2f, 0x5e, 0xbc, 0x63, 0xc6, 0x97, 0x35, 0x6a, 0xd4, 0xb3, 0x7d, 0xfa, 0xef, 0xc5, 0x91];
// S-box and Inverse S-box (S is for Substitution)
var S = [0x63, 0x7c, 0x77, 0x7b, 0xf2, 0x6b, 0x6f, 0xc5, 0x30, 0x01, 0x67, 0x2b, 0xfe, 0xd7, 0xab, 0x76, 0xca, 0x82, 0xc9, 0x7d, 0xfa, 0x59, 0x47, 0xf0, 0xad, 0xd4, 0xa2, 0xaf, 0x9c, 0xa4, 0x72, 0xc0, 0xb7, 0xfd, 0x93, 0x26, 0x36, 0x3f, 0xf7, 0xcc, 0x34, 0xa5, 0xe5, 0xf1, 0x71, 0xd8, 0x31, 0x15, 0x04, 0xc7, 0x23, 0xc3, 0x18, 0x96, 0x05, 0x9a, 0x07, 0x12, 0x80, 0xe2, 0xeb, 0x27, 0xb2, 0x75, 0x09, 0x83, 0x2c, 0x1a, 0x1b, 0x6e, 0x5a, 0xa0, 0x52, 0x3b, 0xd6, 0xb3, 0x29, 0xe3, 0x2f, 0x84, 0x53, 0xd1, 0x00, 0xed, 0x20, 0xfc, 0xb1, 0x5b, 0x6a, 0xcb, 0xbe, 0x39, 0x4a, 0x4c, 0x58, 0xcf, 0xd0, 0xef, 0xaa, 0xfb, 0x43, 0x4d, 0x33, 0x85, 0x45, 0xf9, 0x02, 0x7f, 0x50, 0x3c, 0x9f, 0xa8, 0x51, 0xa3, 0x40, 0x8f, 0x92, 0x9d, 0x38, 0xf5, 0xbc, 0xb6, 0xda, 0x21, 0x10, 0xff, 0xf3, 0xd2, 0xcd, 0x0c, 0x13, 0xec, 0x5f, 0x97, 0x44, 0x17, 0xc4, 0xa7, 0x7e, 0x3d, 0x64, 0x5d, 0x19, 0x73, 0x60, 0x81, 0x4f, 0xdc, 0x22, 0x2a, 0x90, 0x88, 0x46, 0xee, 0xb8, 0x14, 0xde, 0x5e, 0x0b, 0xdb, 0xe0, 0x32, 0x3a, 0x0a, 0x49, 0x06, 0x24, 0x5c, 0xc2, 0xd3, 0xac, 0x62, 0x91, 0x95, 0xe4, 0x79, 0xe7, 0xc8, 0x37, 0x6d, 0x8d, 0xd5, 0x4e, 0xa9, 0x6c, 0x56, 0xf4, 0xea, 0x65, 0x7a, 0xae, 0x08, 0xba, 0x78, 0x25, 0x2e, 0x1c, 0xa6, 0xb4, 0xc6, 0xe8, 0xdd, 0x74, 0x1f, 0x4b, 0xbd, 0x8b, 0x8a, 0x70, 0x3e, 0xb5, 0x66, 0x48, 0x03, 0xf6, 0x0e, 0x61, 0x35, 0x57, 0xb9, 0x86, 0xc1, 0x1d, 0x9e, 0xe1, 0xf8, 0x98, 0x11, 0x69, 0xd9, 0x8e, 0x94, 0x9b, 0x1e, 0x87, 0xe9, 0xce, 0x55, 0x28, 0xdf, 0x8c, 0xa1, 0x89, 0x0d, 0xbf, 0xe6, 0x42, 0x68, 0x41, 0x99, 0x2d, 0x0f, 0xb0, 0x54, 0xbb, 0x16];
var Si = [0x52, 0x09, 0x6a, 0xd5, 0x30, 0x36, 0xa5, 0x38, 0xbf, 0x40, 0xa3, 0x9e, 0x81, 0xf3, 0xd7, 0xfb, 0x7c, 0xe3, 0x39, 0x82, 0x9b, 0x2f, 0xff, 0x87, 0x34, 0x8e, 0x43, 0x44, 0xc4, 0xde, 0xe9, 0xcb, 0x54, 0x7b, 0x94, 0x32, 0xa6, 0xc2, 0x23, 0x3d, 0xee, 0x4c, 0x95, 0x0b, 0x42, 0xfa, 0xc3, 0x4e, 0x08, 0x2e, 0xa1, 0x66, 0x28, 0xd9, 0x24, 0xb2, 0x76, 0x5b, 0xa2, 0x49, 0x6d, 0x8b, 0xd1, 0x25, 0x72, 0xf8, 0xf6, 0x64, 0x86, 0x68, 0x98, 0x16, 0xd4, 0xa4, 0x5c, 0xcc, 0x5d, 0x65, 0xb6, 0x92, 0x6c, 0x70, 0x48, 0x50, 0xfd, 0xed, 0xb9, 0xda, 0x5e, 0x15, 0x46, 0x57, 0xa7, 0x8d, 0x9d, 0x84, 0x90, 0xd8, 0xab, 0x00, 0x8c, 0xbc, 0xd3, 0x0a, 0xf7, 0xe4, 0x58, 0x05, 0xb8, 0xb3, 0x45, 0x06, 0xd0, 0x2c, 0x1e, 0x8f, 0xca, 0x3f, 0x0f, 0x02, 0xc1, 0xaf, 0xbd, 0x03, 0x01, 0x13, 0x8a, 0x6b, 0x3a, 0x91, 0x11, 0x41, 0x4f, 0x67, 0xdc, 0xea, 0x97, 0xf2, 0xcf, 0xce, 0xf0, 0xb4, 0xe6, 0x73, 0x96, 0xac, 0x74, 0x22, 0xe7, 0xad, 0x35, 0x85, 0xe2, 0xf9, 0x37, 0xe8, 0x1c, 0x75, 0xdf, 0x6e, 0x47, 0xf1, 0x1a, 0x71, 0x1d, 0x29, 0xc5, 0x89, 0x6f, 0xb7, 0x62, 0x0e, 0xaa, 0x18, 0xbe, 0x1b, 0xfc, 0x56, 0x3e, 0x4b, 0xc6, 0xd2, 0x79, 0x20, 0x9a, 0xdb, 0xc0, 0xfe, 0x78, 0xcd, 0x5a, 0xf4, 0x1f, 0xdd, 0xa8, 0x33, 0x88, 0x07, 0xc7, 0x31, 0xb1, 0x12, 0x10, 0x59, 0x27, 0x80, 0xec, 0x5f, 0x60, 0x51, 0x7f, 0xa9, 0x19, 0xb5, 0x4a, 0x0d, 0x2d, 0xe5, 0x7a, 0x9f, 0x93, 0xc9, 0x9c, 0xef, 0xa0, 0xe0, 0x3b, 0x4d, 0xae, 0x2a, 0xf5, 0xb0, 0xc8, 0xeb, 0xbb, 0x3c, 0x83, 0x53, 0x99, 0x61, 0x17, 0x2b, 0x04, 0x7e, 0xba, 0x77, 0xd6, 0x26, 0xe1, 0x69, 0x14, 0x63, 0x55, 0x21, 0x0c, 0x7d];
// Transformations for encryption
var T1 = [0xc66363a5, 0xf87c7c84, 0xee777799, 0xf67b7b8d, 0xfff2f20d, 0xd66b6bbd, 0xde6f6fb1, 0x91c5c554, 0x60303050, 0x02010103, 0xce6767a9, 0x562b2b7d, 0xe7fefe19, 0xb5d7d762, 0x4dababe6, 0xec76769a, 0x8fcaca45, 0x1f82829d, 0x89c9c940, 0xfa7d7d87, 0xeffafa15, 0xb25959eb, 0x8e4747c9, 0xfbf0f00b, 0x41adadec, 0xb3d4d467, 0x5fa2a2fd, 0x45afafea, 0x239c9cbf, 0x53a4a4f7, 0xe4727296, 0x9bc0c05b, 0x75b7b7c2, 0xe1fdfd1c, 0x3d9393ae, 0x4c26266a, 0x6c36365a, 0x7e3f3f41, 0xf5f7f702, 0x83cccc4f, 0x6834345c, 0x51a5a5f4, 0xd1e5e534, 0xf9f1f108, 0xe2717193, 0xabd8d873, 0x62313153, 0x2a15153f, 0x0804040c, 0x95c7c752, 0x46232365, 0x9dc3c35e, 0x30181828, 0x379696a1, 0x0a05050f, 0x2f9a9ab5, 0x0e070709, 0x24121236, 0x1b80809b, 0xdfe2e23d, 0xcdebeb26, 0x4e272769, 0x7fb2b2cd, 0xea75759f, 0x1209091b, 0x1d83839e, 0x582c2c74, 0x341a1a2e, 0x361b1b2d, 0xdc6e6eb2, 0xb45a5aee, 0x5ba0a0fb, 0xa45252f6, 0x763b3b4d, 0xb7d6d661, 0x7db3b3ce, 0x5229297b, 0xdde3e33e, 0x5e2f2f71, 0x13848497, 0xa65353f5, 0xb9d1d168, 0x00000000, 0xc1eded2c, 0x40202060, 0xe3fcfc1f, 0x79b1b1c8, 0xb65b5bed, 0xd46a6abe, 0x8dcbcb46, 0x67bebed9, 0x7239394b, 0x944a4ade, 0x984c4cd4, 0xb05858e8, 0x85cfcf4a, 0xbbd0d06b, 0xc5efef2a, 0x4faaaae5, 0xedfbfb16, 0x864343c5, 0x9a4d4dd7, 0x66333355, 0x11858594, 0x8a4545cf, 0xe9f9f910, 0x04020206, 0xfe7f7f81, 0xa05050f0, 0x783c3c44, 0x259f9fba, 0x4ba8a8e3, 0xa25151f3, 0x5da3a3fe, 0x804040c0, 0x058f8f8a, 0x3f9292ad, 0x219d9dbc, 0x70383848, 0xf1f5f504, 0x63bcbcdf, 0x77b6b6c1, 0xafdada75, 0x42212163, 0x20101030, 0xe5ffff1a, 0xfdf3f30e, 0xbfd2d26d, 0x81cdcd4c, 0x180c0c14, 0x26131335, 0xc3ecec2f, 0xbe5f5fe1, 0x359797a2, 0x884444cc, 0x2e171739, 0x93c4c457, 0x55a7a7f2, 0xfc7e7e82, 0x7a3d3d47, 0xc86464ac, 0xba5d5de7, 0x3219192b, 0xe6737395, 0xc06060a0, 0x19818198, 0x9e4f4fd1, 0xa3dcdc7f, 0x44222266, 0x542a2a7e, 0x3b9090ab, 0x0b888883, 0x8c4646ca, 0xc7eeee29, 0x6bb8b8d3, 0x2814143c, 0xa7dede79, 0xbc5e5ee2, 0x160b0b1d, 0xaddbdb76, 0xdbe0e03b, 0x64323256, 0x743a3a4e, 0x140a0a1e, 0x924949db, 0x0c06060a, 0x4824246c, 0xb85c5ce4, 0x9fc2c25d, 0xbdd3d36e, 0x43acacef, 0xc46262a6, 0x399191a8, 0x319595a4, 0xd3e4e437, 0xf279798b, 0xd5e7e732, 0x8bc8c843, 0x6e373759, 0xda6d6db7, 0x018d8d8c, 0xb1d5d564, 0x9c4e4ed2, 0x49a9a9e0, 0xd86c6cb4, 0xac5656fa, 0xf3f4f407, 0xcfeaea25, 0xca6565af, 0xf47a7a8e, 0x47aeaee9, 0x10080818, 0x6fbabad5, 0xf0787888, 0x4a25256f, 0x5c2e2e72, 0x381c1c24, 0x57a6a6f1, 0x73b4b4c7, 0x97c6c651, 0xcbe8e823, 0xa1dddd7c, 0xe874749c, 0x3e1f1f21, 0x964b4bdd, 0x61bdbddc, 0x0d8b8b86, 0x0f8a8a85, 0xe0707090, 0x7c3e3e42, 0x71b5b5c4, 0xcc6666aa, 0x904848d8, 0x06030305, 0xf7f6f601, 0x1c0e0e12, 0xc26161a3, 0x6a35355f, 0xae5757f9, 0x69b9b9d0, 0x17868691, 0x99c1c158, 0x3a1d1d27, 0x279e9eb9, 0xd9e1e138, 0xebf8f813, 0x2b9898b3, 0x22111133, 0xd26969bb, 0xa9d9d970, 0x078e8e89, 0x339494a7, 0x2d9b9bb6, 0x3c1e1e22, 0x15878792, 0xc9e9e920, 0x87cece49, 0xaa5555ff, 0x50282878, 0xa5dfdf7a, 0x038c8c8f, 0x59a1a1f8, 0x09898980, 0x1a0d0d17, 0x65bfbfda, 0xd7e6e631, 0x844242c6, 0xd06868b8, 0x824141c3, 0x299999b0, 0x5a2d2d77, 0x1e0f0f11, 0x7bb0b0cb, 0xa85454fc, 0x6dbbbbd6, 0x2c16163a];
var T2 = [0xa5c66363, 0x84f87c7c, 0x99ee7777, 0x8df67b7b, 0x0dfff2f2, 0xbdd66b6b, 0xb1de6f6f, 0x5491c5c5, 0x50603030, 0x03020101, 0xa9ce6767, 0x7d562b2b, 0x19e7fefe, 0x62b5d7d7, 0xe64dabab, 0x9aec7676, 0x458fcaca, 0x9d1f8282, 0x4089c9c9, 0x87fa7d7d, 0x15effafa, 0xebb25959, 0xc98e4747, 0x0bfbf0f0, 0xec41adad, 0x67b3d4d4, 0xfd5fa2a2, 0xea45afaf, 0xbf239c9c, 0xf753a4a4, 0x96e47272, 0x5b9bc0c0, 0xc275b7b7, 0x1ce1fdfd, 0xae3d9393, 0x6a4c2626, 0x5a6c3636, 0x417e3f3f, 0x02f5f7f7, 0x4f83cccc, 0x5c683434, 0xf451a5a5, 0x34d1e5e5, 0x08f9f1f1, 0x93e27171, 0x73abd8d8, 0x53623131, 0x3f2a1515, 0x0c080404, 0x5295c7c7, 0x65462323, 0x5e9dc3c3, 0x28301818, 0xa1379696, 0x0f0a0505, 0xb52f9a9a, 0x090e0707, 0x36241212, 0x9b1b8080, 0x3ddfe2e2, 0x26cdebeb, 0x694e2727, 0xcd7fb2b2, 0x9fea7575, 0x1b120909, 0x9e1d8383, 0x74582c2c, 0x2e341a1a, 0x2d361b1b, 0xb2dc6e6e, 0xeeb45a5a, 0xfb5ba0a0, 0xf6a45252, 0x4d763b3b, 0x61b7d6d6, 0xce7db3b3, 0x7b522929, 0x3edde3e3, 0x715e2f2f, 0x97138484, 0xf5a65353, 0x68b9d1d1, 0x00000000, 0x2cc1eded, 0x60402020, 0x1fe3fcfc, 0xc879b1b1, 0xedb65b5b, 0xbed46a6a, 0x468dcbcb, 0xd967bebe, 0x4b723939, 0xde944a4a, 0xd4984c4c, 0xe8b05858, 0x4a85cfcf, 0x6bbbd0d0, 0x2ac5efef, 0xe54faaaa, 0x16edfbfb, 0xc5864343, 0xd79a4d4d, 0x55663333, 0x94118585, 0xcf8a4545, 0x10e9f9f9, 0x06040202, 0x81fe7f7f, 0xf0a05050, 0x44783c3c, 0xba259f9f, 0xe34ba8a8, 0xf3a25151, 0xfe5da3a3, 0xc0804040, 0x8a058f8f, 0xad3f9292, 0xbc219d9d, 0x48703838, 0x04f1f5f5, 0xdf63bcbc, 0xc177b6b6, 0x75afdada, 0x63422121, 0x30201010, 0x1ae5ffff, 0x0efdf3f3, 0x6dbfd2d2, 0x4c81cdcd, 0x14180c0c, 0x35261313, 0x2fc3ecec, 0xe1be5f5f, 0xa2359797, 0xcc884444, 0x392e1717, 0x5793c4c4, 0xf255a7a7, 0x82fc7e7e, 0x477a3d3d, 0xacc86464, 0xe7ba5d5d, 0x2b321919, 0x95e67373, 0xa0c06060, 0x98198181, 0xd19e4f4f, 0x7fa3dcdc, 0x66442222, 0x7e542a2a, 0xab3b9090, 0x830b8888, 0xca8c4646, 0x29c7eeee, 0xd36bb8b8, 0x3c281414, 0x79a7dede, 0xe2bc5e5e, 0x1d160b0b, 0x76addbdb, 0x3bdbe0e0, 0x56643232, 0x4e743a3a, 0x1e140a0a, 0xdb924949, 0x0a0c0606, 0x6c482424, 0xe4b85c5c, 0x5d9fc2c2, 0x6ebdd3d3, 0xef43acac, 0xa6c46262, 0xa8399191, 0xa4319595, 0x37d3e4e4, 0x8bf27979, 0x32d5e7e7, 0x438bc8c8, 0x596e3737, 0xb7da6d6d, 0x8c018d8d, 0x64b1d5d5, 0xd29c4e4e, 0xe049a9a9, 0xb4d86c6c, 0xfaac5656, 0x07f3f4f4, 0x25cfeaea, 0xafca6565, 0x8ef47a7a, 0xe947aeae, 0x18100808, 0xd56fbaba, 0x88f07878, 0x6f4a2525, 0x725c2e2e, 0x24381c1c, 0xf157a6a6, 0xc773b4b4, 0x5197c6c6, 0x23cbe8e8, 0x7ca1dddd, 0x9ce87474, 0x213e1f1f, 0xdd964b4b, 0xdc61bdbd, 0x860d8b8b, 0x850f8a8a, 0x90e07070, 0x427c3e3e, 0xc471b5b5, 0xaacc6666, 0xd8904848, 0x05060303, 0x01f7f6f6, 0x121c0e0e, 0xa3c26161, 0x5f6a3535, 0xf9ae5757, 0xd069b9b9, 0x91178686, 0x5899c1c1, 0x273a1d1d, 0xb9279e9e, 0x38d9e1e1, 0x13ebf8f8, 0xb32b9898, 0x33221111, 0xbbd26969, 0x70a9d9d9, 0x89078e8e, 0xa7339494, 0xb62d9b9b, 0x223c1e1e, 0x92158787, 0x20c9e9e9, 0x4987cece, 0xffaa5555, 0x78502828, 0x7aa5dfdf, 0x8f038c8c, 0xf859a1a1, 0x80098989, 0x171a0d0d, 0xda65bfbf, 0x31d7e6e6, 0xc6844242, 0xb8d06868, 0xc3824141, 0xb0299999, 0x775a2d2d, 0x111e0f0f, 0xcb7bb0b0, 0xfca85454, 0xd66dbbbb, 0x3a2c1616];
var T3 = [0x63a5c663, 0x7c84f87c, 0x7799ee77, 0x7b8df67b, 0xf20dfff2, 0x6bbdd66b, 0x6fb1de6f, 0xc55491c5, 0x30506030, 0x01030201, 0x67a9ce67, 0x2b7d562b, 0xfe19e7fe, 0xd762b5d7, 0xabe64dab, 0x769aec76, 0xca458fca, 0x829d1f82, 0xc94089c9, 0x7d87fa7d, 0xfa15effa, 0x59ebb259, 0x47c98e47, 0xf00bfbf0, 0xadec41ad, 0xd467b3d4, 0xa2fd5fa2, 0xafea45af, 0x9cbf239c, 0xa4f753a4, 0x7296e472, 0xc05b9bc0, 0xb7c275b7, 0xfd1ce1fd, 0x93ae3d93, 0x266a4c26, 0x365a6c36, 0x3f417e3f, 0xf702f5f7, 0xcc4f83cc, 0x345c6834, 0xa5f451a5, 0xe534d1e5, 0xf108f9f1, 0x7193e271, 0xd873abd8, 0x31536231, 0x153f2a15, 0x040c0804, 0xc75295c7, 0x23654623, 0xc35e9dc3, 0x18283018, 0x96a13796, 0x050f0a05, 0x9ab52f9a, 0x07090e07, 0x12362412, 0x809b1b80, 0xe23ddfe2, 0xeb26cdeb, 0x27694e27, 0xb2cd7fb2, 0x759fea75, 0x091b1209, 0x839e1d83, 0x2c74582c, 0x1a2e341a, 0x1b2d361b, 0x6eb2dc6e, 0x5aeeb45a, 0xa0fb5ba0, 0x52f6a452, 0x3b4d763b, 0xd661b7d6, 0xb3ce7db3, 0x297b5229, 0xe33edde3, 0x2f715e2f, 0x84971384, 0x53f5a653, 0xd168b9d1, 0x00000000, 0xed2cc1ed, 0x20604020, 0xfc1fe3fc, 0xb1c879b1, 0x5bedb65b, 0x6abed46a, 0xcb468dcb, 0xbed967be, 0x394b7239, 0x4ade944a, 0x4cd4984c, 0x58e8b058, 0xcf4a85cf, 0xd06bbbd0, 0xef2ac5ef, 0xaae54faa, 0xfb16edfb, 0x43c58643, 0x4dd79a4d, 0x33556633, 0x85941185, 0x45cf8a45, 0xf910e9f9, 0x02060402, 0x7f81fe7f, 0x50f0a050, 0x3c44783c, 0x9fba259f, 0xa8e34ba8, 0x51f3a251, 0xa3fe5da3, 0x40c08040, 0x8f8a058f, 0x92ad3f92, 0x9dbc219d, 0x38487038, 0xf504f1f5, 0xbcdf63bc, 0xb6c177b6, 0xda75afda, 0x21634221, 0x10302010, 0xff1ae5ff, 0xf30efdf3, 0xd26dbfd2, 0xcd4c81cd, 0x0c14180c, 0x13352613, 0xec2fc3ec, 0x5fe1be5f, 0x97a23597, 0x44cc8844, 0x17392e17, 0xc45793c4, 0xa7f255a7, 0x7e82fc7e, 0x3d477a3d, 0x64acc864, 0x5de7ba5d, 0x192b3219, 0x7395e673, 0x60a0c060, 0x81981981, 0x4fd19e4f, 0xdc7fa3dc, 0x22664422, 0x2a7e542a, 0x90ab3b90, 0x88830b88, 0x46ca8c46, 0xee29c7ee, 0xb8d36bb8, 0x143c2814, 0xde79a7de, 0x5ee2bc5e, 0x0b1d160b, 0xdb76addb, 0xe03bdbe0, 0x32566432, 0x3a4e743a, 0x0a1e140a, 0x49db9249, 0x060a0c06, 0x246c4824, 0x5ce4b85c, 0xc25d9fc2, 0xd36ebdd3, 0xacef43ac, 0x62a6c462, 0x91a83991, 0x95a43195, 0xe437d3e4, 0x798bf279, 0xe732d5e7, 0xc8438bc8, 0x37596e37, 0x6db7da6d, 0x8d8c018d, 0xd564b1d5, 0x4ed29c4e, 0xa9e049a9, 0x6cb4d86c, 0x56faac56, 0xf407f3f4, 0xea25cfea, 0x65afca65, 0x7a8ef47a, 0xaee947ae, 0x08181008, 0xbad56fba, 0x7888f078, 0x256f4a25, 0x2e725c2e, 0x1c24381c, 0xa6f157a6, 0xb4c773b4, 0xc65197c6, 0xe823cbe8, 0xdd7ca1dd, 0x749ce874, 0x1f213e1f, 0x4bdd964b, 0xbddc61bd, 0x8b860d8b, 0x8a850f8a, 0x7090e070, 0x3e427c3e, 0xb5c471b5, 0x66aacc66, 0x48d89048, 0x03050603, 0xf601f7f6, 0x0e121c0e, 0x61a3c261, 0x355f6a35, 0x57f9ae57, 0xb9d069b9, 0x86911786, 0xc15899c1, 0x1d273a1d, 0x9eb9279e, 0xe138d9e1, 0xf813ebf8, 0x98b32b98, 0x11332211, 0x69bbd269, 0xd970a9d9, 0x8e89078e, 0x94a73394, 0x9bb62d9b, 0x1e223c1e, 0x87921587, 0xe920c9e9, 0xce4987ce, 0x55ffaa55, 0x28785028, 0xdf7aa5df, 0x8c8f038c, 0xa1f859a1, 0x89800989, 0x0d171a0d, 0xbfda65bf, 0xe631d7e6, 0x42c68442, 0x68b8d068, 0x41c38241, 0x99b02999, 0x2d775a2d, 0x0f111e0f, 0xb0cb7bb0, 0x54fca854, 0xbbd66dbb, 0x163a2c16];
var T4 = [0x6363a5c6, 0x7c7c84f8, 0x777799ee, 0x7b7b8df6, 0xf2f20dff, 0x6b6bbdd6, 0x6f6fb1de, 0xc5c55491, 0x30305060, 0x01010302, 0x6767a9ce, 0x2b2b7d56, 0xfefe19e7, 0xd7d762b5, 0xababe64d, 0x76769aec, 0xcaca458f, 0x82829d1f, 0xc9c94089, 0x7d7d87fa, 0xfafa15ef, 0x5959ebb2, 0x4747c98e, 0xf0f00bfb, 0xadadec41, 0xd4d467b3, 0xa2a2fd5f, 0xafafea45, 0x9c9cbf23, 0xa4a4f753, 0x727296e4, 0xc0c05b9b, 0xb7b7c275, 0xfdfd1ce1, 0x9393ae3d, 0x26266a4c, 0x36365a6c, 0x3f3f417e, 0xf7f702f5, 0xcccc4f83, 0x34345c68, 0xa5a5f451, 0xe5e534d1, 0xf1f108f9, 0x717193e2, 0xd8d873ab, 0x31315362, 0x15153f2a, 0x04040c08, 0xc7c75295, 0x23236546, 0xc3c35e9d, 0x18182830, 0x9696a137, 0x05050f0a, 0x9a9ab52f, 0x0707090e, 0x12123624, 0x80809b1b, 0xe2e23ddf, 0xebeb26cd, 0x2727694e, 0xb2b2cd7f, 0x75759fea, 0x09091b12, 0x83839e1d, 0x2c2c7458, 0x1a1a2e34, 0x1b1b2d36, 0x6e6eb2dc, 0x5a5aeeb4, 0xa0a0fb5b, 0x5252f6a4, 0x3b3b4d76, 0xd6d661b7, 0xb3b3ce7d, 0x29297b52, 0xe3e33edd, 0x2f2f715e, 0x84849713, 0x5353f5a6, 0xd1d168b9, 0x00000000, 0xeded2cc1, 0x20206040, 0xfcfc1fe3, 0xb1b1c879, 0x5b5bedb6, 0x6a6abed4, 0xcbcb468d, 0xbebed967, 0x39394b72, 0x4a4ade94, 0x4c4cd498, 0x5858e8b0, 0xcfcf4a85, 0xd0d06bbb, 0xefef2ac5, 0xaaaae54f, 0xfbfb16ed, 0x4343c586, 0x4d4dd79a, 0x33335566, 0x85859411, 0x4545cf8a, 0xf9f910e9, 0x02020604, 0x7f7f81fe, 0x5050f0a0, 0x3c3c4478, 0x9f9fba25, 0xa8a8e34b, 0x5151f3a2, 0xa3a3fe5d, 0x4040c080, 0x8f8f8a05, 0x9292ad3f, 0x9d9dbc21, 0x38384870, 0xf5f504f1, 0xbcbcdf63, 0xb6b6c177, 0xdada75af, 0x21216342, 0x10103020, 0xffff1ae5, 0xf3f30efd, 0xd2d26dbf, 0xcdcd4c81, 0x0c0c1418, 0x13133526, 0xecec2fc3, 0x5f5fe1be, 0x9797a235, 0x4444cc88, 0x1717392e, 0xc4c45793, 0xa7a7f255, 0x7e7e82fc, 0x3d3d477a, 0x6464acc8, 0x5d5de7ba, 0x19192b32, 0x737395e6, 0x6060a0c0, 0x81819819, 0x4f4fd19e, 0xdcdc7fa3, 0x22226644, 0x2a2a7e54, 0x9090ab3b, 0x8888830b, 0x4646ca8c, 0xeeee29c7, 0xb8b8d36b, 0x14143c28, 0xdede79a7, 0x5e5ee2bc, 0x0b0b1d16, 0xdbdb76ad, 0xe0e03bdb, 0x32325664, 0x3a3a4e74, 0x0a0a1e14, 0x4949db92, 0x06060a0c, 0x24246c48, 0x5c5ce4b8, 0xc2c25d9f, 0xd3d36ebd, 0xacacef43, 0x6262a6c4, 0x9191a839, 0x9595a431, 0xe4e437d3, 0x79798bf2, 0xe7e732d5, 0xc8c8438b, 0x3737596e, 0x6d6db7da, 0x8d8d8c01, 0xd5d564b1, 0x4e4ed29c, 0xa9a9e049, 0x6c6cb4d8, 0x5656faac, 0xf4f407f3, 0xeaea25cf, 0x6565afca, 0x7a7a8ef4, 0xaeaee947, 0x08081810, 0xbabad56f, 0x787888f0, 0x25256f4a, 0x2e2e725c, 0x1c1c2438, 0xa6a6f157, 0xb4b4c773, 0xc6c65197, 0xe8e823cb, 0xdddd7ca1, 0x74749ce8, 0x1f1f213e, 0x4b4bdd96, 0xbdbddc61, 0x8b8b860d, 0x8a8a850f, 0x707090e0, 0x3e3e427c, 0xb5b5c471, 0x6666aacc, 0x4848d890, 0x03030506, 0xf6f601f7, 0x0e0e121c, 0x6161a3c2, 0x35355f6a, 0x5757f9ae, 0xb9b9d069, 0x86869117, 0xc1c15899, 0x1d1d273a, 0x9e9eb927, 0xe1e138d9, 0xf8f813eb, 0x9898b32b, 0x11113322, 0x6969bbd2, 0xd9d970a9, 0x8e8e8907, 0x9494a733, 0x9b9bb62d, 0x1e1e223c, 0x87879215, 0xe9e920c9, 0xcece4987, 0x5555ffaa, 0x28287850, 0xdfdf7aa5, 0x8c8c8f03, 0xa1a1f859, 0x89898009, 0x0d0d171a, 0xbfbfda65, 0xe6e631d7, 0x4242c684, 0x6868b8d0, 0x4141c382, 0x9999b029, 0x2d2d775a, 0x0f0f111e, 0xb0b0cb7b, 0x5454fca8, 0xbbbbd66d, 0x16163a2c];
// Transformations for decryption
var T5 = [0x51f4a750, 0x7e416553, 0x1a17a4c3, 0x3a275e96, 0x3bab6bcb, 0x1f9d45f1, 0xacfa58ab, 0x4be30393, 0x2030fa55, 0xad766df6, 0x88cc7691, 0xf5024c25, 0x4fe5d7fc, 0xc52acbd7, 0x26354480, 0xb562a38f, 0xdeb15a49, 0x25ba1b67, 0x45ea0e98, 0x5dfec0e1, 0xc32f7502, 0x814cf012, 0x8d4697a3, 0x6bd3f9c6, 0x038f5fe7, 0x15929c95, 0xbf6d7aeb, 0x955259da, 0xd4be832d, 0x587421d3, 0x49e06929, 0x8ec9c844, 0x75c2896a, 0xf48e7978, 0x99583e6b, 0x27b971dd, 0xbee14fb6, 0xf088ad17, 0xc920ac66, 0x7dce3ab4, 0x63df4a18, 0xe51a3182, 0x97513360, 0x62537f45, 0xb16477e0, 0xbb6bae84, 0xfe81a01c, 0xf9082b94, 0x70486858, 0x8f45fd19, 0x94de6c87, 0x527bf8b7, 0xab73d323, 0x724b02e2, 0xe31f8f57, 0x6655ab2a, 0xb2eb2807, 0x2fb5c203, 0x86c57b9a, 0xd33708a5, 0x302887f2, 0x23bfa5b2, 0x02036aba, 0xed16825c, 0x8acf1c2b, 0xa779b492, 0xf307f2f0, 0x4e69e2a1, 0x65daf4cd, 0x0605bed5, 0xd134621f, 0xc4a6fe8a, 0x342e539d, 0xa2f355a0, 0x058ae132, 0xa4f6eb75, 0x0b83ec39, 0x4060efaa, 0x5e719f06, 0xbd6e1051, 0x3e218af9, 0x96dd063d, 0xdd3e05ae, 0x4de6bd46, 0x91548db5, 0x71c45d05, 0x0406d46f, 0x605015ff, 0x1998fb24, 0xd6bde997, 0x894043cc, 0x67d99e77, 0xb0e842bd, 0x07898b88, 0xe7195b38, 0x79c8eedb, 0xa17c0a47, 0x7c420fe9, 0xf8841ec9, 0x00000000, 0x09808683, 0x322bed48, 0x1e1170ac, 0x6c5a724e, 0xfd0efffb, 0x0f853856, 0x3daed51e, 0x362d3927, 0x0a0fd964, 0x685ca621, 0x9b5b54d1, 0x24362e3a, 0x0c0a67b1, 0x9357e70f, 0xb4ee96d2, 0x1b9b919e, 0x80c0c54f, 0x61dc20a2, 0x5a774b69, 0x1c121a16, 0xe293ba0a, 0xc0a02ae5, 0x3c22e043, 0x121b171d, 0x0e090d0b, 0xf28bc7ad, 0x2db6a8b9, 0x141ea9c8, 0x57f11985, 0xaf75074c, 0xee99ddbb, 0xa37f60fd, 0xf701269f, 0x5c72f5bc, 0x44663bc5, 0x5bfb7e34, 0x8b432976, 0xcb23c6dc, 0xb6edfc68, 0xb8e4f163, 0xd731dcca, 0x42638510, 0x13972240, 0x84c61120, 0x854a247d, 0xd2bb3df8, 0xaef93211, 0xc729a16d, 0x1d9e2f4b, 0xdcb230f3, 0x0d8652ec, 0x77c1e3d0, 0x2bb3166c, 0xa970b999, 0x119448fa, 0x47e96422, 0xa8fc8cc4, 0xa0f03f1a, 0x567d2cd8, 0x223390ef, 0x87494ec7, 0xd938d1c1, 0x8ccaa2fe, 0x98d40b36, 0xa6f581cf, 0xa57ade28, 0xdab78e26, 0x3fadbfa4, 0x2c3a9de4, 0x5078920d, 0x6a5fcc9b, 0x547e4662, 0xf68d13c2, 0x90d8b8e8, 0x2e39f75e, 0x82c3aff5, 0x9f5d80be, 0x69d0937c, 0x6fd52da9, 0xcf2512b3, 0xc8ac993b, 0x10187da7, 0xe89c636e, 0xdb3bbb7b, 0xcd267809, 0x6e5918f4, 0xec9ab701, 0x834f9aa8, 0xe6956e65, 0xaaffe67e, 0x21bccf08, 0xef15e8e6, 0xbae79bd9, 0x4a6f36ce, 0xea9f09d4, 0x29b07cd6, 0x31a4b2af, 0x2a3f2331, 0xc6a59430, 0x35a266c0, 0x744ebc37, 0xfc82caa6, 0xe090d0b0, 0x33a7d815, 0xf104984a, 0x41ecdaf7, 0x7fcd500e, 0x1791f62f, 0x764dd68d, 0x43efb04d, 0xccaa4d54, 0xe49604df, 0x9ed1b5e3, 0x4c6a881b, 0xc12c1fb8, 0x4665517f, 0x9d5eea04, 0x018c355d, 0xfa877473, 0xfb0b412e, 0xb3671d5a, 0x92dbd252, 0xe9105633, 0x6dd64713, 0x9ad7618c, 0x37a10c7a, 0x59f8148e, 0xeb133c89, 0xcea927ee, 0xb761c935, 0xe11ce5ed, 0x7a47b13c, 0x9cd2df59, 0x55f2733f, 0x1814ce79, 0x73c737bf, 0x53f7cdea, 0x5ffdaa5b, 0xdf3d6f14, 0x7844db86, 0xcaaff381, 0xb968c43e, 0x3824342c, 0xc2a3405f, 0x161dc372, 0xbce2250c, 0x283c498b, 0xff0d9541, 0x39a80171, 0x080cb3de, 0xd8b4e49c, 0x6456c190, 0x7bcb8461, 0xd532b670, 0x486c5c74, 0xd0b85742];
var T6 = [0x5051f4a7, 0x537e4165, 0xc31a17a4, 0x963a275e, 0xcb3bab6b, 0xf11f9d45, 0xabacfa58, 0x934be303, 0x552030fa, 0xf6ad766d, 0x9188cc76, 0x25f5024c, 0xfc4fe5d7, 0xd7c52acb, 0x80263544, 0x8fb562a3, 0x49deb15a, 0x6725ba1b, 0x9845ea0e, 0xe15dfec0, 0x02c32f75, 0x12814cf0, 0xa38d4697, 0xc66bd3f9, 0xe7038f5f, 0x9515929c, 0xebbf6d7a, 0xda955259, 0x2dd4be83, 0xd3587421, 0x2949e069, 0x448ec9c8, 0x6a75c289, 0x78f48e79, 0x6b99583e, 0xdd27b971, 0xb6bee14f, 0x17f088ad, 0x66c920ac, 0xb47dce3a, 0x1863df4a, 0x82e51a31, 0x60975133, 0x4562537f, 0xe0b16477, 0x84bb6bae, 0x1cfe81a0, 0x94f9082b, 0x58704868, 0x198f45fd, 0x8794de6c, 0xb7527bf8, 0x23ab73d3, 0xe2724b02, 0x57e31f8f, 0x2a6655ab, 0x07b2eb28, 0x032fb5c2, 0x9a86c57b, 0xa5d33708, 0xf2302887, 0xb223bfa5, 0xba02036a, 0x5ced1682, 0x2b8acf1c, 0x92a779b4, 0xf0f307f2, 0xa14e69e2, 0xcd65daf4, 0xd50605be, 0x1fd13462, 0x8ac4a6fe, 0x9d342e53, 0xa0a2f355, 0x32058ae1, 0x75a4f6eb, 0x390b83ec, 0xaa4060ef, 0x065e719f, 0x51bd6e10, 0xf93e218a, 0x3d96dd06, 0xaedd3e05, 0x464de6bd, 0xb591548d, 0x0571c45d, 0x6f0406d4, 0xff605015, 0x241998fb, 0x97d6bde9, 0xcc894043, 0x7767d99e, 0xbdb0e842, 0x8807898b, 0x38e7195b, 0xdb79c8ee, 0x47a17c0a, 0xe97c420f, 0xc9f8841e, 0x00000000, 0x83098086, 0x48322bed, 0xac1e1170, 0x4e6c5a72, 0xfbfd0eff, 0x560f8538, 0x1e3daed5, 0x27362d39, 0x640a0fd9, 0x21685ca6, 0xd19b5b54, 0x3a24362e, 0xb10c0a67, 0x0f9357e7, 0xd2b4ee96, 0x9e1b9b91, 0x4f80c0c5, 0xa261dc20, 0x695a774b, 0x161c121a, 0x0ae293ba, 0xe5c0a02a, 0x433c22e0, 0x1d121b17, 0x0b0e090d, 0xadf28bc7, 0xb92db6a8, 0xc8141ea9, 0x8557f119, 0x4caf7507, 0xbbee99dd, 0xfda37f60, 0x9ff70126, 0xbc5c72f5, 0xc544663b, 0x345bfb7e, 0x768b4329, 0xdccb23c6, 0x68b6edfc, 0x63b8e4f1, 0xcad731dc, 0x10426385, 0x40139722, 0x2084c611, 0x7d854a24, 0xf8d2bb3d, 0x11aef932, 0x6dc729a1, 0x4b1d9e2f, 0xf3dcb230, 0xec0d8652, 0xd077c1e3, 0x6c2bb316, 0x99a970b9, 0xfa119448, 0x2247e964, 0xc4a8fc8c, 0x1aa0f03f, 0xd8567d2c, 0xef223390, 0xc787494e, 0xc1d938d1, 0xfe8ccaa2, 0x3698d40b, 0xcfa6f581, 0x28a57ade, 0x26dab78e, 0xa43fadbf, 0xe42c3a9d, 0x0d507892, 0x9b6a5fcc, 0x62547e46, 0xc2f68d13, 0xe890d8b8, 0x5e2e39f7, 0xf582c3af, 0xbe9f5d80, 0x7c69d093, 0xa96fd52d, 0xb3cf2512, 0x3bc8ac99, 0xa710187d, 0x6ee89c63, 0x7bdb3bbb, 0x09cd2678, 0xf46e5918, 0x01ec9ab7, 0xa8834f9a, 0x65e6956e, 0x7eaaffe6, 0x0821bccf, 0xe6ef15e8, 0xd9bae79b, 0xce4a6f36, 0xd4ea9f09, 0xd629b07c, 0xaf31a4b2, 0x312a3f23, 0x30c6a594, 0xc035a266, 0x37744ebc, 0xa6fc82ca, 0xb0e090d0, 0x1533a7d8, 0x4af10498, 0xf741ecda, 0x0e7fcd50, 0x2f1791f6, 0x8d764dd6, 0x4d43efb0, 0x54ccaa4d, 0xdfe49604, 0xe39ed1b5, 0x1b4c6a88, 0xb8c12c1f, 0x7f466551, 0x049d5eea, 0x5d018c35, 0x73fa8774, 0x2efb0b41, 0x5ab3671d, 0x5292dbd2, 0x33e91056, 0x136dd647, 0x8c9ad761, 0x7a37a10c, 0x8e59f814, 0x89eb133c, 0xeecea927, 0x35b761c9, 0xede11ce5, 0x3c7a47b1, 0x599cd2df, 0x3f55f273, 0x791814ce, 0xbf73c737, 0xea53f7cd, 0x5b5ffdaa, 0x14df3d6f, 0x867844db, 0x81caaff3, 0x3eb968c4, 0x2c382434, 0x5fc2a340, 0x72161dc3, 0x0cbce225, 0x8b283c49, 0x41ff0d95, 0x7139a801, 0xde080cb3, 0x9cd8b4e4, 0x906456c1, 0x617bcb84, 0x70d532b6, 0x74486c5c, 0x42d0b857];
var T7 = [0xa75051f4, 0x65537e41, 0xa4c31a17, 0x5e963a27, 0x6bcb3bab, 0x45f11f9d, 0x58abacfa, 0x03934be3, 0xfa552030, 0x6df6ad76, 0x769188cc, 0x4c25f502, 0xd7fc4fe5, 0xcbd7c52a, 0x44802635, 0xa38fb562, 0x5a49deb1, 0x1b6725ba, 0x0e9845ea, 0xc0e15dfe, 0x7502c32f, 0xf012814c, 0x97a38d46, 0xf9c66bd3, 0x5fe7038f, 0x9c951592, 0x7aebbf6d, 0x59da9552, 0x832dd4be, 0x21d35874, 0x692949e0, 0xc8448ec9, 0x896a75c2, 0x7978f48e, 0x3e6b9958, 0x71dd27b9, 0x4fb6bee1, 0xad17f088, 0xac66c920, 0x3ab47dce, 0x4a1863df, 0x3182e51a, 0x33609751, 0x7f456253, 0x77e0b164, 0xae84bb6b, 0xa01cfe81, 0x2b94f908, 0x68587048, 0xfd198f45, 0x6c8794de, 0xf8b7527b, 0xd323ab73, 0x02e2724b, 0x8f57e31f, 0xab2a6655, 0x2807b2eb, 0xc2032fb5, 0x7b9a86c5, 0x08a5d337, 0x87f23028, 0xa5b223bf, 0x6aba0203, 0x825ced16, 0x1c2b8acf, 0xb492a779, 0xf2f0f307, 0xe2a14e69, 0xf4cd65da, 0xbed50605, 0x621fd134, 0xfe8ac4a6, 0x539d342e, 0x55a0a2f3, 0xe132058a, 0xeb75a4f6, 0xec390b83, 0xefaa4060, 0x9f065e71, 0x1051bd6e, 0x8af93e21, 0x063d96dd, 0x05aedd3e, 0xbd464de6, 0x8db59154, 0x5d0571c4, 0xd46f0406, 0x15ff6050, 0xfb241998, 0xe997d6bd, 0x43cc8940, 0x9e7767d9, 0x42bdb0e8, 0x8b880789, 0x5b38e719, 0xeedb79c8, 0x0a47a17c, 0x0fe97c42, 0x1ec9f884, 0x00000000, 0x86830980, 0xed48322b, 0x70ac1e11, 0x724e6c5a, 0xfffbfd0e, 0x38560f85, 0xd51e3dae, 0x3927362d, 0xd9640a0f, 0xa621685c, 0x54d19b5b, 0x2e3a2436, 0x67b10c0a, 0xe70f9357, 0x96d2b4ee, 0x919e1b9b, 0xc54f80c0, 0x20a261dc, 0x4b695a77, 0x1a161c12, 0xba0ae293, 0x2ae5c0a0, 0xe0433c22, 0x171d121b, 0x0d0b0e09, 0xc7adf28b, 0xa8b92db6, 0xa9c8141e, 0x198557f1, 0x074caf75, 0xddbbee99, 0x60fda37f, 0x269ff701, 0xf5bc5c72, 0x3bc54466, 0x7e345bfb, 0x29768b43, 0xc6dccb23, 0xfc68b6ed, 0xf163b8e4, 0xdccad731, 0x85104263, 0x22401397, 0x112084c6, 0x247d854a, 0x3df8d2bb, 0x3211aef9, 0xa16dc729, 0x2f4b1d9e, 0x30f3dcb2, 0x52ec0d86, 0xe3d077c1, 0x166c2bb3, 0xb999a970, 0x48fa1194, 0x642247e9, 0x8cc4a8fc, 0x3f1aa0f0, 0x2cd8567d, 0x90ef2233, 0x4ec78749, 0xd1c1d938, 0xa2fe8cca, 0x0b3698d4, 0x81cfa6f5, 0xde28a57a, 0x8e26dab7, 0xbfa43fad, 0x9de42c3a, 0x920d5078, 0xcc9b6a5f, 0x4662547e, 0x13c2f68d, 0xb8e890d8, 0xf75e2e39, 0xaff582c3, 0x80be9f5d, 0x937c69d0, 0x2da96fd5, 0x12b3cf25, 0x993bc8ac, 0x7da71018, 0x636ee89c, 0xbb7bdb3b, 0x7809cd26, 0x18f46e59, 0xb701ec9a, 0x9aa8834f, 0x6e65e695, 0xe67eaaff, 0xcf0821bc, 0xe8e6ef15, 0x9bd9bae7, 0x36ce4a6f, 0x09d4ea9f, 0x7cd629b0, 0xb2af31a4, 0x23312a3f, 0x9430c6a5, 0x66c035a2, 0xbc37744e, 0xcaa6fc82, 0xd0b0e090, 0xd81533a7, 0x984af104, 0xdaf741ec, 0x500e7fcd, 0xf62f1791, 0xd68d764d, 0xb04d43ef, 0x4d54ccaa, 0x04dfe496, 0xb5e39ed1, 0x881b4c6a, 0x1fb8c12c, 0x517f4665, 0xea049d5e, 0x355d018c, 0x7473fa87, 0x412efb0b, 0x1d5ab367, 0xd25292db, 0x5633e910, 0x47136dd6, 0x618c9ad7, 0x0c7a37a1, 0x148e59f8, 0x3c89eb13, 0x27eecea9, 0xc935b761, 0xe5ede11c, 0xb13c7a47, 0xdf599cd2, 0x733f55f2, 0xce791814, 0x37bf73c7, 0xcdea53f7, 0xaa5b5ffd, 0x6f14df3d, 0xdb867844, 0xf381caaf, 0xc43eb968, 0x342c3824, 0x405fc2a3, 0xc372161d, 0x250cbce2, 0x498b283c, 0x9541ff0d, 0x017139a8, 0xb3de080c, 0xe49cd8b4, 0xc1906456, 0x84617bcb, 0xb670d532, 0x5c74486c, 0x5742d0b8];
var T8 = [0xf4a75051, 0x4165537e, 0x17a4c31a, 0x275e963a, 0xab6bcb3b, 0x9d45f11f, 0xfa58abac, 0xe303934b, 0x30fa5520, 0x766df6ad, 0xcc769188, 0x024c25f5, 0xe5d7fc4f, 0x2acbd7c5, 0x35448026, 0x62a38fb5, 0xb15a49de, 0xba1b6725, 0xea0e9845, 0xfec0e15d, 0x2f7502c3, 0x4cf01281, 0x4697a38d, 0xd3f9c66b, 0x8f5fe703, 0x929c9515, 0x6d7aebbf, 0x5259da95, 0xbe832dd4, 0x7421d358, 0xe0692949, 0xc9c8448e, 0xc2896a75, 0x8e7978f4, 0x583e6b99, 0xb971dd27, 0xe14fb6be, 0x88ad17f0, 0x20ac66c9, 0xce3ab47d, 0xdf4a1863, 0x1a3182e5, 0x51336097, 0x537f4562, 0x6477e0b1, 0x6bae84bb, 0x81a01cfe, 0x082b94f9, 0x48685870, 0x45fd198f, 0xde6c8794, 0x7bf8b752, 0x73d323ab, 0x4b02e272, 0x1f8f57e3, 0x55ab2a66, 0xeb2807b2, 0xb5c2032f, 0xc57b9a86, 0x3708a5d3, 0x2887f230, 0xbfa5b223, 0x036aba02, 0x16825ced, 0xcf1c2b8a, 0x79b492a7, 0x07f2f0f3, 0x69e2a14e, 0xdaf4cd65, 0x05bed506, 0x34621fd1, 0xa6fe8ac4, 0x2e539d34, 0xf355a0a2, 0x8ae13205, 0xf6eb75a4, 0x83ec390b, 0x60efaa40, 0x719f065e, 0x6e1051bd, 0x218af93e, 0xdd063d96, 0x3e05aedd, 0xe6bd464d, 0x548db591, 0xc45d0571, 0x06d46f04, 0x5015ff60, 0x98fb2419, 0xbde997d6, 0x4043cc89, 0xd99e7767, 0xe842bdb0, 0x898b8807, 0x195b38e7, 0xc8eedb79, 0x7c0a47a1, 0x420fe97c, 0x841ec9f8, 0x00000000, 0x80868309, 0x2bed4832, 0x1170ac1e, 0x5a724e6c, 0x0efffbfd, 0x8538560f, 0xaed51e3d, 0x2d392736, 0x0fd9640a, 0x5ca62168, 0x5b54d19b, 0x362e3a24, 0x0a67b10c, 0x57e70f93, 0xee96d2b4, 0x9b919e1b, 0xc0c54f80, 0xdc20a261, 0x774b695a, 0x121a161c, 0x93ba0ae2, 0xa02ae5c0, 0x22e0433c, 0x1b171d12, 0x090d0b0e, 0x8bc7adf2, 0xb6a8b92d, 0x1ea9c814, 0xf1198557, 0x75074caf, 0x99ddbbee, 0x7f60fda3, 0x01269ff7, 0x72f5bc5c, 0x663bc544, 0xfb7e345b, 0x4329768b, 0x23c6dccb, 0xedfc68b6, 0xe4f163b8, 0x31dccad7, 0x63851042, 0x97224013, 0xc6112084, 0x4a247d85, 0xbb3df8d2, 0xf93211ae, 0x29a16dc7, 0x9e2f4b1d, 0xb230f3dc, 0x8652ec0d, 0xc1e3d077, 0xb3166c2b, 0x70b999a9, 0x9448fa11, 0xe9642247, 0xfc8cc4a8, 0xf03f1aa0, 0x7d2cd856, 0x3390ef22, 0x494ec787, 0x38d1c1d9, 0xcaa2fe8c, 0xd40b3698, 0xf581cfa6, 0x7ade28a5, 0xb78e26da, 0xadbfa43f, 0x3a9de42c, 0x78920d50, 0x5fcc9b6a, 0x7e466254, 0x8d13c2f6, 0xd8b8e890, 0x39f75e2e, 0xc3aff582, 0x5d80be9f, 0xd0937c69, 0xd52da96f, 0x2512b3cf, 0xac993bc8, 0x187da710, 0x9c636ee8, 0x3bbb7bdb, 0x267809cd, 0x5918f46e, 0x9ab701ec, 0x4f9aa883, 0x956e65e6, 0xffe67eaa, 0xbccf0821, 0x15e8e6ef, 0xe79bd9ba, 0x6f36ce4a, 0x9f09d4ea, 0xb07cd629, 0xa4b2af31, 0x3f23312a, 0xa59430c6, 0xa266c035, 0x4ebc3774, 0x82caa6fc, 0x90d0b0e0, 0xa7d81533, 0x04984af1, 0xecdaf741, 0xcd500e7f, 0x91f62f17, 0x4dd68d76, 0xefb04d43, 0xaa4d54cc, 0x9604dfe4, 0xd1b5e39e, 0x6a881b4c, 0x2c1fb8c1, 0x65517f46, 0x5eea049d, 0x8c355d01, 0x877473fa, 0x0b412efb, 0x671d5ab3, 0xdbd25292, 0x105633e9, 0xd647136d, 0xd7618c9a, 0xa10c7a37, 0xf8148e59, 0x133c89eb, 0xa927eece, 0x61c935b7, 0x1ce5ede1, 0x47b13c7a, 0xd2df599c, 0xf2733f55, 0x14ce7918, 0xc737bf73, 0xf7cdea53, 0xfdaa5b5f, 0x3d6f14df, 0x44db8678, 0xaff381ca, 0x68c43eb9, 0x24342c38, 0xa3405fc2, 0x1dc37216, 0xe2250cbc, 0x3c498b28, 0x0d9541ff, 0xa8017139, 0x0cb3de08, 0xb4e49cd8, 0x56c19064, 0xcb84617b, 0x32b670d5, 0x6c5c7448, 0xb85742d0];
// Transformations for decryption key expansion
var U1 = [0x00000000, 0x0e090d0b, 0x1c121a16, 0x121b171d, 0x3824342c, 0x362d3927, 0x24362e3a, 0x2a3f2331, 0x70486858, 0x7e416553, 0x6c5a724e, 0x62537f45, 0x486c5c74, 0x4665517f, 0x547e4662, 0x5a774b69, 0xe090d0b0, 0xee99ddbb, 0xfc82caa6, 0xf28bc7ad, 0xd8b4e49c, 0xd6bde997, 0xc4a6fe8a, 0xcaaff381, 0x90d8b8e8, 0x9ed1b5e3, 0x8ccaa2fe, 0x82c3aff5, 0xa8fc8cc4, 0xa6f581cf, 0xb4ee96d2, 0xbae79bd9, 0xdb3bbb7b, 0xd532b670, 0xc729a16d, 0xc920ac66, 0xe31f8f57, 0xed16825c, 0xff0d9541, 0xf104984a, 0xab73d323, 0xa57ade28, 0xb761c935, 0xb968c43e, 0x9357e70f, 0x9d5eea04, 0x8f45fd19, 0x814cf012, 0x3bab6bcb, 0x35a266c0, 0x27b971dd, 0x29b07cd6, 0x038f5fe7, 0x0d8652ec, 0x1f9d45f1, 0x119448fa, 0x4be30393, 0x45ea0e98, 0x57f11985, 0x59f8148e, 0x73c737bf, 0x7dce3ab4, 0x6fd52da9, 0x61dc20a2, 0xad766df6, 0xa37f60fd, 0xb16477e0, 0xbf6d7aeb, 0x955259da, 0x9b5b54d1, 0x894043cc, 0x87494ec7, 0xdd3e05ae, 0xd33708a5, 0xc12c1fb8, 0xcf2512b3, 0xe51a3182, 0xeb133c89, 0xf9082b94, 0xf701269f, 0x4de6bd46, 0x43efb04d, 0x51f4a750, 0x5ffdaa5b, 0x75c2896a, 0x7bcb8461, 0x69d0937c, 0x67d99e77, 0x3daed51e, 0x33a7d815, 0x21bccf08, 0x2fb5c203, 0x058ae132, 0x0b83ec39, 0x1998fb24, 0x1791f62f, 0x764dd68d, 0x7844db86, 0x6a5fcc9b, 0x6456c190, 0x4e69e2a1, 0x4060efaa, 0x527bf8b7, 0x5c72f5bc, 0x0605bed5, 0x080cb3de, 0x1a17a4c3, 0x141ea9c8, 0x3e218af9, 0x302887f2, 0x223390ef, 0x2c3a9de4, 0x96dd063d, 0x98d40b36, 0x8acf1c2b, 0x84c61120, 0xaef93211, 0xa0f03f1a, 0xb2eb2807, 0xbce2250c, 0xe6956e65, 0xe89c636e, 0xfa877473, 0xf48e7978, 0xdeb15a49, 0xd0b85742, 0xc2a3405f, 0xccaa4d54, 0x41ecdaf7, 0x4fe5d7fc, 0x5dfec0e1, 0x53f7cdea, 0x79c8eedb, 0x77c1e3d0, 0x65daf4cd, 0x6bd3f9c6, 0x31a4b2af, 0x3fadbfa4, 0x2db6a8b9, 0x23bfa5b2, 0x09808683, 0x07898b88, 0x15929c95, 0x1b9b919e, 0xa17c0a47, 0xaf75074c, 0xbd6e1051, 0xb3671d5a, 0x99583e6b, 0x97513360, 0x854a247d, 0x8b432976, 0xd134621f, 0xdf3d6f14, 0xcd267809, 0xc32f7502, 0xe9105633, 0xe7195b38, 0xf5024c25, 0xfb0b412e, 0x9ad7618c, 0x94de6c87, 0x86c57b9a, 0x88cc7691, 0xa2f355a0, 0xacfa58ab, 0xbee14fb6, 0xb0e842bd, 0xea9f09d4, 0xe49604df, 0xf68d13c2, 0xf8841ec9, 0xd2bb3df8, 0xdcb230f3, 0xcea927ee, 0xc0a02ae5, 0x7a47b13c, 0x744ebc37, 0x6655ab2a, 0x685ca621, 0x42638510, 0x4c6a881b, 0x5e719f06, 0x5078920d, 0x0a0fd964, 0x0406d46f, 0x161dc372, 0x1814ce79, 0x322bed48, 0x3c22e043, 0x2e39f75e, 0x2030fa55, 0xec9ab701, 0xe293ba0a, 0xf088ad17, 0xfe81a01c, 0xd4be832d, 0xdab78e26, 0xc8ac993b, 0xc6a59430, 0x9cd2df59, 0x92dbd252, 0x80c0c54f, 0x8ec9c844, 0xa4f6eb75, 0xaaffe67e, 0xb8e4f163, 0xb6edfc68, 0x0c0a67b1, 0x02036aba, 0x10187da7, 0x1e1170ac, 0x342e539d, 0x3a275e96, 0x283c498b, 0x26354480, 0x7c420fe9, 0x724b02e2, 0x605015ff, 0x6e5918f4, 0x44663bc5, 0x4a6f36ce, 0x587421d3, 0x567d2cd8, 0x37a10c7a, 0x39a80171, 0x2bb3166c, 0x25ba1b67, 0x0f853856, 0x018c355d, 0x13972240, 0x1d9e2f4b, 0x47e96422, 0x49e06929, 0x5bfb7e34, 0x55f2733f, 0x7fcd500e, 0x71c45d05, 0x63df4a18, 0x6dd64713, 0xd731dcca, 0xd938d1c1, 0xcb23c6dc, 0xc52acbd7, 0xef15e8e6, 0xe11ce5ed, 0xf307f2f0, 0xfd0efffb, 0xa779b492, 0xa970b999, 0xbb6bae84, 0xb562a38f, 0x9f5d80be, 0x91548db5, 0x834f9aa8, 0x8d4697a3];
var U2 = [0x00000000, 0x0b0e090d, 0x161c121a, 0x1d121b17, 0x2c382434, 0x27362d39, 0x3a24362e, 0x312a3f23, 0x58704868, 0x537e4165, 0x4e6c5a72, 0x4562537f, 0x74486c5c, 0x7f466551, 0x62547e46, 0x695a774b, 0xb0e090d0, 0xbbee99dd, 0xa6fc82ca, 0xadf28bc7, 0x9cd8b4e4, 0x97d6bde9, 0x8ac4a6fe, 0x81caaff3, 0xe890d8b8, 0xe39ed1b5, 0xfe8ccaa2, 0xf582c3af, 0xc4a8fc8c, 0xcfa6f581, 0xd2b4ee96, 0xd9bae79b, 0x7bdb3bbb, 0x70d532b6, 0x6dc729a1, 0x66c920ac, 0x57e31f8f, 0x5ced1682, 0x41ff0d95, 0x4af10498, 0x23ab73d3, 0x28a57ade, 0x35b761c9, 0x3eb968c4, 0x0f9357e7, 0x049d5eea, 0x198f45fd, 0x12814cf0, 0xcb3bab6b, 0xc035a266, 0xdd27b971, 0xd629b07c, 0xe7038f5f, 0xec0d8652, 0xf11f9d45, 0xfa119448, 0x934be303, 0x9845ea0e, 0x8557f119, 0x8e59f814, 0xbf73c737, 0xb47dce3a, 0xa96fd52d, 0xa261dc20, 0xf6ad766d, 0xfda37f60, 0xe0b16477, 0xebbf6d7a, 0xda955259, 0xd19b5b54, 0xcc894043, 0xc787494e, 0xaedd3e05, 0xa5d33708, 0xb8c12c1f, 0xb3cf2512, 0x82e51a31, 0x89eb133c, 0x94f9082b, 0x9ff70126, 0x464de6bd, 0x4d43efb0, 0x5051f4a7, 0x5b5ffdaa, 0x6a75c289, 0x617bcb84, 0x7c69d093, 0x7767d99e, 0x1e3daed5, 0x1533a7d8, 0x0821bccf, 0x032fb5c2, 0x32058ae1, 0x390b83ec, 0x241998fb, 0x2f1791f6, 0x8d764dd6, 0x867844db, 0x9b6a5fcc, 0x906456c1, 0xa14e69e2, 0xaa4060ef, 0xb7527bf8, 0xbc5c72f5, 0xd50605be, 0xde080cb3, 0xc31a17a4, 0xc8141ea9, 0xf93e218a, 0xf2302887, 0xef223390, 0xe42c3a9d, 0x3d96dd06, 0x3698d40b, 0x2b8acf1c, 0x2084c611, 0x11aef932, 0x1aa0f03f, 0x07b2eb28, 0x0cbce225, 0x65e6956e, 0x6ee89c63, 0x73fa8774, 0x78f48e79, 0x49deb15a, 0x42d0b857, 0x5fc2a340, 0x54ccaa4d, 0xf741ecda, 0xfc4fe5d7, 0xe15dfec0, 0xea53f7cd, 0xdb79c8ee, 0xd077c1e3, 0xcd65daf4, 0xc66bd3f9, 0xaf31a4b2, 0xa43fadbf, 0xb92db6a8, 0xb223bfa5, 0x83098086, 0x8807898b, 0x9515929c, 0x9e1b9b91, 0x47a17c0a, 0x4caf7507, 0x51bd6e10, 0x5ab3671d, 0x6b99583e, 0x60975133, 0x7d854a24, 0x768b4329, 0x1fd13462, 0x14df3d6f, 0x09cd2678, 0x02c32f75, 0x33e91056, 0x38e7195b, 0x25f5024c, 0x2efb0b41, 0x8c9ad761, 0x8794de6c, 0x9a86c57b, 0x9188cc76, 0xa0a2f355, 0xabacfa58, 0xb6bee14f, 0xbdb0e842, 0xd4ea9f09, 0xdfe49604, 0xc2f68d13, 0xc9f8841e, 0xf8d2bb3d, 0xf3dcb230, 0xeecea927, 0xe5c0a02a, 0x3c7a47b1, 0x37744ebc, 0x2a6655ab, 0x21685ca6, 0x10426385, 0x1b4c6a88, 0x065e719f, 0x0d507892, 0x640a0fd9, 0x6f0406d4, 0x72161dc3, 0x791814ce, 0x48322bed, 0x433c22e0, 0x5e2e39f7, 0x552030fa, 0x01ec9ab7, 0x0ae293ba, 0x17f088ad, 0x1cfe81a0, 0x2dd4be83, 0x26dab78e, 0x3bc8ac99, 0x30c6a594, 0x599cd2df, 0x5292dbd2, 0x4f80c0c5, 0x448ec9c8, 0x75a4f6eb, 0x7eaaffe6, 0x63b8e4f1, 0x68b6edfc, 0xb10c0a67, 0xba02036a, 0xa710187d, 0xac1e1170, 0x9d342e53, 0x963a275e, 0x8b283c49, 0x80263544, 0xe97c420f, 0xe2724b02, 0xff605015, 0xf46e5918, 0xc544663b, 0xce4a6f36, 0xd3587421, 0xd8567d2c, 0x7a37a10c, 0x7139a801, 0x6c2bb316, 0x6725ba1b, 0x560f8538, 0x5d018c35, 0x40139722, 0x4b1d9e2f, 0x2247e964, 0x2949e069, 0x345bfb7e, 0x3f55f273, 0x0e7fcd50, 0x0571c45d, 0x1863df4a, 0x136dd647, 0xcad731dc, 0xc1d938d1, 0xdccb23c6, 0xd7c52acb, 0xe6ef15e8, 0xede11ce5, 0xf0f307f2, 0xfbfd0eff, 0x92a779b4, 0x99a970b9, 0x84bb6bae, 0x8fb562a3, 0xbe9f5d80, 0xb591548d, 0xa8834f9a, 0xa38d4697];
var U3 = [0x00000000, 0x0d0b0e09, 0x1a161c12, 0x171d121b, 0x342c3824, 0x3927362d, 0x2e3a2436, 0x23312a3f, 0x68587048, 0x65537e41, 0x724e6c5a, 0x7f456253, 0x5c74486c, 0x517f4665, 0x4662547e, 0x4b695a77, 0xd0b0e090, 0xddbbee99, 0xcaa6fc82, 0xc7adf28b, 0xe49cd8b4, 0xe997d6bd, 0xfe8ac4a6, 0xf381caaf, 0xb8e890d8, 0xb5e39ed1, 0xa2fe8cca, 0xaff582c3, 0x8cc4a8fc, 0x81cfa6f5, 0x96d2b4ee, 0x9bd9bae7, 0xbb7bdb3b, 0xb670d532, 0xa16dc729, 0xac66c920, 0x8f57e31f, 0x825ced16, 0x9541ff0d, 0x984af104, 0xd323ab73, 0xde28a57a, 0xc935b761, 0xc43eb968, 0xe70f9357, 0xea049d5e, 0xfd198f45, 0xf012814c, 0x6bcb3bab, 0x66c035a2, 0x71dd27b9, 0x7cd629b0, 0x5fe7038f, 0x52ec0d86, 0x45f11f9d, 0x48fa1194, 0x03934be3, 0x0e9845ea, 0x198557f1, 0x148e59f8, 0x37bf73c7, 0x3ab47dce, 0x2da96fd5, 0x20a261dc, 0x6df6ad76, 0x60fda37f, 0x77e0b164, 0x7aebbf6d, 0x59da9552, 0x54d19b5b, 0x43cc8940, 0x4ec78749, 0x05aedd3e, 0x08a5d337, 0x1fb8c12c, 0x12b3cf25, 0x3182e51a, 0x3c89eb13, 0x2b94f908, 0x269ff701, 0xbd464de6, 0xb04d43ef, 0xa75051f4, 0xaa5b5ffd, 0x896a75c2, 0x84617bcb, 0x937c69d0, 0x9e7767d9, 0xd51e3dae, 0xd81533a7, 0xcf0821bc, 0xc2032fb5, 0xe132058a, 0xec390b83, 0xfb241998, 0xf62f1791, 0xd68d764d, 0xdb867844, 0xcc9b6a5f, 0xc1906456, 0xe2a14e69, 0xefaa4060, 0xf8b7527b, 0xf5bc5c72, 0xbed50605, 0xb3de080c, 0xa4c31a17, 0xa9c8141e, 0x8af93e21, 0x87f23028, 0x90ef2233, 0x9de42c3a, 0x063d96dd, 0x0b3698d4, 0x1c2b8acf, 0x112084c6, 0x3211aef9, 0x3f1aa0f0, 0x2807b2eb, 0x250cbce2, 0x6e65e695, 0x636ee89c, 0x7473fa87, 0x7978f48e, 0x5a49deb1, 0x5742d0b8, 0x405fc2a3, 0x4d54ccaa, 0xdaf741ec, 0xd7fc4fe5, 0xc0e15dfe, 0xcdea53f7, 0xeedb79c8, 0xe3d077c1, 0xf4cd65da, 0xf9c66bd3, 0xb2af31a4, 0xbfa43fad, 0xa8b92db6, 0xa5b223bf, 0x86830980, 0x8b880789, 0x9c951592, 0x919e1b9b, 0x0a47a17c, 0x074caf75, 0x1051bd6e, 0x1d5ab367, 0x3e6b9958, 0x33609751, 0x247d854a, 0x29768b43, 0x621fd134, 0x6f14df3d, 0x7809cd26, 0x7502c32f, 0x5633e910, 0x5b38e719, 0x4c25f502, 0x412efb0b, 0x618c9ad7, 0x6c8794de, 0x7b9a86c5, 0x769188cc, 0x55a0a2f3, 0x58abacfa, 0x4fb6bee1, 0x42bdb0e8, 0x09d4ea9f, 0x04dfe496, 0x13c2f68d, 0x1ec9f884, 0x3df8d2bb, 0x30f3dcb2, 0x27eecea9, 0x2ae5c0a0, 0xb13c7a47, 0xbc37744e, 0xab2a6655, 0xa621685c, 0x85104263, 0x881b4c6a, 0x9f065e71, 0x920d5078, 0xd9640a0f, 0xd46f0406, 0xc372161d, 0xce791814, 0xed48322b, 0xe0433c22, 0xf75e2e39, 0xfa552030, 0xb701ec9a, 0xba0ae293, 0xad17f088, 0xa01cfe81, 0x832dd4be, 0x8e26dab7, 0x993bc8ac, 0x9430c6a5, 0xdf599cd2, 0xd25292db, 0xc54f80c0, 0xc8448ec9, 0xeb75a4f6, 0xe67eaaff, 0xf163b8e4, 0xfc68b6ed, 0x67b10c0a, 0x6aba0203, 0x7da71018, 0x70ac1e11, 0x539d342e, 0x5e963a27, 0x498b283c, 0x44802635, 0x0fe97c42, 0x02e2724b, 0x15ff6050, 0x18f46e59, 0x3bc54466, 0x36ce4a6f, 0x21d35874, 0x2cd8567d, 0x0c7a37a1, 0x017139a8, 0x166c2bb3, 0x1b6725ba, 0x38560f85, 0x355d018c, 0x22401397, 0x2f4b1d9e, 0x642247e9, 0x692949e0, 0x7e345bfb, 0x733f55f2, 0x500e7fcd, 0x5d0571c4, 0x4a1863df, 0x47136dd6, 0xdccad731, 0xd1c1d938, 0xc6dccb23, 0xcbd7c52a, 0xe8e6ef15, 0xe5ede11c, 0xf2f0f307, 0xfffbfd0e, 0xb492a779, 0xb999a970, 0xae84bb6b, 0xa38fb562, 0x80be9f5d, 0x8db59154, 0x9aa8834f, 0x97a38d46];
var U4 = [0x00000000, 0x090d0b0e, 0x121a161c, 0x1b171d12, 0x24342c38, 0x2d392736, 0x362e3a24, 0x3f23312a, 0x48685870, 0x4165537e, 0x5a724e6c, 0x537f4562, 0x6c5c7448, 0x65517f46, 0x7e466254, 0x774b695a, 0x90d0b0e0, 0x99ddbbee, 0x82caa6fc, 0x8bc7adf2, 0xb4e49cd8, 0xbde997d6, 0xa6fe8ac4, 0xaff381ca, 0xd8b8e890, 0xd1b5e39e, 0xcaa2fe8c, 0xc3aff582, 0xfc8cc4a8, 0xf581cfa6, 0xee96d2b4, 0xe79bd9ba, 0x3bbb7bdb, 0x32b670d5, 0x29a16dc7, 0x20ac66c9, 0x1f8f57e3, 0x16825ced, 0x0d9541ff, 0x04984af1, 0x73d323ab, 0x7ade28a5, 0x61c935b7, 0x68c43eb9, 0x57e70f93, 0x5eea049d, 0x45fd198f, 0x4cf01281, 0xab6bcb3b, 0xa266c035, 0xb971dd27, 0xb07cd629, 0x8f5fe703, 0x8652ec0d, 0x9d45f11f, 0x9448fa11, 0xe303934b, 0xea0e9845, 0xf1198557, 0xf8148e59, 0xc737bf73, 0xce3ab47d, 0xd52da96f, 0xdc20a261, 0x766df6ad, 0x7f60fda3, 0x6477e0b1, 0x6d7aebbf, 0x5259da95, 0x5b54d19b, 0x4043cc89, 0x494ec787, 0x3e05aedd, 0x3708a5d3, 0x2c1fb8c1, 0x2512b3cf, 0x1a3182e5, 0x133c89eb, 0x082b94f9, 0x01269ff7, 0xe6bd464d, 0xefb04d43, 0xf4a75051, 0xfdaa5b5f, 0xc2896a75, 0xcb84617b, 0xd0937c69, 0xd99e7767, 0xaed51e3d, 0xa7d81533, 0xbccf0821, 0xb5c2032f, 0x8ae13205, 0x83ec390b, 0x98fb2419, 0x91f62f17, 0x4dd68d76, 0x44db8678, 0x5fcc9b6a, 0x56c19064, 0x69e2a14e, 0x60efaa40, 0x7bf8b752, 0x72f5bc5c, 0x05bed506, 0x0cb3de08, 0x17a4c31a, 0x1ea9c814, 0x218af93e, 0x2887f230, 0x3390ef22, 0x3a9de42c, 0xdd063d96, 0xd40b3698, 0xcf1c2b8a, 0xc6112084, 0xf93211ae, 0xf03f1aa0, 0xeb2807b2, 0xe2250cbc, 0x956e65e6, 0x9c636ee8, 0x877473fa, 0x8e7978f4, 0xb15a49de, 0xb85742d0, 0xa3405fc2, 0xaa4d54cc, 0xecdaf741, 0xe5d7fc4f, 0xfec0e15d, 0xf7cdea53, 0xc8eedb79, 0xc1e3d077, 0xdaf4cd65, 0xd3f9c66b, 0xa4b2af31, 0xadbfa43f, 0xb6a8b92d, 0xbfa5b223, 0x80868309, 0x898b8807, 0x929c9515, 0x9b919e1b, 0x7c0a47a1, 0x75074caf, 0x6e1051bd, 0x671d5ab3, 0x583e6b99, 0x51336097, 0x4a247d85, 0x4329768b, 0x34621fd1, 0x3d6f14df, 0x267809cd, 0x2f7502c3, 0x105633e9, 0x195b38e7, 0x024c25f5, 0x0b412efb, 0xd7618c9a, 0xde6c8794, 0xc57b9a86, 0xcc769188, 0xf355a0a2, 0xfa58abac, 0xe14fb6be, 0xe842bdb0, 0x9f09d4ea, 0x9604dfe4, 0x8d13c2f6, 0x841ec9f8, 0xbb3df8d2, 0xb230f3dc, 0xa927eece, 0xa02ae5c0, 0x47b13c7a, 0x4ebc3774, 0x55ab2a66, 0x5ca62168, 0x63851042, 0x6a881b4c, 0x719f065e, 0x78920d50, 0x0fd9640a, 0x06d46f04, 0x1dc37216, 0x14ce7918, 0x2bed4832, 0x22e0433c, 0x39f75e2e, 0x30fa5520, 0x9ab701ec, 0x93ba0ae2, 0x88ad17f0, 0x81a01cfe, 0xbe832dd4, 0xb78e26da, 0xac993bc8, 0xa59430c6, 0xd2df599c, 0xdbd25292, 0xc0c54f80, 0xc9c8448e, 0xf6eb75a4, 0xffe67eaa, 0xe4f163b8, 0xedfc68b6, 0x0a67b10c, 0x036aba02, 0x187da710, 0x1170ac1e, 0x2e539d34, 0x275e963a, 0x3c498b28, 0x35448026, 0x420fe97c, 0x4b02e272, 0x5015ff60, 0x5918f46e, 0x663bc544, 0x6f36ce4a, 0x7421d358, 0x7d2cd856, 0xa10c7a37, 0xa8017139, 0xb3166c2b, 0xba1b6725, 0x8538560f, 0x8c355d01, 0x97224013, 0x9e2f4b1d, 0xe9642247, 0xe0692949, 0xfb7e345b, 0xf2733f55, 0xcd500e7f, 0xc45d0571, 0xdf4a1863, 0xd647136d, 0x31dccad7, 0x38d1c1d9, 0x23c6dccb, 0x2acbd7c5, 0x15e8e6ef, 0x1ce5ede1, 0x07f2f0f3, 0x0efffbfd, 0x79b492a7, 0x70b999a9, 0x6bae84bb, 0x62a38fb5, 0x5d80be9f, 0x548db591, 0x4f9aa883, 0x4697a38d];
function convertToInt32(bytes) {
var result = [];
for (var i = 0; i < bytes.length; i += 4) {
result.push(bytes[i] << 24 | bytes[i + 1] << 16 | bytes[i + 2] << 8 | bytes[i + 3]);
}
return result;
}
var AES = function AES(key) {
if (!(this instanceof AES)) {
throw Error('AES must be instanitated with `new`');
}
Object.defineProperty(this, 'key', {
value: coerceArray(key, true)
});
this._prepare();
};
AES.prototype._prepare = function () {
var rounds = numberOfRounds[this.key.length];
if (rounds == null) {
throw new Error('invalid key size (must be 16, 24 or 32 bytes)');
}
// encryption round keys
this._Ke = [];
// decryption round keys
this._Kd = [];
for (var i = 0; i <= rounds; i++) {
this._Ke.push([0, 0, 0, 0]);
this._Kd.push([0, 0, 0, 0]);
}
var roundKeyCount = (rounds + 1) * 4;
var KC = this.key.length / 4;
// convert the key into ints
var tk = convertToInt32(this.key);
// copy values into round key arrays
var index;
for (var i = 0; i < KC; i++) {
index = i >> 2;
this._Ke[index][i % 4] = tk[i];
this._Kd[rounds - index][i % 4] = tk[i];
}
// key expansion (fips-197 section 5.2)
var rconpointer = 0;
var t = KC,
tt;
while (t < roundKeyCount) {
tt = tk[KC - 1];
tk[0] ^= S[tt >> 16 & 0xFF] << 24 ^ S[tt >> 8 & 0xFF] << 16 ^ S[tt & 0xFF] << 8 ^ S[tt >> 24 & 0xFF] ^ rcon[rconpointer] << 24;
rconpointer += 1;
// key expansion (for non-256 bit)
if (KC != 8) {
for (var i = 1; i < KC; i++) {
tk[i] ^= tk[i - 1];
}
// key expansion for 256-bit keys is "slightly different" (fips-197)
} else {
for (var i = 1; i < KC / 2; i++) {
tk[i] ^= tk[i - 1];
}
tt = tk[KC / 2 - 1];
tk[KC / 2] ^= S[tt & 0xFF] ^ S[tt >> 8 & 0xFF] << 8 ^ S[tt >> 16 & 0xFF] << 16 ^ S[tt >> 24 & 0xFF] << 24;
for (var i = KC / 2 + 1; i < KC; i++) {
tk[i] ^= tk[i - 1];
}
}
// copy values into round key arrays
var i = 0,
r,
c;
while (i < KC && t < roundKeyCount) {
r = t >> 2;
c = t % 4;
this._Ke[r][c] = tk[i];
this._Kd[rounds - r][c] = tk[i++];
t++;
}
}
// inverse-cipher-ify the decryption round key (fips-197 section 5.3)
for (var r = 1; r < rounds; r++) {
for (var c = 0; c < 4; c++) {
tt = this._Kd[r][c];
this._Kd[r][c] = U1[tt >> 24 & 0xFF] ^ U2[tt >> 16 & 0xFF] ^ U3[tt >> 8 & 0xFF] ^ U4[tt & 0xFF];
}
}
};
AES.prototype.encrypt = function (plaintext) {
if (plaintext.length != 16) {
throw new Error('invalid plaintext size (must be 16 bytes)');
}
var rounds = this._Ke.length - 1;
var a = [0, 0, 0, 0];
// convert plaintext to (ints ^ key)
var t = convertToInt32(plaintext);
for (var i = 0; i < 4; i++) {
t[i] ^= this._Ke[0][i];
}
// apply round transforms
for (var r = 1; r < rounds; r++) {
for (var i = 0; i < 4; i++) {
a[i] = T1[t[i] >> 24 & 0xff] ^ T2[t[(i + 1) % 4] >> 16 & 0xff] ^ T3[t[(i + 2) % 4] >> 8 & 0xff] ^ T4[t[(i + 3) % 4] & 0xff] ^ this._Ke[r][i];
}
t = a.slice();
}
// the last round is special
var result = createArray(16),
tt;
for (var i = 0; i < 4; i++) {
tt = this._Ke[rounds][i];
result[4 * i] = (S[t[i] >> 24 & 0xff] ^ tt >> 24) & 0xff;
result[4 * i + 1] = (S[t[(i + 1) % 4] >> 16 & 0xff] ^ tt >> 16) & 0xff;
result[4 * i + 2] = (S[t[(i + 2) % 4] >> 8 & 0xff] ^ tt >> 8) & 0xff;
result[4 * i + 3] = (S[t[(i + 3) % 4] & 0xff] ^ tt) & 0xff;
}
return result;
};
AES.prototype.decrypt = function (ciphertext) {
if (ciphertext.length != 16) {
throw new Error('invalid ciphertext size (must be 16 bytes)');
}
var rounds = this._Kd.length - 1;
var a = [0, 0, 0, 0];
// convert plaintext to (ints ^ key)
var t = convertToInt32(ciphertext);
for (var i = 0; i < 4; i++) {
t[i] ^= this._Kd[0][i];
}
// apply round transforms
for (var r = 1; r < rounds; r++) {
for (var i = 0; i < 4; i++) {
a[i] = T5[t[i] >> 24 & 0xff] ^ T6[t[(i + 3) % 4] >> 16 & 0xff] ^ T7[t[(i + 2) % 4] >> 8 & 0xff] ^ T8[t[(i + 1) % 4] & 0xff] ^ this._Kd[r][i];
}
t = a.slice();
}
// the last round is special
var result = createArray(16),
tt;
for (var i = 0; i < 4; i++) {
tt = this._Kd[rounds][i];
result[4 * i] = (Si[t[i] >> 24 & 0xff] ^ tt >> 24) & 0xff;
result[4 * i + 1] = (Si[t[(i + 3) % 4] >> 16 & 0xff] ^ tt >> 16) & 0xff;
result[4 * i + 2] = (Si[t[(i + 2) % 4] >> 8 & 0xff] ^ tt >> 8) & 0xff;
result[4 * i + 3] = (Si[t[(i + 1) % 4] & 0xff] ^ tt) & 0xff;
}
return result;
};
/**
* Mode Of Operation - Electonic Codebook (ECB)
*/
var ModeOfOperationECB = function ModeOfOperationECB(key) {
if (!(this instanceof ModeOfOperationECB)) {
throw Error('AES must be instanitated with `new`');
}
this.description = "Electronic Code Block";
this.name = "ecb";
this._aes = new AES(key);
};
ModeOfOperationECB.prototype.encrypt = function (plaintext) {
plaintext = coerceArray(plaintext);
if (plaintext.length % 16 !== 0) {
throw new Error('invalid plaintext size (must be multiple of 16 bytes)');
}
var ciphertext = createArray(plaintext.length);
var block = createArray(16);
for (var i = 0; i < plaintext.length; i += 16) {
copyArray(plaintext, block, 0, i, i + 16);
block = this._aes.encrypt(block);
copyArray(block, ciphertext, i);
}
return ciphertext;
};
ModeOfOperationECB.prototype.decrypt = function (ciphertext) {
ciphertext = coerceArray(ciphertext);
if (ciphertext.length % 16 !== 0) {
throw new Error('invalid ciphertext size (must be multiple of 16 bytes)');
}
var plaintext = createArray(ciphertext.length);
var block = createArray(16);
for (var i = 0; i < ciphertext.length; i += 16) {
copyArray(ciphertext, block, 0, i, i + 16);
block = this._aes.decrypt(block);
copyArray(block, plaintext, i);
}
return plaintext;
};
/**
* Mode Of Operation - Cipher Block Chaining (CBC)
*/
var ModeOfOperationCBC = function ModeOfOperationCBC(key, iv) {
if (!(this instanceof ModeOfOperationCBC)) {
throw Error('AES must be instanitated with `new`');
}
this.description = "Cipher Block Chaining";
this.name = "cbc";
if (!iv) {
iv = createArray(16);
} else if (iv.length != 16) {
throw new Error('invalid initialation vector size (must be 16 bytes)');
}
this._lastCipherblock = coerceArray(iv, true);
this._aes = new AES(key);
};
ModeOfOperationCBC.prototype.encrypt = function (plaintext) {
plaintext = coerceArray(plaintext);
if (plaintext.length % 16 !== 0) {
throw new Error('invalid plaintext size (must be multiple of 16 bytes)');
}
var ciphertext = createArray(plaintext.length);
var block = createArray(16);
for (var i = 0; i < plaintext.length; i += 16) {
copyArray(plaintext, block, 0, i, i + 16);
for (var j = 0; j < 16; j++) {
block[j] ^= this._lastCipherblock[j];
}
this._lastCipherblock = this._aes.encrypt(block);
copyArray(this._lastCipherblock, ciphertext, i);
}
return ciphertext;
};
ModeOfOperationCBC.prototype.decrypt = function (ciphertext) {
ciphertext = coerceArray(ciphertext);
if (ciphertext.length % 16 !== 0) {
throw new Error('invalid ciphertext size (must be multiple of 16 bytes)');
}
var plaintext = createArray(ciphertext.length);
var block = createArray(16);
for (var i = 0; i < ciphertext.length; i += 16) {
copyArray(ciphertext, block, 0, i, i + 16);
block = this._aes.decrypt(block);
for (var j = 0; j < 16; j++) {
plaintext[i + j] = block[j] ^ this._lastCipherblock[j];
}
copyArray(ciphertext, this._lastCipherblock, 0, i, i + 16);
}
return plaintext;
};
/**
* Mode Of Operation - Cipher Feedback (CFB)
*/
var ModeOfOperationCFB = function ModeOfOperationCFB(key, iv, segmentSize) {
if (!(this instanceof ModeOfOperationCFB)) {
throw Error('AES must be instanitated with `new`');
}
this.description = "Cipher Feedback";
this.name = "cfb";
if (!iv) {
iv = createArray(16);
} else if (iv.length != 16) {
throw new Error('invalid initialation vector size (must be 16 size)');
}
if (!segmentSize) {
segmentSize = 1;
}
this.segmentSize = segmentSize;
this._shiftRegister = coerceArray(iv, true);
this._aes = new AES(key);
};
ModeOfOperationCFB.prototype.encrypt = function (plaintext) {
if (plaintext.length % this.segmentSize != 0) {
throw new Error('invalid plaintext size (must be segmentSize bytes)');
}
var encrypted = coerceArray(plaintext, true);
var xorSegment;
for (var i = 0; i < encrypted.length; i += this.segmentSize) {
xorSegment = this._aes.encrypt(this._shiftRegister);
for (var j = 0; j < this.segmentSize; j++) {
encrypted[i + j] ^= xorSegment[j];
}
// Shift the register
copyArray(this._shiftRegister, this._shiftRegister, 0, this.segmentSize);
copyArray(encrypted, this._shiftRegister, 16 - this.segmentSize, i, i + this.segmentSize);
}
return encrypted;
};
ModeOfOperationCFB.prototype.decrypt = function (ciphertext) {
if (ciphertext.length % this.segmentSize != 0) {
throw new Error('invalid ciphertext size (must be segmentSize bytes)');
}
var plaintext = coerceArray(ciphertext, true);
var xorSegment;
for (var i = 0; i < plaintext.length; i += this.segmentSize) {
xorSegment = this._aes.encrypt(this._shiftRegister);
for (var j = 0; j < this.segmentSize; j++) {
plaintext[i + j] ^= xorSegment[j];
}
// Shift the register
copyArray(this._shiftRegister, this._shiftRegister, 0, this.segmentSize);
copyArray(ciphertext, this._shiftRegister, 16 - this.segmentSize, i, i + this.segmentSize);
}
return plaintext;
};
/**
* Mode Of Operation - Output Feedback (OFB)
*/
var ModeOfOperationOFB = function ModeOfOperationOFB(key, iv) {
if (!(this instanceof ModeOfOperationOFB)) {
throw Error('AES must be instanitated with `new`');
}
this.description = "Output Feedback";
this.name = "ofb";
if (!iv) {
iv = createArray(16);
} else if (iv.length != 16) {
throw new Error('invalid initialation vector size (must be 16 bytes)');
}
this._lastPrecipher = coerceArray(iv, true);
this._lastPrecipherIndex = 16;
this._aes = new AES(key);
};
ModeOfOperationOFB.prototype.encrypt = function (plaintext) {
var encrypted = coerceArray(plaintext, true);
for (var i = 0; i < encrypted.length; i++) {
if (this._lastPrecipherIndex === 16) {
this._lastPrecipher = this._aes.encrypt(this._lastPrecipher);
this._lastPrecipherIndex = 0;
}
encrypted[i] ^= this._lastPrecipher[this._lastPrecipherIndex++];
}
return encrypted;
};
// Decryption is symetric
ModeOfOperationOFB.prototype.decrypt = ModeOfOperationOFB.prototype.encrypt;
/**
* Counter object for CTR common mode of operation
*/
var Counter = function Counter(initialValue) {
if (!(this instanceof Counter)) {
throw Error('Counter must be instanitated with `new`');
}
// We allow 0, but anything false-ish uses the default 1
if (initialValue !== 0 && !initialValue) {
initialValue = 1;
}
if (typeof initialValue === 'number') {
this._counter = createArray(16);
this.setValue(initialValue);
} else {
this.setBytes(initialValue);
}
};
Counter.prototype.setValue = function (value) {
if (typeof value !== 'number' || parseInt(value) != value) {
throw new Error('invalid counter value (must be an integer)');
}
// We cannot safely handle numbers beyond the safe range for integers
if (value > Number.MAX_SAFE_INTEGER) {
throw new Error('integer value out of safe range');
}
for (var index = 15; index >= 0; --index) {
this._counter[index] = value % 256;
value = parseInt(value / 256);
}
};
Counter.prototype.setBytes = function (bytes) {
bytes = coerceArray(bytes, true);
if (bytes.length != 16) {
throw new Error('invalid counter bytes size (must be 16 bytes)');
}
this._counter = bytes;
};
Counter.prototype.increment = function () {
for (var i = 15; i >= 0; i--) {
if (this._counter[i] === 255) {
this._counter[i] = 0;
} else {
this._counter[i]++;
break;
}
}
};
/**
* Mode Of Operation - Counter (CTR)
*/
var ModeOfOperationCTR = function ModeOfOperationCTR(key, counter) {
if (!(this instanceof ModeOfOperationCTR)) {
throw Error('AES must be instanitated with `new`');
}
this.description = "Counter";
this.name = "ctr";
if (!(counter instanceof Counter)) {
counter = new Counter(counter);
}
this._counter = counter;
this._remainingCounter = null;
this._remainingCounterIndex = 16;
this._aes = new AES(key);
};
ModeOfOperationCTR.prototype.encrypt = function (plaintext) {
var encrypted = coerceArray(plaintext, true);
for (var i = 0; i < encrypted.length; i++) {
if (this._remainingCounterIndex === 16) {
this._remainingCounter = this._aes.encrypt(this._counter._counter);
this._remainingCounterIndex = 0;
this._counter.increment();
}
encrypted[i] ^= this._remainingCounter[this._remainingCounterIndex++];
}
return encrypted;
};
// Decryption is symetric
ModeOfOperationCTR.prototype.decrypt = ModeOfOperationCTR.prototype.encrypt;
///////////////////////
// Padding
// See:https://tools.ietf.org/html/rfc2315
function pkcs7pad(data) {
data = coerceArray(data, true);
var padder = 16 - data.length % 16;
var result = createArray(data.length + padder);
copyArray(data, result);
for (var i = data.length; i < result.length; i++) {
result[i] = padder;
}
return result;
}
function pkcs7strip(data) {
data = coerceArray(data, true);
if (data.length < 16) {
throw new Error('PKCS#7 invalid length');
}
var padder = data[data.length - 1];
if (padder > 16) {
throw new Error('PKCS#7 padding byte out of range');
}
var length = data.length - padder;
for (var i = 0; i < padder; i++) {
if (data[length + i] !== padder) {
throw new Error('PKCS#7 invalid padding byte');
}
}
var result = createArray(length);
copyArray(data, result, 0, 0, length);
return result;
}
///////////////////////
// Exporting
// The block cipher
var aesjs = {
AES: AES,
Counter: Counter,
ModeOfOperation: {
ecb: ModeOfOperationECB,
cbc: ModeOfOperationCBC,
cfb: ModeOfOperationCFB,
ofb: ModeOfOperationOFB,
ctr: ModeOfOperationCTR
},
utils: {
hex: convertHex,
utf8: convertUtf8
},
padding: {
pkcs7: {
pad: pkcs7pad,
strip: pkcs7strip
}
},
_arrayTest: {
coerceArray: coerceArray,
createArray: createArray,
copyArray: copyArray
}
};
// node.js
if (true) {
module.exports = aesjs;
// RequireJS/AMD
// http://www.requirejs.org/docs/api.html
// https://github.com/amdjs/amdjs-api/wiki/AMD
} else {}
})(this);
/***/ }),
/***/ 22: /***/ 22:
/*!*************************************************************!*\ /*!*************************************************************!*\
!*** ./node_modules/@dcloudio/uni-i18n/dist/uni-i18n.es.js ***! !*** ./node_modules/@dcloudio/uni-i18n/dist/uni-i18n.es.js ***!

View File

@ -130,10 +130,13 @@ var render = function () {
var _c = _vm._self._c || _h var _c = _vm._self._c || _h
var l0 = _vm.funList.slice(0, 9) var l0 = _vm.funList.slice(0, 9)
var g0 = _vm.serviceDetail.ImageLits && _vm.serviceDetail.ImageLits.length > 0 var g0 = _vm.serviceDetail.ImageLits && _vm.serviceDetail.ImageLits.length > 0
var g1 = _vm.roadStatusList.length var g1 = _vm.ScenicData
var g2 = _vm.roadStatusList && _vm.roadStatusList.length > 1 ? _vm.ScenicData.ImageList && _vm.ScenicData.ImageList.length > 0
var l1 = g2 ? _vm.roadStatusList.concat(_vm.roadStatusList) : null : null
var g3 = _vm.roadStatusList && _vm.roadStatusList.length === 1 var g2 = _vm.roadStatusList.length
var g3 = _vm.roadStatusList && _vm.roadStatusList.length > 1
var l1 = g3 ? _vm.roadStatusList.concat(_vm.roadStatusList) : null
var g4 = _vm.roadStatusList && _vm.roadStatusList.length === 1
if (!_vm._isMounted) { if (!_vm._isMounted) {
_vm.e0 = function ($event, item) { _vm.e0 = function ($event, item) {
var _temp = arguments[arguments.length - 1].currentTarget.dataset, var _temp = arguments[arguments.length - 1].currentTarget.dataset,
@ -151,8 +154,9 @@ var render = function () {
g0: g0, g0: g0,
g1: g1, g1: g1,
g2: g2, g2: g2,
l1: l1,
g3: g3, g3: g3,
l1: l1,
g4: g4,
}, },
} }
) )
@ -360,7 +364,11 @@ var _default = {
isChangeIcon: true, isChangeIcon: true,
// 判断是否切换商城的图表 // 判断是否切换商城的图表
triggered: false, triggered: false,
poster: {} // 海报信息 poster: {},
// 海报信息
ScenicData: null,
// 景区信息
SCENICAREAOBJ: {} // 景区类型的枚举
}; };
}, },
onLoad: function onLoad() { onLoad: function onLoad() {
@ -432,10 +440,12 @@ var _default = {
_this2.handleGetProductsList(); _this2.handleGetProductsList();
// 商城的内容 // 商城的内容
_this2.handleGetShoppingMall(); _this2.handleGetShoppingMall();
// 景区信息
_this2.handleGetScenicData();
// this.handleAes() // this.handleAes()
_this2.$utils.addUserBehaviorNew(); _this2.$utils.addUserBehaviorNew();
case 20: case 21:
case "end": case "end":
return _context.stop(); return _context.stop();
} }
@ -557,6 +567,70 @@ var _default = {
}, },
methods: { methods: {
// 请求景区信息
handleGetScenicData: function handleGetScenicData() {
var _this5 = this;
return (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee4() {
var SCENICAREA, SCENICAREAOBJ, field, fieldList, req, data, list, res;
return _regenerator.default.wrap(function _callee4$(_context4) {
while (1) {
switch (_context4.prev = _context4.next) {
case 0:
SCENICAREA = uni.getStorageSync("SCENICAREAOBJ");
SCENICAREAOBJ = {};
if (!SCENICAREAOBJ) {
_context4.next = 6;
break;
}
SCENICAREAOBJ = SCENICAREA;
_context4.next = 12;
break;
case 6:
_context4.next = 8;
return _this5.$api.$get("/EShangApiMain/FrameWork/GetFieldEnumTree", {
FieldExplainField: 'SCENICAREA_TYPE'
});
case 8:
field = _context4.sent;
fieldList = _this5.$utils.wrapTreeNode(field.Result_Data.List);
if (fieldList && fieldList.length > 0) {
fieldList.forEach(function (item) {
SCENICAREAOBJ[item.value] = item.label;
});
}
uni.setStorageSync("SCENICAREAOBJ", SCENICAREAOBJ);
case 12:
_this5.SCENICAREAOBJ = SCENICAREAOBJ;
req = {
ProvinceCode: _this5.user.PROVINCE_CODE,
latitude: _this5.seat.latitude || "",
longitude: _this5.seat.longitude || "",
ServerpartID: _this5.serviceDetail.SERVERPART_ID || "",
type: 'encryption'
};
_context4.next = 16;
return _this5.$api.$zzyLocalPost("/WisdomServerpart/GetScenicAreaListByLocation", req);
case 16:
data = _context4.sent;
console.log('景区数据 ', data);
list = data.Result_Data.List;
res = [];
if (list && list.length > 0) {
list.forEach(function (item) {
if (item.SCENICAREA_STATE === 1000) {
res.push(item);
}
});
}
_this5.ScenicData = res[0];
case 22:
case "end":
return _context4.stop();
}
}
}, _callee4);
}))();
},
// 跳转去附近的景区列表页面 // 跳转去附近的景区列表页面
handleGoScenicList: function handleGoScenicList() { handleGoScenicList: function handleGoScenicList() {
uni.navigateTo({ uni.navigateTo({
@ -565,12 +639,12 @@ var _default = {
}, },
// 拿到广告数据 // 拿到广告数据
handleGetAdvertisementData: function handleGetAdvertisementData() { handleGetAdvertisementData: function handleGetAdvertisementData() {
var _this5 = this; var _this6 = this;
return (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee4() { return (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee5() {
var minReq, req, data1, req2, data2, res1, res2, firstObj1, i, item, firstObj2, _i, _item; var minReq, req, data1, req2, data2, res1, res2, firstObj1, i, item, firstObj2, _i, _item;
return _regenerator.default.wrap(function _callee4$(_context4) { return _regenerator.default.wrap(function _callee5$(_context5) {
while (1) { while (1) {
switch (_context4.prev = _context4.next) { switch (_context5.prev = _context5.next) {
case 0: case 0:
minReq = { minReq = {
ADDTIME: "2025-01-03T10:51:04", ADDTIME: "2025-01-03T10:51:04",
@ -618,10 +692,10 @@ var _default = {
SortStr: "OPERATE_DATE desc", SortStr: "OPERATE_DATE desc",
type: 'encryption' type: 'encryption'
}; };
_context4.next = 4; _context5.next = 4;
return _this5.$api.$zzyLocalPost("/MallBasic/GetUSERDEFINEDTYPEList", req); return _this6.$api.$zzyLocalPost("/MallBasic/GetUSERDEFINEDTYPEList", req);
case 4: case 4:
data1 = _context4.sent; data1 = _context5.sent;
req2 = { req2 = {
SearchParameter: { SearchParameter: {
OWNERUNIT_ID: 911, OWNERUNIT_ID: 911,
@ -631,83 +705,83 @@ var _default = {
SortStr: "OPERATE_DATE desc", SortStr: "OPERATE_DATE desc",
type: 'encryption' type: 'encryption'
}; };
_context4.next = 8; _context5.next = 8;
return _this5.$api.$zzyLocalPost("/MallBasic/GetUSERDEFINEDTYPEList", req2); return _this6.$api.$zzyLocalPost("/MallBasic/GetUSERDEFINEDTYPEList", req2);
case 8: case 8:
data2 = _context4.sent; data2 = _context5.sent;
console.log('datadatadatadatadatadatadatadatadata', data1); console.log('datadatadatadatadatadatadatadatadata', data1);
console.log('datadatadatadatadatadatadatadatadata', data2); console.log('datadatadatadatadatadatadatadatadata', data2);
res1 = data1.Result_Data.List; res1 = data1.Result_Data.List;
res2 = data2.Result_Data.List; // 修改一下 使用的是 当前时间在的范围内的第一个 res2 = data2.Result_Data.List; // 修改一下 使用的是 当前时间在的范围内的第一个
firstObj1 = {}; firstObj1 = {};
if (!(res1 && res1.length > 0)) { if (!(res1 && res1.length > 0)) {
_context4.next = 24; _context5.next = 24;
break; break;
} }
i = 0; i = 0;
case 16: case 16:
if (!(i < res1.length)) { if (!(i < res1.length)) {
_context4.next = 24; _context5.next = 24;
break; break;
} }
item = res1[i]; item = res1[i];
if (!(new Date(item.PRESALE_STARTTIME).getTime() < new Date().getTime() && new Date().getTime() < new Date(item.PRESALE_ENDTIME).getTime())) { if (!(new Date(item.PRESALE_STARTTIME).getTime() < new Date().getTime() && new Date().getTime() < new Date(item.PRESALE_ENDTIME).getTime())) {
_context4.next = 21; _context5.next = 21;
break; break;
} }
firstObj1 = item; firstObj1 = item;
return _context4.abrupt("break", 24); return _context5.abrupt("break", 24);
case 21: case 21:
i++; i++;
_context4.next = 16; _context5.next = 16;
break; break;
case 24: case 24:
firstObj2 = {}; firstObj2 = {};
if (!(res2 && res2.length > 0)) { if (!(res2 && res2.length > 0)) {
_context4.next = 35; _context5.next = 35;
break; break;
} }
_i = 0; _i = 0;
case 27: case 27:
if (!(_i < res2.length)) { if (!(_i < res2.length)) {
_context4.next = 35; _context5.next = 35;
break; break;
} }
_item = res2[_i]; _item = res2[_i];
if (!(new Date(_item.PRESALE_STARTTIME).getTime() < new Date().getTime() && new Date().getTime() < new Date(_item.PRESALE_ENDTIME).getTime())) { if (!(new Date(_item.PRESALE_STARTTIME).getTime() < new Date().getTime() && new Date().getTime() < new Date(_item.PRESALE_ENDTIME).getTime())) {
_context4.next = 32; _context5.next = 32;
break; break;
} }
firstObj2 = _item; firstObj2 = _item;
return _context4.abrupt("break", 35); return _context5.abrupt("break", 35);
case 32: case 32:
_i++; _i++;
_context4.next = 27; _context5.next = 27;
break; break;
case 35: case 35:
console.log('firstObj1', firstObj1); console.log('firstObj1', firstObj1);
console.log('firstObj2', firstObj2); console.log('firstObj2', firstObj2);
_this5.swiperList.unshift(firstObj1.USERDEFINEDTYPE_ICO); _this6.swiperList.unshift(firstObj1.USERDEFINEDTYPE_ICO);
_this5.poster = firstObj2; _this6.poster = firstObj2;
// this.swiperList.unshift(res1[0].USERDEFINEDTYPE_ICO) // this.swiperList.unshift(res1[0].USERDEFINEDTYPE_ICO)
// this.poster = res2[0] // this.poster = res2[0]
case 39: case 39:
case "end": case "end":
return _context4.stop(); return _context5.stop();
} }
} }
}, _callee4); }, _callee5);
}))(); }))();
}, },
// 测试加密的方法 // 测试加密的方法
handleAes: function handleAes() { handleAes: function handleAes() {
var _this6 = this; var _this7 = this;
return (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee5() { return (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee6() {
var req, str, data; var req, str, data;
return _regenerator.default.wrap(function _callee5$(_context5) { return _regenerator.default.wrap(function _callee6$(_context6) {
while (1) { while (1) {
switch (_context5.prev = _context5.next) { switch (_context6.prev = _context6.next) {
case 0: case 0:
req = { req = {
waybillNo: "434491081179331", waybillNo: "434491081179331",
@ -716,16 +790,16 @@ var _default = {
}; };
str = JSON.stringify(req); // let jiami = encryptAES(str) str = JSON.stringify(req); // let jiami = encryptAES(str)
// let jiemi = decryptAES(jiami) // let jiemi = decryptAES(jiami)
_context5.next = 4; _context6.next = 4;
return _this6.$api.$zzyLocalPost("/WeChat/ExpressQuery", req); return _this7.$api.$zzyLocalPost("/WeChat/ExpressQuery", req);
case 4: case 4:
data = _context5.sent; data = _context6.sent;
case 5: case 5:
case "end": case "end":
return _context5.stop(); return _context6.stop();
} }
} }
}, _callee5); }, _callee6);
}))(); }))();
}, },
// 重新获取经纬度位置 // 重新获取经纬度位置
@ -735,11 +809,11 @@ var _default = {
type: "gcj02", type: "gcj02",
altitude: true, altitude: true,
success: function () { success: function () {
var _success = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee6(res) { var _success = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee7(res) {
var seatInfo; var seatInfo;
return _regenerator.default.wrap(function _callee6$(_context6) { return _regenerator.default.wrap(function _callee7$(_context7) {
while (1) { while (1) {
switch (_context6.prev = _context6.next) { switch (_context7.prev = _context7.next) {
case 0: case 0:
seatInfo = { seatInfo = {
latitude: res.latitude, latitude: res.latitude,
@ -750,10 +824,10 @@ var _default = {
resolve(seatInfo); resolve(seatInfo);
case 4: case 4:
case "end": case "end":
return _context6.stop(); return _context7.stop();
} }
} }
}, _callee6); }, _callee7);
})); }));
function success(_x) { function success(_x) {
return _success.apply(this, arguments); return _success.apply(this, arguments);
@ -768,25 +842,25 @@ var _default = {
}, },
// 重置顶部方法顺序 // 重置顶部方法顺序
handleReloadFunIndex: function handleReloadFunIndex() { handleReloadFunIndex: function handleReloadFunIndex() {
var _this7 = this; var _this8 = this;
return (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee7() { return (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee8() {
var _this, seatInfo; var _this, seatInfo;
return _regenerator.default.wrap(function _callee7$(_context7) { return _regenerator.default.wrap(function _callee8$(_context8) {
while (1) { while (1) {
switch (_context7.prev = _context7.next) { switch (_context8.prev = _context8.next) {
case 0: case 0:
_this7.triggered = true; _this8.triggered = true;
_this = _this7; _this = _this8;
_context7.next = 4; _context8.next = 4;
return _this7.handleGetNewPosition(); return _this8.handleGetNewPosition();
case 4: case 4:
seatInfo = _context7.sent; seatInfo = _context8.sent;
uni.setStorageSync("seatInfo", JSON.stringify(seatInfo)); uni.setStorageSync("seatInfo", JSON.stringify(seatInfo));
uni.setStorageSync("actualLocation", JSON.stringify(seatInfo)); uni.setStorageSync("actualLocation", JSON.stringify(seatInfo));
_context7.next = 9; _context8.next = 9;
return _this.handleGetNearService(seatInfo.latitude, seatInfo.longitude); return _this.handleGetNearService(seatInfo.latitude, seatInfo.longitude);
case 9: case 9:
return _context7.abrupt("return", new Promise(function (resolve) { return _context8.abrupt("return", new Promise(function (resolve) {
setTimeout(function () { setTimeout(function () {
_this.funList = [{ _this.funList = [{
label: "服务区", label: "服务区",
@ -892,10 +966,10 @@ var _default = {
})); }));
case 10: case 10:
case "end": case "end":
return _context7.stop(); return _context8.stop();
} }
} }
}, _callee7); }, _callee8);
}))(); }))();
}, },
handleHidePopup: function handleHidePopup() { handleHidePopup: function handleHidePopup() {
@ -921,14 +995,14 @@ var _default = {
}, },
// 查询现在的充电桩 // 查询现在的充电桩
handleGetChargingStation: function handleGetChargingStation(obj) { handleGetChargingStation: function handleGetChargingStation(obj) {
var _this8 = this; var _this9 = this;
return (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee8() { return (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee9() {
var _this; var _this;
return _regenerator.default.wrap(function _callee8$(_context8) { return _regenerator.default.wrap(function _callee9$(_context9) {
while (1) { while (1) {
switch (_context8.prev = _context8.next) { switch (_context9.prev = _context9.next) {
case 0: case 0:
_this = _this8; _this = _this9;
uni.request({ uni.request({
url: "https://xny.yciccloud.com/interconnect/api/interconnection/open/getConnectList", url: "https://xny.yciccloud.com/interconnect/api/interconnection/open/getConnectList",
//仅为示例,并非真实接口地址。 //仅为示例,并非真实接口地址。
@ -981,41 +1055,6 @@ var _default = {
} }
}); });
case 2: case 2:
case "end":
return _context8.stop();
}
}
}, _callee8);
}))();
},
// 拿到服务区详情
handleGetServiceDetail: function handleGetServiceDetail(id) {
var _this9 = this;
return (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee9() {
var req, data, obj;
return _regenerator.default.wrap(function _callee9$(_context9) {
while (1) {
switch (_context9.prev = _context9.next) {
case 0:
if (id) {
_context9.next = 2;
break;
}
return _context9.abrupt("return");
case 2:
req = {
ServerpartId: id,
latitude: _this9.seat.latitude,
longitude: _this9.seat.longitude
};
_context9.next = 5;
return _this9.$api.$get("/CommercialApi/BaseInfo/GetServerpartInfo", req);
case 5:
data = _context9.sent;
obj = data.Result_Data;
_this9.serviceDetail = obj;
_this9.serviceDetail.sumDetail = _this9.handleMergeDetail(obj);
case 9:
case "end": case "end":
return _context9.stop(); return _context9.stop();
} }
@ -1023,6 +1062,41 @@ var _default = {
}, _callee9); }, _callee9);
}))(); }))();
}, },
// 拿到服务区详情
handleGetServiceDetail: function handleGetServiceDetail(id) {
var _this10 = this;
return (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee10() {
var req, data, obj;
return _regenerator.default.wrap(function _callee10$(_context10) {
while (1) {
switch (_context10.prev = _context10.next) {
case 0:
if (id) {
_context10.next = 2;
break;
}
return _context10.abrupt("return");
case 2:
req = {
ServerpartId: id,
latitude: _this10.seat.latitude,
longitude: _this10.seat.longitude
};
_context10.next = 5;
return _this10.$api.$get("/CommercialApi/BaseInfo/GetServerpartInfo", req);
case 5:
data = _context10.sent;
obj = data.Result_Data;
_this10.serviceDetail = obj;
_this10.serviceDetail.sumDetail = _this10.handleMergeDetail(obj);
case 9:
case "end":
return _context10.stop();
}
}
}, _callee10);
}))();
},
// 预览查看 // 预览查看
handleShowPreview: function handleShowPreview(obj) { handleShowPreview: function handleShowPreview(obj) {
uni.previewImage({ uni.previewImage({
@ -1344,15 +1418,15 @@ var _default = {
}, },
// 拿到最近的服务区数据 // 拿到最近的服务区数据
handleGetNearService: function handleGetNearService(latitude, longitude) { handleGetNearService: function handleGetNearService(latitude, longitude) {
var _this10 = this; var _this11 = this;
return (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee10() { return (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee11() {
var req, data, nearService, idList; var req, data, nearService, idList;
return _regenerator.default.wrap(function _callee10$(_context10) { return _regenerator.default.wrap(function _callee11$(_context11) {
while (1) { while (1) {
switch (_context10.prev = _context10.next) { switch (_context11.prev = _context11.next) {
case 0: case 0:
req = { req = {
Province_Code: _this10.user.PROVINCE_CODE || "530000", Province_Code: _this11.user.PROVINCE_CODE || "530000",
longitude: longitude, longitude: longitude,
latitude: latitude, latitude: latitude,
showservice: true, showservice: true,
@ -1365,40 +1439,40 @@ var _default = {
// "/CommercialApi/BaseInfo/GetServerpartList", // "/CommercialApi/BaseInfo/GetServerpartList",
// req // req
// ); // );
_context10.next = 4; _context11.next = 4;
return _this10.$api.$javaGet('/third-party/getServerPartList', req); return _this11.$api.$javaGet('/third-party/getServerPartList', req);
case 4: case 4:
data = _context10.sent; data = _context11.sent;
_this10.serverPartList = data.Result_Data.List; _this11.serverPartList = data.Result_Data.List;
nearService = _this10.serverPartList[0]; nearService = _this11.serverPartList[0];
console.log('nearServicenearServicenearService', nearService); console.log('nearServicenearServicenearService', nearService);
nearService.sumDetail = _this10.handleMergeDetail(nearService); nearService.sumDetail = _this11.handleMergeDetail(nearService);
_this10.serviceDetail = nearService; _this11.serviceDetail = nearService;
uni.setStorageSync("currentService", nearService); uni.setStorageSync("currentService", nearService);
idList = [1212, 1222, 1139, 1215]; idList = [1212, 1222, 1139, 1215];
if (idList.indexOf(nearService.SERVERPART_ID) !== -1) { if (idList.indexOf(nearService.SERVERPART_ID) !== -1) {
_this10.handleGetChargingStation(nearService); _this11.handleGetChargingStation(nearService);
} }
uni.hideLoading(); uni.hideLoading();
case 14: case 14:
case "end": case "end":
return _context10.stop(); return _context11.stop();
} }
} }
}, _callee10); }, _callee11);
}))(); }))();
}, },
// 高速头条播报 // 高速头条播报
handleGetHighwayHeadlines: function handleGetHighwayHeadlines() { handleGetHighwayHeadlines: function handleGetHighwayHeadlines() {
var _this11 = this; var _this12 = this;
return (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee11() { return (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee12() {
var start, end, params, time, req, signText, sign, tweetsData, newReq, newData, list; var start, end, params, time, req, signText, sign, tweetsData, newReq, newData, list;
return _regenerator.default.wrap(function _callee11$(_context11) { return _regenerator.default.wrap(function _callee12$(_context12) {
while (1) { while (1) {
switch (_context11.prev = _context11.next) { switch (_context12.prev = _context12.next) {
case 0: case 0:
start = "".concat(_this11.$moment.now().set("month", -1).format("YYYY-MM-DD"), " 00:00:00"); start = "".concat(_this12.$moment.now().set("month", -1).format("YYYY-MM-DD"), " 00:00:00");
end = "".concat(_this11.$moment.now().format("YYYY-MM-DD"), " 23:59:59"); end = "".concat(_this12.$moment.now().format("YYYY-MM-DD"), " 23:59:59");
params = { params = {
startQueryTime: start, startQueryTime: start,
// 开始时间 // 开始时间
@ -1416,7 +1490,7 @@ var _default = {
sign_type: "RSA2" sign_type: "RSA2"
}; };
signText = "app_id=".concat(req.app_id, "&biz_content=").concat(req.biz_content, "&charset=UTF-8&pid=").concat(req.app_id, "&service=trawe.eats.etc&utc_timestamp=").concat(req.utc_timestamp, "&version=1.0"); // 签名 signText = "app_id=".concat(req.app_id, "&biz_content=").concat(req.biz_content, "&charset=UTF-8&pid=").concat(req.app_id, "&service=trawe.eats.etc&utc_timestamp=").concat(req.utc_timestamp, "&version=1.0"); // 签名
_context11.next = 8; _context12.next = 8;
return new Promise(function (resolve, reject) { return new Promise(function (resolve, reject) {
uni.request({ uni.request({
url: "https://admin.es.eshangtech.com/prod-api/RSA/sign", url: "https://admin.es.eshangtech.com/prod-api/RSA/sign",
@ -1434,11 +1508,11 @@ var _default = {
}); });
}); });
case 8: case 8:
sign = _context11.sent; sign = _context12.sent;
req.sign = sign; req.sign = sign;
// 推文数据 // 推文数据
_context11.next = 12; _context12.next = 12;
return new Promise(function (resolve, reject) { return new Promise(function (resolve, reject) {
uni.request({ uni.request({
url: "https://sxgzh.etclife.cn/etc/api/v1/gzh/point/tweets", url: "https://sxgzh.etclife.cn/etc/api/v1/gzh/point/tweets",
@ -1463,7 +1537,7 @@ var _default = {
}); });
}); });
case 12: case 12:
tweetsData = _context11.sent; tweetsData = _context12.sent;
// if (tweetsData && tweetsData.length > 0) { // if (tweetsData && tweetsData.length > 0) {
// this.roadStatusList = tweetsData; // this.roadStatusList = tweetsData;
// } else { // } else {
@ -1472,33 +1546,33 @@ var _default = {
newReq = { newReq = {
SearchParameter: { SearchParameter: {
// NOTICEINFO_TYPES: 1010, // NOTICEINFO_TYPES: 1010,
PROVINCE_CODE: _this11.user.PROVINCE_CODE || "530000", PROVINCE_CODE: _this12.user.PROVINCE_CODE || "530000",
NOTICEINFO_STATE: 1 NOTICEINFO_STATE: 1
}, },
PageIndex: 1, PageIndex: 1,
PageSize: 10, PageSize: 10,
appId: "wxee018fb96955552a" appId: "wxee018fb96955552a"
}; };
_context11.next = 16; _context12.next = 16;
return _this11.$api.$post("/EShangApiMain/Notice/GetNOTICEINFOList", newReq); return _this12.$api.$post("/EShangApiMain/Notice/GetNOTICEINFOList", newReq);
case 16: case 16:
newData = _context11.sent; newData = _context12.sent;
list = newData.Result_Data.List; // if (list && list.length > 0) { list = newData.Result_Data.List; // if (list && list.length > 0) {
// } else { // } else {
// this.roadStatusList = []; // this.roadStatusList = [];
// } // }
// this.roadStatusList = list.concat(tweetsData); // this.roadStatusList = list.concat(tweetsData);
_this11.roadStatusList = list; _this12.roadStatusList = list;
// this.roadStatusList.unshift({ // this.roadStatusList.unshift({
// NOTICEINFO_TITLE: "最新放假通知调休2天免费8天", // NOTICEINFO_TITLE: "最新放假通知调休2天免费8天",
// }); // });
case 19: case 19:
case "end": case "end":
return _context11.stop(); return _context12.stop();
} }
} }
}, _callee11); }, _callee12);
}))(); }))();
}, },
// 跳转高速头条 // 跳转高速头条
@ -1509,49 +1583,6 @@ var _default = {
}, },
// 拿到促销单品的数据 5030 // 拿到促销单品的数据 5030
handleGetSpecialOffers: function handleGetSpecialOffers() { handleGetSpecialOffers: function handleGetSpecialOffers() {
var _this12 = this;
return (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee12() {
var data, list, shopList;
return _regenerator.default.wrap(function _callee12$(_context12) {
while (1) {
switch (_context12.prev = _context12.next) {
case 0:
_context12.next = 2;
return _this12.$api.getCoop({
action_type: "WeChat_GetMallGoodsInfo",
ownerUnitId: 911,
COMMODITYNATURE: 5030,
excludeNature: 5070,
justCommodity: 1
});
case 2:
data = _context12.sent;
list = data.Data.List;
shopList = [];
if (list && list.length > 0) {
list.forEach(function (item) {
if (item.COMMODITYLIST && item.COMMODITYLIST.length > 0) {
item.COMMODITYLIST.forEach(function (subItem) {
shopList.push(subItem);
});
}
});
}
if (shopList && shopList.length > 0) {
_this12.specialOffersList = shopList.slice(0, 2);
} else {
_this12.specialOffersList = [];
}
case 7:
case "end":
return _context12.stop();
}
}
}, _callee12);
}))();
},
// 拿到甄选商品 5040
handleGetProductsList: function handleGetProductsList() {
var _this13 = this; var _this13 = this;
return (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee13() { return (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee13() {
var data, list, shopList; var data, list, shopList;
@ -1563,7 +1594,7 @@ var _default = {
return _this13.$api.getCoop({ return _this13.$api.getCoop({
action_type: "WeChat_GetMallGoodsInfo", action_type: "WeChat_GetMallGoodsInfo",
ownerUnitId: 911, ownerUnitId: 911,
COMMODITYNATURE: 5040, COMMODITYNATURE: 5030,
excludeNature: 5070, excludeNature: 5070,
justCommodity: 1 justCommodity: 1
}); });
@ -1581,9 +1612,9 @@ var _default = {
}); });
} }
if (shopList && shopList.length > 0) { if (shopList && shopList.length > 0) {
_this13.productsList = shopList.slice(0, 2); _this13.specialOffersList = shopList.slice(0, 2);
} else { } else {
_this13.productsList = []; _this13.specialOffersList = [];
} }
case 7: case 7:
case "end": case "end":
@ -1593,8 +1624,8 @@ var _default = {
}, _callee13); }, _callee13);
}))(); }))();
}, },
// 拿到 商城精品 3000 // 拿到甄选商品 5040
handleGetShoppingMall: function handleGetShoppingMall() { handleGetProductsList: function handleGetProductsList() {
var _this14 = this; var _this14 = this;
return (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee14() { return (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee14() {
var data, list, shopList; var data, list, shopList;
@ -1606,7 +1637,7 @@ var _default = {
return _this14.$api.getCoop({ return _this14.$api.getCoop({
action_type: "WeChat_GetMallGoodsInfo", action_type: "WeChat_GetMallGoodsInfo",
ownerUnitId: 911, ownerUnitId: 911,
COMMODITYNATURE: 3000, COMMODITYNATURE: 5040,
excludeNature: 5070, excludeNature: 5070,
justCommodity: 1 justCommodity: 1
}); });
@ -1614,6 +1645,49 @@ var _default = {
data = _context14.sent; data = _context14.sent;
list = data.Data.List; list = data.Data.List;
shopList = []; shopList = [];
if (list && list.length > 0) {
list.forEach(function (item) {
if (item.COMMODITYLIST && item.COMMODITYLIST.length > 0) {
item.COMMODITYLIST.forEach(function (subItem) {
shopList.push(subItem);
});
}
});
}
if (shopList && shopList.length > 0) {
_this14.productsList = shopList.slice(0, 2);
} else {
_this14.productsList = [];
}
case 7:
case "end":
return _context14.stop();
}
}
}, _callee14);
}))();
},
// 拿到 商城精品 3000
handleGetShoppingMall: function handleGetShoppingMall() {
var _this15 = this;
return (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee15() {
var data, list, shopList;
return _regenerator.default.wrap(function _callee15$(_context15) {
while (1) {
switch (_context15.prev = _context15.next) {
case 0:
_context15.next = 2;
return _this15.$api.getCoop({
action_type: "WeChat_GetMallGoodsInfo",
ownerUnitId: 911,
COMMODITYNATURE: 3000,
excludeNature: 5070,
justCommodity: 1
});
case 2:
data = _context15.sent;
list = data.Data.List;
shopList = [];
if (list && list.length > 0) { if (list && list.length > 0) {
list.forEach(function (item) { list.forEach(function (item) {
if (item.COMMODITYLIST && item.COMMODITYLIST.length > 0) { if (item.COMMODITYLIST && item.COMMODITYLIST.length > 0) {
@ -1635,13 +1709,13 @@ var _default = {
} }
}); });
} }
_this14.shoppingMall = shopList; _this15.shoppingMall = shopList;
case 7: case 7:
case "end": case "end":
return _context14.stop(); return _context15.stop();
} }
} }
}, _callee14); }, _callee15);
}))(); }))();
}, },
// 打开地图的跳转 // 打开地图的跳转

File diff suppressed because one or more lines are too long

View File

@ -374,6 +374,7 @@
.main .content .nearbyScenic .nearbyScenicBottom .nearByBottomLeftBox .nearbyImg.data-v-57280228 { .main .content .nearbyScenic .nearbyScenicBottom .nearByBottomLeftBox .nearbyImg.data-v-57280228 {
width: 100%; width: 100%;
height: 100%; height: 100%;
border-radius: 8rpx;
} }
.main .content .nearbyScenic .nearbyScenicBottom .nearByBottomRightBox.data-v-57280228 { .main .content .nearbyScenic .nearbyScenicBottom .nearByBottomRightBox.data-v-57280228 {
width: calc(100% - 176rpx); width: calc(100% - 176rpx);

View File

@ -174,134 +174,10 @@ Object.defineProperty(exports, "__esModule", {
exports.default = void 0; exports.default = void 0;
var _regenerator = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/regenerator */ 30)); var _regenerator = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/regenerator */ 30));
var _asyncToGenerator2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/asyncToGenerator */ 32)); var _asyncToGenerator2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/asyncToGenerator */ 32));
var _aesJs = __webpack_require__(/*! aes-js */ 212); var _defineProperty2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/defineProperty */ 11));
// var _vuex = __webpack_require__(/*! vuex */ 33);
// function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
// function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
var NoData = function NoData() { var NoData = function NoData() {
Promise.all(/*! require.ensure | components/noData */[__webpack_require__.e("common/vendor"), __webpack_require__.e("components/noData")]).then((function () { Promise.all(/*! require.ensure | components/noData */[__webpack_require__.e("common/vendor"), __webpack_require__.e("components/noData")]).then((function () {
return resolve(__webpack_require__(/*! ../../../components/noData.vue */ 85)); return resolve(__webpack_require__(/*! ../../../components/noData.vue */ 85));
@ -358,14 +234,18 @@ var _default = {
label: "工会商城", label: "工会商城",
value: 3 value: 3
}], }],
selectBigTab: 1 // 选择的大tab selectBigTab: 1,
// 选择的大tab
searchText: ""
}; };
}, },
components: { components: {
OrderItem: OrderItem, OrderItem: OrderItem,
NoData: NoData NoData: NoData
}, },
computed: _objectSpread({}, (0, _vuex.mapGetters)({
user: "user"
})),
onLoad: function onLoad(query) { onLoad: function onLoad(query) {
this.menu = uni.getMenuButtonBoundingClientRect(); this.menu = uni.getMenuButtonBoundingClientRect();
console.log("query", query); console.log("query", query);
@ -383,6 +263,12 @@ var _default = {
this.$utils.addUserBehaviorNew(); this.$utils.addUserBehaviorNew();
}, },
methods: { methods: {
// 跳转订单搜索页面
handleGoOrderSearch: function handleGoOrderSearch() {
uni.navigateTo({
url: "/pages/order/orderSearch/index"
});
},
// 确认收获 // 确认收获
handleConfirmReceipt: function handleConfirmReceipt(obj) { handleConfirmReceipt: function handleConfirmReceipt(obj) {
console.log('obj', obj); console.log('obj', obj);

File diff suppressed because one or more lines are too long