text:
import datetime
import time
import json
import os
import jpype
from jpype import *

from vnpy.trader.vtGateway import *
from vnpy.trader.vtFunction import getJsonPath
from language import text
from vnpy.api.geya.geyaApi import GeyaBase

SYMBOL_XAUUSD = 'XAUUSD'
SYMBOL_XAGUSD = 'XAGUSD'

SYMBOL_MAP = {}
SYMBOL_MAP['XAUUSD'] = SYMBOL_XAUUSD
SYMBOL_MAP['XAGUSD'] = SYMBOL_XAGUSD

#平盘对手数据字典
COUNTERPARTYNAME = {}
COUNTERPARTYNAME['GOLDSACHS'] = 'GOLDSACHS'
COUNTERPARTYNAME['UBS_ZUR'] = 'UBS_ZUR'

TRADE_DIRECTION = {}
TRADE_DIRECTION['BUY'] = 'BUY'
TRADE_DIRECTION['SELL'] = 'SELL'

GEYA_PRODUCT_CLASS = 'P004'

# encoding: UTF-8

# 默认空值
EMPTY_STRING = ''
EMPTY_UNICODE = u''
EMPTY_INT = 0
EMPTY_FLOAT = 0.0

# 方向常量
DIRECTION_NONE = u'none'
DIRECTION_LONG = u'多'
DIRECTION_SHORT = u'空'
DIRECTION_UNKNOWN = u'unknown'
DIRECTION_NET = u'net'
DIRECTION_SELL = u'sell'      # IB接口
DIRECTION_COVEREDSHORT = u'covered short'    # 证券期权

# 开平常量
OFFSET_NONE = u'none'
OFFSET_OPEN = u'open'
OFFSET_CLOSE = u'close'
OFFSET_CLOSETODAY = u'close today'
OFFSET_CLOSEYESTERDAY = u'close yesterday'
OFFSET_UNKNOWN = u'unknown'

# 状态常量
STATUS_NOTTRADED = u'pending'
STATUS_PARTTRADED = u'partial filled'
STATUS_ALLTRADED = u'filled'
STATUS_CANCELLED = u'cancelled'
STATUS_REJECTED = u'rejected'
STATUS_UNKNOWN = u'unknown'

# 合约类型常量
PRODUCT_EQUITY = u'equity'
PRODUCT_FUTURES = u'futures'
PRODUCT_OPTION = u'option'
PRODUCT_INDEX = u'index'
PRODUCT_COMBINATION = u'combination'
PRODUCT_FOREX = u'forex'
PRODUCT_UNKNOWN = u'unknown'
PRODUCT_SPOT = u'spot'
PRODUCT_DEFER = u'defer'
PRODUCT_NONE = 'none'

# 价格类型常量
PRICETYPE_LIMITPRICE = u'limit order'
PRICETYPE_MARKETPRICE = u'market order'
PRICETYPE_FAK = u'FAK'
PRICETYPE_FOK = u'FOK'

# 期权类型
OPTION_CALL = u'call'
OPTION_PUT = u'put'

# 交易所类型
EXCHANGE_SSE = 'SSE'       # 上交所
EXCHANGE_SZSE = 'SZSE'     # 深交所
EXCHANGE_CFFEX = 'CFFEX'   # 中金所
EXCHANGE_SHFE = 'SHFE'     # 上期所
EXCHANGE_CZCE = 'CZCE'     # 郑商所
EXCHANGE_DCE = 'DCE'       # 大商所
EXCHANGE_SGE = 'SGE'       # 上金所
EXCHANGE_INE = 'INE'       # 国际能源交易中心
EXCHANGE_UNKNOWN = 'UNKNOWN'# 未知交易所
EXCHANGE_NONE = ''          # 空交易所
EXCHANGE_HKEX = 'HKEX'      # 港交所
EXCHANGE_HKFE = 'HKFE'      # 香港期货交易所

EXCHANGE_SMART = 'SMART'       # IB智能路由(股票、期权)
EXCHANGE_NYMEX = 'NYMEX'       # IB 期货
EXCHANGE_GLOBEX = 'GLOBEX'     # CME电子交易平台
EXCHANGE_IDEALPRO = 'IDEALPRO' # IB外汇ECN

EXCHANGE_CME = 'CME'           # CME交易所
EXCHANGE_ICE = 'ICE'           # ICE交易所
EXCHANGE_LME = 'LME'           # LME交易所

EXCHANGE_OANDA = 'OANDA'       # OANDA外汇做市商
EXCHANGE_OKCOIN = 'OKCOIN'     # OKCOIN比特币交易所
EXCHANGE_HUOBI = 'HUOBI'       # 火币比特币交易所
EXCHANGE_LHANG = 'LHANG'       # 链行比特币交易所

# 货币类型
CURRENCY_USD = 'USD'            # 美元
CURRENCY_CNY = 'CNY'            # 人民币
CURRENCY_HKD = 'HKD'            # 港币
CURRENCY_UNKNOWN = 'UNKNOWN'    # 未知货币
CURRENCY_NONE = ''              # 空货币

# 数据库
LOG_DB_NAME = 'VnTrader_Log_Db'

# 接口类型
GATEWAYTYPE_EQUITY = 'equity'                   # 股票、ETF、债券
GATEWAYTYPE_FUTURES = 'futures'                 # 期货、期权、贵金属
GATEWAYTYPE_INTERNATIONAL = 'international'     # 外盘
GATEWAYTYPE_BTC = 'btc'                         # 比特币
GATEWAYTYPE_DATA = 'data'                       # 数据(非交易)

class GeyaGateway(VtGateway):

    def __init__(self, eventEngine, gatewayName='Geya'):
        """Constructor"""
        super(GeyaGateway, self).__init__(eventEngine, gatewayName)

        self.qryEnabled = False  # 循环查询

        self.api = GeyaApi(self)
        self.rmiIp = EMPTY_STRING
        self.rmiPort = EMPTY_STRING

        self.fileName = self.gatewayName + '_connect.json'
        self.filePath = getJsonPath(self.fileName, __file__)

    def connect(self):
        """连接"""
        try:
            f = file(self.filePath)
        except IOError:
            log = VtLogData()
            log.gatewayName = self.gatewayName
            log.logContent = text.LOADING_ERROR
            self.onLog(log)
            return

        # 解析json文件
        setting = json.load(f)
        try:
            self.rmiIp = str(setting['rmiIp'])
            self.rmiPort = str(setting['rmiPort'])
        except KeyError:
            log = VtLogData()
            log.gatewayName = self.gatewayName
            log.logContent = text.CONFIG_KEY_MISSING
            self.onLog(log)
            return

        # 初始化接口
        self.api.connect()
        self.writeLog(u'接口初始化成功')

        # 初始化并启动查询
        self.initQuery()
        #self.api.queryPrice()

        # ----------------------------------------------------------------------

    def writeLog(self, content):
        """发出日志"""
        log = VtLogData()
        log.gatewayName = self.gatewayName
        log.logContent = content
        self.onLog(log)

    # ----------------------------------------------------------------------
    def subscribe(self, subscribeReq):
        """订阅行情,自动订阅全部行情,无需实现"""
        pass

    def sendOrder(self, orderReq):
        """发单"""
        return self.api.sendOrder(orderReq)

    # ----------------------------------------------------------------------
    def close(self):
        """关闭"""
        self.api.exit()

    # ----------------------------------------------------------------------
    def initQuery(self):
        """初始化连续查询"""
        if self.qryEnabled:
            self.qryFunctionList = [self.api.queryAllPrice]
            self.startQuery()

    # ----------------------------------------------------------------------
    def query(self, event):
        """注册到事件处理引擎上的查询函数"""
        for function in self.qryFunctionList:
            function()

    # ----------------------------------------------------------------------
    def startQuery(self):
        """启动连续查询"""
        self.eventEngine.register(EVENT_TIMER, self.query)

    # ----------------------------------------------------------------------
    def setQryEnabled(self, qryEnabled):
        """设置是否要启动循环查询"""
        self.qryEnabled = qryEnabled

class GeyaApi(GeyaBase):
    """Constructor"""
    def __init__(self, gateway):
        super(GeyaApi, self).__init__()
        self.gateway  = gateway
        self.gatewayName = gateway.gatewayName

        self.interval = 1

        self.localID = 0  # 本地委托号
        self.localSystemDict = {}  # key:localID, value:systemID
        self.systemLocalDict = {}  # key:systemID, value:localID
        self.workingOrderDict = {}  # key:localID, value:order
        self.reqLocalDict = {}  # key:reqID, value:localID
        self.cancelDict = {}  # key:localID, value:cancelOrderReq

        self.tradeID = 0

        self.tickDict = {}  # key:symbol, value:tick

    # ----------------------------------------------------------------------
    def connect(self):
        """初始化"""
        self.init()

        # 推送合约信息,平盘行情查询接口根据币种和平盘对手确定一条记录
        for counterPartyName in COUNTERPARTYNAME.keys():
            for symbol in SYMBOL_MAP.keys():
                contract = VtContractData()
                contract.gatewayName = self.gatewayName
                contract.symbol = symbol
                #contract.exchange = EXCHANGE_LHANG
                contract.vtSymbol = '.'.join([symbol, counterPartyName])
                #contract.vtSymbol = contract.symbol
                if symbol == SYMBOL_XAUUSD:
                    contract.name = u'黄金美元现货'
                elif symbol == SYMBOL_XAGUSD:
                    contract.name = u'白银美元现货'
                contract.size = 1
                contract.priceTick = 0.01
                contract.productClass = PRODUCT_SPOT
                self.gateway.onContract(contract)

    # ----------------------------------------------------------------------
    def sendOrder(self, req):
        """发单"""
        """发送委托"""
        # 发送限价委托
        #s = SYMBOL_MAP_REVERSE[req.symbol]

        if req.direction == DIRECTION_LONG:
            tradeSide = 'BUY'
        else:
            tradeSide = 'SELL'

        #生成24位流水号,规则:G001+20位流水
        serial = GEYA_PRODUCT_CLASS+datetime.datetime.now().strftime('%Y%m%d%H%M%S%f')
        reqDate = datetime.datetime.now().strftime('%Y%m%d')
        reqTime = datetime.datetime.now().strftime('%H:%M:%S')
        #req.multiplier 容忍点差
        req.multiplier = '0'
        reqID = self.createOrder(serial, GEYA_PRODUCT_CLASS, req.symbol, reqDate, reqTime, req.volume,
                                 req.lastTradeDateOrContractMonth, tradeSide, req.price, req.multiplier)

        self.localID += 1
        localID = str(self.localID)
        self.reqLocalDict[reqID] = localID

        # 推送委托信息
        order = VtOrderData()
        order.gatewayName = self.gatewayName

        order.symbol = req.symbol
        order.vtSymbol = req.symbol
        #order.exchange = EXCHANGE_LHANG
        #order.vtSymbol = '.'.join([order.symbol, order.exchange])

        #order.orderID = localID
        #order.vtOrderID = '.'.join([order.orderID, order.gatewayName])
        order.orderID = serial
        order.vtOrderID = '.'.join([order.orderID, order.gatewayName])

        order.direction = req.direction
        #order.offset = OFFSET_UNKNOWN
        order.price = req.price
        order.volume = req.volume
        order.orderTime = datetime.datetime.now().strftime('%H:%M:%S.%f')[:-3]
        order.status = STATUS_UNKNOWN

        self.workingOrderDict[localID] = order
        self.gateway.onOrder(order)

        # 返回委托号
        return order.vtOrderID

    # ----------------------------------------------------------------------
    def queryPrice(self):
        """查询最优平盘额度"""
        for s in SYMBOL_MAP.keys():
            #self.getDepth(s, self.gateway.rmiIp, self.gateway.rmiPort) #查询平盘全部额度
            for d in TRADE_DIRECTION.keys():
                self.getTicker(s, d, self.gateway.rmiIp, self.gateway.rmiPort) #查询平盘最优额度,考虑买卖方向

    # ----------------------------------------------------------------------
    def queryAllPrice(self):
        """查询全部平盘额度"""
        for s in SYMBOL_MAP.keys():
            self.getDepth(s, self.gateway.rmiIp, self.gateway.rmiPort)

    # ----------------------------------------------------------------------
    def onGetTicker(self, data, req, reqID):
        """查询行情回调"""
        price = data['price'].doubleValue()#平盘价格
        tradeLimitAmount = data['tradeLimitAmount'].doubleValue()#平盘额度
        params = req['params']
        symbol = SYMBOL_MAP[params['symbol']]
        direction = params['direction']

        if symbol not in self.tickDict:
            tick = VtTickData()
            tick.gatewayName = self.gatewayName

            tick.symbol = symbol
            tick.vtSymbol = symbol
            self.tickDict[symbol] = tick
        else:
            tick = self.tickDict[symbol]

        if direction == 'BUY':
            tick.bidPrice1 = price
            tick.bidVolume1 = tradeLimitAmount
            tick.askPrice1 = EMPTY_FLOAT
            tick.askVolume1 = EMPTY_INT
        elif direction == 'SELL':
            tick.askPrice1 = price
            tick.askVolume1 = tradeLimitAmount
            tick.bidPrice1 = EMPTY_FLOAT
            tick.bidVolume1 = EMPTY_INT
        tick.lastPrice = price
        tick.volume = tradeLimitAmount
        tick.exchange = EMPTY_STRING
        tick.openInterest = EMPTY_INT
        tick.time = datetime.datetime.now().strftime('%H%M%S')
        tick.date = datetime.datetime.now().strftime('%Y%m%d')
        tick.openPrice = EMPTY_FLOAT
        tick.highPrice = EMPTY_FLOAT
        tick.lowPrice = EMPTY_FLOAT
        tick.preClosePrice = EMPTY_FLOAT

        tick.upperLimit = EMPTY_FLOAT
        tick.lowerLimit = EMPTY_FLOAT

        self.gateway.onTick(tick)

    # 自动平盘查询全部额度回调,入参data是一个list---------------------------------------
    def onGetDepth(self, data, req, reqID):
        """自动平盘查询全部额度回调"""
        params = req['params']
        symbol = SYMBOL_MAP[params['symbol']]
        if data['resList'].size() == 0:#查询结果为空
            return
        for ele in data['resList']:
            counterPartyName = ele.getCounterPartyName()#平盘对手
            vtSymbol = symbol+"."+counterPartyName#保证唯一性
            if vtSymbol not in self.tickDict:
                tick = VtTickData()
                tick.gatewayName = self.gatewayName
                tick.symbol = symbol
                tick.vtSymbol = vtSymbol
                self.tickDict[symbol] = tick
            else:
                tick = self.tickDict[vtSymbol]

            tick.bidPrice1 =  ele.getBid().doubleValue()
            tick.bidVolume1 = ele.getBidAmount().doubleValue()
            tick.askPrice1 = ele.getAsk().doubleValue()
            tick.askVolume1 = ele.getAskAmount().doubleValue()

            now = datetime.datetime.now()
            tick.time = now.strftime('%H:%M:%S.%f')[:-3]
            tick.date = now.strftime('%Y%m%d')

            tick.askPrice5 = counterPartyName

            self.gateway.onTick(tick)

    # ----------------------------------------------------------------------
    #外汇平盘交易在未指定平盘对手时可能会有多笔成交,data中成交记录可能有
    def onCreateTrade(self, data, req, reqID):
        # 创建报单数据对象
        details = data['details']#自动平盘成交记录
        for ele in details:
            trade = VtTradeData()
            trade.gatewayName = self.gatewayName
            trade.symbol = data['exnm']
            trade.exchange = EMPTY_STRING
            trade.vtSymbol = data['exnm']
            trade.orderID = data['trsn']
            trade.vtOrderID = self.gatewayName+"."+data['trsn']
            trade.direction = data['direction']
            trade.offset = EMPTY_UNICODE
            trade.price = ele.getExpc().doubleValue()
            trade.volume = ele.getLamt().doubleValue()#默认取左头寸,将BigDecimal转化为double在vnpy中没有BigDecimal)以便后续计算
            trade.tradeTime = ele.getTrtm()
            trade.tradeID = data['trsn'] + ele.getPpds() #成交编号规则:委托单号+平盘对手
            self.gateway.onTrade(trade)

    def onCreateOrder(self, data, req, reqID):
        """发单回调"""
        localID = self.reqLocalDict[reqID]
        #systemID = data['id']
        #self.localSystemDict[localID] = systemID
        #self.systemLocalDict[systemID] = localID

        # 撤单
        #if localID in self.cancelDict:
        #    req = self.cancelDict[localID]
        #    self.cancel(req)
        #    del self.cancelDict[localID]

        # 推送委托信息
        order = self.workingOrderDict[localID]
        if data['code'] == '00000':
            order.status = STATUS_NOTTRADED
        self.gateway.onTrade(order)
    def exit(self):
        pass


text:
const gulp = require('gulp');
const ts = require('gulp-typescript');
const babel = require('gulp-babel');
const merge = require('merge2');

gulp.task('default', () => {
  const tsProject = ts.createProject('./tsconfig.json');
  const babelrc = require('./.babelrc.json');

  const tsStream = tsProject.src()
    .pipe(tsProject());

  return merge([
    tsStream
      .js
      .pipe(babel(babelrc))
      .pipe(gulp.dest('lib')),
    tsStream
      .dts
      .pipe(gulp.dest('lib/definitions')),
  ]);
});

gulp.task('watch', () => {
  gulp.watch('src/**/*.ts', ['default']);
});

redpajama_set_name: RedPajamaGithub


text:
<?php
declare(strict_types=1);

// @link http://schemas.triniti.io/json-schema/triniti/notify/mixin/ios-notification/1-0-0.json#
namespace Triniti\Schemas\Notify\Mixin\IosNotification;

use Gdbots\Pbj\Schema;

/**
 * @method static Schema schema
 * @method mixed fget($fieldName, $default = null)
 */
trait IosNotificationV1Mixin
{
    public function getUriTemplateVars(): array
    {
        return [
            '_id' => $this->fget('_id'),
        ];
    }
}


text:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

    <title>dogecoinrpc — Convenience functions — dogecoin-python 0.1.3 documentation</title>

    <link rel="stylesheet" href="_static/default.css" type="text/css" />
    <link rel="stylesheet" href="_static/pygments.css" type="text/css" />

    <link rel="top" title="dogecoin-python 0.1.3 documentation" href="index.html" />
    <link rel="up" title="API reference" href="apireference.html" />
    <link rel="next" title="dogecoinrpc.connection — Connect to Dogecoin server via JSON-RPC" href="dogecoinrpc.connection.html" />
    <link rel="prev" title="API reference" href="apireference.html" />

Navigation

          index

          modules |

          next |

          previous |

dogecoin-python 0.1.3 documentation »

API reference »

<tt class="xref py py-mod docutils literal">dogecoinrpc</tt> — Convenience functions¶

dogecoin-python - Easy-to-use Dogecoin API client

<tt class="descclassname">dogecoinrpc.</tt><tt class="descname">connect_to_local</tt><big>(</big>filename=None<big>)</big>¶

Connect to default dogecoin instance owned by this user, on this machine.

Returns a <tt class="xref py py-class docutils literal">DogecoinConnection</tt> object.

Arguments:

filename: Path to a configuration file in a non-standard location (optional)

<tt class="descclassname">dogecoinrpc.</tt><tt class="descname">connect_to_remote</tt><big>(</big>user, password, host='localhost', port=22555, use_https=False<big>)</big>¶

Connect to remote or alternative local dogecoin client instance.

Returns a <tt class="xref py py-class docutils literal">DogecoinConnection</tt> object.

Previous topic

API reference

Next topic

<tt class="docutils literal">dogecoinrpc.connection</tt> — Connect to Dogecoin server via JSON-RPC

This Page

Show Source

Quick search

    <form class="search" action="search.html" method="get">
      <input type="text" name="q" />
      <input type="submit" value="Go" />
      <input type="hidden" name="check_keywords" value="yes" />
      <input type="hidden" name="area" value="default" />
    </form>

    Enter search terms or a module, class or function name.

Navigation

          index

          modules |

          next |

          previous |

dogecoin-python 0.1.3 documentation »

API reference »

        © Copyright 2013, bitcoin-python developers.
      Created using Sphinx 1.2.1.


text:
package org.pikater.core.agents.experiment.computing;

import org.pikater.core.ontology.subtrees.agentinfo.AgentInfo;
import org.pikater.core.options.computing.PerceptronCA_Box;

import weka.classifiers.Classifier;
import weka.classifiers.functions.MultilayerPerceptron;

public class Agent_WekaPerceptronCA extends Agent_WekaAbstractCA {

	/**
	 *
	 */
	private static final long serialVersionUID = -9097793752774638033L;

	@Override
	protected Classifier createClassifier() {

		return new MultilayerPerceptron();
	}

	@Override
	protected AgentInfo getAgentInfo() {

		return PerceptronCA_Box.get();
	}

}


text:
describe '/v1/stacks/:id/container_logs', celluloid: true do

  let(:grid) do
    Grid.create!(name: 'terminal-a')
  end

  let(:stack) { grid.stacks.first }

  let(:node) { HostNode.create(name: 'node', node_id: 'node') }

  let(:david) do
    user = User.create!(email: 'david@domain.com', external_id: '123456')
    grid.users << user

    user
  end

  let(:valid_token) do
    AccessToken.create!(user: david, scopes: ['user'])
  end

  let(:request_headers) do
    { 'HTTP_AUTHORIZATION' => "Bearer #{valid_token.token_plain}" }
  end

  let(:test_app) do
    GridService.create!(
      grid: david.grids.first,
      name: 'app',
      image_name: 'my/app:latest',
      stateful: false,
      stack: stack
    )
  end

  describe 'GET' do
    it 'requires autentication' do
      get "/v1/stacks/#{stack.to_path}/container_logs"
      expect(response.status).to eq(403)
    end

    it 'returns empty array when no log items exist' do
      get "/v1/stacks/#{stack.to_path}/container_logs", nil, request_headers
      expect(response.status).to eq(200)
      expect(json_response['logs']).to eq([])
    end

    it 'returns logs' do
      container = test_app.containers.create(container_id: 'aa', name: 'app-1', host_node: node)
      container.container_logs.create!(
        type: 'stdout', data: 'foo', name: 'app-1', grid: grid, grid_service: test_app
      )
      get "/v1/stacks/#{stack.to_path}/container_logs", nil, request_headers
      expect(response.status).to eq(200)
      expect(json_response['logs'].size).to eq(1)
    end
  end
end


text:
using System;
using System.Reflection;
using System.Resources;
using System.Runtime.InteropServices;

[assembly: AssemblyTitle("Microsoft.Toolkit.Uwp.DeveloperTools")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("")]
[assembly: AssemblyProduct("Microsoft.Toolkit.Uwp.DeveloperTools")]
[assembly: AssemblyCopyright("Copyright ©  2015")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]
[assembly: NeutralResourcesLanguage("en")]

[assembly: AssemblyVersion("1.2.1.0")]
[assembly: AssemblyFileVersion("1.2.1.0")]
[assembly: AssemblyInformationalVersion("1.2.1-developerTools.821+Branch.developerTools.Sha.9a3bfd5760c1cb9e03a099728d013fe40c4e7c53")]
[assembly: ComVisible(false)]


text:
class AddRatingToEvents < ActiveRecord::Migration[5.0]
  def change
    add_column :events, :rating, :integer
  end
end


text:
package config

import (
	"encoding/json"
	"fmt"
	"testing"

	"github.com/stretchr/testify/assert"
)

func TestSensitiveRawMessageImplements(t *testing.T) {
	assert.Implements(t, (*fmt.Stringer)(nil), SensitiveRawMessage{})
	assert.Implements(t, (*fmt.GoStringer)(nil), SensitiveRawMessage{})
	assert.Implements(t, (*json.Marshaler)(nil), SensitiveRawMessage{})
	assert.Implements(t, (*json.Unmarshaler)(nil), &SensitiveRawMessage{})
}

func TestSensitiveRawMessage(t *testing.T) {
	sensitive := NewSensitiveRawMessage(json.RawMessage("secret"))

	for _, str := range []string{
		sensitive.String(),
		sensitive.GoString(),
		fmt.Sprintf("%v", sensitive),
		fmt.Sprintf("%#v", sensitive),
		fmt.Sprint(sensitive),
	} {
		assert.Equal(t, "[redacted]", str, "expected redacted")
	}
}

// TestEmptySensitiveRawMessage tests the message content is empty
func TestEmptySensitiveRawMessage(t *testing.T) {
	sensitive := NewSensitiveRawMessage(json.RawMessage(""))

	assert.Nil(t, sensitive, "empty message should return nil")
}


text:
.class Landroid/widget/ZoomButtonsController$1;
.super Landroid/content/BroadcastReceiver;
.source "ZoomButtonsController.java"

# annotations
.annotation system Ldalvik/annotation/EnclosingClass;
    value = Landroid/widget/ZoomButtonsController;
.end annotation

.annotation system Ldalvik/annotation/InnerClass;
    accessFlags = 0x0
    name = null
.end annotation

# instance fields
.field final synthetic this$0:Landroid/widget/ZoomButtonsController;

# direct methods
.method constructor <init>(Landroid/widget/ZoomButtonsController;)V
    .locals 0

    .prologue
    .line 149
    iput-object p1, p0, Landroid/widget/ZoomButtonsController$1;->this$0:Landroid/widget/ZoomButtonsController;

    invoke-direct {p0}, Landroid/content/BroadcastReceiver;-><init>()V

    return-void
.end method

# virtual methods
.method public onReceive(Landroid/content/Context;Landroid/content/Intent;)V
    .locals 2
    .param p1, "context"    # Landroid/content/Context;
    .param p2, "intent"    # Landroid/content/Intent;

    .prologue
    const/4 v1, 0x2

    .line 152
    iget-object v0, p0, Landroid/widget/ZoomButtonsController$1;->this$0:Landroid/widget/ZoomButtonsController;

    # getter for: Landroid/widget/ZoomButtonsController;->mIsVisible:Z
    invoke-static {v0}, Landroid/widget/ZoomButtonsController;->access$000(Landroid/widget/ZoomButtonsController;)Z

    move-result v0

    if-nez v0, :cond_0

    .line 156
    :goto_0
    return-void

    .line 154
    :cond_0
    iget-object v0, p0, Landroid/widget/ZoomButtonsController$1;->this$0:Landroid/widget/ZoomButtonsController;

    # getter for: Landroid/widget/ZoomButtonsController;->mHandler:Landroid/os/Handler;
    invoke-static {v0}, Landroid/widget/ZoomButtonsController;->access$100(Landroid/widget/ZoomButtonsController;)Landroid/os/Handler;

    move-result-object v0

    invoke-virtual {v0, v1}, Landroid/os/Handler;->removeMessages(I)V

    .line 155
    iget-object v0, p0, Landroid/widget/ZoomButtonsController$1;->this$0:Landroid/widget/ZoomButtonsController;

    # getter for: Landroid/widget/ZoomButtonsController;->mHandler:Landroid/os/Handler;
    invoke-static {v0}, Landroid/widget/ZoomButtonsController;->access$100(Landroid/widget/ZoomButtonsController;)Landroid/os/Handler;

    move-result-object v0

    invoke-virtual {v0, v1}, Landroid/os/Handler;->sendEmptyMessage(I)Z

    goto :goto_0
.end method


text:
{% block heading %}
    Dear {{ customer | default 'Customer' }}
{% endblock %}

{% block content %}
    I would like to let you that we have the greatest offer.
{% endblock %}

{% block footer %}
    Not interested anymore? Unsubscribe. Having trouble viewing this email?
    View it in your browser
{% endblock %}


text:
package de.mickare.routernet.netty;

import java.util.concurrent.atomic.AtomicInteger;

import com.google.common.base.Preconditions;

import de.mickare.routernet.client.AbstractConnectClient;
import io.netty.bootstrap.Bootstrap;
import io.netty.bootstrap.ServerBootstrap;
import io.netty.channel.Channel;
import io.netty.channel.ChannelFutureListener;
import io.netty.channel.ChannelInitializer;
import io.netty.channel.DefaultEventLoopGroup;
import io.netty.channel.EventLoopGroup;
import io.netty.channel.local.LocalAddress;
import io.netty.channel.local.LocalChannel;
import io.netty.channel.local.LocalServerChannel;
import lombok.Getter;
import lombok.NonNull;
import lombok.RequiredArgsConstructor;
import lombok.Setter;

public @RequiredArgsConstructor class LocalConnectClient extends AbstractConnectClient {

	private static final AtomicInteger COUNTER = new AtomicInteger( 0 );

	private @Getter final LocalAddress addr = new LocalAddress( "localconnection." + COUNTER.getAndIncrement() );
	private @NonNull final ChannelInitializer<LocalChannel> serverInit;
	private @NonNull final ChannelInitializer<LocalChannel> clientInit;
	private @Getter @Setter boolean shutdownGroup = true;
	private EventLoopGroup group = null;
	private Channel serverChannel;
	private Channel clientChannel;

	public LocalConnectClient( ChannelInitializer<LocalChannel> serverInit, ChannelInitializer<LocalChannel> clientInit, EventLoopGroup group ) {
		this( serverInit, clientInit );
		Preconditions.checkArgument( !group.isShutdown() );
		this.group = group;
		this.shutdownGroup = false;
	}

	@Override
	protected void doConnect() throws Exception {
		if ( group == null ) {
			group = new DefaultEventLoopGroup();
		}

		Bootstrap cb = new Bootstrap();
		cb.remoteAddress( addr );
		cb.group( group ).channel( LocalChannel.class ).handler( clientInit );

		ServerBootstrap sb = new ServerBootstrap();
		sb.group( group ).channel( LocalServerChannel.class ).childHandler( serverInit );

		// Start server
		sb.bind( addr ).addListener( ( ChannelFutureListener ) sf -> {
			if ( sf.isSuccess() ) {
				serverChannel = sf.channel();
				cb.connect( addr ).addListener( ( ChannelFutureListener ) cf -> {
					if ( cf.isSuccess() ) {
						clientChannel = cf.channel();
						notfiyConnected();
					} else {
						notifyFailed( cf.cause() );
					}
				} );
			} else {
				notifyFailed( sf.cause() );
			}
		} );
	}

	@Override
	protected void doClose() throws Exception {
		if ( serverChannel != null ) {
			serverChannel.close().awaitUninterruptibly();
		}
		if ( clientChannel != null ) {
			clientChannel.close();
		}
		if ( shutdownGroup && group != null ) {
			group.shutdownGracefully();
		}
	}

}


text:
package org.jvnet.hudson.plugins.ssscm;

import java.io.File;
import java.io.IOException;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import org.kohsuke.stapler.DataBoundConstructor;
import org.kohsuke.stapler.StaplerRequest;
import org.kohsuke.stapler.export.Exported;
import hudson.Extension;
import hudson.FilePath;
import hudson.Launcher;
import hudson.Util;
import hudson.model.AbstractBuild;
import hudson.model.AbstractProject;
import hudson.model.BuildListener;
import hudson.model.TaskListener;
import hudson.scm.ChangeLogParser;
import hudson.scm.PollingResult;
import hudson.scm.SCMRevisionState;
import hudson.scm.SCM;
import hudson.scm.SCMDescriptor;
import hudson.tasks.Messages;

/**
 * A class to utilize shell scripts as an SCM
 *
 * @author Richard Sczepczenski
 *
 */
public class ShellScriptSCM extends SCM implements Serializable{

	/**
	 * Default serial version.
	 */
	private static final long serialVersionUID = 1L;

	/**
	 * The shell to be used to execute command line programs/scripts.
	 */
	private final String SHELL           = "/bin/sh";

	/**
	 * Temporary file name used for executing shell scripts.
	 */
	private final String TEMP_FILE_NAME  = "SSSCM";

	/**
	 * The file extension of the temporary file.
	 */
	private final String TEMP_FILE_EXT   = ".sh";

	/**
	 * The checkout shell.
	 */
	private String checkoutShell;

	/**
	 * The polling shell.
	 */
	private String pollingShell;

	/**
	 * Configuration option: Set to true to use the checkout shell for polling.  The
	 * default is false.
	 */
	private boolean useCheckoutForPolling;

	/**
	 * Creates the ShellScriptSCM.
	 *
	 * @param checkoutShell
	 *      The shell command used when a checkout is done.
	 * @param pollingShell
	 *      The shell command to use for polling.
	 */
	public ShellScriptSCM(String checkoutShell, String pollingShell) {
		this.checkoutShell = checkoutShell;
		this.pollingShell  = pollingShell;
		this.useCheckoutForPolling = false;
	}

	/**
	 *  Creates the ShellScriptSCM.
	 *
	 * @param checkoutShell
	 *      The shell command used when a checkout is done.
	 *
	 * @param pollingShell
	 *      The shell command to use for polling.
	 *
	 * @param useCheckoutForPolling
	 *      Set to true to use the checkout shell for polling, false
	 *      if the polling shell is to be used for polling.
	 */
	@DataBoundConstructor
	public ShellScriptSCM(String checkoutShell, String pollingShell, Boolean useCheckoutForPolling) {
		this.checkoutShell = checkoutShell;
		this.pollingShell  = pollingShell;
		this.useCheckoutForPolling = useCheckoutForPolling.booleanValue();
	}

	/**
	 * Returns the shell which is currently being used for 'checkout' operations.
	 *
	 * @return
	 *      The shell command used when a checkout is done.
	 */
	@Exported
	public String getCheckoutShell() {
		return checkoutShell;
	}

	/**
	 * Set the shell to be used when a 'checkout' is requested.
	 *
	 * @param checkoutShell
	 *      The shell command used when a checkout is done.
	 */
	@Exported
	public void setCheckoutShell(String checkoutShell) {
		this.checkoutShell = checkoutShell;
	}

	/**
	 * Returns the shell currently being used for polling operations.
	 *
	 * @return
	 *      The polling shell.
	 */
	@Exported
	public String getPollingShell() {
		return pollingShell;
	}

	/**
	 * Set the shell to be used for polling.
	 *
	 * @param pollingShell
	 *      The shell command to use for polling.
	 */
	@Exported
	public void setPollingShell(String pollingShell) {
		this.pollingShell = pollingShell;
	}

	/**
	 * Get the state of the conditional for using the checkout shell for polling operations.
	 *
	 * @return
	 *      True if the checkout shell is to be used for polling, false if the
	 *      polling shell is to be used for polling.
	 */
	@Exported
	public boolean isUseCheckoutForPolling() {
		return useCheckoutForPolling;
	}

	/**
	 * Set the conditional for using the checkout shell for polling.
	 *
	 * @param useCheckoutForPolling
	 *      Set to true to use the checkout shell for polling, false
	 *      if the polling shell is to be used for polling.
	 */
	@Exported
	public void setUseCheckoutForPolling(Boolean useCheckoutForPolling) {
		this.useCheckoutForPolling = useCheckoutForPolling.booleanValue();
	}

	/**
	 * Checkout is performed by using the specified 'checkout' shell.
	 */
	@Override
	public boolean checkout(AbstractBuild<?,?> build, Launcher launcher,
			FilePath workspace, BuildListener listener, File changelogFile)
			throws IOException, InterruptedException {

		this.execute(checkoutShell, launcher,workspace,listener);

		return true;
	}

	/**
	 * This method is not implemented.
	 */
	@Override
	public ChangeLogParser createChangeLogParser() {
		// TODO Auto-generated method stub
		return null;
	}

	/**
	 * This method executes the polling shell in order to determine if there
	 * are any changes.  If the polling shell exits with exit code '1' then
	 * this method will return true to indicate that a checkout must be done.
	 * Any other exit code will not trigger a checkout.
	 */
	@Override
	public boolean pollChanges(AbstractProject<?,?> project, Launcher launcher,
			FilePath workspace, TaskListener listener) throws IOException,
			InterruptedException {
		int rc = 0;

		if( useCheckoutForPolling ){
			rc = this.execute(checkoutShell, launcher,workspace,listener);
		} else {
			rc = this.execute(pollingShell, launcher,workspace,listener);
		}

		// Only return true if the return code from the shell command is 1
		if(rc == 1 ){
			return true;
		} else {
			return false;
		}

	}

	/**
	 * This method is not implemented.
	 */
	@Override
	public SCMRevisionState calcRevisionsFromBuild(AbstractBuild<?, ?> build,
			Launcher launcher, TaskListener listener) throws IOException,
			InterruptedException {
		// TODO Auto-generated method stub
		return null;
	}

	/**
	 * This method is not implemented.
	 */
	@Override
	protected PollingResult compareRemoteRevisionWith(
			AbstractProject<?, ?> project, Launcher launcher,
			FilePath workspace, TaskListener listener, SCMRevisionState baseline)
			throws IOException, InterruptedException {
		// TODO Auto-generated method stub
		return null;
	}

	/* (non-Javadoc)
	 * @see hudson.scm.SCM#getDescriptor()
	 */
	@Override
    public DescriptorImpl getDescriptor() {
        return (DescriptorImpl)super.getDescriptor();
    }

	/**
	 * Helper method to execute a shell command.
	 *
	 * @param shellCmd
	 *      The shell command to be executed.
	 *
	 * @param launcher
	 *      The process launcher.
	 *
	 * @param workspace
	 *      The workspace where the shell command is going to be executed.
	 *
	 * @param listener
	 *      The TaskListener
	 *
	 * @return
	 *      The execution status of the shell command.
	 *
	 * @throws IOException
	 *      If there is an exception during the shell command execution.
	 *
	 * @throws InterruptedException
	 *      If there is an exception during the shell command execution.
	 */
	private int execute(String shellCmd, Launcher launcher, FilePath workspace, TaskListener listener) throws IOException, InterruptedException {
		FilePath script=null;
		try {
			try {
				script = workspace.createTextTempFile(TEMP_FILE_NAME, TEMP_FILE_EXT, shellCmd, false);
			} catch (IOException e) {
				Util.displayIOException(e,listener);
				e.printStackTrace(listener.fatalError(Messages.CommandInterpreter_UnableToProduceScript()));
				return -1;
			}

			int r;
			try {
				r = launcher.launch().cmds(buildCommandLine(shellCmd, script)).envs(System.getenv()).stdout(listener).pwd(workspace).join();
			} catch (IOException e) {
				Util.displayIOException(e,listener);
				e.printStackTrace(listener.fatalError(Messages.CommandInterpreter_CommandFailed()));
				r = -1;
			}
			return r;
		} finally {
			try {
				if(script!=null)
					script.delete();
			} catch (IOException e) {
				Util.displayIOException(e,listener);
				e.printStackTrace( listener.fatalError(Messages.CommandInterpreter_UnableToDelete(script)) );
			}
		}

	}

	/**
	 *
	 * @param shellCmd
	 * @param script
	 * @return
	 */
    private String[] buildCommandLine(String shellCmd, FilePath script) {
        if(shellCmd.startsWith("#!")) {
            // interpreter override
            int end = shellCmd.indexOf('\n');
            if(end<0)   end=shellCmd.length();
            List<String> args = new ArrayList<String>();
            args.addAll(Arrays.asList(Util.tokenize(shellCmd.substring(0,end).trim())));
            args.add(script.getRemote());
            args.set(0,args.get(0).substring(2));   // trim off "#!"
            return args.toArray(new String[args.size()]);
        } else
            return new String[] { SHELL,"-xe",script.getRemote()};
    }

	/**
     * Descriptor for {@link ShellScriptSCM}. Used as a singleton.
     * The class is marked as public so that it can be accessed from views.
     *
     *

     * See <tt>views/hudson/plugins/SSSCM/sssscm/*.jelly</tt>
     * for the actual HTML fragment for the configuration screen.
     */
    @Extension // this marker indicates Hudson that this is an implementation of an extension point.
    public static final class DescriptorImpl extends SCMDescriptor<ShellScriptSCM> implements hudson.model.ModelObject {

        public DescriptorImpl() {
			super(ShellScriptSCM.class, null);
			load();
		}

		@Override
		public String getDisplayName() {
			return "Shell Script";
		}

		@Override
		public boolean configure(StaplerRequest req, net.sf.json.JSONObject json) throws FormException {
	        // Save configuration
            save();

            return super.configure(req, json);
 		}

    }

}


text:
<!DOCTYPE html>

  <meta charset="utf-8">

  <meta name="viewport" content="width=device-width, initial-scale=1.0">

  <title>References — piqs 1.0 documentation</title>

    <link rel="stylesheet" href="_static/css/theme.css" type="text/css" />

        <link rel="index" title="Index"
              href="genindex.html"/>
        <link rel="search" title="Search" href="search.html"/>
    <link rel="top" title="piqs 1.0 documentation" href="index.html"/>
        <link rel="prev" title="Developers" href="developers.html"/>

             piqs

  <form id="rtd-search-form" class="wy-form" action="search.html" method="get">
    <input type="text" name="q" placeholder="Search docs" />
    <input type="hidden" name="check_keywords" value="yes" />
    <input type="hidden" name="area" value="default" />
  </form>

Contents:

Introduction

Installation

User Guide

API documentation

Developers

References

          piqs

Docs »

References

             View page source

References¶

The code and an introductory notebook can be found in Ref. [1]. A paper detailing the theoretical aspects and illustrating many applications is in Ref. [2]. Related open-source libraries for open quantum dynamics that exploit permutational invariance are Permutations [3] by Peter Kirton and PsiQuaSP by Michael Gegg [4].

[1] https://github.com/nathanshammah/notebooks

[2] N. Shammah, S. Ahmed, N. Lambert, S. De Liberato, and F. Nori, to be submitted

[3] https://github.com/peterkirton/permutations P. Kirton and J. Keeling Phys. Rev. Lett.  118, 123602 (2017)

[4] https://github.com/modmido/psiquasp M. Gegg and M. Richter, Sci. Rep. 7, 16304 (2017)

         Previous

        © Copyright 2018, Shahnawaz Ahmed, Nathan Shammah.

  Built with Sphinx using a theme provided by Read the Docs.


text:
@interface NSDate (GRExtensions)

- (BOOL) isEarlierThan:(NSDate *)anotherDate;
- (BOOL) isLaterThan:(NSDate *)anotherDate;

- (NSString *) toRelativeDateTime;

@end


text:
<?php

declare (strict_types = 1);

namespace Unit\Nucleus;

use Nucleus\DependencyContainer;
use Nucleus\EntityManager;
use Nucleus\Logger;
use Nucleus\TemplateEngine;
use PHPUnit_Framework_TestCase;

/**
 * @covers Nucleus\DependencyContainer
 */
class DependencyContainerTest extends PHPUnit_Framework_TestCase
{
    public function testCanCreate()
    {
        $this->assertInstanceOf(DependencyContainer::class, new DependencyContainer());
    }

    public function testCanInitHello()
    {
        $this->assertSame([
            TemplateEngine::class,
            Logger::class,
            EntityManager::class
        ], array_keys((new DependencyContainer())->initHello()));
    }
}


text:
namespace Sitecore.FakeDb.Data.Engines
{
    internal static class ItemNames
    {
        public const string Sitecore = "sitecore";

        public const string Content = "content";

        public const string Templates = "templates";

        public const string Branches = "Branches";

        public const string System = "system";

        public const string MediaLibrary = "media library";

        public const string DefinitionsRoot = "Marketing Control Panel";

        public const string Template = "Template";

        public const string TemplateSection = "Template section";

        public const string TemplateField = "Template field";

        public const string Branch = "Branch";

        public const string Folder = "Folder";

        public const string Profiles = "Profiles";

        public const string FieldTypes = "Field types";
    }
}


text:
/**
 * @fileoverview Rule to flag use constant conditions
 * @author Christian Schulz <http://rndm.de>
 */

"use strict";

//------------------------------------------------------------------------------
// Rule Definition
//------------------------------------------------------------------------------

module.exports = {
    meta: {
        docs: {
            description: "disallow constant expressions in conditions",
            category: "Possible Errors",
            recommended: true
        },

        schema: [
            {
                type: "object",
                properties: {
                    checkLoops: {
                        type: "boolean"
                    }
                },
                additionalProperties: false
            }

        ]
    },

    create(context) {
        const options = context.options[0] || {},
            checkLoops = options.checkLoops !== false;

        //--------------------------------------------------------------------------
        // Helpers
        //--------------------------------------------------------------------------

        /**
         * Checks if a branch node of LogicalExpression short circuits the whole condition
         * @param {ASTNode} node The branch of main condition which needs to be checked
         * @param {string} operator The operator of the main LogicalExpression.
         * @returns {boolean} true when condition short circuits whole condition
         */
        function isLogicalIdentity(node, operator) {
            switch (node.type) {
                case "Literal":
                    return (operator === "||" && node.value === true) ||
                           (operator === "&&" && node.value === false);

                case "UnaryExpression":
                    return (operator === "&&" && node.operator === "void");

                case "LogicalExpression":
                    return isLogicalIdentity(node.left, node.operator) ||
                             isLogicalIdentity(node.right, node.operator);

                // no default
            }
            return false;
        }

        /**
         * Checks if a node has a constant truthiness value.
         * @param {ASTNode} node The AST node to check.
         * @param {boolean} inBooleanPosition `false` if checking branch of a condition.
         *  `true` in all other cases
         * @returns {Bool} true when node's truthiness is constant
         * @private
         */
        function isConstant(node, inBooleanPosition) {
            switch (node.type) {
                case "Literal":
                case "ArrowFunctionExpression":
                case "FunctionExpression":
                case "ObjectExpression":
                case "ArrayExpression":
                    return true;

                case "UnaryExpression":
                    if (node.operator === "void") {
                        return true;
                    }

                    return (node.operator === "typeof" && inBooleanPosition) ||
                        isConstant(node.argument, true);

                case "BinaryExpression":
                    return isConstant(node.left, false) &&
                            isConstant(node.right, false) &&
                            node.operator !== "in";

                case "LogicalExpression": {
                    const isLeftConstant = isConstant(node.left, inBooleanPosition);
                    const isRightConstant = isConstant(node.right, inBooleanPosition);
                    const isLeftShortCircuit = (isLeftConstant && isLogicalIdentity(node.left, node.operator));
                    const isRightShortCircuit = (isRightConstant && isLogicalIdentity(node.right, node.operator));

                    return (isLeftConstant && isRightConstant) || isLeftShortCircuit || isRightShortCircuit;
                }

                case "AssignmentExpression":
                    return (node.operator === "=") && isConstant(node.right, inBooleanPosition);

                case "SequenceExpression":
                    return isConstant(node.expressions[node.expressions.length - 1], inBooleanPosition);

                // no default
            }
            return false;
        }

        /**
         * Reports when the given node contains a constant condition.
         * @param {ASTNode} node The AST node to check.
         * @returns {void}
         * @private
         */
        function checkConstantCondition(node) {
            if (node.test && isConstant(node.test, true)) {
                context.report(node, "Unexpected constant condition.");
            }
        }

        /**
         * Checks node when checkLoops option is enabled
         * @param {ASTNode} node The AST node to check.
         * @returns {void}
         * @private
         */
        function checkLoop(node) {
            if (checkLoops) {
                checkConstantCondition(node);
            }
        }

        //--------------------------------------------------------------------------
        // Public
        //--------------------------------------------------------------------------

        return {
            ConditionalExpression: checkConstantCondition,
            IfStatement: checkConstantCondition,
            WhileStatement: checkLoop,
            DoWhileStatement: checkLoop,
            ForStatement: checkLoop
        };

    }
};


text:
- Legend sheet - wet areas fixtures and fittings only

_(Wet areas fixtures and fittings codes are used exclusively in Q series drawings,
on that basis the legend is separated from A and L series legends.
Not to be confused with finishes codes e.g. paints and tiles - they are listed in A series general
legend.)_


text:
package impl

import "reflect"

func mapRange(v reflect.Value) *reflect.MapIter { return v.MapRange() }


text:
- Added `BelongsToMany::syncWithoutDetaching()` method ([33aee31](https://github.com/laravel/framework/commit/33aee31523b9fc280aced35a5eb5f6b627263b45))
- Added `withoutTrashed()` method to `SoftDeletingScope` ([#14805](https://github.com/laravel/framework/pull/14805))
- Support Flysystem's `disable_asserts` config value ([#14864](https://github.com/laravel/framework/pull/14864))

### Changed
- Support multi-dimensional `$data` arrays in `invalid()` and `valid()` methods ([#14651](https://github.com/laravel/framework/pull/14651))
- Support column aliases in `chunkById()` ([#14711](https://github.com/laravel/framework/pull/14711))
- Re-attempt transaction when encountering a deadlock ([#14930](https://github.com/laravel/framework/pull/14930))

### Fixed
- Only return floats or integers in `aggregate()` ([#14781](https://github.com/laravel/framework/pull/14781))
- Fixed numeric aggregate queries ([#14793](https://github.com/laravel/framework/pull/14793))
- Create new row in `firstOrCreate()` when a model has a mutator ([#14656](https://github.com/laravel/framework/pull/14656))
- Protect against empty paths in the `view:clear` command ([#14812](https://github.com/laravel/framework/pull/14812))
- Convert `$attributes` in `makeHidden()` to array ([#14852](https://github.com/laravel/framework/pull/14852), [#14857](https://github.com/laravel/framework/pull/14857))
- Prevent conflicting class name import to namespace in `ValidatesWhenResolvedTrait` ([#14878](https://github.com/laravel/framework/pull/14878))

## v5.2.43 (2016-08-10)

### Changed
- Throw exception if `$amount` is not numeric in `increment()` and `decrement()` ([915cb84](https://github.com/laravel/framework/commit/915cb843981ad434b10709425d968bf2db37cb1a))

## v5.2.42 (2016-08-08)

### Added
- Allow `BelongsToMany::detach()` to accept a collection ([#14412](https://github.com/laravel/framework/pull/14412))
- Added `whereTime()` and `orWhereTime()` to query builder ([#14528](https://github.com/laravel/framework/pull/14528))
- Added PHP 7.1 support ([#14549](https://github.com/laravel/framework/pull/14549))
- Allow collections to be created from objects that implement `Traversable` ([#14628](https://github.com/laravel/framework/pull/14628))
- Support dot notation in `Request::exists()` ([#14660](https://github.com/laravel/framework/pull/14660))
- Added missing `Model::makeHidden()` method ([#14641](https://github.com/laravel/framework/pull/14641))

### Changed
- Return `true` when `$key` is empty in `MessageBag::has()` ([#14409](https://github.com/laravel/framework/pull/14409))
- Optimized `Filesystem::moveDirectory` ([#14362](https://github.com/laravel/framework/pull/14362))
- Convert `$count` to integer in `Str::plural()` ([#14502](https://github.com/laravel/framework/pull/14502))
- Handle arrays in `validateIn()` method ([#14607](https://github.com/laravel/framework/pull/14607))

### Fixed
- Fixed an issue with `wherePivotIn()` ([#14397](https://github.com/laravel/framework/issues/14397))
- Fixed PDO connection on HHVM ([#14429](https://github.com/laravel/framework/pull/14429))
- Prevent `make:migration` from creating duplicate classes ([#14432](https://github.com/laravel/framework/pull/14432))
- Fixed lazy eager loading issue in `LengthAwarePaginator` collection ([#14476](https://github.com/laravel/framework/pull/14476))
- Fixed plural form of Pokémon ([#14525](https://github.com/laravel/framework/pull/14525))
- Fixed authentication bug in `TokenGuard::validate()` ([#14568](https://github.com/laravel/framework/pull/14568))
- Fix missing middleware parameters when using `authorizeResource()` ([#14592](https://github.com/laravel/framework/pull/14592))

### Removed
- Removed duplicate interface implementation in `Dispatcher` ([#14515](https://github.com/laravel/framework/pull/14515))

## v5.2.41 (2016-07-20)

### Changed
- Run session garbage collection before response is returned ([#14386](https://github.com/laravel/framework/pull/14386))

### Fixed
- Fixed pagination bug introduced in [#14188](https://github.com/laravel/framework/pull/14188) ([#14389](https://github.com/laravel/framework/pull/14389))
- Fixed `median()` issue when collection is out of order ([#14381](https://github.com/laravel/framework/pull/14381))

## v5.2.40 (2016-07-19)

### Added
- Added `--tags` option to `cache:clear` command ([#13927](https://github.com/laravel/framework/pull/13927))
- Added `scopes()` method to Eloquent query builder ([#14049](https://github.com/laravel/framework/pull/14049))
- Added `hasAny()` method to `MessageBag` ([#14151](https://github.com/laravel/framework/pull/14151))
- Allowing passing along transmission options to SparkPost ([#14166](https://github.com/laravel/framework/pull/14166))
- Added `Filesystem::moveDirectory()` ([#14198](https://github.com/laravel/framework/pull/14198))
- Added `increment()` and `decrement()` methods to session store ([#14196](https://github.com/laravel/framework/pull/14196))
- Added `pipe()` method to `Collection` ([#13899](https://github.com/laravel/framework/pull/13899))
- Added additional PostgreSQL operators ([#14224](https://github.com/laravel/framework/pull/14224))
- Support `::` expressions in Blade directive names ([#14265](https://github.com/laravel/framework/pull/14265))
- Added `median()` and `mode()` methods to collections ([#14305](https://github.com/laravel/framework/pull/14305))
- Add `tightenco/collect` to Composer `replace` list ([#14118](https://github.com/laravel/framework/pull/14118), [#14127](https://github.com/laravel/framework/pull/14127))

### Changed
- Don't release jobs that have been reserved too long ([#13833](https://github.com/laravel/framework/pull/13833))
- Throw `Exception` if `Queue` has no encrypter ([#14038](https://github.com/laravel/framework/pull/14038))
- Cast `unique` validation rule `id` to integer ([#14076](https://github.com/laravel/framework/pull/14076))
- Ensure database transaction count is not negative ([#14085](https://github.com/laravel/framework/pull/14085))
- Use `session.lifetime` for CSRF cookie ([#14080](https://github.com/laravel/framework/pull/14080))
- Allow the `shuffle()` method to be seeded ([#14099](https://github.com/laravel/framework/pull/14099))
- Allow passing of multiple keys to `MessageBag::has()` ([a0cd0ae](https://github.com/laravel/framework/commit/a0cd0aea9a475f76baf968ef2f53aeb71fcda4c0))
- Allow model connection in `newFromBuilder()` to be overridden ([#14194](https://github.com/laravel/framework/pull/14194))
- Only load pagination results if `$total` is greater than zero ([#14188](https://github.com/laravel/framework/pull/14188))
- Accept fallback parameter in `UrlGenerator::previous` ([#14207](https://github.com/laravel/framework/pull/14207))
- Only do `use` call if `database` is not empty ([#14225](https://github.com/laravel/framework/pull/14225))
- Removed unnecessary nesting in the `Macroable` trait ([#14222](https://github.com/laravel/framework/pull/14222))
- Refactored `DatabaseQueue::getNextAvailableJob()` ([cffcd34](https://github.com/laravel/framework/commit/cffcd347901617b19e8eca05be55cda280e0d262))
- Look for `getUrl()` method on Filesystem adapter before throwing exception ([#14246](https://github.com/laravel/framework/pull/14246))
- Make `seeIsSelected()` work with `<option>` elements without `value` attributes ([#14279](https://github.com/laravel/framework/pull/14279))
- Improved performance of `Filesystem::sharedGet()` ([#14319](https://github.com/laravel/framework/pull/14319))
- Throw exception if view cache path is empty ([#14291](https://github.com/laravel/framework/pull/14291))
- Changes several validation methods return type from integers to booleans ([#14373](https://github.com/laravel/framework/pull/14373))
- Remove files from input in `withInput()` method ([85249be](https://github.com/laravel/framework/commit/85249beed1e4512d71f7ae52474b9a59a80381d2))

### Fixed
- Require file instance for `dimensions` validation rule ([#14025](https://github.com/laravel/framework/pull/14025))
- Fixes for SQL Server `processInsertGetId()` with ODBC ([#14121](https://github.com/laravel/framework/pull/14121))
- Fixed PostgreSQL `processInsertGetId()` with `PDO::FETCH_CLASS` ([#14115](https://github.com/laravel/framework/pull/14115))
- Fixed `PDO::FETCH_CLASS` support in `Connection::cursor()` ([#14052](https://github.com/laravel/framework/pull/14052))
- Fixed eager loading of multi-level `morphTo` relationships ([#14190](https://github.com/laravel/framework/pull/14190))
- Fixed MySQL multiple-table DELETE ([#14179](https://github.com/laravel/framework/pull/14179))
- Always cast `vendor:publish` tags to array ([#14228](https://github.com/laravel/framework/pull/14228))
- Fixed translation capitalization when replacements are a numerical array ([#14249](https://github.com/laravel/framework/pull/14249))
- Fixed double `urldecode()` on route parameters ([#14370](https://github.com/laravel/framework/pull/14370))

### Removed
- Remove method overwrites in `PostgresGrammar` ([#14372](https://github.com/laravel/framework/pull/14372))

## v5.2.39 (2016-06-17)

### Added
- Added `without()` method to Eloquent query builder ([#14031](https://github.com/laravel/framework/pull/14031))
- Added `keyType` property Eloquent models to set key type cast ([#13985](https://github.com/laravel/framework/pull/13985))
- Added support for mail transport `StreamOptions` ([#13925](https://github.com/laravel/framework/pull/13925))
- Added `validationData()` method to `FormRequest` ([#13914](https://github.com/laravel/framework/pull/13914))

### Changed
- Only `set names` for MySQL connections if `charset` is set in config ([#13930](https://github.com/laravel/framework/pull/13930))
- Support recursive container alias resolution ([#13976](https://github.com/laravel/framework/pull/13976))
- Use late static binding in `PasswordBroker` ([#13975](https://github.com/laravel/framework/pull/13975))
- Make sure Ajax requests are not Pjax requests in `FormRequest` ([#14024](https://github.com/laravel/framework/pull/14024))
- Set existence state of expired database sessions, instead of deleting them ([53c0440](https://github.com/laravel/framework/commit/53c04406baa5f63bbb41127f40afee0a0facadd1))
- Release Beanstalkd jobs before burying them ([#13963](https://github.com/laravel/framework/pull/13963))

### Fixed
- Use `getIncrementing()` method instead of the `$incrementing` attribute ([#14005](https://github.com/laravel/framework/pull/14005))
- Fixed fatal error when `services.json` is empty ([#14030](https://github.com/laravel/framework/pull/14030))

## v5.2.38 (2016-06-13)

### Changed
- Convert multiple `Model::fresh()` arguments to array before passing to `with()` ([#13950](https://github.com/laravel/framework/pull/13950))
- Iterate only through files that contain a namespace in `app:name` command. ([#13961](https://github.com/laravel/framework/pull/13961))

### Fixed
- Close swift mailer connection after sending mail ([#13583](https://github.com/laravel/framework/pull/13583))
- Prevent possible key overlap in `Str::snake` cache ([#13943](https://github.com/laravel/framework/pull/13943))
- Fixed issue when eager loading chained `MorphTo` relationships ([#13967](https://github.com/laravel/framework/pull/13967))
- Delete database session record if it's expired ([09b09eb](https://github.com/laravel/framework/commit/09b09ebad480940f2b49f96bbfbea0647783025e))

## v5.2.37 (2016-06-10)

### Added
- Added `hasArgument()` and `hasOption()` methods to `Command` class ([#13919](https://github.com/laravel/framework/pull/13919))
- Added `$failedId` property to `JobFailed` event ([#13920](https://github.com/laravel/framework/pull/13920))

### Fixed
- Fixed session expiration on several drivers ([0831312](https://github.com/laravel/framework/commit/0831312aec47d904a65039e07574f41ab7492418))

## v5.2.36 (2016-06-06)

### Added
- Allow passing along options to the S3 client ([#13791](https://github.com/laravel/framework/pull/13791))
- Allow nested `WHERE` clauses in `whereHas()` queries ([#13794](https://github.com/laravel/framework/pull/13794))
- Support `DateTime` instances in `Before`/`After` date validation ([#13844](https://github.com/laravel/framework/pull/13844))
- Support queueing collections ([d159f02](https://github.com/laravel/framework/commit/d159f02fe8cb5310b90c73d416a684e4bf51785a))

### Changed
- Reverted SparkPost driver back to `email_rfc822` parameter for simplicity ([#13780](https://github.com/laravel/framework/pull/13780))
- Simplified `Model::__isset()` ([8fb89c6](https://github.com/laravel/framework/commit/8fb89c61c24af905b0b9db4d645d68a2c4a133b9))
- Set exception handler even on non-daemon `queue:work` calls ([d5bbda9](https://github.com/laravel/framework/commit/d5bbda95a6435fa8cb38b8b640440b38de6b7f83))
- Show handler class names in `queue:work` console output ([4d7eb59](https://github.com/laravel/framework/commit/4d7eb59f9813723bab00b4e42ce9885b54e65778))
- Use queue events to update the console output of `queue:work` ([ace7f04](https://github.com/laravel/framework/commit/ace7f04ae579146ca3adf1c5992256c50ddc05a8))
- Made `ResetsPasswords` trait easier to customize ([#13818](https://github.com/laravel/framework/pull/13818))
- Refactored Eloquent relations and scopes ([#13824](https://github.com/laravel/framework/pull/13824), [#13884](https://github.com/laravel/framework/pull/13884), [#13894](https://github.com/laravel/framework/pull/13894))
- Respected `session.http_only` option in `StartSession` middleware ([#13825](https://github.com/laravel/framework/pull/13825))
- Don't return in `ApcStore::forever()` ([#13871](https://github.com/laravel/framework/pull/13871))
- Allow Redis key expiration to be lower than one minute ([#13810](https://github.com/laravel/framework/pull/13810))

### Fixed
- Fixed `morphTo` relations across database connections ([#13784](https://github.com/laravel/framework/pull/13784))
- Fixed `morphTo` relations without soft deletes ([13806](https://github.com/laravel/framework/pull/13806))
- Fixed edge case on `morphTo` relations macro call that only exists on the related model ([#13828](https://github.com/laravel/framework/pull/13828))
- Fixed formatting of `updatedAt` timestamp when calling `touch()` on `BelongsToMany` relation ([#13799](https://github.com/laravel/framework/pull/13799))
- Don't get `$id` from Recaller in `Auth::id()` ([#13769](https://github.com/laravel/framework/pull/13769))
- Fixed `AuthorizesResources` trait ([25443e3](https://github.com/laravel/framework/commit/25443e3e218cce1121f546b596dd70b5fd2fb619))

### Removed
- Removed unused `ArrayStore::putMultiple()` method ([#13840](https://github.com/laravel/framework/pull/13840))

## v5.2.35 (2016-05-30)

### Added
- Added failed login event ([#13761](https://github.com/laravel/framework/pull/13761))

### Changed
- Always cast `FileStore::expiration()` return value to integer ([#13708](https://github.com/laravel/framework/pull/13708))
- Simplified `Container::isCallableWithAtSign()` ([#13757](https://github.com/laravel/framework/pull/13757))
- Pass key to the `Collection::keyBy()` callback ([#13766](https://github.com/laravel/framework/pull/13766))
- Support unlimited log files by setting `app.log_max_files` to `0` ([#13776](https://github.com/laravel/framework/pull/13776))
- Wathan-ize `MorphTo::getEagerLoadsForInstance()` ([#13741](https://github.com/laravel/framework/pull/13741), [#13777](https://github.com/laravel/framework/pull/13777))

### Fixed
- Fixed MySQL JSON boolean binding update grammar ([38acdd8](https://github.com/laravel/framework/commit/38acdd807faec4b85fd47051341ccaf666499551))
- Fixed loading of nested polymorphic relationships ([#13737](https://github.com/laravel/framework/pull/13737))
- Fixed early return in `AuthManager::shouldUse()` ([5b88244](https://github.com/laravel/framework/commit/5b88244c0afd5febe9f54e8544b0870b55ef6cfd))
- Fixed the remaining attempts calculation in `ThrottleRequests` ([#13756](https://github.com/laravel/framework/pull/13756), [#13759](https://github.com/laravel/framework/pull/13759))
- Fixed strict `TypeError` in `AbstractPaginator::url()` ([#13758](https://github.com/laravel/framework/pull/13758))

## v5.2.34 (2016-05-26)

### Added
- Added correct MySQL JSON boolean handling and updating grammar ([#13242](https://github.com/laravel/framework/pull/13242))
- Added `stream` option to mail `TransportManager` ([#13715](https://github.com/laravel/framework/pull/13715))
- Added `when()` method to eloquent query builder ([#13726](https://github.com/laravel/framework/pull/13726))

### Changed
- Catch exceptions in `Worker::pop()` to prevent log spam ([#13688](https://github.com/laravel/framework/pull/13688))
- Use write connection when validating uniqueness ([#13718](https://github.com/laravel/framework/pull/13718))
- Use `withException()` method in `Handler::toIlluminateResponse()` ([#13712](https://github.com/laravel/framework/pull/13712))
- Apply constraints to `morphTo` relationships when using eager loading ([#13724](https://github.com/laravel/framework/pull/13724))
- Use SETs rather than LISTs for storing Redis cache key references ([#13731](https://github.com/laravel/framework/pull/13731))

### Fixed
- Map `destroy` instead of `delete` in `AuthorizesResources` ([#13716](https://github.com/laravel/framework/pull/13716))
- Reverted [#13519](https://github.com/laravel/framework/pull/13519) ([#13733](https://github.com/laravel/framework/pull/13733))

## v5.2.33 (2016-05-25)

### Added
- Allow query results to be traversed using a cursor ([#13030](https://github.com/laravel/framework/pull/13030))
- Added support for log levels ([#13513](https://github.com/laravel/framework/pull/13513))
- Added `inRandomOrder()` method to query builder ([#13642](https://github.com/laravel/framework/pull/13642))
- Added support for custom connection in `PasswordBrokerManager` ([#13646](https://github.com/laravel/framework/pull/13646))
- Allow connection timeouts in `TransportManager` ([#13621](https://github.com/laravel/framework/pull/13621))
- Added missing `$test` argument to `UploadedFile` ([#13656](https://github.com/laravel/framework/pull/13656))
- Added `authenticate()` method to guards ([#13651](https://github.com/laravel/framework/pull/13651))

### Changed
- Use locking to migrate stale jobs ([26a24d6](https://github.com/laravel/framework/commit/26a24d61ced4c5833eba6572d585af90b22fcdb7))
- Avoid `chunkById` duplicating `orders` clause with the same column ([#13604](https://github.com/laravel/framework/pull/13604))
- Fire `RouteMatched` event on `route:list` command ([#13474](https://github.com/laravel/framework/pull/13474))
- Set user resolver for request in `AuthManager::shouldUse()` ([bf5303f](https://github.com/laravel/framework/commit/bf5303fdc919d9d560df128b92a1891dc64ea488))
- Always execute `use` call, unless database is empty ([#13701](https://github.com/laravel/framework/pull/13701), [ef770ed](https://github.com/laravel/framework/commit/ef770edb08f3540aefffd916ae6ef5c8db58f0af))
- Allow `elixir()` `$buildDirectory` to be `null`. ([#13661](https://github.com/laravel/framework/pull/13661))
- Simplified calling `Model::replicate()` with `$except` argument ([#13676](https://github.com/laravel/framework/pull/13676))
- Allow auth events to be serialized ([#13704](https://github.com/laravel/framework/pull/13704))
- Added `for` and `id` attributes to auth scaffold ([#13689](https://github.com/laravel/framework/pull/13689))
- Aquire lock before deleting reserved job ([4b502dc](https://github.com/laravel/framework/commit/4b502dc6eecd80efad01e845469b9a2bac26dae0#diff-b05083dc38b4e45d38d28c676abbad83))

### Fixed
- Prefix timestamps when updating many-to-many relationships ([#13519](https://github.com/laravel/framework/pull/13519))
- Fixed missing wheres defined on the relation when creating the subquery for a relation count ([#13612](https://github.com/laravel/framework/pull/13612))
- Fixed `Model::makeVisible()` when `$visible` property is not empty ([#13625](https://github.com/laravel/framework/pull/13625))
- Fixed PostgreSQL's `Schema::hasTable()` ([#13008](https://github.com/laravel/framework/pull/13008))
- Fixed `url` validation rule when missing trailing slash ([#13700](https://github.com/laravel/framework/pull/13700))

## v5.2.32 (2016-05-17)

### Added
- Allow user to enable/disable foreign key checks dynamically ([#13333](https://github.com/laravel/framework/pull/13333))
- Added `file` validation rule ([#13371](https://github.com/laravel/framework/pull/13371))
- Added `guestMiddleware()` method to get guest middleware with guard parameter ([#13384](https://github.com/laravel/framework/pull/13384))
- Added `Pivot::fromRawAttributes()` to create a new pivot model from raw values returned from a query ([f356419](https://github.com/laravel/framework/commit/f356419fa6f6b6fbc3322ca587b0bc1e075ba8d2))
- Added `Builder::withCount()` to add a relationship subquery count ([#13414](https://github.com/laravel/framework/pull/13414))
- Support `reply_to` field when using SparkPost ([#13410](https://github.com/laravel/framework/pull/13410))
- Added validation rule for image dimensions ([#13428](https://github.com/laravel/framework/pull/13428))
- Added "Generated Columns" support to MySQL grammar ([#13430](https://github.com/laravel/framework/pull/13430))
- Added `Response::throwResponse()` ([#13473](https://github.com/laravel/framework/pull/13473))
- Added `page` parameter to the `simplePaginate()` method ([#13502](https://github.com/laravel/framework/pull/13502))
- Added `whereColumn()` method to Query Builder ([#13549](https://github.com/laravel/framework/pull/13549))
- Allow `File::allFiles()` to show hidden dot files ([#13555](https://github.com/laravel/framework/pull/13555))

### Changed
- Return `null` instead of `0` for a default `BelongsTo` key ([#13378](https://github.com/laravel/framework/pull/13378))
- Avoid useless logical operation ([#13397](https://github.com/laravel/framework/pull/13397))
- Stop using `{!! !!}` for `csrf_field()` ([#13398](https://github.com/laravel/framework/pull/13398))
- Improvements for `SessionGuard` methods `loginUsingId()` and `onceUsingId()` ([#13393](https://github.com/laravel/framework/pull/13393))
- Added Work-around due to lack of `lastInsertId()` for ODBC for MSSQL ([#13423](https://github.com/laravel/framework/pull/13423))
- Ensure `MigrationCreator::create()` receives `$create` as boolean ([#13439](https://github.com/laravel/framework/pull/13439))
- Allow custom validators to be called with out function name ([#13444](https://github.com/laravel/framework/pull/13444))
- Moved the `payload` column of jobs table to the end ([#13469](https://github.com/laravel/framework/pull/13469))
- Stabilized table aliases for self joins by adding count ([#13401](https://github.com/laravel/framework/pull/13401))
- Account for `__isset` changes in PHP 7 ([#13509](https://github.com/laravel/framework/pull/13509))
- Bring back support for `Carbon` instances to `before` and `after` validators ([#13494](https://github.com/laravel/framework/pull/13494))
- Allow method chaining for `MakesHttpRequest` trait ([#13529](https://github.com/laravel/framework/pull/13529))
- Allow `Request::intersect()` to accept argument list ([#13515](https://github.com/laravel/framework/pull/13515))

### Fixed
- Accept `!=` and `<>` as operators while value is `null` ([#13370](https://github.com/laravel/framework/pull/13370))
- Fixed SparkPost BCC issue ([#13361](https://github.com/laravel/framework/pull/13361))
- Fixed fatal error with optional `morphTo` relationship ([#13360](https://github.com/laravel/framework/pull/13360))
- Fixed using `onlyTrashed()` and `withTrashed()` with `whereHas()` ([#13396](https://github.com/laravel/framework/pull/13396))
- Fixed automatic scope nesting ([#13413](https://github.com/laravel/framework/pull/13413))
- Fixed scheduler issue when using `user()` and `withoutOverlapping()` combined ([#13412](https://github.com/laravel/framework/pull/13412))
- Fixed SqlServer grammar issue when table name is equal to a reserved keyword ([#13458](https://github.com/laravel/framework/pull/13458))
- Fixed replacing route default parameters ([#13514](https://github.com/laravel/framework/pull/13514))
- Fixed missing model attribute on `ModelNotFoundException` ([#13537](https://github.com/laravel/framework/pull/13537))
- Decrement transaction count when `beginTransaction()` errors ([#13551](https://github.com/laravel/framework/pull/13551))
- Fixed `seeJson()` issue when comparing two equal arrays ([#13531](https://github.com/laravel/framework/pull/13531))
- Fixed a Scheduler issue where would no longer run in background ([#12628](https://github.com/laravel/framework/issues/12628))
- Fixed sending attachments with SparkPost ([#13577](https://github.com/laravel/framework/pull/13577))

## v5.2.31 (2016-04-27)

### Added
- Added missing suggested dependency `SuperClosure` ([09a793f](https://git.io/vwZx4))
- Added ODBC connection support for SQL Server ([#13298](https://github.com/laravel/framework/pull/13298))
- Added `Request::hasHeader()` method ([#13271](https://github.com/laravel/framework/pull/13271))
- Added `@elsecan` and `@elsecannot` Blade directives ([#13256](https://github.com/laravel/framework/pull/13256))
- Support booleans in `required_if` Validator rule ([#13327](https://github.com/laravel/framework/pull/13327))

### Changed
- Simplified `Translator::parseLocale()` method ([#13244](https://github.com/laravel/framework/pull/13244))
- Simplified `Builder::shouldRunExistsQuery()` method ([#13321](https://github.com/laravel/framework/pull/13321))
- Use `Gate` contract instead of Facade ([#13260](https://github.com/laravel/framework/pull/13260))
- Return result in `SoftDeletes::forceDelete()` ([#13272](https://github.com/laravel/framework/pull/13272))

### Fixed
- Fixed BCC for SparkPost ([#13237](https://github.com/laravel/framework/pull/13237))
- Use Carbon for everything time related in `DatabaseTokenRepository` ([#13234](https://github.com/laravel/framework/pull/13234))
- Fixed an issue with `data_set()` affecting the Validator ([#13224](https://github.com/laravel/framework/pull/13224))
- Fixed setting nested namespaces with `app:name` command ([#13208](https://github.com/laravel/framework/pull/13208))
- Decode base64 encoded keys before using it in `PasswordBrokerManager` ([#13270](https://github.com/laravel/framework/pull/13270))
- Prevented race condition in `RateLimiter` ([#13283](https://github.com/laravel/framework/pull/13283))
- Use `DIRECTORY_SEPARATOR` to create path for migrations ([#13254](https://github.com/laravel/framework/pull/13254))
- Fixed adding implicit rules via `sometimes()` method ([#12976](https://github.com/laravel/framework/pull/12976))
- Fixed `Schema::hasTable()` when using PostgreSQL ([#13008](https://github.com/laravel/framework/pull/13008))
- Allow `seeAuthenticatedAs()` to be called with any user object ([#13308](https://github.com/laravel/framework/pull/13308))

### Removed
- Removed unused base64 decoding from `Encrypter` ([#13291](https://github.com/laravel/framework/pull/13291))

## v5.2.30 (2016-04-19)

### Added
- Added messages and custom attributes to the password reset validation ([#12997](https://github.com/laravel/framework/pull/12997))
- Added `Before` and `After` dependent rules array ([#13025](https://github.com/laravel/framework/pull/13025))
- Exposed token methods to user in password broker ([#13054](https://github.com/laravel/framework/pull/13054))
- Added array support on `Cache::has()` ([#13028](https://github.com/laravel/framework/pull/13028))
- Allow objects to be passed as pipes ([#13024](https://github.com/laravel/framework/pull/13024))
- Adding alias for `FailedJobProviderInterface` ([#13088](https://github.com/laravel/framework/pull/13088))
- Allow console commands registering from `Kernel` class ([#13097](https://github.com/laravel/framework/pull/13097))
- Added the ability to get routes keyed by method ([#13146](https://github.com/laravel/framework/pull/13146))
- Added PostgreSQL specific operators for `jsonb` type ([#13161](https://github.com/laravel/framework/pull/13161))
- Added `makeHidden()` method to the Eloquent collection ([#13152](https://github.com/laravel/framework/pull/13152))
- Added `intersect()` method to `Request` ([#13167](https://github.com/laravel/framework/pull/13167))
- Allow disabling of model observers in tests ([#13178](https://github.com/laravel/framework/pull/13178))
- Allow `ON` clauses on cross joins ([#13159](https://github.com/laravel/framework/pull/13159))

### Changed
- Use relation setter when setting relations ([#13001](https://github.com/laravel/framework/pull/13001))
- Use `isEmpty()` to check for empty message bag in `Validator::passes()` ([#13014](https://github.com/laravel/framework/pull/13014))
- Refresh `remember_token` when resetting password ([#13016](https://github.com/laravel/framework/pull/13016))
- Use multibyte string functions in `Str` class ([#12953](https://github.com/laravel/framework/pull/12953))
- Use CloudFlare CDN and use SRI checking for assets ([#13044](https://github.com/laravel/framework/pull/13044))
- Enabling array on method has() ([#13028](https://github.com/laravel/framework/pull/13028))
- Allow unix timestamps to be numeric in `Validator` ([da62677](https://git.io/vVi3M))
- Reverted forcing middleware uniqueness ([#13075](https://github.com/laravel/framework/pull/13075))
- Forget keys that contain periods ([#13121](https://github.com/laravel/framework/pull/13121))
- Don't limit column selection while chunking by id ([#13137](https://github.com/laravel/framework/pull/13137))
- Prefix table name on `getColumnType()` call ([#13136](https://github.com/laravel/framework/pull/13136))
- Moved ability map in `AuthorizesResources` trait to a method ([#13214](https://github.com/laravel/framework/pull/13214))
- Make sure `unguarded()` does not change state on exception ([#13186](https://github.com/laravel/framework/pull/13186))
- Return `$this` in `InteractWithPages::within()` to allow method chaining ([13200](https://github.com/laravel/framework/pull/13200))

### Fixed
- Fixed a empty value case with `Arr:dot()` ([#13009](https://github.com/laravel/framework/pull/13009))
- Fixed a Scheduler issues on Windows ([#13004](https://github.com/laravel/framework/issues/13004))
- Prevent crashes with bad `Accept` headers ([#13039](https://github.com/laravel/framework/pull/13039), [#13059](https://github.com/laravel/framework/pull/13059))
- Fixed explicit depending rules when the explicit keys are non-numeric ([#13058](https://github.com/laravel/framework/pull/13058))
- Fixed an issue with fluent routes with `uses()` ([#13076](https://github.com/laravel/framework/pull/13076))
- Prevent generating listeners for listeners ([3079175](https://git.io/vVNdg))

### Removed
- Removed unused parameter call in `Filesystem::exists()` ([#13102](https://github.com/laravel/framework/pull/13102))
- Removed duplicate "[y/N]" from confirmable console commands ([#13203](https://github.com/laravel/framework/pull/13203))
- Removed unused parameter in `route()` helper ([#13206](https://github.com/laravel/framework/pull/13206))

## v5.2.29 (2016-04-02)

### Fixed
- Fixed `Arr::get()` when given array is empty ([#12975](https://github.com/laravel/framework/pull/12975))
- Add backticks around JSON selector field names in PostgreSQL query builder ([#12978](https://github.com/laravel/framework/pull/12978))
- Reverted #12899 ([#12991](https://github.com/laravel/framework/pull/12991))

## v5.2.28 (2016-04-01)

### Added
- Added `Authorize` middleware ([#12913](https://git.io/vVLel), [0c48ba4](https://git.io/vVlib), [183f8e1](https://git.io/vVliF))
- Added `UploadedFile::clientExtension()` ([75a7c01](https://git.io/vVO7I))
- Added cross join support for query builder ([#12950](https://git.io/vVZqP))
- Added `ThrottlesLogins::secondsRemainingOnLockout()` ([#12963](https://git.io/vVc1Z), [7c2c098](https://git.io/vVli9))

### Changed
- Optimized validation performance of large arrays ([#12651](https://git.io/v2xhi))
- Never retry database query, if failed within transaction ([#12929](https://git.io/vVYUB))
- Allow customization of email sent by `ResetsPasswords::sendResetLinkEmail()` ([#12935](https://git.io/vVYKE), [aae873e](https://git.io/vVliD))
- Improved file system tests ([#12940](https://git.io/vVsTV), [#12949](https://git.io/vVGjP), [#12970](https://git.io/vVCBq))
- Allowing merging an array of rules ([a5ea1aa](https://git.io/vVli1))
- Consider implicit attributes while guessing column names in validator ([#12961](https://git.io/vVcgA), [a3827cf](https://git.io/vVliX))
- Reverted [#12307](https://git.io/vgQeJ) ([#12928](https://git.io/vVqni))

### Fixed
- Fixed elixir manifest caching to detect different build paths ([#12920](https://git.io/vVtJR))
- Fixed `Str::snake()` to work with UTF-8 strings ([#12923](https://git.io/vVtVp))
- Trim the input name in the generator commands ([#12933](https://git.io/vVY4a))
- Check for non-string values in validation rules ([#12973](https://git.io/vVWew))
- Add backticks around JSON selector field names in MySQL query builder ([#12964](https://git.io/vVc9n))
- Fixed terminable middleware assigned to controller ([#12899](https://git.io/vVTnt), [74b0636](https://git.io/vVliP))

## v5.2.27 (2016-03-29)
### Added
- Allow ignoring an id using an array key in the `unique` validation rule ([#12612](https://git.io/v29rH))
- Added `InteractsWithSession::assertSessionMissing()` ([#12860](https://git.io/vajXr))
- Added `chunkById()` method to query builder for faster chunking of large sets of data ([#12861](https://git.io/vajSd))
- Added Blade `@hasSection` directive to determine whether something can be yielded ([#12866](https://git.io/vVem5))
- Allow optional query builder calls via `when()` method ([#12878](https://git.io/vVflh))
- Added IP and MAC address column types ([#12884](https://git.io/vVJsj))
- Added Collections `union` method for true unions of two collections ([#12910](https://git.io/vVIzh))

### Changed
- Allow array size validation of implicit attributes ([#12640](https://git.io/v2Nzl))
- Separated logic of Blade `@push` and `@section` directives ([#12808](https://git.io/vaD8n))
- Ensured that middleware is applied only once ([#12911](https://git.io/vVIr2))

### Fixed
- Reverted improvements to Redis cache tagging ([#12897](https://git.io/vVUD5))
- Removed route group from `make:auth` stub ([#12903](https://git.io/vVkHI))

## v5.2.26 (2016-03-25)
### Added
- Added support for Base64 encoded `Encrypter` keys ([370ae34](https://git.io/vapFX))
- Added `EncryptionServiceProvider::getEncrypterForKeyAndCipher()` ([17ce4ed](https://git.io/vahbo))
- Added `Application::environmentFilePath()` ([370ae34](https://git.io/vapFX))

### Fixed
- Fixed mock in `ValidationValidatorTest::testValidateMimetypes()` ([7f35988](https://git.io/vaxfB))

## v5.2.25 (2016-03-24)
### Added
- Added bootstrap Composer scripts to avoid loading of config/compiled files ([#12827](https://git.io/va5ja))

### Changed
- Use `File::guessExtension()` instead of `UploadedFile::guessClientExtension()` ([87e6175](https://git.io/vaAxC))

### Fixed
- Fix an issue with explicit custom validation attributes ([#12822](https://git.io/vaQbD))
- Fix an issue where a view would run the `BladeEngine` instead of the `PhpEngine` ([#12830](https://git.io/vad1X))
- Prevent wrong auth driver from causing unexpected end of execution ([#12821](https://git.io/vajFq))


text:
@protocol UOTestObject <NSObject>
@end

@interface UOTestObject : UOObject
@property (nonatomic, readonly) NSNumber<UOIdentifier> *_id;
@property (nonatomic, readonly) NSString *name;
@property (nonatomic, readonly) NSString *phoneNumber;
@property (nonatomic, readonly) NSArray<UOTestObject> *testObjects;
@end

@interface UOMutableTestObject : UOTestObject<UOMutableObject>
@property (nonatomic, strong) NSString *name;
@property (nonatomic, strong) NSString *phoneNumber;
@end


text:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace _11.GeometryCalculator
{
    class GeometryCalculator
    {
        static void Main(string[] args)
        {
            string figure = Console.ReadLine();
            switch (figure)
            {
                case "triangle":
                    double triangleSide = double.Parse(Console.ReadLine());
                    double height = double.Parse(Console.ReadLine());
                    double triangleArea = GetTriangleArea(triangleSide, height);
                    Console.WriteLine(Math.Round(triangleArea, 2));
                    break;
                case "square":
                    double squareSide = double.Parse(Console.ReadLine());
                    double squareArea = GetSquareArea(squareSide);
                    Console.WriteLine(Math.Round(squareArea, 2));
                    break;
                case "rectangle":
                    double rectangleWidth = double.Parse(Console.ReadLine());
                    double rectangleHeight = double.Parse(Console.ReadLine());
                    double rectangleArea = GetRectangleArea(rectangleWidth, rectangleHeight);
                    Console.WriteLine(Math.Round(rectangleArea, 2));
                    break;
                case "circle":
                    double radius = double.Parse(Console.ReadLine());
                    double circleArea = GetCircleArea(radius);
                    Console.WriteLine(Math.Round(circleArea, 2));
                    break;
                default:
                    break;
            }
        }

        static double GetCircleArea(double radius)
        {
            double area = Math.Pow(radius, 2) * Math.PI;
            return area;
        }

        static double GetRectangleArea(double rectangleWidth, double rectangleHeight)
        {
            double area = rectangleWidth * rectangleHeight;
            return area;
        }

        static double GetSquareArea(double squareSide)
        {
            double area = squareSide * squareSide;
            return area;
        }

        static double GetTriangleArea(double triangleSide, double height)
        {
            double area = triangleSide * height / 2;
            return area;
        }
    }
}


text:
'use strict';

(function() {
  // Challenges Controller Spec
  describe('MEAN controllers', function() {
    describe('ChallengesController', function() {
      // The $resource service augments the response object with methods for updating and deleting the resource.
      // If we were to use the standard toEqual matcher, our tests would fail because the test values would not match
      // the responses exactly. To solve the problem, we use a newly-defined toEqualData Jasmine matcher.
      // When the toEqualData matcher compares two objects, it takes only object properties into
      // account and ignores methods.
      beforeEach(function() {
        this.addMatchers({
          toEqualData: function(expected) {
            return angular.equals(this.actual, expected);
          }
        });
      });

      beforeEach(function() {
        module('mean');
        module('mean.system');
        module('mean.challenges');
      });

      // Initialize the controller and a mock scope
      var ChallengesController,
        scope,
        $httpBackend,
        $stateParams,
        $location;

      // The injector ignores leading and trailing underscores here (i.e. _$httpBackend_).
      // This allows us to inject a service but then attach it to a variable
      // with the same name as the service.
      beforeEach(inject(function($controller, $rootScope, _$location_, _$stateParams_, _$httpBackend_) {

        scope = $rootScope.$new();

        ChallengesController = $controller('ChallengesController', {
          $scope: scope
        });

        $stateParams = _$stateParams_;
        $httpBackend = _$httpBackend_;
        $location = _$location_;

      }));

      it('$scope.find() should create an array with at least one challenge object ' +
        'fetched from XHR', function() {

          // test expected GET request
          $httpBackend.expectGET('challenges').respond([{
            title: 'An Challenge about MEAN',
            description: 'MEAN rocks!',
            regStartDate: '2014-08-13T00:00:00.000Z'
          }]);

          // run controller
          scope.find();
          $httpBackend.flush();

          // test scope value
          expect(scope.challenges).toEqualData([{
            title: 'An Challenge about MEAN',
            description: 'MEAN rocks!',
            regStartDate: '2014-08-13T00:00:00.000Z'
          }]);

        });

      it('$scope.findOne() should create an array with one challenge object fetched ' +
        'from XHR using a challengeId URL parameter', function() {
          // fixture URL parament
          $stateParams.challengeId = 5;

          // fixture response object
          var testChallengeData = function() {
            return {
              title: 'An Challenge about MEAN',
              description: 'MEAN rocks!',
              regStartDate: '2014-08-13T00:00:00.000Z'
            };
          };

          // test expected GET request with response object
          $httpBackend.expectGET(/challenges\/([0-9])$/).respond(testChallengeData());

          // run controller
          scope.findOne();
          $httpBackend.flush();

          // test scope value
          expect(scope.challenge).toEqualData(testChallengeData());

        });

      it('$scope.create() with valid form data should send a POST request ' +
        'with the form input values and then ' +
        'locate to new object URL', function() {

          // fixture expected POST data
          var postChallengeData = function() {
            return {
              title: 'An Challenge about MEAN',
              description: 'MEAN rocks!',
              regStartDate: '2014-08-13T00:00:00.000Z'
            };
          };

          // fixture expected response data
          var responseChallengeData = function() {
            return {
              id: 5,
              title: 'An Challenge about MEAN',
              description: 'MEAN rocks!',
              regStartDate: '2014-08-13T00:00:00.000Z'
            };
          };

          // fixture mock form input values
          scope.title = 'An Challenge about MEAN';
          scope.description = 'MEAN rocks!';
          scope.regStartDate = '2014-08-13T00:00:00.000Z';

          // test post request is sent
          $httpBackend.expectPOST('challenges', postChallengeData()).respond(responseChallengeData());

          // Run controller
          scope.create(true);
          $httpBackend.flush();

          // test form input(s) are reset
          expect(scope.title).toEqual('');
          expect(scope.description).toEqual('');
          expect(scope.regStartDate).toEqual('');

          // test URL location to new object
          expect($location.path()).toBe('/challenges/' + responseChallengeData().id);
        });

      it('$scope.update(true) should update a valid challenge', inject(function(Challenges) {

        // fixture rideshare
        var putChallengeData = function() {
          return {
            id: 5,
            title: 'An Challenge about MEAN',
            description: 'MEAN is great!',
            regStartDate: '2014-08-13T00:00:00.000Z'
          };
        };

        // mock challenge object from form
        var challenge = new Challenges(putChallengeData());

        // mock challenge in scope
        scope.challenge = challenge;

        // test PUT happens correctly
        $httpBackend.expectPUT(/challenges\/([0-9])$/).respond();

        // run controller
        scope.update(true);
        $httpBackend.flush();

        // test URL location to new object
        expect($location.path()).toBe('/challenges/' + putChallengeData().id);

      }));

      it('$scope.remove() should send a DELETE request with a valid challengeId ' +
        'and remove the challenge from the scope', inject(function(Challenges) {

          // fixture rideshare
          var challenge = new Challenges({
            id: 5
          });

          // mock rideshares in scope
          scope.challenges = [];
          scope.challenges.push(challenge);

          // test expected rideshare DELETE request
          $httpBackend.expectDELETE(/challenges\/([0-9])$/).respond(204);

          // run controller
          scope.remove(challenge);
          $httpBackend.flush();

          expect(scope.challenges.length).toBe(0);

        }));
    });
  });
}());


text:
import Vue from 'vue';
import { Component } from 'vue/types/options';
import { CalendarProps } from './options';

export interface FullCalendarComponent extends Vue {
    buildCalendarOptions: () => void;
    recordDirtyOption: (optionName: any, newVal: any) => void;
    renderDirty: () => void;
    getApi: () => any;
}

declare const FullCalendar: Component<any, any, any, CalendarProps>;
export function install(Vue: () => any): void;
export default FullCalendar;


text:
#ifndef __contactsplugin_h
#define __contactsplugin_h

#include <QObject>

#include <feedplugin.h>

class McaServiceModel;
class McaFeedModel;
class ContactsServiceModel;

class ContactsPlugin: public QObject, public McaFeedPlugin
{
    Q_OBJECT
    Q_INTERFACES(McaFeedPlugin)

public:
    explicit ContactsPlugin(QObject *parent = NULL);
    ~ContactsPlugin();

    QAbstractItemModel *serviceModel();
    QAbstractItemModel *createFeedModel(const QString& service);
    McaSearchableFeed *createSearchModel(const QString& service,
                                         const QString& searchText);

private:
    ContactsServiceModel *m_serviceModel;
};

#endif  // __contactsplugin_h


text:
module AliexpressHelper
end


text:
import axios from 'axios'

export const ADD_COMMENT = 'ADD_COMMENT'
export const SET_COMMENT_BY_POST = 'SET_COMMENT_BY_POST'
export const SET_DELETE_COMMENT = 'SET_DELETE_COMMENT'

export const addComment = comment => ({
    type: ADD_COMMENT,
    comment
})

export const setCommentByPost = comments => ({
    type: SET_COMMENT_BY_POST,
    comments
})

export const setDeleteComment = commentId => ({
    type: SET_DELETE_COMMENT,
    commentId
})

export const addNewComment = data => dispatch => {
    return axios.post('/api/comments', data).then(res => {
        dispatch(addComment(res.data.comment))
    })
}

export const getCommentByPost = () => dispatch => {
    return axios.get('/api/comments').then(res => {
        dispatch(setCommentByPost(res.data.comments))
    })
}

export const getDeleteComment = (userId, commentId) => dispatch => {
    return axios.get(`/api/comments/${commentId}/delete/${userId}`).then(res => {
        dispatch(setDeleteComment(res.data.comment._id))
    })
}


text:
package bigquery

import (
	"context"
	"io"

	"cloud.google.com/go/internal/trace"
	bq "google.golang.org/api/bigquery/v2"
)

// LoadConfig holds the configuration for a load job.
type LoadConfig struct {
	// Src is the source from which data will be loaded.
	Src LoadSource

	// Dst is the table into which the data will be loaded.
	Dst *Table

	// CreateDisposition specifies the circumstances under which the destination table will be created.
	// The default is CreateIfNeeded.
	CreateDisposition TableCreateDisposition

	// WriteDisposition specifies how existing data in the destination table is treated.
	// The default is WriteAppend.
	WriteDisposition TableWriteDisposition

	// The labels associated with this job.
	Labels map[string]string

	// If non-nil, the destination table is partitioned by time.
	TimePartitioning *TimePartitioning

	// If non-nil, the destination table is partitioned by integer range.
	RangePartitioning *RangePartitioning

	// Clustering specifies the data clustering configuration for the destination table.
	Clustering *Clustering

	// Custom encryption configuration (e.g., Cloud KMS keys).
	DestinationEncryptionConfig *EncryptionConfig

	// Allows the schema of the destination table to be updated as a side effect of
	// the load job.
	SchemaUpdateOptions []string

	// For Avro-based loads, controls whether logical type annotations are used.
	// See https://cloud.google.com/bigquery/docs/loading-data-cloud-storage-avro#logical_types
	// for additional information.
	UseAvroLogicalTypes bool

	// For ingestion from datastore backups, ProjectionFields governs which fields
	// are projected from the backup.  The default behavior projects all fields.
	ProjectionFields []string
}

func (l *LoadConfig) toBQ() (*bq.JobConfiguration, io.Reader) {
	config := &bq.JobConfiguration{
		Labels: l.Labels,
		Load: &bq.JobConfigurationLoad{
			CreateDisposition:                  string(l.CreateDisposition),
			WriteDisposition:                   string(l.WriteDisposition),
			DestinationTable:                   l.Dst.toBQ(),
			TimePartitioning:                   l.TimePartitioning.toBQ(),
			RangePartitioning:                  l.RangePartitioning.toBQ(),
			Clustering:                         l.Clustering.toBQ(),
			DestinationEncryptionConfiguration: l.DestinationEncryptionConfig.toBQ(),
			SchemaUpdateOptions:                l.SchemaUpdateOptions,
			UseAvroLogicalTypes:                l.UseAvroLogicalTypes,
			ProjectionFields:                   l.ProjectionFields,
		},
	}
	media := l.Src.populateLoadConfig(config.Load)
	return config, media
}

func bqToLoadConfig(q *bq.JobConfiguration, c *Client) *LoadConfig {
	lc := &LoadConfig{
		Labels:                      q.Labels,
		CreateDisposition:           TableCreateDisposition(q.Load.CreateDisposition),
		WriteDisposition:            TableWriteDisposition(q.Load.WriteDisposition),
		Dst:                         bqToTable(q.Load.DestinationTable, c),
		TimePartitioning:            bqToTimePartitioning(q.Load.TimePartitioning),
		RangePartitioning:           bqToRangePartitioning(q.Load.RangePartitioning),
		Clustering:                  bqToClustering(q.Load.Clustering),
		DestinationEncryptionConfig: bqToEncryptionConfig(q.Load.DestinationEncryptionConfiguration),
		SchemaUpdateOptions:         q.Load.SchemaUpdateOptions,
		UseAvroLogicalTypes:         q.Load.UseAvroLogicalTypes,
		ProjectionFields:            q.Load.ProjectionFields,
	}
	var fc *FileConfig
	if len(q.Load.SourceUris) == 0 {
		s := NewReaderSource(nil)
		fc = &s.FileConfig
		lc.Src = s
	} else {
		s := NewGCSReference(q.Load.SourceUris...)
		fc = &s.FileConfig
		lc.Src = s
	}
	bqPopulateFileConfig(q.Load, fc)
	return lc
}

// A Loader loads data from Google Cloud Storage into a BigQuery table.
type Loader struct {
	JobIDConfig
	LoadConfig
	c *Client
}

// A LoadSource represents a source of data that can be loaded into
// a BigQuery table.
//
// This package defines two LoadSources: GCSReference, for Google Cloud Storage
// objects, and ReaderSource, for data read from an io.Reader.
type LoadSource interface {
	// populates config, returns media
	populateLoadConfig(*bq.JobConfigurationLoad) io.Reader
}

// LoaderFrom returns a Loader which can be used to load data into a BigQuery table.
// The returned Loader may optionally be further configured before its Run method is called.
// See GCSReference and ReaderSource for additional configuration options that
// affect loading.
func (t *Table) LoaderFrom(src LoadSource) *Loader {
	return &Loader{
		c: t.c,
		LoadConfig: LoadConfig{
			Src: src,
			Dst: t,
		},
	}
}

// Run initiates a load job.
func (l *Loader) Run(ctx context.Context) (j *Job, err error) {
	ctx = trace.StartSpan(ctx, "cloud.google.com/go/bigquery.Load.Run")
	defer func() { trace.EndSpan(ctx, err) }()

	job, media := l.newJob()
	return l.c.insertJob(ctx, job, media)
}

func (l *Loader) newJob() (*bq.Job, io.Reader) {
	config, media := l.LoadConfig.toBQ()
	return &bq.Job{
		JobReference:  l.JobIDConfig.createJobRef(l.c),
		Configuration: config,
	}, media
}